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
@@ -904,16 +904,22 @@ void CalendarView::checkExternSyncEvent( QPtrList<Event> lastSync , Incidence* t
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;
@@ -1021,17 +1027,17 @@ bool CalendarView::synchronizeCalendar( Calendar* local, Calendar* remote, int
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 }
@@ -1071,22 +1077,22 @@ bool CalendarView::synchronizeCalendar( Calendar* local, Calendar* remote, int
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);
@@ -1195,17 +1201,17 @@ void CalendarView::syncSharp()
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 );
@@ -1824,32 +1830,17 @@ void CalendarView::eventToBeDeleted(Event *)
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();
@@ -2571,29 +2562,29 @@ void CalendarView::deleteTodo(Todo *todo)
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)
@@ -2645,17 +2636,17 @@ void CalendarView::deleteEvent(Event *anEvent)
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();
@@ -2679,25 +2670,25 @@ void CalendarView::deleteEvent(Event *anEvent)
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)
@@ -3441,17 +3432,17 @@ bool CalendarView::removeCompletedSubTodos( Todo* t )
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
diff --git a/korganizer/calendarview.h b/korganizer/calendarview.h
index 557554f..f7a1213 100644
--- a/korganizer/calendarview.h
+++ b/korganizer/calendarview.h
@@ -478,17 +478,17 @@ class CalendarView : public KOrg::CalendarViewBase, public KCal::Calendar::Obser
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;