summaryrefslogtreecommitdiffabout
authorulf69 <ulf69>2004-07-09 08:05:25 (UTC)
committer ulf69 <ulf69>2004-07-09 08:05:25 (UTC)
commit259a7a50e4f8138cedfc2004fbde3b37cedcc49f (patch) (unidiff)
treedfd2e89f169ba65ffd250f9b52f8f4efcd62d8b3
parentd91c533ffc42d7bf48fa1326754894b2c30b6831 (diff)
downloadkdepimpi-259a7a50e4f8138cedfc2004fbde3b37cedcc49f.zip
kdepimpi-259a7a50e4f8138cedfc2004fbde3b37cedcc49f.tar.gz
kdepimpi-259a7a50e4f8138cedfc2004fbde3b37cedcc49f.tar.bz2
support for export of categories und supression of empty fields
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--kabc/converter/opie/opieconverter.cpp105
-rw-r--r--kabc/converter/opie/opieconverter.h11
-rw-r--r--kaddressbook/xxport/opie/opie_xxport.cpp16
-rw-r--r--kaddressbook/xxport/opie/opie_xxportE.pro3
4 files changed, 96 insertions, 39 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.
23Copyright (c) 2004 Ulf Schenk 23Copyright (c) 2004 Ulf Schenk
24 24
25$Id$ 25$Id$
26*/ 26*/
27 27
28//US 28//US
29#include "kglobal.h" 29#include "kglobal.h"
30 30
31 31
32#include "opieconverter.h" 32#include "opieconverter.h"
33 33
34#include <qpe/categories.h> 34#include <qpe/categories.h>
35#include <qpe/categoryselect.h>
35 36
36 37
37using namespace KABC; 38using namespace KABC;
38 39
39OpieConverter::OpieConverter() 40OpieConverter::OpieConverter() : catDB(0)
40{ 41{
41} 42}
42 43
43OpieConverter::~OpieConverter() 44OpieConverter::~OpieConverter()
44{ 45{
46 deinit();
47}
48
49bool OpieConverter::init()
50{
51 catDB = new Categories();
52 if (catDB)
53 {
54 catDB->load( categoryFileName() );
55 return true;
56 }
57 else
58 {
59 return false;
60 }
61
62}
63
64void OpieConverter::deinit()
65{
66 if (catDB)
67 {
68 delete catDB;
69 catDB = 0;
70 }
45} 71}
46 72
47bool OpieConverter::opieToAddressee( OContact &contact, Addressee &addr ) 73bool OpieConverter::opieToAddressee( OContact &contact, Addressee &addr )
48{ 74{
49 // name 75 // name
50 addr.setFormattedName(contact.fileAs()); 76 addr.setFormattedName(contact.fileAs());
51 addr.setFamilyName( contact.lastName() ); 77 addr.setFamilyName( contact.lastName() );
52 addr.setGivenName( contact.firstName() ); 78 addr.setGivenName( contact.firstName() );
53 addr.setAdditionalName( contact.middleName() ); 79 addr.setAdditionalName( contact.middleName() );
54 addr.setPrefix( contact.title() ); 80 addr.setPrefix( contact.title() );
55 addr.setSuffix( contact.suffix() ); 81 addr.setSuffix( contact.suffix() );
56 82
57 83
58 // email 84 // email
59 QStringList emails = contact.emailList(); 85 QStringList emails = contact.emailList();
60 for ( QStringList::Iterator it = emails.begin(); it != emails.end(); ++it ) { 86 for ( QStringList::Iterator it = emails.begin(); it != emails.end(); ++it ) {
61 addr.insertEmail( *it, ((*it) == contact.defaultEmail()) ); 87 addr.insertEmail( *it, ((*it) == contact.defaultEmail()) );
62 } 88 }
63 89
64 addr.insertEmail(contact.defaultEmail(), true); 90 if (!contact.defaultEmail().isEmpty())
91 addr.insertEmail(contact.defaultEmail(), true);
65 92
66 // home 93 // home
67 Address homeaddress; 94 if ((!contact.homeStreet().isEmpty()) ||
68 homeaddress.setType(Address::Home); 95 (!contact.homeCity().isEmpty()) ||
96 (!contact.homeState().isEmpty()) ||
97 (!contact.homeZip().isEmpty()) ||
98 (!contact.homeCountry().isEmpty()))
99 {
100 Address homeaddress;
101 homeaddress.setType(Address::Home);
69//US homeaddress.setPostOfficeBox( "" ); 102//US homeaddress.setPostOfficeBox( "" );
70//US homeaddress.setExtended( "" ); 103//US homeaddress.setExtended( "" );
71 homeaddress.setStreet( contact.homeStreet() ); 104 homeaddress.setStreet( contact.homeStreet() );
72 homeaddress.setLocality( contact.homeCity() ); 105 homeaddress.setLocality( contact.homeCity() );
73 homeaddress.setRegion( contact.homeState() ); 106 homeaddress.setRegion( contact.homeState() );
74 homeaddress.setPostalCode( contact.homeZip() ); 107 homeaddress.setPostalCode( contact.homeZip() );
75 homeaddress.setCountry( contact.homeCountry() ); 108 homeaddress.setCountry( contact.homeCountry() );
76 109
77 addr.insertAddress( homeaddress ); 110 addr.insertAddress( homeaddress );
111 }
78 112
79 if (!contact.homePhone().isEmpty()) 113 if (!contact.homePhone().isEmpty())
80 { 114 {
81 PhoneNumber homephone; 115 PhoneNumber homephone;
82 homephone.setType( PhoneNumber::Home ); 116 homephone.setType( PhoneNumber::Home );
83 homephone.setNumber( contact.homePhone() ); 117 homephone.setNumber( contact.homePhone() );
84 addr.insertPhoneNumber( homephone ); 118 addr.insertPhoneNumber( homephone );
85 } 119 }
86 120
87 if (!contact.homeFax().isEmpty()) 121 if (!contact.homeFax().isEmpty())
88 { 122 {
89 PhoneNumber homefax; 123 PhoneNumber homefax;
@@ -95,36 +129,44 @@ bool OpieConverter::opieToAddressee( OContact &contact, Addressee &addr )
95 if (!contact.homeMobile().isEmpty()) 129 if (!contact.homeMobile().isEmpty())
96 { 130 {
97 PhoneNumber homemobile; 131 PhoneNumber homemobile;
98 homemobile.setType( PhoneNumber::Home | PhoneNumber::Cell ); 132 homemobile.setType( PhoneNumber::Home | PhoneNumber::Cell );
99 homemobile.setNumber( contact.homeMobile() ); 133 homemobile.setNumber( contact.homeMobile() );
100 addr.insertPhoneNumber( homemobile ); 134 addr.insertPhoneNumber( homemobile );
101 } 135 }
102 136
103 addr.setUrl( contact.homeWebpage() ); 137 addr.setUrl( contact.homeWebpage() );
104 138
105 139
106 // business 140 // business
107 Address businessaddress; 141 if ((!contact.businessStreet().isEmpty()) ||
108 businessaddress.setType(Address::Work); 142 (!contact.businessCity().isEmpty()) ||
143 (!contact.businessState().isEmpty()) ||
144 (!contact.businessZip().isEmpty()) ||
145 (!contact.businessCountry().isEmpty()))
146 {
147 Address businessaddress;
148 businessaddress.setType(Address::Work);
109//US businessaddress.setPostOfficeBox( "" ); 149//US businessaddress.setPostOfficeBox( "" );
110//US businessaddress.setExtended( "" ); 150//US businessaddress.setExtended( "" );
111 businessaddress.setStreet( contact.businessStreet() ); 151 businessaddress.setStreet( contact.businessStreet() );
112 businessaddress.setLocality( contact.businessCity() ); 152 businessaddress.setLocality( contact.businessCity() );
113 businessaddress.setRegion( contact.businessState() ); 153 businessaddress.setRegion( contact.businessState() );
114 businessaddress.setPostalCode( contact.businessZip() ); 154 businessaddress.setPostalCode( contact.businessZip() );
115 businessaddress.setCountry( contact.businessCountry() ); 155 businessaddress.setCountry( contact.businessCountry() );
156
157 addr.insertAddress( businessaddress );
158 }
159
116 160
117 addr.insertAddress( businessaddress );
118
119 if (!contact.businessPhone().isEmpty()) 161 if (!contact.businessPhone().isEmpty())
120 { 162 {
121 PhoneNumber businessphone; 163 PhoneNumber businessphone;
122 businessphone.setType( PhoneNumber::Work ); 164 businessphone.setType( PhoneNumber::Work );
123 businessphone.setNumber( contact.businessPhone() ); 165 businessphone.setNumber( contact.businessPhone() );
124 addr.insertPhoneNumber( businessphone ); 166 addr.insertPhoneNumber( businessphone );
125 } 167 }
126 168
127 if (!contact.businessFax().isEmpty()) 169 if (!contact.businessFax().isEmpty())
128 { 170 {
129 PhoneNumber businessfax; 171 PhoneNumber businessfax;
130 businessfax.setType( PhoneNumber::Work | PhoneNumber::Fax ); 172 businessfax.setType( PhoneNumber::Work | PhoneNumber::Fax );
@@ -152,56 +194,53 @@ bool OpieConverter::opieToAddressee( OContact &contact, Addressee &addr )
152 addr.setOrganization( contact.company() ); 194 addr.setOrganization( contact.company() );
153 addr.insertCustom( "KADDRESSBOOK", "X-Profession", contact.profession() ); 195 addr.insertCustom( "KADDRESSBOOK", "X-Profession", contact.profession() );
154 addr.insertCustom( "KADDRESSBOOK", "X-AssistantsName", contact.assistant() ); 196 addr.insertCustom( "KADDRESSBOOK", "X-AssistantsName", contact.assistant() );
155 addr.insertCustom( "KADDRESSBOOK", "X-Department", contact.department() ); 197 addr.insertCustom( "KADDRESSBOOK", "X-Department", contact.department() );
156 addr.insertCustom( "KADDRESSBOOK", "X-ManagersName", contact.manager() ); 198 addr.insertCustom( "KADDRESSBOOK", "X-ManagersName", contact.manager() );
157 addr.insertCustom( "KADDRESSBOOK", "X-Office", contact.office() ); 199 addr.insertCustom( "KADDRESSBOOK", "X-Office", contact.office() );
158 200
159 //personal 201 //personal
160 addr.insertCustom( "KADDRESSBOOK", "X-SpousesName", contact.spouse() ); 202 addr.insertCustom( "KADDRESSBOOK", "X-SpousesName", contact.spouse() );
161 addr.insertCustom( "KADDRESSBOOK", "X-Gender", contact.gender() ); 203 addr.insertCustom( "KADDRESSBOOK", "X-Gender", contact.gender() );
162 204
163 if (contact.anniversary().isValid()) { 205 if (contact.anniversary().isValid()) {
164 int orgformat = KGlobal::locale()->getIntDateFormat(); 206 QString dt = KGlobal::locale()->formatDate(contact.anniversary(), true, KLocale::ISODate);
165 KGlobal::locale()->setIntDateFormat( 2 ); // = Qt::ISODate
166 QString dt = KGlobal::locale()->formatDate(contact.anniversary(), true);
167//US 207//US
168 qDebug("OpieConverter::opieToAddressee found:%s", dt.latin1()); 208 qDebug("OpieConverter::opieToAddressee found:%s", dt.latin1());
169 KGlobal::locale()->setIntDateFormat(orgformat );
170 addr.insertCustom( "KADDRESSBOOK", "X-Anniversary", dt); 209 addr.insertCustom( "KADDRESSBOOK", "X-Anniversary", dt);
171 } 210 }
172 211
173 addr.insertCustom( "KADDRESSBOOK", "X-Children", contact.children() ); 212 addr.insertCustom( "KADDRESSBOOK", "X-Children", contact.children() );
174 if (contact.birthday().isValid()) 213 if (contact.birthday().isValid())
175 addr.setBirthday( contact.birthday() ); 214 addr.setBirthday( contact.birthday() );
176 215
177 addr.setNickName( contact.nickname() ); 216 addr.setNickName( contact.nickname() );
178 217
179 // others 218 // others
180 //US I put opies BusinessWebPage into Ka/Pi's notes block, because no other native field is available. 219 //US I put opies BusinessWebPage into Ka/Pi's notes block, because no other native field is available.
181 QString notes = contact.notes(); 220 QString notes = contact.notes();
182 notes += "\nBusinessWebPage: " + contact.businessWebpage() + "\n"; 221 notes += "\nBusinessWebPage: " + contact.businessWebpage() + "\n";
183 222
184 addr.setNote( contact.notes() ); 223 addr.setNote( contact.notes() );
185 224
186 225
187 226
188//US QString groups() const { return find( Qtopia::Groups ); } 227//US QString groups() const { return find( Qtopia::Groups ); }
189//US QStringList groupList() const; 228//US QStringList groupList() const;
190 229
191 230
192 QStringList cats = contact.categoryNames("Contacts"); 231 QStringList cats = contact.categoryNames("Contacts");
193 for ( QStringList::Iterator it = cats.begin(); it != cats.end(); ++it ) { 232// for ( QStringList::Iterator it = cats.begin(); it != cats.end(); ++it ) {
194 qDebug("Cat: %s", (*it).latin1()); 233// qDebug("Cat: %s", (*it).latin1());
195 } 234// }
196 235
197 236
198 addr.setCategories( contact.categoryNames("Contacts") ); 237 addr.setCategories( contact.categoryNames("Contacts") );
199// qDebug("Groups: %s", contact.groups().latin1()); 238// qDebug("Groups: %s", contact.groups().latin1());
200// addr.setCategories( contact.groupList() ); 239// addr.setCategories( contact.groupList() );
201 240
202 241
203 return true; 242 return true;
204} 243}
205 244
206bool OpieConverter::addresseeToOpie( const Addressee &addr, OContact &contact ) 245bool OpieConverter::addresseeToOpie( const Addressee &addr, OContact &contact )
207{ 246{
@@ -314,25 +353,23 @@ bool OpieConverter::addresseeToOpie( const Addressee &addr, OContact &contact )
314 353
315/*US 354/*US
316 QStringList cats = addr.categories(); 355 QStringList cats = addr.categories();
317 QArray<int> cat(cats.count()); 356 QArray<int> cat(cats.count());
318 int counter = 0; 357 int counter = 0;
319 for ( QStringList::ConstIterator it = cats.begin(); it != cats.end(); ++it ) 358 for ( QStringList::ConstIterator it = cats.begin(); it != cats.end(); ++it )
320 cat[counter] = (*it).toInt(); 359 cat[counter] = (*it).toInt();
321 360
322 contact.setCategories( cat ); 361 contact.setCategories( cat );
323*/ 362*/
324 363
325 Categories catDB; 364 Categories catDB;
326 catDB.dump(); 365 catDB.load( categoryFileName() );
327//US catDB.load( contact.categoryFileName() );
328 catDB.load( "contact" );
329
330 QStringList cats = addr.categories(); 366 QStringList cats = addr.categories();
331 for ( QStringList::Iterator it = cats.begin(); it != cats.end(); ++it ) {
332 qDebug("categories: %s", (*it).latin1());
333// contact.setCategories(catDB.id(*it));
334 }
335 367
368 QArray<int> iar;
369 if ( !cats.isEmpty() ) {
370 QArray<int> iar = catDB.ids("contact", cats);
371 contact.setCategories(iar);
372 }
336 373
337 return true; 374 return true;
338} 375}
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
24 24
25$Id$ 25$Id$
26*/ 26*/
27 27
28#ifndef KABC_OPIECONVERTER_H 28#ifndef KABC_OPIECONVERTER_H
29#define KABC_OPIECONVERTER_H 29#define KABC_OPIECONVERTER_H
30 30
31#include <qstring.h> 31#include <qstring.h>
32 32
33#include "addressee.h" 33#include "addressee.h"
34#include <opie/ocontact.h> 34#include <opie/ocontact.h>
35 35
36class Categories;
37
36namespace KABC { 38namespace KABC {
37 39
38class OpieConverter 40class OpieConverter
39{ 41{
40public: 42public:
41 43
42 /** 44 /**
43 * Constructor. 45 * Constructor.
44 */ 46 */
45 OpieConverter(); 47 OpieConverter();
46 48
47 /** 49 /**
48 * Destructor. 50 * Destructor.
49 */ 51 */
50 ~OpieConverter(); 52 virtual ~OpieConverter();
53
54 virtual bool init();
55 virtual void deinit();
51 56
52 /** 57 /**
53 * Converts a vcard string to an addressee. 58 * Converts a vcard string to an addressee.
54 * 59 *
55 * @param contact The opie contact. 60 * @param contact The opie contact.
56 * @param addr The addressee. 61 * @param addr The addressee.
57 */ 62 */
58 bool opieToAddressee( OContact &contact, Addressee &addr ); 63 bool opieToAddressee( OContact &contact, Addressee &addr );
59 64
60 /** 65 /**
61 * Converts an addressee to a vcard string. 66 * Converts an addressee to a vcard string.
62 * 67 *
63 * @param addr The addressee. 68 * @param addr The addressee.
64 * @param contact The opie contact. 69 * @param contact The opie contact.
65 */ 70 */
66 bool addresseeToOpie( const Addressee &addr, OContact &contact ); 71 bool addresseeToOpie( const Addressee &addr, OContact &contact );
72
73 private:
74 Categories* catDB;
67 75
76
68}; 77};
69 78
70} 79}
71#endif 80#endif
diff --git a/kaddressbook/xxport/opie/opie_xxport.cpp b/kaddressbook/xxport/opie/opie_xxport.cpp
index d1def18..8ee0725 100644
--- a/kaddressbook/xxport/opie/opie_xxport.cpp
+++ b/kaddressbook/xxport/opie/opie_xxport.cpp
@@ -98,37 +98,47 @@ bool OpieXXPort::exportContacts( const KABC::AddresseeList &list, const QString
98 if ( fileName.isEmpty() ) 98 if ( fileName.isEmpty() )
99 return true; 99 return true;
100 100
101 OContactAccessBackend_XML* backend = new OContactAccessBackend_XML( "KA/Pi", fileName ); 101 OContactAccessBackend_XML* backend = new OContactAccessBackend_XML( "KA/Pi", fileName );
102 OContactAccess* access = new OContactAccess("KA/Pi", 0l, backend, false); 102 OContactAccess* access = new OContactAccess("KA/Pi", 0l, backend, false);
103 103
104 if ( !access ) { 104 if ( !access ) {
105 qDebug("Unable to access file() %s", fileName.latin1()); 105 qDebug("Unable to access file() %s", fileName.latin1());
106 addressBook()->error( i18n( "Unable to access file '%1'." ).arg( fileName ) ); 106 addressBook()->error( i18n( "Unable to access file '%1'." ).arg( fileName ) );
107 return false; 107 return false;
108 } 108 }
109 109
110 KABC::OpieConverter mConverter;
111
112 bool res = mConverter.init();
113 if (!res)
114 {
115 QString text( i18n( "Unable to initialize opie converter.<br>Most likely a problem with the category file." ) );
116 qDebug(text);
117 KMessageBox::error( parentWidget(), text );
118 delete access;
119 return false;
120 }
121
110 //Now check if the file has already entries, and ask the user if he wants to delete them first. 122 //Now check if the file has already entries, and ask the user if he wants to delete them first.
111 OContactAccess::List contactList = access->allRecords(); 123 OContactAccess::List contactList = access->allRecords();
112 if (contactList.count() > 0) 124 if (contactList.count() > 0)
113 { 125 {
114 QString text( i18n( "Do you want to remove<br>all existing entries from<br>%1<br>before exporting.?" ) ); 126 QString text( i18n( "Do you want to remove<br>all existing entries from<br>%1<br>before exporting.?" ) );
115 if ( KMessageBox::questionYesNo( parentWidget(), text.arg( fileName ) ) == KMessageBox::Yes ) { 127 if ( KMessageBox::questionYesNo( parentWidget(), text.arg( fileName ) ) == KMessageBox::Yes ) {
116 // Clean the database.. 128 // Clean the database..
117 access->clear(); 129 access->clear();
118 } 130 }
119 } 131 }
120 132
121 KABC::OpieConverter mConverter;
122 bool res;
123 133
124 KABC::Addressee::List::ConstIterator it; 134 KABC::Addressee::List::ConstIterator it;
125 for ( it = list.begin(); it != list.end(); ++it ) { 135 for ( it = list.begin(); it != list.end(); ++it ) {
126 OContact c; 136 OContact c;
127 KABC::Addressee addressee = (*it); 137 KABC::Addressee addressee = (*it);
128 138
129 res = mConverter.addresseeToOpie( *it, c ); 139 res = mConverter.addresseeToOpie( *it, c );
130 if (res == true) 140 if (res == true)
131 { 141 {
132 res = access->add(c); 142 res = access->add(c);
133 if (res == false) 143 if (res == false)
134 qDebug("Unable to append Contact %s", c.fullName().latin1()); 144 qDebug("Unable to append Contact %s", c.fullName().latin1());
diff --git a/kaddressbook/xxport/opie/opie_xxportE.pro b/kaddressbook/xxport/opie/opie_xxportE.pro
index a660a48..c373e37 100644
--- a/kaddressbook/xxport/opie/opie_xxportE.pro
+++ b/kaddressbook/xxport/opie/opie_xxportE.pro
@@ -1,24 +1,25 @@
1TEMPLATE = lib 1TEMPLATE = lib
2CONFIG += qt warn_on 2CONFIG += qt warn_on
3TARGET = kaddrbk_opie_xxport 3TARGET = kaddrbk_opie_xxport
4 4
5OBJECTS_DIR = obj/$(PLATFORM) 5OBJECTS_DIR = obj/$(PLATFORM)
6MOC_DIR = moc/$(PLATFORM) 6MOC_DIR = moc/$(PLATFORM)
7DESTDIR = $(QPEDIR)/lib 7DESTDIR = $(QPEDIR)/lib
8 8
9DEFINES += KAB_EMBEDDED 9DEFINES += KAB_EMBEDDED
10 10
11INCLUDEPATH += ../.. ../../.. ../../../kabc ../../../kabc/converter/opie ../../../microkde ../../../microkde/kdeui ../../../microkde/kdecore ../../../microkde/kio/kfile ../../../qtcompat $(QPEDIR)/include 11INCLUDEPATH += ../.. ../../.. ../../../kabc ../../../kabc/converter/opie ../../../microkde ../../../microkde/kdeui ../../../microkde/kdecore ../../../microkde/kio/kfile ../../../qtcompat $(OPIEDIR)/include
12LIBS += -L$(QPEDIR)/lib 12LIBS += -L$(QPEDIR)/lib
13LIBS += -L$(OPIEDIR)/lib
13LIBS += -lmicrokde 14LIBS += -lmicrokde
14LIBS += -lmicrokabc 15LIBS += -lmicrokabc
15LIBS += -lopie 16LIBS += -lopie
16LIBS += -lqpe 17LIBS += -lqpe
17LIBS += -lqte 18LIBS += -lqte
18LIBS += -lmicrokabc_opieconverter 19LIBS += -lmicrokabc_opieconverter
19 20
20INTERFACES = \ 21INTERFACES = \
21 22
22HEADERS = \ 23HEADERS = \
23 opie_xxport.h \ 24 opie_xxport.h \
24 25