00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
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
00124
00125
00126
00127
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
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
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
00246
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 );
00256
00257
return true;
00258 }
00259
00260 AddressBookSyncee::AddressBookSyncee()
00261 :
Syncee(
AddressBookSyncee::Emails + 1 )
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 )
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
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 );
00323
if( abEntry->state() == SyncEntry::Undefined ) {
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 );
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
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 }