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