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 PhoneNumber::List list = a.phoneNumbers( PhoneNumber::Home ); 00258 PhoneNumber::List::Iterator it; 00259 for ( it = list.begin(); it != list.end(); ++it ) 00260 if ( ((*it).type() & ~(PhoneNumber::Pref)) == PhoneNumber::Home ) 00261 return (*it).number(); 00262 return QString::null; 00263 } 00264 case FieldImpl::BusinessPhone: 00265 { 00266 PhoneNumber::List list = a.phoneNumbers( PhoneNumber::Work ); 00267 PhoneNumber::List::Iterator it; 00268 for ( it = list.begin(); it != list.end(); ++it ) 00269 if ( ((*it).type() & ~(PhoneNumber::Pref)) == PhoneNumber::Work ) 00270 return (*it).number(); 00271 return QString::null; 00272 } 00273 case FieldImpl::MobilePhone: 00274 return a.phoneNumber( PhoneNumber::Cell ).number(); 00275 case FieldImpl::HomeFax: 00276 return a.phoneNumber( PhoneNumber::Home | PhoneNumber::Fax ).number(); 00277 case FieldImpl::BusinessFax: 00278 return a.phoneNumber( PhoneNumber::Work | PhoneNumber::Fax ).number(); 00279 case FieldImpl::CarPhone: 00280 return a.phoneNumber( PhoneNumber::Car ).number(); 00281 case FieldImpl::Isdn: 00282 return a.phoneNumber( PhoneNumber::Isdn ).number(); 00283 case FieldImpl::Pager: 00284 return a.phoneNumber( PhoneNumber::Pager ).number(); 00285 case FieldImpl::HomeAddressStreet: 00286 return a.address( Address::Home ).street(); 00287 case FieldImpl::HomeAddressLocality: 00288 return a.address( Address::Home ).locality(); 00289 case FieldImpl::HomeAddressRegion: 00290 return a.address( Address::Home ).region(); 00291 case FieldImpl::HomeAddressPostalCode: 00292 return a.address( Address::Home ).postalCode(); 00293 case FieldImpl::HomeAddressCountry: 00294 return a.address( Address::Home ).country(); 00295 case FieldImpl::BusinessAddressStreet: 00296 return a.address( Address::Work ).street(); 00297 case FieldImpl::BusinessAddressLocality: 00298 return a.address( Address::Work ).locality(); 00299 case FieldImpl::BusinessAddressRegion: 00300 return a.address( Address::Work ).region(); 00301 case FieldImpl::BusinessAddressPostalCode: 00302 return a.address( Address::Work ).postalCode(); 00303 case FieldImpl::BusinessAddressCountry: 00304 return a.address( Address::Work ).country(); 00305 case FieldImpl::CustomField: 00306 return a.custom( mImpl->app(), mImpl->key() ); 00307 default: 00308 return QString::null; 00309 } 00310 } 00311 00312 bool Field::setValue( KABC::Addressee &a, const QString &value ) 00313 { 00314 switch ( mImpl->fieldId() ) { 00315 case FieldImpl::FormattedName: 00316 a.setFormattedName( value ); 00317 return true; 00318 case FieldImpl::FamilyName: 00319 a.setFamilyName( value ); 00320 return true; 00321 case FieldImpl::GivenName: 00322 a.setGivenName( value ); 00323 return true; 00324 case FieldImpl::AdditionalName: 00325 a.setAdditionalName( value ); 00326 return true; 00327 case FieldImpl::Prefix: 00328 a.setPrefix( value ); 00329 return true; 00330 case FieldImpl::Suffix: 00331 a.setSuffix( value ); 00332 return true; 00333 case FieldImpl::NickName: 00334 a.setNickName( value ); 00335 return true; 00336 case FieldImpl::Mailer: 00337 a.setMailer( value ); 00338 return true; 00339 case FieldImpl::Title: 00340 a.setTitle( value ); 00341 return true; 00342 case FieldImpl::Role: 00343 a.setRole( value ); 00344 return true; 00345 case FieldImpl::Organization: 00346 a.setOrganization( value ); 00347 return true; 00348 case FieldImpl::Note: 00349 a.setNote( value ); 00350 return true; 00351 case FieldImpl::Birthday: 00352 a.setBirthday( QDate::fromString( value, Qt::ISODate ) ); 00353 case FieldImpl::CustomField: 00354 a.insertCustom( mImpl->app(), mImpl->key(), value ); 00355 default: 00356 return false; 00357 } 00358 } 00359 00360 QString Field::sortKey( const KABC::Addressee &a ) 00361 { 00362 switch ( mImpl->fieldId() ) { 00363 case FieldImpl::FormattedName: 00364 return a.formattedName(); 00365 case FieldImpl::FamilyName: 00366 return a.familyName(); 00367 case FieldImpl::GivenName: 00368 return a.givenName(); 00369 case FieldImpl::AdditionalName: 00370 return a.additionalName(); 00371 case FieldImpl::Prefix: 00372 return a.prefix(); 00373 case FieldImpl::Suffix: 00374 return a.suffix(); 00375 case FieldImpl::NickName: 00376 return a.nickName(); 00377 case FieldImpl::Mailer: 00378 return a.mailer(); 00379 case FieldImpl::Title: 00380 return a.title(); 00381 case FieldImpl::Role: 00382 return a.role(); 00383 case FieldImpl::Organization: 00384 return a.organization(); 00385 case FieldImpl::Note: 00386 return a.note(); 00387 case FieldImpl::Birthday: 00388 if ( a.birthday().isValid() ) { 00389 QDate date = a.birthday().date(); 00390 QString key; 00391 key.sprintf( "%02d-%02d", date.month(), date.day() ); 00392 return key; 00393 } else 00394 return QString( "00-00" ); 00395 default: 00396 return value( a ).lower(); 00397 } 00398 } 00399 00400 bool Field::isCustom() 00401 { 00402 return mImpl->fieldId() == FieldImpl::CustomField; 00403 } 00404 00405 Field::List Field::allFields() 00406 { 00407 if ( mAllFields.isEmpty() ) { 00408 createField( FieldImpl::FormattedName, Frequent ); 00409 createField( FieldImpl::FamilyName, Frequent ); 00410 createField( FieldImpl::GivenName, Frequent ); 00411 createField( FieldImpl::AdditionalName ); 00412 createField( FieldImpl::Prefix ); 00413 createField( FieldImpl::Suffix ); 00414 createField( FieldImpl::NickName, Personal ); 00415 createField( FieldImpl::Birthday, Personal ); 00416 createField( FieldImpl::HomeAddressStreet, Address|Personal ); 00417 createField( FieldImpl::HomeAddressLocality, Address|Personal ); 00418 createField( FieldImpl::HomeAddressRegion, Address|Personal ); 00419 createField( FieldImpl::HomeAddressPostalCode, Address|Personal ); 00420 createField( FieldImpl::HomeAddressCountry, Address|Personal ); 00421 createField( FieldImpl::HomeAddressLabel, Address|Personal ); 00422 createField( FieldImpl::BusinessAddressStreet, Address|Organization ); 00423 createField( FieldImpl::BusinessAddressLocality, Address|Organization ); 00424 createField( FieldImpl::BusinessAddressRegion, Address|Organization ); 00425 createField( FieldImpl::BusinessAddressPostalCode, Address|Organization ); 00426 createField( FieldImpl::BusinessAddressCountry, Address|Organization ); 00427 createField( FieldImpl::BusinessAddressLabel, Address|Organization ); 00428 createField( FieldImpl::HomePhone, Personal|Frequent ); 00429 createField( FieldImpl::BusinessPhone, Organization|Frequent ); 00430 createField( FieldImpl::MobilePhone, Frequent ); 00431 createField( FieldImpl::HomeFax ); 00432 createField( FieldImpl::BusinessFax ); 00433 createField( FieldImpl::CarPhone ); 00434 createField( FieldImpl::Isdn ); 00435 createField( FieldImpl::Pager ); 00436 createField( FieldImpl::Email, Email|Frequent ); 00437 createField( FieldImpl::Mailer, Email ); 00438 createField( FieldImpl::Title, Organization ); 00439 createField( FieldImpl::Role, Organization ); 00440 createField( FieldImpl::Organization, Organization ); 00441 createField( FieldImpl::Note ); 00442 createField( FieldImpl::Url ); 00443 } 00444 00445 return mAllFields; 00446 } 00447 00448 Field::List Field::defaultFields() 00449 { 00450 if ( mDefaultFields.isEmpty() ) { 00451 createDefaultField( FieldImpl::GivenName ); 00452 createDefaultField( FieldImpl::FamilyName ); 00453 createDefaultField( FieldImpl::Email ); 00454 } 00455 00456 return mDefaultFields; 00457 } 00458 00459 void Field::createField( int id, int category ) 00460 { 00461 mAllFields.append( new Field( new FieldImpl( id, category ) ) ); 00462 } 00463 00464 void Field::createDefaultField( int id, int category ) 00465 { 00466 mDefaultFields.append( new Field( new FieldImpl( id, category ) ) ); 00467 } 00468 00469 void Field::deleteFields() 00470 { 00471 Field::List::ConstIterator it; 00472 00473 for( it = mAllFields.begin(); it != mAllFields.end(); ++it ) { 00474 delete (*it); 00475 } 00476 mAllFields.clear(); 00477 00478 for( it = mDefaultFields.begin(); it != mDefaultFields.end(); ++it ) { 00479 delete (*it); 00480 } 00481 mDefaultFields.clear(); 00482 00483 for( it = mCustomFields.begin(); it != mCustomFields.end(); ++it ) { 00484 delete (*it); 00485 } 00486 mCustomFields.clear(); 00487 } 00488 00489 void Field::saveFields( const QString &identifier, 00490 const Field::List &fields ) 00491 { 00492 KConfig *cfg = KGlobal::config(); 00493 KConfigGroupSaver( cfg, "KABCFields" ); 00494 00495 saveFields( cfg, identifier, fields ); 00496 } 00497 00498 void Field::saveFields( KConfig *cfg, const QString &identifier, 00499 const Field::List &fields ) 00500 { 00501 QValueList<int> fieldIds; 00502 00503 int custom = 0; 00504 Field::List::ConstIterator it; 00505 for( it = fields.begin(); it != fields.end(); ++it ) { 00506 fieldIds.append( (*it)->mImpl->fieldId() ); 00507 if( (*it)->isCustom() ) { 00508 QStringList customEntry; 00509 customEntry << (*it)->mImpl->label(); 00510 customEntry << (*it)->mImpl->key(); 00511 customEntry << (*it)->mImpl->app(); 00512 cfg->writeEntry( "KABC_CustomEntry_" + identifier + "_" + 00513 QString::number( custom++ ), customEntry ); 00514 } 00515 } 00516 00517 cfg->writeEntry( identifier, fieldIds ); 00518 } 00519 00520 Field::List Field::restoreFields( const QString &identifier ) 00521 { 00522 KConfig *cfg = KGlobal::config(); 00523 KConfigGroupSaver( cfg, "KABCFields" ); 00524 00525 return restoreFields( cfg, identifier ); 00526 } 00527 00528 Field::List Field::restoreFields( KConfig *cfg, const QString &identifier ) 00529 { 00530 QValueList<int> fieldIds = cfg->readIntListEntry( identifier ); 00531 00532 Field::List fields; 00533 00534 int custom = 0; 00535 QValueList<int>::ConstIterator it; 00536 for( it = fieldIds.begin(); it != fieldIds.end(); ++it ) { 00537 FieldImpl *f = 0; 00538 if ( (*it) == FieldImpl::CustomField ) { 00539 QStringList customEntry = cfg->readListEntry( "KABC_CustomEntry_" + 00540 identifier + "_" + 00541 QString::number( custom++ ) ); 00542 f = new FieldImpl( *it, CustomCategory, customEntry[ 0 ], 00543 customEntry[ 1 ], customEntry[ 2 ] ); 00544 } else { 00545 f = new FieldImpl( *it ); 00546 } 00547 fields.append( new Field( f ) ); 00548 } 00549 00550 return fields; 00551 } 00552 00553 bool Field::equals( Field *field ) 00554 { 00555 bool sameId = ( mImpl->fieldId() == field->mImpl->fieldId() ); 00556 00557 if ( !sameId ) return false; 00558 00559 if ( mImpl->fieldId() != FieldImpl::CustomField ) return true; 00560 00561 return mImpl->key() == field->mImpl->key(); 00562 } 00563 00564 Field *Field::createCustomField( const QString &label, int category, 00565 const QString &key, const QString &app ) 00566 { 00567 Field *field = new Field( new FieldImpl( FieldImpl::CustomField, 00568 category | CustomCategory, 00569 label, key, app ) ); 00570 mCustomFields.append( field ); 00571 00572 return field; 00573 }
KDE Logo
This file is part of the documentation for kabc Library Version 3.2.3.
Documentation copyright © 1996-2004 the KDE developers.
Generated on Fri Oct 8 11:15:47 2004 by doxygen 1.3.7 written by Dimitri van Heesch, © 1997-2003