summaryrefslogtreecommitdiffabout
authorzautrix <zautrix>2005-01-18 09:31:59 (UTC)
committer zautrix <zautrix>2005-01-18 09:31:59 (UTC)
commit2d6776d79732f6771885a549de5c37f9e75f7641 (patch) (side-by-side diff)
tree5dc2abf48a99e2a35f8e1458f731b3ef9210ac7e
parent522486966ecf041a6e49913b6e420d58d4284837 (diff)
downloadkdepimpi-2d6776d79732f6771885a549de5c37f9e75f7641.zip
kdepimpi-2d6776d79732f6771885a549de5c37f9e75f7641.tar.gz
kdepimpi-2d6776d79732f6771885a549de5c37f9e75f7641.tar.bz2
fixed merging
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--kabc/addressee.cpp111
-rw-r--r--kabc/plugins/sharpdtm/sharpdtmconverter.cpp20
-rw-r--r--kaddressbook/kabcore.cpp32
3 files changed, 94 insertions, 69 deletions
diff --git a/kabc/addressee.cpp b/kabc/addressee.cpp
index 3b238f5..82b4b9b 100644
--- a/kabc/addressee.cpp
+++ b/kabc/addressee.cpp
@@ -284,51 +284,58 @@ void Addressee::computeCsum(const QString &dev)
void Addressee::mergeContact( const Addressee& ad , bool isSubSet) // = false)
{
+ // merge all standard non-outlook fields.
+ //if isSubSet (e.g. mobile phone sync) merge all fields
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 ( isSubSet ) {
+ 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->title .isEmpty() ) mData->title = ad.mData->title ;
+ if ( mData->role.isEmpty() ) mData->role = ad.mData->role ;
+ if ( mData->nickName.isEmpty() ) mData->nickName = ad.mData->nickName;
+ if ( mData->organization.isEmpty() ) mData->organization = ad.mData->organization ;
+ if ( mData->note.isEmpty() ) mData->note = ad.mData->note ;
+ if ( !mData->secrecy.isValid() ) mData->secrecy = ad.mData->secrecy;
+ if ( ( !mData->url.isValid() && ad.mData->url.isValid() ) ) mData->url = ad.mData->url ;
+ 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 ;
QStringList t;
QStringList tAD;
uint iii;
// ********** phone numbers
- PhoneNumber::List phoneAD = ad.phoneNumbers();
- PhoneNumber::List::Iterator phoneItAD;
- for ( phoneItAD = phoneAD.begin(); phoneItAD != phoneAD.end(); ++phoneItAD ) {
- bool found = false;
- PhoneNumber::List::Iterator it;
- for( it = mData->phoneNumbers.begin(); it != mData->phoneNumbers.end(); ++it ) {
- if ( ( *phoneItAD ).contains( (*it) ) ) {
- found = true;
- (*it).setType( ( *phoneItAD ).type() );
- (*it).setNumber( ( *phoneItAD ).number() );
- break;
+ if ( isSubSet ) {
+ PhoneNumber::List phoneAD = ad.phoneNumbers();
+ PhoneNumber::List::Iterator phoneItAD;
+ for ( phoneItAD = phoneAD.begin(); phoneItAD != phoneAD.end(); ++phoneItAD ) {
+ bool found = false;
+ PhoneNumber::List::Iterator it;
+ for( it = mData->phoneNumbers.begin(); it != mData->phoneNumbers.end(); ++it ) {
+ if ( ( *phoneItAD ).contains( (*it) ) ) {
+ found = true;
+ (*it).setType( ( *phoneItAD ).type() );
+ (*it).setNumber( ( *phoneItAD ).number() );
+ break;
+ }
}
+ // if ( isSubSet && ! found )
+ if ( ! found ) // LR try this one...
+ mData->phoneNumbers.append( *phoneItAD );
}
- // if ( isSubSet && ! found )
- if ( ! found ) // LR try this one...
- mData->phoneNumbers.append( *phoneItAD );
}
if ( isSubSet ) {
// ************* emails;
@@ -340,11 +347,13 @@ void Addressee::mergeContact( const Addressee& ad , bool isSubSet) // = false)
}
// ************* categories;
- t = mData->categories;
- tAD = ad.mData->categories;
- for ( iii = 0; iii < tAD.count(); ++iii)
- if ( !t.contains(tAD[iii] ) )
- mData->categories.append( tAD[iii] );
+ if ( isSubSet ) {
+ t = mData->categories;
+ tAD = ad.mData->categories;
+ for ( iii = 0; iii < tAD.count(); ++iii)
+ if ( !t.contains(tAD[iii] ) )
+ mData->categories.append( tAD[iii] );
+ }
QStringList::ConstIterator it;
for( it = ad.mData->custom.begin(); it != ad.mData->custom.end(); ++it ) {
QString qualifiedName = (*it).left( (*it).find( ":" ));
@@ -389,21 +398,23 @@ void Addressee::mergeContact( const Addressee& ad , bool isSubSet) // = false)
}
}
}
- KABC::Address::List::Iterator addressIterA;
- for ( addressIterA = ad.mData->addresses.begin(); addressIterA != ad.mData->addresses.end(); ++addressIterA ) {
- bool found = false;
- KABC::Address::List::Iterator addressIter;
- for ( addressIter = mData->addresses.begin(); addressIter != mData->addresses.end();
- ++addressIter ) {
- if ( (*addressIter) == (*addressIterA)) {
- found = true;
- (*addressIter).setType( (*addressIterA).type() );
- break;
- }
+ if ( isSubSet ) {
+ KABC::Address::List::Iterator addressIterA;
+ for ( addressIterA = ad.mData->addresses.begin(); addressIterA != ad.mData->addresses.end(); ++addressIterA ) {
+ bool found = false;
+ KABC::Address::List::Iterator addressIter;
+ for ( addressIter = mData->addresses.begin(); addressIter != mData->addresses.end();
+ ++addressIter ) {
+ if ( (*addressIter) == (*addressIterA)) {
+ found = true;
+ (*addressIter).setType( (*addressIterA).type() );
+ break;
+ }
- }
- if ( isSubSet && ! found ) {
- mData->addresses.append( *addressIterA );
+ }
+ if ( isSubSet && ! found ) {
+ mData->addresses.append( *addressIterA );
+ }
}
}
//qDebug("merge contact %s ", ad.uid().latin1());
diff --git a/kabc/plugins/sharpdtm/sharpdtmconverter.cpp b/kabc/plugins/sharpdtm/sharpdtmconverter.cpp
index ae4cfbb..8165b4c 100644
--- a/kabc/plugins/sharpdtm/sharpdtmconverter.cpp
+++ b/kabc/plugins/sharpdtm/sharpdtmconverter.cpp
@@ -80,7 +80,8 @@ bool SharpDTMConverter::sharpToAddressee( const CardId &contact, const SlZDataBa
// name
//qDebug("SharpDTMConverter::sharpToAddressee check if the fileAs transformation works!!");
- addr.setFormattedName(db->readField(ZdbAdrs::FileAs)); // needs fix
+ addr.setFormattedName(db->readField(ZdbAdrs::FileAs));
+ addr.setName(db->readField(ZdbAdrs::FullName));
addr.setFamilyName( db->readField(ZdbAdrs::LastName) );
addr.setGivenName( db->readField(ZdbAdrs::FirstName) );
@@ -222,11 +223,12 @@ bool SharpDTMConverter::sharpToAddressee( const CardId &contact, const SlZDataBa
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");
-
- if (gen == "male")
+ if (gen == "1")
addr.insertCustom( "KADDRESSBOOK", "X-Gender", "male");
- else if (gen == "female")
+ else if (gen == "2")
addr.insertCustom( "KADDRESSBOOK", "X-Gender", "female");
+ else
+ addr.insertCustom( "KADDRESSBOOK", "X-Gender", "undef");
QDate ann = KGlobal::locale()->readDate( db->readField(ZdbAdrs::Anniversary) );
@@ -234,7 +236,9 @@ bool SharpDTMConverter::sharpToAddressee( const CardId &contact, const SlZDataBa
QString dt = KGlobal::locale()->formatDate(ann, true, KLocale::ISODate);
//qDebug("qtopiaToAddressee annyversary found:%s", dt.latin1());
addr.insertCustom( "KADDRESSBOOK", "X-Anniversary", dt);
- }
+ } else
+ addr.insertCustom( "KADDRESSBOOK", "X-Anniversary", " ");
+
addr.insertCustom( "KADDRESSBOOK", "X-Children", db->readField(ZdbAdrs::Children) );
@@ -298,7 +302,7 @@ bool SharpDTMConverter::addresseeToSharp( const Addressee &addr, SlZDataBase* da
formattedName = addr.givenName();
}
database->writeField(ZdbAdrs::FileAs, formattedName);
- database->writeField(ZdbAdrs::FullName, formattedName);
+ database->writeField(ZdbAdrs::FullName, addr.name());
// email
//qDebug("SharpDTMConverter::addresseeToSharp check which seperator we need here for the emails!!");
@@ -373,9 +377,9 @@ bool SharpDTMConverter::addresseeToSharp( const Addressee &addr, SlZDataBase* da
//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");
+ database->writeField(ZdbAdrs::Gender, "1");
else if (gt == "female")
- database->writeField(ZdbAdrs::Gender, "female");
+ database->writeField(ZdbAdrs::Gender, "2");
else
database->writeField(ZdbAdrs::Gender, "");
diff --git a/kaddressbook/kabcore.cpp b/kaddressbook/kabcore.cpp
index 42e147f..d970ff1 100644
--- a/kaddressbook/kabcore.cpp
+++ b/kaddressbook/kabcore.cpp
@@ -2353,17 +2353,27 @@ void KABCore::removeVoice()
{
if ( KMessageBox::questionYesNo( this, i18n("After importing, phone numbers\nmay have two or more types.\n(E.g. work+voice)\nThese numbers are shown as \"other\".\nClick Yes to remove the voice type\nfrom numbers with more than one type.\n\nRemove voice type?") ) == KMessageBox::No )
return;
- KABC::Addressee::List list;
XXPortSelectDialog dlg( this, false, this );
- if ( dlg.exec() )
- list = dlg.contacts();
- else
+ if ( !dlg.exec() )
return;
- KABC::Addressee::List::Iterator it;
- for ( it = list.begin(); it != list.end(); ++it ) {
- if ( (*it).removeVoice() )
- addrModified((*it), false );
+ mAddressBook->setUntagged();
+ dlg.tagSelected();
+ message(i18n("Removing voice..."), false );
+ KABC::AddressBook::Iterator it;
+ for ( it = mAddressBook->begin(); it != mAddressBook->end(); ++it ) {
+ if ( (*it).tagged() ) {
+ (*it).removeVoice();
+ }
}
+ message(i18n("Refreshing view...") );
+ qApp->processEvents();
+ mViewManager->refreshView( "" );
+ Addressee add;
+ mDetails->setAddressee( add );
+ message(i18n("Remove voice completed!") );
+
+
+
}
void KABCore::setFormattedName()
@@ -3131,7 +3141,7 @@ bool KABCore::sync(KSyncManager* manager, QString filename, int mode)
AddressBook abLocal(filename,"syncContact");
bool syncOK = false;
if ( abLocal.load() ) {
- qDebug("AB loaded %s,sync mode %d",filename.latin1(), mode );
+ qDebug("Sync:AB loaded %s,sync mode %d",filename.latin1(), mode );
bool external = false;
bool isXML = false;
if ( filename.right(4) == ".xml") {
@@ -3141,7 +3151,7 @@ bool KABCore::sync(KSyncManager* manager, QString filename, int mode)
} else {
external = !manager->mIsKapiFile;
if ( external ) {
- qDebug("Setting vcf mode to external ");
+ qDebug("Sync:Setting vcf mode to external ");
mGlobalSyncMode = SYNC_MODE_EXTERNAL;
AddressBook::Iterator it;
for ( it = abLocal.begin(); it != abLocal.end(); ++it ) {
@@ -3161,7 +3171,7 @@ bool KABCore::sync(KSyncManager* manager, QString filename, int mode)
{
if ( external )
abLocal.removeSyncAddressees( !isXML);
- qDebug("Saving remote AB ");
+ qDebug("Sync:Saving remote AB ");
if ( ! abLocal.saveAB())
qDebug("Error writing back AB to file ");
if ( external ) {