summaryrefslogtreecommitdiffabout
authorzautrix <zautrix>2004-09-21 11:17:18 (UTC)
committer zautrix <zautrix>2004-09-21 11:17:18 (UTC)
commitba89a5d20eb054054d9cfae3723a4d62b9f62efd (patch) (side-by-side diff)
treeee1a42079e3204dbab6f45762f83cb4c1712579e
parent19f445f0b6e7d4591db46b89e877ed9f4332ecd4 (diff)
downloadkdepimpi-ba89a5d20eb054054d9cfae3723a4d62b9f62efd.zip
kdepimpi-ba89a5d20eb054054d9cfae3723a4d62b9f62efd.tar.gz
kdepimpi-ba89a5d20eb054054d9cfae3723a4d62b9f62efd.tar.bz2
DTM fix
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--kabc/addressee.cpp1
-rw-r--r--kabc/plugins/sharpdtm/resourcesharpdtm.cpp1
-rw-r--r--kabc/plugins/sharpdtm/sharpdtmconverter.cpp2
3 files changed, 3 insertions, 1 deletions
diff --git a/kabc/addressee.cpp b/kabc/addressee.cpp
index 31ce1d6..25c77f6 100644
--- a/kabc/addressee.cpp
+++ b/kabc/addressee.cpp
@@ -267,96 +267,97 @@ void Addressee::computeCsum(const QString &dev)
for ( addressIter = mData->addresses.begin(); addressIter != mData->addresses.end();
++addressIter ) {
t = (*addressIter).asList();
t.sort();
for ( iii = 0; iii < t.count(); ++iii)
l.append( t[iii] );
}
uint cs = getCsum4List(l);
// qDebug("CSUM computed %d %s %s", cs,QString::number (cs ).latin1(), uid().latin1() );
setCsum( dev, QString::number (cs ));
}
void Addressee::mergeContact( const Addressee& ad )
{
detach();
if ( mData->name.isEmpty() ) mData->name = ad.mData->name;
if ( mData->formattedName.isEmpty() ) mData->formattedName = ad.mData->formattedName;
if ( mData->familyName.isEmpty() ) mData->familyName = ad.mData->familyName;
if ( mData->givenName.isEmpty() ) mData->givenName = ad.mData->givenName ;
if ( mData->additionalName ) mData->additionalName = ad.mData->additionalName;
if ( mData->prefix.isEmpty() ) mData->prefix = ad.mData->prefix;
if ( mData->suffix.isEmpty() ) mData->suffix = ad.mData->suffix;
if ( mData->nickName.isEmpty() ) mData->nickName = ad.mData->nickName;
if ( !mData->birthday.isValid() )
if ( ad.mData->birthday.isValid())
mData->birthday = ad.mData->birthday;
if ( mData->mailer.isEmpty() ) mData->mailer = ad.mData->mailer;
if ( !mData->timeZone.isValid() ) mData->timeZone = ad.mData->timeZone;
if ( !mData->geo.isValid() ) mData->geo = ad.mData->geo;
if ( mData->title .isEmpty() ) mData->title = ad.mData->title ;
if ( mData->role.isEmpty() ) mData->role = ad.mData->role ;
if ( mData->organization.isEmpty() ) mData->organization = ad.mData->organization ;
if ( mData->note.isEmpty() ) mData->note = ad.mData->note ;
if ( mData->productId.isEmpty() ) mData->productId = ad.mData->productId;
if ( mData->sortString.isEmpty() ) mData->sortString = ad.mData->sortString;
if ( !mData->secrecy.isValid() ) mData->secrecy = ad.mData->secrecy;
if ( ( !mData->url.isValid() && ad.mData->url.isValid() ) ) mData->url = ad.mData->url ;
// pending:
// merging phonenumbers
// merging addresses
// merging emails;
// merging categories;
// merging custom;
// merging keys
qDebug("merge contact %s ", ad.uid().latin1());
setUid( ad.uid() );
+ setRevision( ad.revision() );
}
void Addressee::removeID(const QString &prof)
{
detach();
mData->mExternalId = KIdManager::removeId ( mData->mExternalId, prof);
}
void Addressee::setID( const QString & prof , const QString & id )
{
detach();
mData->mExternalId = KIdManager::setId ( mData->mExternalId, prof, id );
//qDebug("setID2 %s %s %s",mData->mExternalId.latin1(), prof.latin1(), id.latin1() );
}
void Addressee::setTempSyncStat( int id )
{
if ( mData->mTempSyncStat == id ) return;
detach();
mData->mTempSyncStat = id;
}
int Addressee::tempSyncStat() const
{
return mData->mTempSyncStat;
}
QString Addressee::getID( const QString & prof)
{
return KIdManager::getId ( mData->mExternalId, prof );
}
void Addressee::setCsum( const QString & prof , const QString & id )
{
detach();
//qDebug("setcsum1 %s %s %s",mData->mExternalId.latin1(), prof.latin1(), id.latin1() );
mData->mExternalId = KIdManager::setCsum ( mData->mExternalId, prof, id );
//qDebug("setcsum2 %s ",mData->mExternalId.latin1() );
}
QString Addressee::getCsum( const QString & prof)
{
return KIdManager::getCsum ( mData->mExternalId, prof );
}
void Addressee::setIDStr( const QString & s )
{
detach();
mData->mExternalId = s;
}
diff --git a/kabc/plugins/sharpdtm/resourcesharpdtm.cpp b/kabc/plugins/sharpdtm/resourcesharpdtm.cpp
index 437bda8..adc7256 100644
--- a/kabc/plugins/sharpdtm/resourcesharpdtm.cpp
+++ b/kabc/plugins/sharpdtm/resourcesharpdtm.cpp
@@ -253,97 +253,96 @@ bool ResourceSharpDTM::save( Ticket *ticket )
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)
{
res = mAccess->finishEditCard(&id);
//(*it).setTempSyncStat( SYNC_TEMPSTATE_NEW_CSUM );
map.insert(id,(*it).uid());
#if 0
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);
#endif
if (res == false)
qDebug("Unable to append Contact: %s", addressee.formattedName().latin1());
}
else
{
qDebug("Unable to convert Addressee: %s", addressee.formattedName().latin1());
mAccess->cancelEditCard();
}
}
}
}
}
AddresseeMap::Iterator itam;
- res;
for ( res=mAccess->first(); res == true; res=mAccess->next())
{
id = mAccess->cardId();
int idint = id;
itam = map.find( idint );
if ( itam != map.end() ) {
KABC::Addressee addressee;
qDebug("found change %d %s ", idint, itam.data().latin1());
res = mConverter->sharpToAddressee( id, mAccess, addressee );
if ( !addressee.isEmpty() && res )
{
addressee.setResource( this );
addressee.setUid( itam.data() );
addressee.setTempSyncStat( SYNC_TEMPSTATE_NEW_ID );
addressBook()->insertAddressee( addressee , false );
}
}
}
#if 0
KABC::Addressee::List::Iterator it2;
for ( it2 = changedAddressees.begin(); it2 != changedAddressees.end(); ++it2 ) {
(*it2).computeCsum( "Sharp_DTM" );
qDebug("CSUM: %s ",(*it2).getCsum( "Sharp_DTM" ).latin1() );
addressBook()->insertAddressee((*it2));
}
#endif
//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);
QString lockName = locateLocal( "data", "kabc/lock/" + url.fileName() + ".lock" );
diff --git a/kabc/plugins/sharpdtm/sharpdtmconverter.cpp b/kabc/plugins/sharpdtm/sharpdtmconverter.cpp
index fccf625..d36df20 100644
--- a/kabc/plugins/sharpdtm/sharpdtmconverter.cpp
+++ b/kabc/plugins/sharpdtm/sharpdtmconverter.cpp
@@ -267,123 +267,125 @@ bool SharpDTMConverter::sharpToAddressee( const CardId &contact, const SlZDataBa
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!!\n%s",addr.formattedName().latin1() );
QString formattedName = addr.formattedName();
if ( formattedName.isEmpty() ) {
if ( !addr.familyName().isEmpty() ) {
formattedName = addr.familyName();
if ( !addr.givenName().isEmpty() ) {
formattedName += ", ";
formattedName += addr.givenName();
}
} else
formattedName = addr.givenName();
}
database->writeField(ZdbAdrs::FileAs, formattedName);
database->writeField(ZdbAdrs::FullName, 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(" ");
database->writeField(ZdbAdrs::Emails, emails );
database->writeField(ZdbAdrs::DefaultEmail, addr.preferredEmail() );
// home
const Address homeaddress = addr.address(Address::Home);
if (!homeaddress.isEmpty()) {
+ qDebug("write home address ");
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()) {
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()) {
+ qDebug("write business address ");
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()) {
cellWork = true;
database->writeField(ZdbAdrs::BusinessMobile, businessmobile.number());
}
PhoneNumber mobile = addr.phoneNumber( PhoneNumber::Cell );
if (! mobile.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");