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.2.
Documentation copyright © 1996-2004 the KDE developers.
Generated on Wed Jul 25 11:18:54 2007 by doxygen 1.4.2 written by Dimitri van Heesch, © 1997-2003