author | zautrix <zautrix> | 2005-10-28 03:24:50 (UTC) |
---|---|---|
committer | zautrix <zautrix> | 2005-10-28 03:24:50 (UTC) |
commit | f83a59cf4f9d0cff4111b6f5c88e88e6dc96e79e (patch) (unidiff) | |
tree | 969e6cf85499e3b1dcaa4dc24c972b65c906cfa9 /kabc | |
parent | cbda16d4966c7483d20d1b6b5a64c8af367ea732 (diff) | |
download | kdepimpi-f83a59cf4f9d0cff4111b6f5c88e88e6dc96e79e.zip kdepimpi-f83a59cf4f9d0cff4111b6f5c88e88e6dc96e79e.tar.gz kdepimpi-f83a59cf4f9d0cff4111b6f5c88e88e6dc96e79e.tar.bz2 |
many new bugs...
-rw-r--r-- | kabc/addressee.cpp | 74 | ||||
-rw-r--r-- | kabc/addressee.h | 2 | ||||
-rw-r--r-- | kabc/field.cpp | 10 | ||||
-rw-r--r-- | kabc/phonenumber.cpp | 112 | ||||
-rw-r--r-- | kabc/phonenumber.h | 5 | ||||
-rw-r--r-- | kabc/vcard21parser.cpp | 14 | ||||
-rw-r--r-- | kabc/vcardformatimpl.cpp | 4 | ||||
-rw-r--r-- | kabc/vcardparser/vcardtool.cpp | 2 |
8 files changed, 196 insertions, 27 deletions
diff --git a/kabc/addressee.cpp b/kabc/addressee.cpp index 7e1e414..661bdf6 100644 --- a/kabc/addressee.cpp +++ b/kabc/addressee.cpp | |||
@@ -581,17 +581,69 @@ void Addressee::simplifyAddresses() | |||
581 | void Addressee::simplifyEmails() | 581 | void Addressee::simplifyEmails() |
582 | { | 582 | { |
583 | if ( mData->emails.count() == 0 ) return ; | 583 | if ( mData->emails.count() == 0 ) return ; |
584 | QString email = mData->emails.first(); | 584 | QString email = mData->emails.first(); |
585 | detach(); | 585 | detach(); |
586 | mData->emails.clear(); | 586 | mData->emails.clear(); |
587 | mData->emails.append( email ); | 587 | mData->emails.append( email ); |
588 | } | 588 | } |
589 | void Addressee::makePhoneNumbersOLcompatible() | ||
590 | { | ||
591 | KABC::PhoneNumber::List::Iterator phoneIter; | ||
592 | KABC::PhoneNumber::List::Iterator phoneIter2; | ||
593 | for ( phoneIter = mData->phoneNumbers.begin(); phoneIter != mData->phoneNumbers.end(); | ||
594 | ++phoneIter ) { | ||
595 | ( *phoneIter ).makeCompat(); | ||
596 | } | ||
597 | int hasHome = hasPhoneNumberType( PhoneNumber::Home | PhoneNumber::Pref ); | ||
598 | int hasHome2 = hasPhoneNumberType( PhoneNumber::Home ); | ||
599 | int hasWork = hasPhoneNumberType( PhoneNumber::Work | PhoneNumber::Pref ); | ||
600 | int hasWork2 = hasPhoneNumberType( PhoneNumber::Work ); | ||
601 | int hasCell = hasPhoneNumberType( PhoneNumber::Cell ); | ||
602 | int hasCell2 = hasPhoneNumberType( PhoneNumber::Car ); | ||
603 | for ( phoneIter = mData->phoneNumbers.begin(); phoneIter != mData->phoneNumbers.end(); | ||
604 | ++phoneIter ) { | ||
605 | if ( (*phoneIter).type() == PhoneNumber::Home && ! hasHome ) { | ||
606 | (*phoneIter).setType( PhoneNumber::Home | PhoneNumber::Pref ); | ||
607 | ++hasHome; | ||
608 | if ( hasHome2 ) --hasHome2; | ||
609 | } else if ( ( (*phoneIter).type() == PhoneNumber::Home | PhoneNumber::Pref) && hasHome>1 && !hasHome2 ) { | ||
610 | (*phoneIter).setType( PhoneNumber::Home ); | ||
611 | --hasHome; | ||
612 | ++hasHome2; | ||
613 | } else if ( (*phoneIter).type() == PhoneNumber::Work && ! hasWork ) { | ||
614 | (*phoneIter).setType( PhoneNumber::Work | PhoneNumber::Pref ); | ||
615 | ++hasWork; | ||
616 | if ( hasWork2 ) --hasWork2; | ||
617 | } else if ( ( (*phoneIter).type() == PhoneNumber::Work | PhoneNumber::Pref) && hasWork > 1 && ! hasWork2 ) { | ||
618 | (*phoneIter).setType( PhoneNumber::Work ); | ||
619 | --hasWork; | ||
620 | ++hasWork2; | ||
621 | } else if ( (*phoneIter).type() == PhoneNumber::Cell && hasCell > 1 && !hasCell2) { | ||
622 | (*phoneIter).setType( PhoneNumber::Car ); | ||
623 | ++hasCell2; | ||
624 | --hasCell; | ||
625 | } else if ( (*phoneIter).type() == PhoneNumber::Car && hasCell2 > 1 && !hasCell) { | ||
626 | (*phoneIter).setType( PhoneNumber::Cell ); | ||
627 | ++hasCell; | ||
628 | --hasCell2; | ||
629 | } else{ | ||
630 | phoneIter2 = phoneIter; | ||
631 | ++phoneIter2; | ||
632 | for ( ; phoneIter2 != mData->phoneNumbers.end(); | ||
633 | ++phoneIter2 ) { | ||
634 | if ( (*phoneIter2).type() == (*phoneIter).type() ) { | ||
635 | (*phoneIter2).setType( PhoneNumber::Voice ); | ||
589 | 636 | ||
637 | } | ||
638 | } | ||
639 | } | ||
640 | } | ||
641 | } | ||
590 | void Addressee::simplifyPhoneNumbers() | 642 | void Addressee::simplifyPhoneNumbers() |
591 | { | 643 | { |
592 | int max = 4; | 644 | int max = 4; |
593 | int inList = mData->phoneNumbers.count(); | 645 | int inList = mData->phoneNumbers.count(); |
594 | KABC::PhoneNumber::List removeNumbers; | 646 | KABC::PhoneNumber::List removeNumbers; |
595 | KABC::PhoneNumber::List::Iterator phoneIter; | 647 | KABC::PhoneNumber::List::Iterator phoneIter; |
596 | if ( inList > max ) { | 648 | if ( inList > max ) { |
597 | // delete non-preferred numbers | 649 | // delete non-preferred numbers |
@@ -992,49 +1044,49 @@ QString Addressee::businessAddressLabelLabel() | |||
992 | QString Addressee::homePhoneLabel() | 1044 | QString Addressee::homePhoneLabel() |
993 | { | 1045 | { |
994 | return i18n("Home Phone"); | 1046 | return i18n("Home Phone"); |
995 | } | 1047 | } |
996 | 1048 | ||
997 | 1049 | ||
998 | QString Addressee::businessPhoneLabel() | 1050 | QString Addressee::businessPhoneLabel() |
999 | { | 1051 | { |
1000 | return i18n("Business Phone"); | 1052 | return i18n("Work Phone"); |
1001 | } | 1053 | } |
1002 | 1054 | ||
1003 | 1055 | ||
1004 | QString Addressee::mobilePhoneLabel() | 1056 | QString Addressee::mobilePhoneLabel() |
1005 | { | 1057 | { |
1006 | return i18n("Mobile Phone"); | 1058 | return i18n("Mobile Phone"); |
1007 | } | 1059 | } |
1008 | QString Addressee::mobileWorkPhoneLabel() | 1060 | QString Addressee::mobileWorkPhoneLabel() |
1009 | { | 1061 | { |
1010 | return i18n("Mobile (work)"); | 1062 | return i18n("Mobile2 (work)"); |
1011 | } | 1063 | } |
1012 | QString Addressee::mobileHomePhoneLabel() | 1064 | QString Addressee::mobileHomePhoneLabel() |
1013 | { | 1065 | { |
1014 | return i18n("Mobile (home)"); | 1066 | return i18n("Mobile"); |
1015 | } | 1067 | } |
1016 | 1068 | ||
1017 | 1069 | ||
1018 | QString Addressee::homeFaxLabel() | 1070 | QString Addressee::homeFaxLabel() |
1019 | { | 1071 | { |
1020 | return i18n("Home Fax"); | 1072 | return i18n("Fax (Home)"); |
1021 | } | 1073 | } |
1022 | 1074 | ||
1023 | 1075 | ||
1024 | QString Addressee::businessFaxLabel() | 1076 | QString Addressee::businessFaxLabel() |
1025 | { | 1077 | { |
1026 | return i18n("Business Fax"); | 1078 | return i18n("Fax (Work)"); |
1027 | } | 1079 | } |
1028 | 1080 | ||
1029 | 1081 | ||
1030 | QString Addressee::carPhoneLabel() | 1082 | QString Addressee::carPhoneLabel() |
1031 | { | 1083 | { |
1032 | return i18n("Car Phone"); | 1084 | return i18n("Mobile2 (work)"); |
1033 | } | 1085 | } |
1034 | 1086 | ||
1035 | 1087 | ||
1036 | QString Addressee::isdnLabel() | 1088 | QString Addressee::isdnLabel() |
1037 | { | 1089 | { |
1038 | return i18n("ISDN"); | 1090 | return i18n("ISDN"); |
1039 | } | 1091 | } |
1040 | 1092 | ||
@@ -1647,16 +1699,26 @@ PhoneNumber Addressee::phoneNumber( int type ) const | |||
1647 | return phoneNumber; | 1699 | return phoneNumber; |
1648 | } | 1700 | } |
1649 | 1701 | ||
1650 | PhoneNumber::List Addressee::phoneNumbers() const | 1702 | PhoneNumber::List Addressee::phoneNumbers() const |
1651 | { | 1703 | { |
1652 | return mData->phoneNumbers; | 1704 | return mData->phoneNumbers; |
1653 | } | 1705 | } |
1654 | 1706 | ||
1707 | int Addressee::hasPhoneNumberType( int type ) | ||
1708 | { | ||
1709 | int retval = 0; | ||
1710 | PhoneNumber::List::ConstIterator it; | ||
1711 | for( it = mData->phoneNumbers.begin(); it != mData->phoneNumbers.end(); ++it ) { | ||
1712 | if ( (*it).type() == type ) | ||
1713 | ++retval; | ||
1714 | } | ||
1715 | return retval; | ||
1716 | } | ||
1655 | PhoneNumber::List Addressee::phoneNumbers( int type ) const | 1717 | PhoneNumber::List Addressee::phoneNumbers( int type ) const |
1656 | { | 1718 | { |
1657 | PhoneNumber::List list; | 1719 | PhoneNumber::List list; |
1658 | 1720 | ||
1659 | PhoneNumber::List::ConstIterator it; | 1721 | PhoneNumber::List::ConstIterator it; |
1660 | for( it = mData->phoneNumbers.begin(); it != mData->phoneNumbers.end(); ++it ) { | 1722 | for( it = mData->phoneNumbers.begin(); it != mData->phoneNumbers.end(); ++it ) { |
1661 | if ( matchBinaryPattern( (*it).type(), type ) ) { | 1723 | if ( matchBinaryPattern( (*it).type(), type ) ) { |
1662 | list.append( *it ); | 1724 | list.append( *it ); |
diff --git a/kabc/addressee.h b/kabc/addressee.h index d1c07cb..0c488eb 100644 --- a/kabc/addressee.h +++ b/kabc/addressee.h | |||
@@ -117,16 +117,18 @@ class Addressee | |||
117 | const QString externalUID() const; | 117 | const QString externalUID() const; |
118 | void setOriginalExternalUID( const QString &id ); | 118 | void setOriginalExternalUID( const QString &id ); |
119 | QString originalExternalUID() const; | 119 | QString originalExternalUID() const; |
120 | void mergeContact( const Addressee& ad, bool isSubSet ); | 120 | void mergeContact( const Addressee& ad, bool isSubSet ); |
121 | void simplifyEmails(); | 121 | void simplifyEmails(); |
122 | void simplifyAddresses(); | 122 | void simplifyAddresses(); |
123 | void simplifyPhoneNumbers(); | 123 | void simplifyPhoneNumbers(); |
124 | void simplifyPhoneNumberTypes(); | 124 | void simplifyPhoneNumberTypes(); |
125 | void makePhoneNumbersOLcompatible(); | ||
126 | int hasPhoneNumberType( int type ); | ||
125 | bool removeVoice(); | 127 | bool removeVoice(); |
126 | bool containsAdr(const Addressee& addr ); | 128 | bool containsAdr(const Addressee& addr ); |
127 | 129 | ||
128 | /** | 130 | /** |
129 | Set unique identifier. | 131 | Set unique identifier. |
130 | */ | 132 | */ |
131 | void setUid( const QString &uid ); | 133 | void setUid( const QString &uid ); |
132 | /** | 134 | /** |
diff --git a/kabc/field.cpp b/kabc/field.cpp index fd51026..20885de 100644 --- a/kabc/field.cpp +++ b/kabc/field.cpp | |||
@@ -284,37 +284,37 @@ QString Field::value( const KABC::Addressee &a ) | |||
284 | case FieldImpl::Url: | 284 | case FieldImpl::Url: |
285 | return a.url().prettyURL(); | 285 | return a.url().prettyURL(); |
286 | //US | 286 | //US |
287 | case FieldImpl::Resource: | 287 | case FieldImpl::Resource: |
288 | return a.resource()->resourceName(); | 288 | return a.resource()->resourceName(); |
289 | case FieldImpl::Category: | 289 | case FieldImpl::Category: |
290 | return a.categories().join(","); | 290 | return a.categories().join(","); |
291 | case FieldImpl::HomePhone: | 291 | case FieldImpl::HomePhone: |
292 | return a.phoneNumber( PhoneNumber::Home ).number(); | 292 | return a.phoneNumber( PhoneNumber::Home| PhoneNumber::Pref ).number(); |
293 | case FieldImpl::BusinessPhone: | 293 | case FieldImpl::BusinessPhone: |
294 | return a.phoneNumber( PhoneNumber::Work ).number(); | 294 | return a.phoneNumber( PhoneNumber::Work| PhoneNumber::Pref ).number(); |
295 | case FieldImpl::MobilePhone: | 295 | case FieldImpl::MobilePhone: |
296 | return a.phoneNumber( PhoneNumber::Cell ).number(); | 296 | return a.phoneNumber( PhoneNumber::Cell ).number(); |
297 | case FieldImpl::MobileWorkPhone: | 297 | case FieldImpl::MobileWorkPhone: |
298 | return a.phoneNumber( PhoneNumber::Cell | PhoneNumber::Work ).number(); | 298 | return a.phoneNumber( PhoneNumber::Car ).number(); |
299 | case FieldImpl::MobileHomePhone: | 299 | case FieldImpl::MobileHomePhone: |
300 | return a.phoneNumber( PhoneNumber::Cell | PhoneNumber::Home ).number(); | 300 | return a.phoneNumber( PhoneNumber::Cell ).number(); |
301 | case FieldImpl::HomeFax: | 301 | case FieldImpl::HomeFax: |
302 | return a.phoneNumber( PhoneNumber::Home | PhoneNumber::Fax ).number(); | 302 | return a.phoneNumber( PhoneNumber::Home | PhoneNumber::Fax ).number(); |
303 | case FieldImpl::BusinessFax: | 303 | case FieldImpl::BusinessFax: |
304 | return a.phoneNumber( PhoneNumber::Work | PhoneNumber::Fax ).number(); | 304 | return a.phoneNumber( PhoneNumber::Work | PhoneNumber::Fax ).number(); |
305 | case FieldImpl::CarPhone: | 305 | case FieldImpl::CarPhone: |
306 | return a.phoneNumber( PhoneNumber::Car ).number(); | 306 | return a.phoneNumber( PhoneNumber::Car ).number(); |
307 | case FieldImpl::Isdn: | 307 | case FieldImpl::Isdn: |
308 | return a.phoneNumber( PhoneNumber::Isdn ).number(); | 308 | return a.phoneNumber( PhoneNumber::Isdn ).number(); |
309 | case FieldImpl::Pager: | 309 | case FieldImpl::Pager: |
310 | return a.phoneNumber( PhoneNumber::Pager ).number(); | 310 | return a.phoneNumber( PhoneNumber::Pager ).number(); |
311 | case FieldImpl::Sip: | 311 | case FieldImpl::Sip: |
312 | return a.phoneNumber( PhoneNumber::Sip ).number(); | 312 | return a.phoneNumber( PhoneNumber::Pcs | PhoneNumber::Pref ).number(); |
313 | case FieldImpl::HomeAddressStreet: | 313 | case FieldImpl::HomeAddressStreet: |
314 | return a.address( Address::Home ).street(); | 314 | return a.address( Address::Home ).street(); |
315 | case FieldImpl::HomeAddressLocality: | 315 | case FieldImpl::HomeAddressLocality: |
316 | return a.address( Address::Home ).locality(); | 316 | return a.address( Address::Home ).locality(); |
317 | case FieldImpl::HomeAddressRegion: | 317 | case FieldImpl::HomeAddressRegion: |
318 | return a.address( Address::Home ).region(); | 318 | return a.address( Address::Home ).region(); |
319 | case FieldImpl::HomeAddressPostalCode: | 319 | case FieldImpl::HomeAddressPostalCode: |
320 | return a.address( Address::Home ).postalCode(); | 320 | return a.address( Address::Home ).postalCode(); |
diff --git a/kabc/phonenumber.cpp b/kabc/phonenumber.cpp index 4c6231d..0d46ba7 100644 --- a/kabc/phonenumber.cpp +++ b/kabc/phonenumber.cpp | |||
@@ -60,17 +60,72 @@ bool PhoneNumber::operator==( const PhoneNumber &p ) const | |||
60 | 60 | ||
61 | return true; | 61 | return true; |
62 | } | 62 | } |
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 | void PhoneNumber::makeCompat() | ||
69 | { | ||
70 | mType = getCompatType( mType ); | ||
71 | } | ||
72 | int PhoneNumber::getCompatType( int type ) | ||
73 | { | ||
74 | |||
75 | if ((type & Cell) == Cell) { | ||
76 | if ((type & Work) == Work) | ||
77 | return Car; | ||
78 | return Cell; | ||
79 | } | ||
80 | if ((type & Home) == Home) { | ||
81 | if ((type & Pref) == Pref) | ||
82 | return (Home | Pref); | ||
83 | if ((type & Fax) == Fax) | ||
84 | return (Home | Fax); | ||
85 | return (Home); | ||
86 | } | ||
87 | if ((type & Work) == Work) { | ||
88 | if ((type & Pref) == Pref) | ||
89 | return (Work| Pref); | ||
90 | if ((type & Fax) == Fax) | ||
91 | return (Fax |Work); | ||
92 | if ((type & Msg) == Msg) { | ||
93 | if ((type & Voice) == Voice) | ||
94 | return ( Msg | Voice |Work); | ||
95 | return ( Msg | Work); | ||
96 | } | ||
97 | return Work; | ||
98 | } | ||
99 | if ((type & Pcs) == Pcs) { | ||
100 | if ((type & Pref) == Pref) | ||
101 | return Pcs | Pref; | ||
102 | return Pcs; | ||
103 | } | ||
104 | if ((type & Car) == Car) | ||
105 | return Car; | ||
106 | if ((type & Pager) == Pager) | ||
107 | return Pager; | ||
108 | if ((type & Isdn) == Isdn) | ||
109 | return Isdn; | ||
110 | if ((type & Video) == Video) | ||
111 | return Video; | ||
112 | |||
113 | if ((type & Msg) == Msg) | ||
114 | return Msg; | ||
115 | if ((type & Fax) == Fax) | ||
116 | return Fax; | ||
117 | |||
118 | if ((type & Pref) == Pref) | ||
119 | return Pref; | ||
68 | 120 | ||
121 | return Voice; | ||
122 | |||
123 | } | ||
69 | bool PhoneNumber::simplifyNumber() | 124 | bool PhoneNumber::simplifyNumber() |
70 | { | 125 | { |
71 | QString Number; | 126 | QString Number; |
72 | int i; | 127 | int i; |
73 | Number = mNumber.stripWhiteSpace (); | 128 | Number = mNumber.stripWhiteSpace (); |
74 | mNumber = ""; | 129 | mNumber = ""; |
75 | for ( i = 0; i < Number.length(); ++i) { | 130 | for ( i = 0; i < Number.length(); ++i) { |
76 | if ( Number.at(i).isDigit() || Number.at(i) == '+'|| Number.at(i) == '*'|| Number.at(i) == '#' ) | 131 | if ( Number.at(i).isDigit() || Number.at(i) == '+'|| Number.at(i) == '*'|| Number.at(i) == '#' ) |
@@ -158,30 +213,82 @@ QString PhoneNumber::label() const | |||
158 | return typeLabel( type() ); | 213 | return typeLabel( type() ); |
159 | } | 214 | } |
160 | 215 | ||
161 | PhoneNumber::TypeList PhoneNumber::typeList() | 216 | PhoneNumber::TypeList PhoneNumber::typeList() |
162 | { | 217 | { |
163 | TypeList list; | 218 | TypeList list; |
164 | 219 | ||
165 | list << Home << Work << Msg << Pref << Voice << Fax << Cell << Video | 220 | list << Home << Work << Msg << Pref << Voice << Fax << Cell << Video |
166 | << Bbs << Modem << Car << Isdn << Pcs << Pager << Sip; | 221 | << Bbs << Modem << Car << Isdn << Pcs << Pager; |
167 | 222 | ||
168 | return list; | 223 | return list; |
169 | } | 224 | } |
170 | 225 | ||
171 | QString PhoneNumber::label( int type ) | 226 | QString PhoneNumber::label( int type ) |
172 | { | 227 | { |
173 | return typeLabel( type ); | 228 | return typeLabel( type ); |
174 | } | 229 | } |
175 | 230 | ||
176 | QString PhoneNumber::typeLabel( int type ) | 231 | QString PhoneNumber::typeLabel( int type ) |
177 | { | 232 | { |
178 | QString typeString; | 233 | if ((type & Cell) == Cell) |
234 | return i18n("Mobile"); | ||
235 | if ((type & Home) == Home) { | ||
236 | if ((type & Pref) == Pref) | ||
237 | return i18n("Home"); | ||
238 | if ((type & Fax) == Fax) | ||
239 | return i18n("Fax (Home)"); | ||
240 | return i18n("Home2"); | ||
241 | } | ||
179 | 242 | ||
243 | if ((type & Work) == Work) { | ||
244 | if ((type & Pref) == Pref) | ||
245 | return i18n("Work"); | ||
246 | if ((type & Fax) == Fax) | ||
247 | return i18n("Fax (Work)"); | ||
248 | if ((type & Msg) == Msg) { | ||
249 | if ((type & Voice) == Voice) | ||
250 | return i18n("Assistent"); | ||
251 | return i18n("Company"); | ||
252 | } | ||
253 | return i18n("Work2"); | ||
254 | } | ||
255 | if ((type & Pcs) == Pcs) { | ||
256 | if ((type & Pref) == Pref) | ||
257 | return i18n("SIP"); | ||
258 | return i18n("VoIP"); | ||
259 | } | ||
260 | if ((type & Car) == Car) | ||
261 | return i18n("Mobile2 (Work)"); | ||
262 | if ((type & Pager) == Pager) | ||
263 | return i18n("Pager"); | ||
264 | if ((type & Isdn) == Isdn) | ||
265 | return i18n("ISDN"); | ||
266 | if ((type & Video) == Video) | ||
267 | return i18n("Video"); | ||
268 | |||
269 | if ((type & Msg) == Msg) | ||
270 | return i18n("Callback"); | ||
271 | if ((type & Fax) == Fax) | ||
272 | return i18n("Fax (Other)"); | ||
273 | |||
274 | if ((type & Pref) == Pref) | ||
275 | return i18n("Primary"); | ||
276 | |||
277 | |||
278 | return i18n("Other"); | ||
279 | |||
280 | |||
281 | #if 0 | ||
282 | |||
283 | |||
284 | |||
285 | QString typeString; | ||
286 | |||
180 | 287 | ||
181 | if ((type & Cell) == Cell) | 288 | if ((type & Cell) == Cell) |
182 | typeString += i18n("Mobile") +" "; | 289 | typeString += i18n("Mobile") +" "; |
183 | if ((type & Home) == Home) | 290 | if ((type & Home) == Home) |
184 | typeString += i18n("Home")+" "; | 291 | typeString += i18n("Home")+" "; |
185 | else if ((type & Work) == Work) | 292 | else if ((type & Work) == Work) |
186 | typeString += i18n("Work")+" "; | 293 | typeString += i18n("Work")+" "; |
187 | 294 | ||
@@ -215,16 +322,17 @@ QString PhoneNumber::typeLabel( int type ) | |||
215 | if (typeString.isEmpty()) { | 322 | if (typeString.isEmpty()) { |
216 | if ((type & Voice) == Voice) | 323 | if ((type & Voice) == Voice) |
217 | return i18n("Voice"); | 324 | return i18n("Voice"); |
218 | else | 325 | else |
219 | return i18n("Other"); | 326 | return i18n("Other"); |
220 | } | 327 | } |
221 | 328 | ||
222 | return typeString.stripWhiteSpace(); | 329 | return typeString.stripWhiteSpace(); |
330 | #endif | ||
223 | } | 331 | } |
224 | 332 | ||
225 | QDataStream &KABC::operator<<( QDataStream &s, const PhoneNumber &phone ) | 333 | QDataStream &KABC::operator<<( QDataStream &s, const PhoneNumber &phone ) |
226 | { | 334 | { |
227 | return s << phone.mId << phone.mType << phone.mNumber; | 335 | return s << phone.mId << phone.mType << phone.mNumber; |
228 | } | 336 | } |
229 | 337 | ||
230 | QDataStream &KABC::operator>>( QDataStream &s, PhoneNumber &phone ) | 338 | QDataStream &KABC::operator>>( QDataStream &s, PhoneNumber &phone ) |
diff --git a/kabc/phonenumber.h b/kabc/phonenumber.h index 2d4d3e0..b9d6a17 100644 --- a/kabc/phonenumber.h +++ b/kabc/phonenumber.h | |||
@@ -59,21 +59,20 @@ class PhoneNumber | |||
59 | @li @p Cell - Cell phone | 59 | @li @p Cell - Cell phone |
60 | @li @p Video - Video phone | 60 | @li @p Video - Video phone |
61 | @li @p Bbs - Mailbox | 61 | @li @p Bbs - Mailbox |
62 | @li @p Modem - Modem | 62 | @li @p Modem - Modem |
63 | @li @p Car - Car phone | 63 | @li @p Car - Car phone |
64 | @li @p Isdn - ISDN connection | 64 | @li @p Isdn - ISDN connection |
65 | @li @p Pcs - Personal Communication Service | 65 | @li @p Pcs - Personal Communication Service |
66 | @li @p Pager - Pager | 66 | @li @p Pager - Pager |
67 | @li @p SIP - VoIP | ||
68 | */ | 67 | */ |
69 | enum Types { Home = 1, Work = 2, Msg = 4, Pref = 8, Voice = 16, Fax = 32, | 68 | enum Types { Home = 1, Work = 2, Msg = 4, Pref = 8, Voice = 16, Fax = 32, |
70 | Cell = 64, Video = 128, Bbs = 256, Modem = 512, Car = 1024, | 69 | Cell = 64, Video = 128, Bbs = 256, Modem = 512, Car = 1024, |
71 | Isdn = 2048, Pcs = 4096, Pager = 8192, Sip = 16384 }; | 70 | Isdn = 2048, Pcs = 4096, Pager = 8192 }; |
72 | 71 | ||
73 | /** | 72 | /** |
74 | Create an empty phone number object. | 73 | Create an empty phone number object. |
75 | */ | 74 | */ |
76 | PhoneNumber(); | 75 | PhoneNumber(); |
77 | 76 | ||
78 | /** | 77 | /** |
79 | Create a phonenumber object. | 78 | Create a phonenumber object. |
@@ -146,16 +145,18 @@ class PhoneNumber | |||
146 | 145 | ||
147 | /** | 146 | /** |
148 | Returns the translated label for phone number type. | 147 | Returns the translated label for phone number type. |
149 | @obsolete | 148 | @obsolete |
150 | */ | 149 | */ |
151 | static QString label( int type ); | 150 | static QString label( int type ); |
152 | bool simplifyNumber(); | 151 | bool simplifyNumber(); |
153 | void simplifyType(); | 152 | void simplifyType(); |
153 | void makeCompat(); | ||
154 | int getCompatType( int type ); | ||
154 | 155 | ||
155 | private: | 156 | private: |
156 | void init(); | 157 | void init(); |
157 | 158 | ||
158 | QString mId; | 159 | QString mId; |
159 | 160 | ||
160 | int mType; | 161 | int mType; |
161 | QString mNumber; | 162 | QString mNumber; |
diff --git a/kabc/vcard21parser.cpp b/kabc/vcard21parser.cpp index 277de22..60d02b8 100644 --- a/kabc/vcard21parser.cpp +++ b/kabc/vcard21parser.cpp | |||
@@ -165,18 +165,17 @@ bool VCardLineX::isValid() const | |||
165 | qualifiers.contains(VCARD_TEL_MSG) || | 165 | qualifiers.contains(VCARD_TEL_MSG) || |
166 | qualifiers.contains(VCARD_TEL_CELL) || | 166 | qualifiers.contains(VCARD_TEL_CELL) || |
167 | qualifiers.contains(VCARD_TEL_PAGER) || | 167 | qualifiers.contains(VCARD_TEL_PAGER) || |
168 | qualifiers.contains(VCARD_TEL_BBS) || | 168 | qualifiers.contains(VCARD_TEL_BBS) || |
169 | qualifiers.contains(VCARD_TEL_MODEM) || | 169 | qualifiers.contains(VCARD_TEL_MODEM) || |
170 | qualifiers.contains(VCARD_TEL_CAR) || | 170 | qualifiers.contains(VCARD_TEL_CAR) || |
171 | qualifiers.contains(VCARD_TEL_ISDN) || | 171 | qualifiers.contains(VCARD_TEL_ISDN) || |
172 | qualifiers.contains(VCARD_TEL_VIDEO) || | 172 | qualifiers.contains(VCARD_TEL_VIDEO) || |
173 | qualifiers.contains(VCARD_TEL_PCS) || | 173 | qualifiers.contains(VCARD_TEL_PCS) |
174 | qualifiers.contains(VCARD_TEL_SIP) | ||
175 | ) ) | 174 | ) ) |
176 | return true; | 175 | return true; |
177 | if ( name == VCARD_TZ ) | 176 | if ( name == VCARD_TZ ) |
178 | return true; | 177 | return true; |
179 | if ( name == VCARD_TITLE ) | 178 | if ( name == VCARD_TITLE ) |
180 | return true; | 179 | return true; |
181 | break; | 180 | break; |
182 | 181 | ||
@@ -274,19 +273,19 @@ KABC::Addressee VCard21Parser::readFromString( const QString &data) | |||
274 | if ( (*i).name == VCARD_TEL ) { | 273 | if ( (*i).name == VCARD_TEL ) { |
275 | int type = 0; | 274 | int type = 0; |
276 | if ( (*i).qualified ) { | 275 | if ( (*i).qualified ) { |
277 | if ( (*i).qualifiers.contains( VCARD_TEL_HOME ) ) | 276 | if ( (*i).qualifiers.contains( VCARD_TEL_HOME ) ) |
278 | type |= PhoneNumber::Home; | 277 | type |= PhoneNumber::Home; |
279 | if ( (*i).qualifiers.contains( VCARD_TEL_WORK ) ) | 278 | if ( (*i).qualifiers.contains( VCARD_TEL_WORK ) ) |
280 | type |= PhoneNumber::Work; | 279 | type |= PhoneNumber::Work; |
281 | if ( (*i).qualifiers.contains( VCARD_TEL_PREF ) ) | 280 | if ( (*i).qualifiers.contains( VCARD_TEL_PREF ) ) |
282 | type |= PhoneNumber::Pref; | 281 | type |= PhoneNumber::Pref; |
283 | // if ( (*i).qualifiers.contains( VCARD_TEL_VOICE ) ) | 282 | if ( (*i).qualifiers.contains( VCARD_TEL_VOICE ) ) |
284 | // type |= PhoneNumber::Voice; | 283 | type |= PhoneNumber::Voice; |
285 | if ( (*i).qualifiers.contains( VCARD_TEL_FAX ) ) | 284 | if ( (*i).qualifiers.contains( VCARD_TEL_FAX ) ) |
286 | type |= PhoneNumber::Fax; | 285 | type |= PhoneNumber::Fax; |
287 | if ( (*i).qualifiers.contains( VCARD_TEL_MSG ) ) | 286 | if ( (*i).qualifiers.contains( VCARD_TEL_MSG ) ) |
288 | type |= PhoneNumber::Msg; | 287 | type |= PhoneNumber::Msg; |
289 | if ( (*i).qualifiers.contains( VCARD_TEL_CELL ) ) | 288 | if ( (*i).qualifiers.contains( VCARD_TEL_CELL ) ) |
290 | type |= PhoneNumber::Cell; | 289 | type |= PhoneNumber::Cell; |
291 | if ( (*i).qualifiers.contains( VCARD_TEL_PAGER ) ) | 290 | if ( (*i).qualifiers.contains( VCARD_TEL_PAGER ) ) |
292 | type |= PhoneNumber::Pager; | 291 | type |= PhoneNumber::Pager; |
@@ -297,23 +296,22 @@ KABC::Addressee VCard21Parser::readFromString( const QString &data) | |||
297 | if ( (*i).qualifiers.contains( VCARD_TEL_CAR ) ) | 296 | if ( (*i).qualifiers.contains( VCARD_TEL_CAR ) ) |
298 | type |= PhoneNumber::Car; | 297 | type |= PhoneNumber::Car; |
299 | if ( (*i).qualifiers.contains( VCARD_TEL_ISDN ) ) | 298 | if ( (*i).qualifiers.contains( VCARD_TEL_ISDN ) ) |
300 | type |= PhoneNumber::Isdn; | 299 | type |= PhoneNumber::Isdn; |
301 | if ( (*i).qualifiers.contains( VCARD_TEL_VIDEO ) ) | 300 | if ( (*i).qualifiers.contains( VCARD_TEL_VIDEO ) ) |
302 | type |= PhoneNumber::Video; | 301 | type |= PhoneNumber::Video; |
303 | if ( (*i).qualifiers.contains( VCARD_TEL_PCS ) ) | 302 | if ( (*i).qualifiers.contains( VCARD_TEL_PCS ) ) |
304 | type |= PhoneNumber::Pcs; | 303 | type |= PhoneNumber::Pcs; |
305 | if ( (*i).qualifiers.contains( VCARD_TEL_SIP ) ) | 304 | |
306 | type |= PhoneNumber::Sip; | ||
307 | } | 305 | } |
308 | addressee.insertPhoneNumber( PhoneNumber( (*i).parameters[ 0 ], type ) ); | 306 | addressee.insertPhoneNumber( PhoneNumber( (*i).parameters[ 0 ], type ) ); |
309 | } | 307 | } |
310 | } | 308 | } |
311 | 309 | addressee.makePhoneNumbersOLcompatible(); | |
312 | //set the addressee's addresses | 310 | //set the addressee's addresses |
313 | for ( QValueListIterator<VCardLineX> i = mVCard->_vcdata->begin();i != mVCard->_vcdata->end(); ++i ) { | 311 | for ( QValueListIterator<VCardLineX> i = mVCard->_vcdata->begin();i != mVCard->_vcdata->end(); ++i ) { |
314 | if ( (*i).name == VCARD_ADR ) { | 312 | if ( (*i).name == VCARD_ADR ) { |
315 | int type = 0; | 313 | int type = 0; |
316 | if ( (*i).qualified ) { | 314 | if ( (*i).qualified ) { |
317 | if ( (*i).qualifiers.contains( VCARD_ADR_DOM ) ) | 315 | if ( (*i).qualifiers.contains( VCARD_ADR_DOM ) ) |
318 | type |= Address::Dom; | 316 | type |= Address::Dom; |
319 | if ( (*i).qualifiers.contains( VCARD_ADR_INTL ) ) | 317 | if ( (*i).qualifiers.contains( VCARD_ADR_INTL ) ) |
diff --git a/kabc/vcardformatimpl.cpp b/kabc/vcardformatimpl.cpp index ec5ed80..26fd4f0 100644 --- a/kabc/vcardformatimpl.cpp +++ b/kabc/vcardformatimpl.cpp | |||
@@ -276,17 +276,17 @@ bool VCardFormatImpl::loadAddressee( Addressee& addressee, VCard *v ) | |||
276 | Address address = addressee.address( type ); | 276 | Address address = addressee.address( type ); |
277 | if ( address.isEmpty() ) | 277 | if ( address.isEmpty() ) |
278 | address.setType( type ); | 278 | address.setType( type ); |
279 | 279 | ||
280 | address.setLabel( QString::fromUtf8( cl->value()->asString() ) ); | 280 | address.setLabel( QString::fromUtf8( cl->value()->asString() ) ); |
281 | addressee.insertAddress( address ); | 281 | addressee.insertAddress( address ); |
282 | } | 282 | } |
283 | } | 283 | } |
284 | 284 | addressee.makePhoneNumbersOLcompatible(); | |
285 | return true; | 285 | return true; |
286 | } | 286 | } |
287 | 287 | ||
288 | void VCardFormatImpl::saveAddressee( const Addressee &addressee, VCard *v, bool intern ) | 288 | void VCardFormatImpl::saveAddressee( const Addressee &addressee, VCard *v, bool intern ) |
289 | { | 289 | { |
290 | //US ContentLine cl; | 290 | //US ContentLine cl; |
291 | //US QString value; | 291 | //US QString value; |
292 | 292 | ||
@@ -590,17 +590,16 @@ void VCardFormatImpl::addTelephoneValue( VCard *v, const PhoneNumber &p ) | |||
590 | if( p.type() & PhoneNumber::Cell ) params.append( new Param( "TYPE", "cell" ) ); | 590 | if( p.type() & PhoneNumber::Cell ) params.append( new Param( "TYPE", "cell" ) ); |
591 | if( p.type() & PhoneNumber::Video ) params.append( new Param( "TYPE", "video" ) ); | 591 | if( p.type() & PhoneNumber::Video ) params.append( new Param( "TYPE", "video" ) ); |
592 | if( p.type() & PhoneNumber::Bbs ) params.append( new Param( "TYPE", "bbs" ) ); | 592 | if( p.type() & PhoneNumber::Bbs ) params.append( new Param( "TYPE", "bbs" ) ); |
593 | if( p.type() & PhoneNumber::Modem ) params.append( new Param( "TYPE", "modem" ) ); | 593 | if( p.type() & PhoneNumber::Modem ) params.append( new Param( "TYPE", "modem" ) ); |
594 | if( p.type() & PhoneNumber::Car ) params.append( new Param( "TYPE", "car" ) ); | 594 | if( p.type() & PhoneNumber::Car ) params.append( new Param( "TYPE", "car" ) ); |
595 | if( p.type() & PhoneNumber::Isdn ) params.append( new Param( "TYPE", "isdn" ) ); | 595 | if( p.type() & PhoneNumber::Isdn ) params.append( new Param( "TYPE", "isdn" ) ); |
596 | if( p.type() & PhoneNumber::Pcs ) params.append( new Param( "TYPE", "pcs" ) ); | 596 | if( p.type() & PhoneNumber::Pcs ) params.append( new Param( "TYPE", "pcs" ) ); |
597 | if( p.type() & PhoneNumber::Pager ) params.append( new Param( "TYPE", "pager" ) ); | 597 | if( p.type() & PhoneNumber::Pager ) params.append( new Param( "TYPE", "pager" ) ); |
598 | if( p.type() & PhoneNumber::Sip ) params.append( new Param( "TYPE", "sip" ) ); | ||
599 | cl.setParamList( params ); | 598 | cl.setParamList( params ); |
600 | 599 | ||
601 | v->add(cl); | 600 | v->add(cl); |
602 | } | 601 | } |
603 | 602 | ||
604 | PhoneNumber VCardFormatImpl::readTelephoneValue( ContentLine *cl ) | 603 | PhoneNumber VCardFormatImpl::readTelephoneValue( ContentLine *cl ) |
605 | { | 604 | { |
606 | PhoneNumber p; | 605 | PhoneNumber p; |
@@ -623,17 +622,16 @@ PhoneNumber VCardFormatImpl::readTelephoneValue( ContentLine *cl ) | |||
623 | else if ( tmpStr == "cell" ) type |= PhoneNumber::Cell; | 622 | else if ( tmpStr == "cell" ) type |= PhoneNumber::Cell; |
624 | else if ( tmpStr == "video" ) type |= PhoneNumber::Video; | 623 | else if ( tmpStr == "video" ) type |= PhoneNumber::Video; |
625 | else if ( tmpStr == "bbs" ) type |= PhoneNumber::Bbs; | 624 | else if ( tmpStr == "bbs" ) type |= PhoneNumber::Bbs; |
626 | else if ( tmpStr == "modem" ) type |= PhoneNumber::Modem; | 625 | else if ( tmpStr == "modem" ) type |= PhoneNumber::Modem; |
627 | else if ( tmpStr == "car" ) type |= PhoneNumber::Car; | 626 | else if ( tmpStr == "car" ) type |= PhoneNumber::Car; |
628 | else if ( tmpStr == "isdn" ) type |= PhoneNumber::Isdn; | 627 | else if ( tmpStr == "isdn" ) type |= PhoneNumber::Isdn; |
629 | else if ( tmpStr == "pcs" ) type |= PhoneNumber::Pcs; | 628 | else if ( tmpStr == "pcs" ) type |= PhoneNumber::Pcs; |
630 | else if ( tmpStr == "pager" ) type |= PhoneNumber::Pager; | 629 | else if ( tmpStr == "pager" ) type |= PhoneNumber::Pager; |
631 | else if ( tmpStr == "sip" ) type |= PhoneNumber::Sip; | ||
632 | } | 630 | } |
633 | } | 631 | } |
634 | p.setType( type ); | 632 | p.setType( type ); |
635 | 633 | ||
636 | return p; | 634 | return p; |
637 | } | 635 | } |
638 | 636 | ||
639 | QString VCardFormatImpl::readTextValue( ContentLine *cl ) | 637 | QString VCardFormatImpl::readTextValue( ContentLine *cl ) |
diff --git a/kabc/vcardparser/vcardtool.cpp b/kabc/vcardparser/vcardtool.cpp index c3d92b6..204326e 100644 --- a/kabc/vcardparser/vcardtool.cpp +++ b/kabc/vcardparser/vcardtool.cpp | |||
@@ -571,17 +571,17 @@ Addressee::List VCardTool::parseVCards( const QString& vcard ) | |||
571 | // X- | 571 | // X- |
572 | else if ( identifier.startsWith( "x-" ) ) { | 572 | else if ( identifier.startsWith( "x-" ) ) { |
573 | const QString key = (*lineIt).identifier().mid( 2 ); | 573 | const QString key = (*lineIt).identifier().mid( 2 ); |
574 | int dash = key.find( "-" ); | 574 | int dash = key.find( "-" ); |
575 | addr.insertCustom( key.left( dash ), key.mid( dash + 1 ), (*lineIt).valueString() ); | 575 | addr.insertCustom( key.left( dash ), key.mid( dash + 1 ), (*lineIt).valueString() ); |
576 | } | 576 | } |
577 | } | 577 | } |
578 | } | 578 | } |
579 | 579 | addr.makePhoneNumbersOLcompatible(); | |
580 | addrList.append( addr ); | 580 | addrList.append( addr ); |
581 | } | 581 | } |
582 | 582 | ||
583 | return addrList; | 583 | return addrList; |
584 | } | 584 | } |
585 | 585 | ||
586 | QDateTime VCardTool::parseDateTime( const QString &str ) | 586 | QDateTime VCardTool::parseDateTime( const QString &str ) |
587 | { | 587 | { |