-rw-r--r-- | kaddressbook/kabcore.cpp | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/kaddressbook/kabcore.cpp b/kaddressbook/kabcore.cpp index a8e4de5..1b17665 100644 --- a/kaddressbook/kabcore.cpp +++ b/kaddressbook/kabcore.cpp | |||
@@ -3041,193 +3041,194 @@ bool KABCore::synchronizeAddressbooks( KABC::AddressBook* local, KABC::AddressBo | |||
3041 | ++incCounter; | 3041 | ++incCounter; |
3042 | } | 3042 | } |
3043 | er.clear(); | 3043 | er.clear(); |
3044 | QStringList el = local->uidList(); | 3044 | QStringList el = local->uidList(); |
3045 | modulo = (el.count()/10)+1; | 3045 | modulo = (el.count()/10)+1; |
3046 | 3046 | ||
3047 | syncManager->showProgressBar(0, i18n("Add / remove addressees"), el.count()); | 3047 | syncManager->showProgressBar(0, i18n("Add / remove addressees"), el.count()); |
3048 | incCounter = 0; | 3048 | incCounter = 0; |
3049 | while ( incCounter < el.count()) { | 3049 | while ( incCounter < el.count()) { |
3050 | qApp->processEvents(); | 3050 | qApp->processEvents(); |
3051 | if (syncManager->isProgressBarCanceled()) | 3051 | if (syncManager->isProgressBarCanceled()) |
3052 | return false; | 3052 | return false; |
3053 | if ( incCounter % modulo == 0 ) | 3053 | if ( incCounter % modulo == 0 ) |
3054 | syncManager->showProgressBar(incCounter); | 3054 | syncManager->showProgressBar(incCounter); |
3055 | uid = el[ incCounter ]; | 3055 | uid = el[ incCounter ]; |
3056 | bool skipIncidence = false; | 3056 | bool skipIncidence = false; |
3057 | if ( uid.left(19) == QString("last-syncAddressee-") ) | 3057 | if ( uid.left(19) == QString("last-syncAddressee-") ) |
3058 | skipIncidence = true; | 3058 | skipIncidence = true; |
3059 | if ( !skipIncidence ) { | 3059 | if ( !skipIncidence ) { |
3060 | inL = local->findByUid( uid ); | 3060 | inL = local->findByUid( uid ); |
3061 | if ( !inL.resource() || inL.resource()->includeInSync() ) { | 3061 | if ( !inL.resource() || inL.resource()->includeInSync() ) { |
3062 | inR = remote->findByUid( uid ); | 3062 | inR = remote->findByUid( uid ); |
3063 | if ( inR.isEmpty() ){ | 3063 | if ( inR.isEmpty() ){ |
3064 | if ( filterOUT.name().isEmpty() || filterOUT.filterAddressee( inL ) ) { | 3064 | if ( filterOUT.name().isEmpty() || filterOUT.filterAddressee( inL ) ) { |
3065 | // no conflict ********** add or delete local | 3065 | // no conflict ********** add or delete local |
3066 | if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { | 3066 | if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { |
3067 | if ( !inL.getID(mCurrentSyncDevice).isEmpty() && mode != 4 ) { | 3067 | if ( !inL.getID(mCurrentSyncDevice).isEmpty() && mode != 4 ) { |
3068 | // pending checkExternSyncAddressee(addresseeLSyncSharp, inL); | 3068 | // pending checkExternSyncAddressee(addresseeLSyncSharp, inL); |
3069 | local->removeAddressee( inL ); | 3069 | local->removeAddressee( inL ); |
3070 | ++deletedAddresseeL; | 3070 | ++deletedAddresseeL; |
3071 | } else { | 3071 | } else { |
3072 | if ( ! syncManager->mWriteBackExistingOnly ) { | 3072 | if ( ! syncManager->mWriteBackExistingOnly ) { |
3073 | inL.removeID(mCurrentSyncDevice ); | 3073 | inL.removeID(mCurrentSyncDevice ); |
3074 | ++addedAddresseeR; | 3074 | ++addedAddresseeR; |
3075 | inL.setRevision( modifiedCalendar ); | 3075 | inL.setRevision( modifiedCalendar ); |
3076 | local->insertAddressee( inL, false ); | 3076 | local->insertAddressee( inL, false ); |
3077 | inR = inL; | 3077 | inR = inL; |
3078 | inR.setTempSyncStat( SYNC_TEMPSTATE_ADDED_EXTERNAL ); | 3078 | inR.setTempSyncStat( SYNC_TEMPSTATE_ADDED_EXTERNAL ); |
3079 | inR.setResource( 0 ); | 3079 | inR.setResource( 0 ); |
3080 | remote->insertAddressee( inR, false ); | 3080 | remote->insertAddressee( inR, false ); |
3081 | } | 3081 | } |
3082 | } | 3082 | } |
3083 | } else { | 3083 | } else { |
3084 | if ( inL.revision() < mLastAddressbookSync && mode != 4 ) { | 3084 | if ( inL.revision() < mLastAddressbookSync && mode != 4 ) { |
3085 | //qDebug("data %s ", inL.revision().toString().latin1()); | 3085 | //qDebug("data %s ", inL.revision().toString().latin1()); |
3086 | // pending checkExternSyncAddressee(addresseeLSyncSharp, inL); | 3086 | // pending checkExternSyncAddressee(addresseeLSyncSharp, inL); |
3087 | local->removeAddressee( inL ); | 3087 | local->removeAddressee( inL ); |
3088 | ++deletedAddresseeL; | 3088 | ++deletedAddresseeL; |
3089 | } else { | 3089 | } else { |
3090 | if ( ! syncManager->mWriteBackExistingOnly ) { | 3090 | if ( ! syncManager->mWriteBackExistingOnly ) { |
3091 | ++addedAddresseeR; | 3091 | ++addedAddresseeR; |
3092 | inL.setRevision( modifiedCalendar ); | 3092 | inL.setRevision( modifiedCalendar ); |
3093 | local->insertAddressee( inL, false ); | 3093 | local->insertAddressee( inL, false ); |
3094 | inR = inL; | 3094 | inR = inL; |
3095 | inR.setIDStr( ":" ); | 3095 | inR.setIDStr( ":" ); |
3096 | inR.setResource( 0 ); | 3096 | inR.setResource( 0 ); |
3097 | remote->insertAddressee( inR, false ); | 3097 | remote->insertAddressee( inR, false ); |
3098 | } | 3098 | } |
3099 | } | 3099 | } |
3100 | } | 3100 | } |
3101 | } else { | 3101 | } else { |
3102 | ++filteredOUT; | 3102 | ++filteredOUT; |
3103 | } | 3103 | } |
3104 | } | 3104 | } |
3105 | } | 3105 | } |
3106 | } | 3106 | } |
3107 | ++incCounter; | 3107 | ++incCounter; |
3108 | } | 3108 | } |
3109 | el.clear(); | 3109 | el.clear(); |
3110 | syncManager->hideProgressBar(); | 3110 | syncManager->hideProgressBar(); |
3111 | mLastAddressbookSync = QDateTime::currentDateTime().addSecs( 1 ); | 3111 | mLastAddressbookSync = QDateTime::currentDateTime().addSecs( 1 ); |
3112 | // get rid of micro seconds | 3112 | // get rid of micro seconds |
3113 | QTime t = mLastAddressbookSync.time(); | 3113 | QTime t = mLastAddressbookSync.time(); |
3114 | mLastAddressbookSync.setTime( QTime (t.hour (), t.minute (), t.second () ) ); | 3114 | mLastAddressbookSync.setTime( QTime (t.hour (), t.minute (), t.second () ) ); |
3115 | addresseeLSync.setRevision( mLastAddressbookSync ); | 3115 | addresseeLSync.setRevision( mLastAddressbookSync ); |
3116 | addresseeRSync.setRevision( mLastAddressbookSync ); | 3116 | addresseeRSync.setRevision( mLastAddressbookSync ); |
3117 | addresseeRSync.setRole( i18n("!Remote from: ")+mCurrentSyncName ) ; | 3117 | addresseeRSync.setRole( i18n("!Remote from: ")+mCurrentSyncName ) ; |
3118 | addresseeLSync.setRole(i18n("!Local from: ") + mCurrentSyncName ); | 3118 | addresseeLSync.setRole(i18n("!Local from: ") + mCurrentSyncName ); |
3119 | addresseeRSync.setGivenName( i18n("!DO NOT EDIT!") ) ; | 3119 | addresseeRSync.setGivenName( i18n("!DO NOT EDIT!") ) ; |
3120 | addresseeLSync.setGivenName(i18n("!DO NOT EDIT!") ); | 3120 | addresseeLSync.setGivenName(i18n("!DO NOT EDIT!") ); |
3121 | addresseeRSync.setOrganization( "!"+mLastAddressbookSync.toString() ) ; | 3121 | addresseeRSync.setOrganization( "!"+mLastAddressbookSync.toString() ) ; |
3122 | addresseeLSync.setOrganization("!"+ mLastAddressbookSync.toString() ); | 3122 | addresseeLSync.setOrganization("!"+ mLastAddressbookSync.toString() ); |
3123 | addresseeRSync.setNote( "" ) ; | 3123 | addresseeRSync.setNote( "" ) ; |
3124 | addresseeLSync.setNote( "" ); | 3124 | addresseeLSync.setNote( "" ); |
3125 | 3125 | ||
3126 | if ( mGlobalSyncMode == SYNC_MODE_NORMAL) | 3126 | if ( mGlobalSyncMode == SYNC_MODE_NORMAL) |
3127 | remote->insertAddressee( addresseeRSync, false ); | 3127 | remote->insertAddressee( addresseeRSync, false ); |
3128 | local->insertAddressee( addresseeLSync, false ); | 3128 | local->insertAddressee( addresseeLSync, false ); |
3129 | QString mes; | 3129 | QString mes; |
3130 | 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 %d incoming filtered out\n %d outgoing filtered out"),addedAddressee, addedAddresseeR, changedLocal, changedRemote, deletedAddresseeL, deletedAddresseeR, filteredIN, filteredOUT ); | 3130 | 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 %d incoming filtered out\n %d outgoing filtered out"),addedAddressee, addedAddresseeR, changedLocal, changedRemote, deletedAddresseeL, deletedAddresseeR, filteredIN, filteredOUT ); |
3131 | qDebug( mes ); | 3131 | qDebug( mes ); |
3132 | mes = i18n("Local addressbook changed!\n") +mes; | 3132 | mes = i18n("Local addressbook changed!\n") +mes; |
3133 | if ( syncManager->mShowSyncSummary ) { | 3133 | if ( syncManager->mShowSyncSummary ) { |
3134 | if ( KMessageBox::Cancel == KMessageBox::warningContinueCancel(this, mes, | 3134 | if ( KMessageBox::Cancel == KMessageBox::warningContinueCancel(this, mes, |
3135 | i18n("KA/Pi Synchronization"),i18n("Write back"))) { | 3135 | i18n("KA/Pi Synchronization"),i18n("Write back"))) { |
3136 | qDebug("KA: WB cancelled "); | 3136 | qDebug("KA: WB cancelled "); |
3137 | return false; | 3137 | syncManager->mWriteBackFile = false; |
3138 | return syncOK; | ||
3138 | } | 3139 | } |
3139 | } | 3140 | } |
3140 | return syncOK; | 3141 | return syncOK; |
3141 | } | 3142 | } |
3142 | 3143 | ||
3143 | 3144 | ||
3144 | //this is a overwritten callbackmethods from the syncinterface | 3145 | //this is a overwritten callbackmethods from the syncinterface |
3145 | bool KABCore::sync(KSyncManager* manager, QString filename, int mode) | 3146 | bool KABCore::sync(KSyncManager* manager, QString filename, int mode) |
3146 | { | 3147 | { |
3147 | 3148 | ||
3148 | //pending prepare addresseeview for output | 3149 | //pending prepare addresseeview for output |
3149 | //pending detect, if remote file has REV field. if not switch to external sync | 3150 | //pending detect, if remote file has REV field. if not switch to external sync |
3150 | mGlobalSyncMode = SYNC_MODE_NORMAL; | 3151 | mGlobalSyncMode = SYNC_MODE_NORMAL; |
3151 | if ( manager != syncManager ) | 3152 | if ( manager != syncManager ) |
3152 | qDebug("KABCore::sync:: ERROR! :: manager != syncManager "); | 3153 | qDebug("KABCore::sync:: ERROR! :: manager != syncManager "); |
3153 | QString mCurrentSyncDevice = manager->getCurrentSyncDevice(); | 3154 | QString mCurrentSyncDevice = manager->getCurrentSyncDevice(); |
3154 | 3155 | ||
3155 | AddressBook abLocal(filename,"syncContact"); | 3156 | AddressBook abLocal(filename,"syncContact"); |
3156 | bool syncOK = false; | 3157 | bool syncOK = false; |
3157 | if ( abLocal.load() ) { | 3158 | if ( abLocal.load() ) { |
3158 | qDebug("KA: Sync::AB loaded %s,sync mode %d",filename.latin1(), mode ); | 3159 | qDebug("KA: Sync::AB loaded %s,sync mode %d",filename.latin1(), mode ); |
3159 | bool external = false; | 3160 | bool external = false; |
3160 | bool isXML = false; | 3161 | bool isXML = false; |
3161 | if ( filename.right(4) == ".xml") { | 3162 | if ( filename.right(4) == ".xml") { |
3162 | mGlobalSyncMode = SYNC_MODE_EXTERNAL; | 3163 | mGlobalSyncMode = SYNC_MODE_EXTERNAL; |
3163 | isXML = true; | 3164 | isXML = true; |
3164 | abLocal.preExternSync( mAddressBook ,mCurrentSyncDevice, true ); | 3165 | abLocal.preExternSync( mAddressBook ,mCurrentSyncDevice, true ); |
3165 | } else { | 3166 | } else { |
3166 | external = !manager->mIsKapiFile; | 3167 | external = !manager->mIsKapiFile; |
3167 | if ( external ) { | 3168 | if ( external ) { |
3168 | qDebug("KA: Sync::Setting vcf mode to external "); | 3169 | qDebug("KA: Sync::Setting vcf mode to external "); |
3169 | mGlobalSyncMode = SYNC_MODE_EXTERNAL; | 3170 | mGlobalSyncMode = SYNC_MODE_EXTERNAL; |
3170 | AddressBook::Iterator it; | 3171 | AddressBook::Iterator it; |
3171 | for ( it = abLocal.begin(); it != abLocal.end(); ++it ) { | 3172 | for ( it = abLocal.begin(); it != abLocal.end(); ++it ) { |
3172 | (*it).setID( mCurrentSyncDevice, (*it).uid() ); | 3173 | (*it).setID( mCurrentSyncDevice, (*it).uid() ); |
3173 | (*it).computeCsum( mCurrentSyncDevice ); | 3174 | (*it).computeCsum( mCurrentSyncDevice ); |
3174 | } | 3175 | } |
3175 | } | 3176 | } |
3176 | } | 3177 | } |
3177 | //AddressBook::Iterator it; | 3178 | //AddressBook::Iterator it; |
3178 | //QStringList vcards; | 3179 | //QStringList vcards; |
3179 | //for ( it = abLocal.begin(); it != abLocal.end(); ++it ) { | 3180 | //for ( it = abLocal.begin(); it != abLocal.end(); ++it ) { |
3180 | // qDebug("Name %s ", (*it).familyName().latin1()); | 3181 | // qDebug("Name %s ", (*it).familyName().latin1()); |
3181 | //} | 3182 | //} |
3182 | syncOK = synchronizeAddressbooks( mAddressBook, &abLocal, mode ); | 3183 | syncOK = synchronizeAddressbooks( mAddressBook, &abLocal, mode ); |
3183 | if ( syncOK ) { | 3184 | if ( syncOK ) { |
3184 | if ( syncManager->mWriteBackFile ) | 3185 | if ( syncManager->mWriteBackFile ) |
3185 | { | 3186 | { |
3186 | if ( external ) | 3187 | if ( external ) |
3187 | abLocal.removeSyncAddressees( !isXML); | 3188 | abLocal.removeSyncAddressees( !isXML); |
3188 | qDebug("KA: Sync::Saving remote AB "); | 3189 | qDebug("KA: Sync::Saving remote AB "); |
3189 | if ( ! abLocal.saveAB()) | 3190 | if ( ! abLocal.saveAB()) |
3190 | qDebug("KA: sync::Error writing back AB to file "); | 3191 | qDebug("KA: sync::Error writing back AB to file "); |
3191 | if ( external ) { | 3192 | if ( external ) { |
3192 | // afterwrite processing | 3193 | // afterwrite processing |
3193 | abLocal.postExternSync( mAddressBook,mCurrentSyncDevice ,isXML); | 3194 | abLocal.postExternSync( mAddressBook,mCurrentSyncDevice ,isXML); |
3194 | } | 3195 | } |
3195 | } | 3196 | } |
3196 | } | 3197 | } |
3197 | setModified(); | 3198 | setModified(); |
3198 | 3199 | ||
3199 | } | 3200 | } |
3200 | abLocal.removeResources(); | 3201 | abLocal.removeResources(); |
3201 | if ( syncOK ) | 3202 | if ( syncOK ) |
3202 | mViewManager->refreshView(); | 3203 | mViewManager->refreshView(); |
3203 | return syncOK; | 3204 | return syncOK; |
3204 | 3205 | ||
3205 | } | 3206 | } |
3206 | void KABCore::removeSyncInfo( QString syncProfile) | 3207 | void KABCore::removeSyncInfo( QString syncProfile) |
3207 | { | 3208 | { |
3208 | qDebug("KA: AB:removeSyncInfo for profile %s ", syncProfile.latin1()); | 3209 | qDebug("KA: AB:removeSyncInfo for profile %s ", syncProfile.latin1()); |
3209 | mAddressBook->removeSyncInfo( syncProfile ); | 3210 | mAddressBook->removeSyncInfo( syncProfile ); |
3210 | setModified(); | 3211 | setModified(); |
3211 | } | 3212 | } |
3212 | 3213 | ||
3213 | 3214 | ||
3214 | //this is a overwritten callbackmethods from the syncinterface | 3215 | //this is a overwritten callbackmethods from the syncinterface |
3215 | bool KABCore::syncExternal(KSyncManager* manager, QString resource) | 3216 | bool KABCore::syncExternal(KSyncManager* manager, QString resource) |
3216 | { | 3217 | { |
3217 | if ( resource == "phone" ) | 3218 | if ( resource == "phone" ) |
3218 | return syncPhone(); | 3219 | return syncPhone(); |
3219 | disableBR( true ); | 3220 | disableBR( true ); |
3220 | if ( manager != syncManager ) | 3221 | if ( manager != syncManager ) |
3221 | qDebug("KABCore::syncExternal:: ERROR! :: manager != syncManager "); | 3222 | qDebug("KABCore::syncExternal:: ERROR! :: manager != syncManager "); |
3222 | QString mCurrentSyncDevice = manager->getCurrentSyncDevice(); | 3223 | QString mCurrentSyncDevice = manager->getCurrentSyncDevice(); |
3223 | 3224 | ||
3224 | AddressBook abLocal( resource,"syncContact"); | 3225 | AddressBook abLocal( resource,"syncContact"); |
3225 | bool syncOK = false; | 3226 | bool syncOK = false; |
3226 | message(i18n("Loading DTM address data..."), false); | 3227 | message(i18n("Loading DTM address data..."), false); |
3227 | if ( abLocal.load() ) { | 3228 | if ( abLocal.load() ) { |
3228 | qDebug("KA: AB sharp loaded ,sync device %s",mCurrentSyncDevice.latin1()); | 3229 | qDebug("KA: AB sharp loaded ,sync device %s",mCurrentSyncDevice.latin1()); |
3229 | mGlobalSyncMode = SYNC_MODE_EXTERNAL; | 3230 | mGlobalSyncMode = SYNC_MODE_EXTERNAL; |
3230 | message(i18n("Sync preprocessing..."),false); | 3231 | message(i18n("Sync preprocessing..."),false); |
3231 | abLocal.preExternSync( mAddressBook ,mCurrentSyncDevice, false ); | 3232 | abLocal.preExternSync( mAddressBook ,mCurrentSyncDevice, false ); |
3232 | message(i18n("Synchronizing..."),false); | 3233 | message(i18n("Synchronizing..."),false); |
3233 | syncOK = synchronizeAddressbooks( mAddressBook, &abLocal, syncManager->mSyncAlgoPrefs ); | 3234 | syncOK = synchronizeAddressbooks( mAddressBook, &abLocal, syncManager->mSyncAlgoPrefs ); |