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
@@ -888,48 +888,54 @@ void CalendarView::checkExternSyncEvent( QPtrList<Event> lastSync , Incidence* t
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();
@@ -1005,49 +1011,49 @@ bool CalendarView::synchronizeCalendar( Calendar* local, Calendar* remote, int
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();
@@ -1055,54 +1061,54 @@ bool CalendarView::synchronizeCalendar( Calendar* local, Calendar* remote, int
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();
@@ -1179,49 +1185,49 @@ void CalendarView::syncSharp()
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
@@ -1808,64 +1814,49 @@ void CalendarView::updateConfig()
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
@@ -2555,61 +2546,61 @@ void CalendarView::todo_unsub(Todo *anTodo )
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 }
@@ -2629,91 +2620,91 @@ void CalendarView::deleteEvent(Event *anEvent)
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;
@@ -3425,49 +3416,49 @@ void CalendarView::deleteIncidence(Incidence *incidence)
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();
diff --git a/korganizer/calendarview.h b/korganizer/calendarview.h
index 557554f..f7a1213 100644
--- a/korganizer/calendarview.h
+++ b/korganizer/calendarview.h
@@ -462,49 +462,49 @@ class CalendarView : public KOrg::CalendarViewBase, public KCal::Calendar::Obser
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.