22 #include <klocalizedstring.h>
25 #include <kconfiggroup.h>
34 Private(
int fieldId,
int category = 0,
35 const QString &
label = QString(),
36 const QString &key = QString(),
37 const QString &app = QString() )
38 : mFieldId( fieldId ), mCategory(
category ), mLabel(
label ),
39 mKey( key ), mApp( app ) {}
53 HomeAddressPostOfficeBox,
56 HomeAddressPostalCode,
59 BusinessAddressStreet,
60 BusinessAddressPostOfficeBox,
61 BusinessAddressLocality,
62 BusinessAddressRegion,
63 BusinessAddressPostalCode,
64 BusinessAddressCountry,
84 int fieldId() {
return mFieldId; }
87 QString
label() {
return mLabel; }
88 QString key() {
return mKey; }
89 QString app() {
return mApp; }
108 Field::Field( Private *p )
120 switch ( d->fieldId() ) {
121 case Private::FormattedName:
123 case Private::FamilyName:
125 case Private::GivenName:
127 case Private::AdditionalName:
129 case Private::Prefix:
131 case Private::Suffix:
133 case Private::NickName:
135 case Private::Birthday:
137 case Private::HomeAddressStreet:
139 case Private::HomeAddressPostOfficeBox:
141 case Private::HomeAddressLocality:
143 case Private::HomeAddressRegion:
145 case Private::HomeAddressPostalCode:
147 case Private::HomeAddressCountry:
149 case Private::HomeAddressLabel:
151 case Private::BusinessAddressStreet:
153 case Private::BusinessAddressPostOfficeBox:
155 case Private::BusinessAddressLocality:
157 case Private::BusinessAddressRegion:
159 case Private::BusinessAddressPostalCode:
161 case Private::BusinessAddressCountry:
163 case Private::BusinessAddressLabel:
165 case Private::HomePhone:
167 case Private::BusinessPhone:
169 case Private::MobilePhone:
171 case Private::HomeFax:
173 case Private::BusinessFax:
175 case Private::CarPhone:
183 case Private::Mailer:
189 case Private::Organization:
191 case Private::Department:
197 case Private::CustomField:
200 return i18n(
"Unknown Field" );
206 return d->category();
211 switch ( category ) {
213 return i18n(
"All" );
215 return i18n(
"Frequent" );
217 return i18nc(
"street/postal",
"Address" );
219 return i18n(
"Email" );
221 return i18n(
"Personal" );
223 return i18n(
"Organization" );
225 return i18n(
"Custom" );
227 return i18n(
"Undefined" );
233 switch ( d->fieldId() ) {
234 case Private::FormattedName:
236 case Private::FamilyName:
238 case Private::GivenName:
240 case Private::AdditionalName:
242 case Private::Prefix:
244 case Private::Suffix:
246 case Private::NickName:
248 case Private::Mailer:
254 case Private::Organization:
256 case Private::Department:
262 case Private::Birthday:
264 return a.
birthday().date().toString( Qt::ISODate );
268 return a.
url().prettyUrl();
269 case Private::HomePhone:
271 PhoneNumber::List::ConstIterator it;
276 for ( it = list.begin(); it != list.end(); ++it ) {
278 return ( *it ).number();
286 for ( it = list.begin(); it != list.end(); ++it ) {
288 return ( *it ).number();
295 case Private::BusinessPhone:
297 PhoneNumber::List::ConstIterator it;
302 for ( it = list.begin(); it != list.end(); ++it ) {
304 return ( *it ).number();
312 for ( it = list.begin(); it != list.end(); ++it ) {
314 return ( *it ).number();
321 case Private::MobilePhone:
323 case Private::HomeFax:
325 case Private::BusinessFax:
327 case Private::CarPhone:
333 case Private::HomeAddressStreet:
335 case Private::HomeAddressPostOfficeBox:
337 case Private::HomeAddressLocality:
339 case Private::HomeAddressRegion:
341 case Private::HomeAddressPostalCode:
343 case Private::HomeAddressCountry:
345 case Private::BusinessAddressStreet:
347 case Private::BusinessAddressPostOfficeBox:
349 case Private::BusinessAddressLocality:
351 case Private::BusinessAddressRegion:
353 case Private::BusinessAddressPostalCode:
355 case Private::BusinessAddressCountry:
357 case Private::CustomField:
358 return a.
custom( d->app(), d->key() );
366 switch ( d->fieldId() ) {
367 case Private::FormattedName:
370 case Private::FamilyName:
373 case Private::GivenName:
376 case Private::AdditionalName:
379 case Private::Prefix:
382 case Private::Suffix:
385 case Private::NickName:
388 case Private::Mailer:
397 case Private::Organization:
400 case Private::Department:
406 case Private::Birthday:
407 a.
setBirthday( QDateTime::fromString( value, Qt::ISODate ) );
409 case Private::CustomField:
419 switch ( d->fieldId() ) {
420 case Private::FormattedName:
422 case Private::FamilyName:
424 case Private::GivenName:
426 case Private::AdditionalName:
428 case Private::Prefix:
430 case Private::Suffix:
432 case Private::NickName:
434 case Private::Mailer:
440 case Private::Organization:
442 case Private::Department:
446 case Private::Birthday:
450 key.sprintf(
"%02d-%02d", date.month(), date.day() );
453 return QLatin1String(
"00-00" );
455 return value( a ).toLower();
461 return d->fieldId() == Private::CustomField;
466 if ( Private::mAllFields.isEmpty() ) {
507 return Private::mAllFields;
512 if ( Private::mDefaultFields.isEmpty() ) {
517 return Private::mDefaultFields;
522 Private::mAllFields.append(
new Field(
new Private(
id, category ) ) );
527 Private::mDefaultFields.append(
new Field(
new Private(
id, category ) ) );
532 Field::List::ConstIterator it;
534 for ( it = Private::mAllFields.constBegin(); it != Private::mAllFields.constEnd(); ++it ) {
537 Private::mAllFields.clear();
539 for ( it = Private::mDefaultFields.constBegin(); it != Private::mDefaultFields.constEnd(); ++it ) {
542 Private::mDefaultFields.clear();
544 for ( it = Private::mCustomFields.constBegin(); it != Private::mCustomFields.constEnd(); ++it ) {
547 Private::mCustomFields.clear();
553 KConfigGroup cg( KGlobal::config(),
"KABCFields" );
564 Field::List::ConstIterator it;
565 for ( it = fields.begin(); it != fields.end(); ++it ) {
566 fieldIds.append( ( *it )->d->fieldId() );
567 if ( ( *it )->isCustom() ) {
568 QStringList customEntry;
569 customEntry << ( *it )->d->label();
570 customEntry << ( *it )->d->key();
571 customEntry << ( *it )->d->app();
572 cfg.writeEntry( QLatin1String(
"KABC_CustomEntry_" ) + identifier + QLatin1Char(
'_' ) +
573 QString::number( custom++ ), customEntry );
577 cfg.writeEntry( identifier, fieldIds );
582 KConfigGroup cg( KGlobal::config(),
"KABCFields" );
589 const QList<int> fieldIds = cfg.readEntry( identifier,QList<int>() );
594 QList<int>::ConstIterator it;
595 for ( it = fieldIds.begin(); it != fieldIds.end(); ++it ) {
597 if ( ( *it ) == Private::CustomField ) {
598 QStringList customEntry = cfg.readEntry( QLatin1String(
"KABC_CustomEntry_" ) +
599 identifier + QLatin1Char(
'_' ) +
600 QString::number( custom++ ),QStringList() );
602 customEntry[ 1 ], customEntry[ 2 ] );
604 f =
new Private( *it );
606 fields.append(
new Field( f ) );
614 bool sameId = ( d->fieldId() == field->d->fieldId() );
616 if ( !sameId )
return false;
618 if ( d->fieldId() != Private::CustomField )
return true;
620 return d->key() == field->d->key();
624 const QString &key,
const QString &app )
626 Field *field =
new Field(
new Private( Private::CustomField,
629 Private::mCustomFields.append( field );