summaryrefslogtreecommitdiffabout
path: root/kabc
authorulf69 <ulf69>2004-07-09 08:05:25 (UTC)
committer ulf69 <ulf69>2004-07-09 08:05:25 (UTC)
commit259a7a50e4f8138cedfc2004fbde3b37cedcc49f (patch) (unidiff)
treedfd2e89f169ba65ffd250f9b52f8f4efcd62d8b3 /kabc
parentd91c533ffc42d7bf48fa1326754894b2c30b6831 (diff)
downloadkdepimpi-259a7a50e4f8138cedfc2004fbde3b37cedcc49f.zip
kdepimpi-259a7a50e4f8138cedfc2004fbde3b37cedcc49f.tar.gz
kdepimpi-259a7a50e4f8138cedfc2004fbde3b37cedcc49f.tar.bz2
support for export of categories und supression of empty fields
Diffstat (limited to 'kabc') (more/less context) (ignore whitespace changes)
-rw-r--r--kabc/converter/opie/opieconverter.cpp105
-rw-r--r--kabc/converter/opie/opieconverter.h11
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
@@ -11,209 +11,248 @@
11 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Library General Public License for more details. 13 Library General Public License for more details.
14 14
15 You should have received a copy of the GNU Library General Public License 15 You should have received a copy of the GNU Library General Public License
16 along with this library; see the file COPYING.LIB. If not, write to 16 along with this library; see the file COPYING.LIB. If not, write to
17 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, 17 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
18 Boston, MA 02111-1307, USA. 18 Boston, MA 02111-1307, USA.
19*/ 19*/
20 20
21/* 21/*
22Enhanced Version of the file for platform independent KDE tools. 22Enhanced 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;
90 homefax.setType( PhoneNumber::Home | PhoneNumber::Fax ); 124 homefax.setType( PhoneNumber::Home | PhoneNumber::Fax );
91 homefax.setNumber( contact.homeFax() ); 125 homefax.setNumber( contact.homeFax() );
92 addr.insertPhoneNumber( homefax ); 126 addr.insertPhoneNumber( homefax );
93 } 127 }
94 128
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 );
131 businessfax.setNumber( contact.businessFax() ); 173 businessfax.setNumber( contact.businessFax() );
132 addr.insertPhoneNumber( businessfax ); 174 addr.insertPhoneNumber( businessfax );
133 } 175 }
134 176
135 if (!contact.businessMobile().isEmpty()) 177 if (!contact.businessMobile().isEmpty())
136 { 178 {
137 PhoneNumber businessmobile; 179 PhoneNumber businessmobile;
138 businessmobile.setType( PhoneNumber::Work | PhoneNumber::Cell ); 180 businessmobile.setType( PhoneNumber::Work | PhoneNumber::Cell );
139 businessmobile.setNumber( contact.businessMobile() ); 181 businessmobile.setNumber( contact.businessMobile() );
140 addr.insertPhoneNumber( businessmobile ); 182 addr.insertPhoneNumber( businessmobile );
141 } 183 }
142 184
143 if (!contact.businessPager().isEmpty()) 185 if (!contact.businessPager().isEmpty())
144 { 186 {
145 PhoneNumber businesspager; 187 PhoneNumber businesspager;
146 businesspager.setType( PhoneNumber::Work | PhoneNumber::Pager ); 188 businesspager.setType( PhoneNumber::Work | PhoneNumber::Pager );
147 businesspager.setNumber( contact.businessPager() ); 189 businesspager.setNumber( contact.businessPager() );
148 addr.insertPhoneNumber( businesspager ); 190 addr.insertPhoneNumber( businesspager );
149 } 191 }
150 192
151 addr.setRole( contact.jobTitle() ); //? 193 addr.setRole( contact.jobTitle() ); //?
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{
208 // name 247 // name
209 contact.setLastName(addr.familyName()); 248 contact.setLastName(addr.familyName());
210 contact.setFirstName(addr.givenName()); 249 contact.setFirstName(addr.givenName());
211 contact.setMiddleName(addr.additionalName()); 250 contact.setMiddleName(addr.additionalName());
212 contact.setTitle(addr.prefix()); 251 contact.setTitle(addr.prefix());
213 contact.setSuffix(addr.suffix()); 252 contact.setSuffix(addr.suffix());
214 contact.setFileAs(); 253 contact.setFileAs();
215 254
216 255
217 // email 256 // email
218 QStringList emails = addr.emails(); 257 QStringList emails = addr.emails();
219 for ( QStringList::Iterator it = emails.begin(); it != emails.end(); ++it ) { 258 for ( QStringList::Iterator it = emails.begin(); it != emails.end(); ++it ) {
@@ -302,37 +341,35 @@ bool OpieConverter::addresseeToOpie( const Addressee &addr, OContact &contact )
302//US QStringList groupList() const; 341//US QStringList groupList() const;
303 342
304/*US 343/*US
305 QStringList cats = contact.categoryNames("Contacts"); 344 QStringList cats = contact.categoryNames("Contacts");
306 for ( QStringList::Iterator it = cats.begin(); it != cats.end(); ++it ) { 345 for ( QStringList::Iterator it = cats.begin(); it != cats.end(); ++it ) {
307 qDebug("Cat: %s", (*it).latin1()); 346 qDebug("Cat: %s", (*it).latin1());
308 } 347 }
309*/ 348*/
310 349
311// addr.setCategories( contact.categoryNames("Contacts") ); 350// addr.setCategories( contact.categoryNames("Contacts") );
312// contact.categoryNames("Contacts"); 351// contact.categoryNames("Contacts");
313// contact.setCategoryNames(addr.categories()); 352// contact.setCategoryNames(addr.categories());
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
@@ -12,60 +12,69 @@
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Library General Public License for more details. 13 Library General Public License for more details.
14 14
15 You should have received a copy of the GNU Library General Public License 15 You should have received a copy of the GNU Library General Public License
16 along with this library; see the file COPYING.LIB. If not, write to 16 along with this library; see the file COPYING.LIB. If not, write to
17 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, 17 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
18 Boston, MA 02111-1307, USA. 18 Boston, MA 02111-1307, USA.
19*/ 19*/
20 20
21/* 21/*
22Enhanced Version of the file for platform independent KDE tools. 22Enhanced 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#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