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; }
85 int category() {
return mCategory; }
87 QString label() {
return mLabel; }
88 QString key() {
return mKey; }
89 QString app() {
return mApp; }
108Field::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();
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:
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 );
Postal address information.
QString street() const
Returns the street.
QString postOfficeBox() const
Returns the post office box.
QString country() const
Returns the country.
QString region() const
Returns the region.
QString locality() const
Returns the locality.
QString postalCode() const
Returns the postal code.
static QString businessAddressRegionLabel()
Return translated label for businessAddressRegion field.
void setMailer(const QString &mailer)
Set mail client.
static QString businessAddressPostOfficeBoxLabel()
Return translated label for businessAddressPostOfficeBox field.
static QString homeAddressPostalCodeLabel()
Return translated label for homeAddressPostalCode field.
static QString givenNameLabel()
Return translated label for givenName field.
static QString noteLabel()
Return translated label for note field.
void setAdditionalName(const QString &additionalName)
Set additional names.
QString familyName() const
Return family name.
QString mailer() const
Return mail client.
static QString additionalNameLabel()
Return translated label for additionalName field.
void setBirthday(const QDateTime &birthday)
Set birthday.
void setOrganization(const QString &organization)
Set organization.
static QString organizationLabel()
Return translated label for organization field.
static QString homeAddressPostOfficeBoxLabel()
Return translated label for homeAddressPostOfficeBox field.
void setPrefix(const QString &prefix)
Set honorific prefixes.
QString nickName() const
Return nick name.
void insertCustom(const QString &app, const QString &name, const QString &value)
Insert custom entry.
static QString businessAddressLabelLabel()
Return translated label for businessAddressLabel field.
KUrl url() const
Return homepage.
static QString businessAddressStreetLabel()
Return translated label for businessAddressStreet field.
static QString businessAddressLocalityLabel()
Return translated label for businessAddressLocality field.
static QString mailerLabel()
Return translated label for mailer field.
QString custom(const QString &app, const QString &name) const
Return value of custom entry, identified by app and entry name.
QString prefix() const
Return honorific prefixes.
QString organization() const
Return organization.
static QString homeAddressCountryLabel()
Return translated label for homeAddressCountry field.
void setSuffix(const QString &suffix)
Set honorific suffixes.
static QString homePhoneLabel()
Return translated label for homePhone field.
static QString homeAddressLabelLabel()
Return translated label for homeAddressLabel field.
static QString urlLabel()
Return translated label for url field.
static QString businessAddressPostalCodeLabel()
Return translated label for businessAddressPostalCode field.
static QString carPhoneLabel()
Return translated label for carPhone field.
QString suffix() const
Return honorific suffixes.
Address address(Address::Type type) const
Return address, which matches the given type.
static QString titleLabel()
Return translated label for title field.
void setGivenName(const QString &givenName)
Set given name.
static QString prefixLabel()
Return translated label for prefix field.
QString note() const
Return note.
static QString homeAddressStreetLabel()
Return translated label for homeAddressStreet field.
PhoneNumber phoneNumber(PhoneNumber::Type type) const
Return phone number, which matches the given type.
static QString pagerLabel()
Return translated label for pager field.
QDateTime birthday() const
Return birthday.
void setNickName(const QString &nickName)
Set nick name.
QString additionalName() const
Return additional names.
void setDepartment(const QString &department)
Set department.
QString preferredEmail() const
Return preferred email address.
QString role() const
Return role.
static QString homeFaxLabel()
Return translated label for homeFax field.
QString title() const
Return title.
void setNote(const QString ¬e)
Set note.
QString formattedName() const
Return formatted name.
static QString suffixLabel()
Return translated label for suffix field.
static QString homeAddressLocalityLabel()
Return translated label for homeAddressLocality field.
static QString roleLabel()
Return translated label for role field.
static QString birthdayLabel()
Return translated label for birthday field.
void setRole(const QString &role)
Set role.
static QString businessPhoneLabel()
Return translated label for businessPhone field.
QString givenName() const
Return given name.
void setFormattedName(const QString &formattedName)
Set formatted name.
static QString businessAddressCountryLabel()
Return translated label for businessAddressCountry field.
static QString homeAddressRegionLabel()
Return translated label for homeAddressRegion field.
static QString departmentLabel()
Return translated label for department field.
static QString familyNameLabel()
Return translated label for familyName field.
void setFamilyName(const QString &familyName)
Set family name.
void setTitle(const QString &title)
Set title.
static QString nickNameLabel()
Return translated label for nickName field.
static QString isdnLabel()
Return translated label for isdn field.
QString department() const
Return department.
static QString mobilePhoneLabel()
Return translated label for mobilePhone field.
static QString formattedNameLabel()
Return translated label for formattedName field.
PhoneNumber::List phoneNumbers() const
Return list of all phone numbers.
static QString emailLabel()
Return translated label for email field.
static QString businessFaxLabel()
Return translated label for businessFax field.
Represents a field in the Addressbook.
static void deleteFields()
Delete all fields from list.
static Field * createCustomField(const QString &label, int category, const QString &key, const QString &app)
Creates a custom field.
virtual QString value(const KABC::Addressee &)
Returns a string representation of the value the field has in the given Addressee.
static Field::List restoreFields(const KConfigGroup &cfg, const QString &identifier)
Load the field settings from a config file.
static void saveFields(KConfigGroup &cfg, const QString &identifier, const Field::List &fields)
Save the field settings to a config file.
QString sortKey(const KABC::Addressee &)
Returns a string, that can be used for sorting.
virtual bool equals(Field *field)
Returns, if the field is equal with field.
static Field::List defaultFields()
Returns a list of the default fields.
virtual bool setValue(KABC::Addressee &, const QString &)
Sets the value of the field in the given Addressee.
virtual int category()
Returns the ored categories the field belongs to.
static void createDefaultField(int id, int category=0)
QList< Field * > List
This type is used for a list of fields.
static Field::List allFields()
Returns a list of all fields.
virtual QString label()
Returns the translated label for this field.
static QString categoryLabel(int category)
Returns the translated label for category.
@ Frequent
Frequently used fields.
@ Email
Fields which store information about the e-mail contact, such as e-mail address or mail client.
@ CustomCategory
Custom (user-defined) fields.
@ Organization
Fields about the organization, such as Business Address fields, Department, Profession,...
@ Personal
Personal fields, such as Birthday, Home Address fields, IM Address, etc.
@ Address
Fields which belong to the address, such as Street, City, Zip, etc.
virtual bool isCustom()
Returns, if the field is a user-defined field.
static void createField(int id, int category=0)
QList< PhoneNumber > List
List of phone numbers.
QString number() const
Returns the phone number.
Class that holds a Calendar Url (FBURL/CALADRURI/CALURI)