-rw-r--r-- | kabc/addressee.cpp | 48 |
1 files changed, 41 insertions, 7 deletions
diff --git a/kabc/addressee.cpp b/kabc/addressee.cpp index 2aca559..295ee4f 100644 --- a/kabc/addressee.cpp +++ b/kabc/addressee.cpp @@ -300,5 +300,5 @@ void Addressee::mergeContact( const Addressee& ad , bool isSubSet) // = false) QStringList tAD; uint iii; - if ( isSubSet ) { + // ********** phone numbers PhoneNumber::List phoneAD = ad.phoneNumbers(); @@ -314,7 +314,8 @@ void Addressee::mergeContact( const Addressee& ad , bool isSubSet) // = false) } } - if ( ! found ) + if ( isSubSet && ! found ) mData->phoneNumbers.append( *phoneItAD ); } + if ( isSubSet ) { // ************* emails; t = mData->emails; @@ -323,4 +324,6 @@ void Addressee::mergeContact( const Addressee& ad , bool isSubSet) // = false) if ( !t.contains(tAD[iii] ) ) mData->emails.append( tAD[iii] ); + } + // ************* categories; t = mData->categories; @@ -329,8 +332,4 @@ void Addressee::mergeContact( const Addressee& ad , bool isSubSet) // = false) if ( !t.contains(tAD[iii] ) ) mData->categories.append( tAD[iii] ); - - - } - QStringList::ConstIterator it; for( it = ad.mData->custom.begin(); it != ad.mData->custom.end(); ++it ) { @@ -390,5 +389,5 @@ void Addressee::mergeContact( const Addressee& ad , bool isSubSet) // = false) } - if ( ! found ) { + if ( isSubSet && ! found ) { mData->addresses.append( *addressIterA ); } @@ -479,6 +478,41 @@ void Addressee::simplifyEmails() 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(); ++phoneIter ) { |