summaryrefslogtreecommitdiffabout
path: root/kabc/addressee.cpp
Side-by-side diff
Diffstat (limited to 'kabc/addressee.cpp') (more/less context) (show whitespace changes)
-rw-r--r--kabc/addressee.cpp23
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
@@ -281,41 +281,47 @@ void Addressee::computeCsum(const QString &dev)
setCsum( dev, QString::number (cs ));
}
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;
PhoneNumber::List::Iterator it;
for( it = mData->phoneNumbers.begin(); it != mData->phoneNumbers.end(); ++it ) {
@@ -327,27 +333,30 @@ 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;
for ( iii = 0; iii < tAD.count(); ++iii)
if ( !t.contains(tAD[iii] ) )
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;
QStringList::ConstIterator itL;
for( itL = mData->custom.begin(); itL != mData->custom.end(); ++itL ) {
@@ -386,12 +395,13 @@ void Addressee::mergeContact( const Addressee& ad , bool isSubSet) // = false)
}
if ( ! found ) {
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;
for ( addressIter = mData->addresses.begin(); addressIter != mData->addresses.end();
++addressIter ) {
@@ -403,12 +413,13 @@ 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() );
}
bool Addressee::removeVoice()