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.cpp67
1 files changed, 30 insertions, 37 deletions
diff --git a/kabc/addressee.cpp b/kabc/addressee.cpp
index cb10160..2aca559 100644
--- a/kabc/addressee.cpp
+++ b/kabc/addressee.cpp
@@ -308,6 +308,7 @@ void Addressee::mergeContact( const Addressee& ad , bool isSubSet) // = false)
PhoneNumber::List::Iterator it;
for( it = mData->phoneNumbers.begin(); it != mData->phoneNumbers.end(); ++it ) {
- if ( (*it) == ( *phoneItAD ) ) {
+ if ( ( *phoneItAD ).contains( (*it) ) ) {
found = true;
+ (*it).setType( ( *phoneItAD ).type() );
break;
}
@@ -359,46 +360,38 @@ void Addressee::mergeContact( const Addressee& ad , bool isSubSet) // = false)
}
}
+ {
+ Key::List::Iterator itA;
+ for( itA = ad.mData->keys.begin(); itA != ad.mData->keys.end(); ++itA ) {
+ bool found = false;
+ Key::List::Iterator it;
+ for( it = mData->keys.begin(); it != mData->keys.end(); ++it ) {
+ if ( (*it) == (*itA)) {
+ found = true;
+ break;
-#if 0
-
- if ( mData->url.isValid() )
- if ( ! mData->url.path().isEmpty()) l.append( mData->url.path() );
- KABC::PhoneNumber::List phoneNumbers;
- KABC::PhoneNumber::List::Iterator phoneIter;
-
- QStringList t;
- for ( phoneIter = mData->phoneNumbers.begin(); phoneIter != mData->phoneNumbers.end();
- ++phoneIter )
- t.append( ( *phoneIter ).number()+QString::number( ( *phoneIter ).type() ) );
- t.sort();
- uint iii;
- for ( iii = 0; iii < t.count(); ++iii)
- l.append( t[iii] );
- t = mData->emails;
- t.sort();
- for ( iii = 0; iii < t.count(); ++iii)
- l.append( t[iii] );
- t = mData->categories;
- t.sort();
- for ( iii = 0; iii < t.count(); ++iii)
- l.append( t[iii] );
- t = mData->custom;
- t.sort();
- for ( iii = 0; iii < t.count(); ++iii)
- l.append( t[iii] );
+ }
+ }
+ if ( ! found ) {
+ mData->keys.append( *itA );
+ }
+ }
+ }
+ 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 ) {
- t = (*addressIter).asList();
- t.sort();
- for ( iii = 0; iii < t.count(); ++iii)
- l.append( t[iii] );
+ if ( (*addressIter) == (*addressIterA)) {
+ found = true;
+ (*addressIter).setType( (*addressIterA).type() );
+ break;
}
-#endif
-
- // pending:
- // merging addresses
- // merging keys
+ }
+ if ( ! found ) {
+ mData->addresses.append( *addressIterA );
+ }
+ }
//qDebug("merge contact %s ", ad.uid().latin1());
setUid( ad.uid() );