-rw-r--r-- | libkcal/incidence.cpp | 28 | ||||
-rw-r--r-- | libkcal/incidence.h | 3 | ||||
-rw-r--r-- | libkcal/incidencebase.cpp | 4 | ||||
-rw-r--r-- | libkcal/incidencebase.h | 1 |
4 files changed, 32 insertions, 4 deletions
diff --git a/libkcal/incidence.cpp b/libkcal/incidence.cpp index 11f7ecc..e4bcc5e 100644 --- a/libkcal/incidence.cpp +++ b/libkcal/incidence.cpp | |||
@@ -268,33 +268,53 @@ void Incidence::cloneRelations( Incidence * newInc ) | |||
268 | // newInc is already a clone of this incidence | 268 | // newInc is already a clone of this incidence |
269 | Incidence * inc; | 269 | Incidence * inc; |
270 | Incidence * cloneInc; | 270 | Incidence * cloneInc; |
271 | QPtrList<Incidence> Relations = relations(); | 271 | QPtrList<Incidence> Relations = relations(); |
272 | for (inc=Relations.first();inc;inc=Relations.next()) { | 272 | for (inc=Relations.first();inc;inc=Relations.next()) { |
273 | cloneInc = inc->clone(); | 273 | cloneInc = inc->clone(); |
274 | cloneInc->recreate(); | 274 | cloneInc->recreate(); |
275 | cloneInc->setRelatedTo( newInc ); | 275 | cloneInc->setRelatedTo( newInc ); |
276 | inc->cloneRelations( cloneInc ); | 276 | inc->cloneRelations( cloneInc ); |
277 | } | 277 | } |
278 | } | 278 | } |
279 | void Incidence::setReadOnly( bool readOnly ) | 279 | void Incidence::setReadOnly( bool readOnly ) |
280 | { | 280 | { |
281 | IncidenceBase::setReadOnly( readOnly ); | 281 | IncidenceBase::setReadOnly( readOnly ); |
282 | recurrence()->setRecurReadOnly( readOnly); | 282 | recurrence()->setRecurReadOnly( readOnly); |
283 | } | 283 | } |
284 | 284 | void Incidence::setLastModifiedSubInvalid() | |
285 | { | ||
286 | mLastModifiedSub = QDateTime(); | ||
287 | if ( mRelatedTo ) | ||
288 | mRelatedTo->setLastModifiedSubInvalid(); | ||
289 | } | ||
290 | QDateTime Incidence::lastModifiedSub() | ||
291 | { | ||
292 | if ( !mRelations.count() ) | ||
293 | return lastModified(); | ||
294 | if ( mLastModifiedSub.isValid() ) | ||
295 | return mLastModifiedSub; | ||
296 | mLastModifiedSub = lastModified(); | ||
297 | Incidence * inc; | ||
298 | QPtrList<Incidence> Relations = relations(); | ||
299 | for (inc=Relations.first();inc;inc=Relations.next()) { | ||
300 | if ( inc->lastModifiedSub() > mLastModifiedSub ) | ||
301 | mLastModifiedSub = inc->lastModifiedSub(); | ||
302 | } | ||
303 | return mLastModifiedSub; | ||
304 | } | ||
285 | void Incidence::setCreated(QDateTime created) | 305 | void Incidence::setCreated(QDateTime created) |
286 | { | 306 | { |
287 | if (mReadOnly) return; | 307 | if (mReadOnly) return; |
288 | mCreated = getEvenTime(created); | 308 | mCreated = getEvenTime(created); |
289 | } | 309 | } |
290 | 310 | ||
291 | QDateTime Incidence::created() const | 311 | QDateTime Incidence::created() const |
292 | { | 312 | { |
293 | return mCreated; | 313 | return mCreated; |
294 | } | 314 | } |
295 | 315 | ||
296 | void Incidence::setRevision(int rev) | 316 | void Incidence::setRevision(int rev) |
297 | { | 317 | { |
298 | if (mReadOnly) return; | 318 | if (mReadOnly) return; |
299 | mRevision = rev; | 319 | mRevision = rev; |
300 | 320 | ||
@@ -455,43 +475,43 @@ QPtrList<Incidence> Incidence::relations() const | |||
455 | return mRelations; | 475 | return mRelations; |
456 | } | 476 | } |
457 | 477 | ||
458 | void Incidence::addRelationsToList(QPtrList<Incidence> *rel) | 478 | void Incidence::addRelationsToList(QPtrList<Incidence> *rel) |
459 | { | 479 | { |
460 | Incidence* inc; | 480 | Incidence* inc; |
461 | QPtrList<Incidence> Relations = relations(); | 481 | QPtrList<Incidence> Relations = relations(); |
462 | for (inc=Relations.first();inc;inc=Relations.next()) { | 482 | for (inc=Relations.first();inc;inc=Relations.next()) { |
463 | inc->addRelationsToList( rel ); | 483 | inc->addRelationsToList( rel ); |
464 | } | 484 | } |
465 | if ( rel->findRef( this ) == -1 ) | 485 | if ( rel->findRef( this ) == -1 ) |
466 | rel->append( this ); | 486 | rel->append( this ); |
467 | } | 487 | } |
468 | 488 | ||
469 | void Incidence::addRelation(Incidence *event) | 489 | void Incidence::addRelation(Incidence *event) |
470 | { | 490 | { |
491 | setLastModifiedSubInvalid(); | ||
471 | if( mRelations.findRef( event ) == -1 ) { | 492 | if( mRelations.findRef( event ) == -1 ) { |
472 | mRelations.append(event); | 493 | mRelations.append(event); |
473 | //updated(); | 494 | //updated(); |
474 | } | 495 | } |
475 | } | 496 | } |
476 | 497 | ||
477 | void Incidence::removeRelation(Incidence *event) | 498 | void Incidence::removeRelation(Incidence *event) |
478 | { | 499 | { |
479 | 500 | setLastModifiedSubInvalid(); | |
480 | mRelations.removeRef(event); | 501 | mRelations.removeRef(event); |
481 | |||
482 | // if (event->getRelatedTo() == this) event->setRelatedTo(0); | 502 | // if (event->getRelatedTo() == this) event->setRelatedTo(0); |
483 | } | 503 | } |
484 | 504 | ||
485 | bool Incidence::recursOn(const QDate &qd) const | 505 | bool Incidence::recursOn(const QDate &qd) const |
486 | { | 506 | { |
487 | if (recurrence()->recursOnPure(qd) && !isException(qd)) return true; | 507 | if (recurrence()->recursOnPure(qd) && !isException(qd)) return true; |
488 | else return false; | 508 | else return false; |
489 | } | 509 | } |
490 | 510 | ||
491 | void Incidence::setExDates(const DateList &exDates) | 511 | void Incidence::setExDates(const DateList &exDates) |
492 | { | 512 | { |
493 | if (mReadOnly) return; | 513 | if (mReadOnly) return; |
494 | mExDates = exDates; | 514 | mExDates = exDates; |
495 | 515 | ||
496 | recurrence()->setRecurExDatesCount(mExDates.count()); | 516 | recurrence()->setRecurExDatesCount(mExDates.count()); |
497 | 517 | ||
diff --git a/libkcal/incidence.h b/libkcal/incidence.h index c88ba2f..d4af9f0 100644 --- a/libkcal/incidence.h +++ b/libkcal/incidence.h | |||
@@ -264,47 +264,50 @@ class Incidence : public IncidenceBase | |||
264 | bool hasStartDate() const; | 264 | bool hasStartDate() const; |
265 | /** sets the event's hasStartDate value. */ | 265 | /** sets the event's hasStartDate value. */ |
266 | void setHasStartDate(bool f); | 266 | void setHasStartDate(bool f); |
267 | QDateTime getNextOccurence( const QDateTime& dt, bool* yes ) const; | 267 | QDateTime getNextOccurence( const QDateTime& dt, bool* yes ) const; |
268 | bool cancelled() const; | 268 | bool cancelled() const; |
269 | void setCancelled( bool b ); | 269 | void setCancelled( bool b ); |
270 | 270 | ||
271 | bool hasRecurrenceID() const; | 271 | bool hasRecurrenceID() const; |
272 | void setHasRecurrenceID( bool b ); | 272 | void setHasRecurrenceID( bool b ); |
273 | 273 | ||
274 | void setRecurrenceID(QDateTime); | 274 | void setRecurrenceID(QDateTime); |
275 | QDateTime recurrenceID () const; | 275 | QDateTime recurrenceID () const; |
276 | QDateTime dtStart() const; | 276 | QDateTime dtStart() const; |
277 | bool isHoliday() const; | 277 | bool isHoliday() const; |
278 | bool isBirthday() const; | 278 | bool isBirthday() const; |
279 | bool isAnniversary() const; | 279 | bool isAnniversary() const; |
280 | QDateTime lastModifiedSub(); | ||
281 | void setLastModifiedSubInvalid(); | ||
280 | 282 | ||
281 | 283 | ||
282 | protected: | 284 | protected: |
283 | QPtrList<Alarm> mAlarms; | 285 | QPtrList<Alarm> mAlarms; |
284 | QPtrList<Incidence> mRelations; | 286 | QPtrList<Incidence> mRelations; |
285 | QDateTime mRecurrenceID; | 287 | QDateTime mRecurrenceID; |
286 | bool mHasRecurrenceID; | 288 | bool mHasRecurrenceID; |
287 | private: | 289 | private: |
288 | void checkCategories(); | 290 | void checkCategories(); |
289 | bool mHoliday, mBirthday, mAnniversary; | 291 | bool mHoliday, mBirthday, mAnniversary; |
290 | int mRevision; | 292 | int mRevision; |
291 | bool mCancelled; | 293 | bool mCancelled; |
292 | 294 | ||
293 | // base components of jounal, event and todo | 295 | // base components of jounal, event and todo |
294 | QDateTime mCreated; | 296 | QDateTime mCreated; |
297 | QDateTime mLastModifiedSub; | ||
295 | QString mDescription; | 298 | QString mDescription; |
296 | QString mSummary; | 299 | QString mSummary; |
297 | QStringList mCategories; | 300 | QStringList mCategories; |
298 | Incidence *mRelatedTo; | 301 | Incidence *mRelatedTo; |
299 | QString mRelatedToUid; | 302 | QString mRelatedToUid; |
300 | DateList mExDates; | 303 | DateList mExDates; |
301 | QPtrList<Attachment> mAttachments; | 304 | QPtrList<Attachment> mAttachments; |
302 | QStringList mResources; | 305 | QStringList mResources; |
303 | bool mHasStartDate; // if todo has associated start date | 306 | bool mHasStartDate; // if todo has associated start date |
304 | 307 | ||
305 | int mSecrecy; | 308 | int mSecrecy; |
306 | int mPriority; // 1 = highest, 2 = less, etc. | 309 | int mPriority; // 1 = highest, 2 = less, etc. |
307 | 310 | ||
308 | //QPtrList<Alarm> mAlarms; | 311 | //QPtrList<Alarm> mAlarms; |
309 | Recurrence *mRecurrence; | 312 | Recurrence *mRecurrence; |
310 | 313 | ||
diff --git a/libkcal/incidencebase.cpp b/libkcal/incidencebase.cpp index 1a19f3e..022dead 100644 --- a/libkcal/incidencebase.cpp +++ b/libkcal/incidencebase.cpp | |||
@@ -178,39 +178,43 @@ void IncidenceBase::setAlarmEnabled( bool b ) | |||
178 | bool IncidenceBase::alarmEnabled() const | 178 | bool IncidenceBase::alarmEnabled() const |
179 | { | 179 | { |
180 | return mAlarmEnabled; | 180 | return mAlarmEnabled; |
181 | } | 181 | } |
182 | 182 | ||
183 | 183 | ||
184 | void IncidenceBase::setUid(const QString &uid) | 184 | void IncidenceBase::setUid(const QString &uid) |
185 | { | 185 | { |
186 | mUid = uid; | 186 | mUid = uid; |
187 | updated(); | 187 | updated(); |
188 | } | 188 | } |
189 | 189 | ||
190 | QString IncidenceBase::uid() const | 190 | QString IncidenceBase::uid() const |
191 | { | 191 | { |
192 | return mUid; | 192 | return mUid; |
193 | } | 193 | } |
194 | void IncidenceBase::setLastModifiedSubInvalid() | ||
195 | { | ||
194 | 196 | ||
197 | } | ||
195 | void IncidenceBase::setLastModified(const QDateTime &lm) | 198 | void IncidenceBase::setLastModified(const QDateTime &lm) |
196 | { | 199 | { |
197 | if ( blockLastModified ) return; | 200 | if ( blockLastModified ) return; |
198 | // DON'T! updated() because we call this from | 201 | // DON'T! updated() because we call this from |
199 | // Calendar::updateEvent(). | 202 | // Calendar::updateEvent(). |
200 | mLastModified = getEvenTime(lm); | 203 | mLastModified = getEvenTime(lm); |
204 | setLastModifiedSubInvalid(); | ||
201 | //qDebug("IncidenceBase::setLastModified %s ",lm.toString().latin1()); | 205 | //qDebug("IncidenceBase::setLastModified %s ",lm.toString().latin1()); |
202 | } | 206 | } |
203 | 207 | ||
204 | QDateTime IncidenceBase::lastModified() const | 208 | QDateTime IncidenceBase::lastModified() const |
205 | { | 209 | { |
206 | return mLastModified; | 210 | return mLastModified; |
207 | } | 211 | } |
208 | 212 | ||
209 | void IncidenceBase::setOrganizer(const QString &o) | 213 | void IncidenceBase::setOrganizer(const QString &o) |
210 | { | 214 | { |
211 | // we don't check for readonly here, because it is | 215 | // we don't check for readonly here, because it is |
212 | // possible that by setting the organizer we are changing | 216 | // possible that by setting the organizer we are changing |
213 | // the event's readonly status... | 217 | // the event's readonly status... |
214 | mOrganizer = o; | 218 | mOrganizer = o; |
215 | if (mOrganizer.left(7).upper() == "MAILTO:") | 219 | if (mOrganizer.left(7).upper() == "MAILTO:") |
216 | mOrganizer = mOrganizer.remove(0,7); | 220 | mOrganizer = mOrganizer.remove(0,7); |
diff --git a/libkcal/incidencebase.h b/libkcal/incidencebase.h index bed73db..665c1f6 100644 --- a/libkcal/incidencebase.h +++ b/libkcal/incidencebase.h | |||
@@ -136,32 +136,33 @@ class IncidenceBase : public CustomProperties | |||
136 | QString getID( const QString & ); | 136 | QString getID( const QString & ); |
137 | void setCsum( const QString &, const QString & ); | 137 | void setCsum( const QString &, const QString & ); |
138 | QString getCsum( const QString & ); | 138 | QString getCsum( const QString & ); |
139 | void removeID(const QString &); | 139 | void removeID(const QString &); |
140 | 140 | ||
141 | void registerObserver( Observer * ); | 141 | void registerObserver( Observer * ); |
142 | void unRegisterObserver( Observer * ); | 142 | void unRegisterObserver( Observer * ); |
143 | void updated(); | 143 | void updated(); |
144 | void setCalID( int id ); | 144 | void setCalID( int id ); |
145 | int calID() const; | 145 | int calID() const; |
146 | void setCalEnabled( bool ); | 146 | void setCalEnabled( bool ); |
147 | bool calEnabled() const; | 147 | bool calEnabled() const; |
148 | void setAlarmEnabled( bool ); | 148 | void setAlarmEnabled( bool ); |
149 | bool alarmEnabled() const; | 149 | bool alarmEnabled() const; |
150 | bool isTagged() const; | 150 | bool isTagged() const; |
151 | void setTagged( bool ); | 151 | void setTagged( bool ); |
152 | virtual void setLastModifiedSubInvalid(); | ||
152 | protected: | 153 | protected: |
153 | bool blockLastModified; | 154 | bool blockLastModified; |
154 | bool mIsTagged; | 155 | bool mIsTagged; |
155 | QDateTime mDtStart; | 156 | QDateTime mDtStart; |
156 | bool mReadOnly; | 157 | bool mReadOnly; |
157 | QDateTime getEvenTime( QDateTime ); | 158 | QDateTime getEvenTime( QDateTime ); |
158 | 159 | ||
159 | private: | 160 | private: |
160 | // base components | 161 | // base components |
161 | QString mOrganizer; | 162 | QString mOrganizer; |
162 | QString mUid; | 163 | QString mUid; |
163 | int mCalID; | 164 | int mCalID; |
164 | bool mCalEnabled; | 165 | bool mCalEnabled; |
165 | bool mAlarmEnabled; | 166 | bool mAlarmEnabled; |
166 | QDateTime mLastModified; | 167 | QDateTime mLastModified; |
167 | QPtrList<Attendee> mAttendees; | 168 | QPtrList<Attendee> mAttendees; |