-rw-r--r-- | kabc/addressee.cpp | 111 | ||||
-rw-r--r-- | kabc/plugins/sharpdtm/sharpdtmconverter.cpp | 20 |
2 files changed, 73 insertions, 58 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, ""); |