summaryrefslogtreecommitdiffabout
authorzautrix <zautrix>2004-09-19 20:27:44 (UTC)
committer zautrix <zautrix>2004-09-19 20:27:44 (UTC)
commit3da2cfeab2edbe64a17251662e56668fe143f7a3 (patch) (unidiff)
tree37e8d4445fca84bd4e93af38c96c5c489f9cbca8
parentafa28a62314117555d6b32291188eedd1a576284 (diff)
downloadkdepimpi-3da2cfeab2edbe64a17251662e56668fe143f7a3.zip
kdepimpi-3da2cfeab2edbe64a17251662e56668fe143f7a3.tar.gz
kdepimpi-3da2cfeab2edbe64a17251662e56668fe143f7a3.tar.bz2
more AB sync
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--kabc/addressbook.cpp32
-rw-r--r--kabc/addressbook.h3
-rw-r--r--kaddressbook/kabcore.cpp25
3 files changed, 37 insertions, 23 deletions
diff --git a/kabc/addressbook.cpp b/kabc/addressbook.cpp
index 64832f1..86dc7c2 100644
--- a/kabc/addressbook.cpp
+++ b/kabc/addressbook.cpp
@@ -597,16 +597,48 @@ Addressee AddressBook::findByUid( const QString &uid )
597 Iterator it; 597 Iterator it;
598 for ( it = begin(); it != end(); ++it ) { 598 for ( it = begin(); it != end(); ++it ) {
599 if ( uid == (*it).uid() ) { 599 if ( uid == (*it).uid() ) {
600 return *it; 600 return *it;
601 } 601 }
602 } 602 }
603 return Addressee(); 603 return Addressee();
604} 604}
605void AddressBook::preExternSync( AddressBook* aBook, const QString& csd )
606{
607 qDebug("AddressBook::preExternSync ");
608 AddressBook::Iterator it;
609 for ( it = begin(); it != end(); ++it ) {
610 (*it).setID( csd, (*it).externalUID() );
611 (*it).computeCsum( csd );
612 }
613 mergeAB( aBook ,csd );
614}
615void AddressBook::postExternSync( AddressBook* aBook , const QString& csd)
616{
617 qDebug("AddressBook::postExternSync ");
618 AddressBook::Iterator it;
619 for ( it = begin(); it != end(); ++it ) {
620 if ( (*it).tempSyncStat() == SYNC_TEMPSTATE_NEW_ID ||
621 (*it).tempSyncStat() == SYNC_TEMPSTATE_NEW_CSUM ) {
622 Addressee ad = aBook->findByUid( ( (*it).uid() ));
623 if ( ad.isEmpty() ) {
624 qDebug("ERROR ad empty ");
625 } else {
626 (*it).computeCsum( csd );
627 if ( (*it).tempSyncStat() == SYNC_TEMPSTATE_NEW_ID )
628 ad.setID( csd, (*it).externalUID() );
629 ad.setCsum( csd, (*it).getCsum( csd ) );
630 aBook->insertAddressee( ad );
631 }
632 }
633 }
634}
635
636
605Addressee AddressBook::findByExternUid( const QString& uid , const QString& profile ) 637Addressee AddressBook::findByExternUid( const QString& uid , const QString& profile )
606{ 638{
607 Iterator it; 639 Iterator it;
608 for ( it = begin(); it != end(); ++it ) { 640 for ( it = begin(); it != end(); ++it ) {
609 if ( uid == (*it).getID( profile ) ) 641 if ( uid == (*it).getID( profile ) )
610 return (*it); 642 return (*it);
611 } 643 }
612 return Addressee(); 644 return Addressee();
diff --git a/kabc/addressbook.h b/kabc/addressbook.h
index f40e015..157dc56 100644
--- a/kabc/addressbook.h
+++ b/kabc/addressbook.h
@@ -290,16 +290,19 @@ class AddressBook : public QObject
290 290
291 // sync stuff 291 // sync stuff
292 //Addressee::List getExternLastSyncAddressees(); 292 //Addressee::List getExternLastSyncAddressees();
293 void resetTempSyncStat(); 293 void resetTempSyncStat();
294 QStringList uidList(); 294 QStringList uidList();
295 void removeDeletedAddressees(); 295 void removeDeletedAddressees();
296 void mergeAB( AddressBook *aBook, const QString& profile ); 296 void mergeAB( AddressBook *aBook, const QString& profile );
297 Addressee findByExternUid( const QString& uid , const QString& profile ); 297 Addressee findByExternUid( const QString& uid , const QString& profile );
298
299 void preExternSync( AddressBook* aBook, const QString& csd );
300 void postExternSync( AddressBook* aBook, const QString& csd );
298 signals: 301 signals:
299 /** 302 /**
300 Emitted, when the address book has changed on disk. 303 Emitted, when the address book has changed on disk.
301 */ 304 */
302 void addressBookChanged( AddressBook * ); 305 void addressBookChanged( AddressBook * );
303 306
304 /** 307 /**
305 Emitted, when the address book has been locked for writing. 308 Emitted, when the address book has been locked for writing.
diff --git a/kaddressbook/kabcore.cpp b/kaddressbook/kabcore.cpp
index b3d88de..8f3ca9b 100644
--- a/kaddressbook/kabcore.cpp
+++ b/kaddressbook/kabcore.cpp
@@ -2923,23 +2923,17 @@ bool KABCore::syncAB(QString filename, int mode)
2923 AddressBook abLocal(filename,"syncContact"); 2923 AddressBook abLocal(filename,"syncContact");
2924 bool syncOK = false; 2924 bool syncOK = false;
2925 if ( abLocal.load() ) { 2925 if ( abLocal.load() ) {
2926 qDebug("AB loaded %s,sync mode %d",filename.latin1(), mode ); 2926 qDebug("AB loaded %s,sync mode %d",filename.latin1(), mode );
2927 bool external = false; 2927 bool external = false;
2928 2928
2929 if ( filename.right(4) == ".xml") { 2929 if ( filename.right(4) == ".xml") {
2930 mGlobalSyncMode = SYNC_MODE_EXTERNAL; 2930 mGlobalSyncMode = SYNC_MODE_EXTERNAL;
2931 AddressBook::Iterator it; 2931 abLocal.preExternSync( mAddressBook ,mCurrentSyncDevice );
2932 for ( it = abLocal.begin(); it != abLocal.end(); ++it ) {
2933 (*it).setID( mCurrentSyncDevice, (*it).externalUID() );
2934 (*it).computeCsum( mCurrentSyncDevice );
2935 }
2936 abLocal.mergeAB( mAddressBook ,mCurrentSyncDevice );
2937
2938 } else { 2932 } else {
2939 Addressee lse = mAddressBook->findByUid( "last-syncAddressee-"+mCurrentSyncDevice ); 2933 Addressee lse = mAddressBook->findByUid( "last-syncAddressee-"+mCurrentSyncDevice );
2940 if ( ! lse.isEmpty() ) { 2934 if ( ! lse.isEmpty() ) {
2941 if ( lse.familyName().left(4) == "!E: " ) 2935 if ( lse.familyName().left(4) == "!E: " )
2942 external = true; 2936 external = true;
2943 } else { 2937 } else {
2944 bool found = false; 2938 bool found = false;
2945 QDateTime dt( QDate( 2004,1,1)); 2939 QDateTime dt( QDate( 2004,1,1));
@@ -2973,32 +2967,17 @@ bool KABCore::syncAB(QString filename, int mode)
2973 if ( KABPrefs::instance()->mWriteBackFile ) 2967 if ( KABPrefs::instance()->mWriteBackFile )
2974 { 2968 {
2975 if ( external && filename.right(4) != ".xml") 2969 if ( external && filename.right(4) != ".xml")
2976 abLocal.removeDeletedAddressees(); 2970 abLocal.removeDeletedAddressees();
2977 qDebug("Saving remote AB "); 2971 qDebug("Saving remote AB ");
2978 abLocal.saveAB(); 2972 abLocal.saveAB();
2979 if ( external && filename.right(4) == ".xml") { 2973 if ( external && filename.right(4) == ".xml") {
2980 // afterwrite processing 2974 // afterwrite processing
2981 AddressBook::Iterator it; 2975 abLocal.postExternSync( mAddressBook,mCurrentSyncDevice );
2982 for ( it = abLocal.begin(); it != abLocal.end(); ++it ) {
2983 if ( (*it).tempSyncStat() == SYNC_TEMPSTATE_NEW_ID ||
2984 (*it).tempSyncStat() == SYNC_TEMPSTATE_NEW_CSUM ) {
2985 Addressee ad = mAddressBook->findByUid( ( (*it).uid() ));
2986 if ( ad.isEmpty() ) {
2987 qDebug("ERROR ad empty ");
2988 } else {
2989 (*it).computeCsum( mCurrentSyncDevice );
2990 if ( (*it).tempSyncStat() == SYNC_TEMPSTATE_NEW_ID )
2991 ad.setID( mCurrentSyncDevice, (*it).externalUID() );
2992 ad.setCsum( mCurrentSyncDevice, (*it).getCsum( mCurrentSyncDevice ) );
2993 mAddressBook->insertAddressee( ad );
2994 }
2995 }
2996 }
2997 } 2976 }
2998 } 2977 }
2999 } 2978 }
3000 setModified(); 2979 setModified();
3001 2980
3002 } 2981 }
3003 if ( syncOK ) 2982 if ( syncOK )
3004 mViewManager->refreshView(); 2983 mViewManager->refreshView();