-rw-r--r-- | libkcal/incidence.cpp | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/libkcal/incidence.cpp b/libkcal/incidence.cpp index 56c9801..55ac6d4 100644 --- a/libkcal/incidence.cpp +++ b/libkcal/incidence.cpp | |||
@@ -529,71 +529,75 @@ bool Incidence::isAlarmEnabled() const | |||
529 | } | 529 | } |
530 | return false; | 530 | return false; |
531 | } | 531 | } |
532 | 532 | ||
533 | Recurrence *Incidence::recurrence() const | 533 | Recurrence *Incidence::recurrence() const |
534 | { | 534 | { |
535 | return mRecurrence; | 535 | return mRecurrence; |
536 | } | 536 | } |
537 | void Incidence::setRecurrence( Recurrence * r) | 537 | void Incidence::setRecurrence( Recurrence * r) |
538 | { | 538 | { |
539 | delete mRecurrence; | 539 | delete mRecurrence; |
540 | mRecurrence = r; | 540 | mRecurrence = r; |
541 | } | 541 | } |
542 | 542 | ||
543 | void Incidence::setLocation(const QString &location) | 543 | void Incidence::setLocation(const QString &location) |
544 | { | 544 | { |
545 | if (mReadOnly) return; | 545 | if (mReadOnly) return; |
546 | mLocation = location; | 546 | mLocation = location; |
547 | updated(); | 547 | updated(); |
548 | } | 548 | } |
549 | 549 | ||
550 | QString Incidence::location() const | 550 | QString Incidence::location() const |
551 | { | 551 | { |
552 | return mLocation; | 552 | return mLocation; |
553 | } | 553 | } |
554 | 554 | ||
555 | ushort Incidence::doesRecur() const | 555 | ushort Incidence::doesRecur() const |
556 | { | 556 | { |
557 | if ( mRecurrence ) return mRecurrence->doesRecur(); | 557 | if ( mRecurrence ) return mRecurrence->doesRecur(); |
558 | else return Recurrence::rNone; | 558 | else return Recurrence::rNone; |
559 | } | 559 | } |
560 | 560 | ||
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 | } |