author | zautrix <zautrix> | 2004-08-02 00:52:35 (UTC) |
---|---|---|
committer | zautrix <zautrix> | 2004-08-02 00:52:35 (UTC) |
commit | 54157cb44316de72d776cfae70bdadf6c52f4773 (patch) (unidiff) | |
tree | 953c8ae225a54fc43a7298d49b08e821bf741cb9 | |
parent | 3ebd85e83e6f9d4ac59ce1828548f7236e2b1af0 (diff) | |
download | kdepimpi-54157cb44316de72d776cfae70bdadf6c52f4773.zip kdepimpi-54157cb44316de72d776cfae70bdadf6c52f4773.tar.gz kdepimpi-54157cb44316de72d776cfae70bdadf6c52f4773.tar.bz2 |
Hack, hack, hack
-rw-r--r-- | korganizer/calendarview.cpp | 43 | ||||
-rw-r--r-- | korganizer/calendarview.h | 2 | ||||
-rw-r--r-- | libkcal/calendar.h | 4 | ||||
-rw-r--r-- | libkcal/calendarlocal.cpp | 8 | ||||
-rw-r--r-- | libkcal/calendarlocal.h | 4 | ||||
-rw-r--r-- | libkcal/incidencebase.cpp | 12 | ||||
-rw-r--r-- | libkcal/incidencebase.h | 3 | ||||
-rw-r--r-- | libkcal/sharpformat.cpp | 18 |
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 | |||
@@ -896,32 +896,38 @@ void CalendarView::checkExternSyncEvent( QPtrList<Event> lastSync , Incidence* t | |||
896 | while ( eve ) { | 896 | while ( eve ) { |
897 | int id = toDelete->getID( eve->uid().mid( 15 ) ); // this is the sync profile name | 897 | int id = toDelete->getID( eve->uid().mid( 15 ) ); // this is the sync profile name |
898 | if ( id >= 0 ) { | 898 | if ( id >= 0 ) { |
899 | QString des = eve->description(); | 899 | QString des = eve->description(); |
900 | QString pref = "e"; | 900 | QString pref = "e"; |
901 | if ( toDelete->type() == "Todo" ) | 901 | if ( toDelete->type() == "Todo" ) |
902 | pref = "t"; | 902 | pref = "t"; |
903 | des += pref+ QString::number ( id ) + ","; | 903 | des += pref+ QString::number ( id ) + ","; |
904 | eve->setReadOnly( false ); | 904 | eve->setReadOnly( false ); |
905 | eve->setDescription( des ); | 905 | eve->setDescription( des ); |
906 | eve->setReadOnly( true ); | 906 | eve->setReadOnly( true ); |
907 | } | 907 | } |
908 | eve = lastSync.next(); | 908 | eve = lastSync.next(); |
909 | } | 909 | } |
910 | 910 | ||
911 | } | 911 | } |
912 | void CalendarView::checkExternalId( Incidence * inc ) | ||
913 | { | ||
914 | QPtrList<Event> lastSync = mCalendar->getExternLastSyncEvents() ; | ||
915 | checkExternSyncEvent( lastSync, inc ); | ||
916 | |||
917 | } | ||
912 | bool CalendarView::synchronizeCalendar( Calendar* local, Calendar* remote, int mode ) | 918 | bool CalendarView::synchronizeCalendar( Calendar* local, Calendar* remote, int mode ) |
913 | { | 919 | { |
914 | bool syncOK = true; | 920 | bool syncOK = true; |
915 | int addedEvent = 0; | 921 | int addedEvent = 0; |
916 | int addedEventR = 0; | 922 | int addedEventR = 0; |
917 | int deletedEventR = 0; | 923 | int deletedEventR = 0; |
918 | int deletedEventL = 0; | 924 | int deletedEventL = 0; |
919 | int changedLocal = 0; | 925 | int changedLocal = 0; |
920 | int changedRemote = 0; | 926 | int changedRemote = 0; |
921 | //QPtrList<Event> el = local->rawEvents(); | 927 | //QPtrList<Event> el = local->rawEvents(); |
922 | Event* eventR; | 928 | Event* eventR; |
923 | QString uid; | 929 | QString uid; |
924 | int take; | 930 | int take; |
925 | Event* eventL; | 931 | Event* eventL; |
926 | Event* eventRSync; | 932 | Event* eventRSync; |
927 | Event* eventLSync; | 933 | Event* eventLSync; |
@@ -1013,33 +1019,33 @@ bool CalendarView::synchronizeCalendar( Calendar* local, Calendar* remote, int | |||
1013 | remote->addIncidence( inL->clone() ); | 1019 | remote->addIncidence( inL->clone() ); |
1014 | ++changedRemote; | 1020 | ++changedRemote; |
1015 | } else { | 1021 | } else { |
1016 | if ( inR->revision() < maxrev ) | 1022 | if ( inR->revision() < maxrev ) |
1017 | inR->setRevision( maxrev ); | 1023 | inR->setRevision( maxrev ); |
1018 | local->deleteIncidence( inL ); | 1024 | local->deleteIncidence( inL ); |
1019 | local->addIncidence( inR->clone() ); | 1025 | local->addIncidence( inR->clone() ); |
1020 | ++changedLocal; | 1026 | ++changedLocal; |
1021 | } | 1027 | } |
1022 | } | 1028 | } |
1023 | } else { // no conflict | 1029 | } else { // no conflict |
1024 | if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { | 1030 | if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { |
1025 | QString des = eventLSync->description(); | 1031 | QString des = eventLSync->description(); |
1026 | QString pref = "e"; | 1032 | QString pref = "e"; |
1027 | if ( inR->type() == "Todo" ) | 1033 | if ( inR->type() == "Todo" ) |
1028 | pref = "t"; | 1034 | pref = "t"; |
1029 | if ( des.find(pref+QString::number( inR->zaurusId() ) +"," ) >= 0 && mode != 5) { // delete it | 1035 | if ( des.find(pref+QString::number( inR->getID(mCurrentSyncDevice) ) +"," ) >= 0 && mode != 5) { // delete it |
1030 | inR->setTempSyncStat( SYNC_TEMPSTATE_DELETE ); | 1036 | inR->setTempSyncStat( SYNC_TEMPSTATE_DELETE ); |
1031 | //remote->deleteIncidence( inR ); | 1037 | //remote->deleteIncidence( inR ); |
1032 | ++deletedEventR; | 1038 | ++deletedEventR; |
1033 | } else { | 1039 | } else { |
1034 | inR->setLastModified( modifiedCalendar ); | 1040 | inR->setLastModified( modifiedCalendar ); |
1035 | local->addIncidence( inR->clone() ); | 1041 | local->addIncidence( inR->clone() ); |
1036 | ++addedEvent; | 1042 | ++addedEvent; |
1037 | } | 1043 | } |
1038 | } else { | 1044 | } else { |
1039 | if ( inR->lastModified() > mLastCalendarSync || mode == 5 ) { | 1045 | if ( inR->lastModified() > mLastCalendarSync || mode == 5 ) { |
1040 | inR->setLastModified( modifiedCalendar ); | 1046 | inR->setLastModified( modifiedCalendar ); |
1041 | local->addIncidence( inR->clone() ); | 1047 | local->addIncidence( inR->clone() ); |
1042 | ++addedEvent; | 1048 | ++addedEvent; |
1043 | } else { | 1049 | } else { |
1044 | checkExternSyncEvent(eventRSyncSharp, inR); | 1050 | checkExternSyncEvent(eventRSyncSharp, inR); |
1045 | remote->deleteIncidence( inR ); | 1051 | remote->deleteIncidence( inR ); |
@@ -1063,38 +1069,38 @@ bool CalendarView::synchronizeCalendar( Calendar* local, Calendar* remote, int | |||
1063 | qApp->processEvents(); | 1069 | qApp->processEvents(); |
1064 | if ( ! bar.isVisible() ) | 1070 | if ( ! bar.isVisible() ) |
1065 | return false; | 1071 | return false; |
1066 | if ( incCounter % modulo == 0 ) | 1072 | if ( incCounter % modulo == 0 ) |
1067 | bar.setProgress( incCounter ); | 1073 | bar.setProgress( incCounter ); |
1068 | ++incCounter; | 1074 | ++incCounter; |
1069 | uid = inL->uid(); | 1075 | uid = inL->uid(); |
1070 | bool skipIncidence = false; | 1076 | bool skipIncidence = false; |
1071 | if ( uid.left(15) == QString("last-syncEvent-") ) | 1077 | if ( uid.left(15) == QString("last-syncEvent-") ) |
1072 | skipIncidence = true; | 1078 | skipIncidence = true; |
1073 | if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL && inL->type() == "Journal" ) | 1079 | if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL && inL->type() == "Journal" ) |
1074 | skipIncidence = true; | 1080 | skipIncidence = true; |
1075 | if ( !skipIncidence ) { | 1081 | if ( !skipIncidence ) { |
1076 | inR = remote->incidence( uid ); | 1082 | inR = remote->incidence( uid ); |
1077 | if ( ! inR ) { | 1083 | if ( ! inR ) { |
1078 | if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { | 1084 | if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { |
1079 | if ( inL->zaurusId() >= 0 && mode != 4 ) { | 1085 | if ( inL->getID(mCurrentSyncDevice) >= 0 && mode != 4 ) { |
1080 | local->deleteIncidence( inL ); | 1086 | local->deleteIncidence( inL ); |
1081 | ++deletedEventL; | 1087 | ++deletedEventL; |
1082 | } else { | 1088 | } else { |
1083 | if ( ! KOPrefs::instance()->mWriteBackExistingOnly ) { | 1089 | if ( ! KOPrefs::instance()->mWriteBackExistingOnly ) { |
1084 | inL->setZaurusId( -1 ); | 1090 | inL->setID(mCurrentSyncDevice, -1 ); |
1085 | ++addedEventR; | 1091 | ++addedEventR; |
1086 | inL->setLastModified( modifiedCalendar ); | 1092 | inL->setLastModified( modifiedCalendar ); |
1087 | remote->addIncidence( inL->clone() ); | 1093 | remote->addIncidence( inL->clone() ); |
1088 | } | 1094 | } |
1089 | } | 1095 | } |
1090 | } else { | 1096 | } else { |
1091 | if ( inL->lastModified() < mLastCalendarSync && mode != 4 ) { | 1097 | if ( inL->lastModified() < mLastCalendarSync && mode != 4 ) { |
1092 | checkExternSyncEvent(eventLSyncSharp, inL); | 1098 | checkExternSyncEvent(eventLSyncSharp, inL); |
1093 | local->deleteIncidence( inL ); | 1099 | local->deleteIncidence( inL ); |
1094 | ++deletedEventL; | 1100 | ++deletedEventL; |
1095 | } else { | 1101 | } else { |
1096 | if ( ! KOPrefs::instance()->mWriteBackExistingOnly ) { | 1102 | if ( ! KOPrefs::instance()->mWriteBackExistingOnly ) { |
1097 | ++addedEventR; | 1103 | ++addedEventR; |
1098 | inL->setLastModified( modifiedCalendar ); | 1104 | inL->setLastModified( modifiedCalendar ); |
1099 | remote->addIncidence( inL->clone() ); | 1105 | remote->addIncidence( inL->clone() ); |
1100 | } | 1106 | } |
@@ -1187,33 +1193,33 @@ void CalendarView::syncSharp() | |||
1187 | Incidence* inc = iL.first(); | 1193 | Incidence* inc = iL.first(); |
1188 | /* obsolete | 1194 | /* obsolete |
1189 | while ( inc ) { | 1195 | while ( inc ) { |
1190 | inc->setZaurusStat( inc->revision () ); | 1196 | inc->setZaurusStat( inc->revision () ); |
1191 | inc = iL.next(); | 1197 | inc = iL.next(); |
1192 | } | 1198 | } |
1193 | */ | 1199 | */ |
1194 | // pending: clean last sync event description | 1200 | // pending: clean last sync event description |
1195 | sharpFormat.save(calendar); | 1201 | sharpFormat.save(calendar); |
1196 | iL = calendar->rawIncidences(); | 1202 | iL = calendar->rawIncidences(); |
1197 | inc = iL.first(); | 1203 | inc = iL.first(); |
1198 | Incidence* loc; | 1204 | Incidence* loc; |
1199 | while ( inc ) { | 1205 | while ( inc ) { |
1200 | if ( inc->tempSyncStat() == SYNC_TEMPSTATE_NEW_ID ) { | 1206 | if ( inc->tempSyncStat() == SYNC_TEMPSTATE_NEW_ID ) { |
1201 | loc = mCalendar->incidence(inc->uid() ); | 1207 | loc = mCalendar->incidence(inc->uid() ); |
1202 | if ( loc ) { | 1208 | if ( loc ) { |
1203 | loc->setZaurusId( inc->zaurusId() ); | 1209 | loc->setID(mCurrentSyncDevice, inc->getID(mCurrentSyncDevice) ); |
1204 | loc->setZaurusUid( inc->zaurusUid() ); | 1210 | loc->setZaurusUid( inc->zaurusUid() ); |
1205 | } | 1211 | } |
1206 | } | 1212 | } |
1207 | inc = iL.next(); | 1213 | inc = iL.next(); |
1208 | } | 1214 | } |
1209 | Incidence* lse = getLastSyncEvent(); | 1215 | Incidence* lse = getLastSyncEvent(); |
1210 | if ( lse ) { | 1216 | if ( lse ) { |
1211 | lse->setReadOnly( false ); | 1217 | lse->setReadOnly( false ); |
1212 | lse->setDescription( "" ); | 1218 | lse->setDescription( "" ); |
1213 | lse->setReadOnly( true ); | 1219 | lse->setReadOnly( true ); |
1214 | } | 1220 | } |
1215 | } | 1221 | } |
1216 | } | 1222 | } |
1217 | setModified( true ); | 1223 | setModified( true ); |
1218 | } else { | 1224 | } else { |
1219 | QString question = i18n("Sorry, the database access\ncommand failed!\n\nNothing synced!\n") ; | 1225 | QString question = i18n("Sorry, the database access\ncommand failed!\n\nNothing synced!\n") ; |
@@ -1816,48 +1822,33 @@ void CalendarView::eventAdded(Event *event) | |||
1816 | changeEventDisplay(event,KOGlobals::EVENTADDED); | 1822 | changeEventDisplay(event,KOGlobals::EVENTADDED); |
1817 | } | 1823 | } |
1818 | 1824 | ||
1819 | void CalendarView::eventToBeDeleted(Event *) | 1825 | 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 | ||
1824 | void CalendarView::eventDeleted() | 1830 | void CalendarView::eventDeleted() |
1825 | { | 1831 | { |
1826 | changeEventDisplay(0,KOGlobals::EVENTDELETED); | 1832 | changeEventDisplay(0,KOGlobals::EVENTDELETED); |
1827 | } | 1833 | } |
1828 | void CalendarView::changeTodoDisplay(Todo *which, int action) | 1834 | void CalendarView::changeTodoDisplay(Todo *which, int action) |
1829 | { | 1835 | { |
1830 | changeIncidenceDisplay((Incidence *)which, action); | 1836 | changeIncidenceDisplay((Incidence *)which, action); |
1831 | } | 1837 | } |
1832 | void 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 | } | ||
1848 | void CalendarView::changeIncidenceDisplay(Incidence *which, int action) | 1839 | void CalendarView::changeIncidenceDisplay(Incidence *which, int action) |
1849 | { | 1840 | { |
1850 | updateUnmanagedViews(); | 1841 | updateUnmanagedViews(); |
1851 | //qDebug(" CalendarView::changeIncidenceDisplay++++++++++++++++++++++++++ %d %d ",which, action ); | 1842 | //qDebug(" CalendarView::changeIncidenceDisplay++++++++++++++++++++++++++ %d %d ",which, action ); |
1852 | if ( action == KOGlobals::EVENTDELETED ) { //delete | 1843 | if ( action == KOGlobals::EVENTDELETED ) { //delete |
1853 | mCalendar->checkAlarmForIncidence( 0, true ); | 1844 | mCalendar->checkAlarmForIncidence( 0, true ); |
1854 | if ( mEventViewerDialog ) | 1845 | if ( mEventViewerDialog ) |
1855 | mEventViewerDialog->hide(); | 1846 | mEventViewerDialog->hide(); |
1856 | } | 1847 | } |
1857 | else | 1848 | else |
1858 | mCalendar->checkAlarmForIncidence( which , false ); | 1849 | mCalendar->checkAlarmForIncidence( which , false ); |
1859 | } | 1850 | } |
1860 | 1851 | ||
1861 | // most of the changeEventDisplays() right now just call the view's | 1852 | // most of the changeEventDisplays() right now just call the view's |
1862 | // total update mode, but they SHOULD be recoded to be more refresh-efficient. | 1853 | // total update mode, but they SHOULD be recoded to be more refresh-efficient. |
1863 | void CalendarView::changeEventDisplay(Event *which, int action) | 1854 | void CalendarView::changeEventDisplay(Event *which, int action) |
@@ -2563,45 +2554,45 @@ void CalendarView::todo_unsub(Todo *anTodo ) | |||
2563 | updateView(); | 2554 | updateView(); |
2564 | } | 2555 | } |
2565 | 2556 | ||
2566 | void CalendarView::deleteTodo(Todo *todo) | 2557 | 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 | } |
2599 | void CalendarView::deleteJournal(Journal *jour) | 2590 | void CalendarView::deleteJournal(Journal *jour) |
2600 | { | 2591 | { |
2601 | if (!jour) { | 2592 | if (!jour) { |
2602 | KNotifyClient::beep(); | 2593 | KNotifyClient::beep(); |
2603 | return; | 2594 | return; |
2604 | } | 2595 | } |
2605 | if (KOPrefs::instance()->mConfirm) { | 2596 | if (KOPrefs::instance()->mConfirm) { |
2606 | switch (msgItemDelete()) { | 2597 | switch (msgItemDelete()) { |
2607 | case KMessageBox::Continue: // OK | 2598 | case KMessageBox::Continue: // OK |
@@ -2637,33 +2628,33 @@ void CalendarView::deleteEvent(Event *anEvent) | |||
2637 | } else | 2628 | } else |
2638 | km = KMessageBox::No; | 2629 | km = KMessageBox::No; |
2639 | } else { | 2630 | } else { |
2640 | km = KMessageBox::warningYesNoCancel(this,anEvent->summary() + | 2631 | km = KMessageBox::warningYesNoCancel(this,anEvent->summary() + |
2641 | i18n("\nThis event recurs\nover multiple dates.\nDo you want to delete\nall it's recurrences,\nor only the current one on:\n")+ | 2632 | i18n("\nThis event recurs\nover multiple dates.\nDo you want to delete\nall it's recurrences,\nor only the current one on:\n")+ |
2642 | KGlobal::locale()->formatDate(itemDate)+i18n(" ?\n\nDelete:\n"), | 2633 | KGlobal::locale()->formatDate(itemDate)+i18n(" ?\n\nDelete:\n"), |
2643 | i18n("KO/Pi Confirmation"),i18n("Current"), | 2634 | i18n("KO/Pi Confirmation"),i18n("Current"), |
2644 | i18n("All")); | 2635 | i18n("All")); |
2645 | } | 2636 | } |
2646 | switch(km) { | 2637 | switch(km) { |
2647 | 2638 | ||
2648 | case KMessageBox::No: // Continue // all | 2639 | case KMessageBox::No: // Continue // all |
2649 | //qDebug("KMessageBox::No "); | 2640 | //qDebug("KMessageBox::No "); |
2650 | if (anEvent->organizer()==KOPrefs::instance()->email() && anEvent->attendeeCount()>0) | 2641 | if (anEvent->organizer()==KOPrefs::instance()->email() && anEvent->attendeeCount()>0) |
2651 | schedule(Scheduler::Cancel,anEvent); | 2642 | schedule(Scheduler::Cancel,anEvent); |
2652 | 2643 | ||
2653 | checkZaurusId( anEvent->zaurusId()); | 2644 | checkExternalId( anEvent); |
2654 | mCalendar->deleteEvent(anEvent); | 2645 | mCalendar->deleteEvent(anEvent); |
2655 | changeEventDisplay(anEvent,KOGlobals::EVENTDELETED); | 2646 | changeEventDisplay(anEvent,KOGlobals::EVENTDELETED); |
2656 | break; | 2647 | break; |
2657 | 2648 | ||
2658 | // Disabled because it does not work | 2649 | // Disabled because it does not work |
2659 | //#if 0 | 2650 | //#if 0 |
2660 | case KMessageBox::Yes: // just this one | 2651 | case KMessageBox::Yes: // just this one |
2661 | //QDate qd = mNavigator->selectedDates().first(); | 2652 | //QDate qd = mNavigator->selectedDates().first(); |
2662 | //if (!qd.isValid()) { | 2653 | //if (!qd.isValid()) { |
2663 | // kdDebug() << "no date selected, or invalid date" << endl; | 2654 | // kdDebug() << "no date selected, or invalid date" << endl; |
2664 | // KNotifyClient::beep(); | 2655 | // KNotifyClient::beep(); |
2665 | // return; | 2656 | // return; |
2666 | //} | 2657 | //} |
2667 | //while (!anEvent->recursOn(qd)) qd = qd.addDays(1); | 2658 | //while (!anEvent->recursOn(qd)) qd = qd.addDays(1); |
2668 | if (itemDate!=QDate(1,1,1) || itemDate.isValid()) { | 2659 | if (itemDate!=QDate(1,1,1) || itemDate.isValid()) { |
2669 | anEvent->addExDate(itemDate); | 2660 | anEvent->addExDate(itemDate); |
@@ -2671,41 +2662,41 @@ void CalendarView::deleteEvent(Event *anEvent) | |||
2671 | if ( duration > 0 ) { | 2662 | if ( duration > 0 ) { |
2672 | anEvent->recurrence()->setDuration( duration - 1 ); | 2663 | anEvent->recurrence()->setDuration( duration - 1 ); |
2673 | } | 2664 | } |
2674 | changeEventDisplay(anEvent, KOGlobals::EVENTEDITED); | 2665 | changeEventDisplay(anEvent, KOGlobals::EVENTEDITED); |
2675 | } | 2666 | } |
2676 | break; | 2667 | break; |
2677 | //#endif | 2668 | //#endif |
2678 | } // switch | 2669 | } // switch |
2679 | } else { | 2670 | } else { |
2680 | if (KOPrefs::instance()->mConfirm) { | 2671 | if (KOPrefs::instance()->mConfirm) { |
2681 | switch (KMessageBox::warningContinueCancel(this,anEvent->summary() + | 2672 | switch (KMessageBox::warningContinueCancel(this,anEvent->summary() + |
2682 | i18n("\nAre you sure you want\nto delete this event?"), | 2673 | i18n("\nAre you sure you want\nto delete this event?"), |
2683 | i18n("KO/Pi Confirmation"),i18n("Delete"))) { | 2674 | i18n("KO/Pi Confirmation"),i18n("Delete"))) { |
2684 | case KMessageBox::Continue: // OK | 2675 | case KMessageBox::Continue: // OK |
2685 | if (anEvent->organizer()==KOPrefs::instance()->email() && anEvent->attendeeCount()>0) | 2676 | if (anEvent->organizer()==KOPrefs::instance()->email() && anEvent->attendeeCount()>0) |
2686 | schedule(Scheduler::Cancel,anEvent); | 2677 | schedule(Scheduler::Cancel,anEvent); |
2687 | checkZaurusId( anEvent->zaurusId()); | 2678 | checkExternalId( anEvent); |
2688 | mCalendar->deleteEvent(anEvent); | 2679 | mCalendar->deleteEvent(anEvent); |
2689 | changeEventDisplay(anEvent, KOGlobals::EVENTDELETED); | 2680 | changeEventDisplay(anEvent, KOGlobals::EVENTDELETED); |
2690 | break; | 2681 | break; |
2691 | } // switch | 2682 | } // switch |
2692 | } else { | 2683 | } else { |
2693 | if (anEvent->organizer()==KOPrefs::instance()->email() && anEvent->attendeeCount()>0) | 2684 | if (anEvent->organizer()==KOPrefs::instance()->email() && anEvent->attendeeCount()>0) |
2694 | schedule(Scheduler::Cancel,anEvent); | 2685 | schedule(Scheduler::Cancel,anEvent); |
2695 | checkZaurusId( anEvent->zaurusId()); | 2686 | checkExternalId( anEvent); |
2696 | mCalendar->deleteEvent(anEvent); | 2687 | mCalendar->deleteEvent(anEvent); |
2697 | changeEventDisplay(anEvent, KOGlobals::EVENTDELETED); | 2688 | changeEventDisplay(anEvent, KOGlobals::EVENTDELETED); |
2698 | } | 2689 | } |
2699 | } // if-else | 2690 | } // if-else |
2700 | emit updateSearchDialog(); | 2691 | emit updateSearchDialog(); |
2701 | } | 2692 | } |
2702 | 2693 | ||
2703 | bool CalendarView::deleteEvent(const QString &uid) | 2694 | bool CalendarView::deleteEvent(const QString &uid) |
2704 | { | 2695 | { |
2705 | Event *ev = mCalendar->event(uid); | 2696 | Event *ev = mCalendar->event(uid); |
2706 | if (ev) { | 2697 | if (ev) { |
2707 | deleteEvent(ev); | 2698 | deleteEvent(ev); |
2708 | return true; | 2699 | return true; |
2709 | } else { | 2700 | } else { |
2710 | return false; | 2701 | return false; |
2711 | } | 2702 | } |
@@ -3433,33 +3424,33 @@ void CalendarView::lookForIncomingMessages() | |||
3433 | IncomingDialog *icd = mDialogManager->incomingDialog(); | 3424 | IncomingDialog *icd = mDialogManager->incomingDialog(); |
3434 | icd->retrieve(); | 3425 | icd->retrieve(); |
3435 | } | 3426 | } |
3436 | 3427 | ||
3437 | bool CalendarView::removeCompletedSubTodos( Todo* t ) | 3428 | bool 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 | } |
3459 | void CalendarView::purgeCompleted() | 3450 | void CalendarView::purgeCompleted() |
3460 | { | 3451 | { |
3461 | int result = KMessageBox::warningContinueCancel(this, | 3452 | int result = KMessageBox::warningContinueCancel(this, |
3462 | i18n("Delete all\ncompleted To-Dos?"),i18n("Purge To-Dos"),i18n("Purge")); | 3453 | i18n("Delete all\ncompleted To-Dos?"),i18n("Purge To-Dos"),i18n("Purge")); |
3463 | 3454 | ||
3464 | if (result == KMessageBox::Continue) { | 3455 | if (result == KMessageBox::Continue) { |
3465 | 3456 | ||
diff --git a/korganizer/calendarview.h b/korganizer/calendarview.h index 557554f..f7a1213 100644 --- a/korganizer/calendarview.h +++ b/korganizer/calendarview.h | |||
@@ -470,33 +470,33 @@ class CalendarView : public KOrg::CalendarViewBase, public KCal::Calendar::Obser | |||
470 | void writeLocale(); | 470 | void writeLocale(); |
471 | Todo *selectedTodo(); | 471 | Todo *selectedTodo(); |
472 | 472 | ||
473 | private: | 473 | private: |
474 | AlarmDialog * mAlarmDialog; | 474 | AlarmDialog * mAlarmDialog; |
475 | QString mAlarmNotification; | 475 | QString mAlarmNotification; |
476 | QString mSuspendAlarmNotification; | 476 | QString mSuspendAlarmNotification; |
477 | QTimer* mSuspendTimer; | 477 | QTimer* mSuspendTimer; |
478 | QTimer* mAlarmTimer; | 478 | QTimer* mAlarmTimer; |
479 | QTimer* mRecheckAlarmTimer; | 479 | QTimer* mRecheckAlarmTimer; |
480 | void computeAlarm( QString ); | 480 | void computeAlarm( QString ); |
481 | void startAlarm( QString, QString ); | 481 | void startAlarm( QString, QString ); |
482 | void setSyncEventsReadOnly(); | 482 | void setSyncEventsReadOnly(); |
483 | 483 | ||
484 | QDateTime loadedFileVersion; | 484 | QDateTime loadedFileVersion; |
485 | void checkExternSyncEvent( QPtrList<Event> lastSync , Incidence* toDelete ); | 485 | void checkExternSyncEvent( QPtrList<Event> lastSync , Incidence* toDelete ); |
486 | void checkZaurusId( int id, bool todo = false ); | 486 | void checkExternalId( Incidence * inc ); |
487 | int mGlobalSyncMode; | 487 | int mGlobalSyncMode; |
488 | QString mCurrentSyncDevice; | 488 | QString mCurrentSyncDevice; |
489 | QString mCurrentSyncName; | 489 | QString mCurrentSyncName; |
490 | KOBeamPrefs* beamDialog; | 490 | KOBeamPrefs* beamDialog; |
491 | void init(); | 491 | void init(); |
492 | int mDatePickerMode; | 492 | int mDatePickerMode; |
493 | bool mFlagEditDescription; | 493 | bool mFlagEditDescription; |
494 | QDateTime mLastCalendarSync; | 494 | QDateTime mLastCalendarSync; |
495 | void createPrinter(); | 495 | void createPrinter(); |
496 | 496 | ||
497 | void calendarModified( bool, Calendar * ); | 497 | void calendarModified( bool, Calendar * ); |
498 | 498 | ||
499 | CalPrinter *mCalPrinter; | 499 | CalPrinter *mCalPrinter; |
500 | 500 | ||
501 | QSplitter *mPanner; | 501 | QSplitter *mPanner; |
502 | QSplitter *mLeftSplitter; | 502 | QSplitter *mLeftSplitter; |
diff --git a/libkcal/calendar.h b/libkcal/calendar.h index df5bbcf..d59bca6 100644 --- a/libkcal/calendar.h +++ b/libkcal/calendar.h | |||
@@ -149,33 +149,33 @@ public: | |||
149 | Adds a Event to this calendar object. | 149 | Adds a Event to this calendar object. |
150 | @param anEvent a pointer to the event to add | 150 | @param anEvent a pointer to the event to add |
151 | 151 | ||
152 | @return true on success, false on error. | 152 | @return true on success, false on error. |
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 | /** |
178 | Get events in a range of dates. If inclusive is set to true, only events | 178 | Get events in a range of dates. If inclusive is set to true, only events |
179 | are returned, which are completely included in the range. | 179 | are returned, which are completely included in the range. |
180 | The calendar filter is applied. | 180 | The calendar filter is applied. |
181 | */ | 181 | */ |
@@ -198,33 +198,33 @@ public: | |||
198 | virtual bool addTodo( Todo *todo ) = 0; | 198 | virtual bool addTodo( Todo *todo ) = 0; |
199 | virtual bool addTodoNoDup( Todo *todo ) = 0; | 199 | virtual bool addTodoNoDup( Todo *todo ) = 0; |
200 | /** | 200 | /** |
201 | Remove a todo from the todolist. | 201 | Remove a todo from the todolist. |
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 | ||
227 | @return true on success, false on error. | 227 | @return true on success, false on error. |
228 | */ | 228 | */ |
229 | virtual bool addJournal( Journal * ) = 0; | 229 | virtual bool addJournal( Journal * ) = 0; |
230 | /** | 230 | /** |
diff --git a/libkcal/calendarlocal.cpp b/libkcal/calendarlocal.cpp index 09ce9f0..e464a77 100644 --- a/libkcal/calendarlocal.cpp +++ b/libkcal/calendarlocal.cpp | |||
@@ -199,60 +199,60 @@ bool CalendarLocal::addTodo( Todo *todo ) | |||
199 | } | 199 | } |
200 | 200 | ||
201 | void CalendarLocal::deleteTodo( Todo *todo ) | 201 | void CalendarLocal::deleteTodo( Todo *todo ) |
202 | { | 202 | { |
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 | ||
211 | QPtrList<Todo> CalendarLocal::rawTodos() | 211 | QPtrList<Todo> CalendarLocal::rawTodos() |
212 | { | 212 | { |
213 | return mTodoList; | 213 | return mTodoList; |
214 | } | 214 | } |
215 | Todo *CalendarLocal::todo( int id ) | 215 | Todo *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 | ||
225 | QPtrList<Event> CalendarLocal::getExternLastSyncEvents() | 225 | QPtrList<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 | } |
238 | Event *CalendarLocal::event( int id ) | 238 | Event *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 | } |
247 | Todo *CalendarLocal::todo( const QString &uid ) | 247 | Todo *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; |
255 | } | 255 | } |
256 | QString CalendarLocal::nextSummary() const | 256 | QString CalendarLocal::nextSummary() const |
257 | { | 257 | { |
258 | return mNextSummary; | 258 | return mNextSummary; |
diff --git a/libkcal/calendarlocal.h b/libkcal/calendarlocal.h index 3257198..4728063 100644 --- a/libkcal/calendarlocal.h +++ b/libkcal/calendarlocal.h | |||
@@ -162,34 +162,34 @@ class CalendarLocal : public Calendar | |||
162 | 162 | ||
163 | /** | 163 | /** |
164 | Builds and then returns a list of all events that match for the | 164 | Builds and then returns a list of all events that match for the |
165 | date specified. useful for dayView, etc. etc. | 165 | date specified. useful for dayView, etc. etc. |
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(); |
192 | 192 | ||
193 | /** Notification function of IncidenceBase::Observer. */ | 193 | /** Notification function of IncidenceBase::Observer. */ |
194 | void incidenceUpdated( IncidenceBase *i ) { update( i ); } | 194 | void incidenceUpdated( IncidenceBase *i ) { update( i ); } |
195 | 195 | ||
diff --git a/libkcal/incidencebase.cpp b/libkcal/incidencebase.cpp index f1db8b7..5d8785b 100644 --- a/libkcal/incidencebase.cpp +++ b/libkcal/incidencebase.cpp | |||
@@ -25,57 +25,55 @@ | |||
25 | #include "calformat.h" | 25 | #include "calformat.h" |
26 | 26 | ||
27 | #include "incidencebase.h" | 27 | #include "incidencebase.h" |
28 | 28 | ||
29 | using namespace KCal; | 29 | using namespace KCal; |
30 | 30 | ||
31 | IncidenceBase::IncidenceBase() : | 31 | IncidenceBase::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 | ||
49 | IncidenceBase::IncidenceBase(const IncidenceBase &i) : | 48 | IncidenceBase::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 | ||
77 | IncidenceBase::~IncidenceBase() | 75 | IncidenceBase::~IncidenceBase() |
78 | { | 76 | { |
79 | } | 77 | } |
80 | 78 | ||
81 | 79 | ||
@@ -329,42 +327,32 @@ void IncidenceBase::setSyncStatus(int stat) | |||
329 | 327 | ||
330 | int IncidenceBase::syncStatus() const | 328 | int IncidenceBase::syncStatus() const |
331 | { | 329 | { |
332 | return mSyncStatus; | 330 | return mSyncStatus; |
333 | } | 331 | } |
334 | 332 | ||
335 | void IncidenceBase::setPilotId( int id ) | 333 | void IncidenceBase::setPilotId( int id ) |
336 | { | 334 | { |
337 | if (mReadOnly) return; | 335 | if (mReadOnly) return; |
338 | mPilotId = id; | 336 | mPilotId = id; |
339 | } | 337 | } |
340 | 338 | ||
341 | int IncidenceBase::pilotId() const | 339 | int IncidenceBase::pilotId() const |
342 | { | 340 | { |
343 | return mPilotId; | 341 | return mPilotId; |
344 | } | 342 | } |
345 | void IncidenceBase::setZaurusId( int id ) | ||
346 | { | ||
347 | if (mReadOnly) return; | ||
348 | mZaurusId = id; | ||
349 | } | ||
350 | |||
351 | int IncidenceBase::zaurusId() const | ||
352 | { | ||
353 | return mZaurusId; | ||
354 | } | ||
355 | 343 | ||
356 | int IncidenceBase::zaurusUid() const | 344 | int IncidenceBase::zaurusUid() const |
357 | { | 345 | { |
358 | return mZaurusUid; | 346 | return mZaurusUid; |
359 | } | 347 | } |
360 | void IncidenceBase::setZaurusUid( int id ) | 348 | void IncidenceBase::setZaurusUid( int id ) |
361 | { | 349 | { |
362 | if (mReadOnly) return; | 350 | if (mReadOnly) return; |
363 | mZaurusUid = id; | 351 | mZaurusUid = id; |
364 | } | 352 | } |
365 | 353 | ||
366 | int IncidenceBase::tempSyncStat() const | 354 | int IncidenceBase::tempSyncStat() const |
367 | { | 355 | { |
368 | return mTempSyncStat; | 356 | return mTempSyncStat; |
369 | } | 357 | } |
370 | void IncidenceBase::setTempSyncStat( int id ) | 358 | void IncidenceBase::setTempSyncStat( int id ) |
diff --git a/libkcal/incidencebase.h b/libkcal/incidencebase.h index 2f85df6..e2950d3 100644 --- a/libkcal/incidencebase.h +++ b/libkcal/incidencebase.h | |||
@@ -113,34 +113,32 @@ class IncidenceBase : public CustomProperties | |||
113 | Attendee* attendeeByMail(const QString &); | 113 | Attendee* attendeeByMail(const QString &); |
114 | /** Return first Attendee with one of this emails */ | 114 | /** Return first Attendee with one of this emails */ |
115 | Attendee* attendeeByMails(const QStringList &, const QString& email = QString::null); | 115 | Attendee* attendeeByMails(const QStringList &, const QString& email = QString::null); |
116 | 116 | ||
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 | ||
143 | void registerObserver( Observer * ); | 141 | void registerObserver( Observer * ); |
144 | void unRegisterObserver( Observer * ); | 142 | void unRegisterObserver( Observer * ); |
145 | void updated(); | 143 | void updated(); |
146 | 144 | ||
@@ -148,31 +146,30 @@ class IncidenceBase : public CustomProperties | |||
148 | bool mReadOnly; | 146 | bool mReadOnly; |
149 | QDateTime getEvenTime( QDateTime ); | 147 | QDateTime getEvenTime( QDateTime ); |
150 | 148 | ||
151 | private: | 149 | private: |
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 | ||
175 | bool operator==( const IncidenceBase&, const IncidenceBase& ); | 172 | bool operator==( const IncidenceBase&, const IncidenceBase& ); |
176 | } | 173 | } |
177 | 174 | ||
178 | #endif | 175 | #endif |
diff --git a/libkcal/sharpformat.cpp b/libkcal/sharpformat.cpp index d39d2dd..605a54d 100644 --- a/libkcal/sharpformat.cpp +++ b/libkcal/sharpformat.cpp | |||
@@ -72,38 +72,38 @@ class SharpParser : public QObject | |||
72 | int i = 1; | 72 | int i = 1; |
73 | bool skip = true; | 73 | bool skip = true; |
74 | int max = attList.count() -2; | 74 | int max = attList.count() -2; |
75 | while ( i < max ) { | 75 | while ( i < max ) { |
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 ); |
106 | event->setDtStart( fromString( attList[5] ) ); | 106 | event->setDtStart( fromString( attList[5] ) ); |
107 | event->setDtEnd( fromString( attList[6] )); | 107 | event->setDtEnd( fromString( attList[6] )); |
108 | } | 108 | } |
109 | 109 | ||
@@ -176,45 +176,45 @@ class SharpParser : public QObject | |||
176 | if ( event->alarms().count() > 0 ) | 176 | if ( event->alarms().count() > 0 ) |
177 | alarm = event->alarms().first(); | 177 | alarm = event->alarms().first(); |
178 | else { | 178 | else { |
179 | alarm = new Alarm( event ); | 179 | alarm = new Alarm( event ); |
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 ) ); |
217 | 217 | ||
218 | 218 | ||
219 | 219 | ||
220 | QString hasDateStr = attList[3]; // due | 220 | QString hasDateStr = attList[3]; // due |
@@ -453,33 +453,33 @@ int SharpFormat::getNumFromRecord( QString answer, Incidence* inc ) | |||
453 | if ( start >= len || start == 0 ) { | 453 | if ( start >= len || start == 0 ) { |
454 | start = 0; | 454 | start = 0; |
455 | ok = false; | 455 | ok = false; |
456 | } | 456 | } |
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 | } |
478 | bool SharpFormat::save( Calendar *calendar) | 478 | bool SharpFormat::save( Calendar *calendar) |
479 | { | 479 | { |
480 | 480 | ||
481 | QLabel status ( i18n("Processing/adding events ..."), 0 ); | 481 | QLabel status ( i18n("Processing/adding events ..."), 0 ); |
482 | int w = status.sizeHint().width()+20 ; | 482 | int w = status.sizeHint().width()+20 ; |
483 | if ( w < 200 ) w = 200; | 483 | if ( w < 200 ) w = 200; |
484 | int h = status.sizeHint().height()+20 ; | 484 | int h = status.sizeHint().height()+20 ; |
485 | int dw = QApplication::desktop()->width(); | 485 | int dw = QApplication::desktop()->width(); |
@@ -507,33 +507,33 @@ bool SharpFormat::save( Calendar *calendar) | |||
507 | int procCount = 0; | 507 | int procCount = 0; |
508 | while ( ev ) { | 508 | while ( ev ) { |
509 | //qDebug("i %d ", ++i); | 509 | //qDebug("i %d ", ++i); |
510 | if ( ev->tempSyncStat() != SYNC_TEMPSTATE_NEW_EXTERNAL ) { | 510 | if ( ev->tempSyncStat() != SYNC_TEMPSTATE_NEW_EXTERNAL ) { |
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()); |
536 | getNumFromRecord( answer, ev ) ; | 536 | getNumFromRecord( answer, ev ) ; |
537 | 537 | ||
538 | } | 538 | } |
539 | else { // change existing | 539 | else { // change existing |
@@ -593,33 +593,33 @@ bool SharpFormat::save( Calendar *calendar) | |||
593 | message = i18n("Processing todo # "); | 593 | message = i18n("Processing todo # "); |
594 | procCount = 0; | 594 | procCount = 0; |
595 | while ( to ) { | 595 | while ( to ) { |
596 | if ( to->tempSyncStat() != SYNC_TEMPSTATE_NEW_EXTERNAL ) { | 596 | if ( to->tempSyncStat() != SYNC_TEMPSTATE_NEW_EXTERNAL ) { |
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()); |
622 | getNumFromRecord( answer, to ) ; | 622 | getNumFromRecord( answer, to ) ; |
623 | 623 | ||
624 | } | 624 | } |
625 | else { // change existing | 625 | else { // change existing |
@@ -683,33 +683,33 @@ QString SharpFormat::dtToString( const QDateTime& dti, bool useTZ ) | |||
683 | dt = dti; | 683 | dt = dti; |
684 | if(dt.date().isValid()){ | 684 | if(dt.date().isValid()){ |
685 | const QDate& date = dt.date(); | 685 | const QDate& date = dt.date(); |
686 | datestr.sprintf("%04d%02d%02d", | 686 | datestr.sprintf("%04d%02d%02d", |
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 | } |
696 | QString SharpFormat::getEventString( Event* event ) | 696 | QString 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 |
712 | list.append( "" ); | 712 | list.append( "" ); |
713 | if ( event->doesFloat () ) { | 713 | if ( event->doesFloat () ) { |
714 | list.append( dtToString( QDateTime(event->dtStart().date(), QTime(0,0,0)), false )); | 714 | list.append( dtToString( QDateTime(event->dtStart().date(), QTime(0,0,0)), false )); |
715 | list.append( dtToString( QDateTime(event->dtEnd().date(),QTime(23,59,59)), false )); //6 | 715 | list.append( dtToString( QDateTime(event->dtEnd().date(),QTime(23,59,59)), false )); //6 |
@@ -847,33 +847,33 @@ QString SharpFormat::getEventString( Event* event ) | |||
847 | QString& s = (*it); | 847 | QString& s = (*it); |
848 | s.replace(QRegExp("\""), "\"\""); | 848 | s.replace(QRegExp("\""), "\"\""); |
849 | if(s.contains(QRegExp("[,\"\r\n]")) || s.stripWhiteSpace() != s){ | 849 | if(s.contains(QRegExp("[,\"\r\n]")) || s.stripWhiteSpace() != s){ |
850 | s.prepend('\"'); | 850 | s.prepend('\"'); |
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 | } |
860 | QString SharpFormat::getTodoString( Todo* todo ) | 860 | QString 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 { |
876 | list.append( dtToString(todo->dtDue() ) ); | 876 | list.append( dtToString(todo->dtDue() ) ); |
877 | } | 877 | } |
878 | } else | 878 | } else |
879 | list.append( QString() ); | 879 | list.append( QString() ); |