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
@@ -816,484 +816,490 @@ int CalendarView::takeEvent( Incidence* local, Incidence* remote, int mode , b
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;
@@ -1736,208 +1742,193 @@ void CalendarView::writeFilterSettings(KConfig *config)
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;
@@ -2483,309 +2474,309 @@ void CalendarView::showJournal( Journal *jour )
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;
@@ -3353,154 +3344,154 @@ Todo *CalendarView::selectedTodo()
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
@@ -390,193 +390,193 @@ class CalendarView : public KOrg::CalendarViewBase, public KCal::Calendar::Obser
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; }