summaryrefslogtreecommitdiffabout
path: root/kabc/plugins
authorzautrix <zautrix>2004-10-30 00:27:02 (UTC)
committer zautrix <zautrix>2004-10-30 00:27:02 (UTC)
commitaf857a738da80e9eb68cf311832d44ecb9caf1dd (patch) (unidiff)
tree7e45bdfeb5d2f70f8125f5fed20c28366de91c9a /kabc/plugins
parent84afedde379f67982d96dc9efa7abf9d200734e4 (diff)
downloadkdepimpi-af857a738da80e9eb68cf311832d44ecb9caf1dd.zip
kdepimpi-af857a738da80e9eb68cf311832d44ecb9caf1dd.tar.gz
kdepimpi-af857a738da80e9eb68cf311832d44ecb9caf1dd.tar.bz2
fixed DTM sync cat handling
Diffstat (limited to 'kabc/plugins') (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
@@ -1,301 +1,303 @@
1/* 1/*
2 This file is part of libkabc. 2 This file is part of libkabc.
3 Copyright (c) 2004 Ulf Schenk 3 Copyright (c) 2004 Ulf Schenk
4 4
5 This library is free software; you can redistribute it and/or 5 This library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Library General Public 6 modify it under the terms of the GNU Library General Public
7 License as published by the Free Software Foundation; either 7 License as published by the Free Software Foundation; either
8 version 2 of the License, or (at your option) any later version. 8 version 2 of the License, or (at your option) any later version.
9 9
10 This library is distributed in the hope that it will be useful, 10 This library is distributed in the hope that it will be useful,
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#include <sys/types.h> 28#include <sys/types.h>
29#include <sys/stat.h> 29#include <sys/stat.h>
30#include <unistd.h> 30#include <unistd.h>
31 31
32#include <qdir.h> 32#include <qdir.h>
33#include <qfile.h> 33#include <qfile.h>
34#include <qfileinfo.h> 34#include <qfileinfo.h>
35#include <qregexp.h> 35#include <qregexp.h>
36//US #include <qtimer.h> 36//US #include <qtimer.h>
37 37
38#include <kapplication.h> 38#include <kapplication.h>
39#include <kconfig.h> 39#include <kconfig.h>
40#include <kdebug.h> 40#include <kdebug.h>
41#include <klocale.h> 41#include <klocale.h>
42//US #include <ksavefile.h> 42//US #include <ksavefile.h>
43#include <kstandarddirs.h> 43#include <kstandarddirs.h>
44#include <kmessagebox.h> 44#include <kmessagebox.h>
45 45
46#include <sl/slzdb.h> 46#include <sl/slzdb.h>
47 47
48#include <libkdepim/ksyncprofile.h> 48#include <libkdepim/ksyncprofile.h>
49 49
50#include "resourcesharpdtmconfig.h" 50#include "resourcesharpdtmconfig.h"
51#include "resourcesharpdtm.h" 51#include "resourcesharpdtm.h"
52 52
53#include "stdaddressbook.h" 53#include "stdaddressbook.h"
54 54
55#include "sharpdtmconverter.h" 55#include "sharpdtmconverter.h"
56//#define ALLOW_LOCKING 56//#define ALLOW_LOCKING
57using namespace KABC; 57using namespace KABC;
58extern "C" 58extern "C"
59{ 59{
60 void *init_microkabc_sharpdtm() 60 void *init_microkabc_sharpdtm()
61 { 61 {
62 return new KRES::PluginFactory<ResourceSharpDTM,ResourceSharpDTMConfig>(); 62 return new KRES::PluginFactory<ResourceSharpDTM,ResourceSharpDTMConfig>();
63 } 63 }
64} 64}
65 65
66ResourceSharpDTM::ResourceSharpDTM( const KConfig *config ) 66ResourceSharpDTM::ResourceSharpDTM( const KConfig *config )
67 : Resource( config ), mConverter (0) 67 : Resource( config ), mConverter (0)
68{ 68{
69 // we can not choose the filename. Therefore use the default to display 69 // we can not choose the filename. Therefore use the default to display
70 mAccess = 0; 70 mAccess = 0;
71 QString fileName = SlZDataBase::addressbookFileName(); 71 QString fileName = SlZDataBase::addressbookFileName();
72 init( fileName ); 72 init( fileName );
73} 73}
74 74
75ResourceSharpDTM::ResourceSharpDTM( const QString &fileName ) 75ResourceSharpDTM::ResourceSharpDTM( const QString &fileName )
76 : Resource( 0 ) 76 : Resource( 0 )
77{ 77{
78 mAccess = 0; 78 mAccess = 0;
79 init( fileName ); 79 init( fileName );
80} 80}
81 81
82void ResourceSharpDTM::init( const QString &fileName ) 82void ResourceSharpDTM::init( const QString &fileName )
83{ 83{
84 if (mConverter == 0) { 84 if (mConverter == 0) {
85 mConverter = new SharpDTMConverter(); 85 mConverter = new SharpDTMConverter();
86 bool res = mConverter->init(); 86 bool res = mConverter->init();
87 if ( !res ) 87 if ( !res )
88 { 88 {
89 QString msg("Unable to initialize sharp converter. Most likely a problem with the category file"); 89 QString msg("Unable to initialize sharp converter. Most likely a problem with the category file");
90 qDebug(msg); 90 qDebug(msg);
91 return; 91 return;
92 } 92 }
93 } 93 }
94 setFileName( fileName ); 94 setFileName( fileName );
95} 95}
96 96
97ResourceSharpDTM::~ResourceSharpDTM() 97ResourceSharpDTM::~ResourceSharpDTM()
98{ 98{
99 if (mConverter != 0) 99 if (mConverter != 0)
100 delete mConverter; 100 delete mConverter;
101 101
102 if(mAccess != 0) 102 if(mAccess != 0)
103 delete mAccess; 103 delete mAccess;
104} 104}
105 105
106void ResourceSharpDTM::writeConfig( KConfig *config ) 106void ResourceSharpDTM::writeConfig( KConfig *config )
107{ 107{
108 Resource::writeConfig( config ); 108 Resource::writeConfig( config );
109} 109}
110 110
111Ticket *ResourceSharpDTM::requestSaveTicket() 111Ticket *ResourceSharpDTM::requestSaveTicket()
112{ 112{
113 113
114 qDebug("ResourceSharpDTM::requestSaveTicket: %s", fileName().latin1()); 114 qDebug("ResourceSharpDTM::requestSaveTicket: %s", fileName().latin1());
115 115
116 if ( !addressBook() ) return 0; 116 if ( !addressBook() ) return 0;
117 return createTicket( this ); 117 return createTicket( this );
118} 118}
119 119
120 120
121bool ResourceSharpDTM::doOpen() 121bool ResourceSharpDTM::doOpen()
122{ 122{
123 if (!mConverter) 123 if (!mConverter)
124 return false; 124 return false;
125 return true; 125 return true;
126} 126}
127 127
128void ResourceSharpDTM::doClose() 128void ResourceSharpDTM::doClose()
129{ 129{
130 return; 130 return;
131} 131}
132 132
133bool ResourceSharpDTM::load() 133bool ResourceSharpDTM::load()
134{ 134{
135 if (!mConverter) 135 if (!mConverter)
136 return false; 136 return false;
137 QString fileN = SlZDataBase::addressbookFileName(); 137 QString fileN = SlZDataBase::addressbookFileName();
138 if ( ! mAccess ) { 138 if ( ! mAccess ) {
139 mAccess = new SlZDataBase(fileN, 139 mAccess = new SlZDataBase(fileN,
140 SlZDataBase::addressbookItems(), 140 SlZDataBase::addressbookItems(),
141 0, false); 141 0, false);
142 } 142 }
143 if(mAccess == 0) 143 if(mAccess == 0)
144 return false; 144 return false;
145 145
146 qDebug("%xResourceSharpDTM::load: %s",this, fileName().latin1()); 146 qDebug("%xResourceSharpDTM::load: %s",this, fileName().latin1());
147 bool res = false; 147 bool res = false;
148 CardId id; 148 CardId id;
149 for (bool res=mAccess->first(); res == true; res=mAccess->next()) 149 for (bool res=mAccess->first(); res == true; res=mAccess->next())
150 { 150 {
151 id = mAccess->cardId(); 151 id = mAccess->cardId();
152 KABC::Addressee addressee; 152 KABC::Addressee addressee;
153 res = mConverter->sharpToAddressee( id, mAccess, addressee ); 153 res = mConverter->sharpToAddressee( id, mAccess, addressee );
154 if ( !addressee.isEmpty() && res ) 154 if ( !addressee.isEmpty() && res )
155 { 155 {
156 addressee.setResource( this ); 156 addressee.setResource( this );
157 addressBook()->insertAddressee( addressee ); 157 addressBook()->insertAddressee( addressee );
158 } 158 }
159 } 159 }
160 if(mAccess != 0) 160 if(mAccess != 0)
161 delete mAccess; 161 delete mAccess;
162 mAccess = 0; 162 mAccess = 0;
163 163
164 return true; 164 return true;
165} 165}
166 166
167bool ResourceSharpDTM::save( Ticket *ticket ) 167bool ResourceSharpDTM::save( Ticket *ticket )
168{ 168{
169 if (!mConverter) 169 if (!mConverter)
170 return false; 170 return false;
171 QString fileN = SlZDataBase::addressbookFileName(); 171 QString fileN = SlZDataBase::addressbookFileName();
172 if ( ! mAccess ) { 172 if ( ! mAccess ) {
173 mAccess = new SlZDataBase(fileN, 173 mAccess = new SlZDataBase(fileN,
174 SlZDataBase::addressbookItems(), 174 SlZDataBase::addressbookItems(),
175 0, false); 175 0, false);
176 } 176 }
177 if(mAccess == 0) 177 if(mAccess == 0)
178 return false; 178 return false;
179 qDebug("ResourceSharpDTM::save: %s", fileName().latin1()); 179 qDebug("ResourceSharpDTM::save: %s", fileName().latin1());
180 KABC::AddressBook::Iterator it; 180 KABC::AddressBook::Iterator it;
181 bool res; 181 bool res;
182 KABC::Addressee::List changedAddressees; 182 KABC::Addressee::List changedAddressees;
183 typedef QMap<int,QString> AddresseeMap; 183 typedef QMap<int,QString> AddresseeMap;
184 AddresseeMap map; 184 AddresseeMap map;
185 CardId id ; 185 CardId id ;
186 for ( it = addressBook()->begin(); it != addressBook()->end(); ++it ) { 186 for ( it = addressBook()->begin(); it != addressBook()->end(); ++it ) {
187 187
188 if ( (*it).tempSyncStat() != SYNC_TEMPSTATE_NEW_EXTERNAL ) { 188 if ( (*it).tempSyncStat() != SYNC_TEMPSTATE_NEW_EXTERNAL ) {
189 QString uid = (*it).originalExternalUID(); 189 QString uid = (*it).originalExternalUID();
190 bool res; 190 bool res;
191 if ( uid.isEmpty() ) 191 if ( uid.isEmpty() )
192 id = 0; 192 id = 0;
193 else 193 else
194 id = uid.toUInt(); 194 id = uid.toUInt();
195 KABC::Addressee addressee = (*it); 195 KABC::Addressee addressee = (*it);
196 if ( (*it).tempSyncStat() == SYNC_TEMPSTATE_ADDED_EXTERNAL ) { 196 if ( (*it).tempSyncStat() == SYNC_TEMPSTATE_ADDED_EXTERNAL ) {
197 res = mAccess->startEditCard(id); 197 res = mAccess->startEditCard(id);
198 if (res == true) 198 if (res == true)
199 { 199 {
200 res = mConverter->addresseeToSharp( (*it), mAccess, id ); 200 res = mConverter->addresseeToSharp( (*it), mAccess, id );
201 if (res == true) 201 if (res == true)
202 { 202 {
203 res = mAccess->finishEditCard(&id);; 203 res = mAccess->finishEditCard(&id);;
204 mConverter->setCategories( (*it), mAccess, id );
204 map.insert(id,(*it).uid()); 205 map.insert(id,(*it).uid());
205 if (res == false) 206 if (res == false)
206 qDebug("Unable to append Contact: %s", addressee.formattedName().latin1()); 207 qDebug("Unable to append Contact: %s", addressee.formattedName().latin1());
207 208
208 } 209 }
209 else 210 else
210 { 211 {
211 qDebug("Unable to convert Addressee: %s", addressee.formattedName().latin1()); 212 qDebug("Unable to convert Addressee: %s", addressee.formattedName().latin1());
212 mAccess->cancelEditCard(); 213 mAccess->cancelEditCard();
213 } 214 }
214 } 215 }
215 216
216 } else if ( (*it).tempSyncStat() == SYNC_TEMPSTATE_DELETE ) { 217 } else if ( (*it).tempSyncStat() == SYNC_TEMPSTATE_DELETE ) {
217 res = mAccess->deleteCard(&id); 218 res = mAccess->deleteCard(&id);
218 if ( !res ) 219 if ( !res )
219 qDebug("delete error "); 220 qDebug("delete error ");
220 221
221 222
222 } else if ( (*it).tempSyncStat() != SYNC_TEMPSTATE_NEW_EXTERNAL ) { 223 } else if ( (*it).tempSyncStat() != SYNC_TEMPSTATE_NEW_EXTERNAL ) {
223 //changed 224 //changed
224 res = mAccess->startEditCard(id); 225 res = mAccess->startEditCard(id);
225 if (res == true) 226 if (res == true)
226 { 227 {
227 res = mConverter->addresseeToSharp( (*it), mAccess, id ); 228 res = mConverter->addresseeToSharp( (*it), mAccess, id );
228 if (res == true) 229 if (res == true)
229 { 230 {
230 res = mAccess->finishEditCard(&id); 231 res = mAccess->finishEditCard(&id);
232 mConverter->setCategories( (*it), mAccess, id );
231 map.insert(id,(*it).uid()); 233 map.insert(id,(*it).uid());
232 if (res == false) 234 if (res == false)
233 qDebug("Unable to append Contact: %s", addressee.formattedName().latin1()); 235 qDebug("Unable to append Contact: %s", addressee.formattedName().latin1());
234 } 236 }
235 else 237 else
236 { 238 {
237 qDebug("Unable to convert Addressee: %s", addressee.formattedName().latin1()); 239 qDebug("Unable to convert Addressee: %s", addressee.formattedName().latin1());
238 mAccess->cancelEditCard(); 240 mAccess->cancelEditCard();
239 } 241 }
240 } 242 }
241 } 243 }
242 } 244 }
243 245
244 } 246 }
245 AddresseeMap::Iterator itam; 247 AddresseeMap::Iterator itam;
246 for ( res=mAccess->first(); res == true; res=mAccess->next()) 248 for ( res=mAccess->first(); res == true; res=mAccess->next())
247 { 249 {
248 id = mAccess->cardId(); 250 id = mAccess->cardId();
249 int idint = id; 251 int idint = id;
250 itam = map.find( idint ); 252 itam = map.find( idint );
251 if ( itam != map.end() ) { 253 if ( itam != map.end() ) {
252 KABC::Addressee addressee; 254 KABC::Addressee addressee;
253 res = mConverter->sharpToAddressee( id, mAccess, addressee ); 255 res = mConverter->sharpToAddressee( id, mAccess, addressee );
254 256
255 if ( !addressee.isEmpty() && res ) 257 if ( !addressee.isEmpty() && res )
256 { 258 {
257 addressee.setResource( this ); 259 addressee.setResource( this );
258 addressee.setUid( itam.data() ); 260 addressee.setUid( itam.data() );
259 addressee.setTempSyncStat( SYNC_TEMPSTATE_NEW_ID ); 261 addressee.setTempSyncStat( SYNC_TEMPSTATE_NEW_ID );
260 addressBook()->insertAddressee( addressee , false ); 262 addressBook()->insertAddressee( addressee , false );
261 } 263 }
262 } 264 }
263 } 265 }
264 delete ticket; 266 delete ticket;
265 if(mAccess != 0) 267 if(mAccess != 0)
266 delete mAccess; 268 delete mAccess;
267 mAccess = 0; 269 mAccess = 0;
268 return true; 270 return true;
269} 271}
270 272
271bool ResourceSharpDTM::lock( const QString &lockfileName ) 273bool ResourceSharpDTM::lock( const QString &lockfileName )
272{ 274{
273 return true; 275 return true;
274} 276}
275 277
276void ResourceSharpDTM::unlock( const QString &fileName ) 278void ResourceSharpDTM::unlock( const QString &fileName )
277{ 279{
278 280
279} 281}
280 282
281void ResourceSharpDTM::setFileName( const QString &newFileName ) 283void ResourceSharpDTM::setFileName( const QString &newFileName )
282{ 284{
283 Resource::setFileName( newFileName ); 285 Resource::setFileName( newFileName );
284} 286}
285 287
286void ResourceSharpDTM::fileChanged() 288void ResourceSharpDTM::fileChanged()
287{ 289{
288 290
289} 291}
290 292
291void ResourceSharpDTM::removeAddressee( const Addressee &addr ) 293void ResourceSharpDTM::removeAddressee( const Addressee &addr )
292{ 294{
293} 295}
294 296
295void ResourceSharpDTM::cleanUp() 297void ResourceSharpDTM::cleanUp()
296{ 298{
297 299
298} 300}
299 301
300 302
301 303
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
@@ -1,444 +1,482 @@
1/* 1/*
2 This file is part of libkabc. 2 This file is part of libkabc.
3 Copyright (c) 2002 Tobias Koenig <tokoe@kde.org> 3 Copyright (c) 2002 Tobias Koenig <tokoe@kde.org>
4 4
5 This library is free software; you can redistribute it and/or 5 This library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Library General Public 6 modify it under the terms of the GNU Library General Public
7 License as published by the Free Software Foundation; either 7 License as published by the Free Software Foundation; either
8 version 2 of the License, or (at your option) any later version. 8 version 2 of the License, or (at your option) any later version.
9 9
10 This library is distributed in the hope that it will be useful, 10 This library is distributed in the hope that it will be useful,
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#include "kglobal.h" 28#include "kglobal.h"
29#include <qregexp.h> 29#include <qregexp.h>
30 30
31 31
32#include "sharpdtmconverter.h" 32#include "sharpdtmconverter.h"
33 33
34#include <sl/slcategories.h> 34#include <sl/slcategories.h>
35#include <libkdepim/ksyncprofile.h> 35#include <libkdepim/ksyncprofile.h>
36//US #include <qpe/categoryselect.h> 36//US #include <qpe/categoryselect.h>
37 37
38 38
39using namespace KABC; 39using namespace KABC;
40using namespace SlCategory; 40using namespace SlCategory;
41 41
42SharpDTMConverter::SharpDTMConverter() : catDB(0) 42SharpDTMConverter::SharpDTMConverter() : catDB(0)
43{ 43{
44} 44}
45 45
46SharpDTMConverter::~SharpDTMConverter() 46SharpDTMConverter::~SharpDTMConverter()
47{ 47{
48 deinit(); 48 deinit();
49} 49}
50 50
51bool SharpDTMConverter::init() 51bool SharpDTMConverter::init()
52{ 52{
53 catDB = new SlCategory::SlCategories(); 53 catDB = new SlCategory::SlCategories();
54 54
55 if (!catDB) 55 if (!catDB)
56 return false; 56 return false;
57 57
58// catDB->load( categoryFileName() ); 58// catDB->load( categoryFileName() );
59 return true; 59 return true;
60} 60}
61 61
62void SharpDTMConverter::deinit() 62void SharpDTMConverter::deinit()
63{ 63{
64 if (catDB) 64 if (catDB)
65 { 65 {
66 delete catDB; 66 delete catDB;
67 catDB = 0; 67 catDB = 0;
68 } 68 }
69} 69}
70 70
71bool SharpDTMConverter::sharpToAddressee( const CardId &contact, const SlZDataBase* database, Addressee &addr ) 71bool SharpDTMConverter::sharpToAddressee( const CardId &contact, const SlZDataBase* database, Addressee &addr )
72{ 72{
73 SlZDataBase* db = (SlZDataBase*)database; 73 SlZDataBase* db = (SlZDataBase*)database;
74 74
75 // for syncing: we need setting of the two fields 75 // for syncing: we need setting of the two fields
76 addr.setExternalUID( QString::number( contact ) ); 76 addr.setExternalUID( QString::number( contact ) );
77 addr.setOriginalExternalUID( QString::number( contact ) ); 77 addr.setOriginalExternalUID( QString::number( contact ) );
78 addr.setTempSyncStat( SYNC_TEMPSTATE_NEW_EXTERNAL ); 78 addr.setTempSyncStat( SYNC_TEMPSTATE_NEW_EXTERNAL );
79 79
80 80
81 // name 81 // name
82 //qDebug("SharpDTMConverter::sharpToAddressee check if the fileAs transformation works!!"); 82 //qDebug("SharpDTMConverter::sharpToAddressee check if the fileAs transformation works!!");
83 addr.setFormattedName(db->readField(ZdbAdrs::FileAs)); // needs fix 83 addr.setFormattedName(db->readField(ZdbAdrs::FileAs)); // needs fix
84 84
85 addr.setFamilyName( db->readField(ZdbAdrs::LastName) ); 85 addr.setFamilyName( db->readField(ZdbAdrs::LastName) );
86 addr.setGivenName( db->readField(ZdbAdrs::FirstName) ); 86 addr.setGivenName( db->readField(ZdbAdrs::FirstName) );
87 addr.setAdditionalName( db->readField(ZdbAdrs::MiddleName) ); 87 addr.setAdditionalName( db->readField(ZdbAdrs::MiddleName) );
88 addr.setPrefix( db->readField(ZdbAdrs::Title) ); 88 addr.setPrefix( db->readField(ZdbAdrs::Title) );
89 addr.setSuffix( db->readField(ZdbAdrs::Suffix) ); 89 addr.setSuffix( db->readField(ZdbAdrs::Suffix) );
90 90
91 91
92 QString emailstr = db->readField(ZdbAdrs::Emails); 92 QString emailstr = db->readField(ZdbAdrs::Emails);
93 emailstr.replace( QRegExp(","), " " ); 93 emailstr.replace( QRegExp(","), " " );
94 emailstr.replace( QRegExp(";"), " " ); 94 emailstr.replace( QRegExp(";"), " " );
95 emailstr.replace( QRegExp(":"), " " ); 95 emailstr.replace( QRegExp(":"), " " );
96 //qDebug("SharpDTMConverter::sharpToAddressee whats the character to seperate the emailadresses? %s ", emailstr.latin1()); 96 //qDebug("SharpDTMConverter::sharpToAddressee whats the character to seperate the emailadresses? %s ", emailstr.latin1());
97 QStringList emails = QStringList::split(" ", emailstr.simplifyWhiteSpace()); 97 QStringList emails = QStringList::split(" ", emailstr.simplifyWhiteSpace());
98 bool defE = false; 98 bool defE = false;
99 bool found = false; 99 bool found = false;
100 for ( QStringList::Iterator it = emails.begin(); it != emails.end(); ++it ) { 100 for ( QStringList::Iterator it = emails.begin(); it != emails.end(); ++it ) {
101 if (found ) 101 if (found )
102 defE = false; 102 defE = false;
103 else 103 else
104 found = defE = ((*it).lower() == db->readField(ZdbAdrs::DefaultEmail).lower()); 104 found = defE = ((*it).lower() == db->readField(ZdbAdrs::DefaultEmail).lower());
105 addr.insertEmail( *it, defE ); 105 addr.insertEmail( *it, defE );
106 } 106 }
107 if ( ! found ) 107 if ( ! found )
108 if (!db->readField(ZdbAdrs::DefaultEmail).isEmpty()) 108 if (!db->readField(ZdbAdrs::DefaultEmail).isEmpty())
109 addr.insertEmail(db->readField(ZdbAdrs::DefaultEmail), true); 109 addr.insertEmail(db->readField(ZdbAdrs::DefaultEmail), true);
110 110
111 // home 111 // home
112 if ((!db->readField(ZdbAdrs::HomeStreet).isEmpty()) || 112 if ((!db->readField(ZdbAdrs::HomeStreet).isEmpty()) ||
113 (!db->readField(ZdbAdrs::HomeCity).isEmpty()) || 113 (!db->readField(ZdbAdrs::HomeCity).isEmpty()) ||
114 (!db->readField(ZdbAdrs::HomeState).isEmpty()) || 114 (!db->readField(ZdbAdrs::HomeState).isEmpty()) ||
115 (!db->readField(ZdbAdrs::HomeZip).isEmpty()) || 115 (!db->readField(ZdbAdrs::HomeZip).isEmpty()) ||
116 (!db->readField(ZdbAdrs::HomeCountry).isEmpty())) 116 (!db->readField(ZdbAdrs::HomeCountry).isEmpty()))
117 { 117 {
118 Address homeaddress; 118 Address homeaddress;
119 homeaddress.setType(Address::Home); 119 homeaddress.setType(Address::Home);
120//US homeaddress.setPostOfficeBox( "" ); 120//US homeaddress.setPostOfficeBox( "" );
121//US homeaddress.setExtended( "" ); 121//US homeaddress.setExtended( "" );
122 homeaddress.setStreet( db->readField(ZdbAdrs::HomeStreet).replace( QRegExp("\\r"), "")); 122 homeaddress.setStreet( db->readField(ZdbAdrs::HomeStreet).replace( QRegExp("\\r"), ""));
123 homeaddress.setLocality( db->readField(ZdbAdrs::HomeCity) ); 123 homeaddress.setLocality( db->readField(ZdbAdrs::HomeCity) );
124 homeaddress.setRegion( db->readField(ZdbAdrs::HomeState) ); 124 homeaddress.setRegion( db->readField(ZdbAdrs::HomeState) );
125 homeaddress.setPostalCode( db->readField(ZdbAdrs::HomeZip) ); 125 homeaddress.setPostalCode( db->readField(ZdbAdrs::HomeZip) );
126 homeaddress.setCountry( db->readField(ZdbAdrs::HomeCountry) ); 126 homeaddress.setCountry( db->readField(ZdbAdrs::HomeCountry) );
127 127
128 addr.insertAddress( homeaddress ); 128 addr.insertAddress( homeaddress );
129 } 129 }
130 130
131 if (!db->readField(ZdbAdrs::HomePhone).isEmpty()) 131 if (!db->readField(ZdbAdrs::HomePhone).isEmpty())
132 { 132 {
133 PhoneNumber homephone; 133 PhoneNumber homephone;
134 homephone.setType( PhoneNumber::Home ); 134 homephone.setType( PhoneNumber::Home );
135 homephone.setNumber( db->readField(ZdbAdrs::HomePhone) ); 135 homephone.setNumber( db->readField(ZdbAdrs::HomePhone) );
136 addr.insertPhoneNumber( homephone ); 136 addr.insertPhoneNumber( homephone );
137 } 137 }
138 138
139 if (!db->readField(ZdbAdrs::HomeFax).isEmpty()) 139 if (!db->readField(ZdbAdrs::HomeFax).isEmpty())
140 { 140 {
141 PhoneNumber homefax; 141 PhoneNumber homefax;
142 homefax.setType( PhoneNumber::Home | PhoneNumber::Fax ); 142 homefax.setType( PhoneNumber::Home | PhoneNumber::Fax );
143 homefax.setNumber( db->readField(ZdbAdrs::HomeFax) ); 143 homefax.setNumber( db->readField(ZdbAdrs::HomeFax) );
144 addr.insertPhoneNumber( homefax ); 144 addr.insertPhoneNumber( homefax );
145 } 145 }
146 146
147 if (!db->readField(ZdbAdrs::HomeMobile).isEmpty()) 147 if (!db->readField(ZdbAdrs::HomeMobile).isEmpty())
148 { 148 {
149 PhoneNumber homemobile; 149 PhoneNumber homemobile;
150 homemobile.setType( PhoneNumber::Home | PhoneNumber::Cell ); 150 homemobile.setType( PhoneNumber::Home | PhoneNumber::Cell );
151 homemobile.setNumber( db->readField(ZdbAdrs::HomeMobile) ); 151 homemobile.setNumber( db->readField(ZdbAdrs::HomeMobile) );
152 addr.insertPhoneNumber( homemobile ); 152 addr.insertPhoneNumber( homemobile );
153 } 153 }
154 154
155 addr.setUrl( db->readField(ZdbAdrs::HomeWebPage) ); 155 addr.setUrl( db->readField(ZdbAdrs::HomeWebPage) );
156 156
157 157
158 // business 158 // business
159 if ((!db->readField(ZdbAdrs::BusinessStreet).isEmpty()) || 159 if ((!db->readField(ZdbAdrs::BusinessStreet).isEmpty()) ||
160 (!db->readField(ZdbAdrs::BusinessCity).isEmpty()) || 160 (!db->readField(ZdbAdrs::BusinessCity).isEmpty()) ||
161 (!db->readField(ZdbAdrs::BusinessState).isEmpty()) || 161 (!db->readField(ZdbAdrs::BusinessState).isEmpty()) ||
162 (!db->readField(ZdbAdrs::BusinessZip).isEmpty()) || 162 (!db->readField(ZdbAdrs::BusinessZip).isEmpty()) ||
163 (!db->readField(ZdbAdrs::BusinessCountry).isEmpty())) 163 (!db->readField(ZdbAdrs::BusinessCountry).isEmpty()))
164 { 164 {
165 Address businessaddress; 165 Address businessaddress;
166 businessaddress.setType(Address::Work); 166 businessaddress.setType(Address::Work);
167//US businessaddress.setPostOfficeBox( "" ); 167//US businessaddress.setPostOfficeBox( "" );
168//US businessaddress.setExtended( "" ); 168//US businessaddress.setExtended( "" );
169 businessaddress.setStreet( db->readField(ZdbAdrs::BusinessStreet).replace( QRegExp("\\r"), "") ); 169 businessaddress.setStreet( db->readField(ZdbAdrs::BusinessStreet).replace( QRegExp("\\r"), "") );
170 businessaddress.setLocality( db->readField(ZdbAdrs::BusinessCity) ); 170 businessaddress.setLocality( db->readField(ZdbAdrs::BusinessCity) );
171 businessaddress.setRegion( db->readField(ZdbAdrs::BusinessState) ); 171 businessaddress.setRegion( db->readField(ZdbAdrs::BusinessState) );
172 businessaddress.setPostalCode( db->readField(ZdbAdrs::BusinessZip) ); 172 businessaddress.setPostalCode( db->readField(ZdbAdrs::BusinessZip) );
173 businessaddress.setCountry( db->readField(ZdbAdrs::BusinessCountry) ); 173 businessaddress.setCountry( db->readField(ZdbAdrs::BusinessCountry) );
174 174
175 addr.insertAddress( businessaddress ); 175 addr.insertAddress( businessaddress );
176 } 176 }
177 177
178 178
179 if (!db->readField(ZdbAdrs::BusinessPhone).isEmpty()) 179 if (!db->readField(ZdbAdrs::BusinessPhone).isEmpty())
180 { 180 {
181 PhoneNumber businessphone; 181 PhoneNumber businessphone;
182 businessphone.setType( PhoneNumber::Work ); 182 businessphone.setType( PhoneNumber::Work );
183 businessphone.setNumber( db->readField(ZdbAdrs::BusinessPhone) ); 183 businessphone.setNumber( db->readField(ZdbAdrs::BusinessPhone) );
184 addr.insertPhoneNumber( businessphone ); 184 addr.insertPhoneNumber( businessphone );
185 } 185 }
186 186
187 if (!db->readField(ZdbAdrs::BusinessFax).isEmpty()) 187 if (!db->readField(ZdbAdrs::BusinessFax).isEmpty())
188 { 188 {
189 PhoneNumber businessfax; 189 PhoneNumber businessfax;
190 businessfax.setType( PhoneNumber::Work | PhoneNumber::Fax ); 190 businessfax.setType( PhoneNumber::Work | PhoneNumber::Fax );
191 businessfax.setNumber( db->readField(ZdbAdrs::BusinessFax) ); 191 businessfax.setNumber( db->readField(ZdbAdrs::BusinessFax) );
192 addr.insertPhoneNumber( businessfax ); 192 addr.insertPhoneNumber( businessfax );
193 } 193 }
194 194
195 if (!db->readField(ZdbAdrs::BusinessMobile).isEmpty()) 195 if (!db->readField(ZdbAdrs::BusinessMobile).isEmpty())
196 { 196 {
197 PhoneNumber businessmobile; 197 PhoneNumber businessmobile;
198 businessmobile.setType( PhoneNumber::Work | PhoneNumber::Cell ); 198 businessmobile.setType( PhoneNumber::Work | PhoneNumber::Cell );
199 businessmobile.setNumber( db->readField(ZdbAdrs::BusinessMobile) ); 199 businessmobile.setNumber( db->readField(ZdbAdrs::BusinessMobile) );
200 addr.insertPhoneNumber( businessmobile ); 200 addr.insertPhoneNumber( businessmobile );
201 } 201 }
202 202
203 if (!db->readField(ZdbAdrs::BusinessPager).isEmpty()) 203 if (!db->readField(ZdbAdrs::BusinessPager).isEmpty())
204 { 204 {
205 PhoneNumber businesspager; 205 PhoneNumber businesspager;
206 businesspager.setType( PhoneNumber::Work | PhoneNumber::Pager ); 206 businesspager.setType( PhoneNumber::Work | PhoneNumber::Pager );
207 businesspager.setNumber( db->readField(ZdbAdrs::BusinessPager) ); 207 businesspager.setNumber( db->readField(ZdbAdrs::BusinessPager) );
208 addr.insertPhoneNumber( businesspager ); 208 addr.insertPhoneNumber( businesspager );
209 } 209 }
210 210
211 addr.setRole( db->readField(ZdbAdrs::JobTitle) ); 211 addr.setRole( db->readField(ZdbAdrs::JobTitle) );
212 addr.setOrganization( db->readField(ZdbAdrs::Company) ); 212 addr.setOrganization( db->readField(ZdbAdrs::Company) );
213 addr.insertCustom( "KADDRESSBOOK", "X-Profession", db->readField(ZdbAdrs::Profession) ); 213 addr.insertCustom( "KADDRESSBOOK", "X-Profession", db->readField(ZdbAdrs::Profession) );
214 addr.insertCustom( "KADDRESSBOOK", "X-AssistantsName", db->readField(ZdbAdrs::Assistant) ); 214 addr.insertCustom( "KADDRESSBOOK", "X-AssistantsName", db->readField(ZdbAdrs::Assistant) );
215 addr.insertCustom( "KADDRESSBOOK", "X-Department", db->readField(ZdbAdrs::Department) ); 215 addr.insertCustom( "KADDRESSBOOK", "X-Department", db->readField(ZdbAdrs::Department) );
216 addr.insertCustom( "KADDRESSBOOK", "X-ManagersName", db->readField(ZdbAdrs::Manager) ); 216 addr.insertCustom( "KADDRESSBOOK", "X-ManagersName", db->readField(ZdbAdrs::Manager) );
217 addr.insertCustom( "KADDRESSBOOK", "X-Office", db->readField(ZdbAdrs::Office) ); 217 addr.insertCustom( "KADDRESSBOOK", "X-Office", db->readField(ZdbAdrs::Office) );
218 218
219 //personal 219 //personal
220 addr.insertCustom( "KADDRESSBOOK", "X-SpousesName", db->readField(ZdbAdrs::Spouse) ); 220 addr.insertCustom( "KADDRESSBOOK", "X-SpousesName", db->readField(ZdbAdrs::Spouse) );
221 221
222 QString gen = db->readField(ZdbAdrs::Gender); 222 QString gen = db->readField(ZdbAdrs::Gender);
223 //qDebug("SharpDTMConverter::sharpToAddressee pleas check that gender works!! : Gender: %s", gen.latin1()); 223 //qDebug("SharpDTMConverter::sharpToAddressee pleas check that gender works!! : Gender: %s", gen.latin1());
224 //qDebug("SharpDTMConverter::sharpToAddressee: may be int db->readUshortField(\"ZdbAdrs::Gender\") is here better suited"); 224 //qDebug("SharpDTMConverter::sharpToAddressee: may be int db->readUshortField(\"ZdbAdrs::Gender\") is here better suited");
225 225
226 if (gen == "male") 226 if (gen == "male")
227 addr.insertCustom( "KADDRESSBOOK", "X-Gender", "male"); 227 addr.insertCustom( "KADDRESSBOOK", "X-Gender", "male");
228 else if (gen == "female") 228 else if (gen == "female")
229 addr.insertCustom( "KADDRESSBOOK", "X-Gender", "female"); 229 addr.insertCustom( "KADDRESSBOOK", "X-Gender", "female");
230 230
231 231
232 QDate ann = KGlobal::locale()->readDate( db->readField(ZdbAdrs::Anniversary) ); 232 QDate ann = KGlobal::locale()->readDate( db->readField(ZdbAdrs::Anniversary) );
233 if (ann.isValid()) { 233 if (ann.isValid()) {
234 QString dt = KGlobal::locale()->formatDate(ann, true, KLocale::ISODate); 234 QString dt = KGlobal::locale()->formatDate(ann, true, KLocale::ISODate);
235 //qDebug("qtopiaToAddressee annyversary found:%s", dt.latin1()); 235 //qDebug("qtopiaToAddressee annyversary found:%s", dt.latin1());
236 addr.insertCustom( "KADDRESSBOOK", "X-Anniversary", dt); 236 addr.insertCustom( "KADDRESSBOOK", "X-Anniversary", dt);
237 } 237 }
238 238
239 239
240 addr.insertCustom( "KADDRESSBOOK", "X-Children", db->readField(ZdbAdrs::Children) ); 240 addr.insertCustom( "KADDRESSBOOK", "X-Children", db->readField(ZdbAdrs::Children) );
241 241
242 242
243 QDate birthd = KGlobal::locale()->readDate( db->readField(ZdbAdrs::Birthday) ); 243 QDate birthd = KGlobal::locale()->readDate( db->readField(ZdbAdrs::Birthday) );
244 //qDebug("birtd %s ", birthd.toString().latin1()); 244 //qDebug("birtd %s ", birthd.toString().latin1());
245 if (birthd.isValid()) 245 if (birthd.isValid())
246 addr.setBirthday( birthd ); 246 addr.setBirthday( birthd );
247 247
248 addr.setNickName( db->readField(ZdbAdrs::Nickname) ); 248 addr.setNickName( db->readField(ZdbAdrs::Nickname) );
249 249
250 // others 250 // others
251 //US I put opies BusinessWebPage into Ka/Pi's notes block, because no other native field is available. 251 //US I put opies BusinessWebPage into Ka/Pi's notes block, because no other native field is available.
252 //QString notes = db->readField(ZdbAdrs::Notes); 252 //QString notes = db->readField(ZdbAdrs::Notes);
253 //notes += "\nBusinessWebPage: " + db->readField(ZdbAdrs::BusinessWebPage) + "\n"; 253 //notes += "\nBusinessWebPage: " + db->readField(ZdbAdrs::BusinessWebPage) + "\n";
254 if ( addr.url().isEmpty() ) 254 if ( addr.url().isEmpty() )
255 addr.setUrl( db->readField(ZdbAdrs::BusinessWebPage) ); 255 addr.setUrl( db->readField(ZdbAdrs::BusinessWebPage) );
256 addr.setNote( db->readField(ZdbAdrs::Notes).replace( QRegExp("\\r"), "")); 256 addr.setNote( db->readField(ZdbAdrs::Notes).replace( QRegExp("\\r"), ""));
257 257
258 258
259 259
260//US QString groups() const { return find( Qtopia::Groups ); } 260//US QString groups() const { return find( Qtopia::Groups ); }
261//US QStringList groupList() const; 261//US QStringList groupList() const;
262 262
263 //qDebug("SharpDTMConverter::sharpToAddressee please check that the categories will be converted" ); 263 //qDebug("SharpDTMConverter::sharpToAddressee please check that the categories will be converted" );
264 QArray<int> catArray = db->readCategories(); 264 QArray<int> catArray = db->readCategories();
265 QString cat; 265 QString cat;
266 266
267 for ( unsigned int i=0; i < catArray.size(); i++ ) { 267 for ( unsigned int i=0; i < catArray.size(); i++ ) {
268 cat = catDB->label(catArray[i]); 268 cat = catDB->label(catArray[i]);
269 if ( cat.isEmpty() ) 269 if ( cat.isEmpty() )
270 addr.insertCategory(QString::number(catArray[i])); 270 addr.insertCategory(QString::number(catArray[i]));
271 else 271 else
272 addr.insertCategory( cat ); 272 addr.insertCategory( cat );
273 } 273 }
274 274
275 return true; 275 return true;
276} 276}
277 277
278bool SharpDTMConverter::addresseeToSharp( const Addressee &addr, SlZDataBase* database , const CardId &contact ) 278bool SharpDTMConverter::addresseeToSharp( const Addressee &addr, SlZDataBase* database , const CardId &contact )
279{ 279{
280 bool cellHome = false, cellWork = false; 280 bool cellHome = false, cellWork = false;
281 // name 281 // name
282 database->writeField(ZdbAdrs::LastName, addr.familyName()); 282 database->writeField(ZdbAdrs::LastName, addr.familyName());
283 database->writeField(ZdbAdrs::FirstName, addr.givenName()); 283 database->writeField(ZdbAdrs::FirstName, addr.givenName());
284 database->writeField(ZdbAdrs::MiddleName, addr.additionalName()); 284 database->writeField(ZdbAdrs::MiddleName, addr.additionalName());
285 database->writeField(ZdbAdrs::Title, addr.prefix()); 285 database->writeField(ZdbAdrs::Title, addr.prefix());
286 database->writeField(ZdbAdrs::Suffix, addr.suffix()); 286 database->writeField(ZdbAdrs::Suffix, addr.suffix());
287 287
288 //qDebug("SharpDTMConverter::addresseeToSharp check if the fileAs transformation works!!\n%s",addr.formattedName().latin1() ); 288 //qDebug("SharpDTMConverter::addresseeToSharp check if the fileAs transformation works!!\n%s",addr.formattedName().latin1() );
289 QString formattedName = addr.formattedName(); 289 QString formattedName = addr.formattedName();
290 if ( formattedName.isEmpty() ) { 290 if ( formattedName.isEmpty() ) {
291 if ( !addr.familyName().isEmpty() ) { 291 if ( !addr.familyName().isEmpty() ) {
292 formattedName = addr.familyName(); 292 formattedName = addr.familyName();
293 if ( !addr.givenName().isEmpty() ) { 293 if ( !addr.givenName().isEmpty() ) {
294 formattedName += ", "; 294 formattedName += ", ";
295 formattedName += addr.givenName(); 295 formattedName += addr.givenName();
296 } 296 }
297 } else 297 } else
298 formattedName = addr.givenName(); 298 formattedName = addr.givenName();
299 } 299 }
300 database->writeField(ZdbAdrs::FileAs, formattedName); 300 database->writeField(ZdbAdrs::FileAs, formattedName);
301 database->writeField(ZdbAdrs::FullName, formattedName); 301 database->writeField(ZdbAdrs::FullName, formattedName);
302 302
303 // email 303 // email
304 //qDebug("SharpDTMConverter::addresseeToSharp check which seperator we need here for the emails!!"); 304 //qDebug("SharpDTMConverter::addresseeToSharp check which seperator we need here for the emails!!");
305 //qDebug("SharpDTMConverter::addresseeToSharp its probably the same from sharpToAddressee"); 305 //qDebug("SharpDTMConverter::addresseeToSharp its probably the same from sharpToAddressee");
306 QString emails = addr.emails().join(" "); 306 QString emails = addr.emails().join(" ");
307 database->writeField(ZdbAdrs::Emails, emails ); 307 database->writeField(ZdbAdrs::Emails, emails );
308 308
309 database->writeField(ZdbAdrs::DefaultEmail, addr.preferredEmail() ); 309 database->writeField(ZdbAdrs::DefaultEmail, addr.preferredEmail() );
310
311
312 // home 310 // home
313 const Address homeaddress = addr.address(Address::Home); 311 const Address homeaddress = addr.address(Address::Home);
314 if (!homeaddress.isEmpty()) { 312 database->writeField(ZdbAdrs::HomeStreet, homeaddress.street());
315 //qDebug("write home address "); 313 database->writeField(ZdbAdrs::HomeCity, homeaddress.locality());
316 database->writeField(ZdbAdrs::HomeStreet, homeaddress.street()); 314 database->writeField(ZdbAdrs::HomeState, homeaddress.region());
317 database->writeField(ZdbAdrs::HomeCity, homeaddress.locality()); 315 database->writeField(ZdbAdrs::HomeZip, homeaddress.postalCode());
318 database->writeField(ZdbAdrs::HomeState, homeaddress.region()); 316 database->writeField(ZdbAdrs::HomeCountry, homeaddress.country());
319 database->writeField(ZdbAdrs::HomeZip, homeaddress.postalCode()); 317
320 database->writeField(ZdbAdrs::HomeCountry, homeaddress.country());
321 }
322
323 PhoneNumber homephone = addr.phoneNumber( PhoneNumber::Home ); 318 PhoneNumber homephone = addr.phoneNumber( PhoneNumber::Home );
324 if (!homephone.number().isEmpty()) 319 database->writeField(ZdbAdrs::HomePhone, homephone.number());
325 database->writeField(ZdbAdrs::HomePhone, homephone.number());
326
327 PhoneNumber homefax = addr.phoneNumber( PhoneNumber::Home | PhoneNumber::Fax ); 320 PhoneNumber homefax = addr.phoneNumber( PhoneNumber::Home | PhoneNumber::Fax );
328 if (!homefax.number().isEmpty()) 321 database->writeField(ZdbAdrs::HomeFax, homefax.number());
329 database->writeField(ZdbAdrs::HomeFax, homefax.number());
330
331 PhoneNumber homemobile = addr.phoneNumber( PhoneNumber::Home | PhoneNumber::Cell ); 322 PhoneNumber homemobile = addr.phoneNumber( PhoneNumber::Home | PhoneNumber::Cell );
323 database->writeField(ZdbAdrs::HomeMobile, homemobile.number());
332 if (!homemobile.number().isEmpty()) { 324 if (!homemobile.number().isEmpty()) {
333 database->writeField(ZdbAdrs::HomeMobile, homemobile.number());
334 cellHome = true; 325 cellHome = true;
335 } 326 }
336
337 database->writeField(ZdbAdrs::HomeWebPage, addr.url().url()); 327 database->writeField(ZdbAdrs::HomeWebPage, addr.url().url());
338
339
340 // business 328 // business
341 const Address businessaddress = addr.address(Address::Work); 329 const Address businessaddress = addr.address(Address::Work);
342 if (!businessaddress.isEmpty()) {
343 //qDebug("write business address "); 330 //qDebug("write business address ");
344 database->writeField(ZdbAdrs::BusinessStreet, businessaddress.street()); 331 database->writeField(ZdbAdrs::BusinessStreet, businessaddress.street());
345 database->writeField(ZdbAdrs::BusinessCity, businessaddress.locality()); 332 database->writeField(ZdbAdrs::BusinessCity, businessaddress.locality());
346 database->writeField(ZdbAdrs::BusinessState, businessaddress.region()); 333 database->writeField(ZdbAdrs::BusinessState, businessaddress.region());
347 database->writeField(ZdbAdrs::BusinessZip, businessaddress.postalCode()); 334 database->writeField(ZdbAdrs::BusinessZip, businessaddress.postalCode());
348 database->writeField(ZdbAdrs::BusinessCountry, businessaddress.country()); 335 database->writeField(ZdbAdrs::BusinessCountry, businessaddress.country());
349 } 336
350
351 PhoneNumber businessphone = addr.phoneNumber( PhoneNumber::Work ); 337 PhoneNumber businessphone = addr.phoneNumber( PhoneNumber::Work );
352 if (!businessphone.number().isEmpty()) 338 database->writeField(ZdbAdrs::BusinessPhone, businessphone.number());
353 database->writeField(ZdbAdrs::BusinessPhone, businessphone.number());
354 339
355 PhoneNumber businessfax = addr.phoneNumber( PhoneNumber::Work | PhoneNumber::Fax ); 340 PhoneNumber businessfax = addr.phoneNumber( PhoneNumber::Work | PhoneNumber::Fax );
356 if (!businessfax.number().isEmpty()) 341 database->writeField(ZdbAdrs::BusinessFax, businessfax.number());
357 database->writeField(ZdbAdrs::BusinessFax, businessfax.number());
358 342
359 PhoneNumber businessmobile = addr.phoneNumber( PhoneNumber::Work | PhoneNumber::Cell ); 343 PhoneNumber businessmobile = addr.phoneNumber( PhoneNumber::Work | PhoneNumber::Cell );
344 database->writeField(ZdbAdrs::BusinessMobile, businessmobile.number());
360 if (!businessmobile.number().isEmpty()) { 345 if (!businessmobile.number().isEmpty()) {
361 cellWork = true; 346 cellWork = true;
362 database->writeField(ZdbAdrs::BusinessMobile, businessmobile.number());
363 } 347 }
364 PhoneNumber mobile = addr.phoneNumber( PhoneNumber::Cell ); 348 PhoneNumber mobile = addr.phoneNumber( PhoneNumber::Cell );
365 if (! mobile.number().isEmpty()) { 349 if (! mobile.number().isEmpty()) {
366 if ( ! cellHome ) 350 if ( ! cellHome )
367 database->writeField(ZdbAdrs::HomeMobile, mobile.number()); 351 database->writeField(ZdbAdrs::HomeMobile, mobile.number());
368 else if (! cellWork ) 352 else if (! cellWork )
369 database->writeField(ZdbAdrs::BusinessMobile, mobile.number()); 353 database->writeField(ZdbAdrs::BusinessMobile, mobile.number());
370 } 354 }
371 355
372 PhoneNumber businesspager = addr.phoneNumber( PhoneNumber::Work | PhoneNumber::Pager ); 356 PhoneNumber businesspager = addr.phoneNumber( PhoneNumber::Work | PhoneNumber::Pager );
373 if (!businesspager.number().isEmpty()) 357 database->writeField(ZdbAdrs::BusinessPager, businesspager.number());
374 database->writeField(ZdbAdrs::BusinessPager, businesspager.number());
375 358
376 database->writeField(ZdbAdrs::JobTitle, addr.role()); 359 database->writeField(ZdbAdrs::JobTitle, addr.role());
377 database->writeField(ZdbAdrs::Company, addr.organization()); 360 database->writeField(ZdbAdrs::Company, addr.organization());
378 361
379 database->writeField(ZdbAdrs::Profession, addr.custom( "KADDRESSBOOK", "X-Profession" )); 362 database->writeField(ZdbAdrs::Profession, addr.custom( "KADDRESSBOOK", "X-Profession" ));
380 database->writeField(ZdbAdrs::Assistant, addr.custom( "KADDRESSBOOK", "X-AssistantsName" )); 363 database->writeField(ZdbAdrs::Assistant, addr.custom( "KADDRESSBOOK", "X-AssistantsName" ));
381 database->writeField(ZdbAdrs::Department, addr.custom( "KADDRESSBOOK", "X-Department" )); 364 database->writeField(ZdbAdrs::Department, addr.custom( "KADDRESSBOOK", "X-Department" ));
382 database->writeField(ZdbAdrs::Manager, addr.custom( "KADDRESSBOOK", "X-ManagersName" )); 365 database->writeField(ZdbAdrs::Manager, addr.custom( "KADDRESSBOOK", "X-ManagersName" ));
383 database->writeField(ZdbAdrs::Office, addr.custom( "KADDRESSBOOK", "X-Office" )); 366 database->writeField(ZdbAdrs::Office, addr.custom( "KADDRESSBOOK", "X-Office" ));
384 367
385 //personal 368 //personal
386 database->writeField(ZdbAdrs::Spouse, addr.custom( "KADDRESSBOOK", "X-Spouse" )); 369 database->writeField(ZdbAdrs::Spouse, addr.custom( "KADDRESSBOOK", "X-Spouse" ));
387 370
388 QString gt = addr.custom( "KADDRESSBOOK", "X-Gender" ); 371 QString gt = addr.custom( "KADDRESSBOOK", "X-Gender" );
389 //qDebug("SharpDTMConverter::addresseeToSharp please check that gender works!! : Gender: %s", gt.latin1()); 372 //qDebug("SharpDTMConverter::addresseeToSharp please check that gender works!! : Gender: %s", gt.latin1());
390 //qDebug("SharpDTMConverter::addresseeToSharp: may be writeField(\"ZdbAdrs::Gender\", ushort) is here better suited?"); 373 //qDebug("SharpDTMConverter::addresseeToSharp: may be writeField(\"ZdbAdrs::Gender\", ushort) is here better suited?");
391 //qDebug("SharpDTMConverter::addresseeToSharp: check also the reverse functionality in sharpToAddressee"); 374 //qDebug("SharpDTMConverter::addresseeToSharp: check also the reverse functionality in sharpToAddressee");
392 if (gt == "male") 375 if (gt == "male")
393 database->writeField(ZdbAdrs::Gender, "male"); 376 database->writeField(ZdbAdrs::Gender, "male");
394 else if (gt == "female") 377 else if (gt == "female")
395 database->writeField(ZdbAdrs::Gender, "female"); 378 database->writeField(ZdbAdrs::Gender, "female");
396 else 379 else
397 database->writeField(ZdbAdrs::Gender, ""); 380 database->writeField(ZdbAdrs::Gender, "");
398 381
399 382 QString dateS ;
400 QDate dt = KGlobal::locale()->readDate( 383 QDate dt = KGlobal::locale()->readDate(addr.custom("KADDRESSBOOK", "X-Anniversary" ), "%Y-%m-%d"); // = Qt::ISODate
401 addr.custom("KADDRESSBOOK", "X-Anniversary" ), "%Y-%m-%d"); // = Qt::ISODate
402 if ( dt.isValid() ) { 384 if ( dt.isValid() ) {
403 QString dateS = KGlobal::locale()->formatDate(dt, true ); 385 dateS = KGlobal::locale()->formatDate(dt, true );
404 database->writeField(ZdbAdrs::Anniversary, dateS );
405 } 386 }
387 database->writeField(ZdbAdrs::Anniversary, dateS );
406 database->writeField(ZdbAdrs::Children, addr.custom( "KADDRESSBOOK", "X-Children" )); 388 database->writeField(ZdbAdrs::Children, addr.custom( "KADDRESSBOOK", "X-Children" ));
407 dt = addr.birthday().date(); 389 dt = addr.birthday().date();
390 dateS = "";
408 if ( dt.isValid() ) { 391 if ( dt.isValid() ) {
409 QString dateS = KGlobal::locale()->formatDate(dt, true ); 392 dateS = KGlobal::locale()->formatDate(dt, true );
410 database->writeField(ZdbAdrs::Birthday, dateS);
411 } 393 }
394 database->writeField(ZdbAdrs::Birthday, dateS);
412 database->writeField(ZdbAdrs::Nickname, addr.nickName()); 395 database->writeField(ZdbAdrs::Nickname, addr.nickName());
413 396
414 // other 397 // other
415 database->writeField(ZdbAdrs::Notes, addr.note()); 398 database->writeField(ZdbAdrs::Notes, addr.note());
416 399
417//US QString groups() const { return find( Qtopia::Groups ); } 400//US QString groups() const { return find( Qtopia::Groups ); }
418//US QStringList groupList() const; 401//US QStringList groupList() const;
419 402
420 403
421 //qDebug("SharpDTMConverter::addresseeToSharp please check if category transformation works"); 404 //qDebug("SharpDTMConverter::addresseeToSharp please check if category transformation works");
422 405
423 QStringList cats = addr.categories();
424 int ii;
425 for ( ii = 0; ii < cats.count() ;++ii ) {
426 if ( !catDB->exists( cats[ii] ))
427 catDB->addCategory(cats[ii]);
428 }
429 QArray<int> iar;
430 if ( !cats.isEmpty() ) {
431 QArray<int> iar = catDB->ids(cats);
432 //qDebug("***cat count is %d ", iar.count());
433 database->updateCategories(contact, iar);
434 }
435
436 return true; 406 return true;
437} 407}
438 408
409
410bool SharpDTMConverter::setCategories( const Addressee &addr, SlZDataBase* database , const CardId &contact )
411{
412 QStringList list = addr.categories();
413
414 QArray<int> ids(list.count());
415 uint index = 0;
416 for(uint i=0; i<ids.size(); i++){
417 if(catDB->exists(list[i])){
418 ids[index] = catDB->id(list[i]);
419 qDebug("set ex cat %d %s ",ids[index] , list[i].latin1());
420 index++;
421 } else {
422 ids[index] = catDB->addCategory(list[i]);
423 qDebug("add new cat %d %s ",ids[index] , list[i].latin1());
424 index++;
425 }
426 }
427 bool res ;
428 if ( res = database->updateCategories(contact, ids) )
429 qDebug("cat updated ");
430 else
431 qDebug("error cat updating ");
432
433 return res;
434}
435
436#if 0
437 m_pCategories = new SlCategories;
438catDB
439
440 if(categories == QString::null) return true;
441 QStringList list = CSVParser::parse(categories);
442 QArray<int> ids(list.count());
443 uint index = 0;
444 for(uint i=0; i<ids.size(); i++){
445#if 0
446 bool ok;
447 ids[index] = list[i].toInt(&ok);
448 if(ok){
449 index++;
450 } else {
451 if(m_pCategories->exists(list[i])){
452 ids[index] = m_pCategories->id(list[i]);
453 index++;
454 }
455 }
456#else
457 if(m_pCategories->exists(list[i])){
458 ids[index] = m_pCategories->id(list[i]);
459 index++;
460 } else if(m_addCategory){
461 ids[index] = m_pCategories->addCategory(list[i]);
462 index++;
463 }
464#endif
465 }
466 if(ids.size() > 0 && index == 0){
467 return true;
468 } else if(index != ids.size()){
469 ids.resize(index);
470 }
471 if(!m_pZdb->updateCategories(id, ids)){
472 return false;
473 }
474 return true;
475#endif
476
439QDate SharpDTMConverter::convertDate( QString s) 477QDate SharpDTMConverter::convertDate( QString s)
440{ 478{
441 QDate dt = KGlobal::locale()->readDate( s ); 479 QDate dt = KGlobal::locale()->readDate( s );
442 return dt; 480 return dt;
443 return QDate (); 481 return QDate ();
444} 482}
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
@@ -1,87 +1,88 @@
1/* 1/*
2 This file is part of libkabc. 2 This file is part of libkabc.
3 Copyright (c) 2002 Tobias Koenig <tokoe@kde.org> 3 Copyright (c) 2002 Tobias Koenig <tokoe@kde.org>
4 4
5 This library is free software; you can redistribute it and/or 5 This library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Library General Public 6 modify it under the terms of the GNU Library General Public
7 License as published by the Free Software Foundation; either 7 License as published by the Free Software Foundation; either
8 version 2 of the License, or (at your option) any later version. 8 version 2 of the License, or (at your option) any later version.
9 9
10 This library is distributed in the hope that it will be useful, 10 This library is distributed in the hope that it will be useful,
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$Id$ 24$Id$
25*/ 25*/
26 26
27#ifndef KABC_SHARPDTMCONVERTER_H 27#ifndef KABC_SHARPDTMCONVERTER_H
28#define KABC_SHARPDTMCONVERTER_H 28#define KABC_SHARPDTMCONVERTER_H
29 29
30#include <qstring.h> 30#include <qstring.h>
31 31
32#include <sl/slzdb.h> 32#include <sl/slzdb.h>
33 33
34#include "addressee.h" 34#include "addressee.h"
35 35
36namespace SlCategory { 36namespace SlCategory {
37 class SlCategories; 37 class SlCategories;
38} 38}
39 39
40class SlZDataBase; 40class SlZDataBase;
41 41
42namespace KABC { 42namespace KABC {
43 43
44class SharpDTMConverter 44class SharpDTMConverter
45{ 45{
46public: 46public:
47 47
48 /** 48 /**
49 * Constructor. 49 * Constructor.
50 */ 50 */
51 SharpDTMConverter(); 51 SharpDTMConverter();
52 52
53 /** 53 /**
54 * Destructor. 54 * Destructor.
55 */ 55 */
56 virtual ~SharpDTMConverter(); 56 virtual ~SharpDTMConverter();
57 57
58 bool init(); 58 bool init();
59 void deinit(); 59 void deinit();
60 60
61 /** 61 /**
62 * Converts a given sharp card to an addressee. 62 * Converts a given sharp card to an addressee.
63 * 63 *
64 * @param contact The sharp card id, eventhough it might be 0, if the contact is a new one. 64 * @param contact The sharp card id, eventhough it might be 0, if the contact is a new one.
65 * @param database The sharp database pointer we use for the conversion 65 * @param database The sharp database pointer we use for the conversion
66 * @param addr The addressee. 66 * @param addr The addressee.
67 */ 67 */
68 bool sharpToAddressee( const CardId &contact, const SlZDataBase* database, Addressee &addr ); 68 bool sharpToAddressee( const CardId &contact, const SlZDataBase* database, Addressee &addr );
69 69
70 /** 70 /**
71 * Converts an addressee to a sharp dtm contact. 71 * Converts an addressee to a sharp dtm contact.
72 * 72 *
73 * @param addr The addressee. 73 * @param addr The addressee.
74 * @param database The sharp database pointer we use for the conversion 74 * @param database The sharp database pointer we use for the conversion
75 * @param contact The sharp card id, eventhough it might be 0, if the contact is a new one. 75 * @param contact The sharp card id, eventhough it might be 0, if the contact is a new one.
76 */ 76 */
77 bool addresseeToSharp( const Addressee &addr, SlZDataBase* database , const CardId &contact ); 77 bool addresseeToSharp( const Addressee &addr, SlZDataBase* database , const CardId &contact );
78 bool setCategories( const Addressee &addr, SlZDataBase* database , const CardId &contact );
78 79
79 private: 80 private:
80 SlCategory::SlCategories* catDB; 81 SlCategory::SlCategories* catDB;
81 QDate convertDate( QString ); 82 QDate convertDate( QString );
82 83
83 84
84}; 85};
85 86
86} 87}
87#endif 88#endif