summaryrefslogtreecommitdiffabout
authorulf69 <ulf69>2004-06-30 22:02:19 (UTC)
committer ulf69 <ulf69>2004-06-30 22:02:19 (UTC)
commit570dc8214a4b43ca89e71901f48deea2b53492bb (patch) (unidiff)
treed3eb25840e1e0e29541c0005ed7950b84557c34c
parent2de4aeb0272fa7d96a55332196a11e52b2f27539 (diff)
downloadkdepimpi-570dc8214a4b43ca89e71901f48deea2b53492bb.zip
kdepimpi-570dc8214a4b43ca89e71901f48deea2b53492bb.tar.gz
kdepimpi-570dc8214a4b43ca89e71901f48deea2b53492bb.tar.bz2
implemented loading of opie resources
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--kabc/plugins/opie/kabc_opieE.pro24
-rw-r--r--kabc/plugins/opie/resourceopie.cpp117
-rw-r--r--kabc/plugins/opie/resourceopie.h9
-rw-r--r--kabc/plugins/opie/resourceopieconfig.cpp9
4 files changed, 113 insertions, 46 deletions
diff --git a/kabc/plugins/opie/kabc_opieE.pro b/kabc/plugins/opie/kabc_opieE.pro
index 7341ca8..f3e2ac4 100644
--- a/kabc/plugins/opie/kabc_opieE.pro
+++ b/kabc/plugins/opie/kabc_opieE.pro
@@ -1,21 +1,31 @@
1 TEMPLATE= lib 1 TEMPLATE= lib
2CONFIG += qt warn_on release 2CONFIG += qt warn_on
3#release debug 3#release debug
4
5TARGET = microkabc_opie 4TARGET = microkabc_opie
6INCLUDEPATH += ../.. ../../../microkde ../../../microkde/kdecore ../../../microkde/kio/kfile ../../../qtcompat 5
6INCLUDEPATH += ../.. ../../converter/opie ../../../microkde ../../../microkde/kdecore ../../../microkde/kio/kfile ../../../qtcompat $(QPEDIR)/include
7
8
7OBJECTS_DIR = obj/$(PLATFORM) 9OBJECTS_DIR = obj/$(PLATFORM)
8MOC_DIR = moc 10MOC_DIR = moc/$(PLATFORM)
9DESTDIR = $(QPEDIR)/lib 11DESTDIR = $(QPEDIR)/lib
10LIBS += -lmicrokde -lmicrokabc 12LIBS += -lmicrokde
13LIBS += -lmicrokabc
11LIBS += -L$(QPEDIR)/lib 14LIBS += -L$(QPEDIR)/lib
15LIBS += -lopie
16LIBS += -lqpe
17LIBS += -lqte
18LIBS += -lmicrokabc_opieconverter
19#LIBS += -L../../lib/$(PLATFORM)
20
12 21
13INTERFACES = \ 22INTERFACES = \
14 23
15HEADERS = \ 24HEADERS = \
16 resourceopie.h \ 25 resourceopie.h \
17 resourceopieconfig.h 26 resourceopieconfig.h \
18 27
19SOURCES = \ 28SOURCES = \
20 resourceopie.cpp \ 29 resourceopie.cpp \
21 resourceopieconfig.cpp 30 resourceopieconfig.cpp \
31
diff --git a/kabc/plugins/opie/resourceopie.cpp b/kabc/plugins/opie/resourceopie.cpp
index 47e22b4..f992301 100644
--- a/kabc/plugins/opie/resourceopie.cpp
+++ b/kabc/plugins/opie/resourceopie.cpp
@@ -26,12 +26,13 @@ $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 <qfile.h> 33#include <qfile.h>
33#include <qfileinfo.h> 34#include <qfileinfo.h>
34#include <qregexp.h> 35#include <qregexp.h>
35#include <qtimer.h> 36#include <qtimer.h>
36 37
37#include <kapplication.h> 38#include <kapplication.h>
@@ -39,71 +40,82 @@ $Id$
39#include <kdebug.h> 40#include <kdebug.h>
40#include <klocale.h> 41#include <klocale.h>
41//US #include <ksavefile.h> 42//US #include <ksavefile.h>
42#include <kstandarddirs.h> 43#include <kstandarddirs.h>
43 44
44//US #include "formatfactory.h" 45//US #include "formatfactory.h"
46//US #include <qpe/qpeapplication.h>
47
48#include <opie/ocontactaccess.h>
45 49
46#include "resource.h" 50#include "resource.h"
47#include "resourceopieconfig.h" 51#include "resourceopieconfig.h"
48#include "stdaddressbook.h" 52#include "stdaddressbook.h"
49 53
54#include "opieconverter.h"
55
50#include "resourceopie.h" 56#include "resourceopie.h"
51 57
52using namespace KABC; 58using namespace KABC;
53extern "C" 59extern "C"
54{ 60{
55//US void *init_kabc_file()
56 void *init_microkabc_opie() 61 void *init_microkabc_opie()
57 { 62 {
58 return new KRES::PluginFactory<ResourceOpie,ResourceOpieConfig>(); 63 return new KRES::PluginFactory<ResourceOpie,ResourceOpieConfig>();
59 } 64 }
60} 65}
61 66
62ResourceOpie::ResourceOpie( const KConfig *config ) 67ResourceOpie::ResourceOpie( const KConfig *config )
63 : Resource( config ) 68 : Resource( config ), mConverter (0)
64{ 69{
65 QString fileName; 70 QString fileName = QDir::homeDirPath() + "/Applications/addressbook/addressbook.xml";
66 71
67 KConfig *cfg = (KConfig *)config; 72 KConfig *cfg = (KConfig *)config;
68 if ( cfg ) { 73 if ( cfg ) {
69 fileName = cfg->readEntry( "FileName", StdAddressBook::fileName() ); 74 fileName = cfg->readEntry( "FileName", fileName );
70// qDebug("ResourceFile::ResourceFile : 1 %s, %s", fileName.latin1(), formatName.latin1() ); 75
71 } else {
72 fileName = StdAddressBook::fileName();
73// qDebug("ResourceFile::ResourceFile : 2 %s, %s", fileName.latin1(), formatName.latin1() );
74 } 76 }
75 77
78// qDebug("ResourceOpie::ResourceOpie : %s", fileName.latin1() );
79
76 init( fileName ); 80 init( fileName );
77} 81}
78 82
79ResourceOpie::ResourceOpie( const QString &fileName ) 83ResourceOpie::ResourceOpie( const QString &fileName )
80 : Resource( 0 ) 84 : Resource( 0 )
81{ 85{
82// qDebug("ResourceFile::ResourceFile : 3 %s, %s", fileName.latin1(), formatName.latin1()); 86// qDebug("ResourceOpie::ResourceOpie : 3 %s", fileName.latin1());
83 init( fileName ); 87 init( fileName );
84} 88}
85 89
86void ResourceOpie::init( const QString &fileName ) 90void ResourceOpie::init( const QString &fileName )
87{ 91{
88 92
89/*US we have no KDirWatch. SO simulate the signals from inside the apropriate methods 93/*US we have no KDirWatch. SO simulate the signals from inside the apropriate methods
90 connect( &mDirWatch, SIGNAL( dirty(const QString&) ), SLOT( fileChanged() ) ); 94 connect( &mDirWatch, SIGNAL( dirty(const QString&) ), SLOT( fileChanged() ) );
91 connect( &mDirWatch, SIGNAL( created(const QString&) ), SLOT( fileChanged() ) ); 95 connect( &mDirWatch, SIGNAL( created(const QString&) ), SLOT( fileChanged() ) );
92 connect( &mDirWatch, SIGNAL( deleted(const QString&) ), SLOT( fileChanged() ) ); 96 connect( &mDirWatch, SIGNAL( deleted(const QString&) ), SLOT( fileChanged() ) );
93*/ 97*/
98 //US opie addressbook is always readonly
99 setReadOnly( true );
94 100
95 setFileName( fileName ); 101 setFileName( fileName );
102
96} 103}
97 104
98ResourceOpie::~ResourceOpie() 105ResourceOpie::~ResourceOpie()
99{ 106{
107 if (mConverter != 0)
108 delete mConverter;
100} 109}
101 110
102void ResourceOpie::writeConfig( KConfig *config ) 111void ResourceOpie::writeConfig( KConfig *config )
103{ 112{
113 //US opie addressbook is always readonly
114 setReadOnly( true );
115
104 Resource::writeConfig( config ); 116 Resource::writeConfig( config );
105 117
106 config->writeEntry( "FileName", mFileName ); 118 config->writeEntry( "FileName", mFileName );
107 119
108// qDebug("ResourceFile::writeConfig format %s, %s", mFileName.latin1(), mFormatName.latin1()); 120// qDebug("ResourceFile::writeConfig format %s, %s", mFileName.latin1(), mFormatName.latin1());
109 121
@@ -123,12 +135,14 @@ Ticket *ResourceOpie::requestSaveTicket()
123 return createTicket( this ); 135 return createTicket( this );
124} 136}
125 137
126 138
127bool ResourceOpie::doOpen() 139bool ResourceOpie::doOpen()
128{ 140{
141// qDebug("ResourceOpie::doOpen() %s", mFileName.latin1());
142/*US
129 QFile file( mFileName ); 143 QFile file( mFileName );
130 144
131 if ( !file.exists() ) { 145 if ( !file.exists() ) {
132 // try to create the file 146 // try to create the file
133 bool ok = file.open( IO_WriteOnly ); 147 bool ok = file.open( IO_WriteOnly );
134 if ( ok ) 148 if ( ok )
@@ -148,42 +162,77 @@ bool ResourceOpie::doOpen()
148 bool ok = true; 162 bool ok = true;
149 163
150 file.close(); 164 file.close();
151 165
152 return ok; 166 return ok;
153 } 167 }
168*/
169 qDebug("ResourceOpie::doOpen() has to be fixed - %s", mFileName.latin1());
170 return true;
154} 171}
155 172
156void ResourceOpie::doClose() 173void ResourceOpie::doClose()
157{ 174{
175// qDebug("ResourceOpie::doClose() %s", mFileName.latin1());
158} 176}
159 177
160bool ResourceOpie::load() 178bool ResourceOpie::load()
161{ 179{
180// qDebug("ResourceOpie::load() %s", mFileName.latin1());
162 kdDebug(5700) << "ResourceOpie::load(): '" << mFileName << "'" << endl; 181 kdDebug(5700) << "ResourceOpie::load(): '" << mFileName << "'" << endl;
163 182
164 QFile file( mFileName ); 183 OContactAccess* access = new OContactAccess("KDEPim/Pi", mFileName, 0l, false);
165 if ( !file.open( IO_ReadOnly ) ) { 184
166 addressBook()->error( i18n( "Unable to open file '%1'." ).arg( mFileName ) ); 185 if ( !access ) {
186 qDebug("Unable to load file() %s", mFileName.latin1());
187 addressBook()->error( i18n( "Unable to load file '%1'." ).arg( mFileName ) );
167 return false; 188 return false;
168 } 189 }
190
191 access -> setReadAhead( 32 ); // Use ReadAhead-Cache if available
192
193 if (mConverter == 0)
194 mConverter = new OpieConverter();
169 195
170// qDebug("ResourceFile::load format %s, %s", mFileName.latin1(), mFormatName.latin1()); 196
197 OContactAccess::List::Iterator it;
198 OContactAccess::List allList = access->allRecords();
199 bool res = false;
200 for ( it = allList.begin(); it != allList.end(); ++it )
201 {
202 OContact c = (*it);
203
204 KABC::Addressee addressee;
205
206 res = mConverter->opieToAddressee( c, addressee );
207
208 if ( !addressee.isEmpty() && res )
209 {
210 addressee.setResource( this );
211 addressBook()->insertAddressee( addressee );
212 }
213
214// qDebug("found %s", c.fullName().latin1());
215 }
216
217 delete access;
171 218
172 //US return mFormat->loadAll( addressBook(), this, &file );
173 return true; 219 return true;
174} 220}
175 221
176bool ResourceOpie::save( Ticket *ticket ) 222bool ResourceOpie::save( Ticket *ticket )
177{ 223{
178// qDebug("ResourceFile::save format %s, %s", mFileName.latin1(), mFormatName.latin1()); 224 qDebug("ResourceOpie::save() has to be fixed - %s", mFileName.latin1());
225/*US
226
227 qDebug("ResourceOpie::save %s", mFileName.latin1());
179 kdDebug(5700) << "ResourceOpie::save()" << endl; 228 kdDebug(5700) << "ResourceOpie::save()" << endl;
180 229
181 // create backup file 230 // create backup file
182 QString extension = "_" + QString::number( QDate::currentDate().dayOfWeek() ); 231 QString extension = "_" + QString::number( QDate::currentDate().dayOfWeek() );
183 232*/
184/*US we use a simpler method to create a backupfile 233/*US we use a simpler method to create a backupfile
185 234
186 (void) KSaveFile::backupFile( mFileName, QString::null 235 (void) KSaveFile::backupFile( mFileName, QString::null
187 ,extension ); 236 ,extension );
188 237
189 KSaveFile saveFile( mFileName ); 238 KSaveFile saveFile( mFileName );
@@ -191,13 +240,13 @@ bool ResourceOpie::save( Ticket *ticket )
191 if ( saveFile.status() == 0 && saveFile.file() ) 240 if ( saveFile.status() == 0 && saveFile.file() )
192 { 241 {
193 mFormat->saveAll( addressBook(), this, saveFile.file() ); 242 mFormat->saveAll( addressBook(), this, saveFile.file() );
194 ok = saveFile.close(); 243 ok = saveFile.close();
195 } 244 }
196*/ 245*/
197 246/*US
198//US ToDo: write backupfile 247//US ToDo: write backupfile
199 QFile info; 248 QFile info;
200 info.setName( mFileName ); 249 info.setName( mFileName );
201 bool ok = info.open( IO_WriteOnly ); 250 bool ok = info.open( IO_WriteOnly );
202 if ( ok ) { 251 if ( ok ) {
203//US mFormat->saveAll( addressBook(), this, &info ); 252//US mFormat->saveAll( addressBook(), this, &info );
@@ -215,17 +264,23 @@ bool ResourceOpie::save( Ticket *ticket )
215 delete ticket; 264 delete ticket;
216 unlock( mFileName ); 265 unlock( mFileName );
217 266
218 return ok; 267 return ok;
219 268
220 qDebug("ResourceOpie::save has to be changed"); 269 qDebug("ResourceOpie::save has to be changed");
270*/
221 return true; 271 return true;
272
222} 273}
223 274
224bool ResourceOpie::lock( const QString &fileName ) 275bool ResourceOpie::lock( const QString &fileName )
225{ 276{
277 qDebug("ResourceOpie::lock() has to be fixed - %s", mFileName.latin1());
278
279/*US
280// qDebug("ResourceOpie::lock() %s", fileName.latin1());
226 kdDebug(5700) << "ResourceOpie::lock()" << endl; 281 kdDebug(5700) << "ResourceOpie::lock()" << endl;
227 282
228 QString fn = fileName; 283 QString fn = fileName;
229 284
230//US change the implementation how the lockfilename is getting created 285//US change the implementation how the lockfilename is getting created
231//US fn.replace( QRegExp("/"), "_" ); 286//US fn.replace( QRegExp("/"), "_" );
@@ -260,27 +315,35 @@ bool ResourceOpie::lock( const QString &fileName )
260 return true; 315 return true;
261 } 316 }
262 317
263 // TODO: check stat 318 // TODO: check stat
264 319
265 return false; 320 return false;
321*/
322
323 return true;
266} 324}
267 325
268void ResourceOpie::unlock( const QString &fileName ) 326void ResourceOpie::unlock( const QString &fileName )
269{ 327{
328 qDebug("ResourceOpie::unlock() has to be fixed - %s", mFileName.latin1());
329/*US
330// qDebug("ResourceOpie::unlock() %s", fileName.latin1());
331
270 QString fn = fileName; 332 QString fn = fileName;
271//US change the implementation how the lockfilename is getting created 333//US change the implementation how the lockfilename is getting created
272//US fn.replace( QRegExp( "/" ), "_" ); 334//US fn.replace( QRegExp( "/" ), "_" );
273//US QString lockName = locateLocal( "data", "kabc/lock/" + fn + ".lock" ); 335//US QString lockName = locateLocal( "data", "kabc/lock/" + fn + ".lock" );
274//US QString lockName = fn + ".lock"; 336//US QString lockName = fn + ".lock";
275 KURL url(fn); 337 KURL url(fn);
276 QString lockName = locateLocal( "data", "kabc/lock/" + url.fileName() + ".lock" ); 338 QString lockName = locateLocal( "data", "kabc/lock/" + url.fileName() + ".lock" );
277 339
278 QFile::remove( lockName ); 340 QFile::remove( lockName );
279 QFile::remove( mLockUniqueName ); 341 QFile::remove( mLockUniqueName );
280 addressBook()->emitAddressBookUnlocked(); 342 addressBook()->emitAddressBookUnlocked();
343*/
281} 344}
282 345
283void ResourceOpie::setFileName( const QString &fileName ) 346void ResourceOpie::setFileName( const QString &fileName )
284{ 347{
285/*US ToDo: no synchronization so far. Has to be changed in the future 348/*US ToDo: no synchronization so far. Has to be changed in the future
286 mDirWatch.stopScan(); 349 mDirWatch.stopScan();
@@ -299,28 +362,12 @@ void ResourceOpie::setFileName( const QString &fileName )
299 362
300QString ResourceOpie::fileName() const 363QString ResourceOpie::fileName() const
301{ 364{
302 return mFileName; 365 return mFileName;
303} 366}
304 367
305/*US
306void ResourceOpie::setFormat( const QString &format )
307{
308 mFormatName = format;
309 delete mFormat;
310
311 FormatFactory *factory = FormatFactory::self();
312 mFormat = factory->format( mFormatName );
313}
314
315QString ResourceOpie::format() const
316{
317 return mFormatName;
318}
319*/
320
321void ResourceOpie::fileChanged() 368void ResourceOpie::fileChanged()
322{ 369{
323 // There is a small theoretical chance that KDirWatch calls us before 370 // There is a small theoretical chance that KDirWatch calls us before
324 // we are fully constructed 371 // we are fully constructed
325 if (!addressBook()) 372 if (!addressBook())
326 return; 373 return;
@@ -336,10 +383,12 @@ void ResourceOpie::removeAddressee( const Addressee &addr )
336 QFile::remove( QFile::encodeName( locateLocal( "data", "kabc/sounds/" ) + addr.uid() ) ); 383 QFile::remove( QFile::encodeName( locateLocal( "data", "kabc/sounds/" ) + addr.uid() ) );
337*/ 384*/
338} 385}
339 386
340void ResourceOpie::cleanUp() 387void ResourceOpie::cleanUp()
341{ 388{
389// qDebug("ResourceOpie::cleanup() %s", mFileName.latin1());
390
342 unlock( mFileName ); 391 unlock( mFileName );
343} 392}
344 393
345//US #include "resourceopie.moc" 394//US #include "resourceopie.moc"
diff --git a/kabc/plugins/opie/resourceopie.h b/kabc/plugins/opie/resourceopie.h
index d21272a..9db9485 100644
--- a/kabc/plugins/opie/resourceopie.h
+++ b/kabc/plugins/opie/resourceopie.h
@@ -33,20 +33,21 @@ $Id$
33#include <kdirwatch.h> 33#include <kdirwatch.h>
34 34
35#include <sys/types.h> 35#include <sys/types.h>
36 36
37#include "resource.h" 37#include "resource.h"
38 38
39class QTimer; 39
40class FormatPlugin; 40//class QTimer;
41//class FormatPlugin;
41 42
42namespace KABC { 43namespace KABC {
43 44
44//US class FormatPlugin; 45//US class FormatPlugin;
45class ResourceConfigWidget; 46class ResourceConfigWidget;
46 47class OpieConverter;
47/** 48/**
48 @internal 49 @internal
49*/ 50*/
50class ResourceOpie : public Resource 51class ResourceOpie : public Resource
51{ 52{
52 Q_OBJECT 53 Q_OBJECT
@@ -134,12 +135,14 @@ protected:
134 void init( const QString &fileName ); 135 void init( const QString &fileName );
135 136
136 bool lock( const QString &fileName ); 137 bool lock( const QString &fileName );
137 void unlock( const QString &fileName ); 138 void unlock( const QString &fileName );
138 139
139private: 140private:
141 OpieConverter* mConverter;
142
140 QString mFileName; 143 QString mFileName;
141 144
142 QString mLockUniqueName; 145 QString mLockUniqueName;
143 146
144 KDirWatch mDirWatch; 147 KDirWatch mDirWatch;
145}; 148};
diff --git a/kabc/plugins/opie/resourceopieconfig.cpp b/kabc/plugins/opie/resourceopieconfig.cpp
index b92cfa1..f4cc4f9 100644
--- a/kabc/plugins/opie/resourceopieconfig.cpp
+++ b/kabc/plugins/opie/resourceopieconfig.cpp
@@ -32,15 +32,18 @@ $Id$
32#include <klocale.h> 32#include <klocale.h>
33#include <kstandarddirs.h> 33#include <kstandarddirs.h>
34#include <kdialog.h> 34#include <kdialog.h>
35 35
36#include <unistd.h> 36#include <unistd.h>
37 37
38#include <qdir.h>
38#include <qfile.h> 39#include <qfile.h>
39#include "resourceopie.h" 40#include "resourceopie.h"
40#include "stdaddressbook.h" 41//US #include <qpe/qpeapplication.h>
42
43//US #include "stdaddressbook.h"
41 44
42#include "resourceopieconfig.h" 45#include "resourceopieconfig.h"
43 46
44using namespace KABC; 47using namespace KABC;
45 48
46ResourceOpieConfig::ResourceOpieConfig( QWidget* parent, const char* name ) 49ResourceOpieConfig::ResourceOpieConfig( QWidget* parent, const char* name )
@@ -78,13 +81,13 @@ void ResourceOpieConfig::loadSettings( KRES::Resource *res )
78 kdDebug(5700) << "ResourceOpieConfig::loadSettings(): cast failed" << endl; 81 kdDebug(5700) << "ResourceOpieConfig::loadSettings(): cast failed" << endl;
79 return; 82 return;
80 } 83 }
81 84
82 mFileNameEdit->setURL( resource->fileName() ); 85 mFileNameEdit->setURL( resource->fileName() );
83 if ( mFileNameEdit->url().isEmpty() ) 86 if ( mFileNameEdit->url().isEmpty() )
84 mFileNameEdit->setURL( KABC::StdAddressBook::fileName() ); 87 mFileNameEdit->setURL( QDir::homeDirPath() + "/Applications/addressbook/addressbook.xml" );
85} 88}
86 89
87void ResourceOpieConfig::saveSettings( KRES::Resource *res ) 90void ResourceOpieConfig::saveSettings( KRES::Resource *res )
88{ 91{
89//US ResourceFile *resource = dynamic_cast<ResourceFile*>( res ); 92//US ResourceFile *resource = dynamic_cast<ResourceFile*>( res );
90 ResourceOpie *resource = (ResourceOpie*)( res ); 93 ResourceOpie *resource = (ResourceOpie*)( res );
@@ -97,11 +100,13 @@ void ResourceOpieConfig::saveSettings( KRES::Resource *res )
97 resource->setFileName( mFileNameEdit->url() ); 100 resource->setFileName( mFileNameEdit->url() );
98} 101}
99 102
100void ResourceOpieConfig::checkFilePermissions( const QString& fileName ) 103void ResourceOpieConfig::checkFilePermissions( const QString& fileName )
101{ 104{
102 // If file exist but is not writeable... 105 // If file exist but is not writeable...
106/*US
103 if ( access( QFile::encodeName( fileName ), F_OK ) == 0 ) 107 if ( access( QFile::encodeName( fileName ), F_OK ) == 0 )
104 emit setReadOnly( access( QFile::encodeName( fileName ), W_OK ) < 0 ); 108 emit setReadOnly( access( QFile::encodeName( fileName ), W_OK ) < 0 );
109*/
105} 110}
106 111
107//US #include "resourceopieconfig.moc" 112//US #include "resourceopieconfig.moc"