From 3ebd85e83e6f9d4ac59ce1828548f7236e2b1af0 Mon Sep 17 00:00:00 2001 From: zautrix Date: Mon, 02 Aug 2004 00:09:04 +0000 Subject: More sync hacking --- diff --git a/korganizer/calendarview.cpp b/korganizer/calendarview.cpp index cfc6b10..9160e1d 100644 --- a/korganizer/calendarview.cpp +++ b/korganizer/calendarview.cpp @@ -850,11 +850,14 @@ Event* CalendarView::getLastSyncEvent() { Event* lse; //qDebug("CurrentSyncDevice %s ",mCurrentSyncDevice .latin1() ); - lse = mCalendar->event( "last-syncEvent-device-"+mCurrentSyncDevice ); + lse = mCalendar->event( "last-syncEvent-"+mCurrentSyncDevice ); if (!lse) { lse = new Event(); - lse->setUid( "last-syncEvent-device-"+mCurrentSyncDevice ); - lse->setSummary(mCurrentSyncDevice + i18n(" - sync event")); + lse->setUid( "last-syncEvent-"+mCurrentSyncDevice ); + QString sum = ""; + if ( KOPrefs::instance()->mExternSyncProfiles.contains( mCurrentSyncDevice ) ) + sum = "E: "; + lse->setSummary(sum+mCurrentSyncDevice + i18n(" - sync event")); lse->setDtStart( mLastCalendarSync ); lse->setDtEnd( mLastCalendarSync.addSecs( 7200 ) ); lse->setCategories( i18n("SyncEvent") ); @@ -865,22 +868,45 @@ Event* CalendarView::getLastSyncEvent() return lse; } -void CalendarView::checkSharpEvent( Event* lastSync, Incidence* toDelete ) +void CalendarView::setupExternSyncProfiles() { - if ( ! lastSync ) - return; - if ( toDelete->zaurusId() < 0 ) + Event* lse; + mExternLastSyncEvent.clear(); + int i; + for ( i = 0; i < KOPrefs::instance()->mExternSyncProfiles.count(); ++i ) { + lse = mCalendar->event( "last-syncEvent-"+ KOPrefs::instance()->mExternSyncProfiles[i] ); + if ( lse ) + mExternLastSyncEvent.append( lse ); + else + qDebug("Last Sync event not found for %s ", KOPrefs::instance()->mExternSyncProfiles[i].latin1()); + } + +} +// we check, if the to delete event has a id for a profile +// if yes, we set this id in the profile to delete +void CalendarView::checkExternSyncEvent( QPtrList lastSync , Incidence* toDelete ) +{ + if ( ! lastSync.count() == 0 ) return; if ( toDelete->type() == "Journal" ) return; - QString des = lastSync->description(); - QString pref = "e"; - if ( toDelete->type() == "Todo" ) - pref = "t"; - des += pref+ QString::number ( toDelete->zaurusId() ) + ","; - lastSync->setReadOnly( false ); - lastSync->setDescription( des ); - lastSync->setReadOnly( true ); + + Event* eve = lastSync.first(); + + while ( eve ) { + int id = toDelete->getID( eve->uid().mid( 15 ) ); // this is the sync profile name + if ( id >= 0 ) { + QString des = eve->description(); + QString pref = "e"; + if ( toDelete->type() == "Todo" ) + pref = "t"; + des += pref+ QString::number ( id ) + ","; + eve->setReadOnly( false ); + eve->setDescription( des ); + eve->setReadOnly( true ); + } + eve = lastSync.next(); + } } bool CalendarView::synchronizeCalendar( Calendar* local, Calendar* remote, int mode ) @@ -899,12 +925,12 @@ bool CalendarView::synchronizeCalendar( Calendar* local, Calendar* remote, int Event* eventL; Event* eventRSync; Event* eventLSync; - Event* eventRSyncSharp = remote->event( "last-syncEvent-device-Sharp-DTM"); - Event* eventLSyncSharp = local->event( "last-syncEvent-device-Sharp-DTM"); + QPtrList eventRSyncSharp = remote->getExternLastSyncEvents(); + QPtrList eventLSyncSharp = local->getExternLastSyncEvents(); bool fullDateRange = false; mLastCalendarSync = QDateTime::currentDateTime(); QDateTime modifiedCalendar = mLastCalendarSync;; - eventR = remote->event("last-syncEvent-device-"+mCurrentSyncName ); + eventR = remote->event("last-syncEvent-"+mCurrentSyncName ); if ( eventR ) { eventRSync = (Event*) eventR->clone(); remote->deleteEvent(eventR ); @@ -913,7 +939,7 @@ bool CalendarView::synchronizeCalendar( Calendar* local, Calendar* remote, int fullDateRange = true; eventRSync = new Event(); eventRSync->setSummary(mCurrentSyncName + i18n(" - sync event")); - eventRSync->setUid("last-syncEvent-device-"+mCurrentSyncName ); + eventRSync->setUid("last-syncEvent-"+mCurrentSyncName ); eventRSync->setDtStart( mLastCalendarSync ); eventRSync->setDtEnd( mLastCalendarSync.addSecs( 7200 ) ); eventRSync->setCategories( i18n("SyncEvent") ); @@ -965,7 +991,7 @@ bool CalendarView::synchronizeCalendar( Calendar* local, Calendar* remote, int ++incCounter; uid = inR->uid(); bool skipIncidence = false; - if ( uid.left(21) == QString("last-syncEvent-device") ) + if ( uid.left(15) == QString("last-syncEvent-") ) skipIncidence = true; qApp->processEvents(); @@ -1015,7 +1041,7 @@ bool CalendarView::synchronizeCalendar( Calendar* local, Calendar* remote, int local->addIncidence( inR->clone() ); ++addedEvent; } else { - checkSharpEvent(eventRSyncSharp, inR); + checkExternSyncEvent(eventRSyncSharp, inR); remote->deleteIncidence( inR ); ++deletedEventR; } @@ -1042,7 +1068,7 @@ bool CalendarView::synchronizeCalendar( Calendar* local, Calendar* remote, int ++incCounter; uid = inL->uid(); bool skipIncidence = false; - if ( uid.left(21) == QString("last-syncEvent-device") ) + if ( uid.left(15) == QString("last-syncEvent-") ) skipIncidence = true; if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL && inL->type() == "Journal" ) skipIncidence = true; @@ -1063,7 +1089,7 @@ bool CalendarView::synchronizeCalendar( Calendar* local, Calendar* remote, int } } else { if ( inL->lastModified() < mLastCalendarSync && mode != 4 ) { - checkSharpEvent(eventLSyncSharp, inL); + checkExternSyncEvent(eventLSyncSharp, inL); local->deleteIncidence( inL ); ++deletedEventL; } else { @@ -1342,7 +1368,7 @@ void CalendarView::setSyncEventsReadOnly() QPtrList eL = mCalendar->rawEvents(); ev = eL.first(); while ( ev ) { - if ( ev->uid().left(21) == QString("last-syncEvent-device") ) + if ( ev->uid().left(15) == QString("last-syncEvent-") ) ev->setReadOnly( true ); ev = eL.next(); } @@ -1806,7 +1832,7 @@ void CalendarView::changeTodoDisplay(Todo *which, int action) void CalendarView::checkZaurusId( int id, bool todo ) { if ( id >= 0 ) { - Incidence* lse = mCalendar->event( "last-syncEvent-device-Sharp-DTM"); + Incidence* lse = mCalendar->event( "last-syncEvent-Sharp-DTM"); if ( lse ) { QString des = lse->description(); QString pref = "e"; diff --git a/korganizer/calendarview.h b/korganizer/calendarview.h index 8aa5e1c..557554f 100644 --- a/korganizer/calendarview.h +++ b/korganizer/calendarview.h @@ -113,6 +113,7 @@ class CalendarView : public KOrg::CalendarViewBase, public KCal::Calendar::Obser void showView(KOrg::BaseView *); KOEventViewerDialog* getEventViewerDialog(); Incidence *currentSelection(); + void setupExternSyncProfiles(); signals: /** This todo has been modified */ @@ -481,7 +482,7 @@ class CalendarView : public KOrg::CalendarViewBase, public KCal::Calendar::Obser void setSyncEventsReadOnly(); QDateTime loadedFileVersion; - void checkSharpEvent( Event* lastSync, Incidence* toDelete ); + void checkExternSyncEvent( QPtrList lastSync , Incidence* toDelete ); void checkZaurusId( int id, bool todo = false ); int mGlobalSyncMode; QString mCurrentSyncDevice; @@ -534,7 +535,7 @@ class CalendarView : public KOrg::CalendarViewBase, public KCal::Calendar::Obser Incidence *mSelectedIncidence; Incidence *mMoveIncidence; - + QPtrList mExternLastSyncEvent; KOTodoView *mTodoList; KOEventEditor * mEventEditor; KOTodoEditor * mTodoEditor; diff --git a/korganizer/koprefs.cpp b/korganizer/koprefs.cpp index 3ba5ab2..f3231ff 100644 --- a/korganizer/koprefs.cpp +++ b/korganizer/koprefs.cpp @@ -177,16 +177,17 @@ KOPrefs::KOPrefs() : addItemFont("WhatsNextView Font",&mWhatsNextFont); addItemFont("EventView Font",&mEventViewFont); - KPrefs::setCurrentGroup("SyncProfiles"); - addItemString("LocalMachineName",&mLocalMachineName, "undefined"); - addItemStringList("SyncProfileNames",&mSyncProfileNames); +// KPrefs::setCurrentGroup("SyncProfiles"); +// addItemString("LocalMachineName",&mLocalMachineName, "undefined"); +// addItemStringList("SyncProfileNames",&mSyncProfileNames); +// addItemStringList("ExternSyncProfiles",&mExternSyncProfileNames); KPrefs::setCurrentGroup("RemoteSyncing"); - addItemBool("UsePasswd",&mUsePassWd,false); - addItemBool("WriteBackFile",&mWriteBackFile,true); - addItemBool("WriteBackExistingOnly",&mWriteBackExistingOnly,false); - addItemBool("AskForPreferences",&mAskForPreferences,true); - addItemBool("ShowSyncSummary",&mShowSyncSummary,true); +// addItemBool("UsePasswd",&mUsePassWd,false); +// addItemBool("WriteBackFile",&mWriteBackFile,true); +// addItemBool("WriteBackExistingOnly",&mWriteBackExistingOnly,false); +// addItemBool("AskForPreferences",&mAskForPreferences,true); +// addItemBool("ShowSyncSummary",&mShowSyncSummary,true); addItemBool("ShowSyncEvents",&mShowSyncEvents,false); addItemInt("LastSyncTime",&mLastSyncTime,0); addItemInt("SyncAlgoPrefs",&mSyncAlgoPrefs,3); @@ -197,11 +198,11 @@ KOPrefs::KOPrefs() : #else QString hdp= locateLocal("data","korganizer")+"/"; #endif - addItemString("RemoteIP",&mRemoteIP, "192.168.0.65"); - addItemString("RemoteUser",&mRemoteUser, "zaurus"); - addItemString("RemotePassWd",&mRemotePassWd, ""); - addItemString("RemoteFile", &mRemoteFile, hdp+"mycalendar.ics"); - addItemString("LocalTempFile",&mLocalTempFile, "/tmp/tempsyncfile.ics" ); +// addItemString("RemoteIP",&mRemoteIP, "192.168.0.65"); +// addItemString("RemoteUser",&mRemoteUser, "zaurus"); +// addItemString("RemotePassWd",&mRemotePassWd, ""); +// addItemString("RemoteFile", &mRemoteFile, hdp+"mycalendar.ics"); +// addItemString("LocalTempFile",&mLocalTempFile, "/tmp/tempsyncfile.ics" ); KPrefs::setCurrentGroup("LoadSaveFileNames"); diff --git a/korganizer/koprefs.h b/korganizer/koprefs.h index fe044e6..424fa98 100644 --- a/korganizer/koprefs.h +++ b/korganizer/koprefs.h @@ -215,6 +215,7 @@ class KOPrefs : public KPimPrefs int mSyncAlgoPrefs; int mRingSyncAlgoPrefs; QStringList mSyncProfileNames; + QStringList mExternSyncProfiles; QString mLocalMachineName; void setCategoryColor(QString cat,const QColor & color); QColor *categoryColor(QString cat); diff --git a/korganizer/mainwindow.cpp b/korganizer/mainwindow.cpp index 44b1264..6020a46 100644 --- a/korganizer/mainwindow.cpp +++ b/korganizer/mainwindow.cpp @@ -836,9 +836,11 @@ void MainWindow::fillSyncMenu() temp->writeConfig(&config); config.setGroup("General"); config.writeEntry("SyncProfileNames",prof); + config.writeEntry("ExternSyncProfiles","Sharp_DTM"); config.sync(); delete temp; } + KOPrefs::instance()->mExternSyncProfiles = config.readListEntry("ExternSyncProfiles"); KOPrefs::instance()->mSyncProfileNames = prof; int i; for ( i = 0; i < prof.count(); ++i ) { @@ -851,6 +853,7 @@ void MainWindow::fillSyncMenu() if ( !app_dir.exists(QDir::homeDirPath()+"/Applications/dtm" ) ) { syncMenu->setItemEnabled( false , 1000 ); } + mView->setupExternSyncProfiles(); } int MainWindow::ringSync() diff --git a/libkcal/calendar.h b/libkcal/calendar.h index 7d23619..df5bbcf 100644 --- a/libkcal/calendar.h +++ b/libkcal/calendar.h @@ -75,7 +75,7 @@ public: Sync changes in memory to persistant storage. */ virtual void save() = 0; - + virtual QPtrList getExternLastSyncEvents() = 0; virtual bool isSaving() { return false; } /** diff --git a/libkcal/calendarlocal.cpp b/libkcal/calendarlocal.cpp index 3c572f0..09ce9f0 100644 --- a/libkcal/calendarlocal.cpp +++ b/libkcal/calendarlocal.cpp @@ -222,6 +222,19 @@ Todo *CalendarLocal::todo( int id ) return 0; } +QPtrList CalendarLocal::getExternLastSyncEvents() +{ + QPtrList el; + Event *todo; + for ( todo = mEventList.first(); todo; todo = mEventList.next() ) { + if ( todo->uid().left( 15 ) == QString("last-syncEvent-") ) + if ( todo->summary().left(3) == "E: " ) + el.append( todo ); + } + + return el; + +} Event *CalendarLocal::event( int id ) { Event *todo; @@ -320,7 +333,6 @@ QString CalendarLocal:: getAlarmNotification() ret+= "\n"+mNextAlarmEventDateTimeString; return ret; } - void CalendarLocal::registerAlarm() { mLastAlarmNotificationString = getAlarmNotification(); diff --git a/libkcal/calendarlocal.h b/libkcal/calendarlocal.h index a2e50e3..3257198 100644 --- a/libkcal/calendarlocal.h +++ b/libkcal/calendarlocal.h @@ -85,7 +85,7 @@ class CalendarLocal : public Calendar Return unfiltered list of all events in calendar. */ QPtrList rawEvents(); - + QPtrList getExternLastSyncEvents(); /** Add a todo to the todolist. */ -- cgit v0.9.0.2