kitchensync Library API Documentation

addressbooksyncee.cpp

00001 /* 00002 This file is part of KitchenSync. 00003 00004 Copyright (c) 2002,2004 Cornelius Schumacher <schumacher@kde.org> 00005 Copyright (c) 2002 Holger Freyther <zecke@handhelds.org> 00006 00007 This library is free software; you can redistribute it and/or 00008 modify it under the terms of the GNU Library General Public 00009 License as published by the Free Software Foundation; either 00010 version 2 of the License, or (at your option) any later version. 00011 00012 This library is distributed in the hope that it will be useful, 00013 but WITHOUT ANY WARRANTY; without even the implied warranty of 00014 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00015 Library General Public License for more details. 00016 00017 You should have received a copy of the GNU Library General Public License 00018 along with this library; see the file COPYING.LIB. If not, write to 00019 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, 00020 Boston, MA 02111-1307, USA. 00021 */ 00022 00023 #include "addressbooksyncee.h" 00024 00025 #include "syncee.h" 00026 00027 #include <libkdepim/addresseediffalgo.h> 00028 #include <libkdepim/kabcresourcenull.h> 00029 00030 #include <kapplication.h> 00031 #include <kdebug.h> 00032 #include <kstaticdeleter.h> 00033 00034 using namespace KSync; 00035 00036 AddressBookSyncEntry::AddressBookSyncEntry( const KABC::Addressee &a, 00037 Syncee *parent ) 00038 : SyncEntry( parent ) 00039 { 00040 mAddressee = a; 00041 } 00042 00043 AddressBookSyncEntry::AddressBookSyncEntry( const AddressBookSyncEntry& entry ) 00044 : SyncEntry( entry ) 00045 { 00046 mAddressee = entry.mAddressee; 00047 m_res = entry.m_res; 00048 } 00049 00050 QString AddressBookSyncEntry::name() 00051 { 00052 return mAddressee.realName(); 00053 } 00054 00055 QString AddressBookSyncEntry::id() 00056 { 00057 return mAddressee.uid(); 00058 } 00059 00060 void AddressBookSyncEntry::setId(const QString& id) 00061 { 00062 mAddressee.setUid( id ); 00063 } 00064 00065 AddressBookSyncEntry *AddressBookSyncEntry::clone() 00066 { 00067 return new AddressBookSyncEntry( *this ); 00068 } 00069 00070 QString AddressBookSyncEntry::timestamp() 00071 { 00072 QDateTime r = mAddressee.revision(); 00073 if ( r.isValid() ) return r.toString(); 00074 else return "norevision"; 00075 } 00076 00077 QString AddressBookSyncEntry::type() const 00078 { 00079 return QString::fromLatin1("AddressBookSyncEntry"); 00080 } 00081 00082 bool AddressBookSyncEntry::equals( SyncEntry *entry ) 00083 { 00084 AddressBookSyncEntry *abEntry = dynamic_cast<AddressBookSyncEntry *>(entry); 00085 if ( !abEntry ) { 00086 kdDebug(5228) << "AddressBookSyncee::equals(): Wrong type." << endl; 00087 return false; 00088 } 00089 00090 if ( mAddressee == abEntry->addressee() ) { 00091 kdDebug(5228) << "AddressBookSyncEntry::equals(): '" << entry->name() << "':" 00092 << "equal" << endl; 00093 return true; 00094 } else { 00095 kdDebug(5228) << "AddressBookSyncEntry::equals(): '" << entry->name() << "':" 00096 << "not equal" << endl; 00097 return false; 00098 } 00099 } 00100 00101 QString AddressBookSyncEntry::resource() const 00102 { 00103 return m_res; 00104 } 00105 00106 void AddressBookSyncEntry::setResource( const QString &str ) 00107 { 00108 m_res = str; 00109 } 00110 00111 KPIM::DiffAlgo* AddressBookSyncEntry::diffAlgo( SyncEntry *syncEntry, SyncEntry *targetEntry ) 00112 { 00113 AddressBookSyncEntry *abSyncEntry = dynamic_cast<AddressBookSyncEntry*>( syncEntry ); 00114 AddressBookSyncEntry *abTargetEntry = dynamic_cast<AddressBookSyncEntry*>( targetEntry ); 00115 00116 if ( !abSyncEntry || !abTargetEntry ) 00117 return 0; 00118 00119 return new KPIM::AddresseeDiffAlgo( abSyncEntry->addressee(), abTargetEntry->addressee() ); 00120 } 00121 00122 /* 00123 * mergeWith hell :) 00124 * I hope it's worth the effort 00125 * 00126 */ 00127 /* merge function */ 00128 typedef void (*merge)(KABC::Addressee&, const KABC::Addressee& ); 00129 typedef QMap<int, merge> MergeMap; 00130 00131 static MergeMap* mergeMap= 0; 00132 static KStaticDeleter<MergeMap> mergeMapDeleter; 00133 00134 /* merge functions */ 00135 static void mergeFamily ( KABC::Addressee&, const KABC::Addressee& ); 00136 static void mergeGiven ( KABC::Addressee&, const KABC::Addressee& ); 00137 static void mergeAdditional( KABC::Addressee&, const KABC::Addressee& ); 00138 static void mergePrefix ( KABC::Addressee&, const KABC::Addressee& ); 00139 static void mergeSuffix ( KABC::Addressee&, const KABC::Addressee& ); 00140 static void mergeNick ( KABC::Addressee&, const KABC::Addressee& ); 00141 static void mergeBirth ( KABC::Addressee&, const KABC::Addressee& ); 00142 static void mergeHome ( KABC::Addressee&, const KABC::Addressee& ); 00143 static void mergeBus ( KABC::Addressee&, const KABC::Addressee& ); 00144 static void mergeTime ( KABC::Addressee&, const KABC::Addressee& ); 00145 static void mergeGeo ( KABC::Addressee&, const KABC::Addressee& ); 00146 static void mergeTitle ( KABC::Addressee&, const KABC::Addressee& ); 00147 static void mergeRole ( KABC::Addressee&, const KABC::Addressee& ); 00148 static void mergeOrg ( KABC::Addressee&, const KABC::Addressee& ); 00149 static void mergeNote ( KABC::Addressee&, const KABC::Addressee& ); 00150 static void mergeUrl ( KABC::Addressee&, const KABC::Addressee& ); 00151 static void mergeSecrecy ( KABC::Addressee&, const KABC::Addressee& ); 00152 static void mergePicture ( KABC::Addressee&, const KABC::Addressee& ); 00153 static void mergeSound ( KABC::Addressee&, const KABC::Addressee& ); 00154 static void mergeAgent ( KABC::Addressee&, const KABC::Addressee& ); 00155 static void mergeHomeTel ( KABC::Addressee&, const KABC::Addressee& ); 00156 static void mergeOffTel ( KABC::Addressee&, const KABC::Addressee& ); 00157 static void mergeMessenger ( KABC::Addressee&, const KABC::Addressee& ); 00158 static void mergePreferredNumber( KABC::Addressee&, const KABC::Addressee& ); 00159 static void mergeVoice ( KABC::Addressee&, const KABC::Addressee& ); 00160 static void mergeFax ( KABC::Addressee&, const KABC::Addressee& ); 00161 static void mergeCell ( KABC::Addressee&, const KABC::Addressee& ); 00162 static void mergeVideo ( KABC::Addressee&, const KABC::Addressee& ); 00163 static void mergeMailbox ( KABC::Addressee&, const KABC::Addressee& ); 00164 static void mergeModem ( KABC::Addressee&, const KABC::Addressee& ); 00165 static void mergeCarPhone ( KABC::Addressee&, const KABC::Addressee& ); 00166 static void mergeISDN ( KABC::Addressee&, const KABC::Addressee& ); 00167 static void mergePCS ( KABC::Addressee&, const KABC::Addressee& ); 00168 static void mergePager ( KABC::Addressee&, const KABC::Addressee& ); 00169 static void mergeHomeFax ( KABC::Addressee&, const KABC::Addressee& ); 00170 static void mergeWorkFax ( KABC::Addressee&, const KABC::Addressee& ); 00171 static void mergeOtherTel ( KABC::Addressee&, const KABC::Addressee& ); 00172 static void mergeCat ( KABC::Addressee&, const KABC::Addressee& ); 00173 static void mergeKeys ( KABC::Addressee&, const KABC::Addressee& ); 00174 static void mergeCustom ( KABC::Addressee&, const KABC::Addressee& ); 00175 static void mergeLogo ( KABC::Addressee&, const KABC::Addressee& ); 00176 static void mergeEmail ( KABC::Addressee&, const KABC::Addressee& ); 00177 static void mergeEmails ( KABC::Addressee&, const KABC::Addressee& ); 00178 00179 00180 MergeMap* mergeMappi() { 00181 if (!mergeMap ) { 00182 mergeMapDeleter.setObject( mergeMap, new MergeMap ); 00183 mergeMap->insert(AddressBookSyncee::FamilyName, mergeFamily ); 00184 mergeMap->insert(AddressBookSyncee::GivenName, mergeGiven ); 00185 mergeMap->insert(AddressBookSyncee::AdditionalName, mergeAdditional ); 00186 mergeMap->insert(AddressBookSyncee::Prefix, mergePrefix ); 00187 mergeMap->insert(AddressBookSyncee::Suffix, mergeSuffix ); 00188 mergeMap->insert(AddressBookSyncee::NickName, mergeNick ); 00189 mergeMap->insert(AddressBookSyncee::Birthday, mergeBirth ); 00190 mergeMap->insert(AddressBookSyncee::HomeAddress, mergeHome ); 00191 mergeMap->insert(AddressBookSyncee::BusinessAddress, mergeBus ); 00192 mergeMap->insert(AddressBookSyncee::TimeZone, mergeTime ); 00193 mergeMap->insert(AddressBookSyncee::Geo, mergeGeo ); 00194 mergeMap->insert(AddressBookSyncee::Title, mergeTitle ); 00195 mergeMap->insert(AddressBookSyncee::Role, mergeRole ); 00196 mergeMap->insert(AddressBookSyncee::Organization, mergeOrg ); 00197 mergeMap->insert(AddressBookSyncee::Note, mergeNote ); 00198 mergeMap->insert(AddressBookSyncee::Url, mergeUrl ); 00199 mergeMap->insert(AddressBookSyncee::Secrecy, mergeSecrecy ); 00200 mergeMap->insert(AddressBookSyncee::Picture, mergePicture ); 00201 mergeMap->insert(AddressBookSyncee::Sound, mergeSound ); 00202 mergeMap->insert(AddressBookSyncee::Agent, mergeAgent ); 00203 mergeMap->insert(AddressBookSyncee::HomeNumbers, mergeHomeTel ); 00204 mergeMap->insert(AddressBookSyncee::OfficeNumbers, mergeOffTel ); 00205 mergeMap->insert(AddressBookSyncee::Messenger, mergeMessenger ); 00206 mergeMap->insert(AddressBookSyncee::PreferredNumber, mergePreferredNumber ); 00207 mergeMap->insert(AddressBookSyncee::Voice, mergeVoice ); 00208 mergeMap->insert(AddressBookSyncee::Fax, mergeFax ); 00209 mergeMap->insert(AddressBookSyncee::Cell, mergeCell ); 00210 mergeMap->insert(AddressBookSyncee::Video, mergeVideo ); 00211 mergeMap->insert(AddressBookSyncee::Mailbox, mergeMailbox ); 00212 mergeMap->insert(AddressBookSyncee::Modem, mergeModem ); 00213 mergeMap->insert(AddressBookSyncee::CarPhone, mergeCarPhone ); 00214 mergeMap->insert(AddressBookSyncee::ISDN, mergeISDN ); 00215 mergeMap->insert(AddressBookSyncee::PCS, mergePCS ); 00216 mergeMap->insert(AddressBookSyncee::Pager, mergePager ); 00217 mergeMap->insert(AddressBookSyncee::HomeFax, mergeHomeFax ); 00218 mergeMap->insert(AddressBookSyncee::WorkFax, mergeWorkFax ); 00219 mergeMap->insert(AddressBookSyncee::OtherTel, mergeOtherTel ); 00220 mergeMap->insert(AddressBookSyncee::Category, mergeCat ); 00221 mergeMap->insert(AddressBookSyncee::Custom, mergeCustom ); 00222 mergeMap->insert(AddressBookSyncee::Keys, mergeKeys ); 00223 mergeMap->insert(AddressBookSyncee::Logo, mergeLogo ); 00224 mergeMap->insert(AddressBookSyncee::Email, mergeEmails ); 00225 /* now fill it with functions.... */ 00226 } 00227 return mergeMap; 00228 } 00229 00230 bool AddressBookSyncEntry::mergeWith( SyncEntry* ent) 00231 { 00232 kdDebug(5228) << "mergeWith was called " << endl; 00233 if ( ent->name() != name() || !ent->syncee() || !syncee() ) 00234 return false; 00235 kdDebug(5228) << "Passed the test " << endl; 00236 00237 AddressBookSyncEntry* entry = static_cast<AddressBookSyncEntry*> (ent); 00238 QBitArray hier = syncee()->bitArray(); 00239 QBitArray da = entry->syncee()->bitArray(); 00240 kdDebug(5228) << "Hier count " << hier.size() << " Da count "<< da.size() << endl; 00241 MergeMap::Iterator it; 00242 MergeMap* ma = mergeMappi(); 00243 for (uint i = 0; i < da.size() && i < hier.size(); i++ ) { 00244 /* 00245 * If da supports [i] and this entry does 00246 * not -> merge 00247 */ 00248 if ( da[i] && !hier[i] ) { 00249 kdDebug(5228) << " da supports and hier not " << i << endl; 00250 it = ma->find( i ); 00251 if (it!= ma->end() ) 00252 (*it.data())(mAddressee,entry->mAddressee); 00253 } 00254 } 00255 mergeCustom( mAddressee, entry->mAddressee ); // need to call it under all circumstances... 00256 00257 return true; 00258 } 00259 00260 AddressBookSyncee::AddressBookSyncee() 00261 : Syncee( AddressBookSyncee::Emails + 1 ) // set the support size 00262 { 00263 mAddressBook = new KABC::AddressBook; 00264 mAddressBook->addResource( new KABC::ResourceNull() ); 00265 mOwnAddressBook = true; 00266 00267 mEntries.setAutoDelete( true ); 00268 } 00269 00270 AddressBookSyncee::AddressBookSyncee( KABC::AddressBook *ab ) 00271 : Syncee( AddressBookSyncee::Emails + 1 ) // set the support size 00272 { 00273 mAddressBook = ab; 00274 mOwnAddressBook = false; 00275 00276 mEntries.setAutoDelete( true ); 00277 00278 KABC::AddressBook::Iterator it; 00279 for ( it = ab->begin(); it != ab->end(); ++it ) { 00280 createEntry( *it ); 00281 } 00282 } 00283 00284 AddressBookSyncee::~AddressBookSyncee() 00285 { 00286 if ( mOwnAddressBook ) delete mAddressBook; 00287 } 00288 00289 void AddressBookSyncee::reset() 00290 { 00291 mEntries.clear(); 00292 } 00293 00294 AddressBookSyncEntry *AddressBookSyncee::firstEntry() 00295 { 00296 return mEntries.first(); 00297 } 00298 00299 AddressBookSyncEntry *AddressBookSyncee::nextEntry() 00300 { 00301 return mEntries.next(); 00302 } 00303 00304 #if 0 // fix me later - zecke 00305 AddressBookSyncEntry *AddressBookSyncee::findEntry(const QString &id) 00306 { 00307 Event *event = mEntries.find(id); 00308 return createEntry(event); 00309 } 00310 #endif 00311 00312 void AddressBookSyncee::addEntry( SyncEntry *entry ) 00313 { 00314 // kdDebug() << "AddressBookSyncee::addEntry()" << endl; 00315 00316 AddressBookSyncEntry *abEntry = dynamic_cast<AddressBookSyncEntry *>( entry ); 00317 abEntry = abEntry->clone(); 00318 if ( !abEntry ) { 00319 kdDebug(5228) << "AddressBookSyncee::addEntry(): SyncEntry has wrong type." 00320 << endl; 00321 } else { 00322 abEntry->setSyncee( this ); // set the parent 00323 if( abEntry->state() == SyncEntry::Undefined ) { // lets find out the state 00324 if( hasChanged( abEntry ) ) { 00325 abEntry->setState( SyncEntry::Modified ); 00326 } 00327 } 00328 mEntries.append( abEntry ); 00329 00330 KABC::Addressee a = abEntry->addressee(); 00331 a.setResource( 0 ); 00332 mAddressBook->insertAddressee( a ); 00333 } 00334 } 00335 00336 void AddressBookSyncee::removeEntry( SyncEntry *entry ) 00337 { 00338 AddressBookSyncEntry *abEntry = dynamic_cast<AddressBookSyncEntry *>(entry); 00339 if ( !abEntry ) { 00340 kdDebug(5228) << "AddressBookSyncee::removeEntry(): SyncEntry has wrong type." 00341 << endl; 00342 } else { 00343 mAddressBook->removeAddressee( abEntry->addressee() ); 00344 mEntries.remove( abEntry ); 00345 } 00346 } 00347 00348 AddressBookSyncEntry *AddressBookSyncee::createEntry( const KABC::Addressee &a ) 00349 { 00350 if ( !a.isEmpty() ) { 00351 AddressBookSyncEntry *entry = new AddressBookSyncEntry( a, this ); 00352 entry->setSyncee( this ); 00353 mEntries.append( entry ); 00354 return entry; 00355 } else { 00356 return 0; 00357 } 00358 } 00359 00360 #if 0 00361 00366 Syncee* AddressBookSyncee::clone() 00367 { 00368 AddressBookSyncEntry* entry; 00369 SyncEntry* cloneE; 00370 AddressBookSyncee* clone = new AddressBookSyncee(); 00371 clone->setSyncMode( syncMode() ); 00372 clone->setFirstSync( firstSync() ); 00373 clone->setSupports( bitArray() ); 00374 clone->setSource( source() ); 00375 for ( entry = mEntries.first(); entry != 0; entry = mEntries.next() ) { 00376 cloneE = entry->clone(); 00377 clone->addEntry( cloneE ); // mSyncee gets updatet 00378 } 00379 return clone; 00380 } 00381 #endif 00382 00383 SyncEntry::PtrList AddressBookSyncee::added() 00384 { 00385 return find( SyncEntry::Added ); 00386 } 00387 00388 SyncEntry::PtrList AddressBookSyncee::modified() 00389 { 00390 return find( SyncEntry::Modified ); 00391 } 00392 00393 SyncEntry::PtrList AddressBookSyncee::removed() 00394 { 00395 return find( SyncEntry::Removed ); 00396 } 00397 00398 SyncEntry::PtrList AddressBookSyncee::find( int state ) 00399 { 00400 QPtrList<SyncEntry> found; 00401 AddressBookSyncEntry* entry; 00402 for ( entry = mEntries.first(); entry != 0; entry = mEntries.next() ) { 00403 if ( entry->state() == state ) 00404 found.append( entry ); 00405 } 00406 00407 return found; 00408 } 00409 00410 QString AddressBookSyncee::type() const 00411 { 00412 return QString::fromLatin1("AddressBookSyncee"); 00413 } 00414 00415 QString AddressBookSyncee::newId() const 00416 { 00417 return KApplication::randomString( 10 ); 00418 } 00419 00420 static QStringList mergeList( const QStringList& entry, const QStringList& other ) { 00421 QStringList list = entry; 00422 00423 QStringList::ConstIterator it; 00424 for (it = other.begin(); it != other.end(); ++it ) { 00425 if (!list.contains( (*it) ) ) 00426 list << (*it); 00427 } 00428 00429 return list; 00430 } 00431 /* merge functions */ 00432 static void mergeFamily ( KABC::Addressee& entry, const KABC::Addressee& other) { 00433 entry.setFamilyName( other.familyName() ); 00434 } 00435 static void mergeGiven ( KABC::Addressee& entry, const KABC::Addressee& other) { 00436 entry.setGivenName( other.givenName() ); 00437 } 00438 static void mergeAdditional( KABC::Addressee& entry, const KABC::Addressee& other) { 00439 entry.setAdditionalName( other.additionalName() ); 00440 } 00441 static void mergePrefix ( KABC::Addressee& entry, const KABC::Addressee& other) { 00442 entry.setPrefix( other.prefix() ); 00443 } 00444 static void mergeSuffix ( KABC::Addressee& entry, const KABC::Addressee& other) { 00445 entry.setSuffix( other.suffix() ); 00446 } 00447 static void mergeNick ( KABC::Addressee& entry, const KABC::Addressee& other) { 00448 entry.setNickName( other.nickName() ); 00449 } 00450 static void mergeBirth ( KABC::Addressee& entry, const KABC::Addressee& other) { 00451 entry.setBirthday( other.birthday() ); 00452 } 00453 static void mergeHome ( KABC::Addressee& entry, const KABC::Addressee& other) { 00454 entry.insertAddress( other.address( KABC::Address::Home ) ); 00455 } 00456 static void mergeBus ( KABC::Addressee& entry, const KABC::Addressee& other) { 00457 entry.insertAddress( other.address( KABC::Address::Work ) ); 00458 } 00459 static void mergeTime ( KABC::Addressee& entry, const KABC::Addressee& other) { 00460 entry.setTimeZone( other.timeZone() ); 00461 } 00462 static void mergeGeo ( KABC::Addressee& entry, const KABC::Addressee& other) { 00463 entry.setGeo( other.geo() ); 00464 } 00465 static void mergeTitle ( KABC::Addressee& entry, const KABC::Addressee& other) { 00466 entry.setTitle( other.title() ); 00467 } 00468 static void mergeRole ( KABC::Addressee& entry, const KABC::Addressee& other) { 00469 entry.setRole( other.role() ); 00470 } 00471 static void mergeOrg ( KABC::Addressee& entry, const KABC::Addressee& other) { 00472 entry.setOrganization( other.organization() ); 00473 } 00474 static void mergeNote ( KABC::Addressee& entry, const KABC::Addressee& other) { 00475 entry.setNote( other.note() ); 00476 } 00477 static void mergeUrl ( KABC::Addressee& entry, const KABC::Addressee& other) { 00478 entry.setUrl( other.url() ); 00479 } 00480 static void mergeSecrecy ( KABC::Addressee& entry, const KABC::Addressee& other) { 00481 entry.setSecrecy( other.secrecy() ); 00482 } 00483 static void mergePicture ( KABC::Addressee& entry, const KABC::Addressee& other) { 00484 entry.setPhoto( other.photo() ); 00485 } 00486 static void mergeSound ( KABC::Addressee& entry, const KABC::Addressee& other) { 00487 entry.setSound( other.sound() ); 00488 } 00489 static void mergeAgent ( KABC::Addressee& entry, const KABC::Addressee& other) { 00490 entry.setAgent( other.agent() ); 00491 } 00492 static void mergeHomeTel ( KABC::Addressee& entry, const KABC::Addressee& other) { 00493 entry.insertPhoneNumber( other.phoneNumber( KABC::PhoneNumber::Home ) ); 00494 } 00495 static void mergeOffTel ( KABC::Addressee& entry, const KABC::Addressee& other) { 00496 entry.insertPhoneNumber( other.phoneNumber( KABC::PhoneNumber::Work ) ); 00497 } 00498 static void mergeMessenger ( KABC::Addressee& entry, const KABC::Addressee& other) { 00499 entry.insertPhoneNumber( other.phoneNumber( KABC::PhoneNumber::Msg ) ); 00500 } 00501 static void mergePreferredNumber( KABC::Addressee& entry, const KABC::Addressee& other) { 00502 entry.insertPhoneNumber( other.phoneNumber( KABC::PhoneNumber::Pref ) ); 00503 } 00504 static void mergeVoice ( KABC::Addressee& entry, const KABC::Addressee& other) { 00505 entry.insertPhoneNumber( other.phoneNumber( KABC::PhoneNumber::Voice ) ); 00506 } 00507 static void mergeFax ( KABC::Addressee& entry, const KABC::Addressee& other) { 00508 entry.insertPhoneNumber( other.phoneNumber( KABC::PhoneNumber::Fax ) ); 00509 } 00510 static void mergeCell ( KABC::Addressee& entry, const KABC::Addressee& other) { 00511 entry.insertPhoneNumber( other.phoneNumber( KABC::PhoneNumber::Cell ) ); 00512 } 00513 static void mergeVideo ( KABC::Addressee& entry, const KABC::Addressee& other) { 00514 entry.insertPhoneNumber( other.phoneNumber( KABC::PhoneNumber::Video ) ); 00515 } 00516 static void mergeMailbox ( KABC::Addressee& entry, const KABC::Addressee& other) { 00517 entry.insertPhoneNumber( other.phoneNumber( KABC::PhoneNumber::Bbs ) ); 00518 } 00519 static void mergeModem ( KABC::Addressee& entry, const KABC::Addressee& other) { 00520 entry.insertPhoneNumber( other.phoneNumber( KABC::PhoneNumber::Modem ) ); 00521 } 00522 static void mergeCarPhone ( KABC::Addressee& entry, const KABC::Addressee& other) { 00523 entry.insertPhoneNumber( other.phoneNumber( KABC::PhoneNumber::Car ) ); 00524 } 00525 static void mergeISDN ( KABC::Addressee& entry, const KABC::Addressee& other) { 00526 entry.insertPhoneNumber( other.phoneNumber( KABC::PhoneNumber::Isdn ) ); 00527 } 00528 static void mergePCS ( KABC::Addressee& entry, const KABC::Addressee& other) { 00529 entry.insertPhoneNumber( other.phoneNumber( KABC::PhoneNumber::Pcs ) ); 00530 } 00531 static void mergePager ( KABC::Addressee& entry, const KABC::Addressee& other) { 00532 entry.insertPhoneNumber( other.phoneNumber( KABC::PhoneNumber::Pager ) ); 00533 } 00534 static void mergeHomeFax ( KABC::Addressee& entry, const KABC::Addressee& other) { 00535 entry.insertPhoneNumber( other.phoneNumber( KABC::PhoneNumber::Home | KABC::PhoneNumber::Fax ) ); 00536 } 00537 static void mergeWorkFax ( KABC::Addressee& entry, const KABC::Addressee& other) { 00538 entry.insertPhoneNumber( other.phoneNumber( KABC::PhoneNumber::Work | KABC::PhoneNumber::Fax ) ); 00539 } 00540 static void mergeOtherTel ( KABC::Addressee&, const KABC::Addressee& ) { 00541 00542 } 00543 static void mergeCat ( KABC::Addressee& entry, const KABC::Addressee& other) { 00544 entry.setCategories( other.categories() ); 00545 } 00546 static void mergeKeys ( KABC::Addressee& entry, const KABC::Addressee& other) { 00547 entry.setKeys( other.keys() ); 00548 } 00549 static void mergeCustom ( KABC::Addressee& entry, const KABC::Addressee& other) { 00550 entry.setCustoms( mergeList( entry.customs(), other.customs() ) ); 00551 } 00552 static void mergeLogo ( KABC::Addressee& entry, const KABC::Addressee& other) { 00553 entry.setLogo( other.logo() ); 00554 } 00555 static void mergeEmail ( KABC::Addressee& entry, const KABC::Addressee& other) { 00556 entry.insertEmail( other.preferredEmail(), true ); 00557 } 00558 static void mergeEmails ( KABC::Addressee& entry, const KABC::Addressee& other) { 00559 QString pref = entry.preferredEmail(); 00560 entry.setEmails( other.emails() ); 00561 entry.insertEmail( pref, true ); 00562 }
KDE Logo
This file is part of the documentation for kitchensync Library Version 3.3.0.
Documentation copyright © 1996-2004 the KDE developers.
Generated on Fri Oct 1 15:18:59 2004 by doxygen 1.3.7 written by Dimitri van Heesch, © 1997-2003