-rw-r--r-- | kabc/addressbook.cpp | 8 | ||||
-rw-r--r-- | kabc/addressbook.h | 4 | ||||
-rw-r--r-- | kabc/addressee.cpp | 82 | ||||
-rw-r--r-- | kabc/addressee.h | 2 | ||||
-rw-r--r-- | kaddressbook/kabcore.cpp | 6 |
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 ) } -void AddressBook::preExternSync( AddressBook* aBook, const QString& csd ) +void AddressBook::preExternSync( AddressBook* aBook, const QString& csd , bool isSubset ) { @@ -873,3 +873,3 @@ void AddressBook::preExternSync( AddressBook* aBook, const QString& csd ) } - mergeAB( aBook ,csd ); + mergeAB( aBook ,csd, isSubset ); } @@ -915,3 +915,3 @@ Addressee AddressBook::findByExternUid( const QString& uid , const QString& pr } -void AddressBook::mergeAB( AddressBook *aBook, const QString& profile ) +void AddressBook::mergeAB( AddressBook *aBook, const QString& profile , bool isSubset ) { @@ -922,3 +922,3 @@ void AddressBook::mergeAB( AddressBook *aBook, const QString& profile ) if ( !ad.isEmpty() ) { - (*it).mergeContact( ad ); + (*it).mergeContact( ad ,isSubset); } 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 void removeSyncAddressees( bool removeDeleted = false ); - void mergeAB( AddressBook *aBook, const QString& profile ); + void mergeAB( AddressBook *aBook, const QString& profile, bool isSubset ); Addressee findByExternUid( const QString& uid , const QString& profile ); @@ -307,3 +307,3 @@ class AddressBook : public QObject - void preExternSync( AddressBook* aBook, const QString& csd ); + void preExternSync( AddressBook* aBook, const QString& csd, bool isSubset ); 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) uint iii; - if ( isSubSet ) { - // ********** phone numbers - PhoneNumber::List phoneAD = ad.phoneNumbers(); - PhoneNumber::List::Iterator phoneItAD; - for ( phoneItAD = phoneAD.begin(); phoneItAD != phoneAD.end(); ++phoneItAD ) { - bool found = false; - PhoneNumber::List::Iterator it; - for( it = mData->phoneNumbers.begin(); it != mData->phoneNumbers.end(); ++it ) { - if ( ( *phoneItAD ).contains( (*it) ) ) { - found = true; - (*it).setType( ( *phoneItAD ).type() ); - break; - } + + // ********** phone numbers + PhoneNumber::List phoneAD = ad.phoneNumbers(); + PhoneNumber::List::Iterator phoneItAD; + for ( phoneItAD = phoneAD.begin(); phoneItAD != phoneAD.end(); ++phoneItAD ) { + bool found = false; + PhoneNumber::List::Iterator it; + for( it = mData->phoneNumbers.begin(); it != mData->phoneNumbers.end(); ++it ) { + if ( ( *phoneItAD ).contains( (*it) ) ) { + found = true; + (*it).setType( ( *phoneItAD ).type() ); + break; } - if ( ! found ) - mData->phoneNumbers.append( *phoneItAD ); } + if ( isSubSet && ! found ) + mData->phoneNumbers.append( *phoneItAD ); + } + if ( isSubSet ) { // ************* emails; @@ -324,12 +325,10 @@ void Addressee::mergeContact( const Addressee& ad , bool isSubSet) // = false) mData->emails.append( tAD[iii] ); - // ************* categories; - t = mData->categories; - tAD = ad.mData->categories; - for ( iii = 0; iii < tAD.count(); ++iii) - if ( !t.contains(tAD[iii] ) ) - mData->categories.append( tAD[iii] ); - - } + // ************* categories; + t = mData->categories; + tAD = ad.mData->categories; + for ( iii = 0; iii < tAD.count(); ++iii) + if ( !t.contains(tAD[iii] ) ) + mData->categories.append( tAD[iii] ); QStringList::ConstIterator it; @@ -391,3 +390,3 @@ void Addressee::mergeContact( const Addressee& ad , bool isSubSet) // = false) } - if ( ! found ) { + if ( isSubSet && ! found ) { mData->addresses.append( *addressIterA ); @@ -480,4 +479,39 @@ void Addressee::simplifyPhoneNumbers() { + int max = 4; + int inList = mData->phoneNumbers.count(); KABC::PhoneNumber::List removeNumbers; KABC::PhoneNumber::List::Iterator phoneIter; + if ( inList > max ) { + // delete non-preferred numbers + for ( phoneIter = mData->phoneNumbers.begin(); phoneIter != mData->phoneNumbers.end(); + ++phoneIter ) { + if ( inList > max ) { + if ( ! (( *phoneIter ).type() & PhoneNumber::Pref )) { + removeNumbers.append( ( *phoneIter ) ); + --inList; + } + } else + break; + } + for ( phoneIter = removeNumbers.begin(); phoneIter != removeNumbers.end(); + ++phoneIter ) { + removePhoneNumber(( *phoneIter )); + } + // delete preferred numbers + if ( inList > max ) { + for ( phoneIter = mData->phoneNumbers.begin(); phoneIter != mData->phoneNumbers.end(); + ++phoneIter ) { + if ( inList > max ) { + removeNumbers.append( ( *phoneIter ) ); + --inList; + } else + break; + } + for ( phoneIter = removeNumbers.begin(); phoneIter != removeNumbers.end(); + ++phoneIter ) { + removePhoneNumber(( *phoneIter )); + } + } + } + // remove non-numeric characters 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 QString originalExternalUID() const; - void mergeContact( const Addressee& ad, bool isSubSet = false ); + void mergeContact( const Addressee& ad, bool isSubSet ); 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) isXML = true; - abLocal.preExternSync( mAddressBook ,mCurrentSyncDevice ); + abLocal.preExternSync( mAddressBook ,mCurrentSyncDevice, true ); } else { @@ -2789,3 +2789,3 @@ bool KABCore::syncExternal(KSyncManager* manager, QString resource) mGlobalSyncMode = SYNC_MODE_EXTERNAL; - abLocal.preExternSync( mAddressBook ,mCurrentSyncDevice ); + abLocal.preExternSync( mAddressBook ,mCurrentSyncDevice, false ); syncOK = synchronizeAddressbooks( mAddressBook, &abLocal, syncManager->mSyncAlgoPrefs ); @@ -2831,3 +2831,3 @@ bool KABCore::syncPhone() abLocal.preparePhoneSync( mCurrentSyncDevice, true ); - abLocal.preExternSync( mAddressBook ,mCurrentSyncDevice ); + abLocal.preExternSync( mAddressBook ,mCurrentSyncDevice, true ); syncOK = synchronizeAddressbooks( mAddressBook, &abLocal, syncManager->mSyncAlgoPrefs ); |