summaryrefslogtreecommitdiffabout
authorzautrix <zautrix>2004-08-02 00:52:35 (UTC)
committer zautrix <zautrix>2004-08-02 00:52:35 (UTC)
commit54157cb44316de72d776cfae70bdadf6c52f4773 (patch) (unidiff)
tree953c8ae225a54fc43a7298d49b08e821bf741cb9
parent3ebd85e83e6f9d4ac59ce1828548f7236e2b1af0 (diff)
downloadkdepimpi-54157cb44316de72d776cfae70bdadf6c52f4773.zip
kdepimpi-54157cb44316de72d776cfae70bdadf6c52f4773.tar.gz
kdepimpi-54157cb44316de72d776cfae70bdadf6c52f4773.tar.bz2
Hack, hack, hack
Diffstat (more/less context) (ignore 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
@@ -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;
diff --git a/libkcal/calendar.h b/libkcal/calendar.h
index df5bbcf..d59bca6 100644
--- a/libkcal/calendar.h
+++ b/libkcal/calendar.h
@@ -157,17 +157,17 @@ public:
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.
@@ -206,17 +206,17 @@ public:
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;
diff --git a/libkcal/calendarlocal.cpp b/libkcal/calendarlocal.cpp
index 09ce9f0..e464a77 100644
--- a/libkcal/calendarlocal.cpp
+++ b/libkcal/calendarlocal.cpp
@@ -207,21 +207,21 @@ void CalendarLocal::deleteTodo( Todo *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;
@@ -230,21 +230,21 @@ QPtrList<Event> CalendarLocal::getExternLastSyncEvents()
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() ) {
diff --git a/libkcal/calendarlocal.h b/libkcal/calendarlocal.h
index 3257198..4728063 100644
--- a/libkcal/calendarlocal.h
+++ b/libkcal/calendarlocal.h
@@ -170,18 +170,18 @@ class CalendarLocal : public Calendar
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;
diff --git a/libkcal/incidencebase.cpp b/libkcal/incidencebase.cpp
index f1db8b7..5d8785b 100644
--- a/libkcal/incidencebase.cpp
+++ b/libkcal/incidencebase.cpp
@@ -33,17 +33,16 @@ IncidenceBase::IncidenceBase() :
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) :
@@ -57,17 +56,16 @@ IncidenceBase::IncidenceBase(const IncidenceBase &i) :
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
@@ -337,26 +335,16 @@ void IncidenceBase::setPilotId( int id )
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;
diff --git a/libkcal/incidencebase.h b/libkcal/incidencebase.h
index 2f85df6..e2950d3 100644
--- a/libkcal/incidencebase.h
+++ b/libkcal/incidencebase.h
@@ -121,18 +121,16 @@ class IncidenceBase : public CustomProperties
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 & );
@@ -156,17 +154,16 @@ class IncidenceBase : public CustomProperties
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;
diff --git a/libkcal/sharpformat.cpp b/libkcal/sharpformat.cpp
index d39d2dd..605a54d 100644
--- a/libkcal/sharpformat.cpp
+++ b/libkcal/sharpformat.cpp
@@ -80,22 +80,22 @@ class SharpParser : public QObject
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 ) ));
@@ -184,29 +184,29 @@ class SharpParser : public QObject
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;
@@ -461,17 +461,17 @@ int SharpFormat::getNumFromRecord( QString answer, Incidence* inc )
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}
@@ -515,17 +515,17 @@ bool SharpFormat::save( Calendar *calendar)
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 );
@@ -601,17 +601,17 @@ bool SharpFormat::save( Calendar *calendar)
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 );
@@ -691,17 +691,17 @@ QString SharpFormat::dtToString( const QDateTime& dti, bool useTZ )
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
@@ -855,17 +855,17 @@ QString SharpFormat::getEventString( Event* event )
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() ) {