summaryrefslogtreecommitdiffabout
path: root/kabc/field.cpp
Unidiff
Diffstat (limited to 'kabc/field.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--kabc/field.cpp8
1 files changed, 7 insertions, 1 deletions
diff --git a/kabc/field.cpp b/kabc/field.cpp
index 20885de..6f2b307 100644
--- a/kabc/field.cpp
+++ b/kabc/field.cpp
@@ -27,350 +27,355 @@ $Id$
27*/ 27*/
28 28
29#include <klocale.h> 29#include <klocale.h>
30#include <kconfig.h> 30#include <kconfig.h>
31#include <kconfigbase.h> 31#include <kconfigbase.h>
32#include <kglobal.h> 32#include <kglobal.h>
33 33
34#include "field.h" 34#include "field.h"
35#include "resource.h" 35#include "resource.h"
36 36
37using namespace KABC; 37using namespace KABC;
38 38
39class Field::FieldImpl 39class Field::FieldImpl
40{ 40{
41 public: 41 public:
42 FieldImpl( int fieldId, int category = 0, 42 FieldImpl( int fieldId, int category = 0,
43 const QString &label = QString::null, 43 const QString &label = QString::null,
44 const QString &key = QString::null, 44 const QString &key = QString::null,
45 const QString &app = QString::null ) 45 const QString &app = QString::null )
46 : mFieldId( fieldId ), mCategory( category ), mLabel( label ), 46 : mFieldId( fieldId ), mCategory( category ), mLabel( label ),
47 mKey( key ), mApp( app ) {} 47 mKey( key ), mApp( app ) {}
48 48
49 enum FieldId 49 enum FieldId
50 { 50 {
51 CustomField, 51 CustomField,
52 FormattedName, 52 FormattedName,
53 FamilyName, 53 FamilyName,
54 GivenName, 54 GivenName,
55 AdditionalName, 55 AdditionalName,
56 Prefix, 56 Prefix,
57 Suffix, 57 Suffix,
58 NickName, 58 NickName,
59 Birthday, 59 Birthday,
60 Category, 60 Category,
61 HomeAddressStreet, 61 HomeAddressStreet,
62 HomeAddressLocality, 62 HomeAddressLocality,
63 HomeAddressRegion, 63 HomeAddressRegion,
64 HomeAddressPostalCode, 64 HomeAddressPostalCode,
65 HomeAddressCountry, 65 HomeAddressCountry,
66 HomeAddressLabel, 66 HomeAddressLabel,
67 BusinessAddressStreet, 67 BusinessAddressStreet,
68 BusinessAddressLocality, 68 BusinessAddressLocality,
69 BusinessAddressRegion, 69 BusinessAddressRegion,
70 BusinessAddressPostalCode, 70 BusinessAddressPostalCode,
71 BusinessAddressCountry, 71 BusinessAddressCountry,
72 BusinessAddressLabel, 72 BusinessAddressLabel,
73 HomePhone, 73 HomePhone,
74 BusinessPhone, 74 BusinessPhone,
75 MobilePhone, 75 MobilePhone,
76 HomeFax, 76 HomeFax,
77 BusinessFax, 77 BusinessFax,
78 CarPhone, 78 CarPhone,
79 Isdn, 79 Isdn,
80 Pager, 80 Pager,
81 Email, 81 Email,
82 Mailer, 82 Mailer,
83 Title, 83 Title,
84 Role, 84 Role,
85 Organization, 85 Organization,
86 Note, 86 Note,
87 Url, 87 Url,
88 Resource, 88 Resource,
89 Sip, 89 Sip,
90 MobileWorkPhone, 90 MobileWorkPhone,
91 MobileHomePhone 91 MobileHomePhone,
92 OtherPhone
92 }; 93 };
93 94
94 int fieldId() { return mFieldId; } 95 int fieldId() { return mFieldId; }
95 int category() { return mCategory; } 96 int category() { return mCategory; }
96 97
97 QString label() { return mLabel; } 98 QString label() { return mLabel; }
98 QString key() { return mKey; } 99 QString key() { return mKey; }
99 QString app() { return mApp; } 100 QString app() { return mApp; }
100 101
101 private: 102 private:
102 int mFieldId; 103 int mFieldId;
103 int mCategory; 104 int mCategory;
104 105
105 QString mLabel; 106 QString mLabel;
106 QString mKey; 107 QString mKey;
107 QString mApp; 108 QString mApp;
108}; 109};
109 110
110 111
111Field::List Field::mAllFields; 112Field::List Field::mAllFields;
112Field::List Field::mDefaultFields; 113Field::List Field::mDefaultFields;
113Field::List Field::mCustomFields; 114Field::List Field::mCustomFields;
114 115
115 116
116Field::Field( FieldImpl *impl ) 117Field::Field( FieldImpl *impl )
117{ 118{
118 mImpl = impl; 119 mImpl = impl;
119} 120}
120 121
121Field::~Field() 122Field::~Field()
122{ 123{
123 delete mImpl; 124 delete mImpl;
124} 125}
125 126
126QString Field::label() 127QString Field::label()
127{ 128{
128 switch ( mImpl->fieldId() ) { 129 switch ( mImpl->fieldId() ) {
129 case FieldImpl::FormattedName: 130 case FieldImpl::FormattedName:
130 return Addressee::formattedNameLabel(); 131 return Addressee::formattedNameLabel();
131 case FieldImpl::FamilyName: 132 case FieldImpl::FamilyName:
132 return Addressee::familyNameLabel(); 133 return Addressee::familyNameLabel();
133 case FieldImpl::GivenName: 134 case FieldImpl::GivenName:
134 return Addressee::givenNameLabel(); 135 return Addressee::givenNameLabel();
135 case FieldImpl::AdditionalName: 136 case FieldImpl::AdditionalName:
136 return Addressee::additionalNameLabel(); 137 return Addressee::additionalNameLabel();
137 case FieldImpl::Prefix: 138 case FieldImpl::Prefix:
138 return Addressee::prefixLabel(); 139 return Addressee::prefixLabel();
139 case FieldImpl::Suffix: 140 case FieldImpl::Suffix:
140 return Addressee::suffixLabel(); 141 return Addressee::suffixLabel();
141 case FieldImpl::NickName: 142 case FieldImpl::NickName:
142 return Addressee::nickNameLabel(); 143 return Addressee::nickNameLabel();
143 case FieldImpl::Birthday: 144 case FieldImpl::Birthday:
144 return Addressee::birthdayLabel(); 145 return Addressee::birthdayLabel();
145 case FieldImpl::HomeAddressStreet: 146 case FieldImpl::HomeAddressStreet:
146 return Addressee::homeAddressStreetLabel(); 147 return Addressee::homeAddressStreetLabel();
147 case FieldImpl::HomeAddressLocality: 148 case FieldImpl::HomeAddressLocality:
148 return Addressee::homeAddressLocalityLabel(); 149 return Addressee::homeAddressLocalityLabel();
149 case FieldImpl::HomeAddressRegion: 150 case FieldImpl::HomeAddressRegion:
150 return Addressee::homeAddressRegionLabel(); 151 return Addressee::homeAddressRegionLabel();
151 case FieldImpl::HomeAddressPostalCode: 152 case FieldImpl::HomeAddressPostalCode:
152 return Addressee::homeAddressPostalCodeLabel(); 153 return Addressee::homeAddressPostalCodeLabel();
153 case FieldImpl::HomeAddressCountry: 154 case FieldImpl::HomeAddressCountry:
154 return Addressee::homeAddressCountryLabel(); 155 return Addressee::homeAddressCountryLabel();
155 case FieldImpl::HomeAddressLabel: 156 case FieldImpl::HomeAddressLabel:
156 return Addressee::homeAddressLabelLabel(); 157 return Addressee::homeAddressLabelLabel();
157 case FieldImpl::BusinessAddressStreet: 158 case FieldImpl::BusinessAddressStreet:
158 return Addressee::businessAddressStreetLabel(); 159 return Addressee::businessAddressStreetLabel();
159 case FieldImpl::BusinessAddressLocality: 160 case FieldImpl::BusinessAddressLocality:
160 return Addressee::businessAddressLocalityLabel(); 161 return Addressee::businessAddressLocalityLabel();
161 case FieldImpl::BusinessAddressRegion: 162 case FieldImpl::BusinessAddressRegion:
162 return Addressee::businessAddressRegionLabel(); 163 return Addressee::businessAddressRegionLabel();
163 case FieldImpl::BusinessAddressPostalCode: 164 case FieldImpl::BusinessAddressPostalCode:
164 return Addressee::businessAddressPostalCodeLabel(); 165 return Addressee::businessAddressPostalCodeLabel();
165 case FieldImpl::BusinessAddressCountry: 166 case FieldImpl::BusinessAddressCountry:
166 return Addressee::businessAddressCountryLabel(); 167 return Addressee::businessAddressCountryLabel();
167 case FieldImpl::BusinessAddressLabel: 168 case FieldImpl::BusinessAddressLabel:
168 return Addressee::businessAddressLabelLabel(); 169 return Addressee::businessAddressLabelLabel();
169 case FieldImpl::HomePhone: 170 case FieldImpl::HomePhone:
170 return Addressee::homePhoneLabel(); 171 return Addressee::homePhoneLabel();
171 case FieldImpl::BusinessPhone: 172 case FieldImpl::BusinessPhone:
172 return Addressee::businessPhoneLabel(); 173 return Addressee::businessPhoneLabel();
173 case FieldImpl::MobilePhone: 174 case FieldImpl::MobilePhone:
174 return Addressee::mobilePhoneLabel(); 175 return Addressee::mobilePhoneLabel();
175 case FieldImpl::MobileHomePhone: 176 case FieldImpl::MobileHomePhone:
176 return Addressee::mobileHomePhoneLabel(); 177 return Addressee::mobileHomePhoneLabel();
177 case FieldImpl::MobileWorkPhone: 178 case FieldImpl::MobileWorkPhone:
178 return Addressee::mobileWorkPhoneLabel(); 179 return Addressee::mobileWorkPhoneLabel();
179 case FieldImpl::HomeFax: 180 case FieldImpl::HomeFax:
180 return Addressee::homeFaxLabel(); 181 return Addressee::homeFaxLabel();
181 case FieldImpl::BusinessFax: 182 case FieldImpl::BusinessFax:
182 return Addressee::businessFaxLabel(); 183 return Addressee::businessFaxLabel();
183 case FieldImpl::CarPhone: 184 case FieldImpl::CarPhone:
184 return Addressee::carPhoneLabel(); 185 return Addressee::carPhoneLabel();
185 case FieldImpl::Isdn: 186 case FieldImpl::Isdn:
186 return Addressee::isdnLabel(); 187 return Addressee::isdnLabel();
187 case FieldImpl::Pager: 188 case FieldImpl::Pager:
188 return Addressee::pagerLabel(); 189 return Addressee::pagerLabel();
189 case FieldImpl::Email: 190 case FieldImpl::Email:
190 return Addressee::emailLabel(); 191 return Addressee::emailLabel();
191 case FieldImpl::Mailer: 192 case FieldImpl::Mailer:
192 return Addressee::mailerLabel(); 193 return Addressee::mailerLabel();
193 case FieldImpl::Title: 194 case FieldImpl::Title:
194 return Addressee::titleLabel(); 195 return Addressee::titleLabel();
195 case FieldImpl::Role: 196 case FieldImpl::Role:
196 return Addressee::roleLabel(); 197 return Addressee::roleLabel();
197 case FieldImpl::Organization: 198 case FieldImpl::Organization:
198 return Addressee::organizationLabel(); 199 return Addressee::organizationLabel();
199 case FieldImpl::Note: 200 case FieldImpl::Note:
200 return Addressee::noteLabel(); 201 return Addressee::noteLabel();
201 case FieldImpl::Url: 202 case FieldImpl::Url:
202 return Addressee::urlLabel(); 203 return Addressee::urlLabel();
203 case FieldImpl::Resource: 204 case FieldImpl::Resource:
204 return Addressee::resourceLabel(); 205 return Addressee::resourceLabel();
205 case FieldImpl::Category: 206 case FieldImpl::Category:
206 return Addressee::categoryLabel(); 207 return Addressee::categoryLabel();
207 case FieldImpl::Sip: 208 case FieldImpl::Sip:
208 return Addressee::sipLabel(); 209 return Addressee::sipLabel();
210 case FieldImpl::OtherPhone:
211 return Addressee::otherPhoneLabel();
209 case FieldImpl::CustomField: 212 case FieldImpl::CustomField:
210 return mImpl->label(); 213 return mImpl->label();
211 default: 214 default:
212 return i18n("Unknown Field"); 215 return i18n("Unknown Field");
213 } 216 }
214} 217}
215 218
216int Field::category() 219int Field::category()
217{ 220{
218 return mImpl->category(); 221 return mImpl->category();
219} 222}
220 223
221QString Field::categoryLabel( int category ) 224QString Field::categoryLabel( int category )
222{ 225{
223 switch ( category ) { 226 switch ( category ) {
224 case All: 227 case All:
225 return i18n("All"); 228 return i18n("All");
226 case Frequent: 229 case Frequent:
227 return i18n("Frequent"); 230 return i18n("Frequent");
228 case Address: 231 case Address:
229 return i18n("Address"); 232 return i18n("Address");
230 case Email: 233 case Email:
231 return i18n("Email"); 234 return i18n("Email");
232 case Personal: 235 case Personal:
233 return i18n("Personal"); 236 return i18n("Personal");
234 case Organization: 237 case Organization:
235 return i18n("Organization"); 238 return i18n("Organization");
236 case CustomCategory: 239 case CustomCategory:
237 return i18n("Custom"); 240 return i18n("Custom");
238 default: 241 default:
239 return i18n("Undefined"); 242 return i18n("Undefined");
240 } 243 }
241} 244}
242 245
243QString Field::value( const KABC::Addressee &a ) 246QString Field::value( const KABC::Addressee &a )
244{ 247{
245 switch ( mImpl->fieldId() ) { 248 switch ( mImpl->fieldId() ) {
246 case FieldImpl::FormattedName: 249 case FieldImpl::FormattedName:
247 return a.formattedName(); 250 return a.formattedName();
248 case FieldImpl::FamilyName: 251 case FieldImpl::FamilyName:
249 return a.familyName(); 252 return a.familyName();
250 case FieldImpl::GivenName: 253 case FieldImpl::GivenName:
251 return a.givenName(); 254 return a.givenName();
252 case FieldImpl::AdditionalName: 255 case FieldImpl::AdditionalName:
253 return a.additionalName(); 256 return a.additionalName();
254 case FieldImpl::Prefix: 257 case FieldImpl::Prefix:
255 return a.prefix(); 258 return a.prefix();
256 case FieldImpl::Suffix: 259 case FieldImpl::Suffix:
257 return a.suffix(); 260 return a.suffix();
258 case FieldImpl::NickName: 261 case FieldImpl::NickName:
259 return a.nickName(); 262 return a.nickName();
260 case FieldImpl::Mailer: 263 case FieldImpl::Mailer:
261 return a.mailer(); 264 return a.mailer();
262 case FieldImpl::Title: 265 case FieldImpl::Title:
263 return a.title(); 266 return a.title();
264 case FieldImpl::Role: 267 case FieldImpl::Role:
265 return a.role(); 268 return a.role();
266 case FieldImpl::Organization: 269 case FieldImpl::Organization:
267 return a.organization(); 270 return a.organization();
268 case FieldImpl::Note: 271 case FieldImpl::Note:
269 return a.note(); 272 return a.note();
270 case FieldImpl::Email: 273 case FieldImpl::Email:
271 return a.preferredEmail(); 274 return a.preferredEmail();
272 case FieldImpl::Birthday: 275 case FieldImpl::Birthday:
273 if ( a.birthday().isValid() ) { 276 if ( a.birthday().isValid() ) {
274//the generated code had the following format: return a.birthday().date().toString( Qt::ISODate ); 277//the generated code had the following format: return a.birthday().date().toString( Qt::ISODate );
275// But Qt::IsoDate was not specified. 278// But Qt::IsoDate was not specified.
276// QString _oldFormat = KGlobal::locale()->dateFormat(); 279// QString _oldFormat = KGlobal::locale()->dateFormat();
277// KGlobal::locale()->setDateFormat("%Y-%m-%d"); // = Qt::ISODate 280// KGlobal::locale()->setDateFormat("%Y-%m-%d"); // = Qt::ISODate
278 QString dt = KGlobal::locale()->formatDate(a.birthday().date(), false, KLocale::ISODate); 281 QString dt = KGlobal::locale()->formatDate(a.birthday().date(), false, KLocale::ISODate);
279// KGlobal::locale()->setDateFormat(_oldFormat); 282// KGlobal::locale()->setDateFormat(_oldFormat);
280 return dt; 283 return dt;
281 } 284 }
282 else 285 else
283 return QString::null; 286 return QString::null;
284 case FieldImpl::Url: 287 case FieldImpl::Url:
285 return a.url().prettyURL(); 288 return a.url().prettyURL();
286//US 289//US
287 case FieldImpl::Resource: 290 case FieldImpl::Resource:
288 return a.resource()->resourceName(); 291 return a.resource()->resourceName();
289 case FieldImpl::Category: 292 case FieldImpl::Category:
290 return a.categories().join(","); 293 return a.categories().join(",");
291 case FieldImpl::HomePhone: 294 case FieldImpl::HomePhone:
292 return a.phoneNumber( PhoneNumber::Home| PhoneNumber::Pref ).number(); 295 return a.phoneNumber( PhoneNumber::Home| PhoneNumber::Pref ).number();
293 case FieldImpl::BusinessPhone: 296 case FieldImpl::BusinessPhone:
294 return a.phoneNumber( PhoneNumber::Work| PhoneNumber::Pref ).number(); 297 return a.phoneNumber( PhoneNumber::Work| PhoneNumber::Pref ).number();
295 case FieldImpl::MobilePhone: 298 case FieldImpl::MobilePhone:
296 return a.phoneNumber( PhoneNumber::Cell ).number(); 299 return a.phoneNumber( PhoneNumber::Cell ).number();
297 case FieldImpl::MobileWorkPhone: 300 case FieldImpl::MobileWorkPhone:
298 return a.phoneNumber( PhoneNumber::Car ).number(); 301 return a.phoneNumber( PhoneNumber::Car ).number();
299 case FieldImpl::MobileHomePhone: 302 case FieldImpl::MobileHomePhone:
300 return a.phoneNumber( PhoneNumber::Cell ).number(); 303 return a.phoneNumber( PhoneNumber::Cell ).number();
301 case FieldImpl::HomeFax: 304 case FieldImpl::HomeFax:
302 return a.phoneNumber( PhoneNumber::Home | PhoneNumber::Fax ).number(); 305 return a.phoneNumber( PhoneNumber::Home | PhoneNumber::Fax ).number();
303 case FieldImpl::BusinessFax: 306 case FieldImpl::BusinessFax:
304 return a.phoneNumber( PhoneNumber::Work | PhoneNumber::Fax ).number(); 307 return a.phoneNumber( PhoneNumber::Work | PhoneNumber::Fax ).number();
305 case FieldImpl::CarPhone: 308 case FieldImpl::CarPhone:
306 return a.phoneNumber( PhoneNumber::Car ).number(); 309 return a.phoneNumber( PhoneNumber::Car ).number();
307 case FieldImpl::Isdn: 310 case FieldImpl::Isdn:
308 return a.phoneNumber( PhoneNumber::Isdn ).number(); 311 return a.phoneNumber( PhoneNumber::Isdn ).number();
309 case FieldImpl::Pager: 312 case FieldImpl::Pager:
310 return a.phoneNumber( PhoneNumber::Pager ).number(); 313 return a.phoneNumber( PhoneNumber::Pager ).number();
311 case FieldImpl::Sip: 314 case FieldImpl::Sip:
312 return a.phoneNumber( PhoneNumber::Pcs | PhoneNumber::Pref ).number(); 315 return a.phoneNumber( PhoneNumber::Pcs | PhoneNumber::Pref ).number();
316 case FieldImpl::OtherPhone:
317 return a.phoneNumber( PhoneNumber::Voice ).number();
313 case FieldImpl::HomeAddressStreet: 318 case FieldImpl::HomeAddressStreet:
314 return a.address( Address::Home ).street(); 319 return a.address( Address::Home ).street();
315 case FieldImpl::HomeAddressLocality: 320 case FieldImpl::HomeAddressLocality:
316 return a.address( Address::Home ).locality(); 321 return a.address( Address::Home ).locality();
317 case FieldImpl::HomeAddressRegion: 322 case FieldImpl::HomeAddressRegion:
318 return a.address( Address::Home ).region(); 323 return a.address( Address::Home ).region();
319 case FieldImpl::HomeAddressPostalCode: 324 case FieldImpl::HomeAddressPostalCode:
320 return a.address( Address::Home ).postalCode(); 325 return a.address( Address::Home ).postalCode();
321 case FieldImpl::HomeAddressCountry: 326 case FieldImpl::HomeAddressCountry:
322 return a.address( Address::Home ).country(); 327 return a.address( Address::Home ).country();
323 case FieldImpl::BusinessAddressStreet: 328 case FieldImpl::BusinessAddressStreet:
324 return a.address( Address::Work ).street(); 329 return a.address( Address::Work ).street();
325 case FieldImpl::BusinessAddressLocality: 330 case FieldImpl::BusinessAddressLocality:
326 return a.address( Address::Work ).locality(); 331 return a.address( Address::Work ).locality();
327 case FieldImpl::BusinessAddressRegion: 332 case FieldImpl::BusinessAddressRegion:
328 return a.address( Address::Work ).region(); 333 return a.address( Address::Work ).region();
329 case FieldImpl::BusinessAddressPostalCode: 334 case FieldImpl::BusinessAddressPostalCode:
330 return a.address( Address::Work ).postalCode(); 335 return a.address( Address::Work ).postalCode();
331 case FieldImpl::BusinessAddressCountry: 336 case FieldImpl::BusinessAddressCountry:
332 return a.address( Address::Work ).country(); 337 return a.address( Address::Work ).country();
333 case FieldImpl::CustomField: 338 case FieldImpl::CustomField:
334 return a.custom( mImpl->app(), mImpl->key() ); 339 return a.custom( mImpl->app(), mImpl->key() );
335 default: 340 default:
336 return QString::null; 341 return QString::null;
337 } 342 }
338} 343}
339 344
340bool Field::setValue( KABC::Addressee &a, const QString &value ) 345bool Field::setValue( KABC::Addressee &a, const QString &value )
341{ 346{
342 switch ( mImpl->fieldId() ) { 347 switch ( mImpl->fieldId() ) {
343 case FieldImpl::FormattedName: 348 case FieldImpl::FormattedName:
344 a.setFormattedName( value ); 349 a.setFormattedName( value );
345 return true; 350 return true;
346 case FieldImpl::FamilyName: 351 case FieldImpl::FamilyName:
347 a.setFamilyName( value ); 352 a.setFamilyName( value );
348 return true; 353 return true;
349 case FieldImpl::GivenName: 354 case FieldImpl::GivenName:
350 a.setGivenName( value ); 355 a.setGivenName( value );
351 return true; 356 return true;
352 case FieldImpl::AdditionalName: 357 case FieldImpl::AdditionalName:
353 a.setAdditionalName( value ); 358 a.setAdditionalName( value );
354 return true; 359 return true;
355 case FieldImpl::Prefix: 360 case FieldImpl::Prefix:
356 a.setPrefix( value ); 361 a.setPrefix( value );
357 return true; 362 return true;
358 case FieldImpl::Suffix: 363 case FieldImpl::Suffix:
359 a.setSuffix( value ); 364 a.setSuffix( value );
360 return true; 365 return true;
361 case FieldImpl::NickName: 366 case FieldImpl::NickName:
362 a.setNickName( value ); 367 a.setNickName( value );
363 return true; 368 return true;
364 case FieldImpl::Mailer: 369 case FieldImpl::Mailer:
365 a.setMailer( value ); 370 a.setMailer( value );
366 return true; 371 return true;
367 case FieldImpl::Title: 372 case FieldImpl::Title:
368 a.setTitle( value ); 373 a.setTitle( value );
369 return true; 374 return true;
370 case FieldImpl::Role: 375 case FieldImpl::Role:
371 a.setRole( value ); 376 a.setRole( value );
372 return true; 377 return true;
373 case FieldImpl::Organization: 378 case FieldImpl::Organization:
374 a.setOrganization( value ); 379 a.setOrganization( value );
375 return true; 380 return true;
376 case FieldImpl::Note: 381 case FieldImpl::Note:
@@ -381,128 +386,129 @@ bool Field::setValue( KABC::Addressee &a, const QString &value )
381//the generated code had the following format: return a.setBirthday( QDate::fromString( value, Qt::ISODate ) ); 386//the generated code had the following format: return a.setBirthday( QDate::fromString( value, Qt::ISODate ) );
382// But Qt::IsoDate and QDate::fromString was not specified. Do I have the wrong QT version ? 387// But Qt::IsoDate and QDate::fromString was not specified. Do I have the wrong QT version ?
383 { 388 {
384 QDate dt = KGlobal::locale()->readDate( value, "%Y-%m-%d"); // = Qt::ISODate 389 QDate dt = KGlobal::locale()->readDate( value, "%Y-%m-%d"); // = Qt::ISODate
385 a.setBirthday(dt); 390 a.setBirthday(dt);
386 } 391 }
387 return true; 392 return true;
388 case FieldImpl::CustomField: 393 case FieldImpl::CustomField:
389 a.insertCustom( mImpl->app(), mImpl->key(), value ); 394 a.insertCustom( mImpl->app(), mImpl->key(), value );
390//US never copy the resourcename back to the adressee. 395//US never copy the resourcename back to the adressee.
391 case FieldImpl::Resource: 396 case FieldImpl::Resource:
392 default: 397 default:
393 return false; 398 return false;
394 } 399 }
395} 400}
396 401
397bool Field::isCustom() 402bool Field::isCustom()
398{ 403{
399 return mImpl->fieldId() == FieldImpl::CustomField; 404 return mImpl->fieldId() == FieldImpl::CustomField;
400} 405}
401 406
402Field::List Field::allFields() 407Field::List Field::allFields()
403{ 408{
404 if ( mAllFields.isEmpty() ) { 409 if ( mAllFields.isEmpty() ) {
405 createField( FieldImpl::FormattedName, Frequent ); 410 createField( FieldImpl::FormattedName, Frequent );
406 createField( FieldImpl::FamilyName, Frequent ); 411 createField( FieldImpl::FamilyName, Frequent );
407 createField( FieldImpl::GivenName, Frequent ); 412 createField( FieldImpl::GivenName, Frequent );
408 createField( FieldImpl::AdditionalName ); 413 createField( FieldImpl::AdditionalName );
409 createField( FieldImpl::Prefix ); 414 createField( FieldImpl::Prefix );
410 createField( FieldImpl::Suffix ); 415 createField( FieldImpl::Suffix );
411 createField( FieldImpl::NickName, Personal ); 416 createField( FieldImpl::NickName, Personal );
412 createField( FieldImpl::Birthday, Personal ); 417 createField( FieldImpl::Birthday, Personal );
413 createField( FieldImpl::Category ); 418 createField( FieldImpl::Category );
414 createField( FieldImpl::HomeAddressStreet, Address|Personal ); 419 createField( FieldImpl::HomeAddressStreet, Address|Personal );
415 createField( FieldImpl::HomeAddressLocality, Address|Personal ); 420 createField( FieldImpl::HomeAddressLocality, Address|Personal );
416 createField( FieldImpl::HomeAddressRegion, Address|Personal ); 421 createField( FieldImpl::HomeAddressRegion, Address|Personal );
417 createField( FieldImpl::HomeAddressPostalCode, Address|Personal ); 422 createField( FieldImpl::HomeAddressPostalCode, Address|Personal );
418 createField( FieldImpl::HomeAddressCountry, Address|Personal ); 423 createField( FieldImpl::HomeAddressCountry, Address|Personal );
419 createField( FieldImpl::HomeAddressLabel, Address|Personal ); 424 createField( FieldImpl::HomeAddressLabel, Address|Personal );
420 createField( FieldImpl::BusinessAddressStreet, Address|Organization ); 425 createField( FieldImpl::BusinessAddressStreet, Address|Organization );
421 createField( FieldImpl::BusinessAddressLocality, Address|Organization ); 426 createField( FieldImpl::BusinessAddressLocality, Address|Organization );
422 createField( FieldImpl::BusinessAddressRegion, Address|Organization ); 427 createField( FieldImpl::BusinessAddressRegion, Address|Organization );
423 createField( FieldImpl::BusinessAddressPostalCode, Address|Organization ); 428 createField( FieldImpl::BusinessAddressPostalCode, Address|Organization );
424 createField( FieldImpl::BusinessAddressCountry, Address|Organization ); 429 createField( FieldImpl::BusinessAddressCountry, Address|Organization );
425 createField( FieldImpl::BusinessAddressLabel, Address|Organization ); 430 createField( FieldImpl::BusinessAddressLabel, Address|Organization );
426 createField( FieldImpl::HomePhone, Personal|Frequent ); 431 createField( FieldImpl::HomePhone, Personal|Frequent );
427 createField( FieldImpl::BusinessPhone, Organization|Frequent ); 432 createField( FieldImpl::BusinessPhone, Organization|Frequent );
428 createField( FieldImpl::MobilePhone, Frequent ); 433 createField( FieldImpl::MobilePhone, Frequent );
429 createField( FieldImpl::MobileHomePhone, Frequent ); 434 createField( FieldImpl::MobileHomePhone, Frequent );
430 createField( FieldImpl::MobileWorkPhone, Frequent ); 435 createField( FieldImpl::MobileWorkPhone, Frequent );
431 createField( FieldImpl::HomeFax ); 436 createField( FieldImpl::HomeFax );
432 createField( FieldImpl::BusinessFax ); 437 createField( FieldImpl::BusinessFax );
433 createField( FieldImpl::CarPhone ); 438 createField( FieldImpl::CarPhone );
434 createField( FieldImpl::Isdn ); 439 createField( FieldImpl::Isdn );
435 createField( FieldImpl::Pager ); 440 createField( FieldImpl::Pager );
436 createField( FieldImpl::Email, Email|Frequent ); 441 createField( FieldImpl::Email, Email|Frequent );
437 createField( FieldImpl::Mailer, Email ); 442 createField( FieldImpl::Mailer, Email );
438 createField( FieldImpl::Title, Organization ); 443 createField( FieldImpl::Title, Organization );
439 createField( FieldImpl::Role, Organization ); 444 createField( FieldImpl::Role, Organization );
440 createField( FieldImpl::Organization, Organization ); 445 createField( FieldImpl::Organization, Organization );
441 createField( FieldImpl::Note ); 446 createField( FieldImpl::Note );
442 createField( FieldImpl::Url ); 447 createField( FieldImpl::Url );
443 createField( FieldImpl::Resource ); 448 createField( FieldImpl::Resource );
444 createField( FieldImpl::Sip ); 449 createField( FieldImpl::Sip );
450 createField( FieldImpl::OtherPhone );
445 } 451 }
446 452
447 return mAllFields; 453 return mAllFields;
448} 454}
449 455
450Field::List Field::defaultFields() 456Field::List Field::defaultFields()
451{ 457{
452 if ( mDefaultFields.isEmpty() ) { 458 if ( mDefaultFields.isEmpty() ) {
453 createDefaultField( FieldImpl::GivenName ); 459 createDefaultField( FieldImpl::GivenName );
454 createDefaultField( FieldImpl::FamilyName ); 460 createDefaultField( FieldImpl::FamilyName );
455 createDefaultField( FieldImpl::Email ); 461 createDefaultField( FieldImpl::Email );
456 } 462 }
457 463
458 return mDefaultFields; 464 return mDefaultFields;
459} 465}
460 466
461void Field::createField( int id, int category ) 467void Field::createField( int id, int category )
462{ 468{
463 mAllFields.append( new Field( new FieldImpl( id, category ) ) ); 469 mAllFields.append( new Field( new FieldImpl( id, category ) ) );
464} 470}
465 471
466void Field::createDefaultField( int id, int category ) 472void Field::createDefaultField( int id, int category )
467{ 473{
468 mDefaultFields.append( new Field( new FieldImpl( id, category ) ) ); 474 mDefaultFields.append( new Field( new FieldImpl( id, category ) ) );
469} 475}
470 476
471void Field::deleteFields() 477void Field::deleteFields()
472{ 478{
473 Field::List::ConstIterator it; 479 Field::List::ConstIterator it;
474 480
475 for( it = mAllFields.begin(); it != mAllFields.end(); ++it ) { 481 for( it = mAllFields.begin(); it != mAllFields.end(); ++it ) {
476 delete (*it); 482 delete (*it);
477 } 483 }
478 mAllFields.clear(); 484 mAllFields.clear();
479 485
480 for( it = mDefaultFields.begin(); it != mDefaultFields.end(); ++it ) { 486 for( it = mDefaultFields.begin(); it != mDefaultFields.end(); ++it ) {
481 delete (*it); 487 delete (*it);
482 } 488 }
483 mDefaultFields.clear(); 489 mDefaultFields.clear();
484 490
485 for( it = mCustomFields.begin(); it != mCustomFields.end(); ++it ) { 491 for( it = mCustomFields.begin(); it != mCustomFields.end(); ++it ) {
486 delete (*it); 492 delete (*it);
487 } 493 }
488 mCustomFields.clear(); 494 mCustomFields.clear();
489} 495}
490 496
491void Field::saveFields( const QString &identifier, 497void Field::saveFields( const QString &identifier,
492 const Field::List &fields ) 498 const Field::List &fields )
493{ 499{
494 KConfig *cfg = KGlobal::config(); 500 KConfig *cfg = KGlobal::config();
495 KConfigGroupSaver( cfg, "KABCFields" ); 501 KConfigGroupSaver( cfg, "KABCFields" );
496 saveFields( cfg, identifier, fields ); 502 saveFields( cfg, identifier, fields );
497} 503}
498 504
499void Field::saveFields( KConfig *cfg, const QString &identifier, 505void Field::saveFields( KConfig *cfg, const QString &identifier,
500 const Field::List &fields ) 506 const Field::List &fields )
501{ 507{
502 QValueList<int> fieldIds; 508 QValueList<int> fieldIds;
503 509
504//US 510//US
505// qDebug("Field::saveFields to %s %s", cfg->getFileName().latin1(), identifier.latin1()); 511// qDebug("Field::saveFields to %s %s", cfg->getFileName().latin1(), identifier.latin1());
506 512
507 int custom = 0; 513 int custom = 0;
508 Field::List::ConstIterator it; 514 Field::List::ConstIterator it;