summaryrefslogtreecommitdiffabout
path: root/kabc
authorzautrix <zautrix>2004-09-20 18:59:02 (UTC)
committer zautrix <zautrix>2004-09-20 18:59:02 (UTC)
commit138be6cfa921cd8a07fa0b18046d955e7d2dbd6e (patch) (unidiff)
tree67b8b69e26641f4f048ce19e05b361f5aea6db85 /kabc
parent6b6a28919908134ccbb3badcb24c2dcae0d426a5 (diff)
downloadkdepimpi-138be6cfa921cd8a07fa0b18046d955e7d2dbd6e.zip
kdepimpi-138be6cfa921cd8a07fa0b18046d955e7d2dbd6e.tar.gz
kdepimpi-138be6cfa921cd8a07fa0b18046d955e7d2dbd6e.tar.bz2
more DTM sync
Diffstat (limited to 'kabc') (more/less context) (ignore whitespace changes)
-rw-r--r--kabc/plugins/sharpdtm/resourcesharpdtm.cpp95
-rw-r--r--kabc/plugins/sharpdtm/sharpdtmE.pro2
-rw-r--r--kabc/plugins/sharpdtm/sharpdtmconverter.cpp6
3 files changed, 100 insertions, 3 deletions
diff --git a/kabc/plugins/sharpdtm/resourcesharpdtm.cpp b/kabc/plugins/sharpdtm/resourcesharpdtm.cpp
index 867bc07..bba5f9a 100644
--- a/kabc/plugins/sharpdtm/resourcesharpdtm.cpp
+++ b/kabc/plugins/sharpdtm/resourcesharpdtm.cpp
@@ -16,64 +16,65 @@
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 49
49#include "resourcesharpdtmconfig.h" 50#include "resourcesharpdtmconfig.h"
50#include "resourcesharpdtm.h" 51#include "resourcesharpdtm.h"
51 52
52#include "syncprefwidget.h" 53#include "syncprefwidget.h"
53 54
54#include "stdaddressbook.h" 55#include "stdaddressbook.h"
55 56
56#include "sharpdtmconverter.h" 57#include "sharpdtmconverter.h"
57//#define ALLOW_LOCKING 58//#define ALLOW_LOCKING
58using namespace KABC; 59using namespace KABC;
59extern "C" 60extern "C"
60{ 61{
61 void *init_microkabc_sharpdtm() 62 void *init_microkabc_sharpdtm()
62 { 63 {
63 return new KRES::PluginFactory<ResourceSharpDTM,ResourceSharpDTMConfig,SyncPrefWidgetContainer>(); 64 return new KRES::PluginFactory<ResourceSharpDTM,ResourceSharpDTMConfig,SyncPrefWidgetContainer>();
64 } 65 }
65} 66}
66 67
67ResourceSharpDTM::ResourceSharpDTM( const KConfig *config, bool syncable ) 68ResourceSharpDTM::ResourceSharpDTM( const KConfig *config, bool syncable )
68 : Resource( config, syncable ), mConverter (0) 69 : Resource( config, syncable ), mConverter (0)
69{ 70{
70 // we can not choose the filename. Therefore use the default to display 71 // we can not choose the filename. Therefore use the default to display
71 72
72 QString fileName = SlZDataBase::addressbookFileName(); 73 QString fileName = SlZDataBase::addressbookFileName();
73 init( fileName ); 74 init( fileName );
74} 75}
75 76
76ResourceSharpDTM::ResourceSharpDTM( const QString &fileName, bool syncable ) 77ResourceSharpDTM::ResourceSharpDTM( const QString &fileName, bool syncable )
77 : Resource( 0, syncable ) 78 : Resource( 0, syncable )
78{ 79{
79 init( fileName ); 80 init( fileName );
@@ -173,93 +174,183 @@ bool ResourceSharpDTM::load()
173 qDebug("ResourceSharpDTM::load: %s", fileName().latin1()); 174 qDebug("ResourceSharpDTM::load: %s", fileName().latin1());
174 175
175 bool res = false; 176 bool res = false;
176 177
177 CardId id; 178 CardId id;
178 179
179 for (bool res=mAccess->first(); res == true; res=mAccess->next()) 180 for (bool res=mAccess->first(); res == true; res=mAccess->next())
180 { 181 {
181 id = mAccess->cardId(); 182 id = mAccess->cardId();
182 183
183 KABC::Addressee addressee; 184 KABC::Addressee addressee;
184 185
185 res = mConverter->sharpToAddressee( id, mAccess, addressee ); 186 res = mConverter->sharpToAddressee( id, mAccess, addressee );
186 187
187 if ( !addressee.isEmpty() && res ) 188 if ( !addressee.isEmpty() && res )
188 { 189 {
189 addressee.setResource( this ); 190 addressee.setResource( this );
190 addressBook()->insertAddressee( addressee ); 191 addressBook()->insertAddressee( addressee );
191 } 192 }
192 } 193 }
193 194
194 return true; 195 return true;
195} 196}
196 197
197bool ResourceSharpDTM::save( Ticket *ticket ) 198bool ResourceSharpDTM::save( Ticket *ticket )
198{ 199{
199 qDebug("ResourceSharpDTM::save: %s", fileName().latin1()); 200 qDebug("ResourceSharpDTM::save: %s", fileName().latin1());
200 201
201 mDirWatch.stopScan(); 202 mDirWatch.stopScan();
202 203
203 KABC::AddressBook::Iterator it; 204 KABC::AddressBook::Iterator it;
204 bool res; 205 bool res;
206 KABC::Addressee::List changedAddressees;
205 207
206 for ( it = addressBook()->begin(); it != addressBook()->end(); ++it ) { 208 for ( it = addressBook()->begin(); it != addressBook()->end(); ++it ) {
209
210 if ( (*it).tempSyncStat() != SYNC_TEMPSTATE_NEW_EXTERNAL ) {
211 QString uid = (*it).originalExternalUID();
212 CardId id ;
213 bool res;
214 if ( uid.isEmpty() )
215 id = 0;
216 else
217 id = uid.toUInt();
218 KABC::Addressee addressee = (*it);
219 if ( (*it).tempSyncStat() == SYNC_TEMPSTATE_ADDED_EXTERNAL ) {
220 res = mAccess->startEditCard(id);
221 if (res == true)
222 {
223 res = mConverter->addresseeToSharp( (*it), mAccess, id );
224 if (res == true)
225 {
226 KABC::Addressee addressee;
227 qDebug("1NEW id is %d", id);
228 res = mConverter->sharpToAddressee( id, mAccess, addressee );
229 addressee.setUid((*it).uid() );
230 addressee.setTempSyncStat( SYNC_TEMPSTATE_NEW_CSUM );
231 changedAddressees.append( addressee );
232 res = mAccess->finishEditCard(&id);
233 qDebug("2NEW id is %d", id);
234
235 if (res == false)
236 qDebug("Unable to append Contact: %s", addressee.formattedName().latin1());
237 else {
238 qDebug("added card success ");
239 }
240 }
241 else
242 {
243 qDebug("Unable to convert Addressee: %s", addressee.formattedName().latin1());
244 mAccess->cancelEditCard();
245 }
246 }
247
248 } else if ( (*it).tempSyncStat() == SYNC_TEMPSTATE_DELETE ) {
249 res = mAccess->deleteCard(&id);
250 if ( res )
251 qDebug("delete success ");
252 else
253 qDebug("delete error ");
254
255
256 } else if ( (*it).tempSyncStat() != SYNC_TEMPSTATE_NEW_EXTERNAL ) {
257 //changed
258 res = mAccess->startEditCard(id);
259 if (res == true)
260 {
261 res = mConverter->addresseeToSharp( (*it), mAccess, id );
262 if (res == true)
263 {
264 KABC::Addressee addressee;
265 res = mConverter->sharpToAddressee( id, mAccess, addressee );
266 addressee.setUid((*it).uid() );
267 addressee.setTempSyncStat( SYNC_TEMPSTATE_NEW_CSUM );
268 changedAddressees.append( addressee );
269 res = mAccess->finishEditCard(&id);
270 if (res == false)
271 qDebug("Unable to append Contact: %s", addressee.formattedName().latin1());
272 else {
273 qDebug("change card succes ");
274 }
275 }
276 else
277 {
278 qDebug("Unable to convert Addressee: %s", addressee.formattedName().latin1());
279 mAccess->cancelEditCard();
280 }
281 }
282 }
283
284
285
286
287
288
289
290
291 }
292
293#if 0
294 // old code
207 CardId id = 0;// 0 means new card 295 CardId id = 0;// 0 means new card
208 KABC::Addressee addressee = (*it); 296 KABC::Addressee addressee = (*it);
209 297
210 res = mAccess->startEditCard(id); 298 res = mAccess->startEditCard(id);
211 if (res == true) 299 if (res == true)
212 { 300 {
213 res = mConverter->addresseeToSharp( *it, mAccess, id ); 301 res = mConverter->addresseeToSharp( *it, mAccess, id );
214 if (res == true) 302 if (res == true)
215 { 303 {
216 res = mAccess->finishEditCard(&id); 304 res = mAccess->finishEditCard(&id);
217 if (res == false) 305 if (res == false)
218 qDebug("Unable to append Contact: %s", addressee.formattedName().latin1()); 306 qDebug("Unable to append Contact: %s", addressee.formattedName().latin1());
219 } 307 }
220 else 308 else
221 { 309 {
222 qDebug("Unable to convert Addressee: %s", addressee.formattedName().latin1()); 310 qDebug("Unable to convert Addressee: %s", addressee.formattedName().latin1());
223 mAccess->cancelEditCard(); 311 mAccess->cancelEditCard();
224 } 312 }
225 } 313 }
226 else 314 else
227 { 315 {
228 qDebug("Unable to add new card. Addressee: %s", addressee.formattedName().latin1()); 316 qDebug("Unable to add new card. Addressee: %s", addressee.formattedName().latin1());
229 } 317 }
318#endif
230 319
231 } 320 }
232 321 KABC::Addressee::List::Iterator it2;
233//US mAccess->save(); 322 for ( it2 = changedAddressees.begin(); it2 != changedAddressees.end(); ++it2 )
323 addressBook()->insertAddressee((*it2));
324 //US mAccess->save();
234 325
235 mDirWatch.startScan(); 326 mDirWatch.startScan();
236 delete ticket; 327 delete ticket;
237 unlock( fileName() ); 328 unlock( fileName() );
238 329
239 return true; 330 return true;
240} 331}
241 332
242bool ResourceSharpDTM::lock( const QString &lockfileName ) 333bool ResourceSharpDTM::lock( const QString &lockfileName )
243{ 334{
244#ifdef ALLOW_LOCKING 335#ifdef ALLOW_LOCKING
245 qDebug("ResourceSharpDTM::lock: %s", fileName().latin1()); 336 qDebug("ResourceSharpDTM::lock: %s", fileName().latin1());
246 337
247 kdDebug(5700) << "ResourceSharpDTM::lock()" << endl; 338 kdDebug(5700) << "ResourceSharpDTM::lock()" << endl;
248 339
249 QString fn = lockfileName; 340 QString fn = lockfileName;
250 341
251 KURL url(fn); 342 KURL url(fn);
252 QString lockName = locateLocal( "data", "kabc/lock/" + url.fileName() + ".lock" ); 343 QString lockName = locateLocal( "data", "kabc/lock/" + url.fileName() + ".lock" );
253 344
254 kdDebug(5700) << "-- lock name: " << lockName << endl; 345 kdDebug(5700) << "-- lock name: " << lockName << endl;
255 346
256 if (QFile::exists( lockName )) 347 if (QFile::exists( lockName ))
257 { 348 {
258 qDebug("ResourceSharpDTM::lock: lockfile %s already exists. (Delete it before continuing if nobody else is accessing the resourcefile %s)", lockName.latin1(), fileName()); 349 qDebug("ResourceSharpDTM::lock: lockfile %s already exists. (Delete it before continuing if nobody else is accessing the resourcefile %s)", lockName.latin1(), fileName());
259 return false; 350 return false;
260 } 351 }
261 352
262 353
263 QString lockUniqueName; 354 QString lockUniqueName;
264 lockUniqueName = fn + KApplication::randomString( 8 ); 355 lockUniqueName = fn + KApplication::randomString( 8 );
265 356
diff --git a/kabc/plugins/sharpdtm/sharpdtmE.pro b/kabc/plugins/sharpdtm/sharpdtmE.pro
index f335729..b80a1da 100644
--- a/kabc/plugins/sharpdtm/sharpdtmE.pro
+++ b/kabc/plugins/sharpdtm/sharpdtmE.pro
@@ -1,36 +1,36 @@
1 TEMPLATE= lib 1 TEMPLATE= lib
2CONFIG += qt warn_on 2CONFIG += qt warn_on
3TARGET = microkabc_sharpdtm 3TARGET = microkabc_sharpdtm
4 4
5INCLUDEPATH += $(KDEPIMDIR)/kabc $(SHARPDTMSDK)/include $(KDEPIMDIR)/microkde $(KDEPIMDIR)/microkde/kdecore $(KDEPIMDIR)/microkde/kio/kfile $(KDEPIMDIR)/microkde/kio/kio $(KDEPIMDIR)/microkde/kresources $(KDEPIMDIR)/qtcompat $(QPEDIR)/include 5INCLUDEPATH += $(KDEPIMDIR) $(KDEPIMDIR)/kabc $(SHARPDTMSDK)/include $(KDEPIMDIR)/microkde $(KDEPIMDIR)/microkde/kdecore $(KDEPIMDIR)/microkde/kio/kfile $(KDEPIMDIR)/microkde/kio/kio $(KDEPIMDIR)/microkde/kresources $(KDEPIMDIR)/qtcompat $(QPEDIR)/include
6 6
7 7
8OBJECTS_DIR = obj/$(PLATFORM) 8OBJECTS_DIR = obj/$(PLATFORM)
9MOC_DIR = moc/$(PLATFORM) 9MOC_DIR = moc/$(PLATFORM)
10DESTDIR = $(QPEDIR)/lib 10DESTDIR = $(QPEDIR)/lib
11LIBS += -lmicrokde 11LIBS += -lmicrokde
12LIBS += -lmicrokabc 12LIBS += -lmicrokabc
13LIBS += -lmicrokdepim 13LIBS += -lmicrokdepim
14LIBS += -lmicroqtcompat 14LIBS += -lmicroqtcompat
15LIBS += -lmicrokcal 15LIBS += -lmicrokcal
16LIBS += -L$(QPEDIR)/lib 16LIBS += -L$(QPEDIR)/lib
17LIBS += -ljpeg 17LIBS += -ljpeg
18LIBS += -lqpe 18LIBS += -lqpe
19LIBS += -lqte 19LIBS += -lqte
20LIBS += -lzdtm 20LIBS += -lzdtm
21LIBS += -lsl 21LIBS += -lsl
22 22
23 23
24 24
25INTERFACES = \ 25INTERFACES = \
26 26
27HEADERS = \ 27HEADERS = \
28 resourcesharpdtm.h \ 28 resourcesharpdtm.h \
29 resourcesharpdtmconfig.h \ 29 resourcesharpdtmconfig.h \
30 sharpdtmconverter.h 30 sharpdtmconverter.h
31 31
32SOURCES = \ 32SOURCES = \
33 resourcesharpdtm.cpp \ 33 resourcesharpdtm.cpp \
34 resourcesharpdtmconfig.cpp \ 34 resourcesharpdtmconfig.cpp \
35 sharpdtmconverter.cpp 35 sharpdtmconverter.cpp
36 36
diff --git a/kabc/plugins/sharpdtm/sharpdtmconverter.cpp b/kabc/plugins/sharpdtm/sharpdtmconverter.cpp
index 8f8334e..b065bf3 100644
--- a/kabc/plugins/sharpdtm/sharpdtmconverter.cpp
+++ b/kabc/plugins/sharpdtm/sharpdtmconverter.cpp
@@ -40,64 +40,70 @@ using namespace SlCategory;
40SharpDTMConverter::SharpDTMConverter() : catDB(0) 40SharpDTMConverter::SharpDTMConverter() : catDB(0)
41{ 41{
42} 42}
43 43
44SharpDTMConverter::~SharpDTMConverter() 44SharpDTMConverter::~SharpDTMConverter()
45{ 45{
46 deinit(); 46 deinit();
47} 47}
48 48
49bool SharpDTMConverter::init() 49bool SharpDTMConverter::init()
50{ 50{
51 catDB = new SlCategory::SlCategories(); 51 catDB = new SlCategory::SlCategories();
52 52
53 if (!catDB) 53 if (!catDB)
54 return false; 54 return false;
55 55
56// catDB->load( categoryFileName() ); 56// catDB->load( categoryFileName() );
57 return true; 57 return true;
58} 58}
59 59
60void SharpDTMConverter::deinit() 60void SharpDTMConverter::deinit()
61{ 61{
62 if (catDB) 62 if (catDB)
63 { 63 {
64 delete catDB; 64 delete catDB;
65 catDB = 0; 65 catDB = 0;
66 } 66 }
67} 67}
68 68
69bool SharpDTMConverter::sharpToAddressee( const CardId &contact, const SlZDataBase* database, Addressee &addr ) 69bool SharpDTMConverter::sharpToAddressee( const CardId &contact, const SlZDataBase* database, Addressee &addr )
70{ 70{
71 SlZDataBase* db = (SlZDataBase*)database; 71 SlZDataBase* db = (SlZDataBase*)database;
72
73 // for syncing: we need setting of the two fields
74 addr.setExternalUID( QString::number( contact ) );
75 addr.setOriginalExternalUID( QString::number( contact ) );
76
77
72 // name 78 // name
73 qDebug("SharpDTMConverter::sharpToAddressee check if the fileAs transformation works!!"); 79 qDebug("SharpDTMConverter::sharpToAddressee check if the fileAs transformation works!!");
74 addr.setFormattedName(db->readField(ZdbAdrs::FileAs)); 80 addr.setFormattedName(db->readField(ZdbAdrs::FileAs));
75 81
76 addr.setFamilyName( db->readField(ZdbAdrs::LastName) ); 82 addr.setFamilyName( db->readField(ZdbAdrs::LastName) );
77 addr.setGivenName( db->readField(ZdbAdrs::FirstName) ); 83 addr.setGivenName( db->readField(ZdbAdrs::FirstName) );
78 addr.setAdditionalName( db->readField(ZdbAdrs::MiddleName) ); 84 addr.setAdditionalName( db->readField(ZdbAdrs::MiddleName) );
79 addr.setPrefix( db->readField(ZdbAdrs::Title) ); 85 addr.setPrefix( db->readField(ZdbAdrs::Title) );
80 addr.setSuffix( db->readField(ZdbAdrs::Suffix) ); 86 addr.setSuffix( db->readField(ZdbAdrs::Suffix) );
81 87
82 88
83 // email 89 // email
84 QString emailstr = db->readField(ZdbAdrs::Emails); 90 QString emailstr = db->readField(ZdbAdrs::Emails);
85 qDebug("SharpDTMConverter::sharpToAddressee whats the character to seperate the emailadresses? %s ", emailstr.latin1()); 91 qDebug("SharpDTMConverter::sharpToAddressee whats the character to seperate the emailadresses? %s ", emailstr.latin1());
86 QStringList emails = QStringList::split(",", emailstr); 92 QStringList emails = QStringList::split(",", emailstr);
87 93
88 for ( QStringList::Iterator it = emails.begin(); it != emails.end(); ++it ) { 94 for ( QStringList::Iterator it = emails.begin(); it != emails.end(); ++it ) {
89 addr.insertEmail( *it, ((*it) == db->readField(ZdbAdrs::DefaultEmail)) ); 95 addr.insertEmail( *it, ((*it) == db->readField(ZdbAdrs::DefaultEmail)) );
90 } 96 }
91 97
92 if (!db->readField(ZdbAdrs::DefaultEmail).isEmpty()) 98 if (!db->readField(ZdbAdrs::DefaultEmail).isEmpty())
93 addr.insertEmail(db->readField(ZdbAdrs::DefaultEmail), true); 99 addr.insertEmail(db->readField(ZdbAdrs::DefaultEmail), true);
94 100
95 // home 101 // home
96 if ((!db->readField(ZdbAdrs::HomeStreet).isEmpty()) || 102 if ((!db->readField(ZdbAdrs::HomeStreet).isEmpty()) ||
97 (!db->readField(ZdbAdrs::HomeCity).isEmpty()) || 103 (!db->readField(ZdbAdrs::HomeCity).isEmpty()) ||
98 (!db->readField(ZdbAdrs::HomeState).isEmpty()) || 104 (!db->readField(ZdbAdrs::HomeState).isEmpty()) ||
99 (!db->readField(ZdbAdrs::HomeZip).isEmpty()) || 105 (!db->readField(ZdbAdrs::HomeZip).isEmpty()) ||
100 (!db->readField(ZdbAdrs::HomeCountry).isEmpty())) 106 (!db->readField(ZdbAdrs::HomeCountry).isEmpty()))
101 { 107 {
102 Address homeaddress; 108 Address homeaddress;
103 homeaddress.setType(Address::Home); 109 homeaddress.setType(Address::Home);