summaryrefslogtreecommitdiffabout
path: root/kabc
Side-by-side diff
Diffstat (limited to 'kabc') (more/less context) (show whitespace changes)
-rw-r--r--kabc/addressee.cpp67
-rw-r--r--kabc/phonenumber.cpp22
-rw-r--r--kabc/phonenumber.h1
3 files changed, 53 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
@@ -309,4 +309,5 @@ void Addressee::mergeContact( const Addressee& ad , bool isSubSet) // = false)
for( it = mData->phoneNumbers.begin(); it != mData->phoneNumbers.end(); ++it ) {
- if ( (*it) == ( *phoneItAD ) ) {
+ if ( ( *phoneItAD ).contains( (*it) ) ) {
found = true;
+ (*it).setType( ( *phoneItAD ).type() );
break;
@@ -360,30 +361,22 @@ 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;
@@ -391,13 +384,13 @@ void Addressee::mergeContact( const Addressee& ad , bool isSubSet) // = false)
++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());
diff --git a/kabc/phonenumber.cpp b/kabc/phonenumber.cpp
index d7e3925..3d82553 100644
--- a/kabc/phonenumber.cpp
+++ b/kabc/phonenumber.cpp
@@ -89,2 +89,24 @@ void PhoneNumber::simplifyType()
}
+bool PhoneNumber::contains( const PhoneNumber &p )
+{
+ QString Number;
+ QString Num;
+ uint i;
+ Number = mNumber.stripWhiteSpace ();
+ Num = "";
+ for ( i = 0; i < Number.length(); ++i) {
+ if ( Number.at(i).isDigit() || Number.at(i) == '+'|| Number.at(i) == '*'|| Number.at(i) == '#' )
+ Num += Number.at(i);
+ }
+ QString NumberR;
+ QString NumR;
+ NumberR = p.mNumber.stripWhiteSpace ();
+ NumR = "";
+ for ( i = 0; i < NumberR.length(); ++i) {
+ if ( NumberR.at(i).isDigit() || NumberR.at(i) == '+'|| NumberR.at(i) == '*'|| NumberR.at(i) == '#' )
+ NumR += NumberR.at(i);
+ }
+ return (Num == NumR);
+}
+
void PhoneNumber::setId( const QString &id )
diff --git a/kabc/phonenumber.h b/kabc/phonenumber.h
index 410a52f..2d4d3e0 100644
--- a/kabc/phonenumber.h
+++ b/kabc/phonenumber.h
@@ -94,2 +94,3 @@ class PhoneNumber
+ bool contains( const PhoneNumber &p );
/**