30 class Field::FieldImpl
33 FieldImpl(
int fieldId,
int category = 0,
34 const TQString &label = TQString::null,
35 const TQString &key = TQString::null,
36 const TQString &app = TQString::null )
37 : mFieldId( fieldId ), mCategory( category ), mLabel(
label ),
38 mKey(
key ), mApp( app ) {}
46 int fieldId() {
return mFieldId; }
47 int category() {
return mCategory; }
49 TQString
label() {
return mLabel; }
50 TQString
key() {
return mKey; }
51 TQString app() {
return mApp; }
63 Field::List Field::mAllFields;
64 Field::List Field::mDefaultFields;
65 Field::List Field::mCustomFields;
68 Field::Field( FieldImpl *impl )
78 TQString Field::label()
80 switch ( mImpl->fieldId() ) {
82 case FieldImpl::CustomField:
83 return mImpl->label();
85 return i18n(
"Unknown Field");
91 return mImpl->category();
94 TQString Field::categoryLabel(
int category )
100 return i18n(
"Frequent");
102 return i18n(
"street/postal",
"Address");
104 return i18n(
"Email");
106 return i18n(
"Personal");
108 return i18n(
"Organization");
110 return i18n(
"Custom");
112 return i18n(
"Undefined");
118 switch ( mImpl->fieldId() ) {
120 case FieldImpl::Email:
122 case FieldImpl::Birthday:
123 if ( a.birthday().isValid() )
124 return a.birthday().date().toString( Qt::ISODate );
126 return TQString::null;
128 return a.url().prettyURL();
129 case FieldImpl::HomePhone:
131 PhoneNumber::List::ConstIterator it;
135 const PhoneNumber::List list = a.
phoneNumbers( PhoneNumber::Home | PhoneNumber::Pref );
136 for ( it = list.begin(); it != list.end(); ++it )
137 if ( ((*it).type() & ~(PhoneNumber::Pref)) == PhoneNumber::Home )
138 return (*it).number();
143 const PhoneNumber::List list = a.
phoneNumbers( PhoneNumber::Home );
144 for ( it = list.begin(); it != list.end(); ++it )
145 if ( ((*it).type() & ~(PhoneNumber::Pref)) == PhoneNumber::Home )
146 return (*it).number();
149 return TQString::null;
151 case FieldImpl::BusinessPhone:
153 PhoneNumber::List::ConstIterator it;
157 const PhoneNumber::List list = a.
phoneNumbers( PhoneNumber::Work | PhoneNumber::Pref );
158 for ( it = list.begin(); it != list.end(); ++it )
159 if ( ((*it).type() & ~(PhoneNumber::Pref)) == PhoneNumber::Work )
160 return (*it).number();
165 const PhoneNumber::List list = a.
phoneNumbers( PhoneNumber::Work );
166 for ( it = list.begin(); it != list.end(); ++it )
167 if ( ((*it).type() & ~(PhoneNumber::Pref)) == PhoneNumber::Work )
168 return (*it).number();
171 return TQString::null;
173 case FieldImpl::MobilePhone:
175 case FieldImpl::HomeFax:
177 case FieldImpl::BusinessFax:
179 case FieldImpl::CarPhone:
181 case FieldImpl::Isdn:
183 case FieldImpl::Pager:
185 case FieldImpl::HomeAddressStreet:
187 case FieldImpl::HomeAddressLocality:
189 case FieldImpl::HomeAddressRegion:
191 case FieldImpl::HomeAddressPostalCode:
193 case FieldImpl::HomeAddressCountry:
195 case FieldImpl::HomeAddressLabel:
197 case FieldImpl::BusinessAddressStreet:
199 case FieldImpl::BusinessAddressLocality:
201 case FieldImpl::BusinessAddressRegion:
203 case FieldImpl::BusinessAddressPostalCode:
205 case FieldImpl::BusinessAddressCountry:
207 case FieldImpl::BusinessAddressLabel:
209 case FieldImpl::CustomField:
210 return a.
custom( mImpl->app(), mImpl->key() );
212 return TQString::null;
218 switch ( mImpl->fieldId() ) {
220 case FieldImpl::MobilePhone:
227 case FieldImpl::HomeFax:
234 case FieldImpl::BusinessFax:
241 case FieldImpl::CarPhone:
248 case FieldImpl::Isdn:
255 case FieldImpl::Pager:
262 case FieldImpl::HomeAddressStreet:
269 case FieldImpl::HomeAddressLocality:
276 case FieldImpl::HomeAddressRegion:
283 case FieldImpl::HomeAddressPostalCode:
290 case FieldImpl::HomeAddressCountry:
297 case FieldImpl::HomeAddressLabel:
304 case FieldImpl::BusinessAddressStreet:
311 case FieldImpl::BusinessAddressLocality:
318 case FieldImpl::BusinessAddressRegion:
325 case FieldImpl::BusinessAddressPostalCode:
332 case FieldImpl::BusinessAddressCountry:
339 case FieldImpl::BusinessAddressLabel:
346 case FieldImpl::Birthday:
347 a.setBirthday( TQT_TQDATE_OBJECT(TQDate::fromString( value, Qt::ISODate )) );
349 case FieldImpl::CustomField:
359 switch ( mImpl->fieldId() ) {
361 case FieldImpl::Birthday:
362 if ( a.birthday().isValid() ) {
363 TQDate date = TQT_TQDATE_OBJECT(a.birthday().date());
365 key.sprintf(
"%02d-%02d", date.month(), date.day() );
368 return TQString(
"00-00" );
370 return value( a ).lower();
374 bool Field::isCustom()
376 return mImpl->fieldId() == FieldImpl::CustomField;
379 Field::List Field::allFields()
381 if ( mAllFields.isEmpty() ) {
388 Field::List Field::defaultFields()
390 if ( mDefaultFields.isEmpty() ) {
391 createDefaultField( FieldImpl::FormattedName );
392 createDefaultField( FieldImpl::Email );
395 return mDefaultFields;
398 void Field::createField(
int id,
int category )
400 mAllFields.append(
new Field(
new FieldImpl(
id, category ) ) );
403 void Field::createDefaultField(
int id,
int category )
405 mDefaultFields.append(
new Field(
new FieldImpl(
id, category ) ) );
408 void Field::deleteFields()
410 Field::List::ConstIterator it;
412 for ( it = mAllFields.constBegin(); it != mAllFields.constEnd(); ++it ) {
417 for ( it = mDefaultFields.constBegin(); it != mDefaultFields.constEnd(); ++it ) {
420 mDefaultFields.clear();
422 for ( it = mCustomFields.constBegin(); it != mCustomFields.constEnd(); ++it ) {
425 mCustomFields.clear();
428 void Field::saveFields(
const TQString &identifier,
429 const Field::List &fields )
434 saveFields( cfg, identifier, fields );
437 void Field::saveFields(
KConfig *cfg,
const TQString &identifier,
438 const Field::List &fields )
440 TQValueList<int> fieldIds;
443 Field::List::ConstIterator it;
444 for( it = fields.begin(); it != fields.end(); ++it ) {
445 fieldIds.append( (*it)->mImpl->fieldId() );
446 if( (*it)->isCustom() ) {
447 TQStringList customEntry;
448 customEntry << (*it)->mImpl->label();
449 customEntry << (*it)->mImpl->key();
450 customEntry << (*it)->mImpl->app();
451 cfg->
writeEntry(
"KABC_CustomEntry_" + identifier +
"_" +
452 TQString::number( custom++ ), customEntry );
459 Field::List Field::restoreFields(
const TQString &identifier )
464 return restoreFields( cfg, identifier );
467 Field::List Field::restoreFields(
KConfig *cfg,
const TQString &identifier )
474 TQValueList<int>::ConstIterator it;
475 for( it = fieldIds.begin(); it != fieldIds.end(); ++it ) {
477 if ( (*it) == FieldImpl::CustomField ) {
478 TQStringList customEntry = cfg->
readListEntry(
"KABC_CustomEntry_" +
480 TQString::number( custom++ ) );
481 f =
new FieldImpl( *it, CustomCategory, customEntry[ 0 ],
482 customEntry[ 1 ], customEntry[ 2 ] );
484 f =
new FieldImpl( *it );
486 fields.append(
new Field( f ) );
492 bool Field::equals( Field *field )
494 bool sameId = ( mImpl->fieldId() == field->mImpl->fieldId() );
496 if ( !sameId )
return false;
498 if ( mImpl->fieldId() != FieldImpl::CustomField )
return true;
500 return mImpl->key() == field->mImpl->key();
503 Field *Field::createCustomField(
const TQString &label,
int category,
504 const TQString &key,
const TQString &app )
506 Field *field =
new Field(
new FieldImpl( FieldImpl::CustomField,
507 category | CustomCategory,
509 mCustomFields.append( field );