-rw-r--r-- | kabc/addressbook.cpp | 28 |
1 files changed, 26 insertions, 2 deletions
diff --git a/kabc/addressbook.cpp b/kabc/addressbook.cpp index 46a9cf4..64832f1 100644 --- a/kabc/addressbook.cpp +++ b/kabc/addressbook.cpp @@ -235,37 +235,40 @@ AddressBook::AddressBook( const QString &config, const QString &family ) void AddressBook::init(const QString &config, const QString &family ) { blockLSEchange = false; d = new AddressBookData; QString fami = family; qDebug("new ab "); if (config != 0) { qDebug("config != 0 "); if ( family == "syncContact" ) { qDebug("creating sync config "); fami = "contact"; KConfig* con = new KConfig( locateLocal("config", "syncContactrc") ); con->setGroup( "General" ); con->writeEntry( "ResourceKeys", QString("sync") ); con->writeEntry( "Standard", QString("sync") ); con->setGroup( "Resource_sync" ); - con->writeEntry( "FileFormat", QString("vcard") ); con->writeEntry( "FileName", config ); + con->writeEntry( "FileFormat", QString("vcard") ); con->writeEntry( "ResourceIdentifier", QString("sync") ); con->writeEntry( "ResourceName", QString("sync_res") ); - con->writeEntry( "ResourceType", QString("file") ); + if ( config.right(4) == ".xml" ) + con->writeEntry( "ResourceType", QString("qtopia") ); + else + con->writeEntry( "ResourceType", QString("file") ); //con->sync(); d->mConfig = con; } else d->mConfig = new KConfig( locateLocal("config", config) ); // qDebug("AddressBook::init 1 config=%s",config.latin1() ); } else { d->mConfig = 0; // qDebug("AddressBook::init 1 config=0"); } //US d->mErrorHandler = 0; d->mManager = new KRES::Manager<Resource>( fami, false ); d->mManager->readConfig( d->mConfig ); if ( family == "syncContact" ) { @@ -586,32 +589,53 @@ AddressBook::Iterator AddressBook::find( const Addressee &a ) return it; } } return end(); } Addressee AddressBook::findByUid( const QString &uid ) { Iterator it; for ( it = begin(); it != end(); ++it ) { if ( uid == (*it).uid() ) { return *it; } } return Addressee(); } +Addressee AddressBook::findByExternUid( const QString& uid , const QString& profile ) +{ + Iterator it; + for ( it = begin(); it != end(); ++it ) { + if ( uid == (*it).getID( profile ) ) + return (*it); + } + return Addressee(); +} +void AddressBook::mergeAB( AddressBook *aBook, const QString& profile ) +{ + Iterator it; + Addressee ad; + for ( it = begin(); it != end(); ++it ) { + ad = aBook->findByExternUid( (*it).externalUID(), profile ); + if ( !ad.isEmpty() ) { + (*it).mergeContact( ad ); + } + } +} + #if 0 Addressee::List AddressBook::getExternLastSyncAddressees() { Addressee::List results; Iterator it; for ( it = begin(); it != end(); ++it ) { if ( (*it).uid().left( 19 ) == "last-syncAddressee-" ) { if ( (*it).familyName().left(4) == "!E: " ) results.append( *it ); } } return results; } #endif |