kde-playground/kdepim/kaddressbook/contactfields.cpp
2015-04-14 21:49:29 +00:00

707 lines
21 KiB
C++

/*
This file is part of KAddressBook.
Copyright (c) 2009 Tobias Koenig <tokoe@kde.org>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
#include "contactfields.h"
#include <KLocalizedString>
QString ContactFields::label( Field field )
{
switch ( field ) {
case Undefined:
return i18nc( "@item Undefined import field type", "Undefined" );
break;
case FormattedName:
return KABC::Addressee::formattedNameLabel();
break;
case Prefix:
return KABC::Addressee::prefixLabel();
break;
case GivenName:
return KABC::Addressee::givenNameLabel();
break;
case AdditionalName:
return KABC::Addressee::additionalNameLabel();
break;
case FamilyName:
return KABC::Addressee::familyNameLabel();
break;
case Suffix:
return KABC::Addressee::suffixLabel();
break;
case NickName:
return KABC::Addressee::nickNameLabel();
break;
case Birthday:
return KABC::Addressee::birthdayLabel();
break;
case Anniversary:
return i18nc( "The wedding anniversary of a contact", "Anniversary" );
break;
case HomeAddressStreet:
return KABC::Addressee::homeAddressStreetLabel();
break;
case HomeAddressPostOfficeBox:
return KABC::Addressee::homeAddressPostOfficeBoxLabel();
break;
case HomeAddressLocality:
return KABC::Addressee::homeAddressLocalityLabel();
break;
case HomeAddressRegion:
return KABC::Addressee::homeAddressRegionLabel();
break;
case HomeAddressPostalCode:
return KABC::Addressee::homeAddressPostalCodeLabel();
break;
case HomeAddressCountry:
return KABC::Addressee::homeAddressCountryLabel();
break;
case HomeAddressLabel:
return KABC::Addressee::homeAddressLabelLabel();
break;
case BusinessAddressStreet:
return KABC::Addressee::businessAddressStreetLabel();
break;
case BusinessAddressPostOfficeBox:
return KABC::Addressee::businessAddressPostOfficeBoxLabel();
break;
case BusinessAddressLocality:
return KABC::Addressee::businessAddressLocalityLabel();
break;
case BusinessAddressRegion:
return KABC::Addressee::businessAddressRegionLabel();
break;
case BusinessAddressPostalCode:
return KABC::Addressee::businessAddressPostalCodeLabel();
break;
case BusinessAddressCountry:
return KABC::Addressee::businessAddressCountryLabel();
break;
case BusinessAddressLabel:
return KABC::Addressee::businessAddressLabelLabel();
break;
case HomePhone:
return KABC::Addressee::homePhoneLabel();
break;
case BusinessPhone:
return KABC::Addressee::businessPhoneLabel();
break;
case MobilePhone:
return KABC::Addressee::mobilePhoneLabel();
break;
case HomeFax:
return KABC::Addressee::homeFaxLabel();
break;
case BusinessFax:
return KABC::Addressee::businessFaxLabel();
break;
case CarPhone:
return KABC::Addressee::carPhoneLabel();
break;
case Isdn:
return KABC::Addressee::isdnLabel();
break;
case Pager:
return KABC::Addressee::pagerLabel();
break;
case PreferredEmail:
return i18nc( "Preferred email address", "EMail (preferred)" );
break;
case Email2:
return i18nc( "Second email address", "EMail (2)" );
break;
case Email3:
return i18nc( "Third email address", "EMail (3)" );
break;
case Email4:
return i18nc( "Fourth email address", "EMail (4)" );
break;
case Mailer:
return KABC::Addressee::mailerLabel();
break;
case Title:
return KABC::Addressee::titleLabel();
break;
case Role:
return KABC::Addressee::roleLabel();
break;
case Organization:
return KABC::Addressee::organizationLabel();
break;
case Note:
return KABC::Addressee::noteLabel();
break;
case Homepage:
return KABC::Addressee::urlLabel();
break;
case BlogFeed:
return i18n( "Blog Feed" );
break;
case Profession:
return i18n( "Profession" );
break;
case Office:
return i18n( "Office" );
break;
case Manager:
return i18n( "Manager" );
break;
case Assistant:
return i18n( "Assistant" );
break;
case Spouse:
return i18n( "Spouse" );
break;
}
return QString();
}
ContactFields::Fields ContactFields::allFields()
{
Fields fields;
fields << Undefined
<< FormattedName
<< Prefix
<< GivenName
<< AdditionalName
<< FamilyName
<< Suffix
<< NickName
<< Birthday
<< Anniversary
<< PreferredEmail
<< Email2
<< Email3
<< Email4
<< HomeAddressStreet
<< HomeAddressPostOfficeBox
<< HomeAddressLocality
<< HomeAddressRegion
<< HomeAddressPostalCode
<< HomeAddressCountry
<< HomeAddressLabel
<< BusinessAddressStreet
<< BusinessAddressPostOfficeBox
<< BusinessAddressLocality
<< BusinessAddressRegion
<< BusinessAddressPostalCode
<< BusinessAddressCountry
<< BusinessAddressLabel
<< HomePhone
<< BusinessPhone
<< MobilePhone
<< HomeFax
<< BusinessFax
<< CarPhone
<< Isdn
<< Pager
<< Mailer
<< Title
<< Role
<< Organization
<< Note
<< Homepage
<< BlogFeed
<< Profession
<< Office
<< Manager
<< Assistant
<< Spouse;
return fields;
}
void ContactFields::setValue( Field field, const QString &value, KABC::Addressee &contact )
{
switch ( field ) {
case ContactFields::Undefined:
break;
case ContactFields::FormattedName:
contact.setFormattedName( value );
break;
case ContactFields::GivenName:
contact.setGivenName( value );
break;
case ContactFields::FamilyName:
contact.setFamilyName( value );
break;
case ContactFields::AdditionalName:
contact.setAdditionalName( value );
break;
case ContactFields::Prefix:
contact.setPrefix( value );
break;
case ContactFields::Suffix:
contact.setSuffix( value );
break;
case ContactFields::NickName:
contact.setNickName( value );
break;
case ContactFields::Birthday:
contact.setBirthday( QDateTime::fromString( value, Qt::ISODate ) );
break;
case ContactFields::Anniversary:
contact.insertCustom( QLatin1String( "KADDRESSBOOK" ),
QLatin1String( "X-Anniversary" ), value );
break;
case ContactFields::PreferredEmail:
contact.insertEmail( value, true );
break;
case ContactFields::Email2:
contact.insertEmail( value, false );
break;
case ContactFields::Email3:
contact.insertEmail( value, false );
break;
case ContactFields::Email4:
contact.insertEmail( value, false );
break;
case ContactFields::Role:
contact.setRole( value );
break;
case ContactFields::Title:
contact.setTitle( value );
break;
case ContactFields::Mailer:
contact.setMailer( value );
break;
case ContactFields::Homepage:
contact.setUrl( KUrl( value ) );
break;
case ContactFields::Organization:
contact.setOrganization( value );
break;
case ContactFields::Note:
contact.setNote( value );
break;
case ContactFields::HomePhone:
{
KABC::PhoneNumber number = contact.phoneNumber( KABC::PhoneNumber::Home );
number.setNumber( value );
contact.insertPhoneNumber( number );
}
break;
case ContactFields::BusinessPhone:
{
KABC::PhoneNumber number = contact.phoneNumber( KABC::PhoneNumber::Work );
number.setNumber( value );
contact.insertPhoneNumber( number );
}
break;
case ContactFields::MobilePhone:
{
KABC::PhoneNumber number = contact.phoneNumber( KABC::PhoneNumber::Cell );
number.setNumber( value );
contact.insertPhoneNumber( number );
}
break;
case ContactFields::HomeFax:
{
KABC::PhoneNumber number = contact.phoneNumber( KABC::PhoneNumber::Home |
KABC::PhoneNumber::Fax );
number.setNumber( value );
contact.insertPhoneNumber( number );
}
break;
case ContactFields::BusinessFax:
{
KABC::PhoneNumber number = contact.phoneNumber( KABC::PhoneNumber::Work |
KABC::PhoneNumber::Fax );
number.setNumber( value );
contact.insertPhoneNumber( number );
}
break;
case ContactFields::CarPhone:
{
KABC::PhoneNumber number = contact.phoneNumber( KABC::PhoneNumber::Car );
number.setNumber( value );
contact.insertPhoneNumber( number );
}
break;
case ContactFields::Isdn:
{
KABC::PhoneNumber number = contact.phoneNumber( KABC::PhoneNumber::Isdn );
number.setNumber( value );
contact.insertPhoneNumber( number );
}
break;
case ContactFields::Pager:
{
KABC::PhoneNumber number = contact.phoneNumber( KABC::PhoneNumber::Pager );
number.setNumber( value );
contact.insertPhoneNumber( number );
}
break;
case ContactFields::HomeAddressStreet:
{
KABC::Address address = contact.address( KABC::Address::Home );
address.setStreet( value );
contact.insertAddress( address );
}
break;
case ContactFields::HomeAddressPostOfficeBox:
{
KABC::Address address = contact.address( KABC::Address::Home );
address.setPostOfficeBox( value );
contact.insertAddress( address );
}
break;
case ContactFields::HomeAddressLocality:
{
KABC::Address address = contact.address( KABC::Address::Home );
address.setLocality( value );
contact.insertAddress( address );
}
break;
case ContactFields::HomeAddressRegion:
{
KABC::Address address = contact.address( KABC::Address::Home );
address.setRegion( value );
contact.insertAddress( address );
}
break;
case ContactFields::HomeAddressPostalCode:
{
KABC::Address address = contact.address( KABC::Address::Home );
address.setPostalCode( value );
contact.insertAddress( address );
}
break;
case ContactFields::HomeAddressCountry:
{
KABC::Address address = contact.address( KABC::Address::Home );
address.setCountry( value );
contact.insertAddress( address );
}
break;
case ContactFields::HomeAddressLabel:
{
KABC::Address address = contact.address( KABC::Address::Home );
address.setLabel( value );
contact.insertAddress( address );
}
break;
case ContactFields::BusinessAddressStreet:
{
KABC::Address address = contact.address( KABC::Address::Work );
address.setStreet( value );
contact.insertAddress( address );
}
break;
case ContactFields::BusinessAddressPostOfficeBox:
{
KABC::Address address = contact.address( KABC::Address::Work );
address.setPostOfficeBox( value );
contact.insertAddress( address );
}
break;
case ContactFields::BusinessAddressLocality:
{
KABC::Address address = contact.address( KABC::Address::Work );
address.setLocality( value );
contact.insertAddress( address );
}
break;
case ContactFields::BusinessAddressRegion:
{
KABC::Address address = contact.address( KABC::Address::Work );
address.setRegion( value );
contact.insertAddress( address );
}
break;
case ContactFields::BusinessAddressPostalCode:
{
KABC::Address address = contact.address( KABC::Address::Work );
address.setPostalCode( value );
contact.insertAddress( address );
}
break;
case ContactFields::BusinessAddressCountry:
{
KABC::Address address = contact.address( KABC::Address::Work );
address.setCountry( value );
contact.insertAddress( address );
}
break;
case ContactFields::BusinessAddressLabel:
{
KABC::Address address = contact.address( KABC::Address::Work );
address.setLabel( value );
contact.insertAddress( address );
}
break;
case BlogFeed:
contact.insertCustom( QLatin1String( "KADDRESSBOOK" ),
QLatin1String( "BlogFeed" ), value );
break;
case Profession:
contact.insertCustom( QLatin1String( "KADDRESSBOOK" ),
QLatin1String( "X-Profession" ), value );
break;
case Office:
contact.insertCustom( QLatin1String( "KADDRESSBOOK" ),
QLatin1String( "X-Office" ), value );
break;
case Manager:
contact.insertCustom( QLatin1String( "KADDRESSBOOK" ),
QLatin1String( "X-ManagersName" ), value );
break;
case Assistant:
contact.insertCustom( QLatin1String( "KADDRESSBOOK" ),
QLatin1String( "X-AssistantsName" ), value );
break;
case Spouse:
contact.insertCustom( QLatin1String( "KADDRESSBOOK" ),
QLatin1String( "X-SpousesName" ), value );
break;
}
}
QString ContactFields::value( Field field, const KABC::Addressee &contact )
{
switch ( field ) {
case Undefined:
return QString();
break;
case FormattedName:
return contact.formattedName();
break;
case Prefix:
return contact.prefix();
break;
case GivenName:
return contact.givenName();
break;
case AdditionalName:
return contact.additionalName();
break;
case FamilyName:
return contact.familyName();
break;
case Suffix:
return contact.suffix();
break;
case NickName:
return contact.nickName();
break;
case Birthday:
{
const QDateTime birthday = contact.birthday();
if ( birthday.date().isValid() ) {
return birthday.date().toString( Qt::ISODate );
} else {
return QString();
}
}
break;
case Anniversary:
return contact.custom( QLatin1String( "KADDRESSBOOK" ), QLatin1String( "X-Anniversary" ) );
break;
case HomeAddressStreet:
{
const KABC::Address address = contact.address( KABC::Address::Home );
return address.street();
}
break;
case HomeAddressPostOfficeBox:
{
const KABC::Address address = contact.address( KABC::Address::Home );
return address.postOfficeBox();
}
break;
case HomeAddressLocality:
{
const KABC::Address address = contact.address( KABC::Address::Home );
return address.locality();
}
break;
case HomeAddressRegion:
{
const KABC::Address address = contact.address( KABC::Address::Home );
return address.region();
}
break;
case HomeAddressPostalCode:
{
const KABC::Address address = contact.address( KABC::Address::Home );
return address.postalCode();
}
break;
case HomeAddressCountry:
{
const KABC::Address address = contact.address( KABC::Address::Home );
return address.country();
}
break;
case HomeAddressLabel:
{
const KABC::Address address = contact.address( KABC::Address::Home );
return address.label();
}
break;
case BusinessAddressStreet:
{
const KABC::Address address = contact.address( KABC::Address::Work );
return address.street();
}
break;
case BusinessAddressPostOfficeBox:
{
const KABC::Address address = contact.address( KABC::Address::Work );
return address.postOfficeBox();
}
break;
case BusinessAddressLocality:
{
const KABC::Address address = contact.address( KABC::Address::Work );
return address.locality();
}
break;
case BusinessAddressRegion:
{
const KABC::Address address = contact.address( KABC::Address::Work );
return address.region();
}
break;
case BusinessAddressPostalCode:
{
const KABC::Address address = contact.address( KABC::Address::Work );
return address.postalCode();
}
break;
case BusinessAddressCountry:
{
const KABC::Address address = contact.address( KABC::Address::Work );
return address.country();
}
break;
case BusinessAddressLabel:
{
const KABC::Address address = contact.address( KABC::Address::Work );
return address.label();
}
break;
case HomePhone:
return contact.phoneNumber( KABC::PhoneNumber::Home ).number();
break;
case BusinessPhone:
return contact.phoneNumber( KABC::PhoneNumber::Work ).number();
break;
case MobilePhone:
return contact.phoneNumber( KABC::PhoneNumber::Cell ).number();
break;
case HomeFax:
return contact.phoneNumber( KABC::PhoneNumber::Home | KABC::PhoneNumber::Fax ).number();
break;
case BusinessFax:
return contact.phoneNumber( KABC::PhoneNumber::Work | KABC::PhoneNumber::Fax ).number();
break;
case CarPhone:
return contact.phoneNumber( KABC::PhoneNumber::Car ).number();
break;
case Isdn:
return contact.phoneNumber( KABC::PhoneNumber::Isdn ).number();
break;
case Pager:
return contact.phoneNumber( KABC::PhoneNumber::Pager ).number();
break;
case PreferredEmail:
{
const QStringList emails = contact.emails();
if ( emails.count() > 0 ) {
return emails.at( 0 );
} else {
return QString();
}
}
break;
case Email2:
{
const QStringList emails = contact.emails();
if ( emails.count() > 1 ) {
return emails.at( 1 );
} else {
return QString();
}
}
break;
case Email3:
{
const QStringList emails = contact.emails();
if ( emails.count() > 2 ) {
return emails.at( 2 );
} else {
return QString();
}
}
break;
case Email4:
{
const QStringList emails = contact.emails();
if ( emails.count() > 3 ) {
return emails.at( 3 );
} else {
return QString();
}
}
break;
case Mailer:
return contact.mailer();
break;
case Title:
return contact.title();
break;
case Role:
return contact.role();
break;
case Organization:
return contact.organization();
break;
case Note:
return contact.note();
break;
case Homepage:
return contact.url().url();
break;
case BlogFeed:
return contact.custom( QLatin1String( "KADDRESSBOOK" ), QLatin1String( "BlogFeed" ) );
break;
case Profession:
return contact.custom( QLatin1String( "KADDRESSBOOK" ), QLatin1String( "X-Profession" ) );
break;
case Office:
return contact.custom( QLatin1String( "KADDRESSBOOK" ), QLatin1String( "X-Office" ) );
break;
case Manager:
return contact.custom( QLatin1String( "KADDRESSBOOK" ), QLatin1String( "X-ManagersName" ) );
break;
case Assistant:
return contact.custom( QLatin1String( "KADDRESSBOOK" ), QLatin1String( "X-AssistantsName" ) );
break;
case Spouse:
return contact.custom( QLatin1String( "KADDRESSBOOK" ), QLatin1String( "X-SpousesName" ) );
break;
}
return QString();
}