summaryrefslogtreecommitdiffabout
path: root/kabc
authorzautrix <zautrix>2004-10-30 00:27:02 (UTC)
committer zautrix <zautrix>2004-10-30 00:27:02 (UTC)
commitaf857a738da80e9eb68cf311832d44ecb9caf1dd (patch) (side-by-side diff)
tree7e45bdfeb5d2f70f8125f5fed20c28366de91c9a /kabc
parent84afedde379f67982d96dc9efa7abf9d200734e4 (diff)
downloadkdepimpi-af857a738da80e9eb68cf311832d44ecb9caf1dd.zip
kdepimpi-af857a738da80e9eb68cf311832d44ecb9caf1dd.tar.gz
kdepimpi-af857a738da80e9eb68cf311832d44ecb9caf1dd.tar.bz2
fixed DTM sync cat handling
Diffstat (limited to 'kabc') (more/less context) (ignore whitespace changes)
-rw-r--r--kabc/plugins/sharpdtm/resourcesharpdtm.cpp4
-rw-r--r--kabc/plugins/sharpdtm/sharpdtmconverter.cpp154
-rw-r--r--kabc/plugins/sharpdtm/sharpdtmconverter.h1
3 files changed, 100 insertions, 59 deletions
diff --git a/kabc/plugins/sharpdtm/resourcesharpdtm.cpp b/kabc/plugins/sharpdtm/resourcesharpdtm.cpp
index 7069f5d..6413b42 100644
--- a/kabc/plugins/sharpdtm/resourcesharpdtm.cpp
+++ b/kabc/plugins/sharpdtm/resourcesharpdtm.cpp
@@ -200,7 +200,8 @@ bool ResourceSharpDTM::save( Ticket *ticket )
res = mConverter->addresseeToSharp( (*it), mAccess, id );
if (res == true)
{
- res = mAccess->finishEditCard(&id);;
+ res = mAccess->finishEditCard(&id);;
+ mConverter->setCategories( (*it), mAccess, id );
map.insert(id,(*it).uid());
if (res == false)
qDebug("Unable to append Contact: %s", addressee.formattedName().latin1());
@@ -228,6 +229,7 @@ bool ResourceSharpDTM::save( Ticket *ticket )
if (res == true)
{
res = mAccess->finishEditCard(&id);
+ mConverter->setCategories( (*it), mAccess, id );
map.insert(id,(*it).uid());
if (res == false)
qDebug("Unable to append Contact: %s", addressee.formattedName().latin1());
diff --git a/kabc/plugins/sharpdtm/sharpdtmconverter.cpp b/kabc/plugins/sharpdtm/sharpdtmconverter.cpp
index 396be0a..ae4cfbb 100644
--- a/kabc/plugins/sharpdtm/sharpdtmconverter.cpp
+++ b/kabc/plugins/sharpdtm/sharpdtmconverter.cpp
@@ -307,59 +307,43 @@ bool SharpDTMConverter::addresseeToSharp( const Addressee &addr, SlZDataBase* da
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());
- }
-
+ 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());
-
+ database->writeField(ZdbAdrs::HomePhone, homephone.number());
PhoneNumber homefax = addr.phoneNumber( PhoneNumber::Home | PhoneNumber::Fax );
- if (!homefax.number().isEmpty())
- database->writeField(ZdbAdrs::HomeFax, homefax.number());
-
+ database->writeField(ZdbAdrs::HomeFax, homefax.number());
PhoneNumber homemobile = addr.phoneNumber( PhoneNumber::Home | PhoneNumber::Cell );
+ database->writeField(ZdbAdrs::HomeMobile, homemobile.number());
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());
- }
-
+ 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());
+ database->writeField(ZdbAdrs::BusinessPhone, businessphone.number());
PhoneNumber businessfax = addr.phoneNumber( PhoneNumber::Work | PhoneNumber::Fax );
- if (!businessfax.number().isEmpty())
- database->writeField(ZdbAdrs::BusinessFax, businessfax.number());
+ database->writeField(ZdbAdrs::BusinessFax, businessfax.number());
PhoneNumber businessmobile = addr.phoneNumber( PhoneNumber::Work | PhoneNumber::Cell );
+ 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 (! mobile.number().isEmpty()) {
@@ -370,8 +354,7 @@ bool SharpDTMConverter::addresseeToSharp( const Addressee &addr, SlZDataBase* da
}
PhoneNumber businesspager = addr.phoneNumber( PhoneNumber::Work | PhoneNumber::Pager );
- if (!businesspager.number().isEmpty())
- database->writeField(ZdbAdrs::BusinessPager, businesspager.number());
+ database->writeField(ZdbAdrs::BusinessPager, businesspager.number());
database->writeField(ZdbAdrs::JobTitle, addr.role());
database->writeField(ZdbAdrs::Company, addr.organization());
@@ -396,46 +379,101 @@ bool SharpDTMConverter::addresseeToSharp( const Addressee &addr, SlZDataBase* da
else
database->writeField(ZdbAdrs::Gender, "");
-
- QDate dt = KGlobal::locale()->readDate(
- addr.custom("KADDRESSBOOK", "X-Anniversary" ), "%Y-%m-%d"); // = Qt::ISODate
+ QString dateS ;
+ QDate dt = KGlobal::locale()->readDate(addr.custom("KADDRESSBOOK", "X-Anniversary" ), "%Y-%m-%d"); // = Qt::ISODate
if ( dt.isValid() ) {
- QString dateS = KGlobal::locale()->formatDate(dt, true );
- database->writeField(ZdbAdrs::Anniversary, dateS );
+ dateS = KGlobal::locale()->formatDate(dt, true );
}
+ database->writeField(ZdbAdrs::Anniversary, dateS );
database->writeField(ZdbAdrs::Children, addr.custom( "KADDRESSBOOK", "X-Children" ));
- dt = addr.birthday().date();
+ dt = addr.birthday().date();
+ dateS = "";
if ( dt.isValid() ) {
- QString dateS = KGlobal::locale()->formatDate(dt, true );
- database->writeField(ZdbAdrs::Birthday, dateS);
+ 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;
+//US QStringList groupList() const;
//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;
}
+
+bool SharpDTMConverter::setCategories( const Addressee &addr, SlZDataBase* database , const CardId &contact )
+{
+ QStringList list = addr.categories();
+
+ QArray<int> ids(list.count());
+ uint index = 0;
+ for(uint i=0; i<ids.size(); i++){
+ if(catDB->exists(list[i])){
+ ids[index] = catDB->id(list[i]);
+ qDebug("set ex cat %d %s ",ids[index] , list[i].latin1());
+ index++;
+ } else {
+ ids[index] = catDB->addCategory(list[i]);
+ qDebug("add new cat %d %s ",ids[index] , list[i].latin1());
+ index++;
+ }
+ }
+ bool res ;
+ if ( res = database->updateCategories(contact, ids) )
+ qDebug("cat updated ");
+ else
+ qDebug("error cat updating ");
+
+ return res;
+}
+
+#if 0
+ m_pCategories = new SlCategories;
+catDB
+
+ if(categories == QString::null) return true;
+ QStringList list = CSVParser::parse(categories);
+ QArray<int> ids(list.count());
+ uint index = 0;
+ for(uint i=0; i<ids.size(); i++){
+#if 0
+ bool ok;
+ ids[index] = list[i].toInt(&ok);
+ if(ok){
+ index++;
+ } else {
+ if(m_pCategories->exists(list[i])){
+ ids[index] = m_pCategories->id(list[i]);
+ index++;
+ }
+ }
+#else
+ if(m_pCategories->exists(list[i])){
+ ids[index] = m_pCategories->id(list[i]);
+ index++;
+ } else if(m_addCategory){
+ ids[index] = m_pCategories->addCategory(list[i]);
+ index++;
+ }
+#endif
+ }
+ if(ids.size() > 0 && index == 0){
+ return true;
+ } else if(index != ids.size()){
+ ids.resize(index);
+ }
+ if(!m_pZdb->updateCategories(id, ids)){
+ return false;
+ }
+ return true;
+#endif
+
QDate SharpDTMConverter::convertDate( QString s)
{
QDate dt = KGlobal::locale()->readDate( s );
diff --git a/kabc/plugins/sharpdtm/sharpdtmconverter.h b/kabc/plugins/sharpdtm/sharpdtmconverter.h
index a04083e..db1bf2d 100644
--- a/kabc/plugins/sharpdtm/sharpdtmconverter.h
+++ b/kabc/plugins/sharpdtm/sharpdtmconverter.h
@@ -75,6 +75,7 @@ public:
* @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 );
+ bool setCategories( const Addressee &addr, SlZDataBase* database , const CardId &contact );
private:
SlCategory::SlCategories* catDB;