-rw-r--r-- | kabc/addressee.cpp | 23 |
1 files changed, 17 insertions, 6 deletions
diff --git a/kabc/addressee.cpp b/kabc/addressee.cpp index 3b238f5..82b4b9b 100644 --- a/kabc/addressee.cpp +++ b/kabc/addressee.cpp @@ -283,37 +283,43 @@ void Addressee::computeCsum(const QString &dev) } void Addressee::mergeContact( const Addressee& ad , bool isSubSet) // = false) { + // merge all standard non-outlook fields. + //if isSubSet (e.g. mobile phone sync) merge all fields detach(); + if ( isSubSet ) { if ( mData->name.isEmpty() ) mData->name = ad.mData->name; if ( mData->formattedName.isEmpty() ) mData->formattedName = ad.mData->formattedName; if ( mData->familyName.isEmpty() ) mData->familyName = ad.mData->familyName; if ( mData->givenName.isEmpty() ) mData->givenName = ad.mData->givenName ; if ( mData->additionalName ) mData->additionalName = ad.mData->additionalName; if ( mData->prefix.isEmpty() ) mData->prefix = ad.mData->prefix; if ( mData->suffix.isEmpty() ) mData->suffix = ad.mData->suffix; + if ( mData->title .isEmpty() ) mData->title = ad.mData->title ; + if ( mData->role.isEmpty() ) mData->role = ad.mData->role ; if ( mData->nickName.isEmpty() ) mData->nickName = ad.mData->nickName; + if ( mData->organization.isEmpty() ) mData->organization = ad.mData->organization ; + if ( mData->note.isEmpty() ) mData->note = ad.mData->note ; + if ( !mData->secrecy.isValid() ) mData->secrecy = ad.mData->secrecy; + if ( ( !mData->url.isValid() && ad.mData->url.isValid() ) ) mData->url = ad.mData->url ; if ( !mData->birthday.isValid() ) if ( ad.mData->birthday.isValid()) mData->birthday = ad.mData->birthday; + + } if ( mData->mailer.isEmpty() ) mData->mailer = ad.mData->mailer; if ( !mData->timeZone.isValid() ) mData->timeZone = ad.mData->timeZone; if ( !mData->geo.isValid() ) mData->geo = ad.mData->geo; - if ( mData->title .isEmpty() ) mData->title = ad.mData->title ; - if ( mData->role.isEmpty() ) mData->role = ad.mData->role ; - if ( mData->organization.isEmpty() ) mData->organization = ad.mData->organization ; - if ( mData->note.isEmpty() ) mData->note = ad.mData->note ; if ( mData->productId.isEmpty() ) mData->productId = ad.mData->productId; if ( mData->sortString.isEmpty() ) mData->sortString = ad.mData->sortString; - if ( !mData->secrecy.isValid() ) mData->secrecy = ad.mData->secrecy; - if ( ( !mData->url.isValid() && ad.mData->url.isValid() ) ) mData->url = ad.mData->url ; QStringList t; QStringList tAD; uint iii; // ********** phone numbers + if ( isSubSet ) { PhoneNumber::List phoneAD = ad.phoneNumbers(); PhoneNumber::List::Iterator phoneItAD; for ( phoneItAD = phoneAD.begin(); phoneItAD != phoneAD.end(); ++phoneItAD ) { bool found = false; @@ -329,8 +335,9 @@ void Addressee::mergeContact( const Addressee& ad , bool isSubSet) // = false) // if ( isSubSet && ! found ) if ( ! found ) // LR try this one... mData->phoneNumbers.append( *phoneItAD ); } + } if ( isSubSet ) { // ************* emails; t = mData->emails; tAD = ad.mData->emails; @@ -339,13 +346,15 @@ void Addressee::mergeContact( const Addressee& ad , bool isSubSet) // = false) mData->emails.append( tAD[iii] ); } // ************* categories; + if ( isSubSet ) { 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; for( it = ad.mData->custom.begin(); it != ad.mData->custom.end(); ++it ) { QString qualifiedName = (*it).left( (*it).find( ":" )); bool found = false; @@ -388,8 +397,9 @@ void Addressee::mergeContact( const Addressee& ad , bool isSubSet) // = false) mData->keys.append( *itA ); } } } + if ( isSubSet ) { KABC::Address::List::Iterator addressIterA; for ( addressIterA = ad.mData->addresses.begin(); addressIterA != ad.mData->addresses.end(); ++addressIterA ) { bool found = false; KABC::Address::List::Iterator addressIter; @@ -405,8 +415,9 @@ void Addressee::mergeContact( const Addressee& ad , bool isSubSet) // = false) if ( isSubSet && ! found ) { mData->addresses.append( *addressIterA ); } } + } //qDebug("merge contact %s ", ad.uid().latin1()); setUid( ad.uid() ); setRevision( ad.revision() ); } |