-rw-r--r-- | kaddressbook/kabcore.cpp | 93 |
1 files changed, 58 insertions, 35 deletions
diff --git a/kaddressbook/kabcore.cpp b/kaddressbook/kabcore.cpp index 1196360..53c63ff 100644 --- a/kaddressbook/kabcore.cpp +++ b/kaddressbook/kabcore.cpp @@ -2504,88 +2504,111 @@ QString KABCore::getPassword( ) QPushButton pb ( "OK", &dia); lay.addWidget( &pb ); connect(&pb, SIGNAL( clicked() ), &dia, SLOT ( accept() ) ); dia.show(); int res = dia.exec(); if ( res ) retfile = lab.text(); dia.hide(); qApp->processEvents(); return retfile; } +#include <libkcal/syncdefines.h> + +KABC::Addressee KABCore::getLastSyncAddressee() +{ + Addressee lse; + //qDebug("CurrentSyncDevice %s ",mCurrentSyncDevice .latin1() ); + lse = mAddressBook->findByUid( "last-syncAddressee-"+mCurrentSyncDevice ); + if (lse.isEmpty()) { + lse.setUid( "last-syncEvent-"+mCurrentSyncDevice ); + QString sum = ""; + if ( KABPrefs::instance()->mExternSyncProfiles.contains( mCurrentSyncDevice ) ) + sum = "E: "; + lse.setFamilyName(sum+mCurrentSyncDevice + i18n(" - sync event")); + lse.setRevision( mLastAddressbookSync ); + lse.setCategories( i18n("SyncEvent") ); + mAddressBook->insertAddressee( lse ); + } + return lse; +} + bool KABCore::synchronizeAddressbooks( KABC::AddressBook* local, KABC::AddressBook* remote,int mode) { -#if 0 bool syncOK = true; int addedAddressee = 0; int addedAddresseeR = 0; int deletedAddresseeR = 0; int deletedAddresseeL = 0; int changedLocal = 0; int changedRemote = 0; //QPtrList<Addressee> el = local->rawAddressees(); - Addressee* addresseeR; + Addressee addresseeR; QString uid; int take; - Addressee* addresseeL; - Addressee* addresseeRSync; - Addressee* addresseeLSync; - QPtrList<Addressee> addresseeRSyncSharp = remote->getExternLastSyncAddressees(); - QPtrList<Addressee> addresseeLSyncSharp = local->getExternLastSyncAddressees(); + Addressee addresseeL; + Addressee addresseeRSync; + Addressee addresseeLSync; + KABC::Addressee::List addresseeRSyncSharp = remote->getExternLastSyncAddressees(); + KABC::Addressee::List addresseeLSyncSharp = local->getExternLastSyncAddressees(); bool fullDateRange = false; local->resetTempSyncStat(); - mLastCalendarSync = QDateTime::currentDateTime(); - QDateTime modifiedCalendar = mLastCalendarSync;; + mLastAddressbookSync = QDateTime::currentDateTime(); + QDateTime modifiedCalendar = mLastAddressbookSync;; addresseeLSync = getLastSyncAddressee(); - addresseeR = remote->addressee("last-syncAddressee-"+mCurrentSyncName ); - if ( addresseeR ) { - addresseeRSync = (Addressee*) addresseeR->clone(); - remote->deleteAddressee(addresseeR ); + addresseeR = remote->findByUid("last-syncAddressee-"+mCurrentSyncName ); + if ( !addresseeR.isEmpty() ) { + addresseeRSync = addresseeR; + remote->removeAddressee(addresseeR ); } else { if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { - addresseeRSync = (Addressee*)addresseeLSync->clone(); + addresseeRSync = addresseeLSync ; } else { fullDateRange = true; - addresseeRSync = new Addressee(); - addresseeRSync->setSummary(mCurrentSyncName + i18n(" - sync addressee")); - addresseeRSync->setUid("last-syncAddressee-"+mCurrentSyncName ); - addresseeRSync->setDtStart( mLastCalendarSync ); - addresseeRSync->setDtEnd( mLastCalendarSync.addSecs( 7200 ) ); - addresseeRSync->setCategories( i18n("SyncAddressee") ); + Addressee newAdd; + addresseeRSync = newAdd; + addresseeRSync.setFamilyName(mCurrentSyncName + i18n(" - sync addressee")); + addresseeRSync.setUid("last-syncAddressee-"+mCurrentSyncName ); + addresseeRSync.setRevision( mLastAddressbookSync ); + addresseeRSync.setCategories( i18n("SyncAddressee") ); } } - if ( addresseeLSync->dtStart() == mLastCalendarSync ) + if ( addresseeLSync.revision() == mLastAddressbookSync ) fullDateRange = true; - if ( ! fullDateRange ) { - if ( addresseeLSync->dtStart() != addresseeRSync->dtStart() ) { + if ( addresseeLSync.revision() != addresseeRSync.revision() ) { // qDebug("set fulldate to true %s %s" ,addresseeLSync->dtStart().toString().latin1(), addresseeRSync->dtStart().toString().latin1() ); //qDebug("%d %d %d %d ", addresseeLSync->dtStart().time().second(), addresseeLSync->dtStart().time().msec() , addresseeRSync->dtStart().time().second(), addresseeRSync->dtStart().time().msec()); fullDateRange = true; } } if ( fullDateRange ) - mLastCalendarSync = QDateTime::currentDateTime().addDays( -100*365); + mLastAddressbookSync = QDateTime::currentDateTime().addDays( -100*365); else - mLastCalendarSync = addresseeLSync->dtStart(); + mLastAddressbookSync = addresseeLSync.revision(); // for resyncing if own file has changed + // PENDING fixme later when implemented +#if 0 if ( mCurrentSyncDevice == "deleteaftersync" ) { - mLastCalendarSync = loadedFileVersion; - qDebug("setting mLastCalendarSync "); + mLastAddressbookSync = loadedFileVersion; + qDebug("setting mLastAddressbookSync "); } +#endif + + #if 0 //qDebug("*************************** "); - qDebug("mLastCalendarSync %s ",mLastCalendarSync.toString().latin1() ); + qDebug("mLastAddressbookSync %s ",mLastAddressbookSync.toString().latin1() ); QPtrList<Incidence> er = remote->rawIncidences(); Incidence* inR = er.first(); Incidence* inL; QProgressBar bar( er.count(),0 ); bar.setCaption (i18n("Syncing - close to abort!") ); int w = 300; if ( QApplication::desktop()->width() < 320 ) w = 220; int h = bar.sizeHint().height() ; int dw = QApplication::desktop()->width(); int dh = QApplication::desktop()->height(); @@ -2648,25 +2671,25 @@ bool KABCore::synchronizeAddressbooks( KABC::AddressBook* local, KABC::AddressBo pref = "t"; if ( des.find(pref+ inR->getID(mCurrentSyncDevice) +"," ) >= 0 && mode != 5) { // delete it inR->setTempSyncStat( SYNC_TEMPSTATE_DELETE ); //remote->deleteIncidence( inR ); ++deletedAddresseeR; } else { inR->setLastModified( modifiedCalendar ); inL = inR->clone(); local->addIncidence( inL ); ++addedAddressee; } } else { - if ( inR->lastModified() > mLastCalendarSync || mode == 5 ) { + if ( inR->lastModified() > mLastAddressbookSync || mode == 5 ) { inR->setLastModified( modifiedCalendar ); local->addIncidence( inR->clone() ); ++addedAddressee; } else { checkExternSyncAddressee(addresseeRSyncSharp, inR); remote->deleteIncidence( inR ); ++deletedAddresseeR; } } } } inR = er.next(); @@ -2704,25 +2727,25 @@ bool KABCore::synchronizeAddressbooks( KABC::AddressBook* local, KABC::AddressBo } else { if ( ! KOPrefs::instance()->mWriteBackExistingOnly ) { inL->removeID(mCurrentSyncDevice ); ++addedAddresseeR; //qDebug("remote added Incidence %s ", inL->summary().latin1()); inL->setLastModified( modifiedCalendar ); inR = inL->clone(); inR->setTempSyncStat( SYNC_TEMPSTATE_INITIAL ); remote->addIncidence( inR ); } } } else { - if ( inL->lastModified() < mLastCalendarSync && mode != 4 ) { + if ( inL->lastModified() < mLastAddressbookSync && mode != 4 ) { checkExternSyncAddressee(addresseeLSyncSharp, inL); local->deleteIncidence( inL ); ++deletedAddresseeL; } else { if ( ! KOPrefs::instance()->mWriteBackExistingOnly ) { ++addedAddresseeR; inL->setLastModified( modifiedCalendar ); remote->addIncidence( inL->clone() ); } } } } @@ -2751,30 +2774,30 @@ bool KABCore::synchronizeAddressbooks( KABC::AddressBook* local, KABC::AddressBo dt = cur.addSecs( -62 ); } else dt = inR->dtStart(); if ( dt < cur || dt > end ) { remote->deleteIncidence( inR ); ++delFut; } inR = er.next(); } } bar.hide(); - mLastCalendarSync = QDateTime::currentDateTime().addSecs( 1 ); + mLastAddressbookSync = QDateTime::currentDateTime().addSecs( 1 ); addresseeLSync->setReadOnly( false ); - addresseeLSync->setDtStart( mLastCalendarSync ); - addresseeRSync->setDtStart( mLastCalendarSync ); - addresseeLSync->setDtEnd( mLastCalendarSync.addSecs( 3600 ) ); - addresseeRSync->setDtEnd( mLastCalendarSync.addSecs( 3600 ) ); + addresseeLSync->setDtStart( mLastAddressbookSync ); + addresseeRSync->setDtStart( mLastAddressbookSync ); + addresseeLSync->setDtEnd( mLastAddressbookSync.addSecs( 3600 ) ); + addresseeRSync->setDtEnd( mLastAddressbookSync.addSecs( 3600 ) ); addresseeRSync->setLocation( i18n("Remote from: ")+mCurrentSyncName ) ; addresseeLSync->setLocation(i18n("Local from: ") + mCurrentSyncName ); addresseeLSync->setReadOnly( true ); if ( mGlobalSyncMode == SYNC_MODE_NORMAL) remote->addAddressee( addresseeRSync ); QString mes; mes .sprintf( i18n("Synchronization summary:\n\n %d items added to local\n %d items added to remote\n %d items updated on local\n %d items updated on remote\n %d items deleted on local\n %d items deleted on remote\n"),addedAddressee, addedAddresseeR, changedLocal, changedRemote, deletedAddresseeL, deletedAddresseeR ); QString delmess; if ( delFut ) { delmess.sprintf( i18n("%d items skipped on remote,\nbecause they are in the past or\nmore than %d weeks in the future.\n"),delFut, KOPrefs::instance()->mWriteBackInFuture ); mes += delmess; } |