author | zautrix <zautrix> | 2004-09-21 07:05:01 (UTC) |
---|---|---|
committer | zautrix <zautrix> | 2004-09-21 07:05:01 (UTC) |
commit | 434ddaa08e0a650422ef271332a1d11879028095 (patch) (side-by-side diff) | |
tree | e4f229120d8bfa9febb7ab123b1311329f0e6aa4 /kabc | |
parent | ed49c55dac215ac2ed9286ebfc36e5a19417f0bb (diff) | |
download | kdepimpi-434ddaa08e0a650422ef271332a1d11879028095.zip kdepimpi-434ddaa08e0a650422ef271332a1d11879028095.tar.gz kdepimpi-434ddaa08e0a650422ef271332a1d11879028095.tar.bz2 |
DTM sync fixes
-rw-r--r-- | kabc/addressbook.cpp | 8 | ||||
-rw-r--r-- | kabc/addressee.cpp | 28 | ||||
-rw-r--r-- | kabc/plugins/sharpdtm/resourcesharpdtm.cpp | 57 | ||||
-rw-r--r-- | kabc/plugins/sharpdtm/sharpdtmconverter.cpp | 119 | ||||
-rw-r--r-- | kabc/plugins/sharpdtm/sharpdtmconverter.h | 1 |
5 files changed, 117 insertions, 96 deletions
diff --git a/kabc/addressbook.cpp b/kabc/addressbook.cpp index adb451f..5fb49eb 100644 --- a/kabc/addressbook.cpp +++ b/kabc/addressbook.cpp @@ -237,9 +237,7 @@ 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"; @@ -606,7 +604,7 @@ Addressee AddressBook::findByUid( const QString &uid ) } void AddressBook::preExternSync( AddressBook* aBook, const QString& csd ) { - qDebug("AddressBook::preExternSync "); + //qDebug("AddressBook::preExternSync "); AddressBook::Iterator it; for ( it = begin(); it != end(); ++it ) { (*it).setID( csd, (*it).externalUID() ); @@ -616,10 +614,10 @@ void AddressBook::preExternSync( AddressBook* aBook, const QString& csd ) } void AddressBook::postExternSync( AddressBook* aBook , const QString& csd) { - qDebug("AddressBook::postExternSync "); + //qDebug("AddressBook::postExternSync "); AddressBook::Iterator it; for ( it = begin(); it != end(); ++it ) { - qDebug("check uid %s ", (*it).uid().latin1() ); + // qDebug("check uid %s ", (*it).uid().latin1() ); if ( (*it).tempSyncStat() == SYNC_TEMPSTATE_NEW_ID || (*it).tempSyncStat() == SYNC_TEMPSTATE_NEW_CSUM ) { Addressee ad = aBook->findByUid( ( (*it).uid() )); diff --git a/kabc/addressee.cpp b/kabc/addressee.cpp index e241281..31ce1d6 100644 --- a/kabc/addressee.cpp +++ b/kabc/addressee.cpp @@ -43,6 +43,8 @@ $Id$ using namespace KABC; static bool matchBinaryPattern( int value, int pattern ); +static bool matchBinaryPatternA( int value, int pattern ); +static bool matchBinaryPatternP( int value, int pattern ); struct Addressee::AddresseeData : public KShared { @@ -381,7 +383,7 @@ void Addressee::setOriginalExternalUID( const QString &id ) if ( id == mData->originalExternalUID ) return; detach(); mData->empty = false; - qDebug("*******Set orig uid %s ", id.latin1()); + //qDebug("*******Set orig uid %s ", id.latin1()); mData->originalExternalUID = id; } @@ -394,7 +396,7 @@ void Addressee::setUid( const QString &id ) { if ( id == mData->uid ) return; detach(); - qDebug("****setuid %s ", id.latin1()); + //qDebug("****setuid %s ", id.latin1()); mData->empty = false; mData->uid = id; } @@ -1290,7 +1292,7 @@ PhoneNumber Addressee::phoneNumber( int type ) const PhoneNumber phoneNumber( "", type ); PhoneNumber::List::ConstIterator it; for( it = mData->phoneNumbers.begin(); it != mData->phoneNumbers.end(); ++it ) { - if ( matchBinaryPattern( (*it).type(), type ) ) { + if ( matchBinaryPatternP( (*it).type(), type ) ) { if ( (*it).type() & PhoneNumber::Pref ) return (*it); else if ( phoneNumber.number().isEmpty() ) @@ -1527,7 +1529,7 @@ Address Addressee::address( int type ) const Address address( type ); Address::List::ConstIterator it; for( it = mData->addresses.begin(); it != mData->addresses.end(); ++it ) { - if ( matchBinaryPattern( (*it).type(), type ) ) { + if ( matchBinaryPatternA( (*it).type(), type ) ) { if ( (*it).type() & Address::Pref ) return (*it); else if ( address.isEmpty() ) @@ -1835,7 +1837,6 @@ QDataStream &KABC::operator>>( QDataStream &s, Addressee &a ) return s; } - bool matchBinaryPattern( int value, int pattern ) { /** @@ -1849,3 +1850,20 @@ bool matchBinaryPattern( int value, int pattern ) else return ( pattern == ( pattern & value ) ); } + +bool matchBinaryPatternP( int value, int pattern ) +{ + + if ( pattern == 0 ) + return ( value == 0 ); + else + return ( (pattern |PhoneNumber::Pref ) == ( value |PhoneNumber::Pref ) ); +} +bool matchBinaryPatternA( int value, int pattern ) +{ + + if ( pattern == 0 ) + return ( value == 0 ); + else + return ( (pattern | Address::Pref) == ( value | Address::Pref ) ); +} diff --git a/kabc/plugins/sharpdtm/resourcesharpdtm.cpp b/kabc/plugins/sharpdtm/resourcesharpdtm.cpp index bba5f9a..48d3985 100644 --- a/kabc/plugins/sharpdtm/resourcesharpdtm.cpp +++ b/kabc/plugins/sharpdtm/resourcesharpdtm.cpp @@ -129,7 +129,7 @@ bool ResourceSharpDTM::doOpen() // the last parameter in the SlZDataBase constructor means "readonly" mAccess = new SlZDataBase(fileName(), SlZDataBase::addressbookItems(), - NULL, true); + NULL, false); if ( !mAccess ) { qDebug("Unable to load file() %s", fileName().latin1()); @@ -139,7 +139,7 @@ bool ResourceSharpDTM::doOpen() if (mConverter == 0) { mConverter = new SharpDTMConverter(); - bool res = mConverter->init(); + bool res = mConverter->init(); if ( !res ) { QString msg("Unable to initialize sharp converter. Most likely a problem with the category file"); @@ -224,19 +224,18 @@ bool ResourceSharpDTM::save( Ticket *ticket ) if (res == true) { KABC::Addressee addressee; - qDebug("1NEW id is %d", id); res = mConverter->sharpToAddressee( id, mAccess, addressee ); addressee.setUid((*it).uid() ); - addressee.setTempSyncStat( SYNC_TEMPSTATE_NEW_CSUM ); - changedAddressees.append( addressee ); + addressee.setTempSyncStat( SYNC_TEMPSTATE_NEW_ID ); res = mAccess->finishEditCard(&id); - qDebug("2NEW id is %d", id); + //qDebug("2NEW id is %d", id); + addressee.setExternalUID( QString::number( id ) ); + addressee.setOriginalExternalUID( QString::number( id ) ); + changedAddressees.append( addressee ); if (res == false) qDebug("Unable to append Contact: %s", addressee.formattedName().latin1()); - else { - qDebug("added card success "); - } + } else { @@ -255,6 +254,7 @@ bool ResourceSharpDTM::save( Ticket *ticket ) } else if ( (*it).tempSyncStat() != SYNC_TEMPSTATE_NEW_EXTERNAL ) { //changed + qDebug("changed ****"); res = mAccess->startEditCard(id); if (res == true) { @@ -269,9 +269,7 @@ bool ResourceSharpDTM::save( Ticket *ticket ) res = mAccess->finishEditCard(&id); if (res == false) qDebug("Unable to append Contact: %s", addressee.formattedName().latin1()); - else { - qDebug("change card succes "); - } + } else { @@ -280,42 +278,7 @@ bool ResourceSharpDTM::save( Ticket *ticket ) } } } - - - - - - - - - } - -#if 0 - // old code - CardId id = 0; // 0 means new card - KABC::Addressee addressee = (*it); - - res = mAccess->startEditCard(id); - if (res == true) - { - res = mConverter->addresseeToSharp( *it, mAccess, id ); - if (res == true) - { - res = mAccess->finishEditCard(&id); - if (res == false) - qDebug("Unable to append Contact: %s", addressee.formattedName().latin1()); } - else - { - qDebug("Unable to convert Addressee: %s", addressee.formattedName().latin1()); - mAccess->cancelEditCard(); - } - } - else - { - qDebug("Unable to add new card. Addressee: %s", addressee.formattedName().latin1()); - } -#endif } KABC::Addressee::List::Iterator it2; diff --git a/kabc/plugins/sharpdtm/sharpdtmconverter.cpp b/kabc/plugins/sharpdtm/sharpdtmconverter.cpp index b065bf3..f3bf2c5 100644 --- a/kabc/plugins/sharpdtm/sharpdtmconverter.cpp +++ b/kabc/plugins/sharpdtm/sharpdtmconverter.cpp @@ -26,11 +26,13 @@ $Id$ */ #include "kglobal.h" +#include <qregexp.h> #include "sharpdtmconverter.h" #include <sl/slcategories.h> +#include <libkdepim/ksyncprofile.h> //US #include <qpe/categoryselect.h> @@ -73,11 +75,12 @@ bool SharpDTMConverter::sharpToAddressee( const CardId &contact, const SlZDataBa // for syncing: we need setting of the two fields addr.setExternalUID( QString::number( contact ) ); addr.setOriginalExternalUID( QString::number( contact ) ); + addr.setTempSyncStat( SYNC_TEMPSTATE_NEW_EXTERNAL ); // name - qDebug("SharpDTMConverter::sharpToAddressee check if the fileAs transformation works!!"); - addr.setFormattedName(db->readField(ZdbAdrs::FileAs)); + //qDebug("SharpDTMConverter::sharpToAddressee check if the fileAs transformation works!!"); + addr.setFormattedName(db->readField(ZdbAdrs::FileAs)); // needs fix addr.setFamilyName( db->readField(ZdbAdrs::LastName) ); addr.setGivenName( db->readField(ZdbAdrs::FirstName) ); @@ -86,17 +89,24 @@ bool SharpDTMConverter::sharpToAddressee( const CardId &contact, const SlZDataBa addr.setSuffix( db->readField(ZdbAdrs::Suffix) ); - // email QString emailstr = db->readField(ZdbAdrs::Emails); - qDebug("SharpDTMConverter::sharpToAddressee whats the character to seperate the emailadresses? %s ", emailstr.latin1()); - QStringList emails = QStringList::split(",", emailstr); - + emailstr.replace( QRegExp(","), " " ); + emailstr.replace( QRegExp(";"), " " ); + emailstr.replace( QRegExp(":"), " " ); + //qDebug("SharpDTMConverter::sharpToAddressee whats the character to seperate the emailadresses? %s ", emailstr.latin1()); + QStringList emails = QStringList::split(" ", emailstr.simplifyWhiteSpace()); + bool defE = false; + bool found = false; for ( QStringList::Iterator it = emails.begin(); it != emails.end(); ++it ) { - addr.insertEmail( *it, ((*it) == db->readField(ZdbAdrs::DefaultEmail)) ); + if (found ) + defE = false; + else + found = defE = ((*it).lower() == db->readField(ZdbAdrs::DefaultEmail).lower()); + addr.insertEmail( *it, defE ); } - - if (!db->readField(ZdbAdrs::DefaultEmail).isEmpty()) - addr.insertEmail(db->readField(ZdbAdrs::DefaultEmail), true); + if ( ! found ) + if (!db->readField(ZdbAdrs::DefaultEmail).isEmpty()) + addr.insertEmail(db->readField(ZdbAdrs::DefaultEmail), true); // home if ((!db->readField(ZdbAdrs::HomeStreet).isEmpty()) || @@ -198,7 +208,7 @@ bool SharpDTMConverter::sharpToAddressee( const CardId &contact, const SlZDataBa addr.insertPhoneNumber( businesspager ); } - addr.setRole( db->readField(ZdbAdrs::JobTitle) ); //? + addr.setRole( db->readField(ZdbAdrs::JobTitle) ); addr.setOrganization( db->readField(ZdbAdrs::Company) ); addr.insertCustom( "KADDRESSBOOK", "X-Profession", db->readField(ZdbAdrs::Profession) ); addr.insertCustom( "KADDRESSBOOK", "X-AssistantsName", db->readField(ZdbAdrs::Assistant) ); @@ -210,8 +220,8 @@ bool SharpDTMConverter::sharpToAddressee( const CardId &contact, const SlZDataBa addr.insertCustom( "KADDRESSBOOK", "X-SpousesName", db->readField(ZdbAdrs::Spouse) ); QString gen = db->readField(ZdbAdrs::Gender); - qDebug("SharpDTMConverter::sharpToAddressee pleas check that gender works!! : Gender: %s", gen.latin1()); - qDebug("SharpDTMConverter::sharpToAddressee: may be int db->readUshortField(\"ZdbAdrs::Gender\") is here better suited"); + //qDebug("SharpDTMConverter::sharpToAddressee pleas check that gender works!! : Gender: %s", gen.latin1()); + //qDebug("SharpDTMConverter::sharpToAddressee: may be int db->readUshortField(\"ZdbAdrs::Gender\") is here better suited"); if (gen == "male") addr.insertCustom( "KADDRESSBOOK", "X-Gender", "male"); @@ -219,19 +229,19 @@ bool SharpDTMConverter::sharpToAddressee( const CardId &contact, const SlZDataBa addr.insertCustom( "KADDRESSBOOK", "X-Gender", "female"); - QDate ann = db->readDateField(ZdbAdrs::Anniversary); - + QDate ann = KGlobal::locale()->readDate( db->readField(ZdbAdrs::Anniversary) ); if (ann.isValid()) { QString dt = KGlobal::locale()->formatDate(ann, true, KLocale::ISODate); -//US -// qDebug("QtopiaConverter::qtopiaToAddressee found:%s", dt.latin1()); + //qDebug("qtopiaToAddressee annyversary found:%s", dt.latin1()); addr.insertCustom( "KADDRESSBOOK", "X-Anniversary", dt); } + addr.insertCustom( "KADDRESSBOOK", "X-Children", db->readField(ZdbAdrs::Children) ); - QDate birthd = db->readDateField(ZdbAdrs::Birthday); + QDate birthd = KGlobal::locale()->readDate( db->readField(ZdbAdrs::Birthday) ); + //qDebug("birtd %s ", birthd.toString().latin1()); if (birthd.isValid()) addr.setBirthday( birthd ); @@ -240,8 +250,9 @@ bool SharpDTMConverter::sharpToAddressee( const CardId &contact, const SlZDataBa // others //US I put opies BusinessWebPage into Ka/Pi's notes block, because no other native field is available. QString notes = db->readField(ZdbAdrs::Notes); - notes += "\nBusinessWebPage: " + db->readField(ZdbAdrs::BusinessWebPage) + "\n"; - + //notes += "\nBusinessWebPage: " + db->readField(ZdbAdrs::BusinessWebPage) + "\n"; + if ( addr.url().isEmpty() ) + addr.setUrl( db->readField(ZdbAdrs::BusinessWebPage) ); addr.setNote( db->readField(ZdbAdrs::Notes) ); @@ -249,7 +260,7 @@ bool SharpDTMConverter::sharpToAddressee( const CardId &contact, const SlZDataBa //US QString groups() const { return find( Qtopia::Groups ); } //US QStringList groupList() const; - qDebug("SharpDTMConverter::sharpToAddressee please check that the categories will be converted" ); + //qDebug("SharpDTMConverter::sharpToAddressee please check that the categories will be converted" ); QArray<int> catArray = db->readCategories(); QString cat; @@ -266,6 +277,7 @@ bool SharpDTMConverter::sharpToAddressee( const CardId &contact, const SlZDataBa bool SharpDTMConverter::addresseeToSharp( const Addressee &addr, SlZDataBase* database , const CardId &contact ) { + bool cellHome = false, cellWork = false; // name database->writeField(ZdbAdrs::LastName, addr.familyName()); database->writeField(ZdbAdrs::FirstName, addr.givenName()); @@ -273,14 +285,14 @@ bool SharpDTMConverter::addresseeToSharp( const Addressee &addr, SlZDataBase* da database->writeField(ZdbAdrs::Title, addr.prefix()); database->writeField(ZdbAdrs::Suffix, addr.suffix()); - qDebug("SharpDTMConverter::addresseeToSharp check if the fileAs transformation works!!"); + //qDebug("SharpDTMConverter::addresseeToSharp check if the fileAs transformation works!!\n%s",addr.formattedName().latin1() ); database->writeField(ZdbAdrs::FileAs, addr.formattedName()); - + database->writeField(ZdbAdrs::FullName, addr.formattedName()); // email - qDebug("SharpDTMConverter::addresseeToSharp check which seperator we need here for the emails!!"); - qDebug("SharpDTMConverter::addresseeToSharp its probably the same from sharpToAddressee"); - QString emails = addr.emails().join(","); + //qDebug("SharpDTMConverter::addresseeToSharp check which seperator we need here for the emails!!"); + //qDebug("SharpDTMConverter::addresseeToSharp its probably the same from sharpToAddressee"); + QString emails = addr.emails().join(" "); database->writeField(ZdbAdrs::Emails, emails ); database->writeField(ZdbAdrs::DefaultEmail, addr.preferredEmail() ); @@ -305,8 +317,10 @@ bool SharpDTMConverter::addresseeToSharp( const Addressee &addr, SlZDataBase* da database->writeField(ZdbAdrs::HomeFax, homefax.number()); PhoneNumber homemobile = addr.phoneNumber( PhoneNumber::Home | PhoneNumber::Cell ); - if (!homemobile.number().isEmpty()) + if (!homemobile.number().isEmpty()) { database->writeField(ZdbAdrs::HomeMobile, homemobile.number()); + cellHome = true; + } database->writeField(ZdbAdrs::HomeWebPage, addr.url().url()); @@ -330,8 +344,17 @@ bool SharpDTMConverter::addresseeToSharp( const Addressee &addr, SlZDataBase* da database->writeField(ZdbAdrs::BusinessFax, businessfax.number()); PhoneNumber businessmobile = addr.phoneNumber( PhoneNumber::Work | PhoneNumber::Cell ); - if (!businessmobile.number().isEmpty()) - database->writeField(ZdbAdrs::BusinessMobile, businessmobile.number()); + if (!businessmobile.number().isEmpty()) { + cellWork = true; + database->writeField(ZdbAdrs::BusinessMobile, businessmobile.number()); + } + PhoneNumber mobile = addr.phoneNumber( PhoneNumber::Cell ); + if (!businessmobile.number().isEmpty()) { + if ( ! cellHome ) + database->writeField(ZdbAdrs::HomeMobile, mobile.number()); + else if (! cellWork ) + database->writeField(ZdbAdrs::BusinessMobile, mobile.number()); + } PhoneNumber businesspager = addr.phoneNumber( PhoneNumber::Work | PhoneNumber::Pager ); if (!businesspager.number().isEmpty()) @@ -350,12 +373,12 @@ bool SharpDTMConverter::addresseeToSharp( const Addressee &addr, SlZDataBase* da database->writeField(ZdbAdrs::Spouse, addr.custom( "KADDRESSBOOK", "X-Spouse" )); QString gt = addr.custom( "KADDRESSBOOK", "X-Gender" ); - qDebug("SharpDTMConverter::addresseeToSharp please check that gender works!! : Gender: %s", gt.latin1()); - qDebug("SharpDTMConverter::addresseeToSharp: may be writeField(\"ZdbAdrs::Gender\", ushort) is here better suited?"); - qDebug("SharpDTMConverter::addresseeToSharp: check also the reverse functionality in sharpToAddressee"); - if (gt = "male") + //qDebug("SharpDTMConverter::addresseeToSharp please check that gender works!! : Gender: %s", gt.latin1()); + //qDebug("SharpDTMConverter::addresseeToSharp: may be writeField(\"ZdbAdrs::Gender\", ushort) is here better suited?"); + //qDebug("SharpDTMConverter::addresseeToSharp: check also the reverse functionality in sharpToAddressee"); + if (gt == "male") database->writeField(ZdbAdrs::Gender, "male"); - else if (gt = "female") + else if (gt == "female") database->writeField(ZdbAdrs::Gender, "female"); else database->writeField(ZdbAdrs::Gender, ""); @@ -363,11 +386,16 @@ bool SharpDTMConverter::addresseeToSharp( const Addressee &addr, SlZDataBase* da QDate dt = KGlobal::locale()->readDate( addr.custom("KADDRESSBOOK", "X-Anniversary" ), "%Y-%m-%d"); // = Qt::ISODate - database->writeField(ZdbAdrs::Anniversary, dt ); - + if ( dt.isValid() ) { + QString dateS = KGlobal::locale()->formatDate(dt, true ); + database->writeField(ZdbAdrs::Anniversary, dateS ); + } database->writeField(ZdbAdrs::Children, addr.custom( "KADDRESSBOOK", "X-Children" )); - - database->writeField(ZdbAdrs::Birthday, addr.birthday().date()); + dt = addr.birthday().date(); + if ( dt.isValid() ) { + QString dateS = KGlobal::locale()->formatDate(dt, true ); + database->writeField(ZdbAdrs::Birthday, dateS); + } database->writeField(ZdbAdrs::Nickname, addr.nickName()); // other @@ -377,14 +405,27 @@ bool SharpDTMConverter::addresseeToSharp( const Addressee &addr, SlZDataBase* da //US QStringList groupList() const; - qDebug("SharpDTMConverter::addresseeToSharp please check if category transformation works"); + //qDebug("SharpDTMConverter::addresseeToSharp please check if category transformation works"); QStringList cats = addr.categories(); + int ii; + for ( ii = 0; ii < cats.count() ;++ii ) { + if ( !catDB->exists( cats[ii] )) + catDB->addCategory(cats[ii]); + } QArray<int> iar; if ( !cats.isEmpty() ) { QArray<int> iar = catDB->ids(cats); + qDebug("***cat count is %d ", iar.count()); database->updateCategories(contact, iar); } return true; } + +QDate SharpDTMConverter::convertDate( QString s) +{ + QDate dt = KGlobal::locale()->readDate( s ); + return dt; + return QDate (); +} diff --git a/kabc/plugins/sharpdtm/sharpdtmconverter.h b/kabc/plugins/sharpdtm/sharpdtmconverter.h index 99e0413..a04083e 100644 --- a/kabc/plugins/sharpdtm/sharpdtmconverter.h +++ b/kabc/plugins/sharpdtm/sharpdtmconverter.h @@ -78,6 +78,7 @@ public: private: SlCategory::SlCategories* catDB; + QDate convertDate( QString ); }; |