-rw-r--r-- | kabc/addressee.cpp | 32 | ||||
-rw-r--r-- | kabc/addressee.h | 4 | ||||
-rw-r--r-- | kabc/phonenumber.cpp | 23 | ||||
-rw-r--r-- | kabc/phonenumber.h | 2 | ||||
-rw-r--r-- | kaddressbook/kabcore.cpp | 23 |
5 files changed, 80 insertions, 4 deletions
diff --git a/kabc/addressee.cpp b/kabc/addressee.cpp index 25c77f6..e571980 100644 --- a/kabc/addressee.cpp +++ b/kabc/addressee.cpp | |||
@@ -312,12 +312,44 @@ void Addressee::mergeContact( const Addressee& ad ) | |||
312 | // merging keys | 312 | // merging keys |
313 | qDebug("merge contact %s ", ad.uid().latin1()); | 313 | qDebug("merge contact %s ", ad.uid().latin1()); |
314 | setUid( ad.uid() ); | 314 | setUid( ad.uid() ); |
315 | setRevision( ad.revision() ); | 315 | setRevision( ad.revision() ); |
316 | } | 316 | } |
317 | 317 | ||
318 | // removes all emails but the first | ||
319 | // needed by phone sync | ||
320 | void Addressee::simplifyEmails() | ||
321 | { | ||
322 | if ( mData->emails.count() == 0 ) return ; | ||
323 | QString email = mData->emails.first(); | ||
324 | detach(); | ||
325 | mData->emails.clear(); | ||
326 | mData->emails.append( email ); | ||
327 | } | ||
328 | |||
329 | void Addressee::simplifyPhoneNumbers() | ||
330 | { | ||
331 | KABC::PhoneNumber::List removeNumbers; | ||
332 | KABC::PhoneNumber::List::Iterator phoneIter; | ||
333 | for ( phoneIter = mData->phoneNumbers.begin(); phoneIter != mData->phoneNumbers.end(); | ||
334 | ++phoneIter ) { | ||
335 | if ( ! ( *phoneIter ).simplifyNumber() ) | ||
336 | removeNumbers.append( ( *phoneIter ) ); | ||
337 | } | ||
338 | for ( phoneIter = removeNumbers.begin(); phoneIter != removeNumbers.end(); | ||
339 | ++phoneIter ) { | ||
340 | removePhoneNumber(( *phoneIter )); | ||
341 | } | ||
342 | } | ||
343 | void Addressee::simplifyPhoneNumberTypes() | ||
344 | { | ||
345 | KABC::PhoneNumber::List::Iterator phoneIter; | ||
346 | for ( phoneIter = mData->phoneNumbers.begin(); phoneIter != mData->phoneNumbers.end(); | ||
347 | ++phoneIter ) | ||
348 | ( *phoneIter ).simplifyType(); | ||
349 | } | ||
318 | void Addressee::removeID(const QString &prof) | 350 | void Addressee::removeID(const QString &prof) |
319 | { | 351 | { |
320 | detach(); | 352 | detach(); |
321 | mData->mExternalId = KIdManager::removeId ( mData->mExternalId, prof); | 353 | mData->mExternalId = KIdManager::removeId ( mData->mExternalId, prof); |
322 | 354 | ||
323 | } | 355 | } |
diff --git a/kabc/addressee.h b/kabc/addressee.h index 8baa888..4cafa86 100644 --- a/kabc/addressee.h +++ b/kabc/addressee.h | |||
@@ -114,12 +114,16 @@ class Addressee | |||
114 | bool isEmpty() const; | 114 | bool isEmpty() const; |
115 | void setExternalUID( const QString &id ); | 115 | void setExternalUID( const QString &id ); |
116 | QString externalUID() const; | 116 | QString externalUID() const; |
117 | void setOriginalExternalUID( const QString &id ); | 117 | void setOriginalExternalUID( const QString &id ); |
118 | QString originalExternalUID() const; | 118 | QString originalExternalUID() const; |
119 | void mergeContact( const Addressee& ad ); | 119 | void mergeContact( const Addressee& ad ); |
120 | void simplifyEmails(); | ||
121 | void simplifyPhoneNumbers(); | ||
122 | void simplifyPhoneNumberTypes(); | ||
123 | |||
120 | /** | 124 | /** |
121 | Set unique identifier. | 125 | Set unique identifier. |
122 | */ | 126 | */ |
123 | void setUid( const QString &uid ); | 127 | void setUid( const QString &uid ); |
124 | /** | 128 | /** |
125 | Return unique identifier. | 129 | Return unique identifier. |
diff --git a/kabc/phonenumber.cpp b/kabc/phonenumber.cpp index 7aeb2ee..e5abc0e 100644 --- a/kabc/phonenumber.cpp +++ b/kabc/phonenumber.cpp | |||
@@ -63,12 +63,35 @@ bool PhoneNumber::operator==( const PhoneNumber &p ) const | |||
63 | 63 | ||
64 | bool PhoneNumber::operator!=( const PhoneNumber &p ) const | 64 | bool PhoneNumber::operator!=( const PhoneNumber &p ) const |
65 | { | 65 | { |
66 | return !( p == *this ); | 66 | return !( p == *this ); |
67 | } | 67 | } |
68 | 68 | ||
69 | bool PhoneNumber::simplifyNumber() | ||
70 | { | ||
71 | QString Number; | ||
72 | int i; | ||
73 | Number = mNumber.stripWhiteSpace (); | ||
74 | mNumber = ""; | ||
75 | if ( Number.at(0) == '+' ) | ||
76 | mNumber += "+"; | ||
77 | for ( i = 0; i < Number.length(); ++i) { | ||
78 | if ( Number.at(i).isDigit() ) | ||
79 | mNumber += Number.at(i); | ||
80 | } | ||
81 | return ( mNumber.length() > 0 ); | ||
82 | } | ||
83 | // make cellphone compatible | ||
84 | void PhoneNumber::simplifyType() | ||
85 | { | ||
86 | if ( mType & Fax ) mType = Fax; | ||
87 | else if ( mType & Cell ) mType = Cell; | ||
88 | else if ( mType & Work ) mType = Work ; | ||
89 | else if ( mType & Home ) mType = Home; | ||
90 | else mType = Pref; | ||
91 | } | ||
69 | void PhoneNumber::setId( const QString &id ) | 92 | void PhoneNumber::setId( const QString &id ) |
70 | { | 93 | { |
71 | mId = id; | 94 | mId = id; |
72 | } | 95 | } |
73 | 96 | ||
74 | QString PhoneNumber::id() const | 97 | QString PhoneNumber::id() const |
diff --git a/kabc/phonenumber.h b/kabc/phonenumber.h index 1df344f..410a52f 100644 --- a/kabc/phonenumber.h +++ b/kabc/phonenumber.h | |||
@@ -145,12 +145,14 @@ class PhoneNumber | |||
145 | 145 | ||
146 | /** | 146 | /** |
147 | Returns the translated label for phone number type. | 147 | Returns the translated label for phone number type. |
148 | @obsolete | 148 | @obsolete |
149 | */ | 149 | */ |
150 | static QString label( int type ); | 150 | static QString label( int type ); |
151 | bool simplifyNumber(); | ||
152 | void simplifyType(); | ||
151 | 153 | ||
152 | private: | 154 | private: |
153 | void init(); | 155 | void init(); |
154 | 156 | ||
155 | QString mId; | 157 | QString mId; |
156 | 158 | ||
diff --git a/kaddressbook/kabcore.cpp b/kaddressbook/kabcore.cpp index c5406bf..939296f 100644 --- a/kaddressbook/kabcore.cpp +++ b/kaddressbook/kabcore.cpp | |||
@@ -696,33 +696,48 @@ void KABCore::export2phone() | |||
696 | QString datastream; | 696 | QString datastream; |
697 | for( QStringList::ConstIterator it = uids.begin(); it != uids.end(); ++it ) { | 697 | for( QStringList::ConstIterator it = uids.begin(); it != uids.end(); ++it ) { |
698 | KABC::Addressee a = mAddressBook->findByUid( *it ); | 698 | KABC::Addressee a = mAddressBook->findByUid( *it ); |
699 | 699 | ||
700 | if ( a.isEmpty() ) | 700 | if ( a.isEmpty() ) |
701 | continue; | 701 | continue; |
702 | a.simplifyEmails(); | ||
703 | a.simplifyPhoneNumbers(); | ||
704 | a.simplifyPhoneNumberTypes(); | ||
702 | 705 | ||
703 | if (description.isEmpty()) | 706 | if (description.isEmpty()) |
704 | description = a.formattedName(); | 707 | description = a.formattedName(); |
705 | |||
706 | QString vcard; | 708 | QString vcard; |
709 | QString vcardnew; | ||
707 | converter.addresseeToVCard( a, vcard ); | 710 | converter.addresseeToVCard( a, vcard ); |
708 | int start = 0; | 711 | int start = 0; |
709 | int next; | 712 | int next; |
710 | while ( (next = vcard.find("TYPE=", start) )>= 0 ) { | 713 | while ( (next = vcard.find("TYPE=", start) )>= 0 ) { |
711 | int semi = vcard.find(";", next); | 714 | int semi = vcard.find(";", next); |
712 | int dopp = vcard.find(":", next); | 715 | int dopp = vcard.find(":", next); |
713 | int sep; | 716 | int sep; |
714 | if ( semi < dopp && semi >= 0 ) | 717 | if ( semi < dopp && semi >= 0 ) |
715 | sep = semi ; | 718 | sep = semi ; |
716 | else | 719 | else |
717 | sep = dopp; | 720 | sep = dopp; |
718 | datastream +=vcard.mid( start, next - start); | 721 | vcardnew +=vcard.mid( start, next - start); |
719 | datastream +=vcard.mid( next+5,sep -next -5 ).upper(); | 722 | vcardnew +=vcard.mid( next+5,sep -next -5 ).upper(); |
720 | start = sep; | 723 | start = sep; |
721 | } | 724 | } |
722 | datastream += vcard.mid( start,vcard.length() ); | 725 | vcardnew += vcard.mid( start,vcard.length() ); |
726 | vcard = ""; | ||
727 | start = 0; | ||
728 | while ( (next = vcardnew.find("ADR", start) )>= 0 ) { | ||
729 | int sep = vcardnew.find(":", next); | ||
730 | vcard +=vcardnew.mid( start, next - start+3); | ||
731 | start = sep; | ||
732 | } | ||
733 | vcard += vcardnew.mid( start,vcardnew.length() ); | ||
734 | vcard.replace ( QRegExp(";;;") , "" ); | ||
735 | vcard.replace ( QRegExp(";;") , "" ); | ||
736 | datastream += vcard; | ||
737 | |||
723 | } | 738 | } |
724 | QFile outFile(fileName); | 739 | QFile outFile(fileName); |
725 | if ( outFile.open(IO_WriteOnly) ) { | 740 | if ( outFile.open(IO_WriteOnly) ) { |
726 | datastream.replace ( QRegExp("VERSION:3.0") , "VERSION:2.1" ); | 741 | datastream.replace ( QRegExp("VERSION:3.0") , "VERSION:2.1" ); |
727 | QTextStream t( &outFile ); // use a text stream | 742 | QTextStream t( &outFile ); // use a text stream |
728 | t.setEncoding( QTextStream::UnicodeUTF8 ); | 743 | t.setEncoding( QTextStream::UnicodeUTF8 ); |