kabc Library API Documentation

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., 59 Temple Place - Suite 330, 00019 Boston, MA 02111-1307, USA. 00020 */ 00021 00022 #include <klocale.h> 00023 #include <kconfig.h> 00024 #include <kglobal.h> 00025 00026 #include "field.h" 00027 00028 using namespace KABC; 00029 00030 class Field::FieldImpl 00031 { 00032 public: 00033 FieldImpl( int fieldId, int category = 0, 00034 const QString &label = QString::null, 00035 const QString &key = QString::null, 00036 const QString &app = QString::null ) 00037 : mFieldId( fieldId ), mCategory( category ), mLabel( label ), 00038 mKey( key ), mApp( app ) {} 00039 00040 enum FieldId 00041 { 00042 CustomField, 00043 FormattedName, 00044 FamilyName, 00045 GivenName, 00046 AdditionalName, 00047 Prefix, 00048 Suffix, 00049 NickName, 00050 Birthday, 00051 HomeAddressStreet, 00052 HomeAddressLocality, 00053 HomeAddressRegion, 00054 HomeAddressPostalCode, 00055 HomeAddressCountry, 00056 HomeAddressLabel, 00057 BusinessAddressStreet, 00058 BusinessAddressLocality, 00059 BusinessAddressRegion, 00060 BusinessAddressPostalCode, 00061 BusinessAddressCountry, 00062 BusinessAddressLabel, 00063 HomePhone, 00064 BusinessPhone, 00065 MobilePhone, 00066 HomeFax, 00067 BusinessFax, 00068 CarPhone, 00069 Isdn, 00070 Pager, 00071 Email, 00072 Mailer, 00073 Title, 00074 Role, 00075 Organization, 00076 Note, 00077 Url 00078 }; 00079 00080 int fieldId() { return mFieldId; } 00081 int category() { return mCategory; } 00082 00083 QString label() { return mLabel; } 00084 QString key() { return mKey; } 00085 QString app() { return mApp; } 00086 00087 private: 00088 int mFieldId; 00089 int mCategory; 00090 00091 QString mLabel; 00092 QString mKey; 00093 QString mApp; 00094 }; 00095 00096 00097 Field::List Field::mAllFields; 00098 Field::List Field::mDefaultFields; 00099 Field::List Field::mCustomFields; 00100 00101 00102 Field::Field( FieldImpl *impl ) 00103 { 00104 mImpl = impl; 00105 } 00106 00107 Field::~Field() 00108 { 00109 delete mImpl; 00110 } 00111 00112 QString Field::label() 00113 { 00114 switch ( mImpl->fieldId() ) { 00115 case FieldImpl::FormattedName: 00116 return Addressee::formattedNameLabel(); 00117 case FieldImpl::FamilyName: 00118 return Addressee::familyNameLabel(); 00119 case FieldImpl::GivenName: 00120 return Addressee::givenNameLabel(); 00121 case FieldImpl::AdditionalName: 00122 return Addressee::additionalNameLabel(); 00123 case FieldImpl::Prefix: 00124 return Addressee::prefixLabel(); 00125 case FieldImpl::Suffix: 00126 return Addressee::suffixLabel(); 00127 case FieldImpl::NickName: 00128 return Addressee::nickNameLabel(); 00129 case FieldImpl::Birthday: 00130 return Addressee::birthdayLabel(); 00131 case FieldImpl::HomeAddressStreet: 00132 return Addressee::homeAddressStreetLabel(); 00133 case FieldImpl::HomeAddressLocality: 00134 return Addressee::homeAddressLocalityLabel(); 00135 case FieldImpl::HomeAddressRegion: 00136 return Addressee::homeAddressRegionLabel(); 00137 case FieldImpl::HomeAddressPostalCode: 00138 return Addressee::homeAddressPostalCodeLabel(); 00139 case FieldImpl::HomeAddressCountry: 00140 return Addressee::homeAddressCountryLabel(); 00141 case FieldImpl::HomeAddressLabel: 00142 return Addressee::homeAddressLabelLabel(); 00143 case FieldImpl::BusinessAddressStreet: 00144 return Addressee::businessAddressStreetLabel(); 00145 case FieldImpl::BusinessAddressLocality: 00146 return Addressee::businessAddressLocalityLabel(); 00147 case FieldImpl::BusinessAddressRegion: 00148 return Addressee::businessAddressRegionLabel(); 00149 case FieldImpl::BusinessAddressPostalCode: 00150 return Addressee::businessAddressPostalCodeLabel(); 00151 case FieldImpl::BusinessAddressCountry: 00152 return Addressee::businessAddressCountryLabel(); 00153 case FieldImpl::BusinessAddressLabel: 00154 return Addressee::businessAddressLabelLabel(); 00155 case FieldImpl::HomePhone: 00156 return Addressee::homePhoneLabel(); 00157 case FieldImpl::BusinessPhone: 00158 return Addressee::businessPhoneLabel(); 00159 case FieldImpl::MobilePhone: 00160 return Addressee::mobilePhoneLabel(); 00161 case FieldImpl::HomeFax: 00162 return Addressee::homeFaxLabel(); 00163 case FieldImpl::BusinessFax: 00164 return Addressee::businessFaxLabel(); 00165 case FieldImpl::CarPhone: 00166 return Addressee::carPhoneLabel(); 00167 case FieldImpl::Isdn: 00168 return Addressee::isdnLabel(); 00169 case FieldImpl::Pager: 00170 return Addressee::pagerLabel(); 00171 case FieldImpl::Email: 00172 return Addressee::emailLabel(); 00173 case FieldImpl::Mailer: 00174 return Addressee::mailerLabel(); 00175 case FieldImpl::Title: 00176 return Addressee::titleLabel(); 00177 case FieldImpl::Role: 00178 return Addressee::roleLabel(); 00179 case FieldImpl::Organization: 00180 return Addressee::organizationLabel(); 00181 case FieldImpl::Note: 00182 return Addressee::noteLabel(); 00183 case FieldImpl::Url: 00184 return Addressee::urlLabel(); 00185 case FieldImpl::CustomField: 00186 return mImpl->label(); 00187 default: 00188 return i18n("Unknown Field"); 00189 } 00190 } 00191 00192 int Field::category() 00193 { 00194 return mImpl->category(); 00195 } 00196 00197 QString Field::categoryLabel( int category ) 00198 { 00199 switch ( category ) { 00200 case All: 00201 return i18n("All"); 00202 case Frequent: 00203 return i18n("Frequent"); 00204 case Address: 00205 return i18n("Address"); 00206 case Email: 00207 return i18n("Email"); 00208 case Personal: 00209 return i18n("Personal"); 00210 case Organization: 00211 return i18n("Organization"); 00212 case CustomCategory: 00213 return i18n("Custom"); 00214 default: 00215 return i18n("Undefined"); 00216 } 00217 } 00218 00219 QString Field::value( const KABC::Addressee &a ) 00220 { 00221 switch ( mImpl->fieldId() ) { 00222 case FieldImpl::FormattedName: 00223 return a.formattedName(); 00224 case FieldImpl::FamilyName: 00225 return a.familyName(); 00226 case FieldImpl::GivenName: 00227 return a.givenName(); 00228 case FieldImpl::AdditionalName: 00229 return a.additionalName(); 00230 case FieldImpl::Prefix: 00231 return a.prefix(); 00232 case FieldImpl::Suffix: 00233 return a.suffix(); 00234 case FieldImpl::NickName: 00235 return a.nickName(); 00236 case FieldImpl::Mailer: 00237 return a.mailer(); 00238 case FieldImpl::Title: 00239 return a.title(); 00240 case FieldImpl::Role: 00241 return a.role(); 00242 case FieldImpl::Organization: 00243 return a.organization(); 00244 case FieldImpl::Note: 00245 return a.note(); 00246 case FieldImpl::Email: 00247 return a.preferredEmail(); 00248 case FieldImpl::Birthday: 00249 if ( a.birthday().isValid() ) 00250 return a.birthday().date().toString( Qt::ISODate ); 00251 else 00252 return QString::null; 00253 case FieldImpl::Url: 00254 return a.url().prettyURL(); 00255 case FieldImpl::HomePhone: 00256 { 00257 // check for preferred number 00258 PhoneNumber::List list = a.phoneNumbers( PhoneNumber::Home | PhoneNumber::Pref ); 00259 PhoneNumber::List::Iterator it; 00260 for ( it = list.begin(); it != list.end(); ++it ) 00261 if ( ((*it).type() & ~(PhoneNumber::Pref)) == PhoneNumber::Home ) 00262 return (*it).number(); 00263 00264 // check for normal home number 00265 list = a.phoneNumbers( PhoneNumber::Home ); 00266 for ( it = list.begin(); it != list.end(); ++it ) 00267 if ( ((*it).type() & ~(PhoneNumber::Pref)) == PhoneNumber::Home ) 00268 return (*it).number(); 00269 00270 return QString::null; 00271 } 00272 case FieldImpl::BusinessPhone: 00273 { 00274 // check for preferred number 00275 PhoneNumber::List list = a.phoneNumbers( PhoneNumber::Work | PhoneNumber::Pref ); 00276 PhoneNumber::List::Iterator it; 00277 for ( it = list.begin(); it != list.end(); ++it ) 00278 if ( ((*it).type() & ~(PhoneNumber::Pref)) == PhoneNumber::Work ) 00279 return (*it).number(); 00280 00281 // check for normal work number 00282 list = a.phoneNumbers( PhoneNumber::Work ); 00283 for ( it = list.begin(); it != list.end(); ++it ) 00284 if ( ((*it).type() & ~(PhoneNumber::Pref)) == PhoneNumber::Work ) 00285 return (*it).number(); 00286 return QString::null; 00287 } 00288 case FieldImpl::MobilePhone: 00289 return a.phoneNumber( PhoneNumber::Cell ).number(); 00290 case FieldImpl::HomeFax: 00291 return a.phoneNumber( PhoneNumber::Home | PhoneNumber::Fax ).number(); 00292 case FieldImpl::BusinessFax: 00293 return a.phoneNumber( PhoneNumber::Work | PhoneNumber::Fax ).number(); 00294 case FieldImpl::CarPhone: 00295 return a.phoneNumber( PhoneNumber::Car ).number(); 00296 case FieldImpl::Isdn: 00297 return a.phoneNumber( PhoneNumber::Isdn ).number(); 00298 case FieldImpl::Pager: 00299 return a.phoneNumber( PhoneNumber::Pager ).number(); 00300 case FieldImpl::HomeAddressStreet: 00301 return a.address( Address::Home ).street(); 00302 case FieldImpl::HomeAddressLocality: 00303 return a.address( Address::Home ).locality(); 00304 case FieldImpl::HomeAddressRegion: 00305 return a.address( Address::Home ).region(); 00306 case FieldImpl::HomeAddressPostalCode: 00307 return a.address( Address::Home ).postalCode(); 00308 case FieldImpl::HomeAddressCountry: 00309 return a.address( Address::Home ).country(); 00310 case FieldImpl::BusinessAddressStreet: 00311 return a.address( Address::Work ).street(); 00312 case FieldImpl::BusinessAddressLocality: 00313 return a.address( Address::Work ).locality(); 00314 case FieldImpl::BusinessAddressRegion: 00315 return a.address( Address::Work ).region(); 00316 case FieldImpl::BusinessAddressPostalCode: 00317 return a.address( Address::Work ).postalCode(); 00318 case FieldImpl::BusinessAddressCountry: 00319 return a.address( Address::Work ).country(); 00320 case FieldImpl::CustomField: 00321 return a.custom( mImpl->app(), mImpl->key() ); 00322 default: 00323 return QString::null; 00324 } 00325 } 00326 00327 bool Field::setValue( KABC::Addressee &a, const QString &value ) 00328 { 00329 switch ( mImpl->fieldId() ) { 00330 case FieldImpl::FormattedName: 00331 a.setFormattedName( value ); 00332 return true; 00333 case FieldImpl::FamilyName: 00334 a.setFamilyName( value ); 00335 return true; 00336 case FieldImpl::GivenName: 00337 a.setGivenName( value ); 00338 return true; 00339 case FieldImpl::AdditionalName: 00340 a.setAdditionalName( value ); 00341 return true; 00342 case FieldImpl::Prefix: 00343 a.setPrefix( value ); 00344 return true; 00345 case FieldImpl::Suffix: 00346 a.setSuffix( value ); 00347 return true; 00348 case FieldImpl::NickName: 00349 a.setNickName( value ); 00350 return true; 00351 case FieldImpl::Mailer: 00352 a.setMailer( value ); 00353 return true; 00354 case FieldImpl::Title: 00355 a.setTitle( value ); 00356 return true; 00357 case FieldImpl::Role: 00358 a.setRole( value ); 00359 return true; 00360 case FieldImpl::Organization: 00361 a.setOrganization( value ); 00362 return true; 00363 case FieldImpl::Note: 00364 a.setNote( value ); 00365 return true; 00366 case FieldImpl::Birthday: 00367 a.setBirthday( QDate::fromString( value, Qt::ISODate ) ); 00368 case FieldImpl::CustomField: 00369 a.insertCustom( mImpl->app(), mImpl->key(), value ); 00370 default: 00371 return false; 00372 } 00373 } 00374 00375 QString Field::sortKey( const KABC::Addressee &a ) 00376 { 00377 switch ( mImpl->fieldId() ) { 00378 case FieldImpl::FormattedName: 00379 return a.formattedName(); 00380 case FieldImpl::FamilyName: 00381 return a.familyName(); 00382 case FieldImpl::GivenName: 00383 return a.givenName(); 00384 case FieldImpl::AdditionalName: 00385 return a.additionalName(); 00386 case FieldImpl::Prefix: 00387 return a.prefix(); 00388 case FieldImpl::Suffix: 00389 return a.suffix(); 00390 case FieldImpl::NickName: 00391 return a.nickName(); 00392 case FieldImpl::Mailer: 00393 return a.mailer(); 00394 case FieldImpl::Title: 00395 return a.title(); 00396 case FieldImpl::Role: 00397 return a.role(); 00398 case FieldImpl::Organization: 00399 return a.organization(); 00400 case FieldImpl::Note: 00401 return a.note(); 00402 case FieldImpl::Birthday: 00403 if ( a.birthday().isValid() ) { 00404 QDate date = a.birthday().date(); 00405 QString key; 00406 key.sprintf( "%02d-%02d", date.month(), date.day() ); 00407 return key; 00408 } else 00409 return QString( "00-00" ); 00410 default: 00411 return value( a ).lower(); 00412 } 00413 } 00414 00415 bool Field::isCustom() 00416 { 00417 return mImpl->fieldId() == FieldImpl::CustomField; 00418 } 00419 00420 Field::List Field::allFields() 00421 { 00422 if ( mAllFields.isEmpty() ) { 00423 createField( FieldImpl::FormattedName, Frequent ); 00424 createField( FieldImpl::FamilyName, Frequent ); 00425 createField( FieldImpl::GivenName, Frequent ); 00426 createField( FieldImpl::AdditionalName ); 00427 createField( FieldImpl::Prefix ); 00428 createField( FieldImpl::Suffix ); 00429 createField( FieldImpl::NickName, Personal ); 00430 createField( FieldImpl::Birthday, Personal ); 00431 createField( FieldImpl::HomeAddressStreet, Address|Personal ); 00432 createField( FieldImpl::HomeAddressLocality, Address|Personal ); 00433 createField( FieldImpl::HomeAddressRegion, Address|Personal ); 00434 createField( FieldImpl::HomeAddressPostalCode, Address|Personal ); 00435 createField( FieldImpl::HomeAddressCountry, Address|Personal ); 00436 createField( FieldImpl::HomeAddressLabel, Address|Personal ); 00437 createField( FieldImpl::BusinessAddressStreet, Address|Organization ); 00438 createField( FieldImpl::BusinessAddressLocality, Address|Organization ); 00439 createField( FieldImpl::BusinessAddressRegion, Address|Organization ); 00440 createField( FieldImpl::BusinessAddressPostalCode, Address|Organization ); 00441 createField( FieldImpl::BusinessAddressCountry, Address|Organization ); 00442 createField( FieldImpl::BusinessAddressLabel, Address|Organization ); 00443 createField( FieldImpl::HomePhone, Personal|Frequent ); 00444 createField( FieldImpl::BusinessPhone, Organization|Frequent ); 00445 createField( FieldImpl::MobilePhone, Frequent ); 00446 createField( FieldImpl::HomeFax ); 00447 createField( FieldImpl::BusinessFax ); 00448 createField( FieldImpl::CarPhone ); 00449 createField( FieldImpl::Isdn ); 00450 createField( FieldImpl::Pager ); 00451 createField( FieldImpl::Email, Email|Frequent ); 00452 createField( FieldImpl::Mailer, Email ); 00453 createField( FieldImpl::Title, Organization ); 00454 createField( FieldImpl::Role, Organization ); 00455 createField( FieldImpl::Organization, Organization ); 00456 createField( FieldImpl::Note ); 00457 createField( FieldImpl::Url ); 00458 } 00459 00460 return mAllFields; 00461 } 00462 00463 Field::List Field::defaultFields() 00464 { 00465 if ( mDefaultFields.isEmpty() ) { 00466 createDefaultField( FieldImpl::GivenName ); 00467 createDefaultField( FieldImpl::FamilyName ); 00468 createDefaultField( FieldImpl::Email ); 00469 } 00470 00471 return mDefaultFields; 00472 } 00473 00474 void Field::createField( int id, int category ) 00475 { 00476 mAllFields.append( new Field( new FieldImpl( id, category ) ) ); 00477 } 00478 00479 void Field::createDefaultField( int id, int category ) 00480 { 00481 mDefaultFields.append( new Field( new FieldImpl( id, category ) ) ); 00482 } 00483 00484 void Field::deleteFields() 00485 { 00486 Field::List::ConstIterator it; 00487 00488 for( it = mAllFields.begin(); it != mAllFields.end(); ++it ) { 00489 delete (*it); 00490 } 00491 mAllFields.clear(); 00492 00493 for( it = mDefaultFields.begin(); it != mDefaultFields.end(); ++it ) { 00494 delete (*it); 00495 } 00496 mDefaultFields.clear(); 00497 00498 for( it = mCustomFields.begin(); it != mCustomFields.end(); ++it ) { 00499 delete (*it); 00500 } 00501 mCustomFields.clear(); 00502 } 00503 00504 void Field::saveFields( const QString &identifier, 00505 const Field::List &fields ) 00506 { 00507 KConfig *cfg = KGlobal::config(); 00508 KConfigGroupSaver( cfg, "KABCFields" ); 00509 00510 saveFields( cfg, identifier, fields ); 00511 } 00512 00513 void Field::saveFields( KConfig *cfg, const QString &identifier, 00514 const Field::List &fields ) 00515 { 00516 QValueList<int> fieldIds; 00517 00518 int custom = 0; 00519 Field::List::ConstIterator it; 00520 for( it = fields.begin(); it != fields.end(); ++it ) { 00521 fieldIds.append( (*it)->mImpl->fieldId() ); 00522 if( (*it)->isCustom() ) { 00523 QStringList customEntry; 00524 customEntry << (*it)->mImpl->label(); 00525 customEntry << (*it)->mImpl->key(); 00526 customEntry << (*it)->mImpl->app(); 00527 cfg->writeEntry( "KABC_CustomEntry_" + identifier + "_" + 00528 QString::number( custom++ ), customEntry ); 00529 } 00530 } 00531 00532 cfg->writeEntry( identifier, fieldIds ); 00533 } 00534 00535 Field::List Field::restoreFields( const QString &identifier ) 00536 { 00537 KConfig *cfg = KGlobal::config(); 00538 KConfigGroupSaver( cfg, "KABCFields" ); 00539 00540 return restoreFields( cfg, identifier ); 00541 } 00542 00543 Field::List Field::restoreFields( KConfig *cfg, const QString &identifier ) 00544 { 00545 QValueList<int> fieldIds = cfg->readIntListEntry( identifier ); 00546 00547 Field::List fields; 00548 00549 int custom = 0; 00550 QValueList<int>::ConstIterator it; 00551 for( it = fieldIds.begin(); it != fieldIds.end(); ++it ) { 00552 FieldImpl *f = 0; 00553 if ( (*it) == FieldImpl::CustomField ) { 00554 QStringList customEntry = cfg->readListEntry( "KABC_CustomEntry_" + 00555 identifier + "_" + 00556 QString::number( custom++ ) ); 00557 f = new FieldImpl( *it, CustomCategory, customEntry[ 0 ], 00558 customEntry[ 1 ], customEntry[ 2 ] ); 00559 } else { 00560 f = new FieldImpl( *it ); 00561 } 00562 fields.append( new Field( f ) ); 00563 } 00564 00565 return fields; 00566 } 00567 00568 bool Field::equals( Field *field ) 00569 { 00570 bool sameId = ( mImpl->fieldId() == field->mImpl->fieldId() ); 00571 00572 if ( !sameId ) return false; 00573 00574 if ( mImpl->fieldId() != FieldImpl::CustomField ) return true; 00575 00576 return mImpl->key() == field->mImpl->key(); 00577 } 00578 00579 Field *Field::createCustomField( const QString &label, int category, 00580 const QString &key, const QString &app ) 00581 { 00582 Field *field = new Field( new FieldImpl( FieldImpl::CustomField, 00583 category | CustomCategory, 00584 label, key, app ) ); 00585 mCustomFields.append( field ); 00586 00587 return field; 00588 }
KDE Logo
This file is part of the documentation for kabc Library Version 3.3.1.
Documentation copyright © 1996-2004 the KDE developers.
Generated on Sun Oct 17 11:33:00 2004 by doxygen 1.3.8 written by Dimitri van Heesch, © 1997-2003