summaryrefslogtreecommitdiffabout
path: root/korganizer
Unidiff
Diffstat (limited to 'korganizer') (more/less context) (ignore whitespace changes)
-rw-r--r--korganizer/calendarview.cpp43
-rw-r--r--korganizer/calendarview.h2
2 files changed, 18 insertions, 27 deletions
diff --git a/korganizer/calendarview.cpp b/korganizer/calendarview.cpp
index 9160e1d..cbe2a10 100644
--- a/korganizer/calendarview.cpp
+++ b/korganizer/calendarview.cpp
@@ -528,2979 +528,2970 @@ void CalendarView::computeAlarm( QString msg )
528 if ( mess.left( 11 ) == "timer_alarm") { 528 if ( mess.left( 11 ) == "timer_alarm") {
529 //mTimerTime = 0; 529 //mTimerTime = 0;
530 startAlarm( mess.mid( 11 ), filename ); 530 startAlarm( mess.mid( 11 ), filename );
531 return; 531 return;
532 } 532 }
533 if ( mess.left( 10 ) == "proc_alarm") { 533 if ( mess.left( 10 ) == "proc_alarm") {
534 bool error = false; 534 bool error = false;
535 int len = mess.mid( 10 ).find("+++"); 535 int len = mess.mid( 10 ).find("+++");
536 if ( len < 2 ) 536 if ( len < 2 )
537 error = true; 537 error = true;
538 else { 538 else {
539 tempfilename = mess.mid( 10, len ); 539 tempfilename = mess.mid( 10, len );
540 if ( !QFile::exists( tempfilename ) ) 540 if ( !QFile::exists( tempfilename ) )
541 error = true; 541 error = true;
542 } 542 }
543 if ( error ) { 543 if ( error ) {
544 mAlarmMessage = "Procedure Alarm\nError - File not found\n"; 544 mAlarmMessage = "Procedure Alarm\nError - File not found\n";
545 mAlarmMessage += mess.mid( 10+len+3+9 ); 545 mAlarmMessage += mess.mid( 10+len+3+9 );
546 } else { 546 } else {
547 //QCopEnvelope e("QPE/Application/kopi", "-writeFileSilent"); 547 //QCopEnvelope e("QPE/Application/kopi", "-writeFileSilent");
548 //qDebug("-----system command %s ",tempfilename.latin1() ); 548 //qDebug("-----system command %s ",tempfilename.latin1() );
549#ifndef _WIN32_ 549#ifndef _WIN32_
550 if ( vfork () == 0 ) { 550 if ( vfork () == 0 ) {
551 execl ( tempfilename.latin1(), 0 ); 551 execl ( tempfilename.latin1(), 0 );
552 return; 552 return;
553 } 553 }
554#else 554#else
555 QProcess* p = new QProcess(); 555 QProcess* p = new QProcess();
556 p->addArgument( tempfilename.latin1() ); 556 p->addArgument( tempfilename.latin1() );
557 p->start(); 557 p->start();
558 return; 558 return;
559#endif 559#endif
560 560
561 return; 561 return;
562 } 562 }
563 563
564 //qDebug("+++++++system command %s ",tempfilename.latin1() ); 564 //qDebug("+++++++system command %s ",tempfilename.latin1() );
565 } 565 }
566 if ( mess.left( 11 ) == "audio_alarm") { 566 if ( mess.left( 11 ) == "audio_alarm") {
567 bool error = false; 567 bool error = false;
568 int len = mess.mid( 11 ).find("+++"); 568 int len = mess.mid( 11 ).find("+++");
569 if ( len < 2 ) 569 if ( len < 2 )
570 error = true; 570 error = true;
571 else { 571 else {
572 tempfilename = mess.mid( 11, len ); 572 tempfilename = mess.mid( 11, len );
573 if ( !QFile::exists( tempfilename ) ) 573 if ( !QFile::exists( tempfilename ) )
574 error = true; 574 error = true;
575 } 575 }
576 if ( ! error ) { 576 if ( ! error ) {
577 filename = tempfilename; 577 filename = tempfilename;
578 } 578 }
579 mAlarmMessage = mess.mid( 11+len+3+9 ); 579 mAlarmMessage = mess.mid( 11+len+3+9 );
580 //qDebug("audio file command %s ",tempfilename.latin1() ); 580 //qDebug("audio file command %s ",tempfilename.latin1() );
581 } 581 }
582 if ( mess.left( 9 ) == "cal_alarm") { 582 if ( mess.left( 9 ) == "cal_alarm") {
583 mAlarmMessage = mess.mid( 9 ) ; 583 mAlarmMessage = mess.mid( 9 ) ;
584 } 584 }
585 585
586 startAlarm( mAlarmMessage, filename ); 586 startAlarm( mAlarmMessage, filename );
587 587
588 588
589} 589}
590 590
591void CalendarView::addSuspendAlarm(const QDateTime &qdt, const QString &noti ) 591void CalendarView::addSuspendAlarm(const QDateTime &qdt, const QString &noti )
592{ 592{
593 //qDebug("+++++addSUSPENDAlarm %s %s ", qdt.toString().latin1() , noti.latin1() ); 593 //qDebug("+++++addSUSPENDAlarm %s %s ", qdt.toString().latin1() , noti.latin1() );
594 594
595 mSuspendAlarmNotification = noti; 595 mSuspendAlarmNotification = noti;
596 int ms = QDateTime::currentDateTime().secsTo( qdt )*1000; 596 int ms = QDateTime::currentDateTime().secsTo( qdt )*1000;
597 //qDebug("Suspend Alarm timer started with secs: %d ", ms/1000); 597 //qDebug("Suspend Alarm timer started with secs: %d ", ms/1000);
598 mSuspendTimer->start( ms , true ); 598 mSuspendTimer->start( ms , true );
599 599
600} 600}
601 601
602void CalendarView::addAlarm(const QDateTime &qdt, const QString &noti ) 602void CalendarView::addAlarm(const QDateTime &qdt, const QString &noti )
603{ 603{
604 //qDebug("+++++addAlarm %s %s ", qdt.toString().latin1() , noti.latin1() ); 604 //qDebug("+++++addAlarm %s %s ", qdt.toString().latin1() , noti.latin1() );
605 if ( ! KOPrefs::instance()->mUseInternalAlarmNotification ) { 605 if ( ! KOPrefs::instance()->mUseInternalAlarmNotification ) {
606#ifndef DESKTOP_VERSION 606#ifndef DESKTOP_VERSION
607 AlarmServer::addAlarm ( qdt,"koalarm", noti.latin1() ); 607 AlarmServer::addAlarm ( qdt,"koalarm", noti.latin1() );
608#endif 608#endif
609 return; 609 return;
610 } 610 }
611 int maxSec; 611 int maxSec;
612 //maxSec = 5; //testing only 612 //maxSec = 5; //testing only
613 maxSec = 86400+3600; // one day+1hour 613 maxSec = 86400+3600; // one day+1hour
614 mAlarmNotification = noti; 614 mAlarmNotification = noti;
615 int sec = QDateTime::currentDateTime().secsTo( qdt ); 615 int sec = QDateTime::currentDateTime().secsTo( qdt );
616 if ( sec > maxSec ) { 616 if ( sec > maxSec ) {
617 mRecheckAlarmTimer->start( maxSec * 1000 ); 617 mRecheckAlarmTimer->start( maxSec * 1000 );
618 // qDebug("recheck Alarm timer started with secs: %d next alarm in sec:%d", maxSec,sec ); 618 // qDebug("recheck Alarm timer started with secs: %d next alarm in sec:%d", maxSec,sec );
619 return; 619 return;
620 } else { 620 } else {
621 mRecheckAlarmTimer->stop(); 621 mRecheckAlarmTimer->stop();
622 } 622 }
623 //qDebug("Alarm timer started with secs: %d ", sec); 623 //qDebug("Alarm timer started with secs: %d ", sec);
624 mAlarmTimer->start( sec *1000 , true ); 624 mAlarmTimer->start( sec *1000 , true );
625 625
626} 626}
627// called by mRecheckAlarmTimer to get next alarm 627// called by mRecheckAlarmTimer to get next alarm
628// we need this, because a QTimer has only a max range of 25 days 628// we need this, because a QTimer has only a max range of 25 days
629void CalendarView::recheckTimerAlarm() 629void CalendarView::recheckTimerAlarm()
630{ 630{
631 mAlarmTimer->stop(); 631 mAlarmTimer->stop();
632 mRecheckAlarmTimer->stop(); 632 mRecheckAlarmTimer->stop();
633 mCalendar->checkAlarmForIncidence( 0, true ); 633 mCalendar->checkAlarmForIncidence( 0, true );
634} 634}
635void CalendarView::removeAlarm(const QDateTime &qdt, const QString &noti ) 635void CalendarView::removeAlarm(const QDateTime &qdt, const QString &noti )
636{ 636{
637 //qDebug("-----removeAlarm %s %s ", qdt.toString().latin1() , noti.latin1() ); 637 //qDebug("-----removeAlarm %s %s ", qdt.toString().latin1() , noti.latin1() );
638 if ( ! KOPrefs::instance()->mUseInternalAlarmNotification ) { 638 if ( ! KOPrefs::instance()->mUseInternalAlarmNotification ) {
639#ifndef DESKTOP_VERSION 639#ifndef DESKTOP_VERSION
640 AlarmServer::deleteAlarm (qdt ,"koalarm" ,noti.latin1() ); 640 AlarmServer::deleteAlarm (qdt ,"koalarm" ,noti.latin1() );
641#endif 641#endif
642 return; 642 return;
643 } 643 }
644 mAlarmTimer->stop(); 644 mAlarmTimer->stop();
645} 645}
646void CalendarView::selectWeekNum ( int num ) 646void CalendarView::selectWeekNum ( int num )
647{ 647{
648 dateNavigator()->selectWeek( num ); 648 dateNavigator()->selectWeek( num );
649 mViewManager->showWeekView(); 649 mViewManager->showWeekView();
650} 650}
651KOViewManager *CalendarView::viewManager() 651KOViewManager *CalendarView::viewManager()
652{ 652{
653 return mViewManager; 653 return mViewManager;
654} 654}
655 655
656KODialogManager *CalendarView::dialogManager() 656KODialogManager *CalendarView::dialogManager()
657{ 657{
658 return mDialogManager; 658 return mDialogManager;
659} 659}
660 660
661QDate CalendarView::startDate() 661QDate CalendarView::startDate()
662{ 662{
663 DateList dates = mNavigator->selectedDates(); 663 DateList dates = mNavigator->selectedDates();
664 664
665 return dates.first(); 665 return dates.first();
666} 666}
667 667
668QDate CalendarView::endDate() 668QDate CalendarView::endDate()
669{ 669{
670 DateList dates = mNavigator->selectedDates(); 670 DateList dates = mNavigator->selectedDates();
671 671
672 return dates.last(); 672 return dates.last();
673} 673}
674 674
675 675
676void CalendarView::createPrinter() 676void CalendarView::createPrinter()
677{ 677{
678#ifndef KORG_NOPRINTER 678#ifndef KORG_NOPRINTER
679 if (!mCalPrinter) { 679 if (!mCalPrinter) {
680 mCalPrinter = new CalPrinter(this, mCalendar); 680 mCalPrinter = new CalPrinter(this, mCalendar);
681 connect(this, SIGNAL(configChanged()), mCalPrinter, SLOT(updateConfig())); 681 connect(this, SIGNAL(configChanged()), mCalPrinter, SLOT(updateConfig()));
682 } 682 }
683#endif 683#endif
684} 684}
685 685
686void CalendarView::confSync() 686void CalendarView::confSync()
687{ 687{
688 static KSyncPrefsDialog* sp = 0; 688 static KSyncPrefsDialog* sp = 0;
689 if ( ! sp ) { 689 if ( ! sp ) {
690 sp = new KSyncPrefsDialog( this, "syncprefs", true ); 690 sp = new KSyncPrefsDialog( this, "syncprefs", true );
691 } 691 }
692 sp->usrReadConfig(); 692 sp->usrReadConfig();
693#ifndef DESKTOP_VERSION 693#ifndef DESKTOP_VERSION
694 sp->showMaximized(); 694 sp->showMaximized();
695#else 695#else
696 sp->show(); 696 sp->show();
697#endif 697#endif
698 sp->exec(); 698 sp->exec();
699 KOPrefs::instance()->mSyncProfileNames = sp->getSyncProfileNames(); 699 KOPrefs::instance()->mSyncProfileNames = sp->getSyncProfileNames();
700 KOPrefs::instance()->mLocalMachineName = sp->getLocalMachineName (); 700 KOPrefs::instance()->mLocalMachineName = sp->getLocalMachineName ();
701} 701}
702 702
703 703
704//KOPrefs::instance()->mWriteBackFile 704//KOPrefs::instance()->mWriteBackFile
705//KOPrefs::instance()->mWriteBackExistingOnly 705//KOPrefs::instance()->mWriteBackExistingOnly
706 706
707// 0 syncPrefsGroup->addRadio(i18n("Take local entry on conflict")); 707// 0 syncPrefsGroup->addRadio(i18n("Take local entry on conflict"));
708// 1 syncPrefsGroup->addRadio(i18n("Take remote entry on conflict")); 708// 1 syncPrefsGroup->addRadio(i18n("Take remote entry on conflict"));
709// 2 syncPrefsGroup->addRadio(i18n("Take newest entry on conflict")); 709// 2 syncPrefsGroup->addRadio(i18n("Take newest entry on conflict"));
710// 3 syncPrefsGroup->addRadio(i18n("Ask for every entry on conflict")); 710// 3 syncPrefsGroup->addRadio(i18n("Ask for every entry on conflict"));
711// 4 syncPrefsGroup->addRadio(i18n("Force take local entry always")); 711// 4 syncPrefsGroup->addRadio(i18n("Force take local entry always"));
712// 5 syncPrefsGroup->addRadio(i18n("Force take remote entry always")); 712// 5 syncPrefsGroup->addRadio(i18n("Force take remote entry always"));
713 713
714int CalendarView::takeEvent( Incidence* local, Incidence* remote, int mode , bool full ) 714int CalendarView::takeEvent( Incidence* local, Incidence* remote, int mode , bool full )
715{ 715{
716 716
717 //void setZaurusId(int id); 717 //void setZaurusId(int id);
718 // int zaurusId() const; 718 // int zaurusId() const;
719 // void setZaurusUid(int id); 719 // void setZaurusUid(int id);
720 // int zaurusUid() const; 720 // int zaurusUid() const;
721 // void setZaurusStat(int id); 721 // void setZaurusStat(int id);
722 // int zaurusStat() const; 722 // int zaurusStat() const;
723 // 0 equal 723 // 0 equal
724 // 1 take local 724 // 1 take local
725 // 2 take remote 725 // 2 take remote
726 // 3 cancel 726 // 3 cancel
727 QDateTime lastSync = mLastCalendarSync; 727 QDateTime lastSync = mLastCalendarSync;
728 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 728 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
729 bool remCh, locCh; 729 bool remCh, locCh;
730 remCh = ( remote->zaurusUid() != local->zaurusUid() ); 730 remCh = ( remote->zaurusUid() != local->zaurusUid() );
731 locCh = ( local->lastModified() > mLastCalendarSync ); 731 locCh = ( local->lastModified() > mLastCalendarSync );
732 //qDebug("locCh %d remCh %d locuid %d remuid %d", locCh, remCh,local->zaurusUid(), remote->zaurusUid() ); 732 //qDebug("locCh %d remCh %d locuid %d remuid %d", locCh, remCh,local->zaurusUid(), remote->zaurusUid() );
733 if ( !remCh && ! locCh ) { 733 if ( !remCh && ! locCh ) {
734 //qDebug("both not changed "); 734 //qDebug("both not changed ");
735 lastSync = local->lastModified().addDays(1); 735 lastSync = local->lastModified().addDays(1);
736 } else { 736 } else {
737 if ( locCh ) { 737 if ( locCh ) {
738 //qDebug("loc changed %d %d", local->zaurusStat(), local->revision() ); 738 //qDebug("loc changed %d %d", local->zaurusStat(), local->revision() );
739 lastSync = local->lastModified().addDays( -1 ); 739 lastSync = local->lastModified().addDays( -1 );
740 if ( !remCh ) 740 if ( !remCh )
741 remote->setLastModified( lastSync.addDays( -1 ) ); 741 remote->setLastModified( lastSync.addDays( -1 ) );
742 } else { 742 } else {
743 //qDebug(" not loc changed "); 743 //qDebug(" not loc changed ");
744 lastSync = local->lastModified().addDays( 1 ); 744 lastSync = local->lastModified().addDays( 1 );
745 if ( remCh ) 745 if ( remCh )
746 remote->setLastModified( lastSync.addDays( 1 ) ); 746 remote->setLastModified( lastSync.addDays( 1 ) );
747 747
748 } 748 }
749 } 749 }
750 full = true; 750 full = true;
751 if ( mode < SYNC_PREF_ASK ) 751 if ( mode < SYNC_PREF_ASK )
752 mode = SYNC_PREF_ASK; 752 mode = SYNC_PREF_ASK;
753 } else { 753 } else {
754 if ( local->lastModified() == remote->lastModified() ) 754 if ( local->lastModified() == remote->lastModified() )
755 if ( local->revision() == remote->revision() ) 755 if ( local->revision() == remote->revision() )
756 return 0; 756 return 0;
757 757
758 } 758 }
759 // qDebug(" %d %d conflict on %s %s ", mode, full, local->summary().latin1(), remote->summary().latin1() ); 759 // qDebug(" %d %d conflict on %s %s ", mode, full, local->summary().latin1(), remote->summary().latin1() );
760 760
761 //qDebug("%s %d %s %d", local->lastModified().toString().latin1() , local->revision(), remote->lastModified().toString().latin1(), remote->revision()); 761 //qDebug("%s %d %s %d", local->lastModified().toString().latin1() , local->revision(), remote->lastModified().toString().latin1(), remote->revision());
762 //qDebug("%d %d %d %d ", local->lastModified().time().second(), local->lastModified().time().msec(), remote->lastModified().time().second(), remote->lastModified().time().msec() ); 762 //qDebug("%d %d %d %d ", local->lastModified().time().second(), local->lastModified().time().msec(), remote->lastModified().time().second(), remote->lastModified().time().msec() );
763 //full = true; //debug only 763 //full = true; //debug only
764 if ( full ) { 764 if ( full ) {
765 bool equ = false; 765 bool equ = false;
766 if ( local->type() == "Event" ) { 766 if ( local->type() == "Event" ) {
767 equ = (*((Event*) local) == *((Event*) remote)); 767 equ = (*((Event*) local) == *((Event*) remote));
768 } 768 }
769 else if ( local->type() =="Todo" ) 769 else if ( local->type() =="Todo" )
770 equ = (*((Todo*) local) == (*(Todo*) remote)); 770 equ = (*((Todo*) local) == (*(Todo*) remote));
771 else if ( local->type() =="Journal" ) 771 else if ( local->type() =="Journal" )
772 equ = (*((Journal*) local) == *((Journal*) remote)); 772 equ = (*((Journal*) local) == *((Journal*) remote));
773 if ( equ ) { 773 if ( equ ) {
774 //qDebug("equal "); 774 //qDebug("equal ");
775 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 775 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
776 local->setZaurusUid( remote->zaurusUid() ); 776 local->setZaurusUid( remote->zaurusUid() );
777 } 777 }
778 if ( mode < SYNC_PREF_FORCE_LOCAL ) 778 if ( mode < SYNC_PREF_FORCE_LOCAL )
779 return 0; 779 return 0;
780 780
781 }//else //debug only 781 }//else //debug only
782 //qDebug("not equal %s %s ", local->summary().latin1(), remote->summary().latin1()); 782 //qDebug("not equal %s %s ", local->summary().latin1(), remote->summary().latin1());
783 } 783 }
784 int result; 784 int result;
785 bool localIsNew; 785 bool localIsNew;
786 if ( full && mode < SYNC_PREF_NEWEST ) 786 if ( full && mode < SYNC_PREF_NEWEST )
787 mode = SYNC_PREF_ASK; 787 mode = SYNC_PREF_ASK;
788 788
789 switch( mode ) { 789 switch( mode ) {
790 case SYNC_PREF_LOCAL: 790 case SYNC_PREF_LOCAL:
791 if ( lastSync > remote->lastModified() ) 791 if ( lastSync > remote->lastModified() )
792 return 1; 792 return 1;
793 if ( lastSync > local->lastModified() ) 793 if ( lastSync > local->lastModified() )
794 return 2; 794 return 2;
795 return 1; 795 return 1;
796 break; 796 break;
797 case SYNC_PREF_REMOTE: 797 case SYNC_PREF_REMOTE:
798 if ( lastSync > remote->lastModified() ) 798 if ( lastSync > remote->lastModified() )
799 return 1; 799 return 1;
800 if ( lastSync > local->lastModified() ) 800 if ( lastSync > local->lastModified() )
801 return 2; 801 return 2;
802 return 2; 802 return 2;
803 break; 803 break;
804 case SYNC_PREF_NEWEST: 804 case SYNC_PREF_NEWEST:
805 if ( local->lastModified() > remote->lastModified() ) 805 if ( local->lastModified() > remote->lastModified() )
806 return 1; 806 return 1;
807 else 807 else
808 return 2; 808 return 2;
809 break; 809 break;
810 case SYNC_PREF_ASK: 810 case SYNC_PREF_ASK:
811 //qDebug("lsy %s --- lo %s --- re %s ", lastSync.toString().latin1(), local->lastModified().toString().latin1(), remote->lastModified().toString().latin1() ); 811 //qDebug("lsy %s --- lo %s --- re %s ", lastSync.toString().latin1(), local->lastModified().toString().latin1(), remote->lastModified().toString().latin1() );
812 if ( lastSync > remote->lastModified() ) 812 if ( lastSync > remote->lastModified() )
813 return 1; 813 return 1;
814 if ( lastSync > local->lastModified() ) 814 if ( lastSync > local->lastModified() )
815 return 2; 815 return 2;
816 //qDebug("lsy %s --- lo %s --- re %s ", lastSync.toString().latin1(), local->lastModified().toString().latin1(), remote->lastModified().toString().latin1() ); 816 //qDebug("lsy %s --- lo %s --- re %s ", lastSync.toString().latin1(), local->lastModified().toString().latin1(), remote->lastModified().toString().latin1() );
817 localIsNew = local->lastModified() > remote->lastModified(); 817 localIsNew = local->lastModified() > remote->lastModified();
818 if ( localIsNew ) 818 if ( localIsNew )
819 getEventViewerDialog()->setColorMode( 1 ); 819 getEventViewerDialog()->setColorMode( 1 );
820 else 820 else
821 getEventViewerDialog()->setColorMode( 2 ); 821 getEventViewerDialog()->setColorMode( 2 );
822 getEventViewerDialog()->setIncidence(local); 822 getEventViewerDialog()->setIncidence(local);
823 if ( localIsNew ) 823 if ( localIsNew )
824 getEventViewerDialog()->setColorMode( 2 ); 824 getEventViewerDialog()->setColorMode( 2 );
825 else 825 else
826 getEventViewerDialog()->setColorMode( 1 ); 826 getEventViewerDialog()->setColorMode( 1 );
827 getEventViewerDialog()->addIncidence(remote); 827 getEventViewerDialog()->addIncidence(remote);
828 getEventViewerDialog()->setColorMode( 0 ); 828 getEventViewerDialog()->setColorMode( 0 );
829 //qDebug("local %d remote %d ",local->relatedTo(),remote->relatedTo() ); 829 //qDebug("local %d remote %d ",local->relatedTo(),remote->relatedTo() );
830 getEventViewerDialog()->setCaption( mCurrentSyncDevice +i18n(" : Conflict! Please choose entry!")); 830 getEventViewerDialog()->setCaption( mCurrentSyncDevice +i18n(" : Conflict! Please choose entry!"));
831 getEventViewerDialog()->showMe(); 831 getEventViewerDialog()->showMe();
832 result = getEventViewerDialog()->executeS( localIsNew ); 832 result = getEventViewerDialog()->executeS( localIsNew );
833 return result; 833 return result;
834 834
835 break; 835 break;
836 case SYNC_PREF_FORCE_LOCAL: 836 case SYNC_PREF_FORCE_LOCAL:
837 return 1; 837 return 1;
838 break; 838 break;
839 case SYNC_PREF_FORCE_REMOTE: 839 case SYNC_PREF_FORCE_REMOTE:
840 return 2; 840 return 2;
841 break; 841 break;
842 842
843 default: 843 default:
844 // SYNC_PREF_TAKE_BOTH not implemented 844 // SYNC_PREF_TAKE_BOTH not implemented
845 break; 845 break;
846 } 846 }
847 return 0; 847 return 0;
848} 848}
849Event* CalendarView::getLastSyncEvent() 849Event* CalendarView::getLastSyncEvent()
850{ 850{
851 Event* lse; 851 Event* lse;
852 //qDebug("CurrentSyncDevice %s ",mCurrentSyncDevice .latin1() ); 852 //qDebug("CurrentSyncDevice %s ",mCurrentSyncDevice .latin1() );
853 lse = mCalendar->event( "last-syncEvent-"+mCurrentSyncDevice ); 853 lse = mCalendar->event( "last-syncEvent-"+mCurrentSyncDevice );
854 if (!lse) { 854 if (!lse) {
855 lse = new Event(); 855 lse = new Event();
856 lse->setUid( "last-syncEvent-"+mCurrentSyncDevice ); 856 lse->setUid( "last-syncEvent-"+mCurrentSyncDevice );
857 QString sum = ""; 857 QString sum = "";
858 if ( KOPrefs::instance()->mExternSyncProfiles.contains( mCurrentSyncDevice ) ) 858 if ( KOPrefs::instance()->mExternSyncProfiles.contains( mCurrentSyncDevice ) )
859 sum = "E: "; 859 sum = "E: ";
860 lse->setSummary(sum+mCurrentSyncDevice + i18n(" - sync event")); 860 lse->setSummary(sum+mCurrentSyncDevice + i18n(" - sync event"));
861 lse->setDtStart( mLastCalendarSync ); 861 lse->setDtStart( mLastCalendarSync );
862 lse->setDtEnd( mLastCalendarSync.addSecs( 7200 ) ); 862 lse->setDtEnd( mLastCalendarSync.addSecs( 7200 ) );
863 lse->setCategories( i18n("SyncEvent") ); 863 lse->setCategories( i18n("SyncEvent") );
864 lse->setReadOnly( true ); 864 lse->setReadOnly( true );
865 mCalendar->addEvent( lse ); 865 mCalendar->addEvent( lse );
866 } 866 }
867 867
868 return lse; 868 return lse;
869 869
870} 870}
871void CalendarView::setupExternSyncProfiles() 871void CalendarView::setupExternSyncProfiles()
872{ 872{
873 Event* lse; 873 Event* lse;
874 mExternLastSyncEvent.clear(); 874 mExternLastSyncEvent.clear();
875 int i; 875 int i;
876 for ( i = 0; i < KOPrefs::instance()->mExternSyncProfiles.count(); ++i ) { 876 for ( i = 0; i < KOPrefs::instance()->mExternSyncProfiles.count(); ++i ) {
877 lse = mCalendar->event( "last-syncEvent-"+ KOPrefs::instance()->mExternSyncProfiles[i] ); 877 lse = mCalendar->event( "last-syncEvent-"+ KOPrefs::instance()->mExternSyncProfiles[i] );
878 if ( lse ) 878 if ( lse )
879 mExternLastSyncEvent.append( lse ); 879 mExternLastSyncEvent.append( lse );
880 else 880 else
881 qDebug("Last Sync event not found for %s ", KOPrefs::instance()->mExternSyncProfiles[i].latin1()); 881 qDebug("Last Sync event not found for %s ", KOPrefs::instance()->mExternSyncProfiles[i].latin1());
882 } 882 }
883 883
884} 884}
885// we check, if the to delete event has a id for a profile 885// we check, if the to delete event has a id for a profile
886// if yes, we set this id in the profile to delete 886// if yes, we set this id in the profile to delete
887void CalendarView::checkExternSyncEvent( QPtrList<Event> lastSync , Incidence* toDelete ) 887void CalendarView::checkExternSyncEvent( QPtrList<Event> lastSync , Incidence* toDelete )
888{ 888{
889 if ( ! lastSync.count() == 0 ) 889 if ( ! lastSync.count() == 0 )
890 return; 890 return;
891 if ( toDelete->type() == "Journal" ) 891 if ( toDelete->type() == "Journal" )
892 return; 892 return;
893 893
894 Event* eve = lastSync.first(); 894 Event* eve = lastSync.first();
895 895
896 while ( eve ) { 896 while ( eve ) {
897 int id = toDelete->getID( eve->uid().mid( 15 ) ); // this is the sync profile name 897 int id = toDelete->getID( eve->uid().mid( 15 ) ); // this is the sync profile name
898 if ( id >= 0 ) { 898 if ( id >= 0 ) {
899 QString des = eve->description(); 899 QString des = eve->description();
900 QString pref = "e"; 900 QString pref = "e";
901 if ( toDelete->type() == "Todo" ) 901 if ( toDelete->type() == "Todo" )
902 pref = "t"; 902 pref = "t";
903 des += pref+ QString::number ( id ) + ","; 903 des += pref+ QString::number ( id ) + ",";
904 eve->setReadOnly( false ); 904 eve->setReadOnly( false );
905 eve->setDescription( des ); 905 eve->setDescription( des );
906 eve->setReadOnly( true ); 906 eve->setReadOnly( true );
907 } 907 }
908 eve = lastSync.next(); 908 eve = lastSync.next();
909 } 909 }
910 910
911} 911}
912void CalendarView::checkExternalId( Incidence * inc )
913{
914 QPtrList<Event> lastSync = mCalendar->getExternLastSyncEvents() ;
915 checkExternSyncEvent( lastSync, inc );
916
917}
912bool CalendarView::synchronizeCalendar( Calendar* local, Calendar* remote, int mode ) 918bool CalendarView::synchronizeCalendar( Calendar* local, Calendar* remote, int mode )
913{ 919{
914 bool syncOK = true; 920 bool syncOK = true;
915 int addedEvent = 0; 921 int addedEvent = 0;
916 int addedEventR = 0; 922 int addedEventR = 0;
917 int deletedEventR = 0; 923 int deletedEventR = 0;
918 int deletedEventL = 0; 924 int deletedEventL = 0;
919 int changedLocal = 0; 925 int changedLocal = 0;
920 int changedRemote = 0; 926 int changedRemote = 0;
921 //QPtrList<Event> el = local->rawEvents(); 927 //QPtrList<Event> el = local->rawEvents();
922 Event* eventR; 928 Event* eventR;
923 QString uid; 929 QString uid;
924 int take; 930 int take;
925 Event* eventL; 931 Event* eventL;
926 Event* eventRSync; 932 Event* eventRSync;
927 Event* eventLSync; 933 Event* eventLSync;
928 QPtrList<Event> eventRSyncSharp = remote->getExternLastSyncEvents(); 934 QPtrList<Event> eventRSyncSharp = remote->getExternLastSyncEvents();
929 QPtrList<Event> eventLSyncSharp = local->getExternLastSyncEvents(); 935 QPtrList<Event> eventLSyncSharp = local->getExternLastSyncEvents();
930 bool fullDateRange = false; 936 bool fullDateRange = false;
931 mLastCalendarSync = QDateTime::currentDateTime(); 937 mLastCalendarSync = QDateTime::currentDateTime();
932 QDateTime modifiedCalendar = mLastCalendarSync;; 938 QDateTime modifiedCalendar = mLastCalendarSync;;
933 eventR = remote->event("last-syncEvent-"+mCurrentSyncName ); 939 eventR = remote->event("last-syncEvent-"+mCurrentSyncName );
934 if ( eventR ) { 940 if ( eventR ) {
935 eventRSync = (Event*) eventR->clone(); 941 eventRSync = (Event*) eventR->clone();
936 remote->deleteEvent(eventR ); 942 remote->deleteEvent(eventR );
937 943
938 } else { 944 } else {
939 fullDateRange = true; 945 fullDateRange = true;
940 eventRSync = new Event(); 946 eventRSync = new Event();
941 eventRSync->setSummary(mCurrentSyncName + i18n(" - sync event")); 947 eventRSync->setSummary(mCurrentSyncName + i18n(" - sync event"));
942 eventRSync->setUid("last-syncEvent-"+mCurrentSyncName ); 948 eventRSync->setUid("last-syncEvent-"+mCurrentSyncName );
943 eventRSync->setDtStart( mLastCalendarSync ); 949 eventRSync->setDtStart( mLastCalendarSync );
944 eventRSync->setDtEnd( mLastCalendarSync.addSecs( 7200 ) ); 950 eventRSync->setDtEnd( mLastCalendarSync.addSecs( 7200 ) );
945 eventRSync->setCategories( i18n("SyncEvent") ); 951 eventRSync->setCategories( i18n("SyncEvent") );
946 } 952 }
947 eventLSync = getLastSyncEvent(); 953 eventLSync = getLastSyncEvent();
948 if ( eventLSync->dtStart() == mLastCalendarSync ) 954 if ( eventLSync->dtStart() == mLastCalendarSync )
949 fullDateRange = true; 955 fullDateRange = true;
950 956
951 if ( ! fullDateRange ) { 957 if ( ! fullDateRange ) {
952 if ( eventLSync->dtStart() != eventRSync->dtStart() ) { 958 if ( eventLSync->dtStart() != eventRSync->dtStart() ) {
953 959
954 // qDebug("set fulldate to true %s %s" ,eventLSync->dtStart().toString().latin1(), eventRSync->dtStart().toString().latin1() ); 960 // qDebug("set fulldate to true %s %s" ,eventLSync->dtStart().toString().latin1(), eventRSync->dtStart().toString().latin1() );
955 //qDebug("%d %d %d %d ", eventLSync->dtStart().time().second(), eventLSync->dtStart().time().msec() , eventRSync->dtStart().time().second(), eventRSync->dtStart().time().msec()); 961 //qDebug("%d %d %d %d ", eventLSync->dtStart().time().second(), eventLSync->dtStart().time().msec() , eventRSync->dtStart().time().second(), eventRSync->dtStart().time().msec());
956 fullDateRange = true; 962 fullDateRange = true;
957 } 963 }
958 } 964 }
959 if ( fullDateRange ) 965 if ( fullDateRange )
960 mLastCalendarSync = QDateTime::currentDateTime().addDays( -100*365); 966 mLastCalendarSync = QDateTime::currentDateTime().addDays( -100*365);
961 else 967 else
962 mLastCalendarSync = eventLSync->dtStart(); 968 mLastCalendarSync = eventLSync->dtStart();
963 // for resyncing if own file has changed 969 // for resyncing if own file has changed
964 if ( mCurrentSyncDevice == "deleteaftersync" ) { 970 if ( mCurrentSyncDevice == "deleteaftersync" ) {
965 mLastCalendarSync = loadedFileVersion; 971 mLastCalendarSync = loadedFileVersion;
966 qDebug("setting mLastCalendarSync "); 972 qDebug("setting mLastCalendarSync ");
967 } 973 }
968 //qDebug("*************************** "); 974 //qDebug("*************************** ");
969 qDebug("mLastCalendarSync %s ",mLastCalendarSync.toString().latin1() ); 975 qDebug("mLastCalendarSync %s ",mLastCalendarSync.toString().latin1() );
970 QPtrList<Incidence> er = remote->rawIncidences(); 976 QPtrList<Incidence> er = remote->rawIncidences();
971 Incidence* inR = er.first(); 977 Incidence* inR = er.first();
972 Incidence* inL; 978 Incidence* inL;
973 QProgressBar bar( er.count(),0 ); 979 QProgressBar bar( er.count(),0 );
974 bar.setCaption (i18n("Syncing - close to abort!") ); 980 bar.setCaption (i18n("Syncing - close to abort!") );
975 981
976 int w = 300; 982 int w = 300;
977 if ( QApplication::desktop()->width() < 320 ) 983 if ( QApplication::desktop()->width() < 320 )
978 w = 220; 984 w = 220;
979 int h = bar.sizeHint().height() ; 985 int h = bar.sizeHint().height() ;
980 int dw = QApplication::desktop()->width(); 986 int dw = QApplication::desktop()->width();
981 int dh = QApplication::desktop()->height(); 987 int dh = QApplication::desktop()->height();
982 bar.setGeometry( (dw-w)/2, (dh - h )/2 ,w,h ); 988 bar.setGeometry( (dw-w)/2, (dh - h )/2 ,w,h );
983 bar.show(); 989 bar.show();
984 int modulo = (er.count()/10)+1; 990 int modulo = (er.count()/10)+1;
985 int incCounter = 0; 991 int incCounter = 0;
986 while ( inR ) { 992 while ( inR ) {
987 if ( ! bar.isVisible() ) 993 if ( ! bar.isVisible() )
988 return false; 994 return false;
989 if ( incCounter % modulo == 0 ) 995 if ( incCounter % modulo == 0 )
990 bar.setProgress( incCounter ); 996 bar.setProgress( incCounter );
991 ++incCounter; 997 ++incCounter;
992 uid = inR->uid(); 998 uid = inR->uid();
993 bool skipIncidence = false; 999 bool skipIncidence = false;
994 if ( uid.left(15) == QString("last-syncEvent-") ) 1000 if ( uid.left(15) == QString("last-syncEvent-") )
995 skipIncidence = true; 1001 skipIncidence = true;
996 1002
997 qApp->processEvents(); 1003 qApp->processEvents();
998 if ( !skipIncidence ) { 1004 if ( !skipIncidence ) {
999 inL = local->incidence( uid ); 1005 inL = local->incidence( uid );
1000 if ( inL ) { // maybe conflict - same uid in both calendars 1006 if ( inL ) { // maybe conflict - same uid in both calendars
1001 int maxrev = inL->revision(); 1007 int maxrev = inL->revision();
1002 if ( maxrev < inR->revision() ) 1008 if ( maxrev < inR->revision() )
1003 maxrev = inR->revision(); 1009 maxrev = inR->revision();
1004 if ( (take = takeEvent( inL, inR, mode, fullDateRange )) > 0 ) { 1010 if ( (take = takeEvent( inL, inR, mode, fullDateRange )) > 0 ) {
1005 //qDebug("take %d %s ", take, inL->summary().latin1()); 1011 //qDebug("take %d %s ", take, inL->summary().latin1());
1006 if ( take == 3 ) 1012 if ( take == 3 )
1007 return false; 1013 return false;
1008 if ( take == 1 ) {// take local 1014 if ( take == 1 ) {// take local
1009 inL->setZaurusUid( inR->zaurusUid() ); 1015 inL->setZaurusUid( inR->zaurusUid() );
1010 remote->deleteIncidence( inR ); 1016 remote->deleteIncidence( inR );
1011 if ( inL->revision() < maxrev ) 1017 if ( inL->revision() < maxrev )
1012 inL->setRevision( maxrev ); 1018 inL->setRevision( maxrev );
1013 remote->addIncidence( inL->clone() ); 1019 remote->addIncidence( inL->clone() );
1014 ++changedRemote; 1020 ++changedRemote;
1015 } else { 1021 } else {
1016 if ( inR->revision() < maxrev ) 1022 if ( inR->revision() < maxrev )
1017 inR->setRevision( maxrev ); 1023 inR->setRevision( maxrev );
1018 local->deleteIncidence( inL ); 1024 local->deleteIncidence( inL );
1019 local->addIncidence( inR->clone() ); 1025 local->addIncidence( inR->clone() );
1020 ++changedLocal; 1026 ++changedLocal;
1021 } 1027 }
1022 } 1028 }
1023 } else { // no conflict 1029 } else { // no conflict
1024 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 1030 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
1025 QString des = eventLSync->description(); 1031 QString des = eventLSync->description();
1026 QString pref = "e"; 1032 QString pref = "e";
1027 if ( inR->type() == "Todo" ) 1033 if ( inR->type() == "Todo" )
1028 pref = "t"; 1034 pref = "t";
1029 if ( des.find(pref+QString::number( inR->zaurusId() ) +"," ) >= 0 && mode != 5) { // delete it 1035 if ( des.find(pref+QString::number( inR->getID(mCurrentSyncDevice) ) +"," ) >= 0 && mode != 5) { // delete it
1030 inR->setTempSyncStat( SYNC_TEMPSTATE_DELETE ); 1036 inR->setTempSyncStat( SYNC_TEMPSTATE_DELETE );
1031 //remote->deleteIncidence( inR ); 1037 //remote->deleteIncidence( inR );
1032 ++deletedEventR; 1038 ++deletedEventR;
1033 } else { 1039 } else {
1034 inR->setLastModified( modifiedCalendar ); 1040 inR->setLastModified( modifiedCalendar );
1035 local->addIncidence( inR->clone() ); 1041 local->addIncidence( inR->clone() );
1036 ++addedEvent; 1042 ++addedEvent;
1037 } 1043 }
1038 } else { 1044 } else {
1039 if ( inR->lastModified() > mLastCalendarSync || mode == 5 ) { 1045 if ( inR->lastModified() > mLastCalendarSync || mode == 5 ) {
1040 inR->setLastModified( modifiedCalendar ); 1046 inR->setLastModified( modifiedCalendar );
1041 local->addIncidence( inR->clone() ); 1047 local->addIncidence( inR->clone() );
1042 ++addedEvent; 1048 ++addedEvent;
1043 } else { 1049 } else {
1044 checkExternSyncEvent(eventRSyncSharp, inR); 1050 checkExternSyncEvent(eventRSyncSharp, inR);
1045 remote->deleteIncidence( inR ); 1051 remote->deleteIncidence( inR );
1046 ++deletedEventR; 1052 ++deletedEventR;
1047 } 1053 }
1048 } 1054 }
1049 } 1055 }
1050 } 1056 }
1051 inR = er.next(); 1057 inR = er.next();
1052 } 1058 }
1053 QPtrList<Incidence> el = local->rawIncidences(); 1059 QPtrList<Incidence> el = local->rawIncidences();
1054 inL = el.first(); 1060 inL = el.first();
1055 modulo = (el.count()/10)+1; 1061 modulo = (el.count()/10)+1;
1056 bar.setCaption (i18n("Add / remove events") ); 1062 bar.setCaption (i18n("Add / remove events") );
1057 bar.setTotalSteps ( el.count() ) ; 1063 bar.setTotalSteps ( el.count() ) ;
1058 bar.show(); 1064 bar.show();
1059 incCounter = 0; 1065 incCounter = 0;
1060 1066
1061 while ( inL ) { 1067 while ( inL ) {
1062 1068
1063 qApp->processEvents(); 1069 qApp->processEvents();
1064 if ( ! bar.isVisible() ) 1070 if ( ! bar.isVisible() )
1065 return false; 1071 return false;
1066 if ( incCounter % modulo == 0 ) 1072 if ( incCounter % modulo == 0 )
1067 bar.setProgress( incCounter ); 1073 bar.setProgress( incCounter );
1068 ++incCounter; 1074 ++incCounter;
1069 uid = inL->uid(); 1075 uid = inL->uid();
1070 bool skipIncidence = false; 1076 bool skipIncidence = false;
1071 if ( uid.left(15) == QString("last-syncEvent-") ) 1077 if ( uid.left(15) == QString("last-syncEvent-") )
1072 skipIncidence = true; 1078 skipIncidence = true;
1073 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL && inL->type() == "Journal" ) 1079 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL && inL->type() == "Journal" )
1074 skipIncidence = true; 1080 skipIncidence = true;
1075 if ( !skipIncidence ) { 1081 if ( !skipIncidence ) {
1076 inR = remote->incidence( uid ); 1082 inR = remote->incidence( uid );
1077 if ( ! inR ) { 1083 if ( ! inR ) {
1078 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 1084 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
1079 if ( inL->zaurusId() >= 0 && mode != 4 ) { 1085 if ( inL->getID(mCurrentSyncDevice) >= 0 && mode != 4 ) {
1080 local->deleteIncidence( inL ); 1086 local->deleteIncidence( inL );
1081 ++deletedEventL; 1087 ++deletedEventL;
1082 } else { 1088 } else {
1083 if ( ! KOPrefs::instance()->mWriteBackExistingOnly ) { 1089 if ( ! KOPrefs::instance()->mWriteBackExistingOnly ) {
1084 inL->setZaurusId( -1 ); 1090 inL->setID(mCurrentSyncDevice, -1 );
1085 ++addedEventR; 1091 ++addedEventR;
1086 inL->setLastModified( modifiedCalendar ); 1092 inL->setLastModified( modifiedCalendar );
1087 remote->addIncidence( inL->clone() ); 1093 remote->addIncidence( inL->clone() );
1088 } 1094 }
1089 } 1095 }
1090 } else { 1096 } else {
1091 if ( inL->lastModified() < mLastCalendarSync && mode != 4 ) { 1097 if ( inL->lastModified() < mLastCalendarSync && mode != 4 ) {
1092 checkExternSyncEvent(eventLSyncSharp, inL); 1098 checkExternSyncEvent(eventLSyncSharp, inL);
1093 local->deleteIncidence( inL ); 1099 local->deleteIncidence( inL );
1094 ++deletedEventL; 1100 ++deletedEventL;
1095 } else { 1101 } else {
1096 if ( ! KOPrefs::instance()->mWriteBackExistingOnly ) { 1102 if ( ! KOPrefs::instance()->mWriteBackExistingOnly ) {
1097 ++addedEventR; 1103 ++addedEventR;
1098 inL->setLastModified( modifiedCalendar ); 1104 inL->setLastModified( modifiedCalendar );
1099 remote->addIncidence( inL->clone() ); 1105 remote->addIncidence( inL->clone() );
1100 } 1106 }
1101 } 1107 }
1102 } 1108 }
1103 } 1109 }
1104 } 1110 }
1105 inL = el.next(); 1111 inL = el.next();
1106 } 1112 }
1107 1113
1108 bar.hide(); 1114 bar.hide();
1109 mLastCalendarSync = QDateTime::currentDateTime().addSecs( 1 ); 1115 mLastCalendarSync = QDateTime::currentDateTime().addSecs( 1 );
1110 eventLSync->setReadOnly( false ); 1116 eventLSync->setReadOnly( false );
1111 eventLSync->setDtStart( mLastCalendarSync ); 1117 eventLSync->setDtStart( mLastCalendarSync );
1112 eventRSync->setDtStart( mLastCalendarSync ); 1118 eventRSync->setDtStart( mLastCalendarSync );
1113 eventLSync->setDtEnd( mLastCalendarSync.addSecs( 3600 ) ); 1119 eventLSync->setDtEnd( mLastCalendarSync.addSecs( 3600 ) );
1114 eventRSync->setDtEnd( mLastCalendarSync.addSecs( 3600 ) ); 1120 eventRSync->setDtEnd( mLastCalendarSync.addSecs( 3600 ) );
1115 eventRSync->setLocation( i18n("Remote from: ")+mCurrentSyncName ) ; 1121 eventRSync->setLocation( i18n("Remote from: ")+mCurrentSyncName ) ;
1116 eventLSync->setLocation(i18n("Local from: ") + mCurrentSyncName ); 1122 eventLSync->setLocation(i18n("Local from: ") + mCurrentSyncName );
1117 eventLSync->setReadOnly( true ); 1123 eventLSync->setReadOnly( true );
1118 if ( mGlobalSyncMode == SYNC_MODE_NORMAL) 1124 if ( mGlobalSyncMode == SYNC_MODE_NORMAL)
1119 remote->addEvent( eventRSync ); 1125 remote->addEvent( eventRSync );
1120 QString mes; 1126 QString mes;
1121 mes .sprintf( i18n("Synchronization summary:\n\n %d items added to local\n %d items added to remote\n %d items updated on local\n %d items updated on remote\n %d items deleted on local\n %d items deleted on remote\n"),addedEvent, addedEventR, changedLocal, changedRemote, deletedEventL, deletedEventR ); 1127 mes .sprintf( i18n("Synchronization summary:\n\n %d items added to local\n %d items added to remote\n %d items updated on local\n %d items updated on remote\n %d items deleted on local\n %d items deleted on remote\n"),addedEvent, addedEventR, changedLocal, changedRemote, deletedEventL, deletedEventR );
1122 if ( KOPrefs::instance()->mShowSyncSummary ) { 1128 if ( KOPrefs::instance()->mShowSyncSummary ) {
1123 KMessageBox::information(this, mes, i18n("KO/Pi Synchronization") ); 1129 KMessageBox::information(this, mes, i18n("KO/Pi Synchronization") );
1124 } 1130 }
1125 qDebug( mes ); 1131 qDebug( mes );
1126 mCalendar->checkAlarmForIncidence( 0, true ); 1132 mCalendar->checkAlarmForIncidence( 0, true );
1127 return syncOK; 1133 return syncOK;
1128} 1134}
1129 1135
1130void CalendarView::setSyncDevice( QString s ) 1136void CalendarView::setSyncDevice( QString s )
1131{ 1137{
1132 mCurrentSyncDevice= s; 1138 mCurrentSyncDevice= s;
1133} 1139}
1134void CalendarView::setSyncName( QString s ) 1140void CalendarView::setSyncName( QString s )
1135{ 1141{
1136 mCurrentSyncName= s; 1142 mCurrentSyncName= s;
1137} 1143}
1138bool CalendarView::syncCalendar(QString filename, int mode) 1144bool CalendarView::syncCalendar(QString filename, int mode)
1139{ 1145{
1140 mGlobalSyncMode = SYNC_MODE_NORMAL; 1146 mGlobalSyncMode = SYNC_MODE_NORMAL;
1141 CalendarLocal* calendar = new CalendarLocal(); 1147 CalendarLocal* calendar = new CalendarLocal();
1142 calendar->setTimeZoneId(KOPrefs::instance()->mTimeZoneId); 1148 calendar->setTimeZoneId(KOPrefs::instance()->mTimeZoneId);
1143 FileStorage* storage = new FileStorage( calendar ); 1149 FileStorage* storage = new FileStorage( calendar );
1144 bool syncOK = false; 1150 bool syncOK = false;
1145 storage->setFileName( filename ); 1151 storage->setFileName( filename );
1146 // qDebug("loading ... "); 1152 // qDebug("loading ... ");
1147 if ( storage->load(KOPrefs::instance()->mUseQuicksave) ) { 1153 if ( storage->load(KOPrefs::instance()->mUseQuicksave) ) {
1148 getEventViewerDialog()->setSyncMode( true ); 1154 getEventViewerDialog()->setSyncMode( true );
1149 syncOK = synchronizeCalendar( mCalendar, calendar, mode ); 1155 syncOK = synchronizeCalendar( mCalendar, calendar, mode );
1150 getEventViewerDialog()->setSyncMode( false ); 1156 getEventViewerDialog()->setSyncMode( false );
1151 if ( syncOK ) { 1157 if ( syncOK ) {
1152 if ( KOPrefs::instance()->mWriteBackFile ) 1158 if ( KOPrefs::instance()->mWriteBackFile )
1153 { 1159 {
1154 storage->setSaveFormat( new ICalFormat( KOPrefs::instance()->mUseQuicksave) ); 1160 storage->setSaveFormat( new ICalFormat( KOPrefs::instance()->mUseQuicksave) );
1155 storage->save(); 1161 storage->save();
1156 } 1162 }
1157 } 1163 }
1158 setModified( true ); 1164 setModified( true );
1159 } 1165 }
1160 delete storage; 1166 delete storage;
1161 delete calendar; 1167 delete calendar;
1162 if ( syncOK ) 1168 if ( syncOK )
1163 updateView(); 1169 updateView();
1164 return syncOK; 1170 return syncOK;
1165} 1171}
1166void CalendarView::syncSharp() 1172void CalendarView::syncSharp()
1167{ 1173{
1168#ifndef DESKTOP_VERSION 1174#ifndef DESKTOP_VERSION
1169 mGlobalSyncMode = SYNC_MODE_EXTERNAL; 1175 mGlobalSyncMode = SYNC_MODE_EXTERNAL;
1170 //mCurrentSyncDevice = "sharp-DTM"; 1176 //mCurrentSyncDevice = "sharp-DTM";
1171 if ( KOPrefs::instance()->mAskForPreferences ) 1177 if ( KOPrefs::instance()->mAskForPreferences )
1172 edit_sync_options(); 1178 edit_sync_options();
1173 qApp->processEvents(); 1179 qApp->processEvents();
1174 CalendarLocal* calendar = new CalendarLocal(); 1180 CalendarLocal* calendar = new CalendarLocal();
1175 calendar->setTimeZoneId(KOPrefs::instance()->mTimeZoneId); 1181 calendar->setTimeZoneId(KOPrefs::instance()->mTimeZoneId);
1176 bool syncOK = false; 1182 bool syncOK = false;
1177 SharpFormat sharpFormat; 1183 SharpFormat sharpFormat;
1178 if ( sharpFormat.load( calendar, mCalendar ) ) { 1184 if ( sharpFormat.load( calendar, mCalendar ) ) {
1179 getEventViewerDialog()->setSyncMode( true ); 1185 getEventViewerDialog()->setSyncMode( true );
1180 syncOK = synchronizeCalendar( mCalendar, calendar, KOPrefs::instance()->mSyncAlgoPrefs ); 1186 syncOK = synchronizeCalendar( mCalendar, calendar, KOPrefs::instance()->mSyncAlgoPrefs );
1181 getEventViewerDialog()->setSyncMode( false ); 1187 getEventViewerDialog()->setSyncMode( false );
1182 qApp->processEvents(); 1188 qApp->processEvents();
1183 if ( syncOK ) { 1189 if ( syncOK ) {
1184 if ( KOPrefs::instance()->mWriteBackFile ) 1190 if ( KOPrefs::instance()->mWriteBackFile )
1185 { 1191 {
1186 QPtrList<Incidence> iL = mCalendar->rawIncidences(); 1192 QPtrList<Incidence> iL = mCalendar->rawIncidences();
1187 Incidence* inc = iL.first(); 1193 Incidence* inc = iL.first();
1188 /* obsolete 1194 /* obsolete
1189 while ( inc ) { 1195 while ( inc ) {
1190 inc->setZaurusStat( inc->revision () ); 1196 inc->setZaurusStat( inc->revision () );
1191 inc = iL.next(); 1197 inc = iL.next();
1192 } 1198 }
1193 */ 1199 */
1194 // pending: clean last sync event description 1200 // pending: clean last sync event description
1195 sharpFormat.save(calendar); 1201 sharpFormat.save(calendar);
1196 iL = calendar->rawIncidences(); 1202 iL = calendar->rawIncidences();
1197 inc = iL.first(); 1203 inc = iL.first();
1198 Incidence* loc; 1204 Incidence* loc;
1199 while ( inc ) { 1205 while ( inc ) {
1200 if ( inc->tempSyncStat() == SYNC_TEMPSTATE_NEW_ID ) { 1206 if ( inc->tempSyncStat() == SYNC_TEMPSTATE_NEW_ID ) {
1201 loc = mCalendar->incidence(inc->uid() ); 1207 loc = mCalendar->incidence(inc->uid() );
1202 if ( loc ) { 1208 if ( loc ) {
1203 loc->setZaurusId( inc->zaurusId() ); 1209 loc->setID(mCurrentSyncDevice, inc->getID(mCurrentSyncDevice) );
1204 loc->setZaurusUid( inc->zaurusUid() ); 1210 loc->setZaurusUid( inc->zaurusUid() );
1205 } 1211 }
1206 } 1212 }
1207 inc = iL.next(); 1213 inc = iL.next();
1208 } 1214 }
1209 Incidence* lse = getLastSyncEvent(); 1215 Incidence* lse = getLastSyncEvent();
1210 if ( lse ) { 1216 if ( lse ) {
1211 lse->setReadOnly( false ); 1217 lse->setReadOnly( false );
1212 lse->setDescription( "" ); 1218 lse->setDescription( "" );
1213 lse->setReadOnly( true ); 1219 lse->setReadOnly( true );
1214 } 1220 }
1215 } 1221 }
1216 } 1222 }
1217 setModified( true ); 1223 setModified( true );
1218 } else { 1224 } else {
1219 QString question = i18n("Sorry, the database access\ncommand failed!\n\nNothing synced!\n") ; 1225 QString question = i18n("Sorry, the database access\ncommand failed!\n\nNothing synced!\n") ;
1220 QMessageBox::information( 0, i18n("KO/Pi Import - ERROR"), 1226 QMessageBox::information( 0, i18n("KO/Pi Import - ERROR"),
1221 question, i18n("Ok")) ; 1227 question, i18n("Ok")) ;
1222 1228
1223 } 1229 }
1224 delete calendar; 1230 delete calendar;
1225 updateView(); 1231 updateView();
1226 return ;//syncOK; 1232 return ;//syncOK;
1227#endif 1233#endif
1228} 1234}
1229 1235
1230 1236
1231#include <kabc/stdaddressbook.h> 1237#include <kabc/stdaddressbook.h>
1232bool CalendarView::importBday() 1238bool CalendarView::importBday()
1233{ 1239{
1234 KABC::StdAddressBook* AddressBook = KABC::StdAddressBook::self( true ); 1240 KABC::StdAddressBook* AddressBook = KABC::StdAddressBook::self( true );
1235 KABC::AddressBook::Iterator it; 1241 KABC::AddressBook::Iterator it;
1236 int count = 0; 1242 int count = 0;
1237 for( it = AddressBook->begin(); it != AddressBook->end(); ++it ) { 1243 for( it = AddressBook->begin(); it != AddressBook->end(); ++it ) {
1238 ++count; 1244 ++count;
1239 } 1245 }
1240 QProgressBar bar(count,0 ); 1246 QProgressBar bar(count,0 );
1241 int w = 300; 1247 int w = 300;
1242 if ( QApplication::desktop()->width() < 320 ) 1248 if ( QApplication::desktop()->width() < 320 )
1243 w = 220; 1249 w = 220;
1244 int h = bar.sizeHint().height() ; 1250 int h = bar.sizeHint().height() ;
1245 int dw = QApplication::desktop()->width(); 1251 int dw = QApplication::desktop()->width();
1246 int dh = QApplication::desktop()->height(); 1252 int dh = QApplication::desktop()->height();
1247 bar.setGeometry( (dw-w)/2, (dh - h )/2 ,w,h ); 1253 bar.setGeometry( (dw-w)/2, (dh - h )/2 ,w,h );
1248 bar.show(); 1254 bar.show();
1249 bar.setCaption (i18n("Reading addressbook - close to abort!") ); 1255 bar.setCaption (i18n("Reading addressbook - close to abort!") );
1250 qApp->processEvents(); 1256 qApp->processEvents();
1251 count = 0; 1257 count = 0;
1252 int addCount = 0; 1258 int addCount = 0;
1253 KCal::Attendee* a = 0; 1259 KCal::Attendee* a = 0;
1254 for( it = AddressBook->begin(); it != AddressBook->end(); ++it ) { 1260 for( it = AddressBook->begin(); it != AddressBook->end(); ++it ) {
1255 if ( ! bar.isVisible() ) 1261 if ( ! bar.isVisible() )
1256 return false; 1262 return false;
1257 bar.setProgress( count++ ); 1263 bar.setProgress( count++ );
1258 qApp->processEvents(); 1264 qApp->processEvents();
1259 //qDebug("add BDay %s %s", (*it).realName().latin1(),(*it).birthday().date().toString().latin1() ); 1265 //qDebug("add BDay %s %s", (*it).realName().latin1(),(*it).birthday().date().toString().latin1() );
1260 if ( (*it).birthday().date().isValid() ){ 1266 if ( (*it).birthday().date().isValid() ){
1261 a = new KCal::Attendee( (*it).realName(), (*it).preferredEmail(),false,KCal::Attendee::NeedsAction,KCal::Attendee::ReqParticipant,(*it).uid()) ; 1267 a = new KCal::Attendee( (*it).realName(), (*it).preferredEmail(),false,KCal::Attendee::NeedsAction,KCal::Attendee::ReqParticipant,(*it).uid()) ;
1262 if ( addAnniversary( (*it).birthday().date(), (*it).assembledName(), a, true ) ) 1268 if ( addAnniversary( (*it).birthday().date(), (*it).assembledName(), a, true ) )
1263 ++addCount; 1269 ++addCount;
1264 } 1270 }
1265 QDate anni = KGlobal::locale()->readDate( (*it).custom("KADDRESSBOOK", "X-Anniversary" ), "%Y-%m-%d"); 1271 QDate anni = KGlobal::locale()->readDate( (*it).custom("KADDRESSBOOK", "X-Anniversary" ), "%Y-%m-%d");
1266 if ( anni.isValid() ){ 1272 if ( anni.isValid() ){
1267 a = new KCal::Attendee( (*it).realName(), (*it).preferredEmail(),false,KCal::Attendee::NeedsAction,KCal::Attendee::ReqParticipant,(*it).uid()) ; 1273 a = new KCal::Attendee( (*it).realName(), (*it).preferredEmail(),false,KCal::Attendee::NeedsAction,KCal::Attendee::ReqParticipant,(*it).uid()) ;
1268 if ( addAnniversary( anni, (*it).assembledName(), a, false ) ) 1274 if ( addAnniversary( anni, (*it).assembledName(), a, false ) )
1269 ++addCount; 1275 ++addCount;
1270 } 1276 }
1271 } 1277 }
1272 updateView(); 1278 updateView();
1273 topLevelWidget()->setCaption(QString::number( addCount )+ i18n(" birthdays/anniversaries added!")); 1279 topLevelWidget()->setCaption(QString::number( addCount )+ i18n(" birthdays/anniversaries added!"));
1274 return true; 1280 return true;
1275} 1281}
1276 1282
1277bool CalendarView::addAnniversary( QDate date, QString name, KCal::Attendee* a, bool birthday) 1283bool CalendarView::addAnniversary( QDate date, QString name, KCal::Attendee* a, bool birthday)
1278{ 1284{
1279 //qDebug("addAnni "); 1285 //qDebug("addAnni ");
1280 Event * ev = new Event(); 1286 Event * ev = new Event();
1281 if ( a ) { 1287 if ( a ) {
1282 ev->addAttendee( a ); 1288 ev->addAttendee( a );
1283 } 1289 }
1284 QString kind; 1290 QString kind;
1285 if ( birthday ) 1291 if ( birthday )
1286 kind = i18n( "Birthday" ); 1292 kind = i18n( "Birthday" );
1287 else 1293 else
1288 kind = i18n( "Anniversary" ); 1294 kind = i18n( "Anniversary" );
1289 ev->setSummary( name + " - " + kind ); 1295 ev->setSummary( name + " - " + kind );
1290 ev->setOrganizer( "nobody@nowhere" ); 1296 ev->setOrganizer( "nobody@nowhere" );
1291 ev->setCategories( kind ); 1297 ev->setCategories( kind );
1292 ev->setDtStart( QDateTime(date) ); 1298 ev->setDtStart( QDateTime(date) );
1293 ev->setDtEnd( QDateTime(date) ); 1299 ev->setDtEnd( QDateTime(date) );
1294 ev->setFloats( true ); 1300 ev->setFloats( true );
1295 Recurrence * rec = ev->recurrence(); 1301 Recurrence * rec = ev->recurrence();
1296 rec->setYearly(Recurrence::rYearlyMonth,1,-1); 1302 rec->setYearly(Recurrence::rYearlyMonth,1,-1);
1297 rec->addYearlyNum( date.month() ); 1303 rec->addYearlyNum( date.month() );
1298 if ( !mCalendar->addAnniversaryNoDup( ev ) ) { 1304 if ( !mCalendar->addAnniversaryNoDup( ev ) ) {
1299 delete ev; 1305 delete ev;
1300 return false; 1306 return false;
1301 } 1307 }
1302 return true; 1308 return true;
1303 1309
1304} 1310}
1305bool CalendarView::importQtopia( const QString &categories, 1311bool CalendarView::importQtopia( const QString &categories,
1306 const QString &datebook, 1312 const QString &datebook,
1307 const QString &todolist ) 1313 const QString &todolist )
1308{ 1314{
1309 1315
1310 QtopiaFormat qtopiaFormat; 1316 QtopiaFormat qtopiaFormat;
1311 qtopiaFormat.setCategoriesList ( &(KOPrefs::instance()->mCustomCategories)); 1317 qtopiaFormat.setCategoriesList ( &(KOPrefs::instance()->mCustomCategories));
1312 if ( !categories.isEmpty() ) qtopiaFormat.load( mCalendar, categories ); 1318 if ( !categories.isEmpty() ) qtopiaFormat.load( mCalendar, categories );
1313 if ( !datebook.isEmpty() ) qtopiaFormat.load( mCalendar, datebook ); 1319 if ( !datebook.isEmpty() ) qtopiaFormat.load( mCalendar, datebook );
1314 if ( !todolist.isEmpty() ) qtopiaFormat.load( mCalendar, todolist ); 1320 if ( !todolist.isEmpty() ) qtopiaFormat.load( mCalendar, todolist );
1315 1321
1316 updateView(); 1322 updateView();
1317 return true; 1323 return true;
1318 1324
1319#if 0 1325#if 0
1320 mGlobalSyncMode = SYNC_MODE_QTOPIA; 1326 mGlobalSyncMode = SYNC_MODE_QTOPIA;
1321 mCurrentSyncDevice = "qtopia-XML"; 1327 mCurrentSyncDevice = "qtopia-XML";
1322 if ( KOPrefs::instance()->mAskForPreferences ) 1328 if ( KOPrefs::instance()->mAskForPreferences )
1323 edit_sync_options(); 1329 edit_sync_options();
1324 qApp->processEvents(); 1330 qApp->processEvents();
1325 CalendarLocal* calendar = new CalendarLocal(); 1331 CalendarLocal* calendar = new CalendarLocal();
1326 calendar->setTimeZoneId(KOPrefs::instance()->mTimeZoneId); 1332 calendar->setTimeZoneId(KOPrefs::instance()->mTimeZoneId);
1327 bool syncOK = false; 1333 bool syncOK = false;
1328 QtopiaFormat qtopiaFormat; 1334 QtopiaFormat qtopiaFormat;
1329 qtopiaFormat.setCategoriesList ( &(KOPrefs::instance()->mCustomCategories)); 1335 qtopiaFormat.setCategoriesList ( &(KOPrefs::instance()->mCustomCategories));
1330 bool loadOk = true; 1336 bool loadOk = true;
1331 if ( !categories.isEmpty() ) 1337 if ( !categories.isEmpty() )
1332 loadOk = qtopiaFormat.load( calendar, categories ); 1338 loadOk = qtopiaFormat.load( calendar, categories );
1333 if ( loadOk && !datebook.isEmpty() ) 1339 if ( loadOk && !datebook.isEmpty() )
1334 loadOk = qtopiaFormat.load( calendar, datebook ); 1340 loadOk = qtopiaFormat.load( calendar, datebook );
1335 if ( loadOk && !todolist.isEmpty() ) 1341 if ( loadOk && !todolist.isEmpty() )
1336 loadOk = qtopiaFormat.load( calendar, todolist ); 1342 loadOk = qtopiaFormat.load( calendar, todolist );
1337 1343
1338 if ( loadOk ) { 1344 if ( loadOk ) {
1339 getEventViewerDialog()->setSyncMode( true ); 1345 getEventViewerDialog()->setSyncMode( true );
1340 syncOK = synchronizeCalendar( mCalendar, calendar, KOPrefs::instance()->mSyncAlgoPrefs ); 1346 syncOK = synchronizeCalendar( mCalendar, calendar, KOPrefs::instance()->mSyncAlgoPrefs );
1341 getEventViewerDialog()->setSyncMode( false ); 1347 getEventViewerDialog()->setSyncMode( false );
1342 qApp->processEvents(); 1348 qApp->processEvents();
1343 if ( syncOK ) { 1349 if ( syncOK ) {
1344 if ( KOPrefs::instance()->mWriteBackFile ) 1350 if ( KOPrefs::instance()->mWriteBackFile )
1345 { 1351 {
1346 // write back XML file 1352 // write back XML file
1347 1353
1348 } 1354 }
1349 setModified( true ); 1355 setModified( true );
1350 } 1356 }
1351 } else { 1357 } else {
1352 QString question = i18n("Sorry, the file loading\ncommand failed!\n\nNothing synced!\n") ; 1358 QString question = i18n("Sorry, the file loading\ncommand failed!\n\nNothing synced!\n") ;
1353 QMessageBox::information( 0, i18n("KO/Pi Sync - ERROR"), 1359 QMessageBox::information( 0, i18n("KO/Pi Sync - ERROR"),
1354 question, i18n("Ok")) ; 1360 question, i18n("Ok")) ;
1355 } 1361 }
1356 delete calendar; 1362 delete calendar;
1357 updateView(); 1363 updateView();
1358 return syncOK; 1364 return syncOK;
1359 1365
1360 1366
1361#endif 1367#endif
1362 1368
1363} 1369}
1364 1370
1365void CalendarView::setSyncEventsReadOnly() 1371void CalendarView::setSyncEventsReadOnly()
1366{ 1372{
1367 Event * ev; 1373 Event * ev;
1368 QPtrList<Event> eL = mCalendar->rawEvents(); 1374 QPtrList<Event> eL = mCalendar->rawEvents();
1369 ev = eL.first(); 1375 ev = eL.first();
1370 while ( ev ) { 1376 while ( ev ) {
1371 if ( ev->uid().left(15) == QString("last-syncEvent-") ) 1377 if ( ev->uid().left(15) == QString("last-syncEvent-") )
1372 ev->setReadOnly( true ); 1378 ev->setReadOnly( true );
1373 ev = eL.next(); 1379 ev = eL.next();
1374 } 1380 }
1375} 1381}
1376bool CalendarView::openCalendar(QString filename, bool merge) 1382bool CalendarView::openCalendar(QString filename, bool merge)
1377{ 1383{
1378 1384
1379 if (filename.isEmpty()) { 1385 if (filename.isEmpty()) {
1380 return false; 1386 return false;
1381 } 1387 }
1382 1388
1383 if (!QFile::exists(filename)) { 1389 if (!QFile::exists(filename)) {
1384 KMessageBox::error(this,i18n("File does not exist:\n '%1'.").arg(filename)); 1390 KMessageBox::error(this,i18n("File does not exist:\n '%1'.").arg(filename));
1385 return false; 1391 return false;
1386 } 1392 }
1387 1393
1388 globalFlagBlockAgenda = 1; 1394 globalFlagBlockAgenda = 1;
1389 if (!merge) mCalendar->close(); 1395 if (!merge) mCalendar->close();
1390 1396
1391 mStorage->setFileName( filename ); 1397 mStorage->setFileName( filename );
1392 1398
1393 if ( mStorage->load(KOPrefs::instance()->mUseQuicksave) ) { 1399 if ( mStorage->load(KOPrefs::instance()->mUseQuicksave) ) {
1394 if ( merge ) ;//setModified( true ); 1400 if ( merge ) ;//setModified( true );
1395 else { 1401 else {
1396 //setModified( true ); 1402 //setModified( true );
1397 mViewManager->setDocumentId( filename ); 1403 mViewManager->setDocumentId( filename );
1398 mDialogManager->setDocumentId( filename ); 1404 mDialogManager->setDocumentId( filename );
1399 mTodoList->setDocumentId( filename ); 1405 mTodoList->setDocumentId( filename );
1400 } 1406 }
1401 globalFlagBlockAgenda = 2; 1407 globalFlagBlockAgenda = 2;
1402 // if ( getLastSyncEvent() ) 1408 // if ( getLastSyncEvent() )
1403 // getLastSyncEvent()->setReadOnly( true ); 1409 // getLastSyncEvent()->setReadOnly( true );
1404 mCalendar->reInitAlarmSettings(); 1410 mCalendar->reInitAlarmSettings();
1405 setSyncEventsReadOnly(); 1411 setSyncEventsReadOnly();
1406 updateUnmanagedViews(); 1412 updateUnmanagedViews();
1407 updateView(); 1413 updateView();
1408 if ( filename != MainWindow::defaultFileName() ) 1414 if ( filename != MainWindow::defaultFileName() )
1409 saveCalendar( MainWindow::defaultFileName() ); 1415 saveCalendar( MainWindow::defaultFileName() );
1410 loadedFileVersion = QDateTime::currentDateTime(); 1416 loadedFileVersion = QDateTime::currentDateTime();
1411 return true; 1417 return true;
1412 } else { 1418 } else {
1413 // while failing to load, the calendar object could 1419 // while failing to load, the calendar object could
1414 // have become partially populated. Clear it out. 1420 // have become partially populated. Clear it out.
1415 if ( !merge ) mCalendar->close(); 1421 if ( !merge ) mCalendar->close();
1416 1422
1417 KMessageBox::error(this,i18n("Couldn't load calendar\n '%1'.").arg(filename)); 1423 KMessageBox::error(this,i18n("Couldn't load calendar\n '%1'.").arg(filename));
1418 1424
1419 globalFlagBlockAgenda = 2; 1425 globalFlagBlockAgenda = 2;
1420 updateView(); 1426 updateView();
1421 } 1427 }
1422 return false; 1428 return false;
1423} 1429}
1424void CalendarView::setLoadedFileVersion(QDateTime dt) 1430void CalendarView::setLoadedFileVersion(QDateTime dt)
1425{ 1431{
1426 loadedFileVersion = dt; 1432 loadedFileVersion = dt;
1427} 1433}
1428bool CalendarView::checkFileChanged(QString fn) 1434bool CalendarView::checkFileChanged(QString fn)
1429{ 1435{
1430 QFileInfo finf ( fn ); 1436 QFileInfo finf ( fn );
1431 if ( !finf.exists() ) 1437 if ( !finf.exists() )
1432 return true; 1438 return true;
1433 QDateTime dt = finf.lastModified (); 1439 QDateTime dt = finf.lastModified ();
1434 if ( dt <= loadedFileVersion ) 1440 if ( dt <= loadedFileVersion )
1435 return false; 1441 return false;
1436 return true; 1442 return true;
1437 1443
1438} 1444}
1439bool CalendarView::checkFileVersion(QString fn) 1445bool CalendarView::checkFileVersion(QString fn)
1440{ 1446{
1441 QFileInfo finf ( fn ); 1447 QFileInfo finf ( fn );
1442 if ( !finf.exists() ) 1448 if ( !finf.exists() )
1443 return true; 1449 return true;
1444 QDateTime dt = finf.lastModified (); 1450 QDateTime dt = finf.lastModified ();
1445 //qDebug("loaded file version %s",loadedFileVersion.toString().latin1()); 1451 //qDebug("loaded file version %s",loadedFileVersion.toString().latin1());
1446 //qDebug("file on disk version %s",dt.toString().latin1()); 1452 //qDebug("file on disk version %s",dt.toString().latin1());
1447 if ( dt <= loadedFileVersion ) 1453 if ( dt <= loadedFileVersion )
1448 return true; 1454 return true;
1449 int km = KMessageBox::warningYesNoCancel(this, i18n("\nThe file on disk has changed!\nFile size: %1 bytes.\nLast modified: %2\nDo you want to:\n\n - Save and overwrite file?\n - Sync with file, then save?\n - Cancel without saving? \n").arg( QString::number( finf.size())).arg( KGlobal::locale()->formatDateTime(finf.lastModified (), true, false)) , 1455 int km = KMessageBox::warningYesNoCancel(this, i18n("\nThe file on disk has changed!\nFile size: %1 bytes.\nLast modified: %2\nDo you want to:\n\n - Save and overwrite file?\n - Sync with file, then save?\n - Cancel without saving? \n").arg( QString::number( finf.size())).arg( KGlobal::locale()->formatDateTime(finf.lastModified (), true, false)) ,
1450 i18n("KO/Pi Warning"),i18n("Overwrite"), 1456 i18n("KO/Pi Warning"),i18n("Overwrite"),
1451 i18n("Sync+save")); 1457 i18n("Sync+save"));
1452 1458
1453 if ( km == KMessageBox::Cancel ) 1459 if ( km == KMessageBox::Cancel )
1454 return false; 1460 return false;
1455 if ( km == KMessageBox::Yes ) 1461 if ( km == KMessageBox::Yes )
1456 return true; 1462 return true;
1457 1463
1458 setSyncDevice("deleteaftersync" ); 1464 setSyncDevice("deleteaftersync" );
1459 KOPrefs::instance()->mAskForPreferences = true; 1465 KOPrefs::instance()->mAskForPreferences = true;
1460 KOPrefs::instance()->mSyncAlgoPrefs = 3; 1466 KOPrefs::instance()->mSyncAlgoPrefs = 3;
1461 KOPrefs::instance()->mWriteBackFile = false; 1467 KOPrefs::instance()->mWriteBackFile = false;
1462 KOPrefs::instance()->mWriteBackExistingOnly = false; 1468 KOPrefs::instance()->mWriteBackExistingOnly = false;
1463 KOPrefs::instance()->mShowSyncSummary = false; 1469 KOPrefs::instance()->mShowSyncSummary = false;
1464 syncCalendar( fn, 3 ); 1470 syncCalendar( fn, 3 );
1465 Event * e = getLastSyncEvent(); 1471 Event * e = getLastSyncEvent();
1466 mCalendar->deleteEvent ( e ); 1472 mCalendar->deleteEvent ( e );
1467 updateView(); 1473 updateView();
1468 return true; 1474 return true;
1469} 1475}
1470 1476
1471bool CalendarView::saveCalendar( QString filename ) 1477bool CalendarView::saveCalendar( QString filename )
1472{ 1478{
1473 1479
1474 // Store back all unsaved data into calendar object 1480 // Store back all unsaved data into calendar object
1475 // qDebug("file %s %d ", filename.latin1() , mViewManager->currentView() ); 1481 // qDebug("file %s %d ", filename.latin1() , mViewManager->currentView() );
1476 if ( mViewManager->currentView() ) 1482 if ( mViewManager->currentView() )
1477 mViewManager->currentView()->flushView(); 1483 mViewManager->currentView()->flushView();
1478 1484
1479 //mStorage->setFileName( filename ); 1485 //mStorage->setFileName( filename );
1480 1486
1481 mStorage->setSaveFormat( new ICalFormat( KOPrefs::instance()->mUseQuicksave) ); 1487 mStorage->setSaveFormat( new ICalFormat( KOPrefs::instance()->mUseQuicksave) );
1482 mStorage->setFileName( filename ); 1488 mStorage->setFileName( filename );
1483 bool success; 1489 bool success;
1484 success = mStorage->save(); 1490 success = mStorage->save();
1485 if ( !success ) { 1491 if ( !success ) {
1486 return false; 1492 return false;
1487 } 1493 }
1488 1494
1489 return true; 1495 return true;
1490} 1496}
1491 1497
1492void CalendarView::closeCalendar() 1498void CalendarView::closeCalendar()
1493{ 1499{
1494 1500
1495 // child windows no longer valid 1501 // child windows no longer valid
1496 emit closingDown(); 1502 emit closingDown();
1497 1503
1498 mCalendar->close(); 1504 mCalendar->close();
1499 setModified(false); 1505 setModified(false);
1500 updateView(); 1506 updateView();
1501} 1507}
1502 1508
1503void CalendarView::archiveCalendar() 1509void CalendarView::archiveCalendar()
1504{ 1510{
1505 mDialogManager->showArchiveDialog(); 1511 mDialogManager->showArchiveDialog();
1506} 1512}
1507 1513
1508 1514
1509void CalendarView::readSettings() 1515void CalendarView::readSettings()
1510{ 1516{
1511 1517
1512 1518
1513 // mViewManager->showAgendaView(); 1519 // mViewManager->showAgendaView();
1514 QString str; 1520 QString str;
1515 //qDebug("CalendarView::readSettings() "); 1521 //qDebug("CalendarView::readSettings() ");
1516 // read settings from the KConfig, supplying reasonable 1522 // read settings from the KConfig, supplying reasonable
1517 // defaults where none are to be found 1523 // defaults where none are to be found
1518 KConfig *config = KOGlobals::config(); 1524 KConfig *config = KOGlobals::config();
1519#ifndef KORG_NOSPLITTER 1525#ifndef KORG_NOSPLITTER
1520 config->setGroup("KOrganizer Geometry"); 1526 config->setGroup("KOrganizer Geometry");
1521 1527
1522 QValueList<int> sizes = config->readIntListEntry("Separator1"); 1528 QValueList<int> sizes = config->readIntListEntry("Separator1");
1523 if (sizes.count() != 2) { 1529 if (sizes.count() != 2) {
1524 sizes << mDateNavigator->minimumSizeHint().width(); 1530 sizes << mDateNavigator->minimumSizeHint().width();
1525 sizes << 300; 1531 sizes << 300;
1526 } 1532 }
1527 mPanner->setSizes(sizes); 1533 mPanner->setSizes(sizes);
1528 1534
1529 sizes = config->readIntListEntry("Separator2"); 1535 sizes = config->readIntListEntry("Separator2");
1530 if ( ( mResourceView && sizes.count() == 4 ) || 1536 if ( ( mResourceView && sizes.count() == 4 ) ||
1531 ( !mResourceView && sizes.count() == 3 ) ) { 1537 ( !mResourceView && sizes.count() == 3 ) ) {
1532 mLeftSplitter->setSizes(sizes); 1538 mLeftSplitter->setSizes(sizes);
1533 } 1539 }
1534#endif 1540#endif
1535 globalFlagBlockAgenda = 1; 1541 globalFlagBlockAgenda = 1;
1536 mViewManager->showAgendaView(); 1542 mViewManager->showAgendaView();
1537 //mViewManager->readSettings( config ); 1543 //mViewManager->readSettings( config );
1538 mTodoList->restoreLayout(config,QString("Todo Layout")); 1544 mTodoList->restoreLayout(config,QString("Todo Layout"));
1539 readFilterSettings(config); 1545 readFilterSettings(config);
1540 config->setGroup( "Views" ); 1546 config->setGroup( "Views" );
1541 int dateCount = config->readNumEntry( "ShownDatesCount", 7 ); 1547 int dateCount = config->readNumEntry( "ShownDatesCount", 7 );
1542 if ( dateCount == 5 ) mNavigator->selectWorkWeek(); 1548 if ( dateCount == 5 ) mNavigator->selectWorkWeek();
1543 else if ( dateCount == 7 ) mNavigator->selectWeek(); 1549 else if ( dateCount == 7 ) mNavigator->selectWeek();
1544 else mNavigator->selectDates( dateCount ); 1550 else mNavigator->selectDates( dateCount );
1545 // mViewManager->readSettings( config ); 1551 // mViewManager->readSettings( config );
1546 updateConfig(); 1552 updateConfig();
1547 globalFlagBlockAgenda = 2; 1553 globalFlagBlockAgenda = 2;
1548 mViewManager->readSettings( config ); 1554 mViewManager->readSettings( config );
1549#ifdef DESKTOP_VERSION 1555#ifdef DESKTOP_VERSION
1550 config->setGroup("WidgetLayout"); 1556 config->setGroup("WidgetLayout");
1551 QStringList list; 1557 QStringList list;
1552 list = config->readListEntry("MainLayout"); 1558 list = config->readListEntry("MainLayout");
1553 int x,y,w,h; 1559 int x,y,w,h;
1554 if ( ! list.isEmpty() ) { 1560 if ( ! list.isEmpty() ) {
1555 x = list[0].toInt(); 1561 x = list[0].toInt();
1556 y = list[1].toInt(); 1562 y = list[1].toInt();
1557 w = list[2].toInt(); 1563 w = list[2].toInt();
1558 h = list[3].toInt(); 1564 h = list[3].toInt();
1559 topLevelWidget()->setGeometry(x,y,w,h); 1565 topLevelWidget()->setGeometry(x,y,w,h);
1560 1566
1561 } else { 1567 } else {
1562 topLevelWidget()->setGeometry( 40 ,40 , 640, 440); 1568 topLevelWidget()->setGeometry( 40 ,40 , 640, 440);
1563 } 1569 }
1564 list = config->readListEntry("EditEventLayout"); 1570 list = config->readListEntry("EditEventLayout");
1565 if ( ! list.isEmpty() ) { 1571 if ( ! list.isEmpty() ) {
1566 x = list[0].toInt(); 1572 x = list[0].toInt();
1567 y = list[1].toInt(); 1573 y = list[1].toInt();
1568 w = list[2].toInt(); 1574 w = list[2].toInt();
1569 h = list[3].toInt(); 1575 h = list[3].toInt();
1570 mEventEditor->setGeometry(x,y,w,h); 1576 mEventEditor->setGeometry(x,y,w,h);
1571 1577
1572 } 1578 }
1573 list = config->readListEntry("EditTodoLayout"); 1579 list = config->readListEntry("EditTodoLayout");
1574 if ( ! list.isEmpty() ) { 1580 if ( ! list.isEmpty() ) {
1575 x = list[0].toInt(); 1581 x = list[0].toInt();
1576 y = list[1].toInt(); 1582 y = list[1].toInt();
1577 w = list[2].toInt(); 1583 w = list[2].toInt();
1578 h = list[3].toInt(); 1584 h = list[3].toInt();
1579 mTodoEditor->setGeometry(x,y,w,h); 1585 mTodoEditor->setGeometry(x,y,w,h);
1580 1586
1581 } 1587 }
1582 list = config->readListEntry("ViewerLayout"); 1588 list = config->readListEntry("ViewerLayout");
1583 if ( ! list.isEmpty() ) { 1589 if ( ! list.isEmpty() ) {
1584 x = list[0].toInt(); 1590 x = list[0].toInt();
1585 y = list[1].toInt(); 1591 y = list[1].toInt();
1586 w = list[2].toInt(); 1592 w = list[2].toInt();
1587 h = list[3].toInt(); 1593 h = list[3].toInt();
1588 getEventViewerDialog()->setGeometry(x,y,w,h); 1594 getEventViewerDialog()->setGeometry(x,y,w,h);
1589 } 1595 }
1590#endif 1596#endif
1591 1597
1592} 1598}
1593 1599
1594 1600
1595void CalendarView::writeSettings() 1601void CalendarView::writeSettings()
1596{ 1602{
1597 // kdDebug() << "CalendarView::writeSettings" << endl; 1603 // kdDebug() << "CalendarView::writeSettings" << endl;
1598 1604
1599 KConfig *config = KOGlobals::config(); 1605 KConfig *config = KOGlobals::config();
1600 1606
1601#ifndef KORG_NOSPLITTER 1607#ifndef KORG_NOSPLITTER
1602 config->setGroup("KOrganizer Geometry"); 1608 config->setGroup("KOrganizer Geometry");
1603 1609
1604 QValueList<int> list = mPanner->sizes(); 1610 QValueList<int> list = mPanner->sizes();
1605 config->writeEntry("Separator1",list); 1611 config->writeEntry("Separator1",list);
1606 1612
1607 list = mLeftSplitter->sizes(); 1613 list = mLeftSplitter->sizes();
1608 config->writeEntry("Separator2",list); 1614 config->writeEntry("Separator2",list);
1609#endif 1615#endif
1610 1616
1611 mViewManager->writeSettings( config ); 1617 mViewManager->writeSettings( config );
1612 mTodoList->saveLayout(config,QString("Todo Layout")); 1618 mTodoList->saveLayout(config,QString("Todo Layout"));
1613 mDialogManager->writeSettings( config ); 1619 mDialogManager->writeSettings( config );
1614 //KOPrefs::instance()->usrWriteConfig(); 1620 //KOPrefs::instance()->usrWriteConfig();
1615 KOPrefs::instance()->writeConfig(); 1621 KOPrefs::instance()->writeConfig();
1616 1622
1617 writeFilterSettings(config); 1623 writeFilterSettings(config);
1618 1624
1619 config->setGroup( "Views" ); 1625 config->setGroup( "Views" );
1620 config->writeEntry( "ShownDatesCount", mNavigator->selectedDates().count() ); 1626 config->writeEntry( "ShownDatesCount", mNavigator->selectedDates().count() );
1621 1627
1622#ifdef DESKTOP_VERSION 1628#ifdef DESKTOP_VERSION
1623 config->setGroup("WidgetLayout"); 1629 config->setGroup("WidgetLayout");
1624 QStringList list ;//= config->readListEntry("MainLayout"); 1630 QStringList list ;//= config->readListEntry("MainLayout");
1625 int x,y,w,h; 1631 int x,y,w,h;
1626 QWidget* wid; 1632 QWidget* wid;
1627 wid = topLevelWidget(); 1633 wid = topLevelWidget();
1628 x = wid->geometry().x(); 1634 x = wid->geometry().x();
1629 y = wid->geometry().y(); 1635 y = wid->geometry().y();
1630 w = wid->width(); 1636 w = wid->width();
1631 h = wid->height(); 1637 h = wid->height();
1632 list.clear(); 1638 list.clear();
1633 list << QString::number( x ); 1639 list << QString::number( x );
1634 list << QString::number( y ); 1640 list << QString::number( y );
1635 list << QString::number( w ); 1641 list << QString::number( w );
1636 list << QString::number( h ); 1642 list << QString::number( h );
1637 config->writeEntry("MainLayout",list ); 1643 config->writeEntry("MainLayout",list );
1638 1644
1639 wid = mEventEditor; 1645 wid = mEventEditor;
1640 x = wid->geometry().x(); 1646 x = wid->geometry().x();
1641 y = wid->geometry().y(); 1647 y = wid->geometry().y();
1642 w = wid->width(); 1648 w = wid->width();
1643 h = wid->height(); 1649 h = wid->height();
1644 list.clear(); 1650 list.clear();
1645 list << QString::number( x ); 1651 list << QString::number( x );
1646 list << QString::number( y ); 1652 list << QString::number( y );
1647 list << QString::number( w ); 1653 list << QString::number( w );
1648 list << QString::number( h ); 1654 list << QString::number( h );
1649 config->writeEntry("EditEventLayout",list ); 1655 config->writeEntry("EditEventLayout",list );
1650 1656
1651 wid = mTodoEditor; 1657 wid = mTodoEditor;
1652 x = wid->geometry().x(); 1658 x = wid->geometry().x();
1653 y = wid->geometry().y(); 1659 y = wid->geometry().y();
1654 w = wid->width(); 1660 w = wid->width();
1655 h = wid->height(); 1661 h = wid->height();
1656 list.clear(); 1662 list.clear();
1657 list << QString::number( x ); 1663 list << QString::number( x );
1658 list << QString::number( y ); 1664 list << QString::number( y );
1659 list << QString::number( w ); 1665 list << QString::number( w );
1660 list << QString::number( h ); 1666 list << QString::number( h );
1661 config->writeEntry("EditTodoLayout",list ); 1667 config->writeEntry("EditTodoLayout",list );
1662 wid = getEventViewerDialog(); 1668 wid = getEventViewerDialog();
1663 x = wid->geometry().x(); 1669 x = wid->geometry().x();
1664 y = wid->geometry().y(); 1670 y = wid->geometry().y();
1665 w = wid->width(); 1671 w = wid->width();
1666 h = wid->height(); 1672 h = wid->height();
1667 list.clear(); 1673 list.clear();
1668 list << QString::number( x ); 1674 list << QString::number( x );
1669 list << QString::number( y ); 1675 list << QString::number( y );
1670 list << QString::number( w ); 1676 list << QString::number( w );
1671 list << QString::number( h ); 1677 list << QString::number( h );
1672 config->writeEntry("ViewerLayout",list ); 1678 config->writeEntry("ViewerLayout",list );
1673 wid = mDialogManager->getSearchDialog(); 1679 wid = mDialogManager->getSearchDialog();
1674 if ( wid ) { 1680 if ( wid ) {
1675 x = wid->geometry().x(); 1681 x = wid->geometry().x();
1676 y = wid->geometry().y(); 1682 y = wid->geometry().y();
1677 w = wid->width(); 1683 w = wid->width();
1678 h = wid->height(); 1684 h = wid->height();
1679 list.clear(); 1685 list.clear();
1680 list << QString::number( x ); 1686 list << QString::number( x );
1681 list << QString::number( y ); 1687 list << QString::number( y );
1682 list << QString::number( w ); 1688 list << QString::number( w );
1683 list << QString::number( h ); 1689 list << QString::number( h );
1684 config->writeEntry("SearchLayout",list ); 1690 config->writeEntry("SearchLayout",list );
1685 } 1691 }
1686#endif 1692#endif
1687 1693
1688 1694
1689 config->sync(); 1695 config->sync();
1690} 1696}
1691 1697
1692void CalendarView::readFilterSettings(KConfig *config) 1698void CalendarView::readFilterSettings(KConfig *config)
1693{ 1699{
1694 // kdDebug() << "CalendarView::readFilterSettings()" << endl; 1700 // kdDebug() << "CalendarView::readFilterSettings()" << endl;
1695 1701
1696 mFilters.clear(); 1702 mFilters.clear();
1697 1703
1698 config->setGroup("General"); 1704 config->setGroup("General");
1699 QStringList filterList = config->readListEntry("CalendarFilters"); 1705 QStringList filterList = config->readListEntry("CalendarFilters");
1700 1706
1701 QStringList::ConstIterator it = filterList.begin(); 1707 QStringList::ConstIterator it = filterList.begin();
1702 QStringList::ConstIterator end = filterList.end(); 1708 QStringList::ConstIterator end = filterList.end();
1703 while(it != end) { 1709 while(it != end) {
1704 // kdDebug() << " filter: " << (*it) << endl; 1710 // kdDebug() << " filter: " << (*it) << endl;
1705 1711
1706 CalFilter *filter; 1712 CalFilter *filter;
1707 filter = new CalFilter(*it); 1713 filter = new CalFilter(*it);
1708 config->setGroup("Filter_" + (*it)); 1714 config->setGroup("Filter_" + (*it));
1709 //qDebug("readFilterSettings %d ",config->readNumEntry("Criteria",0) ); 1715 //qDebug("readFilterSettings %d ",config->readNumEntry("Criteria",0) );
1710 filter->setCriteria(config->readNumEntry("Criteria",0)); 1716 filter->setCriteria(config->readNumEntry("Criteria",0));
1711 filter->setCategoryList(config->readListEntry("CategoryList")); 1717 filter->setCategoryList(config->readListEntry("CategoryList"));
1712 mFilters.append(filter); 1718 mFilters.append(filter);
1713 1719
1714 ++it; 1720 ++it;
1715 } 1721 }
1716 1722
1717 if (mFilters.count() == 0) { 1723 if (mFilters.count() == 0) {
1718 CalFilter *filter = new CalFilter(i18n("Default")); 1724 CalFilter *filter = new CalFilter(i18n("Default"));
1719 mFilters.append(filter); 1725 mFilters.append(filter);
1720 } 1726 }
1721 mFilterView->updateFilters(); 1727 mFilterView->updateFilters();
1722 config->setGroup("FilterView"); 1728 config->setGroup("FilterView");
1723 1729
1724 mFilterView->blockSignals(true); 1730 mFilterView->blockSignals(true);
1725 mFilterView->setFiltersEnabled(config->readBoolEntry("FilterEnabled")); 1731 mFilterView->setFiltersEnabled(config->readBoolEntry("FilterEnabled"));
1726 mFilterView->setSelectedFilter(config->readEntry("Current Filter")); 1732 mFilterView->setSelectedFilter(config->readEntry("Current Filter"));
1727 mFilterView->blockSignals(false); 1733 mFilterView->blockSignals(false);
1728 // We do it manually to avoid it being done twice by the above calls 1734 // We do it manually to avoid it being done twice by the above calls
1729 updateFilter(); 1735 updateFilter();
1730} 1736}
1731 1737
1732void CalendarView::writeFilterSettings(KConfig *config) 1738void CalendarView::writeFilterSettings(KConfig *config)
1733{ 1739{
1734 // kdDebug() << "CalendarView::writeFilterSettings()" << endl; 1740 // kdDebug() << "CalendarView::writeFilterSettings()" << endl;
1735 1741
1736 QStringList filterList; 1742 QStringList filterList;
1737 1743
1738 CalFilter *filter = mFilters.first(); 1744 CalFilter *filter = mFilters.first();
1739 while(filter) { 1745 while(filter) {
1740 // kdDebug() << " fn: " << filter->name() << endl; 1746 // kdDebug() << " fn: " << filter->name() << endl;
1741 filterList << filter->name(); 1747 filterList << filter->name();
1742 config->setGroup("Filter_" + filter->name()); 1748 config->setGroup("Filter_" + filter->name());
1743 config->writeEntry("Criteria",filter->criteria()); 1749 config->writeEntry("Criteria",filter->criteria());
1744 config->writeEntry("CategoryList",filter->categoryList()); 1750 config->writeEntry("CategoryList",filter->categoryList());
1745 filter = mFilters.next(); 1751 filter = mFilters.next();
1746 } 1752 }
1747 config->setGroup("General"); 1753 config->setGroup("General");
1748 config->writeEntry("CalendarFilters",filterList); 1754 config->writeEntry("CalendarFilters",filterList);
1749 1755
1750 config->setGroup("FilterView"); 1756 config->setGroup("FilterView");
1751 config->writeEntry("FilterEnabled",mFilterView->filtersEnabled()); 1757 config->writeEntry("FilterEnabled",mFilterView->filtersEnabled());
1752 config->writeEntry("Current Filter",mFilterView->selectedFilter()->name()); 1758 config->writeEntry("Current Filter",mFilterView->selectedFilter()->name());
1753} 1759}
1754 1760
1755 1761
1756void CalendarView::goToday() 1762void CalendarView::goToday()
1757{ 1763{
1758 mNavigator->selectToday(); 1764 mNavigator->selectToday();
1759} 1765}
1760 1766
1761void CalendarView::goNext() 1767void CalendarView::goNext()
1762{ 1768{
1763 mNavigator->selectNext(); 1769 mNavigator->selectNext();
1764} 1770}
1765 1771
1766void CalendarView::goPrevious() 1772void CalendarView::goPrevious()
1767{ 1773{
1768 mNavigator->selectPrevious(); 1774 mNavigator->selectPrevious();
1769} 1775}
1770void CalendarView::goNextMonth() 1776void CalendarView::goNextMonth()
1771{ 1777{
1772 mNavigator->selectNextMonth(); 1778 mNavigator->selectNextMonth();
1773} 1779}
1774 1780
1775void CalendarView::goPreviousMonth() 1781void CalendarView::goPreviousMonth()
1776{ 1782{
1777 mNavigator->selectPreviousMonth(); 1783 mNavigator->selectPreviousMonth();
1778} 1784}
1779void CalendarView::writeLocale() 1785void CalendarView::writeLocale()
1780{ 1786{
1781 KGlobal::locale()->setHore24Format( !KOPrefs::instance()->mPreferredTime ); 1787 KGlobal::locale()->setHore24Format( !KOPrefs::instance()->mPreferredTime );
1782 KGlobal::locale()->setWeekStartMonday( !KOPrefs::instance()->mWeekStartsOnSunday ); 1788 KGlobal::locale()->setWeekStartMonday( !KOPrefs::instance()->mWeekStartsOnSunday );
1783 KGlobal::locale()->setIntDateFormat( (KLocale::IntDateFormat)KOPrefs::instance()->mPreferredDate ); 1789 KGlobal::locale()->setIntDateFormat( (KLocale::IntDateFormat)KOPrefs::instance()->mPreferredDate );
1784 KGlobal::locale()->setLanguage( KOPrefs::instance()->mPreferredLanguage ); 1790 KGlobal::locale()->setLanguage( KOPrefs::instance()->mPreferredLanguage );
1785 QString dummy = KOPrefs::instance()->mUserDateFormatLong; 1791 QString dummy = KOPrefs::instance()->mUserDateFormatLong;
1786 KGlobal::locale()->setDateFormat(dummy.replace( QRegExp("K"), QString(",") )); 1792 KGlobal::locale()->setDateFormat(dummy.replace( QRegExp("K"), QString(",") ));
1787 dummy = KOPrefs::instance()->mUserDateFormatShort; 1793 dummy = KOPrefs::instance()->mUserDateFormatShort;
1788 KGlobal::locale()->setDateFormatShort(dummy.replace( QRegExp("K"), QString(",") )); 1794 KGlobal::locale()->setDateFormatShort(dummy.replace( QRegExp("K"), QString(",") ));
1789 KGlobal::locale()->setDaylightSaving( KOPrefs::instance()->mUseDaylightsaving, 1795 KGlobal::locale()->setDaylightSaving( KOPrefs::instance()->mUseDaylightsaving,
1790 KOPrefs::instance()->mDaylightsavingStart, 1796 KOPrefs::instance()->mDaylightsavingStart,
1791 KOPrefs::instance()->mDaylightsavingEnd ); 1797 KOPrefs::instance()->mDaylightsavingEnd );
1792 KGlobal::locale()->setTimezone( KOPrefs::instance()->mTimeZoneId ); 1798 KGlobal::locale()->setTimezone( KOPrefs::instance()->mTimeZoneId );
1793} 1799}
1794void CalendarView::updateConfig() 1800void CalendarView::updateConfig()
1795{ 1801{
1796 writeLocale(); 1802 writeLocale();
1797 if ( KOPrefs::instance()->mUseAppColors ) 1803 if ( KOPrefs::instance()->mUseAppColors )
1798 QApplication::setPalette( QPalette (KOPrefs::instance()->mAppColor1, KOPrefs::instance()->mAppColor2), true ); 1804 QApplication::setPalette( QPalette (KOPrefs::instance()->mAppColor1, KOPrefs::instance()->mAppColor2), true );
1799 emit configChanged(); 1805 emit configChanged();
1800 mTodoList->updateConfig(); 1806 mTodoList->updateConfig();
1801 // mDateNavigator->setFont ( KOPrefs::instance()->mDateNavigatorFont); 1807 // mDateNavigator->setFont ( KOPrefs::instance()->mDateNavigatorFont);
1802 mCalendar->setTimeZoneId(KOPrefs::instance()->mTimeZoneId); 1808 mCalendar->setTimeZoneId(KOPrefs::instance()->mTimeZoneId);
1803 // To make the "fill window" configurations work 1809 // To make the "fill window" configurations work
1804 //mViewManager->raiseCurrentView(); 1810 //mViewManager->raiseCurrentView();
1805} 1811}
1806 1812
1807 1813
1808void CalendarView::eventChanged(Event *event) 1814void CalendarView::eventChanged(Event *event)
1809{ 1815{
1810 changeEventDisplay(event,KOGlobals::EVENTEDITED); 1816 changeEventDisplay(event,KOGlobals::EVENTEDITED);
1811 //updateUnmanagedViews(); 1817 //updateUnmanagedViews();
1812} 1818}
1813 1819
1814void CalendarView::eventAdded(Event *event) 1820void CalendarView::eventAdded(Event *event)
1815{ 1821{
1816 changeEventDisplay(event,KOGlobals::EVENTADDED); 1822 changeEventDisplay(event,KOGlobals::EVENTADDED);
1817} 1823}
1818 1824
1819void CalendarView::eventToBeDeleted(Event *) 1825void CalendarView::eventToBeDeleted(Event *)
1820{ 1826{
1821 kdDebug() << "CalendarView::eventToBeDeleted(): to be implemented" << endl; 1827 kdDebug() << "CalendarView::eventToBeDeleted(): to be implemented" << endl;
1822} 1828}
1823 1829
1824void CalendarView::eventDeleted() 1830void CalendarView::eventDeleted()
1825{ 1831{
1826 changeEventDisplay(0,KOGlobals::EVENTDELETED); 1832 changeEventDisplay(0,KOGlobals::EVENTDELETED);
1827} 1833}
1828void CalendarView::changeTodoDisplay(Todo *which, int action) 1834void CalendarView::changeTodoDisplay(Todo *which, int action)
1829{ 1835{
1830 changeIncidenceDisplay((Incidence *)which, action); 1836 changeIncidenceDisplay((Incidence *)which, action);
1831} 1837}
1832void CalendarView::checkZaurusId( int id, bool todo ) 1838
1833{
1834 if ( id >= 0 ) {
1835 Incidence* lse = mCalendar->event( "last-syncEvent-Sharp-DTM");
1836 if ( lse ) {
1837 QString des = lse->description();
1838 QString pref = "e";
1839 if ( todo )
1840 pref = "t";
1841 des += pref+ QString::number ( id ) + ",";
1842 lse->setReadOnly( false );
1843 lse->setDescription( des );
1844 lse->setReadOnly( true );
1845 }
1846 }
1847}
1848void CalendarView::changeIncidenceDisplay(Incidence *which, int action) 1839void CalendarView::changeIncidenceDisplay(Incidence *which, int action)
1849{ 1840{
1850 updateUnmanagedViews(); 1841 updateUnmanagedViews();
1851 //qDebug(" CalendarView::changeIncidenceDisplay++++++++++++++++++++++++++ %d %d ",which, action ); 1842 //qDebug(" CalendarView::changeIncidenceDisplay++++++++++++++++++++++++++ %d %d ",which, action );
1852 if ( action == KOGlobals::EVENTDELETED ) { //delete 1843 if ( action == KOGlobals::EVENTDELETED ) { //delete
1853 mCalendar->checkAlarmForIncidence( 0, true ); 1844 mCalendar->checkAlarmForIncidence( 0, true );
1854 if ( mEventViewerDialog ) 1845 if ( mEventViewerDialog )
1855 mEventViewerDialog->hide(); 1846 mEventViewerDialog->hide();
1856 } 1847 }
1857 else 1848 else
1858 mCalendar->checkAlarmForIncidence( which , false ); 1849 mCalendar->checkAlarmForIncidence( which , false );
1859} 1850}
1860 1851
1861// most of the changeEventDisplays() right now just call the view's 1852// most of the changeEventDisplays() right now just call the view's
1862// total update mode, but they SHOULD be recoded to be more refresh-efficient. 1853// total update mode, but they SHOULD be recoded to be more refresh-efficient.
1863void CalendarView::changeEventDisplay(Event *which, int action) 1854void CalendarView::changeEventDisplay(Event *which, int action)
1864{ 1855{
1865 // kdDebug() << "CalendarView::changeEventDisplay" << endl; 1856 // kdDebug() << "CalendarView::changeEventDisplay" << endl;
1866 changeIncidenceDisplay((Incidence *)which, action); 1857 changeIncidenceDisplay((Incidence *)which, action);
1867 mDateNavigator->updateView(); 1858 mDateNavigator->updateView();
1868 //mDialogManager->updateSearchDialog(); 1859 //mDialogManager->updateSearchDialog();
1869 1860
1870 if (which) { 1861 if (which) {
1871 // If there is an event view visible update the display 1862 // If there is an event view visible update the display
1872 mViewManager->currentView()->changeEventDisplay(which,action); 1863 mViewManager->currentView()->changeEventDisplay(which,action);
1873 // TODO: check, if update needed 1864 // TODO: check, if update needed
1874 // if (which->getTodoStatus()) { 1865 // if (which->getTodoStatus()) {
1875 mTodoList->updateView(); 1866 mTodoList->updateView();
1876 // } 1867 // }
1877 } else { 1868 } else {
1878 mViewManager->currentView()->updateView(); 1869 mViewManager->currentView()->updateView();
1879 } 1870 }
1880} 1871}
1881 1872
1882 1873
1883void CalendarView::updateTodoViews() 1874void CalendarView::updateTodoViews()
1884{ 1875{
1885 1876
1886 mTodoList->updateView(); 1877 mTodoList->updateView();
1887 mViewManager->currentView()->updateView(); 1878 mViewManager->currentView()->updateView();
1888 1879
1889} 1880}
1890 1881
1891 1882
1892void CalendarView::updateView(const QDate &start, const QDate &end) 1883void CalendarView::updateView(const QDate &start, const QDate &end)
1893{ 1884{
1894 mTodoList->updateView(); 1885 mTodoList->updateView();
1895 mViewManager->updateView(start, end); 1886 mViewManager->updateView(start, end);
1896 //mDateNavigator->updateView(); 1887 //mDateNavigator->updateView();
1897} 1888}
1898 1889
1899void CalendarView::updateView() 1890void CalendarView::updateView()
1900{ 1891{
1901 DateList tmpList = mNavigator->selectedDates(); 1892 DateList tmpList = mNavigator->selectedDates();
1902 1893
1903 // We assume that the navigator only selects consecutive days. 1894 // We assume that the navigator only selects consecutive days.
1904 updateView( tmpList.first(), tmpList.last() ); 1895 updateView( tmpList.first(), tmpList.last() );
1905} 1896}
1906 1897
1907void CalendarView::updateUnmanagedViews() 1898void CalendarView::updateUnmanagedViews()
1908{ 1899{
1909 mDateNavigator->updateDayMatrix(); 1900 mDateNavigator->updateDayMatrix();
1910} 1901}
1911 1902
1912int CalendarView::msgItemDelete() 1903int CalendarView::msgItemDelete()
1913{ 1904{
1914 return KMessageBox::warningContinueCancel(this, 1905 return KMessageBox::warningContinueCancel(this,
1915 i18n("This item will be\npermanently deleted."), 1906 i18n("This item will be\npermanently deleted."),
1916 i18n("KO/Pi Confirmation"),i18n("Delete")); 1907 i18n("KO/Pi Confirmation"),i18n("Delete"));
1917} 1908}
1918 1909
1919 1910
1920void CalendarView::edit_cut() 1911void CalendarView::edit_cut()
1921{ 1912{
1922 Event *anEvent=0; 1913 Event *anEvent=0;
1923 1914
1924 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first(); 1915 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first();
1925 1916
1926 if (mViewManager->currentView()->isEventView()) { 1917 if (mViewManager->currentView()->isEventView()) {
1927 if ( incidence && incidence->type() == "Event" ) { 1918 if ( incidence && incidence->type() == "Event" ) {
1928 anEvent = static_cast<Event *>(incidence); 1919 anEvent = static_cast<Event *>(incidence);
1929 } 1920 }
1930 } 1921 }
1931 1922
1932 if (!anEvent) { 1923 if (!anEvent) {
1933 KNotifyClient::beep(); 1924 KNotifyClient::beep();
1934 return; 1925 return;
1935 } 1926 }
1936 DndFactory factory( mCalendar ); 1927 DndFactory factory( mCalendar );
1937 factory.cutEvent(anEvent); 1928 factory.cutEvent(anEvent);
1938 changeEventDisplay(anEvent, KOGlobals::EVENTDELETED); 1929 changeEventDisplay(anEvent, KOGlobals::EVENTDELETED);
1939} 1930}
1940 1931
1941void CalendarView::edit_copy() 1932void CalendarView::edit_copy()
1942{ 1933{
1943 Event *anEvent=0; 1934 Event *anEvent=0;
1944 1935
1945 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first(); 1936 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first();
1946 1937
1947 if (mViewManager->currentView()->isEventView()) { 1938 if (mViewManager->currentView()->isEventView()) {
1948 if ( incidence && incidence->type() == "Event" ) { 1939 if ( incidence && incidence->type() == "Event" ) {
1949 anEvent = static_cast<Event *>(incidence); 1940 anEvent = static_cast<Event *>(incidence);
1950 } 1941 }
1951 } 1942 }
1952 1943
1953 if (!anEvent) { 1944 if (!anEvent) {
1954 KNotifyClient::beep(); 1945 KNotifyClient::beep();
1955 return; 1946 return;
1956 } 1947 }
1957 DndFactory factory( mCalendar ); 1948 DndFactory factory( mCalendar );
1958 factory.copyEvent(anEvent); 1949 factory.copyEvent(anEvent);
1959} 1950}
1960 1951
1961void CalendarView::edit_paste() 1952void CalendarView::edit_paste()
1962{ 1953{
1963 QDate date = mNavigator->selectedDates().first(); 1954 QDate date = mNavigator->selectedDates().first();
1964 1955
1965 DndFactory factory( mCalendar ); 1956 DndFactory factory( mCalendar );
1966 Event *pastedEvent = factory.pasteEvent( date ); 1957 Event *pastedEvent = factory.pasteEvent( date );
1967 1958
1968 changeEventDisplay( pastedEvent, KOGlobals::EVENTADDED ); 1959 changeEventDisplay( pastedEvent, KOGlobals::EVENTADDED );
1969} 1960}
1970 1961
1971void CalendarView::edit_options() 1962void CalendarView::edit_options()
1972{ 1963{
1973 mDialogManager->showOptionsDialog(); 1964 mDialogManager->showOptionsDialog();
1974 //writeSettings(); 1965 //writeSettings();
1975} 1966}
1976void CalendarView::edit_sync_options() 1967void CalendarView::edit_sync_options()
1977{ 1968{
1978 //mDialogManager->showSyncOptions(); 1969 //mDialogManager->showSyncOptions();
1979 //KOPrefs::instance()->mSyncAlgoPrefs 1970 //KOPrefs::instance()->mSyncAlgoPrefs
1980 QDialog dia( this, "dia", true ); 1971 QDialog dia( this, "dia", true );
1981 dia.setCaption( i18n("Device: " ) +mCurrentSyncDevice ); 1972 dia.setCaption( i18n("Device: " ) +mCurrentSyncDevice );
1982 QButtonGroup gr ( 1, Qt::Horizontal, i18n("Sync preferences"), &dia); 1973 QButtonGroup gr ( 1, Qt::Horizontal, i18n("Sync preferences"), &dia);
1983 QVBoxLayout lay ( &dia ); 1974 QVBoxLayout lay ( &dia );
1984 lay.setSpacing( 2 ); 1975 lay.setSpacing( 2 );
1985 lay.setMargin( 3 ); 1976 lay.setMargin( 3 );
1986 lay.addWidget(&gr); 1977 lay.addWidget(&gr);
1987 QRadioButton loc ( i18n("Take local entry on conflict"), &gr ); 1978 QRadioButton loc ( i18n("Take local entry on conflict"), &gr );
1988 QRadioButton rem ( i18n("Take remote entry on conflict"), &gr ); 1979 QRadioButton rem ( i18n("Take remote entry on conflict"), &gr );
1989 QRadioButton newest( i18n("Take newest entry on conflict"), &gr ); 1980 QRadioButton newest( i18n("Take newest entry on conflict"), &gr );
1990 QRadioButton ask( i18n("Ask for every entry on conflict"), &gr ); 1981 QRadioButton ask( i18n("Ask for every entry on conflict"), &gr );
1991 QRadioButton f_loc( i18n("Force: Take local entry always"), &gr ); 1982 QRadioButton f_loc( i18n("Force: Take local entry always"), &gr );
1992 QRadioButton f_rem( i18n("Force: Take remote entry always"), &gr ); 1983 QRadioButton f_rem( i18n("Force: Take remote entry always"), &gr );
1993 //QRadioButton both( i18n("Take both on conflict"), &gr ); 1984 //QRadioButton both( i18n("Take both on conflict"), &gr );
1994 QPushButton pb ( "OK", &dia); 1985 QPushButton pb ( "OK", &dia);
1995 lay.addWidget( &pb ); 1986 lay.addWidget( &pb );
1996 connect(&pb, SIGNAL( clicked() ), &dia, SLOT ( accept() ) ); 1987 connect(&pb, SIGNAL( clicked() ), &dia, SLOT ( accept() ) );
1997 switch ( KOPrefs::instance()->mSyncAlgoPrefs ) { 1988 switch ( KOPrefs::instance()->mSyncAlgoPrefs ) {
1998 case 0: 1989 case 0:
1999 loc.setChecked( true); 1990 loc.setChecked( true);
2000 break; 1991 break;
2001 case 1: 1992 case 1:
2002 rem.setChecked( true ); 1993 rem.setChecked( true );
2003 break; 1994 break;
2004 case 2: 1995 case 2:
2005 newest.setChecked( true); 1996 newest.setChecked( true);
2006 break; 1997 break;
2007 case 3: 1998 case 3:
2008 ask.setChecked( true); 1999 ask.setChecked( true);
2009 break; 2000 break;
2010 case 4: 2001 case 4:
2011 f_loc.setChecked( true); 2002 f_loc.setChecked( true);
2012 break; 2003 break;
2013 case 5: 2004 case 5:
2014 f_rem.setChecked( true); 2005 f_rem.setChecked( true);
2015 break; 2006 break;
2016 case 6: 2007 case 6:
2017 // both.setChecked( true); 2008 // both.setChecked( true);
2018 break; 2009 break;
2019 default: 2010 default:
2020 break; 2011 break;
2021 } 2012 }
2022 if ( dia.exec() ) { 2013 if ( dia.exec() ) {
2023 KOPrefs::instance()->mSyncAlgoPrefs = rem.isChecked()*1+newest.isChecked()*2+ ask.isChecked()*3+ f_loc.isChecked()*4+ f_rem.isChecked()*5;//+ both.isChecked()*6 ; 2014 KOPrefs::instance()->mSyncAlgoPrefs = rem.isChecked()*1+newest.isChecked()*2+ ask.isChecked()*3+ f_loc.isChecked()*4+ f_rem.isChecked()*5;//+ both.isChecked()*6 ;
2024 } 2015 }
2025 2016
2026} 2017}
2027 2018
2028void CalendarView::slotSelectPickerDate( QDate d) 2019void CalendarView::slotSelectPickerDate( QDate d)
2029{ 2020{
2030 mDateFrame->hide(); 2021 mDateFrame->hide();
2031 if ( mDatePickerMode == 1 ) { 2022 if ( mDatePickerMode == 1 ) {
2032 mNavigator->slotDaySelect( d ); 2023 mNavigator->slotDaySelect( d );
2033 } else if ( mDatePickerMode == 2 ) { 2024 } else if ( mDatePickerMode == 2 ) {
2034 if ( mMoveIncidence->type() == "Todo" ) { 2025 if ( mMoveIncidence->type() == "Todo" ) {
2035 Todo * to = (Todo *) mMoveIncidence; 2026 Todo * to = (Todo *) mMoveIncidence;
2036 QTime tim; 2027 QTime tim;
2037 if ( to->hasDueDate() ) 2028 if ( to->hasDueDate() )
2038 tim = to->dtDue().time(); 2029 tim = to->dtDue().time();
2039 else { 2030 else {
2040 tim = QTime ( 0,0,0 ); 2031 tim = QTime ( 0,0,0 );
2041 to->setFloats( true ); 2032 to->setFloats( true );
2042 to->setHasDueDate( true ); 2033 to->setHasDueDate( true );
2043 } 2034 }
2044 QDateTime dt ( d,tim ); 2035 QDateTime dt ( d,tim );
2045 to->setDtDue( dt ); 2036 to->setDtDue( dt );
2046 todoChanged( to ); 2037 todoChanged( to );
2047 } else { 2038 } else {
2048 QTime tim = mMoveIncidence->dtStart().time(); 2039 QTime tim = mMoveIncidence->dtStart().time();
2049 int secs = mMoveIncidence->dtStart().secsTo( mMoveIncidence->dtEnd()); 2040 int secs = mMoveIncidence->dtStart().secsTo( mMoveIncidence->dtEnd());
2050 QDateTime dt ( d,tim ); 2041 QDateTime dt ( d,tim );
2051 mMoveIncidence->setDtStart( dt ); 2042 mMoveIncidence->setDtStart( dt );
2052 ((Event*)mMoveIncidence)->setDtEnd( dt.addSecs( secs ) ); 2043 ((Event*)mMoveIncidence)->setDtEnd( dt.addSecs( secs ) );
2053 changeEventDisplay((Event*)mMoveIncidence, KOGlobals::EVENTEDITED); 2044 changeEventDisplay((Event*)mMoveIncidence, KOGlobals::EVENTEDITED);
2054 } 2045 }
2055 2046
2056 mMoveIncidence->setRevision( mMoveIncidence->revision()+1 ); 2047 mMoveIncidence->setRevision( mMoveIncidence->revision()+1 );
2057 } 2048 }
2058} 2049}
2059 2050
2060void CalendarView::removeCategories() 2051void CalendarView::removeCategories()
2061{ 2052{
2062 QPtrList<Incidence> incList = mCalendar->rawIncidences(); 2053 QPtrList<Incidence> incList = mCalendar->rawIncidences();
2063 QStringList catList = KOPrefs::instance()->mCustomCategories; 2054 QStringList catList = KOPrefs::instance()->mCustomCategories;
2064 QStringList catIncList; 2055 QStringList catIncList;
2065 QStringList newCatList; 2056 QStringList newCatList;
2066 Incidence* inc = incList.first(); 2057 Incidence* inc = incList.first();
2067 int i; 2058 int i;
2068 int count = 0; 2059 int count = 0;
2069 while ( inc ) { 2060 while ( inc ) {
2070 newCatList.clear(); 2061 newCatList.clear();
2071 catIncList = inc->categories() ; 2062 catIncList = inc->categories() ;
2072 for( i = 0; i< catIncList.count(); ++i ) { 2063 for( i = 0; i< catIncList.count(); ++i ) {
2073 if ( catList.contains (catIncList[i])) 2064 if ( catList.contains (catIncList[i]))
2074 newCatList.append( catIncList[i] ); 2065 newCatList.append( catIncList[i] );
2075 } 2066 }
2076 newCatList.sort(); 2067 newCatList.sort();
2077 inc->setCategories( newCatList.join(",") ); 2068 inc->setCategories( newCatList.join(",") );
2078 inc = incList.next(); 2069 inc = incList.next();
2079 } 2070 }
2080} 2071}
2081 2072
2082int CalendarView::addCategories() 2073int CalendarView::addCategories()
2083{ 2074{
2084 QPtrList<Incidence> incList = mCalendar->rawIncidences(); 2075 QPtrList<Incidence> incList = mCalendar->rawIncidences();
2085 QStringList catList = KOPrefs::instance()->mCustomCategories; 2076 QStringList catList = KOPrefs::instance()->mCustomCategories;
2086 QStringList catIncList; 2077 QStringList catIncList;
2087 Incidence* inc = incList.first(); 2078 Incidence* inc = incList.first();
2088 int i; 2079 int i;
2089 int count = 0; 2080 int count = 0;
2090 while ( inc ) { 2081 while ( inc ) {
2091 catIncList = inc->categories() ; 2082 catIncList = inc->categories() ;
2092 for( i = 0; i< catIncList.count(); ++i ) { 2083 for( i = 0; i< catIncList.count(); ++i ) {
2093 if ( !catList.contains (catIncList[i])) { 2084 if ( !catList.contains (catIncList[i])) {
2094 catList.append( catIncList[i] ); 2085 catList.append( catIncList[i] );
2095 //qDebug("add cat %s ", catIncList[i].latin1()); 2086 //qDebug("add cat %s ", catIncList[i].latin1());
2096 ++count; 2087 ++count;
2097 } 2088 }
2098 } 2089 }
2099 inc = incList.next(); 2090 inc = incList.next();
2100 } 2091 }
2101 catList.sort(); 2092 catList.sort();
2102 KOPrefs::instance()->mCustomCategories = catList; 2093 KOPrefs::instance()->mCustomCategories = catList;
2103 return count; 2094 return count;
2104} 2095}
2105 2096
2106void CalendarView::manageCategories() 2097void CalendarView::manageCategories()
2107{ 2098{
2108 KOCatPrefs* cp = new KOCatPrefs(); 2099 KOCatPrefs* cp = new KOCatPrefs();
2109 cp->show(); 2100 cp->show();
2110 int w =cp->sizeHint().width() ; 2101 int w =cp->sizeHint().width() ;
2111 int h = cp->sizeHint().height() ; 2102 int h = cp->sizeHint().height() ;
2112 int dw = QApplication::desktop()->width(); 2103 int dw = QApplication::desktop()->width();
2113 int dh = QApplication::desktop()->height(); 2104 int dh = QApplication::desktop()->height();
2114 cp->setGeometry( (dw-w)/2, (dh - h )/2 ,w,h ); 2105 cp->setGeometry( (dw-w)/2, (dh - h )/2 ,w,h );
2115 if ( !cp->exec() ) { 2106 if ( !cp->exec() ) {
2116 delete cp; 2107 delete cp;
2117 return; 2108 return;
2118 } 2109 }
2119 int count = 0; 2110 int count = 0;
2120 if ( cp->addCat() ) { 2111 if ( cp->addCat() ) {
2121 count = addCategories(); 2112 count = addCategories();
2122 if ( count ) { 2113 if ( count ) {
2123 topLevelWidget()->setCaption(QString::number( count )+ i18n(" Categories added to list! ")); 2114 topLevelWidget()->setCaption(QString::number( count )+ i18n(" Categories added to list! "));
2124 writeSettings(); 2115 writeSettings();
2125 } 2116 }
2126 } else { 2117 } else {
2127 removeCategories(); 2118 removeCategories();
2128 updateView(); 2119 updateView();
2129 } 2120 }
2130 delete cp; 2121 delete cp;
2131} 2122}
2132 2123
2133void CalendarView::beamIncidence(Incidence * Inc) 2124void CalendarView::beamIncidence(Incidence * Inc)
2134{ 2125{
2135 QPtrList<Incidence> delSel ; 2126 QPtrList<Incidence> delSel ;
2136 delSel.append(Inc); 2127 delSel.append(Inc);
2137 beamIncidenceList( delSel ); 2128 beamIncidenceList( delSel );
2138} 2129}
2139void CalendarView::beamCalendar() 2130void CalendarView::beamCalendar()
2140{ 2131{
2141 QPtrList<Incidence> delSel = mCalendar->rawIncidences(); 2132 QPtrList<Incidence> delSel = mCalendar->rawIncidences();
2142 //qDebug("beamCalendar() "); 2133 //qDebug("beamCalendar() ");
2143 beamIncidenceList( delSel ); 2134 beamIncidenceList( delSel );
2144} 2135}
2145void CalendarView::beamFilteredCalendar() 2136void CalendarView::beamFilteredCalendar()
2146{ 2137{
2147 QPtrList<Incidence> delSel = mCalendar->incidences(); 2138 QPtrList<Incidence> delSel = mCalendar->incidences();
2148 //qDebug("beamFilteredCalendar() "); 2139 //qDebug("beamFilteredCalendar() ");
2149 beamIncidenceList( delSel ); 2140 beamIncidenceList( delSel );
2150} 2141}
2151void CalendarView::beamIncidenceList(QPtrList<Incidence> delSel ) 2142void CalendarView::beamIncidenceList(QPtrList<Incidence> delSel )
2152{ 2143{
2153 if ( beamDialog->exec () == QDialog::Rejected ) 2144 if ( beamDialog->exec () == QDialog::Rejected )
2154 return; 2145 return;
2155 2146
2156 QString fn = "/tmp/kopibeamfile"; 2147 QString fn = "/tmp/kopibeamfile";
2157 QString mes; 2148 QString mes;
2158 bool createbup = true; 2149 bool createbup = true;
2159 if ( createbup ) { 2150 if ( createbup ) {
2160 QString description = "\n"; 2151 QString description = "\n";
2161 CalendarLocal* cal = new CalendarLocal(); 2152 CalendarLocal* cal = new CalendarLocal();
2162 if ( beamDialog->beamLocal() ) 2153 if ( beamDialog->beamLocal() )
2163 cal->setLocalTime(); 2154 cal->setLocalTime();
2164 else 2155 else
2165 cal->setTimeZoneId(KOPrefs::instance()->mTimeZoneId); 2156 cal->setTimeZoneId(KOPrefs::instance()->mTimeZoneId);
2166 Incidence *incidence = delSel.first(); 2157 Incidence *incidence = delSel.first();
2167 bool addText = false; 2158 bool addText = false;
2168 if ( delSel.count() < 10 ) 2159 if ( delSel.count() < 10 )
2169 addText = true; 2160 addText = true;
2170 else { 2161 else {
2171 description.sprintf(i18n(" %d items?"),delSel.count() ); 2162 description.sprintf(i18n(" %d items?"),delSel.count() );
2172 } 2163 }
2173 while ( incidence ) { 2164 while ( incidence ) {
2174 Incidence *in = incidence->clone(); 2165 Incidence *in = incidence->clone();
2175 if ( addText ) 2166 if ( addText )
2176 description += in->summary() + "\n"; 2167 description += in->summary() + "\n";
2177 cal->addIncidence( in ); 2168 cal->addIncidence( in );
2178 incidence = delSel.next(); 2169 incidence = delSel.next();
2179 } 2170 }
2180 if ( beamDialog->beamVcal() ) { 2171 if ( beamDialog->beamVcal() ) {
2181 fn += ".vcs"; 2172 fn += ".vcs";
2182 FileStorage storage( cal, fn, new VCalFormat ); 2173 FileStorage storage( cal, fn, new VCalFormat );
2183 storage.save(); 2174 storage.save();
2184 } else { 2175 } else {
2185 fn += ".ics"; 2176 fn += ".ics";
2186 FileStorage storage( cal, fn, new ICalFormat( KOPrefs::instance()->mUseQuicksave) ); 2177 FileStorage storage( cal, fn, new ICalFormat( KOPrefs::instance()->mUseQuicksave) );
2187 storage.save(); 2178 storage.save();
2188 } 2179 }
2189 delete cal; 2180 delete cal;
2190 mes = i18n("KO/Pi: Ready for beaming"); 2181 mes = i18n("KO/Pi: Ready for beaming");
2191 setCaption(mes); 2182 setCaption(mes);
2192 2183
2193#ifndef DESKTOP_VERSION 2184#ifndef DESKTOP_VERSION
2194 Ir *ir = new Ir( this ); 2185 Ir *ir = new Ir( this );
2195 connect( ir, SIGNAL( done( Ir * ) ), this, SLOT( beamDone( Ir * ) ) ); 2186 connect( ir, SIGNAL( done( Ir * ) ), this, SLOT( beamDone( Ir * ) ) );
2196 ir->send( fn, description, "text/x-vCalendar" ); 2187 ir->send( fn, description, "text/x-vCalendar" );
2197#endif 2188#endif
2198 } 2189 }
2199} 2190}
2200void CalendarView::beamDone( Ir *ir ) 2191void CalendarView::beamDone( Ir *ir )
2201{ 2192{
2202#ifndef DESKTOP_VERSION 2193#ifndef DESKTOP_VERSION
2203 delete ir; 2194 delete ir;
2204#endif 2195#endif
2205} 2196}
2206 2197
2207void CalendarView::moveIncidence(Incidence * inc ) 2198void CalendarView::moveIncidence(Incidence * inc )
2208{ 2199{
2209 if ( !inc ) return; 2200 if ( !inc ) return;
2210 // qDebug("showDatePickerForIncidence( ) "); 2201 // qDebug("showDatePickerForIncidence( ) ");
2211 if ( mDateFrame->isVisible() ) 2202 if ( mDateFrame->isVisible() )
2212 mDateFrame->hide(); 2203 mDateFrame->hide();
2213 else { 2204 else {
2214 int w =mDatePicker->sizeHint().width()+2*mDateFrame->lineWidth() ; 2205 int w =mDatePicker->sizeHint().width()+2*mDateFrame->lineWidth() ;
2215 int h = mDatePicker->sizeHint().height()+2*mDateFrame->lineWidth() ; 2206 int h = mDatePicker->sizeHint().height()+2*mDateFrame->lineWidth() ;
2216 int dw = QApplication::desktop()->width(); 2207 int dw = QApplication::desktop()->width();
2217 int dh = QApplication::desktop()->height(); 2208 int dh = QApplication::desktop()->height();
2218 mDateFrame->setGeometry( (dw-w)/2, (dh - h )/2 ,w,h ); 2209 mDateFrame->setGeometry( (dw-w)/2, (dh - h )/2 ,w,h );
2219 mDateFrame->show(); 2210 mDateFrame->show();
2220 } 2211 }
2221 mDatePickerMode = 2; 2212 mDatePickerMode = 2;
2222 mMoveIncidence = inc ; 2213 mMoveIncidence = inc ;
2223 QDate da; 2214 QDate da;
2224 if ( mMoveIncidence->type() == "Todo" ) { 2215 if ( mMoveIncidence->type() == "Todo" ) {
2225 Todo * to = (Todo *) mMoveIncidence; 2216 Todo * to = (Todo *) mMoveIncidence;
2226 if ( to->hasDueDate() ) 2217 if ( to->hasDueDate() )
2227 da = to->dtDue().date(); 2218 da = to->dtDue().date();
2228 else 2219 else
2229 da = QDate::currentDate(); 2220 da = QDate::currentDate();
2230 } else { 2221 } else {
2231 da = mMoveIncidence->dtStart().date(); 2222 da = mMoveIncidence->dtStart().date();
2232 } 2223 }
2233 mDatePicker->setDate( da ); 2224 mDatePicker->setDate( da );
2234} 2225}
2235void CalendarView::showDatePicker( ) 2226void CalendarView::showDatePicker( )
2236{ 2227{
2237 //qDebug("CalendarView::showDatePicker( ) "); 2228 //qDebug("CalendarView::showDatePicker( ) ");
2238 if ( mDateFrame->isVisible() ) 2229 if ( mDateFrame->isVisible() )
2239 mDateFrame->hide(); 2230 mDateFrame->hide();
2240 else { 2231 else {
2241 int w =mDatePicker->sizeHint().width() ; 2232 int w =mDatePicker->sizeHint().width() ;
2242 int h = mDatePicker->sizeHint().height() ; 2233 int h = mDatePicker->sizeHint().height() ;
2243 int dw = QApplication::desktop()->width(); 2234 int dw = QApplication::desktop()->width();
2244 int dh = QApplication::desktop()->height(); 2235 int dh = QApplication::desktop()->height();
2245 mDateFrame->setGeometry( (dw-w)/2, (dh - h )/2 ,w,h ); 2236 mDateFrame->setGeometry( (dw-w)/2, (dh - h )/2 ,w,h );
2246 mDateFrame->show(); 2237 mDateFrame->show();
2247 } 2238 }
2248 mDatePickerMode = 1; 2239 mDatePickerMode = 1;
2249 mDatePicker->setDate( mNavigator->selectedDates().first() ); 2240 mDatePicker->setDate( mNavigator->selectedDates().first() );
2250} 2241}
2251 2242
2252void CalendarView::showEventEditor() 2243void CalendarView::showEventEditor()
2253{ 2244{
2254#ifdef DESKTOP_VERSION 2245#ifdef DESKTOP_VERSION
2255 mEventEditor->show(); 2246 mEventEditor->show();
2256#else 2247#else
2257 mEventEditor->showMaximized(); 2248 mEventEditor->showMaximized();
2258#endif 2249#endif
2259} 2250}
2260void CalendarView::showTodoEditor() 2251void CalendarView::showTodoEditor()
2261{ 2252{
2262#ifdef DESKTOP_VERSION 2253#ifdef DESKTOP_VERSION
2263 mTodoEditor->show(); 2254 mTodoEditor->show();
2264#else 2255#else
2265 mTodoEditor->showMaximized(); 2256 mTodoEditor->showMaximized();
2266#endif 2257#endif
2267} 2258}
2268void CalendarView::cancelIncidence(Incidence * inc ) 2259void CalendarView::cancelIncidence(Incidence * inc )
2269{ 2260{
2270 inc->setCancelled( ! inc->cancelled() ); 2261 inc->setCancelled( ! inc->cancelled() );
2271 changeIncidenceDisplay( inc,KOGlobals::EVENTEDITED ); 2262 changeIncidenceDisplay( inc,KOGlobals::EVENTEDITED );
2272 updateView(); 2263 updateView();
2273} 2264}
2274void CalendarView::cloneIncidence(Incidence * orgInc ) 2265void CalendarView::cloneIncidence(Incidence * orgInc )
2275{ 2266{
2276 Incidence * newInc = orgInc->clone(); 2267 Incidence * newInc = orgInc->clone();
2277 newInc->recreate(); 2268 newInc->recreate();
2278 2269
2279 if ( newInc->type() == "Todo" ) { 2270 if ( newInc->type() == "Todo" ) {
2280 Todo* t = (Todo*) newInc; 2271 Todo* t = (Todo*) newInc;
2281 mTodoEditor->editTodo( t ); 2272 mTodoEditor->editTodo( t );
2282 showTodoEditor(); 2273 showTodoEditor();
2283 if ( mTodoEditor->exec() ) { 2274 if ( mTodoEditor->exec() ) {
2284 mCalendar->addTodo( t ); 2275 mCalendar->addTodo( t );
2285 updateView(); 2276 updateView();
2286 } else { 2277 } else {
2287 delete t; 2278 delete t;
2288 } 2279 }
2289 } 2280 }
2290 else { 2281 else {
2291 Event* e = (Event*) newInc; 2282 Event* e = (Event*) newInc;
2292 mEventEditor->editEvent( e ); 2283 mEventEditor->editEvent( e );
2293 showEventEditor(); 2284 showEventEditor();
2294 if ( mEventEditor->exec() ) { 2285 if ( mEventEditor->exec() ) {
2295 mCalendar->addEvent( e ); 2286 mCalendar->addEvent( e );
2296 updateView(); 2287 updateView();
2297 } else { 2288 } else {
2298 delete e; 2289 delete e;
2299 } 2290 }
2300 } 2291 }
2301} 2292}
2302 2293
2303void CalendarView::newEvent() 2294void CalendarView::newEvent()
2304{ 2295{
2305 // TODO: Replace this code by a common eventDurationHint of KOBaseView. 2296 // TODO: Replace this code by a common eventDurationHint of KOBaseView.
2306 KOAgendaView *aView = mViewManager->agendaView(); 2297 KOAgendaView *aView = mViewManager->agendaView();
2307 if (aView) { 2298 if (aView) {
2308 if (aView->selectionStart().isValid()) { 2299 if (aView->selectionStart().isValid()) {
2309 if (aView->selectedIsAllDay()) { 2300 if (aView->selectedIsAllDay()) {
2310 newEvent(aView->selectionStart(),aView->selectionEnd(),true); 2301 newEvent(aView->selectionStart(),aView->selectionEnd(),true);
2311 } else { 2302 } else {
2312 newEvent(aView->selectionStart(),aView->selectionEnd()); 2303 newEvent(aView->selectionStart(),aView->selectionEnd());
2313 } 2304 }
2314 return; 2305 return;
2315 } 2306 }
2316 } 2307 }
2317 2308
2318 QDate date = mNavigator->selectedDates().first(); 2309 QDate date = mNavigator->selectedDates().first();
2319 QDateTime current = QDateTime::currentDateTime(); 2310 QDateTime current = QDateTime::currentDateTime();
2320 if ( date <= current.date() ) { 2311 if ( date <= current.date() ) {
2321 int hour = current.time().hour() +1; 2312 int hour = current.time().hour() +1;
2322 newEvent( QDateTime( current.date(), QTime( hour, 0, 0 ) ), 2313 newEvent( QDateTime( current.date(), QTime( hour, 0, 0 ) ),
2323 QDateTime( current.date(), QTime( hour+ KOPrefs::instance()->mDefaultDuration, 0, 0 ) ) ); 2314 QDateTime( current.date(), QTime( hour+ KOPrefs::instance()->mDefaultDuration, 0, 0 ) ) );
2324 } else 2315 } else
2325 newEvent( QDateTime( date, QTime( KOPrefs::instance()->mStartTime, 0, 0 ) ), 2316 newEvent( QDateTime( date, QTime( KOPrefs::instance()->mStartTime, 0, 0 ) ),
2326 QDateTime( date, QTime( KOPrefs::instance()->mStartTime + 2317 QDateTime( date, QTime( KOPrefs::instance()->mStartTime +
2327 KOPrefs::instance()->mDefaultDuration, 0, 0 ) ) ); 2318 KOPrefs::instance()->mDefaultDuration, 0, 0 ) ) );
2328} 2319}
2329 2320
2330void CalendarView::newEvent(QDateTime fh) 2321void CalendarView::newEvent(QDateTime fh)
2331{ 2322{
2332 newEvent(fh, 2323 newEvent(fh,
2333 QDateTime(fh.addSecs(3600*KOPrefs::instance()->mDefaultDuration))); 2324 QDateTime(fh.addSecs(3600*KOPrefs::instance()->mDefaultDuration)));
2334} 2325}
2335 2326
2336void CalendarView::newEvent(QDate dt) 2327void CalendarView::newEvent(QDate dt)
2337{ 2328{
2338 newEvent(QDateTime(dt, QTime(0,0,0)), 2329 newEvent(QDateTime(dt, QTime(0,0,0)),
2339 QDateTime(dt, QTime(0,0,0)), true); 2330 QDateTime(dt, QTime(0,0,0)), true);
2340} 2331}
2341 2332
2342void CalendarView::newEvent(QDateTime fromHint, QDateTime toHint, bool allDay) 2333void CalendarView::newEvent(QDateTime fromHint, QDateTime toHint, bool allDay)
2343{ 2334{
2344 2335
2345 mEventEditor->newEvent(fromHint,toHint,allDay); 2336 mEventEditor->newEvent(fromHint,toHint,allDay);
2346 if ( mFilterView->filtersEnabled() ) { 2337 if ( mFilterView->filtersEnabled() ) {
2347 CalFilter *filter = mFilterView->selectedFilter(); 2338 CalFilter *filter = mFilterView->selectedFilter();
2348 if (filter && filter->showCategories()) { 2339 if (filter && filter->showCategories()) {
2349 mEventEditor->setCategories(filter->categoryList().join(",") ); 2340 mEventEditor->setCategories(filter->categoryList().join(",") );
2350 } 2341 }
2351 if ( filter ) 2342 if ( filter )
2352 mEventEditor->setSecrecy( filter->getSecrecy() ); 2343 mEventEditor->setSecrecy( filter->getSecrecy() );
2353 } 2344 }
2354 showEventEditor(); 2345 showEventEditor();
2355} 2346}
2356void CalendarView::todoAdded(Todo * t) 2347void CalendarView::todoAdded(Todo * t)
2357{ 2348{
2358 2349
2359 changeTodoDisplay ( t ,KOGlobals::EVENTADDED); 2350 changeTodoDisplay ( t ,KOGlobals::EVENTADDED);
2360 updateTodoViews(); 2351 updateTodoViews();
2361} 2352}
2362void CalendarView::todoChanged(Todo * t) 2353void CalendarView::todoChanged(Todo * t)
2363{ 2354{
2364 emit todoModified( t, 4 ); 2355 emit todoModified( t, 4 );
2365 // updateTodoViews(); 2356 // updateTodoViews();
2366} 2357}
2367void CalendarView::todoToBeDeleted(Todo *) 2358void CalendarView::todoToBeDeleted(Todo *)
2368{ 2359{
2369 //qDebug("todoToBeDeleted(Todo *) "); 2360 //qDebug("todoToBeDeleted(Todo *) ");
2370 updateTodoViews(); 2361 updateTodoViews();
2371} 2362}
2372void CalendarView::todoDeleted() 2363void CalendarView::todoDeleted()
2373{ 2364{
2374 //qDebug(" todoDeleted()"); 2365 //qDebug(" todoDeleted()");
2375 updateTodoViews(); 2366 updateTodoViews();
2376} 2367}
2377 2368
2378 2369
2379 2370
2380void CalendarView::newTodo() 2371void CalendarView::newTodo()
2381{ 2372{
2382 2373
2383 mTodoEditor->newTodo(QDateTime::currentDateTime().addDays(7),0,true); 2374 mTodoEditor->newTodo(QDateTime::currentDateTime().addDays(7),0,true);
2384 if ( mFilterView->filtersEnabled() ) { 2375 if ( mFilterView->filtersEnabled() ) {
2385 CalFilter *filter = mFilterView->selectedFilter(); 2376 CalFilter *filter = mFilterView->selectedFilter();
2386 if (filter && filter->showCategories()) { 2377 if (filter && filter->showCategories()) {
2387 mTodoEditor->setCategories(filter->categoryList().join(",") ); 2378 mTodoEditor->setCategories(filter->categoryList().join(",") );
2388 } 2379 }
2389 if ( filter ) 2380 if ( filter )
2390 mTodoEditor->setSecrecy( filter->getSecrecy() ); 2381 mTodoEditor->setSecrecy( filter->getSecrecy() );
2391 } 2382 }
2392 showTodoEditor(); 2383 showTodoEditor();
2393} 2384}
2394 2385
2395void CalendarView::newSubTodo() 2386void CalendarView::newSubTodo()
2396{ 2387{
2397 Todo *todo = selectedTodo(); 2388 Todo *todo = selectedTodo();
2398 if ( todo ) newSubTodo( todo ); 2389 if ( todo ) newSubTodo( todo );
2399} 2390}
2400 2391
2401void CalendarView::newSubTodo(Todo *parentEvent) 2392void CalendarView::newSubTodo(Todo *parentEvent)
2402{ 2393{
2403 2394
2404 mTodoEditor->newTodo(QDateTime::currentDateTime().addDays(7),parentEvent,true); 2395 mTodoEditor->newTodo(QDateTime::currentDateTime().addDays(7),parentEvent,true);
2405 showTodoEditor(); 2396 showTodoEditor();
2406} 2397}
2407 2398
2408void CalendarView::newFloatingEvent() 2399void CalendarView::newFloatingEvent()
2409{ 2400{
2410 DateList tmpList = mNavigator->selectedDates(); 2401 DateList tmpList = mNavigator->selectedDates();
2411 QDate date = tmpList.first(); 2402 QDate date = tmpList.first();
2412 2403
2413 newEvent( QDateTime( date, QTime( 12, 0, 0 ) ), 2404 newEvent( QDateTime( date, QTime( 12, 0, 0 ) ),
2414 QDateTime( date, QTime( 12, 0, 0 ) ), true ); 2405 QDateTime( date, QTime( 12, 0, 0 ) ), true );
2415} 2406}
2416 2407
2417 2408
2418void CalendarView::editEvent( Event *event ) 2409void CalendarView::editEvent( Event *event )
2419{ 2410{
2420 2411
2421 if ( !event ) return; 2412 if ( !event ) return;
2422 if ( event->isReadOnly() ) { 2413 if ( event->isReadOnly() ) {
2423 showEvent( event ); 2414 showEvent( event );
2424 return; 2415 return;
2425 } 2416 }
2426 mEventEditor->editEvent( event , mFlagEditDescription); 2417 mEventEditor->editEvent( event , mFlagEditDescription);
2427 showEventEditor(); 2418 showEventEditor();
2428} 2419}
2429void CalendarView::editJournal( Journal *jour ) 2420void CalendarView::editJournal( Journal *jour )
2430{ 2421{
2431 if ( !jour ) return; 2422 if ( !jour ) return;
2432 mDialogManager->hideSearchDialog(); 2423 mDialogManager->hideSearchDialog();
2433 mViewManager->showJournalView(); 2424 mViewManager->showJournalView();
2434 mNavigator->slotDaySelect( jour->dtStart().date() ); 2425 mNavigator->slotDaySelect( jour->dtStart().date() );
2435} 2426}
2436void CalendarView::editTodo( Todo *todo ) 2427void CalendarView::editTodo( Todo *todo )
2437{ 2428{
2438 if ( !todo ) return; 2429 if ( !todo ) return;
2439 2430
2440 if ( todo->isReadOnly() ) { 2431 if ( todo->isReadOnly() ) {
2441 showTodo( todo ); 2432 showTodo( todo );
2442 return; 2433 return;
2443 } 2434 }
2444 mTodoEditor->editTodo( todo ,mFlagEditDescription); 2435 mTodoEditor->editTodo( todo ,mFlagEditDescription);
2445 showTodoEditor(); 2436 showTodoEditor();
2446 2437
2447} 2438}
2448 2439
2449KOEventViewerDialog* CalendarView::getEventViewerDialog() 2440KOEventViewerDialog* CalendarView::getEventViewerDialog()
2450{ 2441{
2451 if ( !mEventViewerDialog ) { 2442 if ( !mEventViewerDialog ) {
2452 mEventViewerDialog = new KOEventViewerDialog(this); 2443 mEventViewerDialog = new KOEventViewerDialog(this);
2453 connect( mEventViewerDialog, SIGNAL( editIncidence( Incidence* )), this, SLOT(editIncidence( Incidence* ) ) ); 2444 connect( mEventViewerDialog, SIGNAL( editIncidence( Incidence* )), this, SLOT(editIncidence( Incidence* ) ) );
2454 connect( this, SIGNAL(configChanged()), mEventViewerDialog, SLOT(updateConfig())); 2445 connect( this, SIGNAL(configChanged()), mEventViewerDialog, SLOT(updateConfig()));
2455 connect( mEventViewerDialog, SIGNAL(jumpToTime( const QDate &)), 2446 connect( mEventViewerDialog, SIGNAL(jumpToTime( const QDate &)),
2456 dateNavigator(), SLOT( selectWeek( const QDate & ) ) ); 2447 dateNavigator(), SLOT( selectWeek( const QDate & ) ) );
2457 connect( mEventViewerDialog, SIGNAL(showAgendaView( bool ) ), 2448 connect( mEventViewerDialog, SIGNAL(showAgendaView( bool ) ),
2458 viewManager(), SLOT( showAgendaView( bool ) ) ); 2449 viewManager(), SLOT( showAgendaView( bool ) ) );
2459 mEventViewerDialog->resize( 640, 480 ); 2450 mEventViewerDialog->resize( 640, 480 );
2460 2451
2461 } 2452 }
2462 return mEventViewerDialog; 2453 return mEventViewerDialog;
2463} 2454}
2464void CalendarView::showEvent(Event *event) 2455void CalendarView::showEvent(Event *event)
2465{ 2456{
2466 getEventViewerDialog()->setEvent(event); 2457 getEventViewerDialog()->setEvent(event);
2467 getEventViewerDialog()->showMe(); 2458 getEventViewerDialog()->showMe();
2468} 2459}
2469 2460
2470void CalendarView::showTodo(Todo *event) 2461void CalendarView::showTodo(Todo *event)
2471{ 2462{
2472 getEventViewerDialog()->setTodo(event); 2463 getEventViewerDialog()->setTodo(event);
2473 getEventViewerDialog()->showMe(); 2464 getEventViewerDialog()->showMe();
2474} 2465}
2475void CalendarView::showJournal( Journal *jour ) 2466void CalendarView::showJournal( Journal *jour )
2476{ 2467{
2477 getEventViewerDialog()->setJournal(jour); 2468 getEventViewerDialog()->setJournal(jour);
2478 getEventViewerDialog()->showMe(); 2469 getEventViewerDialog()->showMe();
2479 2470
2480} 2471}
2481// void CalendarView::todoModified (Todo *event, int changed) 2472// void CalendarView::todoModified (Todo *event, int changed)
2482// { 2473// {
2483// // if (mDialogList.find (event) != mDialogList.end ()) { 2474// // if (mDialogList.find (event) != mDialogList.end ()) {
2484// // kdDebug() << "Todo modified and open" << endl; 2475// // kdDebug() << "Todo modified and open" << endl;
2485// // KOTodoEditor* temp = (KOTodoEditor *) mDialogList[event]; 2476// // KOTodoEditor* temp = (KOTodoEditor *) mDialogList[event];
2486// // temp->modified (changed); 2477// // temp->modified (changed);
2487 2478
2488// // } 2479// // }
2489 2480
2490// mViewManager->updateView(); 2481// mViewManager->updateView();
2491// } 2482// }
2492 2483
2493void CalendarView::appointment_show() 2484void CalendarView::appointment_show()
2494{ 2485{
2495 Event *anEvent = 0; 2486 Event *anEvent = 0;
2496 2487
2497 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first(); 2488 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first();
2498 2489
2499 if (mViewManager->currentView()->isEventView()) { 2490 if (mViewManager->currentView()->isEventView()) {
2500 if ( incidence && incidence->type() == "Event" ) { 2491 if ( incidence && incidence->type() == "Event" ) {
2501 anEvent = static_cast<Event *>(incidence); 2492 anEvent = static_cast<Event *>(incidence);
2502 } 2493 }
2503 } 2494 }
2504 2495
2505 if (!anEvent) { 2496 if (!anEvent) {
2506 KNotifyClient::beep(); 2497 KNotifyClient::beep();
2507 return; 2498 return;
2508 } 2499 }
2509 2500
2510 showEvent(anEvent); 2501 showEvent(anEvent);
2511} 2502}
2512 2503
2513void CalendarView::appointment_edit() 2504void CalendarView::appointment_edit()
2514{ 2505{
2515 Event *anEvent = 0; 2506 Event *anEvent = 0;
2516 2507
2517 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first(); 2508 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first();
2518 2509
2519 if (mViewManager->currentView()->isEventView()) { 2510 if (mViewManager->currentView()->isEventView()) {
2520 if ( incidence && incidence->type() == "Event" ) { 2511 if ( incidence && incidence->type() == "Event" ) {
2521 anEvent = static_cast<Event *>(incidence); 2512 anEvent = static_cast<Event *>(incidence);
2522 } 2513 }
2523 } 2514 }
2524 2515
2525 if (!anEvent) { 2516 if (!anEvent) {
2526 KNotifyClient::beep(); 2517 KNotifyClient::beep();
2527 return; 2518 return;
2528 } 2519 }
2529 2520
2530 editEvent(anEvent); 2521 editEvent(anEvent);
2531} 2522}
2532 2523
2533void CalendarView::appointment_delete() 2524void CalendarView::appointment_delete()
2534{ 2525{
2535 Event *anEvent = 0; 2526 Event *anEvent = 0;
2536 2527
2537 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first(); 2528 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first();
2538 2529
2539 if (mViewManager->currentView()->isEventView()) { 2530 if (mViewManager->currentView()->isEventView()) {
2540 if ( incidence && incidence->type() == "Event" ) { 2531 if ( incidence && incidence->type() == "Event" ) {
2541 anEvent = static_cast<Event *>(incidence); 2532 anEvent = static_cast<Event *>(incidence);
2542 } 2533 }
2543 } 2534 }
2544 2535
2545 if (!anEvent) { 2536 if (!anEvent) {
2546 KNotifyClient::beep(); 2537 KNotifyClient::beep();
2547 return; 2538 return;
2548 } 2539 }
2549 2540
2550 deleteEvent(anEvent); 2541 deleteEvent(anEvent);
2551} 2542}
2552 2543
2553void CalendarView::todo_unsub(Todo *anTodo ) 2544void CalendarView::todo_unsub(Todo *anTodo )
2554{ 2545{
2555 // Todo *anTodo = selectedTodo(); 2546 // Todo *anTodo = selectedTodo();
2556 if (!anTodo) return; 2547 if (!anTodo) return;
2557 if (!anTodo->relatedTo()) return; 2548 if (!anTodo->relatedTo()) return;
2558 anTodo->relatedTo()->removeRelation(anTodo); 2549 anTodo->relatedTo()->removeRelation(anTodo);
2559 anTodo->setRelatedTo(0); 2550 anTodo->setRelatedTo(0);
2560 anTodo->updated(); 2551 anTodo->updated();
2561 anTodo->setRelatedToUid(""); 2552 anTodo->setRelatedToUid("");
2562 setModified(true); 2553 setModified(true);
2563 updateView(); 2554 updateView();
2564} 2555}
2565 2556
2566void CalendarView::deleteTodo(Todo *todo) 2557void CalendarView::deleteTodo(Todo *todo)
2567{ 2558{
2568 if (!todo) { 2559 if (!todo) {
2569 KNotifyClient::beep(); 2560 KNotifyClient::beep();
2570 return; 2561 return;
2571 } 2562 }
2572 if (KOPrefs::instance()->mConfirm) { 2563 if (KOPrefs::instance()->mConfirm) {
2573 switch (msgItemDelete()) { 2564 switch (msgItemDelete()) {
2574 case KMessageBox::Continue: // OK 2565 case KMessageBox::Continue: // OK
2575 if (!todo->relations().isEmpty()) { 2566 if (!todo->relations().isEmpty()) {
2576 KMessageBox::sorry(this,i18n("Cannot delete To-Do\nwhich has children."), 2567 KMessageBox::sorry(this,i18n("Cannot delete To-Do\nwhich has children."),
2577 i18n("Delete To-Do")); 2568 i18n("Delete To-Do"));
2578 } else { 2569 } else {
2579 checkZaurusId( todo->zaurusId(), true ); 2570 checkExternalId( todo );
2580 calendar()->deleteTodo(todo); 2571 calendar()->deleteTodo(todo);
2581 changeTodoDisplay( todo,KOGlobals::EVENTDELETED ); 2572 changeTodoDisplay( todo,KOGlobals::EVENTDELETED );
2582 updateView(); 2573 updateView();
2583 } 2574 }
2584 break; 2575 break;
2585 } // switch 2576 } // switch
2586 } else { 2577 } else {
2587 if (!todo->relations().isEmpty()) { 2578 if (!todo->relations().isEmpty()) {
2588 KMessageBox::sorry(this,i18n("Cannot delete To-Do\nwhich has children."), 2579 KMessageBox::sorry(this,i18n("Cannot delete To-Do\nwhich has children."),
2589 i18n("Delete To-Do")); 2580 i18n("Delete To-Do"));
2590 } else { 2581 } else {
2591 checkZaurusId( todo->zaurusId(), true ); 2582 checkExternalId( todo );
2592 mCalendar->deleteTodo(todo); 2583 mCalendar->deleteTodo(todo);
2593 changeTodoDisplay( todo,KOGlobals::EVENTDELETED ); 2584 changeTodoDisplay( todo,KOGlobals::EVENTDELETED );
2594 updateView(); 2585 updateView();
2595 } 2586 }
2596 } 2587 }
2597 emit updateSearchDialog(); 2588 emit updateSearchDialog();
2598} 2589}
2599void CalendarView::deleteJournal(Journal *jour) 2590void CalendarView::deleteJournal(Journal *jour)
2600{ 2591{
2601 if (!jour) { 2592 if (!jour) {
2602 KNotifyClient::beep(); 2593 KNotifyClient::beep();
2603 return; 2594 return;
2604 } 2595 }
2605 if (KOPrefs::instance()->mConfirm) { 2596 if (KOPrefs::instance()->mConfirm) {
2606 switch (msgItemDelete()) { 2597 switch (msgItemDelete()) {
2607 case KMessageBox::Continue: // OK 2598 case KMessageBox::Continue: // OK
2608 calendar()->deleteJournal(jour); 2599 calendar()->deleteJournal(jour);
2609 updateView(); 2600 updateView();
2610 break; 2601 break;
2611 } // switch 2602 } // switch
2612 } else { 2603 } else {
2613 calendar()->deleteJournal(jour);; 2604 calendar()->deleteJournal(jour);;
2614 updateView(); 2605 updateView();
2615 } 2606 }
2616 emit updateSearchDialog(); 2607 emit updateSearchDialog();
2617} 2608}
2618 2609
2619void CalendarView::deleteEvent(Event *anEvent) 2610void CalendarView::deleteEvent(Event *anEvent)
2620{ 2611{
2621 if (!anEvent) { 2612 if (!anEvent) {
2622 KNotifyClient::beep(); 2613 KNotifyClient::beep();
2623 return; 2614 return;
2624 } 2615 }
2625 2616
2626 if (anEvent->recurrence()->doesRecur()) { 2617 if (anEvent->recurrence()->doesRecur()) {
2627 QDate itemDate = mViewManager->currentSelectionDate(); 2618 QDate itemDate = mViewManager->currentSelectionDate();
2628 int km; 2619 int km;
2629 if (!itemDate.isValid()) { 2620 if (!itemDate.isValid()) {
2630 //kdDebug() << "Date Not Valid" << endl; 2621 //kdDebug() << "Date Not Valid" << endl;
2631 if (KOPrefs::instance()->mConfirm) { 2622 if (KOPrefs::instance()->mConfirm) {
2632 km = KMessageBox::warningContinueCancel(this,anEvent->summary() + 2623 km = KMessageBox::warningContinueCancel(this,anEvent->summary() +
2633 i18n("\nThis event recurs\nover multiple dates.\nAre you sure you want\nto delete this event\nand all its recurrences?"), 2624 i18n("\nThis event recurs\nover multiple dates.\nAre you sure you want\nto delete this event\nand all its recurrences?"),
2634 i18n("KO/Pi Confirmation"),i18n("Delete All")); 2625 i18n("KO/Pi Confirmation"),i18n("Delete All"));
2635 if ( km == KMessageBox::Continue ) 2626 if ( km == KMessageBox::Continue )
2636 km = KMessageBox::No; // No = all below 2627 km = KMessageBox::No; // No = all below
2637 } else 2628 } else
2638 km = KMessageBox::No; 2629 km = KMessageBox::No;
2639 } else { 2630 } else {
2640 km = KMessageBox::warningYesNoCancel(this,anEvent->summary() + 2631 km = KMessageBox::warningYesNoCancel(this,anEvent->summary() +
2641 i18n("\nThis event recurs\nover multiple dates.\nDo you want to delete\nall it's recurrences,\nor only the current one on:\n")+ 2632 i18n("\nThis event recurs\nover multiple dates.\nDo you want to delete\nall it's recurrences,\nor only the current one on:\n")+
2642 KGlobal::locale()->formatDate(itemDate)+i18n(" ?\n\nDelete:\n"), 2633 KGlobal::locale()->formatDate(itemDate)+i18n(" ?\n\nDelete:\n"),
2643 i18n("KO/Pi Confirmation"),i18n("Current"), 2634 i18n("KO/Pi Confirmation"),i18n("Current"),
2644 i18n("All")); 2635 i18n("All"));
2645 } 2636 }
2646 switch(km) { 2637 switch(km) {
2647 2638
2648 case KMessageBox::No: // Continue // all 2639 case KMessageBox::No: // Continue // all
2649 //qDebug("KMessageBox::No "); 2640 //qDebug("KMessageBox::No ");
2650 if (anEvent->organizer()==KOPrefs::instance()->email() && anEvent->attendeeCount()>0) 2641 if (anEvent->organizer()==KOPrefs::instance()->email() && anEvent->attendeeCount()>0)
2651 schedule(Scheduler::Cancel,anEvent); 2642 schedule(Scheduler::Cancel,anEvent);
2652 2643
2653 checkZaurusId( anEvent->zaurusId()); 2644 checkExternalId( anEvent);
2654 mCalendar->deleteEvent(anEvent); 2645 mCalendar->deleteEvent(anEvent);
2655 changeEventDisplay(anEvent,KOGlobals::EVENTDELETED); 2646 changeEventDisplay(anEvent,KOGlobals::EVENTDELETED);
2656 break; 2647 break;
2657 2648
2658 // Disabled because it does not work 2649 // Disabled because it does not work
2659 //#if 0 2650 //#if 0
2660 case KMessageBox::Yes: // just this one 2651 case KMessageBox::Yes: // just this one
2661 //QDate qd = mNavigator->selectedDates().first(); 2652 //QDate qd = mNavigator->selectedDates().first();
2662 //if (!qd.isValid()) { 2653 //if (!qd.isValid()) {
2663 // kdDebug() << "no date selected, or invalid date" << endl; 2654 // kdDebug() << "no date selected, or invalid date" << endl;
2664 // KNotifyClient::beep(); 2655 // KNotifyClient::beep();
2665 // return; 2656 // return;
2666 //} 2657 //}
2667 //while (!anEvent->recursOn(qd)) qd = qd.addDays(1); 2658 //while (!anEvent->recursOn(qd)) qd = qd.addDays(1);
2668 if (itemDate!=QDate(1,1,1) || itemDate.isValid()) { 2659 if (itemDate!=QDate(1,1,1) || itemDate.isValid()) {
2669 anEvent->addExDate(itemDate); 2660 anEvent->addExDate(itemDate);
2670 int duration = anEvent->recurrence()->duration(); 2661 int duration = anEvent->recurrence()->duration();
2671 if ( duration > 0 ) { 2662 if ( duration > 0 ) {
2672 anEvent->recurrence()->setDuration( duration - 1 ); 2663 anEvent->recurrence()->setDuration( duration - 1 );
2673 } 2664 }
2674 changeEventDisplay(anEvent, KOGlobals::EVENTEDITED); 2665 changeEventDisplay(anEvent, KOGlobals::EVENTEDITED);
2675 } 2666 }
2676 break; 2667 break;
2677 //#endif 2668 //#endif
2678 } // switch 2669 } // switch
2679 } else { 2670 } else {
2680 if (KOPrefs::instance()->mConfirm) { 2671 if (KOPrefs::instance()->mConfirm) {
2681 switch (KMessageBox::warningContinueCancel(this,anEvent->summary() + 2672 switch (KMessageBox::warningContinueCancel(this,anEvent->summary() +
2682 i18n("\nAre you sure you want\nto delete this event?"), 2673 i18n("\nAre you sure you want\nto delete this event?"),
2683 i18n("KO/Pi Confirmation"),i18n("Delete"))) { 2674 i18n("KO/Pi Confirmation"),i18n("Delete"))) {
2684 case KMessageBox::Continue: // OK 2675 case KMessageBox::Continue: // OK
2685 if (anEvent->organizer()==KOPrefs::instance()->email() && anEvent->attendeeCount()>0) 2676 if (anEvent->organizer()==KOPrefs::instance()->email() && anEvent->attendeeCount()>0)
2686 schedule(Scheduler::Cancel,anEvent); 2677 schedule(Scheduler::Cancel,anEvent);
2687 checkZaurusId( anEvent->zaurusId()); 2678 checkExternalId( anEvent);
2688 mCalendar->deleteEvent(anEvent); 2679 mCalendar->deleteEvent(anEvent);
2689 changeEventDisplay(anEvent, KOGlobals::EVENTDELETED); 2680 changeEventDisplay(anEvent, KOGlobals::EVENTDELETED);
2690 break; 2681 break;
2691 } // switch 2682 } // switch
2692 } else { 2683 } else {
2693 if (anEvent->organizer()==KOPrefs::instance()->email() && anEvent->attendeeCount()>0) 2684 if (anEvent->organizer()==KOPrefs::instance()->email() && anEvent->attendeeCount()>0)
2694 schedule(Scheduler::Cancel,anEvent); 2685 schedule(Scheduler::Cancel,anEvent);
2695 checkZaurusId( anEvent->zaurusId()); 2686 checkExternalId( anEvent);
2696 mCalendar->deleteEvent(anEvent); 2687 mCalendar->deleteEvent(anEvent);
2697 changeEventDisplay(anEvent, KOGlobals::EVENTDELETED); 2688 changeEventDisplay(anEvent, KOGlobals::EVENTDELETED);
2698 } 2689 }
2699 } // if-else 2690 } // if-else
2700 emit updateSearchDialog(); 2691 emit updateSearchDialog();
2701} 2692}
2702 2693
2703bool CalendarView::deleteEvent(const QString &uid) 2694bool CalendarView::deleteEvent(const QString &uid)
2704{ 2695{
2705 Event *ev = mCalendar->event(uid); 2696 Event *ev = mCalendar->event(uid);
2706 if (ev) { 2697 if (ev) {
2707 deleteEvent(ev); 2698 deleteEvent(ev);
2708 return true; 2699 return true;
2709 } else { 2700 } else {
2710 return false; 2701 return false;
2711 } 2702 }
2712} 2703}
2713 2704
2714/*****************************************************************************/ 2705/*****************************************************************************/
2715 2706
2716void CalendarView::action_mail() 2707void CalendarView::action_mail()
2717{ 2708{
2718#ifndef KORG_NOMAIL 2709#ifndef KORG_NOMAIL
2719 KOMailClient mailClient; 2710 KOMailClient mailClient;
2720 2711
2721 Incidence *incidence = currentSelection(); 2712 Incidence *incidence = currentSelection();
2722 2713
2723 if (!incidence) { 2714 if (!incidence) {
2724 KMessageBox::sorry(this,i18n("Can't generate mail:\nNo event selected.")); 2715 KMessageBox::sorry(this,i18n("Can't generate mail:\nNo event selected."));
2725 return; 2716 return;
2726 } 2717 }
2727 if(incidence->attendeeCount() == 0 ) { 2718 if(incidence->attendeeCount() == 0 ) {
2728 KMessageBox::sorry(this, 2719 KMessageBox::sorry(this,
2729 i18n("Can't generate mail:\nNo attendees defined.\n")); 2720 i18n("Can't generate mail:\nNo attendees defined.\n"));
2730 return; 2721 return;
2731 } 2722 }
2732 2723
2733 CalendarLocal cal_tmp; 2724 CalendarLocal cal_tmp;
2734 Event *event = 0; 2725 Event *event = 0;
2735 Event *ev = 0; 2726 Event *ev = 0;
2736 if ( incidence && incidence->type() == "Event" ) { 2727 if ( incidence && incidence->type() == "Event" ) {
2737 event = static_cast<Event *>(incidence); 2728 event = static_cast<Event *>(incidence);
2738 ev = new Event(*event); 2729 ev = new Event(*event);
2739 cal_tmp.addEvent(ev); 2730 cal_tmp.addEvent(ev);
2740 } 2731 }
2741 ICalFormat mForm( KOPrefs::instance()->mUseQuicksave); 2732 ICalFormat mForm( KOPrefs::instance()->mUseQuicksave);
2742 QString attachment = mForm.toString( &cal_tmp ); 2733 QString attachment = mForm.toString( &cal_tmp );
2743 if (ev) delete(ev); 2734 if (ev) delete(ev);
2744 2735
2745 mailClient.mailAttendees(currentSelection(), attachment); 2736 mailClient.mailAttendees(currentSelection(), attachment);
2746 2737
2747#endif 2738#endif
2748 2739
2749#if 0 2740#if 0
2750 Event *anEvent = 0; 2741 Event *anEvent = 0;
2751 if (mViewManager->currentView()->isEventView()) { 2742 if (mViewManager->currentView()->isEventView()) {
2752 anEvent = dynamic_cast<Event *>((mViewManager->currentView()->selectedIncidences()).first()); 2743 anEvent = dynamic_cast<Event *>((mViewManager->currentView()->selectedIncidences()).first());
2753 } 2744 }
2754 2745
2755 if (!anEvent) { 2746 if (!anEvent) {
2756 KMessageBox::sorry(this,i18n("Can't generate mail:\nNo event selected.")); 2747 KMessageBox::sorry(this,i18n("Can't generate mail:\nNo event selected."));
2757 return; 2748 return;
2758 } 2749 }
2759 if(anEvent->attendeeCount() == 0 ) { 2750 if(anEvent->attendeeCount() == 0 ) {
2760 KMessageBox::sorry(this, 2751 KMessageBox::sorry(this,
2761 i18n("Can't generate mail:\nNo attendees defined.\n")); 2752 i18n("Can't generate mail:\nNo attendees defined.\n"));
2762 return; 2753 return;
2763 } 2754 }
2764 2755
2765 mailobject.emailEvent(anEvent); 2756 mailobject.emailEvent(anEvent);
2766#endif 2757#endif
2767} 2758}
2768 2759
2769 2760
2770void CalendarView::schedule_publish(Incidence *incidence) 2761void CalendarView::schedule_publish(Incidence *incidence)
2771{ 2762{
2772 Event *event = 0; 2763 Event *event = 0;
2773 Todo *todo = 0; 2764 Todo *todo = 0;
2774 2765
2775 if (incidence == 0) { 2766 if (incidence == 0) {
2776 incidence = mViewManager->currentView()->selectedIncidences().first(); 2767 incidence = mViewManager->currentView()->selectedIncidences().first();
2777 if (incidence == 0) { 2768 if (incidence == 0) {
2778 incidence = mTodoList->selectedIncidences().first(); 2769 incidence = mTodoList->selectedIncidences().first();
2779 } 2770 }
2780 } 2771 }
2781 if ( incidence && incidence->type() == "Event" ) { 2772 if ( incidence && incidence->type() == "Event" ) {
2782 event = static_cast<Event *>(incidence); 2773 event = static_cast<Event *>(incidence);
2783 } else { 2774 } else {
2784 if ( incidence && incidence->type() == "Todo" ) { 2775 if ( incidence && incidence->type() == "Todo" ) {
2785 todo = static_cast<Todo *>(incidence); 2776 todo = static_cast<Todo *>(incidence);
2786 } 2777 }
2787 } 2778 }
2788 2779
2789 if (!event && !todo) { 2780 if (!event && !todo) {
2790 KMessageBox::sorry(this,i18n("No event selected.")); 2781 KMessageBox::sorry(this,i18n("No event selected."));
2791 return; 2782 return;
2792 } 2783 }
2793 2784
2794 PublishDialog *publishdlg = new PublishDialog(); 2785 PublishDialog *publishdlg = new PublishDialog();
2795 if (incidence->attendeeCount()>0) { 2786 if (incidence->attendeeCount()>0) {
2796 QPtrList<Attendee> attendees = incidence->attendees(); 2787 QPtrList<Attendee> attendees = incidence->attendees();
2797 attendees.first(); 2788 attendees.first();
2798 while ( attendees.current()!=0 ) { 2789 while ( attendees.current()!=0 ) {
2799 publishdlg->addAttendee(attendees.current()); 2790 publishdlg->addAttendee(attendees.current());
2800 attendees.next(); 2791 attendees.next();
2801 } 2792 }
2802 } 2793 }
2803 bool send = true; 2794 bool send = true;
2804 if ( KOPrefs::instance()->mMailClient == KOPrefs::MailClientSendmail ) { 2795 if ( KOPrefs::instance()->mMailClient == KOPrefs::MailClientSendmail ) {
2805 if ( publishdlg->exec() != QDialog::Accepted ) 2796 if ( publishdlg->exec() != QDialog::Accepted )
2806 send = false; 2797 send = false;
2807 } 2798 }
2808 if ( send ) { 2799 if ( send ) {
2809 OutgoingDialog *dlg = mDialogManager->outgoingDialog(); 2800 OutgoingDialog *dlg = mDialogManager->outgoingDialog();
2810 if ( event ) { 2801 if ( event ) {
2811 Event *ev = new Event(*event); 2802 Event *ev = new Event(*event);
2812 ev->registerObserver(0); 2803 ev->registerObserver(0);
2813 ev->clearAttendees(); 2804 ev->clearAttendees();
2814 if (!dlg->addMessage(ev,Scheduler::Publish,publishdlg->addresses())) { 2805 if (!dlg->addMessage(ev,Scheduler::Publish,publishdlg->addresses())) {
2815 delete(ev); 2806 delete(ev);
2816 } 2807 }
2817 } else { 2808 } else {
2818 if ( todo ) { 2809 if ( todo ) {
2819 Todo *ev = new Todo(*todo); 2810 Todo *ev = new Todo(*todo);
2820 ev->registerObserver(0); 2811 ev->registerObserver(0);
2821 ev->clearAttendees(); 2812 ev->clearAttendees();
2822 if (!dlg->addMessage(ev,Scheduler::Publish,publishdlg->addresses())) { 2813 if (!dlg->addMessage(ev,Scheduler::Publish,publishdlg->addresses())) {
2823 delete(ev); 2814 delete(ev);
2824 } 2815 }
2825 } 2816 }
2826 } 2817 }
2827 } 2818 }
2828 delete publishdlg; 2819 delete publishdlg;
2829} 2820}
2830 2821
2831void CalendarView::schedule_request(Incidence *incidence) 2822void CalendarView::schedule_request(Incidence *incidence)
2832{ 2823{
2833 schedule(Scheduler::Request,incidence); 2824 schedule(Scheduler::Request,incidence);
2834} 2825}
2835 2826
2836void CalendarView::schedule_refresh(Incidence *incidence) 2827void CalendarView::schedule_refresh(Incidence *incidence)
2837{ 2828{
2838 schedule(Scheduler::Refresh,incidence); 2829 schedule(Scheduler::Refresh,incidence);
2839} 2830}
2840 2831
2841void CalendarView::schedule_cancel(Incidence *incidence) 2832void CalendarView::schedule_cancel(Incidence *incidence)
2842{ 2833{
2843 schedule(Scheduler::Cancel,incidence); 2834 schedule(Scheduler::Cancel,incidence);
2844} 2835}
2845 2836
2846void CalendarView::schedule_add(Incidence *incidence) 2837void CalendarView::schedule_add(Incidence *incidence)
2847{ 2838{
2848 schedule(Scheduler::Add,incidence); 2839 schedule(Scheduler::Add,incidence);
2849} 2840}
2850 2841
2851void CalendarView::schedule_reply(Incidence *incidence) 2842void CalendarView::schedule_reply(Incidence *incidence)
2852{ 2843{
2853 schedule(Scheduler::Reply,incidence); 2844 schedule(Scheduler::Reply,incidence);
2854} 2845}
2855 2846
2856void CalendarView::schedule_counter(Incidence *incidence) 2847void CalendarView::schedule_counter(Incidence *incidence)
2857{ 2848{
2858 schedule(Scheduler::Counter,incidence); 2849 schedule(Scheduler::Counter,incidence);
2859} 2850}
2860 2851
2861void CalendarView::schedule_declinecounter(Incidence *incidence) 2852void CalendarView::schedule_declinecounter(Incidence *incidence)
2862{ 2853{
2863 schedule(Scheduler::Declinecounter,incidence); 2854 schedule(Scheduler::Declinecounter,incidence);
2864} 2855}
2865 2856
2866void CalendarView::schedule_publish_freebusy(int daysToPublish) 2857void CalendarView::schedule_publish_freebusy(int daysToPublish)
2867{ 2858{
2868 QDateTime start = QDateTime::currentDateTime(); 2859 QDateTime start = QDateTime::currentDateTime();
2869 QDateTime end = start.addDays(daysToPublish); 2860 QDateTime end = start.addDays(daysToPublish);
2870 2861
2871 FreeBusy *freebusy = new FreeBusy(mCalendar, start, end); 2862 FreeBusy *freebusy = new FreeBusy(mCalendar, start, end);
2872 freebusy->setOrganizer(KOPrefs::instance()->email()); 2863 freebusy->setOrganizer(KOPrefs::instance()->email());
2873 2864
2874 2865
2875 PublishDialog *publishdlg = new PublishDialog(); 2866 PublishDialog *publishdlg = new PublishDialog();
2876 if ( publishdlg->exec() == QDialog::Accepted ) { 2867 if ( publishdlg->exec() == QDialog::Accepted ) {
2877 OutgoingDialog *dlg = mDialogManager->outgoingDialog(); 2868 OutgoingDialog *dlg = mDialogManager->outgoingDialog();
2878 if (!dlg->addMessage(freebusy,Scheduler::Publish,publishdlg->addresses())) { 2869 if (!dlg->addMessage(freebusy,Scheduler::Publish,publishdlg->addresses())) {
2879 delete(freebusy); 2870 delete(freebusy);
2880 } 2871 }
2881 } 2872 }
2882 delete publishdlg; 2873 delete publishdlg;
2883} 2874}
2884 2875
2885void CalendarView::schedule(Scheduler::Method method, Incidence *incidence) 2876void CalendarView::schedule(Scheduler::Method method, Incidence *incidence)
2886{ 2877{
2887 Event *event = 0; 2878 Event *event = 0;
2888 Todo *todo = 0; 2879 Todo *todo = 0;
2889 2880
2890 if (incidence == 0) { 2881 if (incidence == 0) {
2891 incidence = mViewManager->currentView()->selectedIncidences().first(); 2882 incidence = mViewManager->currentView()->selectedIncidences().first();
2892 if (incidence == 0) { 2883 if (incidence == 0) {
2893 incidence = mTodoList->selectedIncidences().first(); 2884 incidence = mTodoList->selectedIncidences().first();
2894 } 2885 }
2895 } 2886 }
2896 if ( incidence && incidence->type() == "Event" ) { 2887 if ( incidence && incidence->type() == "Event" ) {
2897 event = static_cast<Event *>(incidence); 2888 event = static_cast<Event *>(incidence);
2898 } 2889 }
2899 if ( incidence && incidence->type() == "Todo" ) { 2890 if ( incidence && incidence->type() == "Todo" ) {
2900 todo = static_cast<Todo *>(incidence); 2891 todo = static_cast<Todo *>(incidence);
2901 } 2892 }
2902 2893
2903 if (!event && !todo) { 2894 if (!event && !todo) {
2904 KMessageBox::sorry(this,i18n("No event selected.")); 2895 KMessageBox::sorry(this,i18n("No event selected."));
2905 return; 2896 return;
2906 } 2897 }
2907 2898
2908 if( incidence->attendeeCount() == 0 && method != Scheduler::Publish ) { 2899 if( incidence->attendeeCount() == 0 && method != Scheduler::Publish ) {
2909 KMessageBox::sorry(this,i18n("The event has no attendees.")); 2900 KMessageBox::sorry(this,i18n("The event has no attendees."));
2910 return; 2901 return;
2911 } 2902 }
2912 2903
2913 Event *ev = 0; 2904 Event *ev = 0;
2914 if (event) ev = new Event(*event); 2905 if (event) ev = new Event(*event);
2915 Todo *to = 0; 2906 Todo *to = 0;
2916 if (todo) to = new Todo(*todo); 2907 if (todo) to = new Todo(*todo);
2917 2908
2918 if (method == Scheduler::Reply || method == Scheduler::Refresh) { 2909 if (method == Scheduler::Reply || method == Scheduler::Refresh) {
2919 Attendee *me = incidence->attendeeByMails(KOPrefs::instance()->mAdditionalMails,KOPrefs::instance()->email()); 2910 Attendee *me = incidence->attendeeByMails(KOPrefs::instance()->mAdditionalMails,KOPrefs::instance()->email());
2920 if (!me) { 2911 if (!me) {
2921 KMessageBox::sorry(this,i18n("Could not find your attendee entry.\nPlease check the emails.")); 2912 KMessageBox::sorry(this,i18n("Could not find your attendee entry.\nPlease check the emails."));
2922 return; 2913 return;
2923 } 2914 }
2924 if (me->status()==Attendee::NeedsAction && me->RSVP() && method==Scheduler::Reply) { 2915 if (me->status()==Attendee::NeedsAction && me->RSVP() && method==Scheduler::Reply) {
2925 StatusDialog *statdlg = new StatusDialog(this); 2916 StatusDialog *statdlg = new StatusDialog(this);
2926 if (!statdlg->exec()==QDialog::Accepted) return; 2917 if (!statdlg->exec()==QDialog::Accepted) return;
2927 me->setStatus( statdlg->status() ); 2918 me->setStatus( statdlg->status() );
2928 delete(statdlg); 2919 delete(statdlg);
2929 } 2920 }
2930 Attendee *menew = new Attendee(*me); 2921 Attendee *menew = new Attendee(*me);
2931 if (ev) { 2922 if (ev) {
2932 ev->clearAttendees(); 2923 ev->clearAttendees();
2933 ev->addAttendee(menew,false); 2924 ev->addAttendee(menew,false);
2934 } else { 2925 } else {
2935 if (to) { 2926 if (to) {
2936 todo->clearAttendees(); 2927 todo->clearAttendees();
2937 todo->addAttendee(menew,false); 2928 todo->addAttendee(menew,false);
2938 } 2929 }
2939 } 2930 }
2940 } 2931 }
2941 2932
2942 OutgoingDialog *dlg = mDialogManager->outgoingDialog(); 2933 OutgoingDialog *dlg = mDialogManager->outgoingDialog();
2943 if (ev) { 2934 if (ev) {
2944 if ( !dlg->addMessage(ev,method) ) delete(ev); 2935 if ( !dlg->addMessage(ev,method) ) delete(ev);
2945 } else { 2936 } else {
2946 if (to) { 2937 if (to) {
2947 if ( !dlg->addMessage(to,method) ) delete(to); 2938 if ( !dlg->addMessage(to,method) ) delete(to);
2948 } 2939 }
2949 } 2940 }
2950} 2941}
2951 2942
2952void CalendarView::openAddressbook() 2943void CalendarView::openAddressbook()
2953{ 2944{
2954 KRun::runCommand("kaddressbook"); 2945 KRun::runCommand("kaddressbook");
2955} 2946}
2956 2947
2957void CalendarView::setModified(bool modified) 2948void CalendarView::setModified(bool modified)
2958{ 2949{
2959 if ( modified ) 2950 if ( modified )
2960 emit signalmodified(); 2951 emit signalmodified();
2961 if (mModified != modified) { 2952 if (mModified != modified) {
2962 mModified = modified; 2953 mModified = modified;
2963 emit modifiedChanged(mModified); 2954 emit modifiedChanged(mModified);
2964 } 2955 }
2965} 2956}
2966 2957
2967bool CalendarView::isReadOnly() 2958bool CalendarView::isReadOnly()
2968{ 2959{
2969 return mReadOnly; 2960 return mReadOnly;
2970} 2961}
2971 2962
2972void CalendarView::setReadOnly(bool readOnly) 2963void CalendarView::setReadOnly(bool readOnly)
2973{ 2964{
2974 if (mReadOnly != readOnly) { 2965 if (mReadOnly != readOnly) {
2975 mReadOnly = readOnly; 2966 mReadOnly = readOnly;
2976 emit readOnlyChanged(mReadOnly); 2967 emit readOnlyChanged(mReadOnly);
2977 } 2968 }
2978} 2969}
2979 2970
2980bool CalendarView::isModified() 2971bool CalendarView::isModified()
2981{ 2972{
2982 return mModified; 2973 return mModified;
2983} 2974}
2984 2975
2985void CalendarView::printSetup() 2976void CalendarView::printSetup()
2986{ 2977{
2987#ifndef KORG_NOPRINTER 2978#ifndef KORG_NOPRINTER
2988 createPrinter(); 2979 createPrinter();
2989 2980
2990 mCalPrinter->setupPrinter(); 2981 mCalPrinter->setupPrinter();
2991#endif 2982#endif
2992} 2983}
2993 2984
2994void CalendarView::print() 2985void CalendarView::print()
2995{ 2986{
2996#ifndef KORG_NOPRINTER 2987#ifndef KORG_NOPRINTER
2997 createPrinter(); 2988 createPrinter();
2998 2989
2999 DateList tmpDateList = mNavigator->selectedDates(); 2990 DateList tmpDateList = mNavigator->selectedDates();
3000 mCalPrinter->print(CalPrinter::Month, 2991 mCalPrinter->print(CalPrinter::Month,
3001 tmpDateList.first(), tmpDateList.last()); 2992 tmpDateList.first(), tmpDateList.last());
3002#endif 2993#endif
3003} 2994}
3004 2995
3005void CalendarView::printPreview() 2996void CalendarView::printPreview()
3006{ 2997{
3007#ifndef KORG_NOPRINTER 2998#ifndef KORG_NOPRINTER
3008 kdDebug() << "CalendarView::printPreview()" << endl; 2999 kdDebug() << "CalendarView::printPreview()" << endl;
3009 3000
3010 createPrinter(); 3001 createPrinter();
3011 3002
3012 DateList tmpDateList = mNavigator->selectedDates(); 3003 DateList tmpDateList = mNavigator->selectedDates();
3013 3004
3014 mViewManager->currentView()->printPreview(mCalPrinter,tmpDateList.first(), 3005 mViewManager->currentView()->printPreview(mCalPrinter,tmpDateList.first(),
3015 tmpDateList.last()); 3006 tmpDateList.last());
3016#endif 3007#endif
3017} 3008}
3018 3009
3019void CalendarView::exportICalendar() 3010void CalendarView::exportICalendar()
3020{ 3011{
3021 QString filename = KFileDialog::getSaveFileName("icalout.ics",i18n("*.ics|ICalendars"),this); 3012 QString filename = KFileDialog::getSaveFileName("icalout.ics",i18n("*.ics|ICalendars"),this);
3022 3013
3023 // Force correct extension 3014 // Force correct extension
3024 if (filename.right(4) != ".ics") filename += ".ics"; 3015 if (filename.right(4) != ".ics") filename += ".ics";
3025 3016
3026 FileStorage storage( mCalendar, filename, new ICalFormat( KOPrefs::instance()->mUseQuicksave) ); 3017 FileStorage storage( mCalendar, filename, new ICalFormat( KOPrefs::instance()->mUseQuicksave) );
3027 storage.save(); 3018 storage.save();
3028} 3019}
3029 3020
3030bool CalendarView::exportVCalendar( QString filename ) 3021bool CalendarView::exportVCalendar( QString filename )
3031{ 3022{
3032 if (mCalendar->journals().count() > 0) { 3023 if (mCalendar->journals().count() > 0) {
3033 int result = KMessageBox::warningContinueCancel(this, 3024 int result = KMessageBox::warningContinueCancel(this,
3034 i18n("The journal entries can not be\nexported to a vCalendar file."), 3025 i18n("The journal entries can not be\nexported to a vCalendar file."),
3035 i18n("Data Loss Warning"),i18n("Proceed"),i18n("Cancel"), 3026 i18n("Data Loss Warning"),i18n("Proceed"),i18n("Cancel"),
3036 true); 3027 true);
3037 if (result != KMessageBox::Continue) return false; 3028 if (result != KMessageBox::Continue) return false;
3038 } 3029 }
3039 3030
3040 //QString filename = KFileDialog::getSaveFileName("vcalout.vcs",i18n("*.vcs|VCalendars"),this); 3031 //QString filename = KFileDialog::getSaveFileName("vcalout.vcs",i18n("*.vcs|VCalendars"),this);
3041 3032
3042 // Force correct extension 3033 // Force correct extension
3043 if (filename.right(4) != ".vcs") filename += ".vcs"; 3034 if (filename.right(4) != ".vcs") filename += ".vcs";
3044 3035
3045 FileStorage storage( mCalendar, filename, new VCalFormat ); 3036 FileStorage storage( mCalendar, filename, new VCalFormat );
3046 return storage.save(); 3037 return storage.save();
3047 3038
3048} 3039}
3049 3040
3050void CalendarView::eventUpdated(Incidence *) 3041void CalendarView::eventUpdated(Incidence *)
3051{ 3042{
3052 setModified(); 3043 setModified();
3053 // Don't call updateView here. The code, which has caused the update of the 3044 // Don't call updateView here. The code, which has caused the update of the
3054 // event is responsible for updating the view. 3045 // event is responsible for updating the view.
3055 // updateView(); 3046 // updateView();
3056} 3047}
3057 3048
3058void CalendarView::adaptNavigationUnits() 3049void CalendarView::adaptNavigationUnits()
3059{ 3050{
3060 if (mViewManager->currentView()->isEventView()) { 3051 if (mViewManager->currentView()->isEventView()) {
3061 int days = mViewManager->currentView()->currentDateCount(); 3052 int days = mViewManager->currentView()->currentDateCount();
3062 if (days == 1) { 3053 if (days == 1) {
3063 emit changeNavStringPrev(i18n("&Previous Day")); 3054 emit changeNavStringPrev(i18n("&Previous Day"));
3064 emit changeNavStringNext(i18n("&Next Day")); 3055 emit changeNavStringNext(i18n("&Next Day"));
3065 } else { 3056 } else {
3066 emit changeNavStringPrev(i18n("&Previous Week")); 3057 emit changeNavStringPrev(i18n("&Previous Week"));
3067 emit changeNavStringNext(i18n("&Next Week")); 3058 emit changeNavStringNext(i18n("&Next Week"));
3068 } 3059 }
3069 } 3060 }
3070} 3061}
3071 3062
3072void CalendarView::processMainViewSelection( Incidence *incidence ) 3063void CalendarView::processMainViewSelection( Incidence *incidence )
3073{ 3064{
3074 if ( incidence ) mTodoList->clearSelection(); 3065 if ( incidence ) mTodoList->clearSelection();
3075 processIncidenceSelection( incidence ); 3066 processIncidenceSelection( incidence );
3076} 3067}
3077 3068
3078void CalendarView::processTodoListSelection( Incidence *incidence ) 3069void CalendarView::processTodoListSelection( Incidence *incidence )
3079{ 3070{
3080 if ( incidence && mViewManager->currentView() ) { 3071 if ( incidence && mViewManager->currentView() ) {
3081 mViewManager->currentView()->clearSelection(); 3072 mViewManager->currentView()->clearSelection();
3082 } 3073 }
3083 processIncidenceSelection( incidence ); 3074 processIncidenceSelection( incidence );
3084} 3075}
3085 3076
3086void CalendarView::processIncidenceSelection( Incidence *incidence ) 3077void CalendarView::processIncidenceSelection( Incidence *incidence )
3087{ 3078{
3088 if ( incidence == mSelectedIncidence ) return; 3079 if ( incidence == mSelectedIncidence ) return;
3089 3080
3090 mSelectedIncidence = incidence; 3081 mSelectedIncidence = incidence;
3091 3082
3092 emit incidenceSelected( mSelectedIncidence ); 3083 emit incidenceSelected( mSelectedIncidence );
3093 3084
3094 if ( incidence && incidence->type() == "Event" ) { 3085 if ( incidence && incidence->type() == "Event" ) {
3095 Event *event = static_cast<Event *>( incidence ); 3086 Event *event = static_cast<Event *>( incidence );
3096 if ( event->organizer() == KOPrefs::instance()->email() ) { 3087 if ( event->organizer() == KOPrefs::instance()->email() ) {
3097 emit organizerEventsSelected( true ); 3088 emit organizerEventsSelected( true );
3098 } else { 3089 } else {
3099 emit organizerEventsSelected(false); 3090 emit organizerEventsSelected(false);
3100 } 3091 }
3101 if (event->attendeeByMails( KOPrefs::instance()->mAdditionalMails, 3092 if (event->attendeeByMails( KOPrefs::instance()->mAdditionalMails,
3102 KOPrefs::instance()->email() ) ) { 3093 KOPrefs::instance()->email() ) ) {
3103 emit groupEventsSelected( true ); 3094 emit groupEventsSelected( true );
3104 } else { 3095 } else {
3105 emit groupEventsSelected(false); 3096 emit groupEventsSelected(false);
3106 } 3097 }
3107 return; 3098 return;
3108 } else { 3099 } else {
3109 if ( incidence && incidence->type() == "Todo" ) { 3100 if ( incidence && incidence->type() == "Todo" ) {
3110 emit todoSelected( true ); 3101 emit todoSelected( true );
3111 Todo *event = static_cast<Todo *>( incidence ); 3102 Todo *event = static_cast<Todo *>( incidence );
3112 if ( event->organizer() == KOPrefs::instance()->email() ) { 3103 if ( event->organizer() == KOPrefs::instance()->email() ) {
3113 emit organizerEventsSelected( true ); 3104 emit organizerEventsSelected( true );
3114 } else { 3105 } else {
3115 emit organizerEventsSelected(false); 3106 emit organizerEventsSelected(false);
3116 } 3107 }
3117 if (event->attendeeByMails( KOPrefs::instance()->mAdditionalMails, 3108 if (event->attendeeByMails( KOPrefs::instance()->mAdditionalMails,
3118 KOPrefs::instance()->email() ) ) { 3109 KOPrefs::instance()->email() ) ) {
3119 emit groupEventsSelected( true ); 3110 emit groupEventsSelected( true );
3120 } else { 3111 } else {
3121 emit groupEventsSelected(false); 3112 emit groupEventsSelected(false);
3122 } 3113 }
3123 return; 3114 return;
3124 } else { 3115 } else {
3125 emit todoSelected( false ); 3116 emit todoSelected( false );
3126 emit organizerEventsSelected(false); 3117 emit organizerEventsSelected(false);
3127 emit groupEventsSelected(false); 3118 emit groupEventsSelected(false);
3128 } 3119 }
3129 return; 3120 return;
3130 } 3121 }
3131 3122
3132 /* if ( incidence && incidence->type() == "Todo" ) { 3123 /* if ( incidence && incidence->type() == "Todo" ) {
3133 emit todoSelected( true ); 3124 emit todoSelected( true );
3134 } else { 3125 } else {
3135 emit todoSelected( false ); 3126 emit todoSelected( false );
3136 }*/ 3127 }*/
3137} 3128}
3138 3129
3139 3130
3140void CalendarView::checkClipboard() 3131void CalendarView::checkClipboard()
3141{ 3132{
3142#ifndef KORG_NODND 3133#ifndef KORG_NODND
3143 if (ICalDrag::canDecode(QApplication::clipboard()->data())) { 3134 if (ICalDrag::canDecode(QApplication::clipboard()->data())) {
3144 emit pasteEnabled(true); 3135 emit pasteEnabled(true);
3145 } else { 3136 } else {
3146 emit pasteEnabled(false); 3137 emit pasteEnabled(false);
3147 } 3138 }
3148#endif 3139#endif
3149} 3140}
3150 3141
3151void CalendarView::showDates(const DateList &selectedDates) 3142void CalendarView::showDates(const DateList &selectedDates)
3152{ 3143{
3153 // kdDebug() << "CalendarView::selectDates()" << endl; 3144 // kdDebug() << "CalendarView::selectDates()" << endl;
3154 3145
3155 if ( mViewManager->currentView() ) { 3146 if ( mViewManager->currentView() ) {
3156 updateView( selectedDates.first(), selectedDates.last() ); 3147 updateView( selectedDates.first(), selectedDates.last() );
3157 } else { 3148 } else {
3158 mViewManager->showAgendaView(); 3149 mViewManager->showAgendaView();
3159 } 3150 }
3160 3151
3161 QString selDates; 3152 QString selDates;
3162 selDates = KGlobal::locale()->formatDate( selectedDates.first(), true); 3153 selDates = KGlobal::locale()->formatDate( selectedDates.first(), true);
3163 if (selectedDates.first() < selectedDates.last() ) 3154 if (selectedDates.first() < selectedDates.last() )
3164 selDates += " - " + KGlobal::locale()->formatDate( selectedDates.last(),true); 3155 selDates += " - " + KGlobal::locale()->formatDate( selectedDates.last(),true);
3165 topLevelWidget()->setCaption( i18n("Dates: ") + selDates ); 3156 topLevelWidget()->setCaption( i18n("Dates: ") + selDates );
3166 3157
3167} 3158}
3168 3159
3169void CalendarView::editFilters() 3160void CalendarView::editFilters()
3170{ 3161{
3171 // kdDebug() << "CalendarView::editFilters()" << endl; 3162 // kdDebug() << "CalendarView::editFilters()" << endl;
3172 3163
3173 CalFilter *filter = mFilters.first(); 3164 CalFilter *filter = mFilters.first();
3174 while(filter) { 3165 while(filter) {
3175 kdDebug() << " Filter: " << filter->name() << endl; 3166 kdDebug() << " Filter: " << filter->name() << endl;
3176 filter = mFilters.next(); 3167 filter = mFilters.next();
3177 } 3168 }
3178 3169
3179 mDialogManager->showFilterEditDialog(&mFilters); 3170 mDialogManager->showFilterEditDialog(&mFilters);
3180} 3171}
3181void CalendarView::toggleFilter() 3172void CalendarView::toggleFilter()
3182{ 3173{
3183 showFilter(! mFilterView->isVisible()); 3174 showFilter(! mFilterView->isVisible());
3184} 3175}
3185 3176
3186void CalendarView::selectFilter( int fil ) 3177void CalendarView::selectFilter( int fil )
3187{ 3178{
3188 mFilterView->setSelectedFilter( fil ); 3179 mFilterView->setSelectedFilter( fil );
3189} 3180}
3190void CalendarView::showFilter(bool visible) 3181void CalendarView::showFilter(bool visible)
3191{ 3182{
3192 if (visible) mFilterView->show(); 3183 if (visible) mFilterView->show();
3193 else mFilterView->hide(); 3184 else mFilterView->hide();
3194} 3185}
3195void CalendarView::toggleFilerEnabled( ) 3186void CalendarView::toggleFilerEnabled( )
3196{ 3187{
3197 mFilterView->setFiltersEnabled ( !mFilterView->filtersEnabled() ); 3188 mFilterView->setFiltersEnabled ( !mFilterView->filtersEnabled() );
3198 if ( !mFilterView->filtersEnabled() ) 3189 if ( !mFilterView->filtersEnabled() )
3199 topLevelWidget()->setCaption( i18n("Filter disabled ") ); 3190 topLevelWidget()->setCaption( i18n("Filter disabled ") );
3200 3191
3201} 3192}
3202void CalendarView::updateFilter() 3193void CalendarView::updateFilter()
3203{ 3194{
3204 CalFilter *filter = mFilterView->selectedFilter(); 3195 CalFilter *filter = mFilterView->selectedFilter();
3205 if (filter) { 3196 if (filter) {
3206 if (mFilterView->filtersEnabled()) { 3197 if (mFilterView->filtersEnabled()) {
3207 topLevelWidget()->setCaption( i18n("Filter selected: ")+filter->name() ); 3198 topLevelWidget()->setCaption( i18n("Filter selected: ")+filter->name() );
3208 filter->setEnabled(true); 3199 filter->setEnabled(true);
3209 } 3200 }
3210 else filter->setEnabled(false); 3201 else filter->setEnabled(false);
3211 mCalendar->setFilter(filter); 3202 mCalendar->setFilter(filter);
3212 updateView(); 3203 updateView();
3213 } 3204 }
3214} 3205}
3215 3206
3216void CalendarView::filterEdited() 3207void CalendarView::filterEdited()
3217{ 3208{
3218 mFilterView->updateFilters(); 3209 mFilterView->updateFilters();
3219 updateFilter(); 3210 updateFilter();
3220 writeSettings(); 3211 writeSettings();
3221} 3212}
3222 3213
3223 3214
3224void CalendarView::takeOverEvent() 3215void CalendarView::takeOverEvent()
3225{ 3216{
3226 Incidence *incidence = currentSelection(); 3217 Incidence *incidence = currentSelection();
3227 3218
3228 if (!incidence) return; 3219 if (!incidence) return;
3229 3220
3230 incidence->setOrganizer(KOPrefs::instance()->email()); 3221 incidence->setOrganizer(KOPrefs::instance()->email());
3231 incidence->recreate(); 3222 incidence->recreate();
3232 incidence->setReadOnly(false); 3223 incidence->setReadOnly(false);
3233 3224
3234 updateView(); 3225 updateView();
3235} 3226}
3236 3227
3237void CalendarView::takeOverCalendar() 3228void CalendarView::takeOverCalendar()
3238{ 3229{
3239 // TODO: Create Calendar::allIncidences() function and use it here 3230 // TODO: Create Calendar::allIncidences() function and use it here
3240 3231
3241 QPtrList<Event> events = mCalendar->events(); 3232 QPtrList<Event> events = mCalendar->events();
3242 for(uint i=0; i<events.count(); ++i) { 3233 for(uint i=0; i<events.count(); ++i) {
3243 events.at(i)->setOrganizer(KOPrefs::instance()->email()); 3234 events.at(i)->setOrganizer(KOPrefs::instance()->email());
3244 events.at(i)->recreate(); 3235 events.at(i)->recreate();
3245 events.at(i)->setReadOnly(false); 3236 events.at(i)->setReadOnly(false);
3246 } 3237 }
3247 3238
3248 QPtrList<Todo> todos = mCalendar->todos(); 3239 QPtrList<Todo> todos = mCalendar->todos();
3249 for(uint i=0; i<todos.count(); ++i) { 3240 for(uint i=0; i<todos.count(); ++i) {
3250 todos.at(i)->setOrganizer(KOPrefs::instance()->email()); 3241 todos.at(i)->setOrganizer(KOPrefs::instance()->email());
3251 todos.at(i)->recreate(); 3242 todos.at(i)->recreate();
3252 todos.at(i)->setReadOnly(false); 3243 todos.at(i)->setReadOnly(false);
3253 } 3244 }
3254 3245
3255 QPtrList<Journal> journals = mCalendar->journals(); 3246 QPtrList<Journal> journals = mCalendar->journals();
3256 for(uint i=0; i<journals.count(); ++i) { 3247 for(uint i=0; i<journals.count(); ++i) {
3257 journals.at(i)->setOrganizer(KOPrefs::instance()->email()); 3248 journals.at(i)->setOrganizer(KOPrefs::instance()->email());
3258 journals.at(i)->recreate(); 3249 journals.at(i)->recreate();
3259 journals.at(i)->setReadOnly(false); 3250 journals.at(i)->setReadOnly(false);
3260 } 3251 }
3261 3252
3262 updateView(); 3253 updateView();
3263} 3254}
3264 3255
3265void CalendarView::showIntro() 3256void CalendarView::showIntro()
3266{ 3257{
3267 kdDebug() << "To be implemented." << endl; 3258 kdDebug() << "To be implemented." << endl;
3268} 3259}
3269 3260
3270QWidgetStack *CalendarView::viewStack() 3261QWidgetStack *CalendarView::viewStack()
3271{ 3262{
3272 return mRightFrame; 3263 return mRightFrame;
3273} 3264}
3274 3265
3275QWidget *CalendarView::leftFrame() 3266QWidget *CalendarView::leftFrame()
3276{ 3267{
3277 return mLeftFrame; 3268 return mLeftFrame;
3278} 3269}
3279 3270
3280DateNavigator *CalendarView::dateNavigator() 3271DateNavigator *CalendarView::dateNavigator()
3281{ 3272{
3282 return mNavigator; 3273 return mNavigator;
3283} 3274}
3284 3275
3285KDateNavigator* CalendarView::dateNavigatorWidget() 3276KDateNavigator* CalendarView::dateNavigatorWidget()
3286{ 3277{
3287 return mDateNavigator; 3278 return mDateNavigator;
3288} 3279}
3289void CalendarView::toggleDateNavigatorWidget() 3280void CalendarView::toggleDateNavigatorWidget()
3290{ 3281{
3291 if (mDateNavigator->isVisible()) 3282 if (mDateNavigator->isVisible())
3292 mDateNavigator->hide(); 3283 mDateNavigator->hide();
3293 else 3284 else
3294 mDateNavigator->show(); 3285 mDateNavigator->show();
3295} 3286}
3296void CalendarView::addView(KOrg::BaseView *view) 3287void CalendarView::addView(KOrg::BaseView *view)
3297{ 3288{
3298 mViewManager->addView(view); 3289 mViewManager->addView(view);
3299} 3290}
3300 3291
3301void CalendarView::showView(KOrg::BaseView *view) 3292void CalendarView::showView(KOrg::BaseView *view)
3302{ 3293{
3303 mViewManager->showView(view, mLeftFrame->isVisible()); 3294 mViewManager->showView(view, mLeftFrame->isVisible());
3304} 3295}
3305 3296
3306Incidence *CalendarView::currentSelection() 3297Incidence *CalendarView::currentSelection()
3307{ 3298{
3308 return mViewManager->currentSelection(); 3299 return mViewManager->currentSelection();
3309} 3300}
3310void CalendarView::toggleAllDaySize() 3301void CalendarView::toggleAllDaySize()
3311{ 3302{
3312 /* 3303 /*
3313 if ( KOPrefs::instance()->mAllDaySize > 47 ) 3304 if ( KOPrefs::instance()->mAllDaySize > 47 )
3314 KOPrefs::instance()->mAllDaySize = KOPrefs::instance()->mAllDaySize /2; 3305 KOPrefs::instance()->mAllDaySize = KOPrefs::instance()->mAllDaySize /2;
3315 else 3306 else
3316 KOPrefs::instance()->mAllDaySize = KOPrefs::instance()->mAllDaySize *2; 3307 KOPrefs::instance()->mAllDaySize = KOPrefs::instance()->mAllDaySize *2;
3317 */ 3308 */
3318 viewManager()->agendaView()->toggleAllDay(); 3309 viewManager()->agendaView()->toggleAllDay();
3319} 3310}
3320void CalendarView::toggleExpand() 3311void CalendarView::toggleExpand()
3321{ 3312{
3322 // if ( mLeftFrame->isHidden() ) { 3313 // if ( mLeftFrame->isHidden() ) {
3323 // mLeftFrame->show(); 3314 // mLeftFrame->show();
3324 // emit calendarViewExpanded( false ); 3315 // emit calendarViewExpanded( false );
3325 // } else { 3316 // } else {
3326 // mLeftFrame->hide(); 3317 // mLeftFrame->hide();
3327 // emit calendarViewExpanded( true ); 3318 // emit calendarViewExpanded( true );
3328 // } 3319 // }
3329 3320
3330 globalFlagBlockAgenda = 1; 3321 globalFlagBlockAgenda = 1;
3331 emit calendarViewExpanded( !mLeftFrame->isHidden() ); 3322 emit calendarViewExpanded( !mLeftFrame->isHidden() );
3332 globalFlagBlockAgenda = 5; 3323 globalFlagBlockAgenda = 5;
3333 mViewManager->raiseCurrentView( !mLeftFrame->isHidden() ); 3324 mViewManager->raiseCurrentView( !mLeftFrame->isHidden() );
3334 //mViewManager->showView( 0, true ); 3325 //mViewManager->showView( 0, true );
3335} 3326}
3336 3327
3337void CalendarView::calendarModified( bool modified, Calendar * ) 3328void CalendarView::calendarModified( bool modified, Calendar * )
3338{ 3329{
3339 setModified( modified ); 3330 setModified( modified );
3340} 3331}
3341 3332
3342Todo *CalendarView::selectedTodo() 3333Todo *CalendarView::selectedTodo()
3343{ 3334{
3344 Incidence *incidence = currentSelection(); 3335 Incidence *incidence = currentSelection();
3345 if ( incidence && incidence->type() == "Todo" ) { 3336 if ( incidence && incidence->type() == "Todo" ) {
3346 return static_cast<Todo *>( incidence ); 3337 return static_cast<Todo *>( incidence );
3347 } 3338 }
3348 3339
3349 incidence = mTodoList->selectedIncidences().first(); 3340 incidence = mTodoList->selectedIncidences().first();
3350 if ( incidence && incidence->type() == "Todo" ) { 3341 if ( incidence && incidence->type() == "Todo" ) {
3351 return static_cast<Todo *>( incidence ); 3342 return static_cast<Todo *>( incidence );
3352 } 3343 }
3353 3344
3354 return 0; 3345 return 0;
3355} 3346}
3356 3347
3357void CalendarView::dialogClosing(Incidence *in) 3348void CalendarView::dialogClosing(Incidence *in)
3358{ 3349{
3359 // mDialogList.remove(in); 3350 // mDialogList.remove(in);
3360} 3351}
3361 3352
3362void CalendarView::showIncidence() 3353void CalendarView::showIncidence()
3363{ 3354{
3364 Incidence *incidence = currentSelection(); 3355 Incidence *incidence = currentSelection();
3365 if ( !incidence ) incidence = mTodoList->selectedIncidences().first(); 3356 if ( !incidence ) incidence = mTodoList->selectedIncidences().first();
3366 if ( incidence ) { 3357 if ( incidence ) {
3367 ShowIncidenceVisitor v; 3358 ShowIncidenceVisitor v;
3368 v.act( incidence, this ); 3359 v.act( incidence, this );
3369 } 3360 }
3370} 3361}
3371void CalendarView::editIncidenceDescription() 3362void CalendarView::editIncidenceDescription()
3372{ 3363{
3373 mFlagEditDescription = true; 3364 mFlagEditDescription = true;
3374 editIncidence(); 3365 editIncidence();
3375 mFlagEditDescription = false; 3366 mFlagEditDescription = false;
3376} 3367}
3377void CalendarView::editIncidence() 3368void CalendarView::editIncidence()
3378{ 3369{
3379 // qDebug("editIncidence() "); 3370 // qDebug("editIncidence() ");
3380 Incidence *incidence = currentSelection(); 3371 Incidence *incidence = currentSelection();
3381 if ( !incidence ) incidence = mTodoList->selectedIncidences().first(); 3372 if ( !incidence ) incidence = mTodoList->selectedIncidences().first();
3382 if ( incidence ) { 3373 if ( incidence ) {
3383 EditIncidenceVisitor v; 3374 EditIncidenceVisitor v;
3384 v.act( incidence, this ); 3375 v.act( incidence, this );
3385 } 3376 }
3386} 3377}
3387 3378
3388void CalendarView::deleteIncidence() 3379void CalendarView::deleteIncidence()
3389{ 3380{
3390 Incidence *incidence = currentSelection(); 3381 Incidence *incidence = currentSelection();
3391 if ( !incidence ) incidence = mTodoList->selectedIncidences().first(); 3382 if ( !incidence ) incidence = mTodoList->selectedIncidences().first();
3392 if ( incidence ) { 3383 if ( incidence ) {
3393 deleteIncidence(incidence); 3384 deleteIncidence(incidence);
3394 } 3385 }
3395} 3386}
3396 3387
3397void CalendarView::showIncidence(Incidence *incidence) 3388void CalendarView::showIncidence(Incidence *incidence)
3398{ 3389{
3399 if ( incidence ) { 3390 if ( incidence ) {
3400 ShowIncidenceVisitor v; 3391 ShowIncidenceVisitor v;
3401 v.act( incidence, this ); 3392 v.act( incidence, this );
3402 } 3393 }
3403} 3394}
3404 3395
3405void CalendarView::editIncidence(Incidence *incidence) 3396void CalendarView::editIncidence(Incidence *incidence)
3406{ 3397{
3407 if ( incidence ) { 3398 if ( incidence ) {
3408 3399
3409 EditIncidenceVisitor v; 3400 EditIncidenceVisitor v;
3410 v.act( incidence, this ); 3401 v.act( incidence, this );
3411 3402
3412 } 3403 }
3413} 3404}
3414 3405
3415void CalendarView::deleteIncidence(Incidence *incidence) 3406void CalendarView::deleteIncidence(Incidence *incidence)
3416{ 3407{
3417 //qDebug(" CalendarView::deleteIncidence "); 3408 //qDebug(" CalendarView::deleteIncidence ");
3418 if ( incidence ) { 3409 if ( incidence ) {
3419 DeleteIncidenceVisitor v; 3410 DeleteIncidenceVisitor v;
3420 v.act( incidence, this ); 3411 v.act( incidence, this );
3421 } 3412 }
3422} 3413}
3423 3414
3424 3415
3425void CalendarView::lookForOutgoingMessages() 3416void CalendarView::lookForOutgoingMessages()
3426{ 3417{
3427 OutgoingDialog *ogd = mDialogManager->outgoingDialog(); 3418 OutgoingDialog *ogd = mDialogManager->outgoingDialog();
3428 ogd->loadMessages(); 3419 ogd->loadMessages();
3429} 3420}
3430 3421
3431void CalendarView::lookForIncomingMessages() 3422void CalendarView::lookForIncomingMessages()
3432{ 3423{
3433 IncomingDialog *icd = mDialogManager->incomingDialog(); 3424 IncomingDialog *icd = mDialogManager->incomingDialog();
3434 icd->retrieve(); 3425 icd->retrieve();
3435} 3426}
3436 3427
3437bool CalendarView::removeCompletedSubTodos( Todo* t ) 3428bool CalendarView::removeCompletedSubTodos( Todo* t )
3438{ 3429{
3439 bool deleteTodo = true; 3430 bool deleteTodo = true;
3440 QPtrList<Incidence> subTodos; 3431 QPtrList<Incidence> subTodos;
3441 Incidence *aTodo; 3432 Incidence *aTodo;
3442 subTodos = t->relations(); 3433 subTodos = t->relations();
3443 for (aTodo = subTodos.first(); aTodo; aTodo = subTodos.next()) { 3434 for (aTodo = subTodos.first(); aTodo; aTodo = subTodos.next()) {
3444 if (! removeCompletedSubTodos( (Todo*) aTodo )) 3435 if (! removeCompletedSubTodos( (Todo*) aTodo ))
3445 deleteTodo = false; 3436 deleteTodo = false;
3446 } 3437 }
3447 if ( deleteTodo ) { 3438 if ( deleteTodo ) {
3448 if ( t->isCompleted() ) { 3439 if ( t->isCompleted() ) {
3449 checkZaurusId( t->zaurusId(), true ); 3440 checkExternalId( t );
3450 mCalendar->deleteTodo( t ); 3441 mCalendar->deleteTodo( t );
3451 changeTodoDisplay( t,KOGlobals::EVENTDELETED ); 3442 changeTodoDisplay( t,KOGlobals::EVENTDELETED );
3452 } 3443 }
3453 else 3444 else
3454 deleteTodo = false; 3445 deleteTodo = false;
3455 } 3446 }
3456 return deleteTodo; 3447 return deleteTodo;
3457 3448
3458} 3449}
3459void CalendarView::purgeCompleted() 3450void CalendarView::purgeCompleted()
3460{ 3451{
3461 int result = KMessageBox::warningContinueCancel(this, 3452 int result = KMessageBox::warningContinueCancel(this,
3462 i18n("Delete all\ncompleted To-Dos?"),i18n("Purge To-Dos"),i18n("Purge")); 3453 i18n("Delete all\ncompleted To-Dos?"),i18n("Purge To-Dos"),i18n("Purge"));
3463 3454
3464 if (result == KMessageBox::Continue) { 3455 if (result == KMessageBox::Continue) {
3465 3456
3466 QPtrList<Todo> todoCal; 3457 QPtrList<Todo> todoCal;
3467 QPtrList<Todo> rootTodos; 3458 QPtrList<Todo> rootTodos;
3468 //QPtrList<Incidence> rel; 3459 //QPtrList<Incidence> rel;
3469 Todo *aTodo;//, *rTodo; 3460 Todo *aTodo;//, *rTodo;
3470 Incidence *rIncidence; 3461 Incidence *rIncidence;
3471 bool childDelete = false; 3462 bool childDelete = false;
3472 bool deletedOne = true; 3463 bool deletedOne = true;
3473 todoCal = calendar()->todos(); 3464 todoCal = calendar()->todos();
3474 for (aTodo = todoCal.first(); aTodo; aTodo = todoCal.next()) { 3465 for (aTodo = todoCal.first(); aTodo; aTodo = todoCal.next()) {
3475 if ( !aTodo->relatedTo() ) 3466 if ( !aTodo->relatedTo() )
3476 rootTodos.append( aTodo ); 3467 rootTodos.append( aTodo );
3477 } 3468 }
3478 for (aTodo = rootTodos.first(); aTodo; aTodo = rootTodos.next()) { 3469 for (aTodo = rootTodos.first(); aTodo; aTodo = rootTodos.next()) {
3479 removeCompletedSubTodos( aTodo ); 3470 removeCompletedSubTodos( aTodo );
3480 } 3471 }
3481 3472
3482 updateView(); 3473 updateView();
3483 } 3474 }
3484} 3475}
3485 3476
3486void CalendarView::slotCalendarChanged() 3477void CalendarView::slotCalendarChanged()
3487{ 3478{
3488 ; 3479 ;
3489} 3480}
3490 3481
3491NavigatorBar *CalendarView::navigatorBar() 3482NavigatorBar *CalendarView::navigatorBar()
3492{ 3483{
3493 return mNavigatorBar; 3484 return mNavigatorBar;
3494} 3485}
3495 3486
3496 3487
3497 3488
3498void CalendarView::keyPressEvent ( QKeyEvent *e) 3489void CalendarView::keyPressEvent ( QKeyEvent *e)
3499{ 3490{
3500 //qDebug(" alendarView::keyPressEvent "); 3491 //qDebug(" alendarView::keyPressEvent ");
3501 e->ignore(); 3492 e->ignore();
3502} 3493}
3503 3494
3504//#include "calendarview.moc" 3495//#include "calendarview.moc"
3505 3496
3506//#include "calendarviewbase.moc" 3497//#include "calendarviewbase.moc"
diff --git a/korganizer/calendarview.h b/korganizer/calendarview.h
index 557554f..f7a1213 100644
--- a/korganizer/calendarview.h
+++ b/korganizer/calendarview.h
@@ -102,486 +102,486 @@ class CalendarView : public KOrg::CalendarViewBase, public KCal::Calendar::Obser
102 QDate startDate(); 102 QDate startDate();
103 QDate endDate(); 103 QDate endDate();
104 104
105 QWidgetStack *viewStack(); 105 QWidgetStack *viewStack();
106 QWidget *leftFrame(); 106 QWidget *leftFrame();
107 NavigatorBar *navigatorBar(); 107 NavigatorBar *navigatorBar();
108 108
109 DateNavigator *dateNavigator(); 109 DateNavigator *dateNavigator();
110 KDateNavigator *dateNavigatorWidget(); 110 KDateNavigator *dateNavigatorWidget();
111 111
112 void addView(KOrg::BaseView *); 112 void addView(KOrg::BaseView *);
113 void showView(KOrg::BaseView *); 113 void showView(KOrg::BaseView *);
114 KOEventViewerDialog* getEventViewerDialog(); 114 KOEventViewerDialog* getEventViewerDialog();
115 Incidence *currentSelection(); 115 Incidence *currentSelection();
116 void setupExternSyncProfiles(); 116 void setupExternSyncProfiles();
117 117
118 signals: 118 signals:
119 /** This todo has been modified */ 119 /** This todo has been modified */
120 void todoModified(Todo *, int); 120 void todoModified(Todo *, int);
121 121
122 /** when change is made to options dialog, the topwidget will catch this 122 /** when change is made to options dialog, the topwidget will catch this
123 * and emit this signal which notifies all widgets which have registered 123 * and emit this signal which notifies all widgets which have registered
124 * for notification to update their settings. */ 124 * for notification to update their settings. */
125 void configChanged(); 125 void configChanged();
126 /** emitted when the topwidget is closing down, so that any attached 126 /** emitted when the topwidget is closing down, so that any attached
127 child windows can also close. */ 127 child windows can also close. */
128 void closingDown(); 128 void closingDown();
129 /** emitted right before we die */ 129 /** emitted right before we die */
130 void closed(QWidget *); 130 void closed(QWidget *);
131 131
132 /** Emitted when state of modified flag changes */ 132 /** Emitted when state of modified flag changes */
133 void modifiedChanged(bool); 133 void modifiedChanged(bool);
134 void signalmodified(); 134 void signalmodified();
135 135
136 /** Emitted when state of read-only flag changes */ 136 /** Emitted when state of read-only flag changes */
137 void readOnlyChanged(bool); 137 void readOnlyChanged(bool);
138 138
139 /** Emitted when the unit of navigation changes */ 139 /** Emitted when the unit of navigation changes */
140 void changeNavStringPrev(const QString &); 140 void changeNavStringPrev(const QString &);
141 void changeNavStringNext(const QString &); 141 void changeNavStringNext(const QString &);
142 142
143 /** Emitted when state of events selection has changed and user is organizer*/ 143 /** Emitted when state of events selection has changed and user is organizer*/
144 void organizerEventsSelected(bool); 144 void organizerEventsSelected(bool);
145 /** Emitted when state of events selection has changed and user is attendee*/ 145 /** Emitted when state of events selection has changed and user is attendee*/
146 void groupEventsSelected(bool); 146 void groupEventsSelected(bool);
147 /** 147 /**
148 Emitted when an incidence gets selected. If the selection is cleared the 148 Emitted when an incidence gets selected. If the selection is cleared the
149 signal is emitted with 0 as argument. 149 signal is emitted with 0 as argument.
150 */ 150 */
151 void incidenceSelected( Incidence * ); 151 void incidenceSelected( Incidence * );
152 /** Emitted, when a todoitem is selected or deselected. */ 152 /** Emitted, when a todoitem is selected or deselected. */
153 void todoSelected( bool ); 153 void todoSelected( bool );
154 154
155 /** 155 /**
156 Emitted, when clipboard content changes. Parameter indicates if paste 156 Emitted, when clipboard content changes. Parameter indicates if paste
157 is possible or not. 157 is possible or not.
158 */ 158 */
159 void pasteEnabled(bool); 159 void pasteEnabled(bool);
160 160
161 /** Emitted, when the number of incoming messages has changed. */ 161 /** Emitted, when the number of incoming messages has changed. */
162 void numIncomingChanged(int); 162 void numIncomingChanged(int);
163 163
164 /** Emitted, when the number of outgoing messages has changed. */ 164 /** Emitted, when the number of outgoing messages has changed. */
165 void numOutgoingChanged(int); 165 void numOutgoingChanged(int);
166 166
167 /** Send status message, which can e.g. be displayed in the status bar. */ 167 /** Send status message, which can e.g. be displayed in the status bar. */
168 void statusMessage(const QString &); 168 void statusMessage(const QString &);
169 169
170 void calendarViewExpanded( bool ); 170 void calendarViewExpanded( bool );
171 void updateSearchDialog(); 171 void updateSearchDialog();
172 172
173 173
174 public slots: 174 public slots:
175 void recheckTimerAlarm(); 175 void recheckTimerAlarm();
176 void checkNextTimerAlarm(); 176 void checkNextTimerAlarm();
177 void addAlarm(const QDateTime &qdt, const QString &noti ); 177 void addAlarm(const QDateTime &qdt, const QString &noti );
178 void addSuspendAlarm(const QDateTime &qdt, const QString &noti ); 178 void addSuspendAlarm(const QDateTime &qdt, const QString &noti );
179 void removeAlarm(const QDateTime &qdt, const QString &noti ); 179 void removeAlarm(const QDateTime &qdt, const QString &noti );
180 180
181 /** options dialog made a changed to the configuration. we catch this 181 /** options dialog made a changed to the configuration. we catch this
182 * and notify all widgets which need to update their configuration. */ 182 * and notify all widgets which need to update their configuration. */
183 void updateConfig(); 183 void updateConfig();
184 184
185 /** 185 /**
186 Load calendar from file \a filename. If \a merge is true, load 186 Load calendar from file \a filename. If \a merge is true, load
187 calendar into existing one, if it is false, clear calendar, before 187 calendar into existing one, if it is false, clear calendar, before
188 loading. Return true, if calendar could be successfully loaded. 188 loading. Return true, if calendar could be successfully loaded.
189 */ 189 */
190 bool openCalendar(QString filename, bool merge=false); 190 bool openCalendar(QString filename, bool merge=false);
191 bool syncCalendar(QString filename,int mode = 0 ); 191 bool syncCalendar(QString filename,int mode = 0 );
192 192
193 /** 193 /**
194 Save calendar data to file. Return true if calendar could be 194 Save calendar data to file. Return true if calendar could be
195 successfully saved. 195 successfully saved.
196 */ 196 */
197 bool saveCalendar(QString filename); 197 bool saveCalendar(QString filename);
198 198
199 /** 199 /**
200 Close calendar. Clear calendar data and reset views to display an empty 200 Close calendar. Clear calendar data and reset views to display an empty
201 calendar. 201 calendar.
202 */ 202 */
203 void closeCalendar(); 203 void closeCalendar();
204 204
205 /** Archive old events of calendar */ 205 /** Archive old events of calendar */
206 void archiveCalendar(); 206 void archiveCalendar();
207 207
208 void showIncidence(); 208 void showIncidence();
209 void editIncidence(); 209 void editIncidence();
210 void editIncidenceDescription(); 210 void editIncidenceDescription();
211 void deleteIncidence(); 211 void deleteIncidence();
212 212
213 /** create an editeventwin with supplied date/time, and if bool is true, 213 /** create an editeventwin with supplied date/time, and if bool is true,
214 * make the event take all day. */ 214 * make the event take all day. */
215 void newEvent(QDateTime, QDateTime, bool allDay = false); 215 void newEvent(QDateTime, QDateTime, bool allDay = false);
216 void newEvent(QDateTime fh); 216 void newEvent(QDateTime fh);
217 void newEvent(QDate dt); 217 void newEvent(QDate dt);
218 /** create new event without having a date hint. Takes current date as 218 /** create new event without having a date hint. Takes current date as
219 default hint. */ 219 default hint. */
220 void newEvent(); 220 void newEvent();
221 void newFloatingEvent(); 221 void newFloatingEvent();
222 222
223 /** Create a read-only viewer dialog for the supplied incidence. It calls the correct showXXX method*/ 223 /** Create a read-only viewer dialog for the supplied incidence. It calls the correct showXXX method*/
224 void showIncidence(Incidence *); 224 void showIncidence(Incidence *);
225 /** Create an editor for the supplied incidence. It calls the correct editXXX method*/ 225 /** Create an editor for the supplied incidence. It calls the correct editXXX method*/
226 void editIncidence(Incidence *); 226 void editIncidence(Incidence *);
227 /** Delete the supplied incidence. It calls the correct deleteXXX method*/ 227 /** Delete the supplied incidence. It calls the correct deleteXXX method*/
228 void deleteIncidence(Incidence *); 228 void deleteIncidence(Incidence *);
229 void cloneIncidence(Incidence *); 229 void cloneIncidence(Incidence *);
230 void cancelIncidence(Incidence *); 230 void cancelIncidence(Incidence *);
231 /** Create an editor for the supplied event. */ 231 /** Create an editor for the supplied event. */
232 void editEvent(Event *); 232 void editEvent(Event *);
233 /** Delete the supplied event. */ 233 /** Delete the supplied event. */
234 void deleteEvent(Event *); 234 void deleteEvent(Event *);
235 /** Delete the event with the given unique ID. Returns false, if event wasn't 235 /** Delete the event with the given unique ID. Returns false, if event wasn't
236 found. */ 236 found. */
237 bool deleteEvent(const QString &uid); 237 bool deleteEvent(const QString &uid);
238 /** Create a read-only viewer dialog for the supplied event. */ 238 /** Create a read-only viewer dialog for the supplied event. */
239 void showEvent(Event *); 239 void showEvent(Event *);
240 240
241 void editJournal(Journal *); 241 void editJournal(Journal *);
242 void showJournal(Journal *); 242 void showJournal(Journal *);
243 void deleteJournal(Journal *); 243 void deleteJournal(Journal *);
244 /** Create an editor dialog for a todo */ 244 /** Create an editor dialog for a todo */
245 void editTodo(Todo *); 245 void editTodo(Todo *);
246 /** Create a read-only viewer dialog for the supplied todo */ 246 /** Create a read-only viewer dialog for the supplied todo */
247 void showTodo(Todo *); 247 void showTodo(Todo *);
248 /** create new todo */ 248 /** create new todo */
249 void newTodo(); 249 void newTodo();
250 /** create new todo with a parent todo */ 250 /** create new todo with a parent todo */
251 void newSubTodo(); 251 void newSubTodo();
252 /** create new todo with a parent todo */ 252 /** create new todo with a parent todo */
253 void newSubTodo(Todo *); 253 void newSubTodo(Todo *);
254 /** Delete todo */ 254 /** Delete todo */
255 void deleteTodo(Todo *); 255 void deleteTodo(Todo *);
256 256
257 257
258 /** Check if clipboard contains vCalendar event. The signal pasteEnabled() is 258 /** Check if clipboard contains vCalendar event. The signal pasteEnabled() is
259 * emitted as result. */ 259 * emitted as result. */
260 void checkClipboard(); 260 void checkClipboard();
261 261
262 /** using the KConfig associated with the kapp variable, read in the 262 /** using the KConfig associated with the kapp variable, read in the
263 * settings from the config file. 263 * settings from the config file.
264 */ 264 */
265 void readSettings(); 265 void readSettings();
266 266
267 /** write current state to config file. */ 267 /** write current state to config file. */
268 void writeSettings(); 268 void writeSettings();
269 269
270 /** read settings for calendar filters */ 270 /** read settings for calendar filters */
271 void readFilterSettings(KConfig *config); 271 void readFilterSettings(KConfig *config);
272 272
273 /** write settings for calendar filters */ 273 /** write settings for calendar filters */
274 void writeFilterSettings(KConfig *config); 274 void writeFilterSettings(KConfig *config);
275 275
276 /** passes on the message that an event has changed to the currently 276 /** passes on the message that an event has changed to the currently
277 * activated view so that it can make appropriate display changes. */ 277 * activated view so that it can make appropriate display changes. */
278 void changeEventDisplay(Event *, int); 278 void changeEventDisplay(Event *, int);
279 void changeIncidenceDisplay(Incidence *, int); 279 void changeIncidenceDisplay(Incidence *, int);
280 void changeTodoDisplay(Todo *, int); 280 void changeTodoDisplay(Todo *, int);
281 281
282 void eventAdded(Event *); 282 void eventAdded(Event *);
283 void eventChanged(Event *); 283 void eventChanged(Event *);
284 void eventToBeDeleted(Event *); 284 void eventToBeDeleted(Event *);
285 void eventDeleted(); 285 void eventDeleted();
286 286
287 void todoAdded(Todo *); 287 void todoAdded(Todo *);
288 void todoChanged(Todo *); 288 void todoChanged(Todo *);
289 void todoToBeDeleted(Todo *); 289 void todoToBeDeleted(Todo *);
290 void todoDeleted(); 290 void todoDeleted();
291 291
292 void updateView(const QDate &start, const QDate &end); 292 void updateView(const QDate &start, const QDate &end);
293 void updateView(); 293 void updateView();
294 294
295 /** Full update of visible todo views */ 295 /** Full update of visible todo views */
296 void updateTodoViews(); 296 void updateTodoViews();
297 297
298 void updateUnmanagedViews(); 298 void updateUnmanagedViews();
299 299
300 /** cut the current appointment to the clipboard */ 300 /** cut the current appointment to the clipboard */
301 void edit_cut(); 301 void edit_cut();
302 302
303 /** copy the current appointment(s) to the clipboard */ 303 /** copy the current appointment(s) to the clipboard */
304 void edit_copy(); 304 void edit_copy();
305 305
306 /** paste the current vobject(s) in the clipboard buffer into calendar */ 306 /** paste the current vobject(s) in the clipboard buffer into calendar */
307 void edit_paste(); 307 void edit_paste();
308 308
309 /** edit viewing and configuration options. */ 309 /** edit viewing and configuration options. */
310 void edit_options(); 310 void edit_options();
311 void edit_sync_options(); 311 void edit_sync_options();
312 /** 312 /**
313 Functions for printing, previewing a print, and setting up printing 313 Functions for printing, previewing a print, and setting up printing
314 parameters. 314 parameters.
315 */ 315 */
316 void print(); 316 void print();
317 void printSetup(); 317 void printSetup();
318 void printPreview(); 318 void printPreview();
319 319
320 /** Export as iCalendar file */ 320 /** Export as iCalendar file */
321 void exportICalendar(); 321 void exportICalendar();
322 322
323 /** Export as vCalendar file */ 323 /** Export as vCalendar file */
324 bool exportVCalendar( QString fn); 324 bool exportVCalendar( QString fn);
325 325
326 /** pop up a dialog to show an existing appointment. */ 326 /** pop up a dialog to show an existing appointment. */
327 void appointment_show(); 327 void appointment_show();
328 /** 328 /**
329 * pop up an Appointment Dialog to edit an existing appointment.Get 329 * pop up an Appointment Dialog to edit an existing appointment.Get
330 * information on the appointment from the list of unique IDs that is 330 * information on the appointment from the list of unique IDs that is
331 * currently in the View, called currIds. 331 * currently in the View, called currIds.
332 */ 332 */
333 void appointment_edit(); 333 void appointment_edit();
334 /** 334 /**
335 * pop up dialog confirming deletion of currently selected event in the 335 * pop up dialog confirming deletion of currently selected event in the
336 * View. 336 * View.
337 */ 337 */
338 void appointment_delete(); 338 void appointment_delete();
339 339
340 /** mails the currently selected event to a particular user as a vCalendar 340 /** mails the currently selected event to a particular user as a vCalendar
341 attachment. */ 341 attachment. */
342 void action_mail(); 342 void action_mail();
343 343
344 /* frees a subtodo from it's relation */ 344 /* frees a subtodo from it's relation */
345 void todo_unsub( Todo * ); 345 void todo_unsub( Todo * );
346 346
347 /** Take ownership of selected event. */ 347 /** Take ownership of selected event. */
348 void takeOverEvent(); 348 void takeOverEvent();
349 349
350 /** Take ownership of all events in calendar. */ 350 /** Take ownership of all events in calendar. */
351 void takeOverCalendar(); 351 void takeOverCalendar();
352 352
353 /** query whether or not the calendar is "dirty". */ 353 /** query whether or not the calendar is "dirty". */
354 bool isModified(); 354 bool isModified();
355 /** set the state of calendar. Modified means "dirty", i.e. needing a save. */ 355 /** set the state of calendar. Modified means "dirty", i.e. needing a save. */
356 void setModified(bool modified=true); 356 void setModified(bool modified=true);
357 357
358 /** query if the calendar is read-only. */ 358 /** query if the calendar is read-only. */
359 bool isReadOnly(); 359 bool isReadOnly();
360 /** set state of calendar to read-only */ 360 /** set state of calendar to read-only */
361 void setReadOnly(bool readOnly=true); 361 void setReadOnly(bool readOnly=true);
362 362
363 void eventUpdated(Incidence *); 363 void eventUpdated(Incidence *);
364 364
365 /* iTIP scheduling actions */ 365 /* iTIP scheduling actions */
366 void schedule_publish(Incidence *incidence = 0); 366 void schedule_publish(Incidence *incidence = 0);
367 void schedule_request(Incidence *incidence = 0); 367 void schedule_request(Incidence *incidence = 0);
368 void schedule_refresh(Incidence *incidence = 0); 368 void schedule_refresh(Incidence *incidence = 0);
369 void schedule_cancel(Incidence *incidence = 0); 369 void schedule_cancel(Incidence *incidence = 0);
370 void schedule_add(Incidence *incidence = 0); 370 void schedule_add(Incidence *incidence = 0);
371 void schedule_reply(Incidence *incidence = 0); 371 void schedule_reply(Incidence *incidence = 0);
372 void schedule_counter(Incidence *incidence = 0); 372 void schedule_counter(Incidence *incidence = 0);
373 void schedule_declinecounter(Incidence *incidence = 0); 373 void schedule_declinecounter(Incidence *incidence = 0);
374 void schedule_publish_freebusy(int daysToPublish = 30); 374 void schedule_publish_freebusy(int daysToPublish = 30);
375 375
376 void openAddressbook(); 376 void openAddressbook();
377 377
378 void editFilters(); 378 void editFilters();
379 void toggleFilerEnabled(); 379 void toggleFilerEnabled();
380 380
381 void toggleFilter(); 381 void toggleFilter();
382 void showFilter(bool visible); 382 void showFilter(bool visible);
383 void updateFilter(); 383 void updateFilter();
384 void filterEdited(); 384 void filterEdited();
385 void selectFilter( int ); 385 void selectFilter( int );
386 386
387 void showIntro(); 387 void showIntro();
388 388
389 /** Move the curdatepient view date to today */ 389 /** Move the curdatepient view date to today */
390 void goToday(); 390 void goToday();
391 391
392 /** Move to the next date(s) in the current view */ 392 /** Move to the next date(s) in the current view */
393 void goNext(); 393 void goNext();
394 394
395 /** Move to the previous date(s) in the current view */ 395 /** Move to the previous date(s) in the current view */
396 void goPrevious(); 396 void goPrevious();
397 /** Move to the next date(s) in the current view */ 397 /** Move to the next date(s) in the current view */
398 void goNextMonth(); 398 void goNextMonth();
399 399
400 /** Move to the previous date(s) in the current view */ 400 /** Move to the previous date(s) in the current view */
401 void goPreviousMonth(); 401 void goPreviousMonth();
402 402
403 void toggleExpand(); 403 void toggleExpand();
404 void toggleDateNavigatorWidget(); 404 void toggleDateNavigatorWidget();
405 void toggleAllDaySize(); 405 void toggleAllDaySize();
406 void dialogClosing(Incidence *); 406 void dialogClosing(Incidence *);
407 407
408 /** Look for new messages in the inbox */ 408 /** Look for new messages in the inbox */
409 void lookForIncomingMessages(); 409 void lookForIncomingMessages();
410 /** Look for new messages in the outbox */ 410 /** Look for new messages in the outbox */
411 void lookForOutgoingMessages(); 411 void lookForOutgoingMessages();
412 412
413 void processMainViewSelection( Incidence * ); 413 void processMainViewSelection( Incidence * );
414 void processTodoListSelection( Incidence * ); 414 void processTodoListSelection( Incidence * );
415 415
416 void processIncidenceSelection( Incidence * ); 416 void processIncidenceSelection( Incidence * );
417 417
418 void purgeCompleted(); 418 void purgeCompleted();
419 bool removeCompletedSubTodos( Todo* ); 419 bool removeCompletedSubTodos( Todo* );
420 void slotCalendarChanged(); 420 void slotCalendarChanged();
421 bool importBday(); 421 bool importBday();
422 bool addAnniversary( QDate data, QString name, KCal::Attendee* a , bool birthday ); 422 bool addAnniversary( QDate data, QString name, KCal::Attendee* a , bool birthday );
423 bool importQtopia( const QString &categoriesFile, 423 bool importQtopia( const QString &categoriesFile,
424 const QString &datebookFile, 424 const QString &datebookFile,
425 const QString &tasklistFile ); 425 const QString &tasklistFile );
426 void syncSharp( ); 426 void syncSharp( );
427 void slotSelectPickerDate( QDate ) ; 427 void slotSelectPickerDate( QDate ) ;
428 void showDatePicker( ) ; 428 void showDatePicker( ) ;
429 void moveIncidence(Incidence *) ; 429 void moveIncidence(Incidence *) ;
430 void beamIncidence(Incidence *) ; 430 void beamIncidence(Incidence *) ;
431 void beamCalendar() ; 431 void beamCalendar() ;
432 void beamFilteredCalendar() ; 432 void beamFilteredCalendar() ;
433 void beamIncidenceList(QPtrList<Incidence>) ; 433 void beamIncidenceList(QPtrList<Incidence>) ;
434 void manageCategories(); 434 void manageCategories();
435 int addCategories(); 435 int addCategories();
436 void removeCategories(); 436 void removeCategories();
437 void setSyncDevice( QString ); 437 void setSyncDevice( QString );
438 void setSyncName( QString ); 438 void setSyncName( QString );
439 protected slots: 439 protected slots:
440 void timerAlarm(); 440 void timerAlarm();
441 void suspendAlarm(); 441 void suspendAlarm();
442 void beamDone( Ir *ir ); 442 void beamDone( Ir *ir );
443 /** Select a view or adapt the current view to display the specified dates. */ 443 /** Select a view or adapt the current view to display the specified dates. */
444 void showDates( const KCal::DateList & ); 444 void showDates( const KCal::DateList & );
445 void selectWeekNum ( int ); 445 void selectWeekNum ( int );
446 446
447 public: 447 public:
448 // show a standard warning 448 // show a standard warning
449 // returns KMsgBox::yesNoCancel() 449 // returns KMsgBox::yesNoCancel()
450 int msgCalModified(); 450 int msgCalModified();
451 void confSync(); 451 void confSync();
452 void setLoadedFileVersion(QDateTime); 452 void setLoadedFileVersion(QDateTime);
453 bool checkFileVersion(QString fn); 453 bool checkFileVersion(QString fn);
454 bool checkFileChanged(QString fn); 454 bool checkFileChanged(QString fn);
455 Event* getLastSyncEvent(); 455 Event* getLastSyncEvent();
456 /** Adapt navigation units correpsonding to step size of navigation of the 456 /** Adapt navigation units correpsonding to step size of navigation of the
457 * current view. 457 * current view.
458 */ 458 */
459 void adaptNavigationUnits(); 459 void adaptNavigationUnits();
460 bool synchronizeCalendar( Calendar* local, Calendar* remote, int mode ); 460 bool synchronizeCalendar( Calendar* local, Calendar* remote, int mode );
461 int takeEvent( Incidence* local, Incidence* remote, int mode, bool full = false ); 461 int takeEvent( Incidence* local, Incidence* remote, int mode, bool full = false );
462 //Attendee* getYourAttendee(Event *event); 462 //Attendee* getYourAttendee(Event *event);
463 protected: 463 protected:
464 void schedule(Scheduler::Method, Incidence *incidence = 0); 464 void schedule(Scheduler::Method, Incidence *incidence = 0);
465 465
466 // returns KMsgBox::OKCandel() 466 // returns KMsgBox::OKCandel()
467 int msgItemDelete(); 467 int msgItemDelete();
468 void showEventEditor(); 468 void showEventEditor();
469 void showTodoEditor(); 469 void showTodoEditor();
470 void writeLocale(); 470 void writeLocale();
471 Todo *selectedTodo(); 471 Todo *selectedTodo();
472 472
473 private: 473 private:
474 AlarmDialog * mAlarmDialog; 474 AlarmDialog * mAlarmDialog;
475 QString mAlarmNotification; 475 QString mAlarmNotification;
476 QString mSuspendAlarmNotification; 476 QString mSuspendAlarmNotification;
477 QTimer* mSuspendTimer; 477 QTimer* mSuspendTimer;
478 QTimer* mAlarmTimer; 478 QTimer* mAlarmTimer;
479 QTimer* mRecheckAlarmTimer; 479 QTimer* mRecheckAlarmTimer;
480 void computeAlarm( QString ); 480 void computeAlarm( QString );
481 void startAlarm( QString, QString ); 481 void startAlarm( QString, QString );
482 void setSyncEventsReadOnly(); 482 void setSyncEventsReadOnly();
483 483
484 QDateTime loadedFileVersion; 484 QDateTime loadedFileVersion;
485 void checkExternSyncEvent( QPtrList<Event> lastSync , Incidence* toDelete ); 485 void checkExternSyncEvent( QPtrList<Event> lastSync , Incidence* toDelete );
486 void checkZaurusId( int id, bool todo = false ); 486 void checkExternalId( Incidence * inc );
487 int mGlobalSyncMode; 487 int mGlobalSyncMode;
488 QString mCurrentSyncDevice; 488 QString mCurrentSyncDevice;
489 QString mCurrentSyncName; 489 QString mCurrentSyncName;
490 KOBeamPrefs* beamDialog; 490 KOBeamPrefs* beamDialog;
491 void init(); 491 void init();
492 int mDatePickerMode; 492 int mDatePickerMode;
493 bool mFlagEditDescription; 493 bool mFlagEditDescription;
494 QDateTime mLastCalendarSync; 494 QDateTime mLastCalendarSync;
495 void createPrinter(); 495 void createPrinter();
496 496
497 void calendarModified( bool, Calendar * ); 497 void calendarModified( bool, Calendar * );
498 498
499 CalPrinter *mCalPrinter; 499 CalPrinter *mCalPrinter;
500 500
501 QSplitter *mPanner; 501 QSplitter *mPanner;
502 QSplitter *mLeftSplitter; 502 QSplitter *mLeftSplitter;
503 QWidget *mLeftFrame; 503 QWidget *mLeftFrame;
504 QWidgetStack *mRightFrame; 504 QWidgetStack *mRightFrame;
505 505
506 KDatePicker* mDatePicker; 506 KDatePicker* mDatePicker;
507 QVBox* mDateFrame; 507 QVBox* mDateFrame;
508 NavigatorBar *mNavigatorBar; 508 NavigatorBar *mNavigatorBar;
509 509
510 KDateNavigator *mDateNavigator; // widget showing small month view. 510 KDateNavigator *mDateNavigator; // widget showing small month view.
511 511
512 KOFilterView *mFilterView; 512 KOFilterView *mFilterView;
513 513
514 ResourceView *mResourceView; 514 ResourceView *mResourceView;
515 515
516 // calendar object for this viewing instance 516 // calendar object for this viewing instance
517 Calendar *mCalendar; 517 Calendar *mCalendar;
518 518
519 CalendarResourceManager *mResourceManager; 519 CalendarResourceManager *mResourceManager;
520 520
521 FileStorage *mStorage; 521 FileStorage *mStorage;
522 522
523 DateNavigator *mNavigator; 523 DateNavigator *mNavigator;
524 524
525 KOViewManager *mViewManager; 525 KOViewManager *mViewManager;
526 KODialogManager *mDialogManager; 526 KODialogManager *mDialogManager;
527 527
528 // Calendar filters 528 // Calendar filters
529 QPtrList<CalFilter> mFilters; 529 QPtrList<CalFilter> mFilters;
530 530
531 // various housekeeping variables. 531 // various housekeeping variables.
532 bool mModified; // flag indicating if calendar is modified 532 bool mModified; // flag indicating if calendar is modified
533 bool mReadOnly; // flag indicating if calendar is read-only 533 bool mReadOnly; // flag indicating if calendar is read-only
534 QDate mSaveSingleDate; 534 QDate mSaveSingleDate;
535 535
536 Incidence *mSelectedIncidence; 536 Incidence *mSelectedIncidence;
537 Incidence *mMoveIncidence; 537 Incidence *mMoveIncidence;
538 QPtrList<Event> mExternLastSyncEvent; 538 QPtrList<Event> mExternLastSyncEvent;
539 KOTodoView *mTodoList; 539 KOTodoView *mTodoList;
540 KOEventEditor * mEventEditor; 540 KOEventEditor * mEventEditor;
541 KOTodoEditor * mTodoEditor; 541 KOTodoEditor * mTodoEditor;
542 KOEventViewerDialog * mEventViewerDialog; 542 KOEventViewerDialog * mEventViewerDialog;
543 void keyPressEvent ( QKeyEvent *e) ; 543 void keyPressEvent ( QKeyEvent *e) ;
544 //QMap<Incidence*,KOIncidenceEditor*> mDialogList; 544 //QMap<Incidence*,KOIncidenceEditor*> mDialogList;
545}; 545};
546 546
547 547
548class CalendarViewVisitor : public Incidence::Visitor 548class CalendarViewVisitor : public Incidence::Visitor
549{ 549{
550 public: 550 public:
551 CalendarViewVisitor() : mView( 0 ) {} 551 CalendarViewVisitor() : mView( 0 ) {}
552 552
553 bool act( Incidence *incidence, CalendarView *view ) 553 bool act( Incidence *incidence, CalendarView *view )
554 { 554 {
555 mView = view; 555 mView = view;
556 return incidence->accept( *this ); 556 return incidence->accept( *this );
557 } 557 }
558 558
559 protected: 559 protected:
560 CalendarView *mView; 560 CalendarView *mView;
561}; 561};
562 562
563class ShowIncidenceVisitor : public CalendarViewVisitor 563class ShowIncidenceVisitor : public CalendarViewVisitor
564{ 564{
565 protected: 565 protected:
566 bool visit( Event *event ) { mView->showEvent( event ); return true; } 566 bool visit( Event *event ) { mView->showEvent( event ); return true; }
567 bool visit( Todo *todo ) { mView->showTodo( todo ); return true; } 567 bool visit( Todo *todo ) { mView->showTodo( todo ); return true; }
568 bool visit( Journal * j ) { mView->showJournal( j );return true; } 568 bool visit( Journal * j ) { mView->showJournal( j );return true; }
569}; 569};
570 570
571class EditIncidenceVisitor : public CalendarViewVisitor 571class EditIncidenceVisitor : public CalendarViewVisitor
572{ 572{
573 protected: 573 protected:
574 bool visit( Event *event ) { mView->editEvent( event ); return true; } 574 bool visit( Event *event ) { mView->editEvent( event ); return true; }
575 bool visit( Todo *todo ) { mView->editTodo( todo ); return true; } 575 bool visit( Todo *todo ) { mView->editTodo( todo ); return true; }
576 bool visit( Journal *j ) { mView->editJournal( j); return true; } 576 bool visit( Journal *j ) { mView->editJournal( j); return true; }
577}; 577};
578 578
579class DeleteIncidenceVisitor : public CalendarViewVisitor 579class DeleteIncidenceVisitor : public CalendarViewVisitor
580{ 580{
581 protected: 581 protected:
582 bool visit( Event *event ) { mView->deleteEvent( event ); return true; } 582 bool visit( Event *event ) { mView->deleteEvent( event ); return true; }
583 bool visit( Todo *todo ) { mView->deleteTodo( todo ); return true; } 583 bool visit( Todo *todo ) { mView->deleteTodo( todo ); return true; }
584 bool visit( Journal * j) {mView->deleteJournal( j ); return true; } 584 bool visit( Journal * j) {mView->deleteJournal( j ); return true; }
585}; 585};
586 586
587#endif 587#endif