-rw-r--r-- | kabc/converter/opie/opieconverter.cpp | 105 | ||||
-rw-r--r-- | kabc/converter/opie/opieconverter.h | 11 |
2 files changed, 81 insertions, 35 deletions
diff --git a/kabc/converter/opie/opieconverter.cpp b/kabc/converter/opie/opieconverter.cpp index d785fbc..b4e9f1c 100644 --- a/kabc/converter/opie/opieconverter.cpp +++ b/kabc/converter/opie/opieconverter.cpp @@ -23,67 +23,101 @@ Enhanced Version of the file for platform independent KDE tools. Copyright (c) 2004 Ulf Schenk $Id$ */ //US #include "kglobal.h" #include "opieconverter.h" #include <qpe/categories.h> +#include <qpe/categoryselect.h> using namespace KABC; -OpieConverter::OpieConverter() +OpieConverter::OpieConverter() : catDB(0) { } OpieConverter::~OpieConverter() { + deinit(); +} + +bool OpieConverter::init() +{ + catDB = new Categories(); + if (catDB) + { + catDB->load( categoryFileName() ); + return true; + } + else + { + return false; + } + +} + +void OpieConverter::deinit() +{ + if (catDB) + { + delete catDB; + catDB = 0; + } } bool OpieConverter::opieToAddressee( OContact &contact, Addressee &addr ) { // name addr.setFormattedName(contact.fileAs()); addr.setFamilyName( contact.lastName() ); addr.setGivenName( contact.firstName() ); addr.setAdditionalName( contact.middleName() ); addr.setPrefix( contact.title() ); addr.setSuffix( contact.suffix() ); // email QStringList emails = contact.emailList(); for ( QStringList::Iterator it = emails.begin(); it != emails.end(); ++it ) { addr.insertEmail( *it, ((*it) == contact.defaultEmail()) ); } - addr.insertEmail(contact.defaultEmail(), true); + if (!contact.defaultEmail().isEmpty()) + addr.insertEmail(contact.defaultEmail(), true); // home - Address homeaddress; - homeaddress.setType(Address::Home); + if ((!contact.homeStreet().isEmpty()) || + (!contact.homeCity().isEmpty()) || + (!contact.homeState().isEmpty()) || + (!contact.homeZip().isEmpty()) || + (!contact.homeCountry().isEmpty())) + { + Address homeaddress; + homeaddress.setType(Address::Home); //US homeaddress.setPostOfficeBox( "" ); //US homeaddress.setExtended( "" ); - homeaddress.setStreet( contact.homeStreet() ); - homeaddress.setLocality( contact.homeCity() ); - homeaddress.setRegion( contact.homeState() ); - homeaddress.setPostalCode( contact.homeZip() ); - homeaddress.setCountry( contact.homeCountry() ); + homeaddress.setStreet( contact.homeStreet() ); + homeaddress.setLocality( contact.homeCity() ); + homeaddress.setRegion( contact.homeState() ); + homeaddress.setPostalCode( contact.homeZip() ); + homeaddress.setCountry( contact.homeCountry() ); - addr.insertAddress( homeaddress ); + addr.insertAddress( homeaddress ); + } if (!contact.homePhone().isEmpty()) { PhoneNumber homephone; homephone.setType( PhoneNumber::Home ); homephone.setNumber( contact.homePhone() ); addr.insertPhoneNumber( homephone ); } if (!contact.homeFax().isEmpty()) { PhoneNumber homefax; @@ -95,36 +129,44 @@ bool OpieConverter::opieToAddressee( OContact &contact, Addressee &addr ) if (!contact.homeMobile().isEmpty()) { PhoneNumber homemobile; homemobile.setType( PhoneNumber::Home | PhoneNumber::Cell ); homemobile.setNumber( contact.homeMobile() ); addr.insertPhoneNumber( homemobile ); } addr.setUrl( contact.homeWebpage() ); // business - Address businessaddress; - businessaddress.setType(Address::Work); + if ((!contact.businessStreet().isEmpty()) || + (!contact.businessCity().isEmpty()) || + (!contact.businessState().isEmpty()) || + (!contact.businessZip().isEmpty()) || + (!contact.businessCountry().isEmpty())) + { + Address businessaddress; + businessaddress.setType(Address::Work); //US businessaddress.setPostOfficeBox( "" ); //US businessaddress.setExtended( "" ); - businessaddress.setStreet( contact.businessStreet() ); - businessaddress.setLocality( contact.businessCity() ); - businessaddress.setRegion( contact.businessState() ); - businessaddress.setPostalCode( contact.businessZip() ); - businessaddress.setCountry( contact.businessCountry() ); + businessaddress.setStreet( contact.businessStreet() ); + businessaddress.setLocality( contact.businessCity() ); + businessaddress.setRegion( contact.businessState() ); + businessaddress.setPostalCode( contact.businessZip() ); + businessaddress.setCountry( contact.businessCountry() ); + + addr.insertAddress( businessaddress ); + } + - addr.insertAddress( businessaddress ); - if (!contact.businessPhone().isEmpty()) { PhoneNumber businessphone; businessphone.setType( PhoneNumber::Work ); businessphone.setNumber( contact.businessPhone() ); addr.insertPhoneNumber( businessphone ); } if (!contact.businessFax().isEmpty()) { PhoneNumber businessfax; businessfax.setType( PhoneNumber::Work | PhoneNumber::Fax ); @@ -152,56 +194,53 @@ bool OpieConverter::opieToAddressee( OContact &contact, Addressee &addr ) addr.setOrganization( contact.company() ); addr.insertCustom( "KADDRESSBOOK", "X-Profession", contact.profession() ); addr.insertCustom( "KADDRESSBOOK", "X-AssistantsName", contact.assistant() ); addr.insertCustom( "KADDRESSBOOK", "X-Department", contact.department() ); addr.insertCustom( "KADDRESSBOOK", "X-ManagersName", contact.manager() ); addr.insertCustom( "KADDRESSBOOK", "X-Office", contact.office() ); //personal addr.insertCustom( "KADDRESSBOOK", "X-SpousesName", contact.spouse() ); addr.insertCustom( "KADDRESSBOOK", "X-Gender", contact.gender() ); if (contact.anniversary().isValid()) { - int orgformat = KGlobal::locale()->getIntDateFormat(); - KGlobal::locale()->setIntDateFormat( 2 ); // = Qt::ISODate - QString dt = KGlobal::locale()->formatDate(contact.anniversary(), true); + QString dt = KGlobal::locale()->formatDate(contact.anniversary(), true, KLocale::ISODate); //US qDebug("OpieConverter::opieToAddressee found:%s", dt.latin1()); - KGlobal::locale()->setIntDateFormat(orgformat ); addr.insertCustom( "KADDRESSBOOK", "X-Anniversary", dt); } addr.insertCustom( "KADDRESSBOOK", "X-Children", contact.children() ); if (contact.birthday().isValid()) addr.setBirthday( contact.birthday() ); addr.setNickName( contact.nickname() ); // others //US I put opies BusinessWebPage into Ka/Pi's notes block, because no other native field is available. QString notes = contact.notes(); notes += "\nBusinessWebPage: " + contact.businessWebpage() + "\n"; addr.setNote( contact.notes() ); //US QString groups() const { return find( Qtopia::Groups ); } //US QStringList groupList() const; QStringList cats = contact.categoryNames("Contacts"); - for ( QStringList::Iterator it = cats.begin(); it != cats.end(); ++it ) { - qDebug("Cat: %s", (*it).latin1()); - } +// for ( QStringList::Iterator it = cats.begin(); it != cats.end(); ++it ) { +// qDebug("Cat: %s", (*it).latin1()); +// } addr.setCategories( contact.categoryNames("Contacts") ); // qDebug("Groups: %s", contact.groups().latin1()); // addr.setCategories( contact.groupList() ); return true; } bool OpieConverter::addresseeToOpie( const Addressee &addr, OContact &contact ) { @@ -314,25 +353,23 @@ bool OpieConverter::addresseeToOpie( const Addressee &addr, OContact &contact ) /*US QStringList cats = addr.categories(); QArray<int> cat(cats.count()); int counter = 0; for ( QStringList::ConstIterator it = cats.begin(); it != cats.end(); ++it ) cat[counter] = (*it).toInt(); contact.setCategories( cat ); */ Categories catDB; - catDB.dump(); -//US catDB.load( contact.categoryFileName() ); - catDB.load( "contact" ); - + catDB.load( categoryFileName() ); QStringList cats = addr.categories(); - for ( QStringList::Iterator it = cats.begin(); it != cats.end(); ++it ) { - qDebug("categories: %s", (*it).latin1()); -// contact.setCategories(catDB.id(*it)); - } + QArray<int> iar; + if ( !cats.isEmpty() ) { + QArray<int> iar = catDB.ids("contact", cats); + contact.setCategories(iar); + } return true; } diff --git a/kabc/converter/opie/opieconverter.h b/kabc/converter/opie/opieconverter.h index ef7300b..7d2ad85 100644 --- a/kabc/converter/opie/opieconverter.h +++ b/kabc/converter/opie/opieconverter.h @@ -24,48 +24,57 @@ Copyright (c) 2004 Ulf Schenk $Id$ */ #ifndef KABC_OPIECONVERTER_H #define KABC_OPIECONVERTER_H #include <qstring.h> #include "addressee.h" #include <opie/ocontact.h> +class Categories; + namespace KABC { class OpieConverter { public: /** * Constructor. */ OpieConverter(); /** * Destructor. */ - ~OpieConverter(); + virtual ~OpieConverter(); + + virtual bool init(); + virtual void deinit(); /** * Converts a vcard string to an addressee. * * @param contact The opie contact. * @param addr The addressee. */ bool opieToAddressee( OContact &contact, Addressee &addr ); /** * Converts an addressee to a vcard string. * * @param addr The addressee. * @param contact The opie contact. */ bool addresseeToOpie( const Addressee &addr, OContact &contact ); + + private: + Categories* catDB; + }; } #endif |