summaryrefslogtreecommitdiffabout
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--kabc/addressbook.cpp8
-rw-r--r--kabc/addressbook.h4
-rw-r--r--kabc/addressee.cpp82
-rw-r--r--kabc/addressee.h2
-rw-r--r--kaddressbook/kabcore.cpp6
5 files changed, 68 insertions, 34 deletions
diff --git a/kabc/addressbook.cpp b/kabc/addressbook.cpp
index 19c26eb..8882259 100644
--- a/kabc/addressbook.cpp
+++ b/kabc/addressbook.cpp
@@ -865,3 +865,3 @@ Addressee AddressBook::findByUid( const QString &uid )
865} 865}
866void AddressBook::preExternSync( AddressBook* aBook, const QString& csd ) 866void AddressBook::preExternSync( AddressBook* aBook, const QString& csd , bool isSubset )
867{ 867{
@@ -873,3 +873,3 @@ void AddressBook::preExternSync( AddressBook* aBook, const QString& csd )
873 } 873 }
874 mergeAB( aBook ,csd ); 874 mergeAB( aBook ,csd, isSubset );
875} 875}
@@ -915,3 +915,3 @@ Addressee AddressBook::findByExternUid( const QString& uid , const QString& pr
915} 915}
916void AddressBook::mergeAB( AddressBook *aBook, const QString& profile ) 916void AddressBook::mergeAB( AddressBook *aBook, const QString& profile , bool isSubset )
917{ 917{
@@ -922,3 +922,3 @@ void AddressBook::mergeAB( AddressBook *aBook, const QString& profile )
922 if ( !ad.isEmpty() ) { 922 if ( !ad.isEmpty() ) {
923 (*it).mergeContact( ad ); 923 (*it).mergeContact( ad ,isSubset);
924 } 924 }
diff --git a/kabc/addressbook.h b/kabc/addressbook.h
index df9048b..a6bf451 100644
--- a/kabc/addressbook.h
+++ b/kabc/addressbook.h
@@ -303,3 +303,3 @@ class AddressBook : public QObject
303 void removeSyncAddressees( bool removeDeleted = false ); 303 void removeSyncAddressees( bool removeDeleted = false );
304 void mergeAB( AddressBook *aBook, const QString& profile ); 304 void mergeAB( AddressBook *aBook, const QString& profile, bool isSubset );
305 Addressee findByExternUid( const QString& uid , const QString& profile ); 305 Addressee findByExternUid( const QString& uid , const QString& profile );
@@ -307,3 +307,3 @@ class AddressBook : public QObject
307 307
308 void preExternSync( AddressBook* aBook, const QString& csd ); 308 void preExternSync( AddressBook* aBook, const QString& csd, bool isSubset );
309 void postExternSync( AddressBook* aBook, const QString& csd ); 309 void postExternSync( AddressBook* aBook, const QString& csd );
diff --git a/kabc/addressee.cpp b/kabc/addressee.cpp
index 2aca559..295ee4f 100644
--- a/kabc/addressee.cpp
+++ b/kabc/addressee.cpp
@@ -301,19 +301,20 @@ void Addressee::mergeContact( const Addressee& ad , bool isSubSet) // = false)
301 uint iii; 301 uint iii;
302 if ( isSubSet ) { 302
303 // ********** phone numbers 303 // ********** phone numbers
304 PhoneNumber::List phoneAD = ad.phoneNumbers(); 304 PhoneNumber::List phoneAD = ad.phoneNumbers();
305 PhoneNumber::List::Iterator phoneItAD; 305 PhoneNumber::List::Iterator phoneItAD;
306 for ( phoneItAD = phoneAD.begin(); phoneItAD != phoneAD.end(); ++phoneItAD ) { 306 for ( phoneItAD = phoneAD.begin(); phoneItAD != phoneAD.end(); ++phoneItAD ) {
307 bool found = false; 307 bool found = false;
308 PhoneNumber::List::Iterator it; 308 PhoneNumber::List::Iterator it;
309 for( it = mData->phoneNumbers.begin(); it != mData->phoneNumbers.end(); ++it ) { 309 for( it = mData->phoneNumbers.begin(); it != mData->phoneNumbers.end(); ++it ) {
310 if ( ( *phoneItAD ).contains( (*it) ) ) { 310 if ( ( *phoneItAD ).contains( (*it) ) ) {
311 found = true; 311 found = true;
312 (*it).setType( ( *phoneItAD ).type() ); 312 (*it).setType( ( *phoneItAD ).type() );
313 break; 313 break;
314 }
315 } 314 }
316 if ( ! found )
317 mData->phoneNumbers.append( *phoneItAD );
318 } 315 }
316 if ( isSubSet && ! found )
317 mData->phoneNumbers.append( *phoneItAD );
318 }
319 if ( isSubSet ) {
319 // ************* emails; 320 // ************* emails;
@@ -324,12 +325,10 @@ void Addressee::mergeContact( const Addressee& ad , bool isSubSet) // = false)
324 mData->emails.append( tAD[iii] ); 325 mData->emails.append( tAD[iii] );
325 // ************* categories;
326 t = mData->categories;
327 tAD = ad.mData->categories;
328 for ( iii = 0; iii < tAD.count(); ++iii)
329 if ( !t.contains(tAD[iii] ) )
330 mData->categories.append( tAD[iii] );
331
332
333 } 326 }
334 327
328 // ************* categories;
329 t = mData->categories;
330 tAD = ad.mData->categories;
331 for ( iii = 0; iii < tAD.count(); ++iii)
332 if ( !t.contains(tAD[iii] ) )
333 mData->categories.append( tAD[iii] );
335 QStringList::ConstIterator it; 334 QStringList::ConstIterator it;
@@ -391,3 +390,3 @@ void Addressee::mergeContact( const Addressee& ad , bool isSubSet) // = false)
391 } 390 }
392 if ( ! found ) { 391 if ( isSubSet && ! found ) {
393 mData->addresses.append( *addressIterA ); 392 mData->addresses.append( *addressIterA );
@@ -480,4 +479,39 @@ void Addressee::simplifyPhoneNumbers()
480{ 479{
480 int max = 4;
481 int inList = mData->phoneNumbers.count();
481 KABC::PhoneNumber::List removeNumbers; 482 KABC::PhoneNumber::List removeNumbers;
482 KABC::PhoneNumber::List::Iterator phoneIter; 483 KABC::PhoneNumber::List::Iterator phoneIter;
484 if ( inList > max ) {
485 // delete non-preferred numbers
486 for ( phoneIter = mData->phoneNumbers.begin(); phoneIter != mData->phoneNumbers.end();
487 ++phoneIter ) {
488 if ( inList > max ) {
489 if ( ! (( *phoneIter ).type() & PhoneNumber::Pref )) {
490 removeNumbers.append( ( *phoneIter ) );
491 --inList;
492 }
493 } else
494 break;
495 }
496 for ( phoneIter = removeNumbers.begin(); phoneIter != removeNumbers.end();
497 ++phoneIter ) {
498 removePhoneNumber(( *phoneIter ));
499 }
500 // delete preferred numbers
501 if ( inList > max ) {
502 for ( phoneIter = mData->phoneNumbers.begin(); phoneIter != mData->phoneNumbers.end();
503 ++phoneIter ) {
504 if ( inList > max ) {
505 removeNumbers.append( ( *phoneIter ) );
506 --inList;
507 } else
508 break;
509 }
510 for ( phoneIter = removeNumbers.begin(); phoneIter != removeNumbers.end();
511 ++phoneIter ) {
512 removePhoneNumber(( *phoneIter ));
513 }
514 }
515 }
516 // remove non-numeric characters
483 for ( phoneIter = mData->phoneNumbers.begin(); phoneIter != mData->phoneNumbers.end(); 517 for ( phoneIter = mData->phoneNumbers.begin(); phoneIter != mData->phoneNumbers.end();
diff --git a/kabc/addressee.h b/kabc/addressee.h
index e7900c6..2c81c1a 100644
--- a/kabc/addressee.h
+++ b/kabc/addressee.h
@@ -118,3 +118,3 @@ class Addressee
118 QString originalExternalUID() const; 118 QString originalExternalUID() const;
119 void mergeContact( const Addressee& ad, bool isSubSet = false ); 119 void mergeContact( const Addressee& ad, bool isSubSet );
120 void simplifyEmails(); 120 void simplifyEmails();
diff --git a/kaddressbook/kabcore.cpp b/kaddressbook/kabcore.cpp
index 205dbc8..ea34be2 100644
--- a/kaddressbook/kabcore.cpp
+++ b/kaddressbook/kabcore.cpp
@@ -2734,3 +2734,3 @@ bool KABCore::sync(KSyncManager* manager, QString filename, int mode)
2734 isXML = true; 2734 isXML = true;
2735 abLocal.preExternSync( mAddressBook ,mCurrentSyncDevice ); 2735 abLocal.preExternSync( mAddressBook ,mCurrentSyncDevice, true );
2736 } else { 2736 } else {
@@ -2789,3 +2789,3 @@ bool KABCore::syncExternal(KSyncManager* manager, QString resource)
2789 mGlobalSyncMode = SYNC_MODE_EXTERNAL; 2789 mGlobalSyncMode = SYNC_MODE_EXTERNAL;
2790 abLocal.preExternSync( mAddressBook ,mCurrentSyncDevice ); 2790 abLocal.preExternSync( mAddressBook ,mCurrentSyncDevice, false );
2791 syncOK = synchronizeAddressbooks( mAddressBook, &abLocal, syncManager->mSyncAlgoPrefs ); 2791 syncOK = synchronizeAddressbooks( mAddressBook, &abLocal, syncManager->mSyncAlgoPrefs );
@@ -2831,3 +2831,3 @@ bool KABCore::syncPhone()
2831 abLocal.preparePhoneSync( mCurrentSyncDevice, true ); 2831 abLocal.preparePhoneSync( mCurrentSyncDevice, true );
2832 abLocal.preExternSync( mAddressBook ,mCurrentSyncDevice ); 2832 abLocal.preExternSync( mAddressBook ,mCurrentSyncDevice, true );
2833 syncOK = synchronizeAddressbooks( mAddressBook, &abLocal, syncManager->mSyncAlgoPrefs ); 2833 syncOK = synchronizeAddressbooks( mAddressBook, &abLocal, syncManager->mSyncAlgoPrefs );