• Skip to content
  • Skip to link menu
KDE 3.5 API Reference
  • KDE API Reference
  • @topname@
  • Sitemap
  • Contact Us
 

kabc

field.cpp

00001 /*** Warning! This file has been generated by the script makeaddressee ***/
00002 /*
00003     This file is part of libkabc.
00004     Copyright (c) 2002 Cornelius Schumacher <schumacher@kde.org>
00005 
00006     This library is free software; you can redistribute it and/or
00007     modify it under the terms of the GNU Library General Public
00008     License as published by the Free Software Foundation; either
00009     version 2 of the License, or (at your option) any later version.
00010 
00011     This library is distributed in the hope that it will be useful,
00012     but WITHOUT ANY WARRANTY; without even the implied warranty of
00013     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00014     Library General Public License for more details.
00015 
00016     You should have received a copy of the GNU Library General Public License
00017     along with this library; see the file COPYING.LIB.  If not, write to
00018     the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
00019     Boston, MA 02110-1301, USA.
00020 */
00021 
00022 #include <klocale.h>
00023 #include <kconfig.h>
00024 #include <kglobal.h>
00025 
00026 #include "field.h"
00027 #include "address.h"
00028 
00029 using namespace KABC;
00030 
00031 class Field::FieldImpl
00032 {
00033   public:
00034     FieldImpl( int fieldId, int category = 0,
00035                const QString &label = QString::null,
00036                const QString &key = QString::null,
00037                const QString &app = QString::null )
00038       : mFieldId( fieldId ), mCategory( category ), mLabel( label ),
00039         mKey( key ), mApp( app ) {}
00040 
00041     enum FieldId
00042     {
00043       CustomField,
00044       FormattedName,
00045       FamilyName,
00046       GivenName,
00047       AdditionalName,
00048       Prefix,
00049       Suffix,
00050       NickName,
00051       Birthday,
00052       HomeAddressStreet,
00053       HomeAddressPostOfficeBox,
00054       HomeAddressLocality,
00055       HomeAddressRegion,
00056       HomeAddressPostalCode,
00057       HomeAddressCountry,
00058       HomeAddressLabel,
00059       BusinessAddressStreet,
00060       BusinessAddressPostOfficeBox,
00061       BusinessAddressLocality,
00062       BusinessAddressRegion,
00063       BusinessAddressPostalCode,
00064       BusinessAddressCountry,
00065       BusinessAddressLabel,
00066       HomePhone,
00067       BusinessPhone,
00068       MobilePhone,
00069       HomeFax,
00070       BusinessFax,
00071       CarPhone,
00072       Isdn,
00073       Pager,
00074       Email,
00075       Mailer,
00076       Title,
00077       Role,
00078       Organization,
00079       Department,
00080       Note,
00081       Url
00082     };
00083 
00084     int fieldId() { return mFieldId; }
00085     int category() { return mCategory; }
00086 
00087     QString label() { return mLabel; }
00088     QString key() { return mKey; }
00089     QString app() { return mApp; }
00090 
00091   private:
00092     int mFieldId;
00093     int mCategory;
00094 
00095     QString mLabel;
00096     QString mKey;
00097     QString mApp;
00098 };
00099 
00100 
00101 Field::List Field::mAllFields;
00102 Field::List Field::mDefaultFields;
00103 Field::List Field::mCustomFields;
00104 
00105 
00106 Field::Field( FieldImpl *impl )
00107 {
00108   mImpl = impl;
00109 }
00110 
00111 Field::~Field()
00112 {
00113   delete mImpl;
00114 }
00115 
00116 QString Field::label()
00117 {
00118   switch ( mImpl->fieldId() ) {
00119     case FieldImpl::FormattedName:
00120       return Addressee::formattedNameLabel();
00121     case FieldImpl::FamilyName:
00122       return Addressee::familyNameLabel();
00123     case FieldImpl::GivenName:
00124       return Addressee::givenNameLabel();
00125     case FieldImpl::AdditionalName:
00126       return Addressee::additionalNameLabel();
00127     case FieldImpl::Prefix:
00128       return Addressee::prefixLabel();
00129     case FieldImpl::Suffix:
00130       return Addressee::suffixLabel();
00131     case FieldImpl::NickName:
00132       return Addressee::nickNameLabel();
00133     case FieldImpl::Birthday:
00134       return Addressee::birthdayLabel();
00135     case FieldImpl::HomeAddressStreet:
00136       return Addressee::homeAddressStreetLabel();
00137     case FieldImpl::HomeAddressPostOfficeBox:
00138       return Addressee::homeAddressPostOfficeBoxLabel();
00139     case FieldImpl::HomeAddressLocality:
00140       return Addressee::homeAddressLocalityLabel();
00141     case FieldImpl::HomeAddressRegion:
00142       return Addressee::homeAddressRegionLabel();
00143     case FieldImpl::HomeAddressPostalCode:
00144       return Addressee::homeAddressPostalCodeLabel();
00145     case FieldImpl::HomeAddressCountry:
00146       return Addressee::homeAddressCountryLabel();
00147     case FieldImpl::HomeAddressLabel:
00148       return Addressee::homeAddressLabelLabel();
00149     case FieldImpl::BusinessAddressStreet:
00150       return Addressee::businessAddressStreetLabel();
00151     case FieldImpl::BusinessAddressPostOfficeBox:
00152       return Addressee::businessAddressPostOfficeBoxLabel();
00153     case FieldImpl::BusinessAddressLocality:
00154       return Addressee::businessAddressLocalityLabel();
00155     case FieldImpl::BusinessAddressRegion:
00156       return Addressee::businessAddressRegionLabel();
00157     case FieldImpl::BusinessAddressPostalCode:
00158       return Addressee::businessAddressPostalCodeLabel();
00159     case FieldImpl::BusinessAddressCountry:
00160       return Addressee::businessAddressCountryLabel();
00161     case FieldImpl::BusinessAddressLabel:
00162       return Addressee::businessAddressLabelLabel();
00163     case FieldImpl::HomePhone:
00164       return Addressee::homePhoneLabel();
00165     case FieldImpl::BusinessPhone:
00166       return Addressee::businessPhoneLabel();
00167     case FieldImpl::MobilePhone:
00168       return Addressee::mobilePhoneLabel();
00169     case FieldImpl::HomeFax:
00170       return Addressee::homeFaxLabel();
00171     case FieldImpl::BusinessFax:
00172       return Addressee::businessFaxLabel();
00173     case FieldImpl::CarPhone:
00174       return Addressee::carPhoneLabel();
00175     case FieldImpl::Isdn:
00176       return Addressee::isdnLabel();
00177     case FieldImpl::Pager:
00178       return Addressee::pagerLabel();
00179     case FieldImpl::Email:
00180       return Addressee::emailLabel();
00181     case FieldImpl::Mailer:
00182       return Addressee::mailerLabel();
00183     case FieldImpl::Title:
00184       return Addressee::titleLabel();
00185     case FieldImpl::Role:
00186       return Addressee::roleLabel();
00187     case FieldImpl::Organization:
00188       return Addressee::organizationLabel();
00189     case FieldImpl::Department:
00190       return Addressee::departmentLabel();
00191     case FieldImpl::Note:
00192       return Addressee::noteLabel();
00193     case FieldImpl::Url:
00194       return Addressee::urlLabel();
00195     case FieldImpl::CustomField:
00196       return mImpl->label();
00197     default:
00198       return i18n("Unknown Field");
00199   }
00200 }
00201 
00202 int Field::category()
00203 {
00204   return mImpl->category();
00205 }
00206 
00207 QString Field::categoryLabel( int category )
00208 {
00209   switch ( category ) {
00210     case All:
00211       return i18n("All");
00212     case Frequent:
00213       return i18n("Frequent");
00214     case Address:
00215       return i18n("street/postal","Address");
00216     case Email:
00217       return i18n("Email");
00218     case Personal:
00219       return i18n("Personal");
00220     case Organization:
00221       return i18n("Organization");
00222     case CustomCategory:
00223       return i18n("Custom");
00224     default:
00225       return i18n("Undefined");
00226   }
00227 }
00228 
00229 QString Field::value( const KABC::Addressee &a )
00230 {
00231   switch ( mImpl->fieldId() ) {
00232     case FieldImpl::FormattedName:
00233       return a.formattedName();
00234     case FieldImpl::FamilyName:
00235       return a.familyName();
00236     case FieldImpl::GivenName:
00237       return a.givenName();
00238     case FieldImpl::AdditionalName:
00239       return a.additionalName();
00240     case FieldImpl::Prefix:
00241       return a.prefix();
00242     case FieldImpl::Suffix:
00243       return a.suffix();
00244     case FieldImpl::NickName:
00245       return a.nickName();
00246     case FieldImpl::Mailer:
00247       return a.mailer();
00248     case FieldImpl::Title:
00249       return a.title();
00250     case FieldImpl::Role:
00251       return a.role();
00252     case FieldImpl::Organization:
00253       return a.organization();
00254     case FieldImpl::Department:
00255       return a.department();
00256     case FieldImpl::Note:
00257       return a.note();
00258     case FieldImpl::Email:
00259       return a.preferredEmail();
00260     case FieldImpl::Birthday:
00261       if ( a.birthday().isValid() )
00262         return a.birthday().date().toString( Qt::ISODate );
00263       else
00264         return QString::null;
00265     case FieldImpl::Url:
00266       return a.url().prettyURL();
00267     case FieldImpl::HomePhone:
00268     {
00269       PhoneNumber::List::ConstIterator it;
00270 
00271       {
00272         // check for preferred number
00273         const PhoneNumber::List list = a.phoneNumbers( PhoneNumber::Home | PhoneNumber::Pref );
00274         for ( it = list.begin(); it != list.end(); ++it )
00275           if ( ((*it).type() & ~(PhoneNumber::Pref)) == PhoneNumber::Home )
00276             return (*it).number();
00277       }
00278 
00279       {
00280         // check for normal home number
00281         const PhoneNumber::List list = a.phoneNumbers( PhoneNumber::Home );
00282         for ( it = list.begin(); it != list.end(); ++it )
00283           if ( ((*it).type() & ~(PhoneNumber::Pref)) == PhoneNumber::Home )
00284             return (*it).number();
00285       }
00286 
00287       return QString::null;
00288     }
00289     case FieldImpl::BusinessPhone:
00290     {
00291       PhoneNumber::List::ConstIterator it;
00292 
00293       {
00294         // check for preferred number
00295         const PhoneNumber::List list = a.phoneNumbers( PhoneNumber::Work | PhoneNumber::Pref );
00296         for ( it = list.begin(); it != list.end(); ++it )
00297           if ( ((*it).type() & ~(PhoneNumber::Pref)) == PhoneNumber::Work )
00298             return (*it).number();
00299       }
00300 
00301       {
00302         // check for normal work number
00303         const PhoneNumber::List list = a.phoneNumbers( PhoneNumber::Work );
00304         for ( it = list.begin(); it != list.end(); ++it )
00305           if ( ((*it).type() & ~(PhoneNumber::Pref)) == PhoneNumber::Work )
00306             return (*it).number();
00307       }
00308 
00309       return QString::null;
00310     }
00311     case FieldImpl::MobilePhone:
00312       return a.phoneNumber( PhoneNumber::Cell ).number();
00313     case FieldImpl::HomeFax:
00314       return a.phoneNumber( PhoneNumber::Home | PhoneNumber::Fax ).number();
00315     case FieldImpl::BusinessFax:
00316       return a.phoneNumber( PhoneNumber::Work | PhoneNumber::Fax ).number();
00317     case FieldImpl::CarPhone:
00318       return a.phoneNumber( PhoneNumber::Car ).number();
00319     case FieldImpl::Isdn:
00320       return a.phoneNumber( PhoneNumber::Isdn ).number();
00321     case FieldImpl::Pager:
00322       return a.phoneNumber( PhoneNumber::Pager ).number();
00323     case FieldImpl::HomeAddressStreet:
00324       return a.address( Address::Home ).street();
00325     case FieldImpl::HomeAddressPostOfficeBox:
00326       return a.address( Address::Home ).postOfficeBox();
00327     case FieldImpl::HomeAddressLocality:
00328       return a.address( Address::Home ).locality();
00329     case FieldImpl::HomeAddressRegion:
00330       return a.address( Address::Home ).region();
00331     case FieldImpl::HomeAddressPostalCode:
00332       return a.address( Address::Home ).postalCode();
00333     case FieldImpl::HomeAddressCountry:
00334       return a.address( Address::Home ).country();
00335     case FieldImpl::HomeAddressLabel:
00336       return a.address( Address::Home ).label();
00337     case FieldImpl::BusinessAddressStreet:
00338       return a.address( Address::Work ).street();
00339     case FieldImpl::BusinessAddressPostOfficeBox:
00340       return a.address( Address::Work ).postOfficeBox();
00341     case FieldImpl::BusinessAddressLocality:
00342       return a.address( Address::Work ).locality();
00343     case FieldImpl::BusinessAddressRegion:
00344       return a.address( Address::Work ).region();
00345     case FieldImpl::BusinessAddressPostalCode:
00346       return a.address( Address::Work ).postalCode();
00347     case FieldImpl::BusinessAddressCountry:
00348       return a.address( Address::Work ).country();
00349     case FieldImpl::BusinessAddressLabel:
00350       return a.address( Address::Work ).label();
00351     case FieldImpl::CustomField:
00352       return a.custom( mImpl->app(), mImpl->key() );
00353     default:
00354       return QString::null;
00355   }
00356 }
00357 
00358 bool Field::setValue( KABC::Addressee &a, const QString &value )
00359 {
00360   switch ( mImpl->fieldId() ) {
00361     case FieldImpl::FormattedName:
00362       a.setFormattedName( value );
00363       return true;
00364     case FieldImpl::FamilyName:
00365       a.setFamilyName( value );
00366       return true;
00367     case FieldImpl::GivenName:
00368       a.setGivenName( value );
00369       return true;
00370     case FieldImpl::AdditionalName:
00371       a.setAdditionalName( value );
00372       return true;
00373     case FieldImpl::Prefix:
00374       a.setPrefix( value );
00375       return true;
00376     case FieldImpl::Suffix:
00377       a.setSuffix( value );
00378       return true;
00379     case FieldImpl::NickName:
00380       a.setNickName( value );
00381       return true;
00382     case FieldImpl::Mailer:
00383       a.setMailer( value );
00384       return true;
00385     case FieldImpl::Title:
00386       a.setTitle( value );
00387       return true;
00388     case FieldImpl::Role:
00389       a.setRole( value );
00390       return true;
00391     case FieldImpl::Organization:
00392       a.setOrganization( value );
00393       return true;
00394     case FieldImpl::Department:
00395       a.setDepartment( value );
00396       return true;
00397     case FieldImpl::Note:
00398       a.setNote( value );
00399       return true;
00400     case FieldImpl::MobilePhone:
00401       {
00402         PhoneNumber number = a.phoneNumber( PhoneNumber::Cell );
00403         number.setNumber( value );
00404         a.insertPhoneNumber( number );
00405         return true;
00406       }
00407     case FieldImpl::HomeFax:
00408       {
00409         PhoneNumber number = a.phoneNumber( PhoneNumber::Home | PhoneNumber::Fax );
00410         number.setNumber( value );
00411         a.insertPhoneNumber( number );
00412         return true;
00413       }
00414     case FieldImpl::BusinessFax:
00415       {
00416         PhoneNumber number = a.phoneNumber( PhoneNumber::Work | PhoneNumber::Fax );
00417         number.setNumber( value );
00418         a.insertPhoneNumber( number );
00419         return true;
00420       }
00421     case FieldImpl::CarPhone:
00422       {
00423         PhoneNumber number = a.phoneNumber( PhoneNumber::Car );
00424         number.setNumber( value );
00425         a.insertPhoneNumber( number );
00426         return true;
00427       }
00428     case FieldImpl::Isdn:
00429       {
00430         PhoneNumber number = a.phoneNumber( PhoneNumber::Isdn );
00431         number.setNumber( value );
00432         a.insertPhoneNumber( number );
00433         return true;
00434       }
00435     case FieldImpl::Pager:
00436       {
00437         PhoneNumber number = a.phoneNumber( PhoneNumber::Pager );
00438         number.setNumber( value );
00439         a.insertPhoneNumber( number );
00440         return true;
00441       }
00442     case FieldImpl::HomeAddressStreet:
00443       {
00444         KABC::Address address = a.address( Address::Home );
00445         address.setStreet( value );
00446         a.insertAddress( address );
00447         return true;
00448       }
00449     case FieldImpl::HomeAddressPostOfficeBox:
00450       {
00451         KABC::Address address = a.address( Address::Home );
00452         address.setPostOfficeBox( value );
00453         a.insertAddress( address );
00454         return true;
00455       }
00456     case FieldImpl::HomeAddressLocality:
00457       {
00458         KABC::Address address = a.address( Address::Home );
00459         address.setLocality( value );
00460         a.insertAddress( address );
00461         return true;
00462       }
00463     case FieldImpl::HomeAddressRegion:
00464       {
00465         KABC::Address address = a.address( Address::Home );
00466         address.setRegion( value );
00467         a.insertAddress( address );
00468         return true;
00469       }
00470     case FieldImpl::HomeAddressPostalCode:
00471       {
00472         KABC::Address address = a.address( Address::Home );
00473         address.setPostalCode( value );
00474         a.insertAddress( address );
00475         return true;
00476       }
00477     case FieldImpl::HomeAddressCountry:
00478       {
00479         KABC::Address address = a.address( Address::Home );
00480         address.setCountry( value );
00481         a.insertAddress( address );
00482         return true;
00483       }
00484     case FieldImpl::HomeAddressLabel:
00485       {
00486         KABC::Address address = a.address( Address::Home );
00487         address.setLabel( value );
00488         a.insertAddress( address );
00489         return true;
00490       }
00491     case FieldImpl::BusinessAddressStreet:
00492       {
00493         KABC::Address address = a.address( Address::Work );
00494         address.setStreet( value );
00495         a.insertAddress( address );
00496         return true;
00497       }
00498     case FieldImpl::BusinessAddressPostOfficeBox:
00499       {
00500         KABC::Address address = a.address( Address::Work );
00501         address.setPostOfficeBox( value );
00502         a.insertAddress( address );
00503         return true;
00504       }
00505     case FieldImpl::BusinessAddressLocality:
00506       {
00507         KABC::Address address = a.address( Address::Work );
00508         address.setLocality( value );
00509         a.insertAddress( address );
00510         return true;
00511       }
00512     case FieldImpl::BusinessAddressRegion:
00513       {
00514         KABC::Address address = a.address( Address::Work );
00515         address.setRegion( value );
00516         a.insertAddress( address );
00517         return true;
00518       }
00519     case FieldImpl::BusinessAddressPostalCode:
00520       {
00521         KABC::Address address = a.address( Address::Work );
00522         address.setPostalCode( value );
00523         a.insertAddress( address );
00524         return true;
00525       }
00526     case FieldImpl::BusinessAddressCountry:
00527       {
00528         KABC::Address address = a.address( Address::Work );
00529         address.setCountry( value );
00530         a.insertAddress( address );
00531         return true;
00532       }
00533     case FieldImpl::BusinessAddressLabel:
00534       {
00535         KABC::Address address = a.address( Address::Work );
00536         address.setLabel( value );
00537         a.insertAddress( address );
00538         return true;
00539       }
00540     case FieldImpl::Birthday:
00541       a.setBirthday( QDate::fromString( value, Qt::ISODate ) );
00542       return true;
00543     case FieldImpl::CustomField:
00544       a.insertCustom( mImpl->app(), mImpl->key(), value );
00545       return true;
00546     default:
00547       return false;
00548   }
00549 }
00550 
00551 QString Field::sortKey( const KABC::Addressee &a )
00552 {
00553   switch ( mImpl->fieldId() ) {
00554     case FieldImpl::FormattedName:
00555       return a.formattedName();
00556     case FieldImpl::FamilyName:
00557       return a.familyName();
00558     case FieldImpl::GivenName:
00559       return a.givenName();
00560     case FieldImpl::AdditionalName:
00561       return a.additionalName();
00562     case FieldImpl::Prefix:
00563       return a.prefix();
00564     case FieldImpl::Suffix:
00565       return a.suffix();
00566     case FieldImpl::NickName:
00567       return a.nickName();
00568     case FieldImpl::Mailer:
00569       return a.mailer();
00570     case FieldImpl::Title:
00571       return a.title();
00572     case FieldImpl::Role:
00573       return a.role();
00574     case FieldImpl::Organization:
00575       return a.organization();
00576     case FieldImpl::Department:
00577       return a.department();
00578     case FieldImpl::Note:
00579       return a.note();
00580     case FieldImpl::Birthday:
00581       if ( a.birthday().isValid() ) {
00582         QDate date = a.birthday().date();
00583         QString key;
00584         key.sprintf( "%02d-%02d", date.month(), date.day() );
00585         return key;
00586       } else
00587         return QString( "00-00" );
00588     default:
00589       return value( a ).lower();
00590   }
00591 }
00592 
00593 bool Field::isCustom()
00594 {
00595   return mImpl->fieldId() == FieldImpl::CustomField;
00596 }
00597 
00598 Field::List Field::allFields()
00599 {
00600   if ( mAllFields.isEmpty() ) {
00601     createField( FieldImpl::FormattedName, Frequent );
00602     createField( FieldImpl::FamilyName, Frequent );
00603     createField( FieldImpl::GivenName, Frequent );
00604     createField( FieldImpl::AdditionalName );
00605     createField( FieldImpl::Prefix );
00606     createField( FieldImpl::Suffix );
00607     createField( FieldImpl::NickName, Personal );
00608     createField( FieldImpl::Birthday, Personal );
00609     createField( FieldImpl::HomeAddressStreet, Address|Personal );
00610     createField( FieldImpl::HomeAddressPostOfficeBox, Address|Personal );
00611     createField( FieldImpl::HomeAddressLocality, Address|Personal );
00612     createField( FieldImpl::HomeAddressRegion, Address|Personal );
00613     createField( FieldImpl::HomeAddressPostalCode, Address|Personal );
00614     createField( FieldImpl::HomeAddressCountry, Address|Personal );
00615     createField( FieldImpl::HomeAddressLabel, Address|Personal );
00616     createField( FieldImpl::BusinessAddressStreet, Address|Organization );
00617     createField( FieldImpl::BusinessAddressPostOfficeBox, Address|Organization );
00618     createField( FieldImpl::BusinessAddressLocality, Address|Organization );
00619     createField( FieldImpl::BusinessAddressRegion, Address|Organization );
00620     createField( FieldImpl::BusinessAddressPostalCode, Address|Organization );
00621     createField( FieldImpl::BusinessAddressCountry, Address|Organization );
00622     createField( FieldImpl::BusinessAddressLabel, Address|Organization );
00623     createField( FieldImpl::HomePhone, Personal|Frequent );
00624     createField( FieldImpl::BusinessPhone, Organization|Frequent );
00625     createField( FieldImpl::MobilePhone, Frequent );
00626     createField( FieldImpl::HomeFax );
00627     createField( FieldImpl::BusinessFax );
00628     createField( FieldImpl::CarPhone );
00629     createField( FieldImpl::Isdn );
00630     createField( FieldImpl::Pager );
00631     createField( FieldImpl::Email, Email|Frequent );
00632     createField( FieldImpl::Mailer, Email );
00633     createField( FieldImpl::Title, Organization );
00634     createField( FieldImpl::Role, Organization );
00635     createField( FieldImpl::Organization, Organization );
00636     createField( FieldImpl::Department, Organization );
00637     createField( FieldImpl::Note );
00638     createField( FieldImpl::Url );
00639   }
00640 
00641   return mAllFields;
00642 }
00643 
00644 Field::List Field::defaultFields()
00645 {
00646   if ( mDefaultFields.isEmpty() ) {
00647     createDefaultField( FieldImpl::FormattedName );
00648     createDefaultField( FieldImpl::Email );
00649   }
00650 
00651   return mDefaultFields;
00652 }
00653 
00654 void Field::createField( int id, int category )
00655 {
00656   mAllFields.append( new Field( new FieldImpl( id, category ) ) );
00657 }
00658 
00659 void Field::createDefaultField( int id, int category )
00660 {
00661   mDefaultFields.append( new Field( new FieldImpl( id, category ) ) );
00662 }
00663 
00664 void Field::deleteFields()
00665 {
00666   Field::List::ConstIterator it;
00667 
00668   for ( it = mAllFields.constBegin(); it != mAllFields.constEnd(); ++it ) {
00669     delete (*it);
00670   }
00671   mAllFields.clear();
00672 
00673   for ( it = mDefaultFields.constBegin(); it != mDefaultFields.constEnd(); ++it ) {
00674     delete (*it);
00675   }
00676   mDefaultFields.clear();
00677 
00678   for ( it = mCustomFields.constBegin(); it != mCustomFields.constEnd(); ++it ) {
00679     delete (*it);
00680   }
00681   mCustomFields.clear();
00682 }
00683 
00684 void Field::saveFields( const QString &identifier,
00685                         const Field::List &fields )
00686 {
00687   KConfig *cfg = KGlobal::config();
00688   KConfigGroupSaver( cfg, "KABCFields" );
00689 
00690   saveFields( cfg, identifier, fields );
00691 }
00692 
00693 void Field::saveFields( KConfig *cfg, const QString &identifier,
00694                         const Field::List &fields )
00695 {
00696   QValueList<int> fieldIds;
00697 
00698   int custom = 0;
00699   Field::List::ConstIterator it;
00700   for( it = fields.begin(); it != fields.end(); ++it ) {
00701     fieldIds.append( (*it)->mImpl->fieldId() );
00702     if( (*it)->isCustom() ) {
00703       QStringList customEntry;
00704       customEntry << (*it)->mImpl->label();
00705       customEntry << (*it)->mImpl->key();
00706       customEntry << (*it)->mImpl->app();
00707       cfg->writeEntry( "KABC_CustomEntry_" + identifier + "_" +
00708                        QString::number( custom++ ), customEntry );
00709     }
00710   }
00711 
00712   cfg->writeEntry( identifier, fieldIds );
00713 }
00714 
00715 Field::List Field::restoreFields( const QString &identifier )
00716 {
00717   KConfig *cfg = KGlobal::config();
00718   KConfigGroupSaver( cfg, "KABCFields" );
00719 
00720   return restoreFields( cfg, identifier );
00721 }
00722 
00723 Field::List Field::restoreFields( KConfig *cfg, const QString &identifier )
00724 {
00725   const QValueList<int> fieldIds = cfg->readIntListEntry( identifier );
00726 
00727   Field::List fields;
00728 
00729   int custom = 0;
00730   QValueList<int>::ConstIterator it;
00731   for( it = fieldIds.begin(); it != fieldIds.end(); ++it ) {
00732     FieldImpl *f = 0;
00733     if ( (*it) == FieldImpl::CustomField ) {
00734       QStringList customEntry = cfg->readListEntry( "KABC_CustomEntry_" +
00735                                                  identifier + "_" +
00736                                                  QString::number( custom++ ) );
00737       f = new FieldImpl( *it, CustomCategory, customEntry[ 0 ],
00738                          customEntry[ 1 ], customEntry[ 2 ] );
00739     } else {
00740       f = new FieldImpl( *it );
00741     }
00742     fields.append( new Field( f ) );
00743   }
00744 
00745   return fields;
00746 }
00747 
00748 bool Field::equals( Field *field )
00749 {
00750   bool sameId = ( mImpl->fieldId() == field->mImpl->fieldId() );
00751 
00752   if ( !sameId ) return false;
00753 
00754   if ( mImpl->fieldId() != FieldImpl::CustomField ) return true;
00755 
00756   return mImpl->key() == field->mImpl->key();
00757 }
00758 
00759 Field *Field::createCustomField( const QString &label, int category,
00760                                  const QString &key, const QString &app )
00761 {
00762   Field *field = new Field( new FieldImpl( FieldImpl::CustomField,
00763                                            category | CustomCategory,
00764                                            label, key, app ) );
00765   mCustomFields.append( field );
00766 
00767   return field;
00768 }

kabc

Skip menu "kabc"
  • Main Page
  • Namespace List
  • Class Hierarchy
  • Alphabetical List
  • Class List
  • File List
  • Namespace Members
  • Class Members
  • Related Pages

@topname@

Skip menu "@topname@"
  •     kdnssd-avahi
  • arts
  • dcop
  • dnssd
  • interfaces
  •     interface
  •     library
  •   kspeech
  •   ktexteditor
  • kabc
  • kate
  • kcmshell
  • kdecore
  • kded
  • kdefx
  • kdeprint
  • kdesu
  • kdeui
  • kdoctools
  • khtml
  • kimgio
  • kinit
  • kio
  •   bookmarks
  •   httpfilter
  •   kfile
  •   kio
  •   kioexec
  •   kpasswdserver
  •   kssl
  • kioslave
  •   http
  • kjs
  • kmdi
  •   kmdi
  • knewstuff
  • kparts
  • kresources
  • kspell2
  • kunittest
  • kutils
  • kwallet
  • libkmid
  • libkscreensaver
Generated for @topname@ by doxygen 1.5.5
This website is maintained by Adriaan de Groot and Allen Winter.
KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal