summaryrefslogtreecommitdiffabout
path: root/libkcal
Unidiff
Diffstat (limited to 'libkcal') (more/less context) (ignore whitespace changes)
-rw-r--r--libkcal/calendarlocal.cpp2
1 files changed, 1 insertions, 1 deletions
diff --git a/libkcal/calendarlocal.cpp b/libkcal/calendarlocal.cpp
index c33581c..c82ea92 100644
--- a/libkcal/calendarlocal.cpp
+++ b/libkcal/calendarlocal.cpp
@@ -476,605 +476,605 @@ Event *CalendarLocal::event( QString syncProf, QString id )
476Todo *CalendarLocal::todo( const QString &uid ) 476Todo *CalendarLocal::todo( const QString &uid )
477{ 477{
478 Todo *todo; 478 Todo *todo;
479 Todo *retVal = 0; 479 Todo *retVal = 0;
480 for ( todo = mTodoList.first(); todo; todo = mTodoList.next() ) { 480 for ( todo = mTodoList.first(); todo; todo = mTodoList.next() ) {
481 if ( todo->calEnabled() && todo->uid() == uid ) { 481 if ( todo->calEnabled() && todo->uid() == uid ) {
482 if ( retVal ) { 482 if ( retVal ) {
483 if ( retVal->calID() > todo->calID() ) { 483 if ( retVal->calID() > todo->calID() ) {
484 retVal = todo; 484 retVal = todo;
485 } 485 }
486 } else { 486 } else {
487 retVal = todo; 487 retVal = todo;
488 } 488 }
489 } 489 }
490 } 490 }
491 return retVal; 491 return retVal;
492} 492}
493void CalendarLocal::getIncidenceCount( int calId, int& events, int & todos, int & journals) 493void CalendarLocal::getIncidenceCount( int calId, int& events, int & todos, int & journals)
494{ 494{
495 events = 0; 495 events = 0;
496 todos = 0; 496 todos = 0;
497 journals = 0; 497 journals = 0;
498 { 498 {
499 Todo *todo; 499 Todo *todo;
500 for ( todo = mTodoList.first(); todo; todo = mTodoList.next() ) { 500 for ( todo = mTodoList.first(); todo; todo = mTodoList.next() ) {
501 if ( todo->calID() == calId ) 501 if ( todo->calID() == calId )
502 ++todos; 502 ++todos;
503 } 503 }
504 } 504 }
505 { 505 {
506 Event *todo; 506 Event *todo;
507 for ( todo = mEventList.first(); todo; todo = mEventList.next() ) { 507 for ( todo = mEventList.first(); todo; todo = mEventList.next() ) {
508 if ( todo->calID() == calId ) 508 if ( todo->calID() == calId )
509 ++events; 509 ++events;
510 510
511 } 511 }
512 } 512 }
513 for ( Journal *it = mJournalList.first(); it; it = mJournalList.next() ) 513 for ( Journal *it = mJournalList.first(); it; it = mJournalList.next() )
514 if ( it->calID() == calId ) ++journals; 514 if ( it->calID() == calId ) ++journals;
515 515
516} 516}
517QString CalendarLocal::nextSummary() const 517QString CalendarLocal::nextSummary() const
518{ 518{
519 return mNextSummary; 519 return mNextSummary;
520} 520}
521QDateTime CalendarLocal::nextAlarmEventDateTime() const 521QDateTime CalendarLocal::nextAlarmEventDateTime() const
522{ 522{
523 return mNextAlarmEventDateTime; 523 return mNextAlarmEventDateTime;
524} 524}
525void CalendarLocal::checkAlarmForIncidence( Incidence * incidence, bool deleted) 525void CalendarLocal::checkAlarmForIncidence( Incidence * incidence, bool deleted)
526{ 526{
527 //mNextAlarmIncidence 527 //mNextAlarmIncidence
528 //mNextAlarmDateTime 528 //mNextAlarmDateTime
529 //return mNextSummary; 529 //return mNextSummary;
530 //return mNextAlarmEventDateTime; 530 //return mNextAlarmEventDateTime;
531 bool newNextAlarm = false; 531 bool newNextAlarm = false;
532 bool computeNextAlarm = false; 532 bool computeNextAlarm = false;
533 bool ok; 533 bool ok;
534 int offset; 534 int offset;
535 QDateTime nextA; 535 QDateTime nextA;
536 // QString nextSum; 536 // QString nextSum;
537 //QDateTime nextEvent; 537 //QDateTime nextEvent;
538 if ( mNextAlarmIncidence == 0 || incidence == 0 ) { 538 if ( mNextAlarmIncidence == 0 || incidence == 0 ) {
539 computeNextAlarm = true; 539 computeNextAlarm = true;
540 } else { 540 } else {
541 if ( ! deleted ) { 541 if ( ! deleted ) {
542 nextA = incidence->getNextAlarmDateTime(& ok, &offset, QDateTime::currentDateTime() ) ; 542 nextA = incidence->getNextAlarmDateTime(& ok, &offset, QDateTime::currentDateTime() ) ;
543 if ( ok ) { 543 if ( ok ) {
544 if ( nextA < mNextAlarmDateTime ) { 544 if ( nextA < mNextAlarmDateTime ) {
545 deRegisterAlarm(); 545 deRegisterAlarm();
546 mNextAlarmDateTime = nextA; 546 mNextAlarmDateTime = nextA;
547 mNextSummary = incidence->summary(); 547 mNextSummary = incidence->summary();
548 mNextAlarmEventDateTime = nextA.addSecs(offset ) ; 548 mNextAlarmEventDateTime = nextA.addSecs(offset ) ;
549 mNextAlarmEventDateTimeString = KGlobal::locale()->formatDateTime(mNextAlarmEventDateTime); 549 mNextAlarmEventDateTimeString = KGlobal::locale()->formatDateTime(mNextAlarmEventDateTime);
550 newNextAlarm = true; 550 newNextAlarm = true;
551 mNextAlarmIncidence = incidence; 551 mNextAlarmIncidence = incidence;
552 } else { 552 } else {
553 if ( incidence == mNextAlarmIncidence ) { 553 if ( incidence == mNextAlarmIncidence ) {
554 computeNextAlarm = true; 554 computeNextAlarm = true;
555 } 555 }
556 } 556 }
557 } else { 557 } else {
558 if ( mNextAlarmIncidence == incidence ) { 558 if ( mNextAlarmIncidence == incidence ) {
559 computeNextAlarm = true; 559 computeNextAlarm = true;
560 } 560 }
561 } 561 }
562 } else { // deleted 562 } else { // deleted
563 if ( incidence == mNextAlarmIncidence ) { 563 if ( incidence == mNextAlarmIncidence ) {
564 computeNextAlarm = true; 564 computeNextAlarm = true;
565 } 565 }
566 } 566 }
567 } 567 }
568 if ( computeNextAlarm ) { 568 if ( computeNextAlarm ) {
569 deRegisterAlarm(); 569 deRegisterAlarm();
570 nextA = nextAlarm( 1000 ); 570 nextA = nextAlarm( 1000 );
571 if (! mNextAlarmIncidence ) { 571 if (! mNextAlarmIncidence ) {
572 return; 572 return;
573 } 573 }
574 newNextAlarm = true; 574 newNextAlarm = true;
575 } 575 }
576 if ( newNextAlarm ) 576 if ( newNextAlarm )
577 registerAlarm(); 577 registerAlarm();
578} 578}
579QString CalendarLocal:: getAlarmNotification() 579QString CalendarLocal:: getAlarmNotification()
580{ 580{
581 QString ret; 581 QString ret;
582 // this should not happen 582 // this should not happen
583 if (! mNextAlarmIncidence ) 583 if (! mNextAlarmIncidence )
584 return "cal_alarm"+ mNextSummary.left( 25 )+"\n"+mNextAlarmEventDateTimeString; 584 return "cal_alarm"+ mNextSummary.left( 25 )+"\n"+mNextAlarmEventDateTimeString;
585 Alarm* alarm = mNextAlarmIncidence->alarms().first(); 585 Alarm* alarm = mNextAlarmIncidence->alarms().first();
586 if ( alarm->type() == Alarm::Procedure ) { 586 if ( alarm->type() == Alarm::Procedure ) {
587 ret = "proc_alarm" + alarm->programFile()+"+++"; 587 ret = "proc_alarm" + alarm->programFile()+"+++";
588 } else { 588 } else {
589 ret = "audio_alarm" +alarm->audioFile() +"+++"; 589 ret = "audio_alarm" +alarm->audioFile() +"+++";
590 } 590 }
591 ret += "cal_alarm"+ mNextSummary.left( 25 ); 591 ret += "cal_alarm"+ mNextSummary.left( 25 );
592 if ( mNextSummary.length() > 25 ) 592 if ( mNextSummary.length() > 25 )
593 ret += "\n" + mNextSummary.mid(25, 25 ); 593 ret += "\n" + mNextSummary.mid(25, 25 );
594 ret+= "\n"+mNextAlarmEventDateTimeString; 594 ret+= "\n"+mNextAlarmEventDateTimeString;
595 return ret; 595 return ret;
596} 596}
597void CalendarLocal::registerAlarm() 597void CalendarLocal::registerAlarm()
598{ 598{
599 mLastAlarmNotificationString = getAlarmNotification(); 599 mLastAlarmNotificationString = getAlarmNotification();
600 // qDebug("++ register Alarm %s %s",mNextAlarmDateTime.toString().latin1(), mLastAlarmNotificationString.latin1() ); 600 // qDebug("++ register Alarm %s %s",mNextAlarmDateTime.toString().latin1(), mLastAlarmNotificationString.latin1() );
601 emit addAlarm ( mNextAlarmDateTime, mLastAlarmNotificationString ); 601 emit addAlarm ( mNextAlarmDateTime, mLastAlarmNotificationString );
602// #ifndef DESKTOP_VERSION 602// #ifndef DESKTOP_VERSION
603// AlarmServer::addAlarm ( mNextAlarmDateTime,"koalarm", mLastAlarmNotificationString.latin1() ); 603// AlarmServer::addAlarm ( mNextAlarmDateTime,"koalarm", mLastAlarmNotificationString.latin1() );
604// #endif 604// #endif
605} 605}
606void CalendarLocal::deRegisterAlarm() 606void CalendarLocal::deRegisterAlarm()
607{ 607{
608 if ( mLastAlarmNotificationString.isNull() ) 608 if ( mLastAlarmNotificationString.isNull() )
609 return; 609 return;
610 //qDebug("-- deregister Alarm %s ", mLastAlarmNotificationString.latin1() ); 610 //qDebug("-- deregister Alarm %s ", mLastAlarmNotificationString.latin1() );
611 611
612 emit removeAlarm ( mNextAlarmDateTime, mLastAlarmNotificationString ); 612 emit removeAlarm ( mNextAlarmDateTime, mLastAlarmNotificationString );
613 mNextAlarmEventDateTime = QDateTime(); 613 mNextAlarmEventDateTime = QDateTime();
614// #ifndef DESKTOP_VERSION 614// #ifndef DESKTOP_VERSION
615// AlarmServer::deleteAlarm (mNextAlarmDateTime ,"koalarm" ,mLastAlarmNotificationString.latin1() ); 615// AlarmServer::deleteAlarm (mNextAlarmDateTime ,"koalarm" ,mLastAlarmNotificationString.latin1() );
616// #endif 616// #endif
617} 617}
618 618
619QPtrList<Todo> CalendarLocal::todos( const QDate &date ) 619QPtrList<Todo> CalendarLocal::todos( const QDate &date )
620{ 620{
621 QPtrList<Todo> todos; 621 QPtrList<Todo> todos;
622 622
623 Todo *todo; 623 Todo *todo;
624 for ( todo = mTodoList.first(); todo; todo = mTodoList.next() ) { 624 for ( todo = mTodoList.first(); todo; todo = mTodoList.next() ) {
625 if ( !todo->calEnabled() ) continue; 625 if ( !todo->calEnabled() ) continue;
626 if ( todo->hasDueDate() && todo->dtDue().date() == date ) { 626 if ( todo->hasDueDate() && todo->dtDue().date() == date ) {
627 todos.append( todo ); 627 todos.append( todo );
628 } 628 }
629 } 629 }
630 630
631 filter()->apply( &todos ); 631 filter()->apply( &todos );
632 return todos; 632 return todos;
633} 633}
634void CalendarLocal::reInitAlarmSettings() 634void CalendarLocal::reInitAlarmSettings()
635{ 635{
636 if ( !mNextAlarmIncidence ) { 636 if ( !mNextAlarmIncidence ) {
637 nextAlarm( 1000 ); 637 nextAlarm( 1000 );
638 } 638 }
639 deRegisterAlarm(); 639 deRegisterAlarm();
640 mNextAlarmIncidence = 0; 640 mNextAlarmIncidence = 0;
641 checkAlarmForIncidence( 0, false ); 641 checkAlarmForIncidence( 0, false );
642 642
643} 643}
644 644
645 645
646 646
647QDateTime CalendarLocal::nextAlarm( int daysTo ) 647QDateTime CalendarLocal::nextAlarm( int daysTo )
648{ 648{
649 QDateTime nextA = QDateTime::currentDateTime().addDays( daysTo ); 649 QDateTime nextA = QDateTime::currentDateTime().addDays( daysTo );
650 QDateTime start = QDateTime::currentDateTime().addSecs( 30 ); 650 QDateTime start = QDateTime::currentDateTime().addSecs( 30 );
651 QDateTime next; 651 QDateTime next;
652 Event *e; 652 Event *e;
653 bool ok; 653 bool ok;
654 bool found = false; 654 bool found = false;
655 int offset; 655 int offset;
656 mNextAlarmIncidence = 0; 656 mNextAlarmIncidence = 0;
657 for( e = mEventList.first(); e; e = mEventList.next() ) { 657 for( e = mEventList.first(); e; e = mEventList.next() ) {
658 if ( !e->calEnabled() ) continue; 658 if ( !e->calEnabled() ) continue;
659 next = e->getNextAlarmDateTime(& ok, &offset, QDateTime::currentDateTime() ) ; 659 next = e->getNextAlarmDateTime(& ok, &offset, QDateTime::currentDateTime() ) ;
660 if ( ok ) { 660 if ( ok ) {
661 if ( next < nextA ) { 661 if ( next < nextA ) {
662 nextA = next; 662 nextA = next;
663 found = true; 663 found = true;
664 mNextSummary = e->summary(); 664 mNextSummary = e->summary();
665 mNextAlarmEventDateTime = next.addSecs(offset ) ; 665 mNextAlarmEventDateTime = next.addSecs(offset ) ;
666 mNextAlarmIncidence = (Incidence *) e; 666 mNextAlarmIncidence = (Incidence *) e;
667 } 667 }
668 } 668 }
669 } 669 }
670 Todo *t; 670 Todo *t;
671 for( t = mTodoList.first(); t; t = mTodoList.next() ) { 671 for( t = mTodoList.first(); t; t = mTodoList.next() ) {
672 if ( !t->calEnabled() ) continue; 672 if ( !t->calEnabled() ) continue;
673 next = t->getNextAlarmDateTime(& ok, &offset, QDateTime::currentDateTime() ) ; 673 next = t->getNextAlarmDateTime(& ok, &offset, QDateTime::currentDateTime() ) ;
674 if ( ok ) { 674 if ( ok ) {
675 if ( next < nextA ) { 675 if ( next < nextA ) {
676 nextA = next; 676 nextA = next;
677 found = true; 677 found = true;
678 mNextSummary = t->summary(); 678 mNextSummary = t->summary();
679 mNextAlarmEventDateTime = next.addSecs(offset ); 679 mNextAlarmEventDateTime = next.addSecs(offset );
680 mNextAlarmIncidence = (Incidence *) t; 680 mNextAlarmIncidence = (Incidence *) t;
681 } 681 }
682 } 682 }
683 } 683 }
684 if ( mNextAlarmIncidence ) { 684 if ( mNextAlarmIncidence ) {
685 mNextAlarmEventDateTimeString = KGlobal::locale()->formatDateTime(mNextAlarmEventDateTime); 685 mNextAlarmEventDateTimeString = KGlobal::locale()->formatDateTime(mNextAlarmEventDateTime);
686 mNextAlarmDateTime = nextA; 686 mNextAlarmDateTime = nextA;
687 } 687 }
688 return nextA; 688 return nextA;
689} 689}
690Alarm::List CalendarLocal::alarmsTo( const QDateTime &to ) 690Alarm::List CalendarLocal::alarmsTo( const QDateTime &to )
691{ 691{
692 return alarms( QDateTime( QDate( 1900, 1, 1 ) ), to ); 692 return alarms( QDateTime( QDate( 1900, 1, 1 ) ), to );
693} 693}
694 694
695Alarm::List CalendarLocal::alarms( const QDateTime &from, const QDateTime &to ) 695Alarm::List CalendarLocal::alarms( const QDateTime &from, const QDateTime &to )
696{ 696{
697 697
698 Alarm::List alarms; 698 Alarm::List alarms;
699 699
700 Event *e; 700 Event *e;
701 701
702 for( e = mEventList.first(); e; e = mEventList.next() ) { 702 for( e = mEventList.first(); e; e = mEventList.next() ) {
703 if ( !e->calEnabled() ) continue; 703 if ( !e->calEnabled() ) continue;
704 if ( e->doesRecur() ) appendRecurringAlarms( alarms, e, from, to ); 704 if ( e->doesRecur() ) appendRecurringAlarms( alarms, e, from, to );
705 else appendAlarms( alarms, e, from, to ); 705 else appendAlarms( alarms, e, from, to );
706 } 706 }
707 707
708 Todo *t; 708 Todo *t;
709 for( t = mTodoList.first(); t; t = mTodoList.next() ) { 709 for( t = mTodoList.first(); t; t = mTodoList.next() ) {
710 if ( !t->calEnabled() ) continue; 710 if ( !t->calEnabled() ) continue;
711 appendAlarms( alarms, t, from, to ); 711 appendAlarms( alarms, t, from, to );
712 } 712 }
713 713
714 return alarms; 714 return alarms;
715} 715}
716 716
717void CalendarLocal::appendAlarms( Alarm::List &alarms, Incidence *incidence, 717void CalendarLocal::appendAlarms( Alarm::List &alarms, Incidence *incidence,
718 const QDateTime &from, const QDateTime &to ) 718 const QDateTime &from, const QDateTime &to )
719{ 719{
720 QPtrList<Alarm> alarmList = incidence->alarms(); 720 QPtrList<Alarm> alarmList = incidence->alarms();
721 Alarm *alarm; 721 Alarm *alarm;
722 for( alarm = alarmList.first(); alarm; alarm = alarmList.next() ) { 722 for( alarm = alarmList.first(); alarm; alarm = alarmList.next() ) {
723// kdDebug(5800) << "CalendarLocal::appendAlarms() '" << alarm->text() 723// kdDebug(5800) << "CalendarLocal::appendAlarms() '" << alarm->text()
724// << "': " << alarm->time().toString() << " - " << alarm->enabled() << endl; 724// << "': " << alarm->time().toString() << " - " << alarm->enabled() << endl;
725 if ( alarm->enabled() ) { 725 if ( alarm->enabled() ) {
726 if ( alarm->time() >= from && alarm->time() <= to ) { 726 if ( alarm->time() >= from && alarm->time() <= to ) {
727 alarms.append( alarm ); 727 alarms.append( alarm );
728 } 728 }
729 } 729 }
730 } 730 }
731} 731}
732 732
733void CalendarLocal::appendRecurringAlarms( Alarm::List &alarms, 733void CalendarLocal::appendRecurringAlarms( Alarm::List &alarms,
734 Incidence *incidence, 734 Incidence *incidence,
735 const QDateTime &from, 735 const QDateTime &from,
736 const QDateTime &to ) 736 const QDateTime &to )
737{ 737{
738 738
739 QPtrList<Alarm> alarmList = incidence->alarms(); 739 QPtrList<Alarm> alarmList = incidence->alarms();
740 Alarm *alarm; 740 Alarm *alarm;
741 QDateTime qdt; 741 QDateTime qdt;
742 for( alarm = alarmList.first(); alarm; alarm = alarmList.next() ) { 742 for( alarm = alarmList.first(); alarm; alarm = alarmList.next() ) {
743 if (incidence->recursOn(from.date())) { 743 if (incidence->recursOn(from.date())) {
744 qdt.setTime(alarm->time().time()); 744 qdt.setTime(alarm->time().time());
745 qdt.setDate(from.date()); 745 qdt.setDate(from.date());
746 } 746 }
747 else qdt = alarm->time(); 747 else qdt = alarm->time();
748 // qDebug("1 %s %s %s", qdt.toString().latin1(), from.toString().latin1(), to.toString().latin1()); 748 // qDebug("1 %s %s %s", qdt.toString().latin1(), from.toString().latin1(), to.toString().latin1());
749 if ( alarm->enabled() ) { 749 if ( alarm->enabled() ) {
750 if ( qdt >= from && qdt <= to ) { 750 if ( qdt >= from && qdt <= to ) {
751 alarms.append( alarm ); 751 alarms.append( alarm );
752 } 752 }
753 } 753 }
754 } 754 }
755} 755}
756 756
757 757
758/****************************** PROTECTED METHODS ****************************/ 758/****************************** PROTECTED METHODS ****************************/
759 759
760// after changes are made to an event, this should be called. 760// after changes are made to an event, this should be called.
761void CalendarLocal::update( IncidenceBase *incidence ) 761void CalendarLocal::update( IncidenceBase *incidence )
762{ 762{
763 incidence->setSyncStatus( Event::SYNCMOD ); 763 incidence->setSyncStatus( Event::SYNCMOD );
764 incidence->setLastModified( QDateTime::currentDateTime() ); 764 incidence->setLastModified( QDateTime::currentDateTime() );
765 // we should probably update the revision number here, 765 // we should probably update the revision number here,
766 // or internally in the Event itself when certain things change. 766 // or internally in the Event itself when certain things change.
767 // need to verify with ical documentation. 767 // need to verify with ical documentation.
768 768
769 setModified( true ); 769 setModified( true );
770} 770}
771 771
772void CalendarLocal::insertEvent( Event *event ) 772void CalendarLocal::insertEvent( Event *event )
773{ 773{
774 if ( mEventList.findRef( event ) < 0 ) mEventList.append( event ); 774 if ( mEventList.findRef( event ) < 0 ) mEventList.append( event );
775} 775}
776 776
777 777
778QPtrList<Event> CalendarLocal::rawEventsForDate( const QDate &qd, bool sorted ) 778QPtrList<Event> CalendarLocal::rawEventsForDate( const QDate &qd, bool sorted )
779{ 779{
780 QPtrList<Event> eventList; 780 QPtrList<Event> eventList;
781 781
782 Event *event; 782 Event *event;
783 for( event = mEventList.first(); event; event = mEventList.next() ) { 783 for( event = mEventList.first(); event; event = mEventList.next() ) {
784 if ( !event->calEnabled() ) continue; 784 if ( !event->calEnabled() ) continue;
785 if ( event->doesRecur() ) { 785 if ( event->doesRecur() ) {
786 if ( event->isMultiDay() ) { 786 if ( event->isMultiDay() ) {
787 int extraDays = event->dtStart().date().daysTo( event->dtEnd().date() ); 787 int extraDays = event->dtStart().date().daysTo( event->dtEnd().date() );
788 int i; 788 int i;
789 for ( i = 0; i <= extraDays; i++ ) { 789 for ( i = 0; i <= extraDays; i++ ) {
790 if ( event->recursOn( qd.addDays( -i ) ) ) { 790 if ( event->recursOn( qd.addDays( -i ) ) ) {
791 eventList.append( event ); 791 eventList.append( event );
792 break; 792 break;
793 } 793 }
794 } 794 }
795 } else { 795 } else {
796 if ( event->recursOn( qd ) ) 796 if ( event->recursOn( qd ) )
797 eventList.append( event ); 797 eventList.append( event );
798 } 798 }
799 } else { 799 } else {
800 if ( event->dtStart().date() <= qd && event->dtEnd().date() >= qd ) { 800 if ( event->dtStart().date() <= qd && event->dtEnd().date() >= qd ) {
801 eventList.append( event ); 801 eventList.append( event );
802 } 802 }
803 } 803 }
804 } 804 }
805 805
806 if ( !sorted ) { 806 if ( !sorted ) {
807 return eventList; 807 return eventList;
808 } 808 }
809 809
810 // kdDebug(5800) << "Sorting events for date\n" << endl; 810 // kdDebug(5800) << "Sorting events for date\n" << endl;
811 // now, we have to sort it based on dtStart.time() 811 // now, we have to sort it based on dtStart.time()
812 QPtrList<Event> eventListSorted; 812 QPtrList<Event> eventListSorted;
813 Event *sortEvent; 813 Event *sortEvent;
814 for ( event = eventList.first(); event; event = eventList.next() ) { 814 for ( event = eventList.first(); event; event = eventList.next() ) {
815 sortEvent = eventListSorted.first(); 815 sortEvent = eventListSorted.first();
816 int i = 0; 816 int i = 0;
817 while ( sortEvent && event->dtStart().time()>=sortEvent->dtStart().time() ) 817 while ( sortEvent && event->dtStart().time()>=sortEvent->dtStart().time() )
818 { 818 {
819 i++; 819 i++;
820 sortEvent = eventListSorted.next(); 820 sortEvent = eventListSorted.next();
821 } 821 }
822 eventListSorted.insert( i, event ); 822 eventListSorted.insert( i, event );
823 } 823 }
824 return eventListSorted; 824 return eventListSorted;
825} 825}
826 826
827 827
828QPtrList<Event> CalendarLocal::rawEvents( const QDate &start, const QDate &end, 828QPtrList<Event> CalendarLocal::rawEvents( const QDate &start, const QDate &end,
829 bool inclusive ) 829 bool inclusive )
830{ 830{
831 Event *event = 0; 831 Event *event = 0;
832 832
833 QPtrList<Event> eventList; 833 QPtrList<Event> eventList;
834 834
835 // Get non-recurring events 835 // Get non-recurring events
836 for( event = mEventList.first(); event; event = mEventList.next() ) { 836 for( event = mEventList.first(); event; event = mEventList.next() ) {
837 if ( !event->calEnabled() ) continue; 837 if ( !event->calEnabled() ) continue;
838 if ( event->doesRecur() ) { 838 if ( event->doesRecur() ) {
839 QDate rStart = event->dtStart().date(); 839 QDate rStart = event->dtStart().date();
840 bool found = false; 840 bool found = false;
841 if ( inclusive ) { 841 if ( inclusive ) {
842 if ( rStart >= start && rStart <= end ) { 842 if ( rStart >= start && rStart <= end ) {
843 // Start date of event is in range. Now check for end date. 843 // Start date of event is in range. Now check for end date.
844 // if duration is negative, event recurs forever, so do not include it. 844 // if duration is negative, event recurs forever, so do not include it.
845 if ( event->recurrence()->duration() == 0 ) { // End date set 845 if ( event->recurrence()->duration() == 0 ) { // End date set
846 QDate rEnd = event->recurrence()->endDate(); 846 QDate rEnd = event->recurrence()->endDate();
847 if ( rEnd >= start && rEnd <= end ) { // End date within range 847 if ( rEnd >= start && rEnd <= end ) { // End date within range
848 found = true; 848 found = true;
849 } 849 }
850 } else if ( event->recurrence()->duration() > 0 ) { // Duration set 850 } else if ( event->recurrence()->duration() > 0 ) { // Duration set
851 // TODO: Calculate end date from duration. Should be done in Event 851 // TODO: Calculate end date from duration. Should be done in Event
852 // For now exclude all events with a duration. 852 // For now exclude all events with a duration.
853 } 853 }
854 } 854 }
855 } else { 855 } else {
856 bool founOne; 856 bool founOne;
857 QDate next = event->getNextOccurence( start, &founOne ).date(); 857 QDate next = event->getNextOccurence( start, &founOne ).date();
858 if ( founOne ) { 858 if ( founOne ) {
859 if ( next <= end ) { 859 if ( next <= end ) {
860 found = true; 860 found = true;
861 } 861 }
862 } 862 }
863 863
864 /* 864 /*
865 // crap !!! 865 // crap !!!
866 if ( rStart <= end ) { // Start date not after range 866 if ( rStart <= end ) { // Start date not after range
867 if ( rStart >= start ) { // Start date within range 867 if ( rStart >= start ) { // Start date within range
868 found = true; 868 found = true;
869 } else if ( event->recurrence()->duration() == -1 ) { // Recurs forever 869 } else if ( event->recurrence()->duration() == -1 ) { // Recurs forever
870 found = true; 870 found = true;
871 } else if ( event->recurrence()->duration() == 0 ) { // End date set 871 } else if ( event->recurrence()->duration() == 0 ) { // End date set
872 QDate rEnd = event->recurrence()->endDate(); 872 QDate rEnd = event->recurrence()->endDate();
873 if ( rEnd >= start && rEnd <= end ) { // End date within range 873 if ( rEnd >= start && rEnd <= end ) { // End date within range
874 found = true; 874 found = true;
875 } 875 }
876 } else { // Duration set 876 } else { // Duration set
877 // TODO: Calculate end date from duration. Should be done in Event 877 // TODO: Calculate end date from duration. Should be done in Event
878 // For now include all events with a duration. 878 // For now include all events with a duration.
879 found = true; 879 found = true;
880 } 880 }
881 } 881 }
882 */ 882 */
883 883
884 } 884 }
885 885
886 if ( found ) eventList.append( event ); 886 if ( found ) eventList.append( event );
887 } else { 887 } else {
888 QDate s = event->dtStart().date(); 888 QDate s = event->dtStart().date();
889 QDate e = event->dtEnd().date(); 889 QDate e = event->dtEnd().date();
890 890
891 if ( inclusive ) { 891 if ( inclusive ) {
892 if ( s >= start && e <= end ) { 892 if ( s >= start && e <= end ) {
893 eventList.append( event ); 893 eventList.append( event );
894 } 894 }
895 } else { 895 } else {
896 if ( ( e >= start && s <= end ) ) { 896 if ( ( e >= start && s <= end ) ) {
897 eventList.append( event ); 897 eventList.append( event );
898 } 898 }
899 } 899 }
900 } 900 }
901 } 901 }
902 902
903 return eventList; 903 return eventList;
904} 904}
905 905
906QPtrList<Event> CalendarLocal::rawEventsForDate( const QDateTime &qdt ) 906QPtrList<Event> CalendarLocal::rawEventsForDate( const QDateTime &qdt )
907{ 907{
908 return rawEventsForDate( qdt.date() ); 908 return rawEventsForDate( qdt.date() );
909} 909}
910 910
911QPtrList<Event> CalendarLocal::rawEvents() 911QPtrList<Event> CalendarLocal::rawEvents()
912{ 912{
913 QPtrList<Event> el; 913 QPtrList<Event> el;
914 for ( Event *it = mEventList.first(); it; it = mEventList.next() ) 914 for ( Event *it = mEventList.first(); it; it = mEventList.next() )
915 if ( it->calEnabled() ) el.append( it ); 915 if ( it->calEnabled() ) el.append( it );
916 return el; 916 return el;
917} 917}
918 918
919bool CalendarLocal::addJournal(Journal *journal) 919bool CalendarLocal::addJournal(Journal *journal)
920{ 920{
921 mJournalList.append(journal); 921 mJournalList.append(journal);
922 922
923 journal->registerObserver( this ); 923 journal->registerObserver( this );
924 924
925 setModified( true ); 925 setModified( true );
926 if ( journal->calID() == 0 ) 926 if ( journal->calID() == 0 )
927 journal->setCalID( mDefaultCalendar ); 927 journal->setCalID( mDefaultCalendar );
928 journal->setCalEnabled( true ); 928 journal->setCalEnabled( true );
929 return true; 929 return true;
930} 930}
931 931
932void CalendarLocal::deleteJournal( Journal *journal ) 932void CalendarLocal::deleteJournal( Journal *journal )
933{ 933{
934 clearUndo(journal); 934 clearUndo(journal);
935 if ( mJournalList.removeRef(journal) ) { 935 if ( mJournalList.removeRef(journal) ) {
936 setModified( true ); 936 setModified( true );
937 } 937 }
938} 938}
939 939
940QPtrList<Journal> CalendarLocal::journals4Date( const QDate & date ) 940QPtrList<Journal> CalendarLocal::journals4Date( const QDate & date )
941{ 941{
942 QPtrList<Journal> el; 942 QPtrList<Journal> el;
943 for ( Journal *it = mJournalList.first(); it; it = mJournalList.next() ) 943 for ( Journal *it = mJournalList.first(); it; it = mJournalList.next() )
944 if ( it->calEnabled() && it->dtStart().date() == date) el.append( it ); 944 if ( it->calEnabled() && it->dtStart().date() == date) el.append( it );
945 return el; 945 return el;
946} 946}
947Journal *CalendarLocal::journal( const QDate &date ) 947Journal *CalendarLocal::journal( const QDate &date )
948{ 948{
949// kdDebug(5800) << "CalendarLocal::journal() " << date.toString() << endl; 949// kdDebug(5800) << "CalendarLocal::journal() " << date.toString() << endl;
950 950
951 for ( Journal *it = mJournalList.first(); it; it = mJournalList.next() ) 951 for ( Journal *it = mJournalList.first(); it; it = mJournalList.next() )
952 if ( it->calEnabled() && it->dtStart().date() == date ) 952 if ( it->calEnabled() && it->dtStart().date() == date )
953 return it; 953 return it;
954 954
955 return 0; 955 return 0;
956} 956}
957 957
958Journal *CalendarLocal::journal( const QString &uid ) 958Journal *CalendarLocal::journal( const QString &uid )
959{ 959{
960 Journal * retVal = 0; 960 Journal * retVal = 0;
961 for ( Journal *it = mJournalList.first(); it; it = mJournalList.next() ) 961 for ( Journal *it = mJournalList.first(); it; it = mJournalList.next() )
962 if ( it->calEnabled() && it->uid() == uid ) { 962 if ( it->calEnabled() && it->uid() == uid ) {
963 if ( retVal ) { 963 if ( retVal ) {
964 if ( retVal->calID() > it->calID() ) { 964 if ( retVal->calID() > it->calID() ) {
965 retVal = it; 965 retVal = it;
966 } 966 }
967 } else { 967 } else {
968 retVal = it; 968 retVal = it;
969 } 969 }
970 } 970 }
971 return retVal; 971 return retVal;
972} 972}
973 973
974QPtrList<Journal> CalendarLocal::journals() 974QPtrList<Journal> CalendarLocal::journals()
975{ 975{
976 QPtrList<Journal> el; 976 QPtrList<Journal> el;
977 for ( Journal *it = mJournalList.first(); it; it = mJournalList.next() ) 977 for ( Journal *it = mJournalList.first(); it; it = mJournalList.next() )
978 if ( it->calEnabled() ) el.append( it ); 978 if ( it->calEnabled() ) el.append( it );
979 return el; 979 return el;
980} 980}
981void CalendarLocal::setCalendarRemove( int id ) 981void CalendarLocal::setCalendarRemove( int id )
982{ 982{
983 983
984 { 984 {
985 QPtrList<Event> EventList = mEventList; 985 QPtrList<Event> EventList = mEventList;
986 Event * ev = EventList.first(); 986 Event * ev = EventList.first();
987 while ( ev ) { 987 while ( ev ) {
988 if ( ev->calID() == id ) 988 if ( ev->calID() == id && ev->uid().left( 15 ) != QString("last-syncEvent-") )
989 deleteEvent( ev ); 989 deleteEvent( ev );
990 ev = EventList.next(); 990 ev = EventList.next();
991 } 991 }
992 } 992 }
993 { 993 {
994 994
995 QPtrList<Todo> TodoList = mTodoList; 995 QPtrList<Todo> TodoList = mTodoList;
996 Todo * ev = TodoList.first(); 996 Todo * ev = TodoList.first();
997 while ( ev ) { 997 while ( ev ) {
998 if ( ev->calID() == id ) 998 if ( ev->calID() == id )
999 deleteTodo( ev ); 999 deleteTodo( ev );
1000 ev = TodoList.next(); 1000 ev = TodoList.next();
1001 } 1001 }
1002 } 1002 }
1003 { 1003 {
1004 QPtrList<Journal> JournalList = mJournalList; 1004 QPtrList<Journal> JournalList = mJournalList;
1005 Journal * ev = JournalList.first(); 1005 Journal * ev = JournalList.first();
1006 while ( ev ) { 1006 while ( ev ) {
1007 if ( ev->calID() == id ) 1007 if ( ev->calID() == id )
1008 deleteJournal( ev ); 1008 deleteJournal( ev );
1009 ev = JournalList.next(); 1009 ev = JournalList.next();
1010 } 1010 }
1011 } 1011 }
1012 1012
1013 clearUndo(0); 1013 clearUndo(0);
1014 1014
1015} 1015}
1016 1016
1017void CalendarLocal::setAllCalendarEnabled( bool enable ) 1017void CalendarLocal::setAllCalendarEnabled( bool enable )
1018{ 1018{
1019 for ( Journal *it = mJournalList.first(); it; it = mJournalList.next() ) 1019 for ( Journal *it = mJournalList.first(); it; it = mJournalList.next() )
1020 it->setCalEnabled( enable ); 1020 it->setCalEnabled( enable );
1021 1021
1022 for ( Event *it = mEventList.first(); it; it = mEventList.next() ) 1022 for ( Event *it = mEventList.first(); it; it = mEventList.next() )
1023 it->setCalEnabled( enable ); 1023 it->setCalEnabled( enable );
1024 1024
1025 for ( Todo *it = mTodoList.first(); it; it = mTodoList.next() ) 1025 for ( Todo *it = mTodoList.first(); it; it = mTodoList.next() )
1026 it->setCalEnabled( enable ); 1026 it->setCalEnabled( enable );
1027 1027
1028 1028
1029} 1029}
1030void CalendarLocal::setCalendarEnabled( int id, bool enable ) 1030void CalendarLocal::setCalendarEnabled( int id, bool enable )
1031{ 1031{
1032 for ( Journal *it = mJournalList.first(); it; it = mJournalList.next() ) 1032 for ( Journal *it = mJournalList.first(); it; it = mJournalList.next() )
1033 if ( it->calID() == id ) it->setCalEnabled( enable ); 1033 if ( it->calID() == id ) it->setCalEnabled( enable );
1034 1034
1035 for ( Event *it = mEventList.first(); it; it = mEventList.next() ) 1035 for ( Event *it = mEventList.first(); it; it = mEventList.next() )
1036 if ( it->calID() == id ) it->setCalEnabled( enable ); 1036 if ( it->calID() == id ) it->setCalEnabled( enable );
1037 1037
1038 for ( Todo *it = mTodoList.first(); it; it = mTodoList.next() ) 1038 for ( Todo *it = mTodoList.first(); it; it = mTodoList.next() )
1039 if ( it->calID() == id ) it->setCalEnabled( enable ); 1039 if ( it->calID() == id ) it->setCalEnabled( enable );
1040 1040
1041} 1041}
1042 1042
1043void CalendarLocal::setReadOnly( int id, bool enable ) 1043void CalendarLocal::setReadOnly( int id, bool enable )
1044{ 1044{
1045 for ( Journal *it = mJournalList.first(); it; it = mJournalList.next() ) 1045 for ( Journal *it = mJournalList.first(); it; it = mJournalList.next() )
1046 if ( it->calID() == id ) it->setReadOnly( enable ); 1046 if ( it->calID() == id ) it->setReadOnly( enable );
1047 1047
1048 for ( Event *it = mEventList.first(); it; it = mEventList.next() ) 1048 for ( Event *it = mEventList.first(); it; it = mEventList.next() )
1049 if ( it->calID() == id ) it->setReadOnly( enable ); 1049 if ( it->calID() == id ) it->setReadOnly( enable );
1050 1050
1051 for ( Todo *it = mTodoList.first(); it; it = mTodoList.next() ) 1051 for ( Todo *it = mTodoList.first(); it; it = mTodoList.next() )
1052 if ( it->calID() == id ) it->setReadOnly( enable ); 1052 if ( it->calID() == id ) it->setReadOnly( enable );
1053 1053
1054} 1054}
1055 1055
1056void CalendarLocal::setAlarmEnabled( int id, bool enable ) 1056void CalendarLocal::setAlarmEnabled( int id, bool enable )
1057{ 1057{
1058 for ( Journal *it = mJournalList.first(); it; it = mJournalList.next() ) 1058 for ( Journal *it = mJournalList.first(); it; it = mJournalList.next() )
1059 if ( it->calID() == id ) it->setAlarmEnabled( enable ); 1059 if ( it->calID() == id ) it->setAlarmEnabled( enable );
1060 1060
1061 for ( Event *it = mEventList.first(); it; it = mEventList.next() ) 1061 for ( Event *it = mEventList.first(); it; it = mEventList.next() )
1062 if ( it->calID() == id ) it->setAlarmEnabled( enable ); 1062 if ( it->calID() == id ) it->setAlarmEnabled( enable );
1063 1063
1064 for ( Todo *it = mTodoList.first(); it; it = mTodoList.next() ) 1064 for ( Todo *it = mTodoList.first(); it; it = mTodoList.next() )
1065 if ( it->calID() == id ) it->setAlarmEnabled( enable ); 1065 if ( it->calID() == id ) it->setAlarmEnabled( enable );
1066 reInitAlarmSettings(); 1066 reInitAlarmSettings();
1067 1067
1068} 1068}
1069void CalendarLocal::setDefaultCalendarEnabledOnly() 1069void CalendarLocal::setDefaultCalendarEnabledOnly()
1070{ 1070{
1071 for ( Journal *it = mJournalList.first(); it; it = mJournalList.next() ) 1071 for ( Journal *it = mJournalList.first(); it; it = mJournalList.next() )
1072 it->setCalEnabled( it->calID() == mDefaultCalendar ); 1072 it->setCalEnabled( it->calID() == mDefaultCalendar );
1073 1073
1074 for ( Event *it = mEventList.first(); it; it = mEventList.next() ) 1074 for ( Event *it = mEventList.first(); it; it = mEventList.next() )
1075 it->setCalEnabled( it->calID() == mDefaultCalendar); 1075 it->setCalEnabled( it->calID() == mDefaultCalendar);
1076 1076
1077 for ( Todo *it = mTodoList.first(); it; it = mTodoList.next() ) 1077 for ( Todo *it = mTodoList.first(); it; it = mTodoList.next() )
1078 it->setCalEnabled( it->calID() == mDefaultCalendar); 1078 it->setCalEnabled( it->calID() == mDefaultCalendar);
1079 1079
1080} 1080}