summaryrefslogtreecommitdiffabout
path: root/kabc
authorzautrix <zautrix>2004-09-21 07:05:01 (UTC)
committer zautrix <zautrix>2004-09-21 07:05:01 (UTC)
commit434ddaa08e0a650422ef271332a1d11879028095 (patch) (side-by-side diff)
treee4f229120d8bfa9febb7ab123b1311329f0e6aa4 /kabc
parented49c55dac215ac2ed9286ebfc36e5a19417f0bb (diff)
downloadkdepimpi-434ddaa08e0a650422ef271332a1d11879028095.zip
kdepimpi-434ddaa08e0a650422ef271332a1d11879028095.tar.gz
kdepimpi-434ddaa08e0a650422ef271332a1d11879028095.tar.bz2
DTM sync fixes
Diffstat (limited to 'kabc') (more/less context) (show whitespace changes)
-rw-r--r--kabc/addressbook.cpp8
-rw-r--r--kabc/addressee.cpp28
-rw-r--r--kabc/plugins/sharpdtm/resourcesharpdtm.cpp55
-rw-r--r--kabc/plugins/sharpdtm/sharpdtmconverter.cpp113
-rw-r--r--kabc/plugins/sharpdtm/sharpdtmconverter.h1
5 files changed, 113 insertions, 92 deletions
diff --git a/kabc/addressbook.cpp b/kabc/addressbook.cpp
index adb451f..5fb49eb 100644
--- a/kabc/addressbook.cpp
+++ b/kabc/addressbook.cpp
@@ -216,51 +216,49 @@ bool AddressBook::ConstIterator::operator!=( const ConstIterator &it )
AddressBook::AddressBook()
{
init(0, "contact");
}
AddressBook::AddressBook( const QString &config )
{
init(config, "contact");
}
AddressBook::AddressBook( const QString &config, const QString &family )
{
init(config, family);
}
// the default family is "contact"
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( "FileName", config );
con->writeEntry( "FileFormat", QString("vcard") );
con->writeEntry( "ResourceIdentifier", QString("sync") );
con->writeEntry( "ResourceName", QString("sync_res") );
if ( config.right(4) == ".xml" )
con->writeEntry( "ResourceType", QString("qtopia") );
else if ( config == "sharp" ) {
con->writeEntry( "ResourceType", QString("sharp") );
} else {
con->writeEntry( "ResourceType", QString("file") );
}
//con->sync();
d->mConfig = con;
}
else
d->mConfig = new KConfig( locateLocal("config", config) );
@@ -585,62 +583,62 @@ void AddressBook::removeAddressee( const Iterator &it )
AddressBook::Iterator AddressBook::find( const Addressee &a )
{
Iterator it;
for ( it = begin(); it != end(); ++it ) {
if ( a.uid() == (*it).uid() ) {
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();
}
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() );
(*it).computeCsum( csd );
}
mergeAB( aBook ,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() ));
if ( ad.isEmpty() ) {
qDebug("postExternSync:ERROR addressee is empty: %s ", (*it).uid().latin1());
} else {
(*it).computeCsum( csd );
if ( (*it).tempSyncStat() == SYNC_TEMPSTATE_NEW_ID )
ad.setID( csd, (*it).externalUID() );
ad.setCsum( csd, (*it).getCsum( csd ) );
aBook->insertAddressee( ad );
}
}
}
}
bool AddressBook::containsExternalUid( const QString& uid )
{
Iterator it;
for ( it = begin(); it != end(); ++it ) {
if ( uid == (*it).externalUID( ) )
return true;
}
return false;
diff --git a/kabc/addressee.cpp b/kabc/addressee.cpp
index e241281..31ce1d6 100644
--- a/kabc/addressee.cpp
+++ b/kabc/addressee.cpp
@@ -22,48 +22,50 @@
/*
Enhanced Version of the file for platform independent KDE tools.
Copyright (c) 2004 Ulf Schenk
$Id$
*/
#include <kconfig.h>
#include <ksharedptr.h>
#include <kdebug.h>
#include <kapplication.h>
#include <klocale.h>
#include <kidmanager.h>
//US
#include <kstandarddirs.h>
#include <libkcal/syncdefines.h>
//US #include "resource.h"
#include "addressee.h"
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
{
QString uid;
QString name;
QString formattedName;
QString familyName;
QString givenName;
QString additionalName;
QString prefix;
QString suffix;
QString nickName;
QDateTime birthday;
QString mailer;
TimeZone timeZone;
Geo geo;
QString title;
QString role;
QString organization;
QString note;
QString productId;
QDateTime revision;
QString sortString;
QString externalUID;
@@ -360,62 +362,62 @@ void Addressee::setIDStr( const QString & s )
}
QString Addressee::IDStr() const
{
return mData->mExternalId;
}
void Addressee::setExternalUID( const QString &id )
{
if ( id == mData->externalUID ) return;
detach();
mData->empty = false;
mData->externalUID = id;
}
QString Addressee::externalUID() const
{
return mData->externalUID;
}
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;
}
QString Addressee::originalExternalUID() const
{
return mData->originalExternalUID;
}
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;
}
QString Addressee::uid() const
{
if ( mData->uid.isEmpty() )
mData->uid = KApplication::randomString( 10 );
return mData->uid;
}
QString Addressee::uidLabel()
{
return i18n("Unique Identifier");
}
void Addressee::setName( const QString &name )
{
if ( name == mData->name ) return;
detach();
mData->empty = false;
mData->name = name;
}
@@ -1269,49 +1271,49 @@ void Addressee::insertPhoneNumber( const PhoneNumber &phoneNumber )
return;
}
}
mData->phoneNumbers.append( phoneNumber );
}
void Addressee::removePhoneNumber( const PhoneNumber &phoneNumber )
{
detach();
PhoneNumber::List::Iterator it;
for( it = mData->phoneNumbers.begin(); it != mData->phoneNumbers.end(); ++it ) {
if ( (*it).id() == phoneNumber.id() ) {
mData->phoneNumbers.remove( it );
return;
}
}
}
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() )
phoneNumber = (*it);
}
}
return phoneNumber;
}
PhoneNumber::List Addressee::phoneNumbers() const
{
return mData->phoneNumbers;
}
PhoneNumber::List Addressee::phoneNumbers( int type ) const
{
PhoneNumber::List list;
PhoneNumber::List::ConstIterator it;
for( it = mData->phoneNumbers.begin(); it != mData->phoneNumbers.end(); ++it ) {
if ( matchBinaryPattern( (*it).type(), type ) ) {
list.append( *it );
}
@@ -1506,49 +1508,49 @@ void Addressee::insertAddress( const Address &address )
return;
}
}
mData->addresses.append( address );
}
void Addressee::removeAddress( const Address &address )
{
detach();
Address::List::Iterator it;
for( it = mData->addresses.begin(); it != mData->addresses.end(); ++it ) {
if ( (*it).id() == address.id() ) {
mData->addresses.remove( it );
return;
}
}
}
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() )
address = (*it);
}
}
return address;
}
Address::List Addressee::addresses() const
{
return mData->addresses;
}
Address::List Addressee::addresses( int type ) const
{
Address::List list;
Address::List::ConstIterator it;
for( it = mData->addresses.begin(); it != mData->addresses.end(); ++it ) {
if ( matchBinaryPattern( (*it).type(), type ) ) {
list.append( *it );
}
@@ -1814,38 +1816,54 @@ QDataStream &KABC::operator>>( QDataStream &s, Addressee &a )
s >> a.mData->title;
s >> a.mData->role;
s >> a.mData->organization;
s >> a.mData->note;
s >> a.mData->productId;
s >> a.mData->revision;
s >> a.mData->sortString;
s >> a.mData->url;
s >> a.mData->secrecy;
s >> a.mData->logo;
s >> a.mData->photo;
s >> a.mData->sound;
s >> a.mData->agent;
s >> a.mData->phoneNumbers;
s >> a.mData->addresses;
s >> a.mData->emails;
s >> a.mData->categories;
s >> a.mData->custom;
s >> a.mData->keys;
a.mData->empty = false;
return s;
}
-
bool matchBinaryPattern( int value, int pattern )
{
/**
We want to match all telephonnumbers/addresses which have the bits in the
pattern set. More are allowed.
if pattern == 0 we have a special handling, then we want only those with
exactly no bit set.
*/
if ( pattern == 0 )
return ( value == 0 );
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
@@ -108,49 +108,49 @@ Ticket *ResourceSharpDTM::requestSaveTicket()
{
qDebug("ResourceSharpDTM::requestSaveTicket: %s", fileName().latin1());
if ( !addressBook() ) return 0;
#ifdef ALLOW_LOCKING
if ( !lock( fileName() ) ) {
qDebug("ResourceSharpDTM::requestSaveTicket(): Unable to lock file ");
return 0;
}
#endif
return createTicket( this );
}
bool ResourceSharpDTM::doOpen()
{
qDebug("ResourceSharpDTM::doOpen: %s", fileName().latin1());
// 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());
return false;
}
if (mConverter == 0)
{
mConverter = new SharpDTMConverter();
bool res = mConverter->init();
if ( !res )
{
QString msg("Unable to initialize sharp converter. Most likely a problem with the category file");
qDebug(msg);
delete mAccess;
mAccess = 0;
return false;
}
}
return true;
}
@@ -203,140 +203,103 @@ bool ResourceSharpDTM::save( Ticket *ticket )
KABC::AddressBook::Iterator it;
bool res;
KABC::Addressee::List changedAddressees;
for ( it = addressBook()->begin(); it != addressBook()->end(); ++it ) {
if ( (*it).tempSyncStat() != SYNC_TEMPSTATE_NEW_EXTERNAL ) {
QString uid = (*it).originalExternalUID();
CardId id ;
bool res;
if ( uid.isEmpty() )
id = 0;
else
id = uid.toUInt();
KABC::Addressee addressee = (*it);
if ( (*it).tempSyncStat() == SYNC_TEMPSTATE_ADDED_EXTERNAL ) {
res = mAccess->startEditCard(id);
if (res == true)
{
res = mConverter->addresseeToSharp( (*it), mAccess, id );
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
{
qDebug("Unable to convert Addressee: %s", addressee.formattedName().latin1());
mAccess->cancelEditCard();
}
}
} else if ( (*it).tempSyncStat() == SYNC_TEMPSTATE_DELETE ) {
res = mAccess->deleteCard(&id);
if ( res )
qDebug("delete success ");
else
qDebug("delete error ");
} else if ( (*it).tempSyncStat() != SYNC_TEMPSTATE_NEW_EXTERNAL ) {
//changed
+ qDebug("changed ****");
res = mAccess->startEditCard(id);
if (res == true)
{
res = mConverter->addresseeToSharp( (*it), mAccess, id );
if (res == true)
{
KABC::Addressee addressee;
res = mConverter->sharpToAddressee( id, mAccess, addressee );
addressee.setUid((*it).uid() );
addressee.setTempSyncStat( SYNC_TEMPSTATE_NEW_CSUM );
changedAddressees.append( addressee );
res = mAccess->finishEditCard(&id);
if (res == false)
qDebug("Unable to append Contact: %s", addressee.formattedName().latin1());
- else {
- qDebug("change card succes ");
- }
- }
- else
- {
- qDebug("Unable to convert Addressee: %s", addressee.formattedName().latin1());
- mAccess->cancelEditCard();
- }
- }
- }
-
-
-
-
-
-
-
- }
-
-#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;
for ( it2 = changedAddressees.begin(); it2 != changedAddressees.end(); ++it2 )
addressBook()->insertAddressee((*it2));
//US mAccess->save();
mDirWatch.startScan();
delete ticket;
unlock( fileName() );
return true;
}
bool ResourceSharpDTM::lock( const QString &lockfileName )
{
#ifdef ALLOW_LOCKING
qDebug("ResourceSharpDTM::lock: %s", fileName().latin1());
kdDebug(5700) << "ResourceSharpDTM::lock()" << endl;
QString fn = lockfileName;
KURL url(fn);
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
@@ -5,117 +5,127 @@
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public License
along with this library; see the file COPYING.LIB. If not, write to
the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA.
*/
/*
Enhanced Version of the file for platform independent KDE tools.
Copyright (c) 2004 Ulf Schenk
$Id$
*/
#include "kglobal.h"
+#include <qregexp.h>
#include "sharpdtmconverter.h"
#include <sl/slcategories.h>
+#include <libkdepim/ksyncprofile.h>
//US #include <qpe/categoryselect.h>
using namespace KABC;
using namespace SlCategory;
SharpDTMConverter::SharpDTMConverter() : catDB(0)
{
}
SharpDTMConverter::~SharpDTMConverter()
{
deinit();
}
bool SharpDTMConverter::init()
{
catDB = new SlCategory::SlCategories();
if (!catDB)
return false;
// catDB->load( categoryFileName() );
return true;
}
void SharpDTMConverter::deinit()
{
if (catDB)
{
delete catDB;
catDB = 0;
}
}
bool SharpDTMConverter::sharpToAddressee( const CardId &contact, const SlZDataBase* database, Addressee &addr )
{
SlZDataBase* db = (SlZDataBase*)database;
// 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) );
addr.setAdditionalName( db->readField(ZdbAdrs::MiddleName) );
addr.setPrefix( db->readField(ZdbAdrs::Title) );
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 ( ! found )
if (!db->readField(ZdbAdrs::DefaultEmail).isEmpty())
addr.insertEmail(db->readField(ZdbAdrs::DefaultEmail), true);
// home
if ((!db->readField(ZdbAdrs::HomeStreet).isEmpty()) ||
(!db->readField(ZdbAdrs::HomeCity).isEmpty()) ||
(!db->readField(ZdbAdrs::HomeState).isEmpty()) ||
(!db->readField(ZdbAdrs::HomeZip).isEmpty()) ||
(!db->readField(ZdbAdrs::HomeCountry).isEmpty()))
{
Address homeaddress;
homeaddress.setType(Address::Home);
//US homeaddress.setPostOfficeBox( "" );
//US homeaddress.setExtended( "" );
homeaddress.setStreet( db->readField(ZdbAdrs::HomeStreet) );
homeaddress.setLocality( db->readField(ZdbAdrs::HomeCity) );
homeaddress.setRegion( db->readField(ZdbAdrs::HomeState) );
homeaddress.setPostalCode( db->readField(ZdbAdrs::HomeZip) );
homeaddress.setCountry( db->readField(ZdbAdrs::HomeCountry) );
addr.insertAddress( homeaddress );
}
if (!db->readField(ZdbAdrs::HomePhone).isEmpty())
@@ -177,214 +187,245 @@ bool SharpDTMConverter::sharpToAddressee( const CardId &contact, const SlZDataBa
if (!db->readField(ZdbAdrs::BusinessFax).isEmpty())
{
PhoneNumber businessfax;
businessfax.setType( PhoneNumber::Work | PhoneNumber::Fax );
businessfax.setNumber( db->readField(ZdbAdrs::BusinessFax) );
addr.insertPhoneNumber( businessfax );
}
if (!db->readField(ZdbAdrs::BusinessMobile).isEmpty())
{
PhoneNumber businessmobile;
businessmobile.setType( PhoneNumber::Work | PhoneNumber::Cell );
businessmobile.setNumber( db->readField(ZdbAdrs::BusinessMobile) );
addr.insertPhoneNumber( businessmobile );
}
if (!db->readField(ZdbAdrs::BusinessPager).isEmpty())
{
PhoneNumber businesspager;
businesspager.setType( PhoneNumber::Work | PhoneNumber::Pager );
businesspager.setNumber( db->readField(ZdbAdrs::BusinessPager) );
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) );
addr.insertCustom( "KADDRESSBOOK", "X-Department", db->readField(ZdbAdrs::Department) );
addr.insertCustom( "KADDRESSBOOK", "X-ManagersName", db->readField(ZdbAdrs::Manager) );
addr.insertCustom( "KADDRESSBOOK", "X-Office", db->readField(ZdbAdrs::Office) );
//personal
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");
else if (gen == "female")
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 );
addr.setNickName( db->readField(ZdbAdrs::Nickname) );
// 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) );
//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;
for ( unsigned int i=0; i < catArray.size(); i++ ) {
cat = catDB->label(catArray[i]);
if ( cat.isEmpty() )
addr.insertCategory(QString::number(catArray[i]));
else
addr.insertCategory( cat );
}
return true;
}
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());
database->writeField(ZdbAdrs::MiddleName, addr.additionalName());
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() );
// home
const Address homeaddress = addr.address(Address::Home);
if (!homeaddress.isEmpty()) {
database->writeField(ZdbAdrs::HomeStreet, homeaddress.street());
database->writeField(ZdbAdrs::HomeCity, homeaddress.locality());
database->writeField(ZdbAdrs::HomeState, homeaddress.region());
database->writeField(ZdbAdrs::HomeZip, homeaddress.postalCode());
database->writeField(ZdbAdrs::HomeCountry, homeaddress.country());
}
PhoneNumber homephone = addr.phoneNumber( PhoneNumber::Home );
if (!homephone.number().isEmpty())
database->writeField(ZdbAdrs::HomePhone, homephone.number());
PhoneNumber homefax = addr.phoneNumber( PhoneNumber::Home | PhoneNumber::Fax );
if (!homefax.number().isEmpty())
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());
// business
const Address businessaddress = addr.address(Address::Work);
if (!businessaddress.isEmpty()) {
database->writeField(ZdbAdrs::BusinessStreet, businessaddress.street());
database->writeField(ZdbAdrs::BusinessCity, businessaddress.locality());
database->writeField(ZdbAdrs::BusinessState, businessaddress.region());
database->writeField(ZdbAdrs::BusinessZip, businessaddress.postalCode());
database->writeField(ZdbAdrs::BusinessCountry, businessaddress.country());
}
PhoneNumber businessphone = addr.phoneNumber( PhoneNumber::Work );
if (!businessphone.number().isEmpty())
database->writeField(ZdbAdrs::BusinessPhone, businessphone.number());
PhoneNumber businessfax = addr.phoneNumber( PhoneNumber::Work | PhoneNumber::Fax );
if (!businessfax.number().isEmpty())
database->writeField(ZdbAdrs::BusinessFax, businessfax.number());
PhoneNumber businessmobile = addr.phoneNumber( PhoneNumber::Work | PhoneNumber::Cell );
- if (!businessmobile.number().isEmpty())
+ 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())
database->writeField(ZdbAdrs::BusinessPager, businesspager.number());
database->writeField(ZdbAdrs::JobTitle, addr.role());
database->writeField(ZdbAdrs::Company, addr.organization());
database->writeField(ZdbAdrs::Profession, addr.custom( "KADDRESSBOOK", "X-Profession" ));
database->writeField(ZdbAdrs::Assistant, addr.custom( "KADDRESSBOOK", "X-AssistantsName" ));
database->writeField(ZdbAdrs::Department, addr.custom( "KADDRESSBOOK", "X-Department" ));
database->writeField(ZdbAdrs::Manager, addr.custom( "KADDRESSBOOK", "X-ManagersName" ));
database->writeField(ZdbAdrs::Office, addr.custom( "KADDRESSBOOK", "X-Office" ));
//personal
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, "");
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
database->writeField(ZdbAdrs::Notes, addr.note());
//US QString groups() const { return find( Qtopia::Groups ); }
//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
@@ -57,30 +57,31 @@ public:
bool init();
void deinit();
/**
* Converts a given sharp card to an addressee.
*
* @param contact The sharp card id, eventhough it might be 0, if the contact is a new one.
* @param database The sharp database pointer we use for the conversion
* @param addr The addressee.
*/
bool sharpToAddressee( const CardId &contact, const SlZDataBase* database, Addressee &addr );
/**
* Converts an addressee to a sharp dtm contact.
*
* @param addr The addressee.
* @param database The sharp database pointer we use for the conversion
* @param contact The sharp card id, eventhough it might be 0, if the contact is a new one.
*/
bool addresseeToSharp( const Addressee &addr, SlZDataBase* database , const CardId &contact );
private:
SlCategory::SlCategories* catDB;
+ QDate convertDate( QString );
};
}
#endif