-rw-r--r-- | libkcal/incidence.cpp | 8 | ||||
-rw-r--r-- | libkcal/incidencebase.cpp | 4 |
2 files changed, 8 insertions, 4 deletions
diff --git a/libkcal/incidence.cpp b/libkcal/incidence.cpp index 56c9801..55ac6d4 100644 --- a/libkcal/incidence.cpp +++ b/libkcal/incidence.cpp | |||
@@ -561,39 +561,43 @@ ushort Incidence::doesRecur() const | |||
561 | QDateTime Incidence::getNextOccurence( const QDateTime& dt, bool* ok ) const | 561 | QDateTime Incidence::getNextOccurence( const QDateTime& dt, bool* ok ) const |
562 | { | 562 | { |
563 | QDateTime incidenceStart = dt; | 563 | QDateTime incidenceStart = dt; |
564 | *ok = false; | 564 | *ok = false; |
565 | if ( doesRecur() ) { | 565 | if ( doesRecur() ) { |
566 | bool last; | 566 | bool last; |
567 | recurrence()->getPreviousDateTime( incidenceStart , &last ); | 567 | recurrence()->getPreviousDateTime( incidenceStart , &last ); |
568 | int count = 0; | 568 | int count = 0; |
569 | if ( !last ) { | 569 | if ( !last ) { |
570 | while ( !last ) { | 570 | while ( !last ) { |
571 | ++count; | 571 | ++count; |
572 | incidenceStart = recurrence()->getNextDateTime( incidenceStart, &last ); | 572 | incidenceStart = recurrence()->getNextDateTime( incidenceStart, &last ); |
573 | if ( recursOn( incidenceStart.date() ) ) { | 573 | if ( recursOn( incidenceStart.date() ) ) { |
574 | last = true; // exit while llop | 574 | last = true; // exit while llop |
575 | } else { | 575 | } else { |
576 | if ( last ) { // no alarm on last recurrence | 576 | if ( last ) { // no alarm on last recurrence |
577 | return QDateTime (); | 577 | return QDateTime (); |
578 | } | 578 | } |
579 | int year = incidenceStart.date().year(); | 579 | int year = incidenceStart.date().year(); |
580 | // workaround for bug in recurrence | 580 | // workaround for bug in recurrence |
581 | if ( count == 100 || year < 1980 || year > 5000 ) { | 581 | if ( count == 100 || year < 1980 || year > 5000 ) { |
582 | return QDateTime (); | 582 | return QDateTime (); |
583 | } | 583 | } |
584 | incidenceStart = incidenceStart.addSecs( 1 ); | 584 | incidenceStart = incidenceStart.addSecs( 1 ); |
585 | } | 585 | } |
586 | } | 586 | } |
587 | } else { | 587 | } else { |
588 | return QDateTime (); | 588 | return QDateTime (); |
589 | } | 589 | } |
590 | } else { | 590 | } else { |
591 | if ( hasStartDate () ) { | 591 | if ( hasStartDate () ) { |
592 | incidenceStart = dtStart(); | 592 | incidenceStart = dtStart(); |
593 | 593 | } | |
594 | } | 594 | if ( type() =="Todo" ) { |
595 | if ( ((Todo*)this)->hasDueDate() ) | ||
596 | incidenceStart = ((Todo*)this)->dtDue(); | ||
597 | |||
598 | } | ||
595 | } | 599 | } |
596 | if ( incidenceStart > dt ) | 600 | if ( incidenceStart > dt ) |
597 | *ok = true; | 601 | *ok = true; |
598 | return incidenceStart; | 602 | return incidenceStart; |
599 | } | 603 | } |
diff --git a/libkcal/incidencebase.cpp b/libkcal/incidencebase.cpp index 64a343c..b36dc1a 100644 --- a/libkcal/incidencebase.cpp +++ b/libkcal/incidencebase.cpp | |||
@@ -242,83 +242,83 @@ void IncidenceBase::removeAttendee(const char *n) | |||
242 | break; | 242 | break; |
243 | } | 243 | } |
244 | } | 244 | } |
245 | #endif | 245 | #endif |
246 | 246 | ||
247 | void IncidenceBase::clearAttendees() | 247 | void IncidenceBase::clearAttendees() |
248 | { | 248 | { |
249 | if (mReadOnly) return; | 249 | if (mReadOnly) return; |
250 | mAttendees.clear(); | 250 | mAttendees.clear(); |
251 | } | 251 | } |
252 | 252 | ||
253 | #if 0 | 253 | #if 0 |
254 | Attendee *IncidenceBase::getAttendee(const char *n) const | 254 | Attendee *IncidenceBase::getAttendee(const char *n) const |
255 | { | 255 | { |
256 | QPtrListIterator<Attendee> qli(mAttendees); | 256 | QPtrListIterator<Attendee> qli(mAttendees); |
257 | 257 | ||
258 | qli.toFirst(); | 258 | qli.toFirst(); |
259 | while (qli) { | 259 | while (qli) { |
260 | if (qli.current()->getName() == n) | 260 | if (qli.current()->getName() == n) |
261 | return qli.current(); | 261 | return qli.current(); |
262 | ++qli; | 262 | ++qli; |
263 | } | 263 | } |
264 | return 0L; | 264 | return 0L; |
265 | } | 265 | } |
266 | #endif | 266 | #endif |
267 | 267 | ||
268 | Attendee *IncidenceBase::attendeeByMail(const QString &email) | 268 | Attendee *IncidenceBase::attendeeByMail(const QString &email) |
269 | { | 269 | { |
270 | QPtrListIterator<Attendee> qli(mAttendees); | 270 | QPtrListIterator<Attendee> qli(mAttendees); |
271 | 271 | ||
272 | qli.toFirst(); | 272 | qli.toFirst(); |
273 | while (qli) { | 273 | while (qli) { |
274 | if (qli.current()->email() == email) | 274 | if (qli.current()->email().lower() == email.lower()) |
275 | return qli.current(); | 275 | return qli.current(); |
276 | ++qli; | 276 | ++qli; |
277 | } | 277 | } |
278 | return 0L; | 278 | return 0L; |
279 | } | 279 | } |
280 | 280 | ||
281 | Attendee *IncidenceBase::attendeeByMails(const QStringList &emails, const QString& email) | 281 | Attendee *IncidenceBase::attendeeByMails(const QStringList &emails, const QString& email) |
282 | { | 282 | { |
283 | QPtrListIterator<Attendee> qli(mAttendees); | 283 | QPtrListIterator<Attendee> qli(mAttendees); |
284 | 284 | ||
285 | QStringList mails = emails; | 285 | QStringList mails = emails; |
286 | if (!email.isEmpty()) { | 286 | if (!email.isEmpty()) { |
287 | mails.append(email); | 287 | mails.append(email); |
288 | } | 288 | } |
289 | qli.toFirst(); | 289 | qli.toFirst(); |
290 | while (qli) { | 290 | while (qli) { |
291 | for ( QStringList::Iterator it = mails.begin(); it != mails.end(); ++it ) { | 291 | for ( QStringList::Iterator it = mails.begin(); it != mails.end(); ++it ) { |
292 | if (qli.current()->email() == *it) | 292 | if (qli.current()->email().lower() == (*it).lower()) |
293 | return qli.current(); | 293 | return qli.current(); |
294 | } | 294 | } |
295 | 295 | ||
296 | ++qli; | 296 | ++qli; |
297 | } | 297 | } |
298 | return 0L; | 298 | return 0L; |
299 | } | 299 | } |
300 | 300 | ||
301 | void IncidenceBase::setDuration(int seconds) | 301 | void IncidenceBase::setDuration(int seconds) |
302 | { | 302 | { |
303 | mDuration = seconds; | 303 | mDuration = seconds; |
304 | setHasDuration(true); | 304 | setHasDuration(true); |
305 | } | 305 | } |
306 | 306 | ||
307 | int IncidenceBase::duration() const | 307 | int IncidenceBase::duration() const |
308 | { | 308 | { |
309 | return mDuration; | 309 | return mDuration; |
310 | } | 310 | } |
311 | 311 | ||
312 | void IncidenceBase::setHasDuration(bool b) | 312 | void IncidenceBase::setHasDuration(bool b) |
313 | { | 313 | { |
314 | mHasDuration = b; | 314 | mHasDuration = b; |
315 | } | 315 | } |
316 | 316 | ||
317 | bool IncidenceBase::hasDuration() const | 317 | bool IncidenceBase::hasDuration() const |
318 | { | 318 | { |
319 | return mHasDuration; | 319 | return mHasDuration; |
320 | } | 320 | } |
321 | 321 | ||
322 | void IncidenceBase::setSyncStatus(int stat) | 322 | void IncidenceBase::setSyncStatus(int stat) |
323 | { | 323 | { |
324 | if (mReadOnly) return; | 324 | if (mReadOnly) return; |