summaryrefslogtreecommitdiffabout
Unidiff
Diffstat (more/less context) (show whitespace changes)
-rw-r--r--korganizer/calendarview.cpp43
-rw-r--r--korganizer/calendarview.h2
-rw-r--r--libkcal/calendar.h4
-rw-r--r--libkcal/calendarlocal.cpp8
-rw-r--r--libkcal/calendarlocal.h4
-rw-r--r--libkcal/incidencebase.cpp12
-rw-r--r--libkcal/incidencebase.h3
-rw-r--r--libkcal/sharpformat.cpp18
8 files changed, 35 insertions, 59 deletions
diff --git a/korganizer/calendarview.cpp b/korganizer/calendarview.cpp
index 9160e1d..cbe2a10 100644
--- a/korganizer/calendarview.cpp
+++ b/korganizer/calendarview.cpp
@@ -900,24 +900,30 @@ void CalendarView::checkExternSyncEvent( QPtrList<Event> lastSync , Incidence* t
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;
@@ -1017,25 +1023,25 @@ bool CalendarView::synchronizeCalendar( Calendar* local, Calendar* remote, int
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() );
@@ -1067,30 +1073,30 @@ bool CalendarView::synchronizeCalendar( Calendar* local, Calendar* remote, int
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 ) {
@@ -1191,25 +1197,25 @@ void CalendarView::syncSharp()
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 }
@@ -1820,40 +1826,25 @@ void 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}
@@ -2567,37 +2558,37 @@ void 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;
@@ -2641,25 +2632,25 @@ void CalendarView::deleteEvent(Event *anEvent)
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;
@@ -2675,33 +2666,33 @@ void CalendarView::deleteEvent(Event *anEvent)
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);
@@ -3437,25 +3428,25 @@ void CalendarView::lookForIncomingMessages()
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,
diff --git a/korganizer/calendarview.h b/korganizer/calendarview.h
index 557554f..f7a1213 100644
--- a/korganizer/calendarview.h
+++ b/korganizer/calendarview.h
@@ -474,25 +474,25 @@ class CalendarView : public KOrg::CalendarViewBase, public KCal::Calendar::Obser
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
diff --git a/libkcal/calendar.h b/libkcal/calendar.h
index df5bbcf..d59bca6 100644
--- a/libkcal/calendar.h
+++ b/libkcal/calendar.h
@@ -153,25 +153,25 @@ public:
153 */ 153 */
154 virtual bool addEventNoDup( Event *event ) = 0; 154 virtual bool addEventNoDup( Event *event ) = 0;
155 virtual bool addAnniversaryNoDup( Event *event ) = 0; 155 virtual bool addAnniversaryNoDup( Event *event ) = 0;
156 virtual bool addEvent( Event *anEvent ) = 0; 156 virtual bool addEvent( Event *anEvent ) = 0;
157 /** 157 /**
158 Delete event from calendar. 158 Delete event from calendar.
159 */ 159 */
160 virtual void deleteEvent( Event * ) = 0; 160 virtual void deleteEvent( Event * ) = 0;
161 /** 161 /**
162 Retrieves an event on the basis of the unique string ID. 162 Retrieves an event on the basis of the unique string ID.
163 */ 163 */
164 virtual Event *event( const QString &UniqueStr ) = 0; 164 virtual Event *event( const QString &UniqueStr ) = 0;
165 virtual Event *event( int ) = 0; 165 virtual Event *event( QString, int ) = 0;
166 /** 166 /**
167 Builds and then returns a list of all events that match for the 167 Builds and then returns a list of all events that match for the
168 date specified. useful for dayView, etc. etc. 168 date specified. useful for dayView, etc. etc.
169 The calendar filter is applied. 169 The calendar filter is applied.
170 */ 170 */
171 QPtrList<Event> events( const QDate &date, bool sorted = false); 171 QPtrList<Event> events( const QDate &date, bool sorted = false);
172 /** 172 /**
173 Get events, which occur on the given date. 173 Get events, which occur on the given date.
174 The calendar filter is applied. 174 The calendar filter is applied.
175 */ 175 */
176 QPtrList<Event> events( const QDateTime &qdt ); 176 QPtrList<Event> events( const QDateTime &qdt );
177 /** 177 /**
@@ -202,25 +202,25 @@ public:
202 */ 202 */
203 virtual void deleteTodo( Todo * ) = 0; 203 virtual void deleteTodo( Todo * ) = 0;
204 virtual void deleteJournal( Journal * ) = 0; 204 virtual void deleteJournal( Journal * ) = 0;
205 /** 205 /**
206 Return filterd list of todos. 206 Return filterd list of todos.
207 */ 207 */
208 virtual QPtrList<Todo> todos(); 208 virtual QPtrList<Todo> todos();
209 /** 209 /**
210 Searches todolist for an event with this unique string identifier, 210 Searches todolist for an event with this unique string identifier,
211 returns a pointer or null. 211 returns a pointer or null.
212 */ 212 */
213 virtual Todo *todo( const QString &uid ) = 0; 213 virtual Todo *todo( const QString &uid ) = 0;
214 virtual Todo *todo( int ) = 0; 214 virtual Todo *todo( QString, int ) = 0;
215 /** 215 /**
216 Returns list of todos due on the specified date. 216 Returns list of todos due on the specified date.
217 */ 217 */
218 virtual QPtrList<Todo> todos( const QDate &date ) = 0; 218 virtual QPtrList<Todo> todos( const QDate &date ) = 0;
219 /** 219 /**
220 Return unfiltered list of todos. 220 Return unfiltered list of todos.
221 */ 221 */
222 virtual QPtrList<Todo> rawTodos() = 0; 222 virtual QPtrList<Todo> rawTodos() = 0;
223 223
224 /** 224 /**
225 Add a Journal entry to calendar. 225 Add a Journal entry to calendar.
226 226
diff --git a/libkcal/calendarlocal.cpp b/libkcal/calendarlocal.cpp
index 09ce9f0..e464a77 100644
--- a/libkcal/calendarlocal.cpp
+++ b/libkcal/calendarlocal.cpp
@@ -203,52 +203,52 @@ void CalendarLocal::deleteTodo( Todo *todo )
203 // Handle orphaned children 203 // Handle orphaned children
204 removeRelations( todo ); 204 removeRelations( todo );
205 205
206 if ( mTodoList.removeRef( todo ) ) { 206 if ( mTodoList.removeRef( todo ) ) {
207 setModified( true ); 207 setModified( true );
208 } 208 }
209} 209}
210 210
211QPtrList<Todo> CalendarLocal::rawTodos() 211QPtrList<Todo> CalendarLocal::rawTodos()
212{ 212{
213 return mTodoList; 213 return mTodoList;
214} 214}
215Todo *CalendarLocal::todo( int id ) 215Todo *CalendarLocal::todo( QString syncProf, int id )
216{ 216{
217 Todo *todo; 217 Todo *todo;
218 for ( todo = mTodoList.first(); todo; todo = mTodoList.next() ) { 218 for ( todo = mTodoList.first(); todo; todo = mTodoList.next() ) {
219 if ( todo->zaurusId() == id ) return todo; 219 if ( todo->getID( syncProf ) == id ) return todo;
220 } 220 }
221 221
222 return 0; 222 return 0;
223} 223}
224 224
225QPtrList<Event> CalendarLocal::getExternLastSyncEvents() 225QPtrList<Event> CalendarLocal::getExternLastSyncEvents()
226{ 226{
227 QPtrList<Event> el; 227 QPtrList<Event> el;
228 Event *todo; 228 Event *todo;
229 for ( todo = mEventList.first(); todo; todo = mEventList.next() ) { 229 for ( todo = mEventList.first(); todo; todo = mEventList.next() ) {
230 if ( todo->uid().left( 15 ) == QString("last-syncEvent-") ) 230 if ( todo->uid().left( 15 ) == QString("last-syncEvent-") )
231 if ( todo->summary().left(3) == "E: " ) 231 if ( todo->summary().left(3) == "E: " )
232 el.append( todo ); 232 el.append( todo );
233 } 233 }
234 234
235 return el; 235 return el;
236 236
237} 237}
238Event *CalendarLocal::event( int id ) 238Event *CalendarLocal::event( QString syncProf, int id )
239{ 239{
240 Event *todo; 240 Event *todo;
241 for ( todo = mEventList.first(); todo; todo = mEventList.next() ) { 241 for ( todo = mEventList.first(); todo; todo = mEventList.next() ) {
242 if ( todo->zaurusId() == id ) return todo; 242 if ( todo->getID( syncProf ) == id ) return todo;
243 } 243 }
244 244
245 return 0; 245 return 0;
246} 246}
247Todo *CalendarLocal::todo( const QString &uid ) 247Todo *CalendarLocal::todo( const QString &uid )
248{ 248{
249 Todo *todo; 249 Todo *todo;
250 for ( todo = mTodoList.first(); todo; todo = mTodoList.next() ) { 250 for ( todo = mTodoList.first(); todo; todo = mTodoList.next() ) {
251 if ( todo->uid() == uid ) return todo; 251 if ( todo->uid() == uid ) return todo;
252 } 252 }
253 253
254 return 0; 254 return 0;
diff --git a/libkcal/calendarlocal.h b/libkcal/calendarlocal.h
index 3257198..4728063 100644
--- a/libkcal/calendarlocal.h
+++ b/libkcal/calendarlocal.h
@@ -166,26 +166,26 @@ class CalendarLocal : public Calendar
166 */ 166 */
167 QPtrList<Event> rawEventsForDate( const QDate &date, bool sorted = false ); 167 QPtrList<Event> rawEventsForDate( const QDate &date, bool sorted = false );
168 /** 168 /**
169 Get unfiltered events for date \a qdt. 169 Get unfiltered events for date \a qdt.
170 */ 170 */
171 QPtrList<Event> rawEventsForDate( const QDateTime &qdt ); 171 QPtrList<Event> rawEventsForDate( const QDateTime &qdt );
172 /** 172 /**
173 Get unfiltered events in a range of dates. If inclusive is set to true, 173 Get unfiltered events in a range of dates. If inclusive is set to true,
174 only events are returned, which are completely included in the range. 174 only events are returned, which are completely included in the range.
175 */ 175 */
176 QPtrList<Event> rawEvents( const QDate &start, const QDate &end, 176 QPtrList<Event> rawEvents( const QDate &start, const QDate &end,
177 bool inclusive = false ); 177 bool inclusive = false );
178 Todo *CalendarLocal::todo( int uid ); 178 Todo *todo( QString, int uid );
179 Event *CalendarLocal::event( int uid ); 179 Event *event( QString,int uid );
180 180
181 181
182 182
183 protected: 183 protected:
184 184
185 // Event* mNextAlarmEvent; 185 // Event* mNextAlarmEvent;
186 QString mNextSummary; 186 QString mNextSummary;
187 QString mNextAlarmEventDateTimeString; 187 QString mNextAlarmEventDateTimeString;
188 QString mLastAlarmNotificationString; 188 QString mLastAlarmNotificationString;
189 QDateTime mNextAlarmEventDateTime; 189 QDateTime mNextAlarmEventDateTime;
190 QDateTime mNextAlarmDateTime; 190 QDateTime mNextAlarmDateTime;
191 void reInitAlarmSettings(); 191 void reInitAlarmSettings();
diff --git a/libkcal/incidencebase.cpp b/libkcal/incidencebase.cpp
index f1db8b7..5d8785b 100644
--- a/libkcal/incidencebase.cpp
+++ b/libkcal/incidencebase.cpp
@@ -29,49 +29,47 @@
29using namespace KCal; 29using namespace KCal;
30 30
31IncidenceBase::IncidenceBase() : 31IncidenceBase::IncidenceBase() :
32 mReadOnly(false), mFloats(true), mDuration(0), mHasDuration(false), 32 mReadOnly(false), mFloats(true), mDuration(0), mHasDuration(false),
33 mPilotId(0), mSyncStatus(SYNCMOD) 33 mPilotId(0), mSyncStatus(SYNCMOD)
34{ 34{
35 setUid(CalFormat::createUniqueId()); 35 setUid(CalFormat::createUniqueId());
36 mOrganizer = ""; 36 mOrganizer = "";
37 mFloats = false; 37 mFloats = false;
38 mDuration = 0; 38 mDuration = 0;
39 mHasDuration = false; 39 mHasDuration = false;
40 mPilotId = 0; 40 mPilotId = 0;
41 mZaurusId = -1;
42 mZaurusUid = 0; 41 mZaurusUid = 0;
43 mExternalId = ":"; 42 mExternalId = ":";
44 mTempSyncStat = 0; 43 mTempSyncStat = 0;
45 mSyncStatus = 0; 44 mSyncStatus = 0;
46 mAttendees.setAutoDelete( true ); 45 mAttendees.setAutoDelete( true );
47} 46}
48 47
49IncidenceBase::IncidenceBase(const IncidenceBase &i) : 48IncidenceBase::IncidenceBase(const IncidenceBase &i) :
50 CustomProperties( i ) 49 CustomProperties( i )
51{ 50{
52 mReadOnly = i.mReadOnly; 51 mReadOnly = i.mReadOnly;
53 mDtStart = i.mDtStart; 52 mDtStart = i.mDtStart;
54 mDuration = i.mDuration; 53 mDuration = i.mDuration;
55 mHasDuration = i.mHasDuration; 54 mHasDuration = i.mHasDuration;
56 mOrganizer = i.mOrganizer; 55 mOrganizer = i.mOrganizer;
57 mUid = i.mUid; 56 mUid = i.mUid;
58 QPtrList<Attendee> attendees = i.attendees(); 57 QPtrList<Attendee> attendees = i.attendees();
59 for( Attendee *a = attendees.first(); a; a = attendees.next() ) { 58 for( Attendee *a = attendees.first(); a; a = attendees.next() ) {
60 mAttendees.append( new Attendee( *a ) ); 59 mAttendees.append( new Attendee( *a ) );
61 } 60 }
62 mFloats = i.mFloats; 61 mFloats = i.mFloats;
63 mLastModified = i.mLastModified; 62 mLastModified = i.mLastModified;
64 mPilotId = i.mPilotId; 63 mPilotId = i.mPilotId;
65 mZaurusId = i.mZaurusId;
66 mZaurusUid = i.mZaurusUid; 64 mZaurusUid = i.mZaurusUid;
67 mTempSyncStat = i.mTempSyncStat; 65 mTempSyncStat = i.mTempSyncStat;
68 mSyncStatus = i.mSyncStatus; 66 mSyncStatus = i.mSyncStatus;
69 mExternalId = i.mExternalId; 67 mExternalId = i.mExternalId;
70 // The copied object is a new one, so it isn't observed by the observer 68 // The copied object is a new one, so it isn't observed by the observer
71 // of the original object. 69 // of the original object.
72 mObservers.clear(); 70 mObservers.clear();
73 71
74 mAttendees.setAutoDelete( true ); 72 mAttendees.setAutoDelete( true );
75} 73}
76 74
77IncidenceBase::~IncidenceBase() 75IncidenceBase::~IncidenceBase()
@@ -333,34 +331,24 @@ int IncidenceBase::syncStatus() const
333} 331}
334 332
335void IncidenceBase::setPilotId( int id ) 333void IncidenceBase::setPilotId( int id )
336{ 334{
337 if (mReadOnly) return; 335 if (mReadOnly) return;
338 mPilotId = id; 336 mPilotId = id;
339} 337}
340 338
341int IncidenceBase::pilotId() const 339int IncidenceBase::pilotId() const
342{ 340{
343 return mPilotId; 341 return mPilotId;
344} 342}
345void IncidenceBase::setZaurusId( int id )
346{
347 if (mReadOnly) return;
348 mZaurusId = id;
349}
350
351int IncidenceBase::zaurusId() const
352{
353 return mZaurusId;
354}
355 343
356int IncidenceBase::zaurusUid() const 344int IncidenceBase::zaurusUid() const
357{ 345{
358 return mZaurusUid; 346 return mZaurusUid;
359} 347}
360void IncidenceBase::setZaurusUid( int id ) 348void IncidenceBase::setZaurusUid( int id )
361{ 349{
362 if (mReadOnly) return; 350 if (mReadOnly) return;
363 mZaurusUid = id; 351 mZaurusUid = id;
364} 352}
365 353
366int IncidenceBase::tempSyncStat() const 354int IncidenceBase::tempSyncStat() const
diff --git a/libkcal/incidencebase.h b/libkcal/incidencebase.h
index 2f85df6..e2950d3 100644
--- a/libkcal/incidencebase.h
+++ b/libkcal/incidencebase.h
@@ -117,26 +117,24 @@ class IncidenceBase : public CustomProperties
117 /** pilot syncronization states */ 117 /** pilot syncronization states */
118 enum { SYNCNONE = 0, SYNCMOD = 1, SYNCDEL = 3 }; 118 enum { SYNCNONE = 0, SYNCMOD = 1, SYNCDEL = 3 };
119 /** Set synchronisation satus. */ 119 /** Set synchronisation satus. */
120 void setSyncStatus(int stat); 120 void setSyncStatus(int stat);
121 /** Return synchronisation status. */ 121 /** Return synchronisation status. */
122 int syncStatus() const; 122 int syncStatus() const;
123 123
124 /** Set Pilot Id. */ 124 /** Set Pilot Id. */
125 void setPilotId(int id); 125 void setPilotId(int id);
126 /** Return Pilot Id. */ 126 /** Return Pilot Id. */
127 int pilotId() const; 127 int pilotId() const;
128 128
129 void setZaurusId(int id);
130 int zaurusId() const;
131 void setZaurusUid(int id); 129 void setZaurusUid(int id);
132 int zaurusUid() const; 130 int zaurusUid() const;
133 void setTempSyncStat(int id); 131 void setTempSyncStat(int id);
134 int tempSyncStat() const; 132 int tempSyncStat() const;
135 void setIDStr( const QString & ); 133 void setIDStr( const QString & );
136 QString IDStr() const; 134 QString IDStr() const;
137 void setID( const QString &, int ); 135 void setID( const QString &, int );
138 int getID( const QString & ); 136 int getID( const QString & );
139 void setCsum( const QString &, int ); 137 void setCsum( const QString &, int );
140 int getCsum( const QString & ); 138 int getCsum( const QString & );
141 139
142 140
@@ -152,25 +150,24 @@ class IncidenceBase : public CustomProperties
152 // base components 150 // base components
153 QDateTime mDtStart; 151 QDateTime mDtStart;
154 QString mOrganizer; 152 QString mOrganizer;
155 QString mUid; 153 QString mUid;
156 QDateTime mLastModified; 154 QDateTime mLastModified;
157 QPtrList<Attendee> mAttendees; 155 QPtrList<Attendee> mAttendees;
158 156
159 bool mFloats; 157 bool mFloats;
160 158
161 int mDuration; 159 int mDuration;
162 bool mHasDuration; 160 bool mHasDuration;
163 QString mExternalId; 161 QString mExternalId;
164 int mZaurusId;
165 int mZaurusUid; 162 int mZaurusUid;
166 int mTempSyncStat; 163 int mTempSyncStat;
167 164
168 // PILOT SYNCHRONIZATION STUFF 165 // PILOT SYNCHRONIZATION STUFF
169 int mPilotId; // unique id for pilot sync 166 int mPilotId; // unique id for pilot sync
170 int mSyncStatus; // status (for sync) 167 int mSyncStatus; // status (for sync)
171 168
172 QPtrList<Observer> mObservers; 169 QPtrList<Observer> mObservers;
173}; 170};
174 171
175bool operator==( const IncidenceBase&, const IncidenceBase& ); 172bool operator==( const IncidenceBase&, const IncidenceBase& );
176} 173}
diff --git a/libkcal/sharpformat.cpp b/libkcal/sharpformat.cpp
index d39d2dd..605a54d 100644
--- a/libkcal/sharpformat.cpp
+++ b/libkcal/sharpformat.cpp
@@ -76,30 +76,30 @@ class SharpParser : public QObject
76 if ( !attList[i].isEmpty() ) { 76 if ( !attList[i].isEmpty() ) {
77 skip = false; 77 skip = false;
78 break; 78 break;
79 } 79 }
80 ++i ; 80 ++i ;
81 } 81 }
82 if ( skip ) 82 if ( skip )
83 return false; 83 return false;
84 ulong cSum = SharpFormat::getCsum(attList ); 84 ulong cSum = SharpFormat::getCsum(attList );
85 85
86 if ( qName == "Event" ) { 86 if ( qName == "Event" ) {
87 Event *event; 87 Event *event;
88 event = existingCalendar->event( attList[0].toInt() ); 88 event = existingCalendar->event( "Sharp_DTM",attList[0].toInt() );
89 if ( event ) 89 if ( event )
90 event = (Event*)event->clone(); 90 event = (Event*)event->clone();
91 else 91 else
92 event = new Event; 92 event = new Event;
93 event->setZaurusId( attList[0].toInt() ); 93 event->setID("Sharp_DTM", attList[0].toInt() );
94 event->setZaurusUid( cSum ); 94 event->setZaurusUid( cSum );
95 event->setTempSyncStat(SYNC_TEMPSTATE_NEW_EXTERNAL ); 95 event->setTempSyncStat(SYNC_TEMPSTATE_NEW_EXTERNAL );
96 96
97 event->setSummary( attList[2] ); 97 event->setSummary( attList[2] );
98 event->setLocation( attList[3] ); 98 event->setLocation( attList[3] );
99 event->setDescription( attList[4] ); 99 event->setDescription( attList[4] );
100 if ( attList[7] == "1" ) { 100 if ( attList[7] == "1" ) {
101 event->setDtStart( QDateTime(fromString( attList[17]+"000000", false ).date(),QTime(0,0,0 ) )); 101 event->setDtStart( QDateTime(fromString( attList[17]+"000000", false ).date(),QTime(0,0,0 ) ));
102 event->setDtEnd( QDateTime(fromString( attList[18]+"000000", false ).date(),QTime(0,0,0 ))); 102 event->setDtEnd( QDateTime(fromString( attList[18]+"000000", false ).date(),QTime(0,0,0 )));
103 event->setFloats( true ); 103 event->setFloats( true );
104 } else { 104 } else {
105 event->setFloats( false ); 105 event->setFloats( false );
@@ -180,37 +180,37 @@ class SharpParser : public QObject
180 event->addAlarm( alarm ); 180 event->addAlarm( alarm );
181 } 181 }
182 alarm->setType( Alarm::Audio ); 182 alarm->setType( Alarm::Audio );
183 alarm->setEnabled( true ); 183 alarm->setEnabled( true );
184 int alarmOffset = attList[9].toInt(); 184 int alarmOffset = attList[9].toInt();
185 alarm->setStartOffset( alarmOffset * -60 ); 185 alarm->setStartOffset( alarmOffset * -60 );
186 } 186 }
187 187
188 mCalendar->addEvent( event); 188 mCalendar->addEvent( event);
189 } else if ( qName == "Todo" ) { 189 } else if ( qName == "Todo" ) {
190 Todo *todo; 190 Todo *todo;
191 191
192 todo = existingCalendar->todo( attList[0].toInt() ); 192 todo = existingCalendar->todo( "Sharp_DTM", attList[0].toInt() );
193 if (todo ) 193 if (todo )
194 todo = (Todo*)todo->clone(); 194 todo = (Todo*)todo->clone();
195 else 195 else
196 todo = new Todo; 196 todo = new Todo;
197 197
198//CARDID,CATEGORY,ETDY,LTDY,FNDY,MARK,PRTY,TITL,MEM1 198//CARDID,CATEGORY,ETDY,LTDY,FNDY,MARK,PRTY,TITL,MEM1
199// 0 1 2 3 4 5 6 7 8 199// 0 1 2 3 4 5 6 7 8
200//1,,,,,1,4,Loch zumachen,"" 200//1,,,,,1,4,Loch zumachen,""
201//3,Privat,20040317T000000,20040318T000000,20040319T000000,0,5,Call bbb,"notes123 bbb gggg ""bb "" " 201//3,Privat,20040317T000000,20040318T000000,20040319T000000,0,5,Call bbb,"notes123 bbb gggg ""bb "" "
202//2,"Familie,Freunde,Holiday",20040318T000000,20040324T000000,20040317T000000,1,2,tod2,notes 202//2,"Familie,Freunde,Holiday",20040318T000000,20040324T000000,20040317T000000,1,2,tod2,notes
203 203
204 todo->setZaurusId( attList[0].toInt() ); 204 todo->setID( "Sharp_DTM", attList[0].toInt() );
205 todo->setZaurusUid( cSum ); 205 todo->setZaurusUid( cSum );
206 todo->setTempSyncStat( SYNC_TEMPSTATE_NEW_EXTERNAL ); 206 todo->setTempSyncStat( SYNC_TEMPSTATE_NEW_EXTERNAL );
207 207
208 todo->setSummary( attList[7] ); 208 todo->setSummary( attList[7] );
209 todo->setDescription( attList[8]); 209 todo->setDescription( attList[8]);
210 210
211 int priority = attList[6].toInt(); 211 int priority = attList[6].toInt();
212 if ( priority == 0 ) priority = 3; 212 if ( priority == 0 ) priority = 3;
213 todo->setPriority( priority ); 213 todo->setPriority( priority );
214 214
215 QString categoryList = attList[1]; 215 QString categoryList = attList[1];
216 todo->setCategories( lookupCategories( categoryList ) ); 216 todo->setCategories( lookupCategories( categoryList ) );
@@ -457,25 +457,25 @@ int SharpFormat::getNumFromRecord( QString answer, Incidence* inc )
457 if ( tempString.right(1) =="\n" ) 457 if ( tempString.right(1) =="\n" )
458 tempString = tempString.left( tempString.length()-1); 458 tempString = tempString.left( tempString.length()-1);
459 459
460 templist.append( tempString ); 460 templist.append( tempString );
461 } 461 }
462 ++ccc; 462 ++ccc;
463 if ( ccc == 2 && loopCount < 25 ) { 463 if ( ccc == 2 && loopCount < 25 ) {
464 start = 0; 464 start = 0;
465 bool ok; 465 bool ok;
466 int newnum = templist[0].toInt( &ok ); 466 int newnum = templist[0].toInt( &ok );
467 if ( ok && newnum > 0) { 467 if ( ok && newnum > 0) {
468 retval = newnum; 468 retval = newnum;
469 inc->setZaurusId( newnum ); 469 inc->setID( "Sharp_DTM",newnum );
470 inc->setZaurusUid( getCsum( templist ) ); 470 inc->setZaurusUid( getCsum( templist ) );
471 inc->setTempSyncStat( SYNC_TEMPSTATE_NEW_ID ); 471 inc->setTempSyncStat( SYNC_TEMPSTATE_NEW_ID );
472 } 472 }
473 } 473 }
474 } 474 }
475 //qDebug("getNumFromRecord returning : %d ", retval); 475 //qDebug("getNumFromRecord returning : %d ", retval);
476 return retval; 476 return retval;
477} 477}
478bool SharpFormat::save( Calendar *calendar) 478bool SharpFormat::save( Calendar *calendar)
479{ 479{
480 480
481 QLabel status ( i18n("Processing/adding events ..."), 0 ); 481 QLabel status ( i18n("Processing/adding events ..."), 0 );
@@ -511,25 +511,25 @@ bool SharpFormat::save( Calendar *calendar)
511 status.setText ( message + QString::number ( ++procCount ) ); 511 status.setText ( message + QString::number ( ++procCount ) );
512 qApp->processEvents(); 512 qApp->processEvents();
513 QString eString = getEventString( ev ); 513 QString eString = getEventString( ev );
514 if ( ev->tempSyncStat() == SYNC_TEMPSTATE_DELETE ) { // delete 514 if ( ev->tempSyncStat() == SYNC_TEMPSTATE_DELETE ) { // delete
515 // deleting empty strings does not work. 515 // deleting empty strings does not work.
516 // we write first and x and then delete the record with the x 516 // we write first and x and then delete the record with the x
517 eString = eString.replace( QRegExp(",\"\""),",\"x\"" ); 517 eString = eString.replace( QRegExp(",\"\""),",\"x\"" );
518 changeString += eString + "\n"; 518 changeString += eString + "\n";
519 deleteString += eString + "\n"; 519 deleteString += eString + "\n";
520 deleteEnt = true; 520 deleteEnt = true;
521 changeEnt = true; 521 changeEnt = true;
522 } 522 }
523 else if ( ev->zaurusId() == -1 ) { // add new 523 else if ( ev->getID("Sharp_DTM") == -1 ) { // add new
524 command = "(echo \"" + ePrefix + eString + "\" ) | db2file datebook -w -g -c " + codec+ " > "+ fileName; 524 command = "(echo \"" + ePrefix + eString + "\" ) | db2file datebook -w -g -c " + codec+ " > "+ fileName;
525 system ( command.utf8() ); 525 system ( command.utf8() );
526 QFile file( fileName ); 526 QFile file( fileName );
527 if (!file.open( IO_ReadOnly ) ) { 527 if (!file.open( IO_ReadOnly ) ) {
528 return false; 528 return false;
529 529
530 } 530 }
531 QTextStream ts( &file ); 531 QTextStream ts( &file );
532 ts.setCodec( QTextCodec::codecForName("utf8") ); 532 ts.setCodec( QTextCodec::codecForName("utf8") );
533 answer = ts.read(); 533 answer = ts.read();
534 file.close(); 534 file.close();
535 //qDebug("answer \n%s ", answer.latin1()); 535 //qDebug("answer \n%s ", answer.latin1());
@@ -597,25 +597,25 @@ bool SharpFormat::save( Calendar *calendar)
597 status.setText ( message + QString::number ( ++procCount ) ); 597 status.setText ( message + QString::number ( ++procCount ) );
598 qApp->processEvents(); 598 qApp->processEvents();
599 QString eString = getTodoString( to ); 599 QString eString = getTodoString( to );
600 if ( to->tempSyncStat() == SYNC_TEMPSTATE_DELETE ) { // delete 600 if ( to->tempSyncStat() == SYNC_TEMPSTATE_DELETE ) { // delete
601 // deleting empty strings does not work. 601 // deleting empty strings does not work.
602 // we write first and x and then delete the record with the x 602 // we write first and x and then delete the record with the x
603 eString = eString.replace( QRegExp(",\"\""),",\"x\"" ); 603 eString = eString.replace( QRegExp(",\"\""),",\"x\"" );
604 changeString += eString + "\n"; 604 changeString += eString + "\n";
605 deleteString += eString + "\n"; 605 deleteString += eString + "\n";
606 deleteEnt = true; 606 deleteEnt = true;
607 changeEnt = true; 607 changeEnt = true;
608 } 608 }
609 else if ( to->zaurusId() == -1 ) { // add new 609 else if ( to->getID("Sharp_DTM") == -1 ) { // add new
610 command = "(echo \"" + tPrefix + eString + "\" ) | db2file todo -w -g -c " + codec+ " > "+ fileName; 610 command = "(echo \"" + tPrefix + eString + "\" ) | db2file todo -w -g -c " + codec+ " > "+ fileName;
611 system ( command.utf8() ); 611 system ( command.utf8() );
612 QFile file( fileName ); 612 QFile file( fileName );
613 if (!file.open( IO_ReadOnly ) ) { 613 if (!file.open( IO_ReadOnly ) ) {
614 return false; 614 return false;
615 615
616 } 616 }
617 QTextStream ts( &file ); 617 QTextStream ts( &file );
618 ts.setCodec( QTextCodec::codecForName("utf8") ); 618 ts.setCodec( QTextCodec::codecForName("utf8") );
619 answer = ts.read(); 619 answer = ts.read();
620 file.close(); 620 file.close();
621 //qDebug("answer \n%s ", answer.latin1()); 621 //qDebug("answer \n%s ", answer.latin1());
@@ -687,25 +687,25 @@ QString SharpFormat::dtToString( const QDateTime& dti, bool useTZ )
687 date.year(), date.month(), date.day()); 687 date.year(), date.month(), date.day());
688 } 688 }
689 if(dt.time().isValid()){ 689 if(dt.time().isValid()){
690 const QTime& time = dt.time(); 690 const QTime& time = dt.time();
691 timestr.sprintf("T%02d%02d%02d", 691 timestr.sprintf("T%02d%02d%02d",
692 time.hour(), time.minute(), time.second()); 692 time.hour(), time.minute(), time.second());
693 } 693 }
694 return datestr + timestr; 694 return datestr + timestr;
695} 695}
696QString SharpFormat::getEventString( Event* event ) 696QString SharpFormat::getEventString( Event* event )
697{ 697{
698 QStringList list; 698 QStringList list;
699 list.append( QString::number(event->zaurusId() ) ); 699 list.append( QString::number(event->getID("Sharp_DTM") ) );
700 list.append( event->categories().join(",") ); 700 list.append( event->categories().join(",") );
701 if ( !event->summary().isEmpty() ) 701 if ( !event->summary().isEmpty() )
702 list.append( event->summary() ); 702 list.append( event->summary() );
703 else 703 else
704 list.append("" ); 704 list.append("" );
705 if ( !event->location().isEmpty() ) 705 if ( !event->location().isEmpty() )
706 list.append( event->location() ); 706 list.append( event->location() );
707 else 707 else
708 list.append("" ); 708 list.append("" );
709 if ( !event->description().isEmpty() ) 709 if ( !event->description().isEmpty() )
710 list.append( event->description() ); 710 list.append( event->description() );
711 else 711 else
@@ -851,25 +851,25 @@ QString SharpFormat::getEventString( Event* event )
851 s.append('\"'); 851 s.append('\"');
852 } else if(s.isEmpty() && !s.isNull()){ 852 } else if(s.isEmpty() && !s.isNull()){
853 s = "\"\""; 853 s = "\"\"";
854 } 854 }
855 } 855 }
856 return list.join(","); 856 return list.join(",");
857 857
858 858
859} 859}
860QString SharpFormat::getTodoString( Todo* todo ) 860QString SharpFormat::getTodoString( Todo* todo )
861{ 861{
862 QStringList list; 862 QStringList list;
863 list.append( QString::number( todo->zaurusId() ) ); 863 list.append( QString::number( todo->getID("Sharp_DTM") ) );
864 list.append( todo->categories().join(",") ); 864 list.append( todo->categories().join(",") );
865 865
866 if ( todo->hasStartDate() ) { 866 if ( todo->hasStartDate() ) {
867 list.append( dtToString( todo->dtStart()) ); 867 list.append( dtToString( todo->dtStart()) );
868 } else 868 } else
869 list.append( QString() ); 869 list.append( QString() );
870 870
871 if ( todo->hasDueDate() ) { 871 if ( todo->hasDueDate() ) {
872 QTime tim; 872 QTime tim;
873 if ( todo->doesFloat()) { 873 if ( todo->doesFloat()) {
874 list.append( dtToString( QDateTime(todo->dtDue().date(),QTime( 0,0,0 )), false)) ; 874 list.append( dtToString( QDateTime(todo->dtDue().date(),QTime( 0,0,0 )), false)) ;
875 } else { 875 } else {