summaryrefslogtreecommitdiffabout
path: root/kabc/plugins
Side-by-side diff
Diffstat (limited to 'kabc/plugins') (more/less context) (show whitespace changes)
-rw-r--r--kabc/plugins/qtopia/qtopiaconverter.cpp2
-rw-r--r--kabc/plugins/qtopia/resourceqtopia.cpp75
2 files changed, 68 insertions, 9 deletions
diff --git a/kabc/plugins/qtopia/qtopiaconverter.cpp b/kabc/plugins/qtopia/qtopiaconverter.cpp
index de45e63..430c7b3 100644
--- a/kabc/plugins/qtopia/qtopiaconverter.cpp
+++ b/kabc/plugins/qtopia/qtopiaconverter.cpp
@@ -77,25 +77,25 @@ bool QtopiaConverter::qtopiaToAddressee( const PimContact &contact, Addressee &a
addr.setPrefix( contact.nameTitle() );
addr.setSuffix( contact.suffix() );
addr.setTempSyncStat( SYNC_TEMPSTATE_NEW_EXTERNAL );
QString exuid = contact.uid().toString();
addr.setOriginalExternalUID( exuid );
int ente = exuid.find( "-0000");
if ( exuid.left(1) == "{" )
exuid = exuid.mid(1);
if ( ente > -1 )
exuid = exuid.left( ente-1 );
addr.setExternalUID( exuid );
- //qDebug("QtopiaConverter:set uid %s ",addr.externalUID().latin1() );
+ qDebug("QtopiaConverter:set %s uid %s ",addr.originalExternalUID().latin1(),addr.externalUID().latin1() );
// email
QStringList emails = contact.emailList();
for ( QStringList::Iterator it = emails.begin(); it != emails.end(); ++it ) {
addr.insertEmail( *it, ((*it) == contact.defaultEmail()) );
}
if (!contact.defaultEmail().isEmpty())
addr.insertEmail(contact.defaultEmail(), true);
// home
if ((!contact.homeStreet().isEmpty()) ||
diff --git a/kabc/plugins/qtopia/resourceqtopia.cpp b/kabc/plugins/qtopia/resourceqtopia.cpp
index 935a1cf..1f90fcb 100644
--- a/kabc/plugins/qtopia/resourceqtopia.cpp
+++ b/kabc/plugins/qtopia/resourceqtopia.cpp
@@ -188,65 +188,124 @@ bool ResourceQtopia::load()
return true;
}
bool ResourceQtopia::save( Ticket *ticket )
{
qDebug("ResourceQtopia::save: %s", fileName().latin1());
mDirWatch.stopScan();
KABC::AddressBook::Iterator it;
bool res;
-
+ KABC::Addressee::List changedAddressees;
+ QStringList addedUID;
for ( it = addressBook()->begin(); it != addressBook()->end(); ++it ) {
//KABC::Addressee addressee = (*it);
+ // qDebug("AAAfor uid %s ", (*it).originalExternalUID().latin1() );
if ( (*it).tempSyncStat() != SYNC_TEMPSTATE_NEW_EXTERNAL ) {
QUuid uid( (*it).originalExternalUID() );
bool ok;
PimContact c = mAccess->contactForId( uid, &ok );
+ qDebug("ResourceQtopia::save:Found %d for uid %s ", ok,(*it).originalExternalUID().latin1() );
res = mConverter->addresseeToQtopia( *it, c );
if (res == true) {
if ( (*it).tempSyncStat() == SYNC_TEMPSTATE_ADDED_EXTERNAL ) {
- mAccess->addContact(c);
+ qDebug("skipping adding of contact ");
+ continue;
+ PimContact e;
+ AddressBookAccess Access2;
+ Access2.addContact(e);
+ const PimContact* contact;
+ bool res;
+ QString uid2, Ouid;
+ AddressBookIterator itt(Access2);
+ for (contact=itt.toFirst(); itt.current(); ++itt)
+ {
+ contact = itt.current();
+ QString exuid = contact->uid().toString();
+ Ouid =exuid;
+ int ente = exuid.find( "-0000");
+ if ( exuid.left(1) == "{" )
+ exuid = exuid.mid(1);
+ if ( ente > -1 )
+ exuid = exuid.left( ente-1 );
+ uid2 = exuid;
+ qDebug("trying find uid ");
+ if ( !addressBook()->containsExternalUid( uid2 ) ) {
+ qDebug("ab not contains ");
+ if ( !addedUID.contains( uid2 )) {
+ qDebug("list not contains ");
+ break;
+ }
+ }
+
+ }
+ if ( !itt.current()) {
+ qDebug("ERROR uid ");
+ continue;
+ }
+ else
+ qDebug("ADD uid detected ");
+
+
+ QUuid uid3( Ouid);
+ PimContact d = Access2.contactForId( uid3, &ok );
+ if ( ! ok ) {
+ qDebug("ADD: Error getting new uid ");
+ } else {
+ qDebug("NEW UID found ");
+ PimContact g = mAccess->contactForId( c.uid(), &ok );
KABC::Addressee addressee;
- mConverter->qtopiaToAddressee( c, addressee );
+ mConverter->qtopiaToAddressee( g, addressee );
+ addressee.setUid((*it).uid() );
addressee.setTempSyncStat( SYNC_TEMPSTATE_NEW_ID );
- addressBook()->insertAddressee( addressee );
+ changedAddressees.append( addressee );
+ addedUID.append( uid2 );
+ }
+
} else if ( (*it).tempSyncStat() == SYNC_TEMPSTATE_DELETE ) {
+ qDebug("Remove contact ");
if ( ok )
mAccess->removeContact(c);
else
- qDebug("Error revoe contact from qtopia ");
+ qDebug("Error remove contact from qtopia ");
} else if ( (*it).tempSyncStat() != SYNC_TEMPSTATE_NEW_EXTERNAL ) {
if ( ok ) {
+ qDebug("Update contact ");
mAccess->updateContact(c);
+ PimContact g = mAccess->contactForId( c.uid(), &ok );
KABC::Addressee addressee;
- mConverter->qtopiaToAddressee( c, addressee );
+ mConverter->qtopiaToAddressee( g, addressee );
+ addressee.setUid((*it).uid() );
addressee.setTempSyncStat( SYNC_TEMPSTATE_NEW_CSUM );
- addressBook()->insertAddressee( addressee );
+ changedAddressees.append( addressee );
}
else
qDebug("Error update contact from qtopia ");
}
} else {
qDebug("Unable to convert Addressee %s", (*it).formattedName().latin1());
}
}
}
- // mAccess->addressBookUpdated();
+ KABC::Addressee::List::Iterator it2;
+ for ( it2 = changedAddressees.begin(); it2 != changedAddressees.end(); ++it2 )
+ addressBook()->insertAddressee((*it2));
+
+
mDirWatch.startScan();
delete ticket;
unlock( fileName() );
return true;
}
bool ResourceQtopia::lock( const QString &lockfileName )
{
qDebug("ResourceQtopia::lock: %s", fileName().latin1());