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
@@ -720,676 +720,682 @@ int CalendarView::takeEvent( Incidence* local, Incidence* remote, int mode , b
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 {
@@ -1640,400 +1646,385 @@ void CalendarView::writeSettings()
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 {
@@ -2387,501 +2378,501 @@ void CalendarView::newTodo()
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;
@@ -3257,250 +3248,250 @@ void CalendarView::takeOverCalendar()
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
@@ -294,294 +294,294 @@ class CalendarView : public KOrg::CalendarViewBase, public KCal::Calendar::Obser
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