summaryrefslogtreecommitdiffabout
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--kabc/plugins/dir/resourcedir.cpp3
-rw-r--r--kabc/plugins/file/resourcefile.cpp9
-rw-r--r--kabc/plugins/opie/resourceopie.cpp4
-rw-r--r--kabc/plugins/qtopia/resourceqtopia.cpp3
-rw-r--r--kabc/plugins/sharpdtm/resourcesharpdtm.cpp2
5 files changed, 16 insertions, 5 deletions
diff --git a/kabc/plugins/dir/resourcedir.cpp b/kabc/plugins/dir/resourcedir.cpp
index eccd482..fac06a1 100644
--- a/kabc/plugins/dir/resourcedir.cpp
+++ b/kabc/plugins/dir/resourcedir.cpp
@@ -165,113 +165,116 @@ bool ResourceDir::doOpen()
165 165
166 if ( file.size() == 0 ) 166 if ( file.size() == 0 )
167 return true; 167 return true;
168 168
169 bool ok = mFormat->checkFormat( &file ); 169 bool ok = mFormat->checkFormat( &file );
170 file.close(); 170 file.close();
171 return ok; 171 return ok;
172 } 172 }
173} 173}
174 174
175void ResourceDir::doClose() 175void ResourceDir::doClose()
176{ 176{
177} 177}
178 178
179bool ResourceDir::load() 179bool ResourceDir::load()
180{ 180{
181 kdDebug(5700) << "ResourceDir::load(): '" << mPath << "'" << endl; 181 kdDebug(5700) << "ResourceDir::load(): '" << mPath << "'" << endl;
182 182
183 QDir dir( mPath ); 183 QDir dir( mPath );
184 QStringList files = dir.entryList( QDir::Files ); 184 QStringList files = dir.entryList( QDir::Files );
185 185
186 QStringList::Iterator it; 186 QStringList::Iterator it;
187 bool ok = true; 187 bool ok = true;
188 for ( it = files.begin(); it != files.end(); ++it ) { 188 for ( it = files.begin(); it != files.end(); ++it ) {
189 QFile file( mPath + "/" + (*it) ); 189 QFile file( mPath + "/" + (*it) );
190 190
191 if ( !file.open( IO_ReadOnly ) ) { 191 if ( !file.open( IO_ReadOnly ) ) {
192 addressBook()->error( i18n( "Unable to open file '%1' for reading" ).arg( file.name() ) ); 192 addressBook()->error( i18n( "Unable to open file '%1' for reading" ).arg( file.name() ) );
193 ok = false; 193 ok = false;
194 continue; 194 continue;
195 } 195 }
196 196
197 if ( !mFormat->loadAll( addressBook(), this, &file ) ) 197 if ( !mFormat->loadAll( addressBook(), this, &file ) )
198 ok = false; 198 ok = false;
199 199
200 file.close(); 200 file.close();
201 } 201 }
202 202
203 return ok; 203 return ok;
204} 204}
205 205
206bool ResourceDir::save( Ticket *ticket ) 206bool ResourceDir::save( Ticket *ticket )
207{ 207{
208 kdDebug(5700) << "ResourceDir::save(): '" << mPath << "'" << endl; 208 kdDebug(5700) << "ResourceDir::save(): '" << mPath << "'" << endl;
209 209
210 AddressBook::Iterator it; 210 AddressBook::Iterator it;
211 bool ok = true; 211 bool ok = true;
212 212
213 mDirWatch.stopScan();
214
213 for ( it = addressBook()->begin(); it != addressBook()->end(); ++it ) { 215 for ( it = addressBook()->begin(); it != addressBook()->end(); ++it ) {
214 if ( (*it).resource() != this || !(*it).changed() ) 216 if ( (*it).resource() != this || !(*it).changed() )
215 continue; 217 continue;
216 218
217 QFile file( mPath + "/" + (*it).uid() ); 219 QFile file( mPath + "/" + (*it).uid() );
218 if ( !file.open( IO_WriteOnly ) ) { 220 if ( !file.open( IO_WriteOnly ) ) {
219 addressBook()->error( i18n( "Unable to open file '%1' for writing" ).arg( file.name() ) ); 221 addressBook()->error( i18n( "Unable to open file '%1' for writing" ).arg( file.name() ) );
220 continue; 222 continue;
221 } 223 }
222 224
223 mFormat->save( *it, &file ); 225 mFormat->save( *it, &file );
224 226
225 // mark as unchanged 227 // mark as unchanged
226 (*it).setChanged( false ); 228 (*it).setChanged( false );
227 229
228 file.close(); 230 file.close();
229 } 231 }
232 mDirWatch.startScan();
230 233
231 delete ticket; 234 delete ticket;
232 unlock( mPath ); 235 unlock( mPath );
233 236
234 return ok; 237 return ok;
235} 238}
236 239
237bool ResourceDir::lock( const QString &path ) 240bool ResourceDir::lock( const QString &path )
238{ 241{
239 kdDebug(5700) << "ResourceDir::lock()" << endl; 242 kdDebug(5700) << "ResourceDir::lock()" << endl;
240 243
241 QString p = path; 244 QString p = path;
242//US change the implementation how the lockfilename is getting created 245//US change the implementation how the lockfilename is getting created
243//US p.replace( QRegExp("/"), "_" ); 246//US p.replace( QRegExp("/"), "_" );
244//US QString lockName = locateLocal( "data", "kabc/lock/" + p + ".lock" ); 247//US QString lockName = locateLocal( "data", "kabc/lock/" + p + ".lock" );
245 KURL url(p); 248 KURL url(p);
246 QString lockName = locateLocal( "data", "kabc/lock/" + url.fileName() + ".lock" ); 249 QString lockName = locateLocal( "data", "kabc/lock/" + url.fileName() + ".lock" );
247 250
248 251
249 kdDebug(5700) << "-- lock name: " << lockName << endl; 252 kdDebug(5700) << "-- lock name: " << lockName << endl;
250 253
251 if ( QFile::exists( lockName ) ) return false; 254 if ( QFile::exists( lockName ) ) return false;
252 255
253 QString lockUniqueName; 256 QString lockUniqueName;
254 lockUniqueName = p + KApplication::randomString( 8 ); 257 lockUniqueName = p + KApplication::randomString( 8 );
255 258
256 url = lockUniqueName; 259 url = lockUniqueName;
257//US mLockUniqueName = locateLocal( "data", "kabc/lock/" + lockUniqueName ); 260//US mLockUniqueName = locateLocal( "data", "kabc/lock/" + lockUniqueName );
258 mLockUniqueName = locateLocal( "data", "kabc/lock/" + url.fileName() ); 261 mLockUniqueName = locateLocal( "data", "kabc/lock/" + url.fileName() );
259 262
260 kdDebug(5700) << "-- lock unique name: " << mLockUniqueName << endl; 263 kdDebug(5700) << "-- lock unique name: " << mLockUniqueName << endl;
261 264
262 // Create unique file 265 // Create unique file
263 QFile file( mLockUniqueName ); 266 QFile file( mLockUniqueName );
264 file.open( IO_WriteOnly ); 267 file.open( IO_WriteOnly );
265 file.close(); 268 file.close();
266 269
267 // Create lock file 270 // Create lock file
268 int result = 0; 271 int result = 0;
269#ifndef _WIN32_ 272#ifndef _WIN32_
270 result = ::link( QFile::encodeName( mLockUniqueName ), 273 result = ::link( QFile::encodeName( mLockUniqueName ),
271 QFile::encodeName( lockName ) ); 274 QFile::encodeName( lockName ) );
272#endif 275#endif
273 if ( result == 0 ) { 276 if ( result == 0 ) {
274 addressBook()->emitAddressBookLocked(); 277 addressBook()->emitAddressBookLocked();
275 return true; 278 return true;
276 } 279 }
277 280
diff --git a/kabc/plugins/file/resourcefile.cpp b/kabc/plugins/file/resourcefile.cpp
index da2e4d7..fa6bc49 100644
--- a/kabc/plugins/file/resourcefile.cpp
+++ b/kabc/plugins/file/resourcefile.cpp
@@ -159,140 +159,141 @@ Ticket *ResourceFile::requestSaveTicket()
159bool ResourceFile::doOpen() 159bool ResourceFile::doOpen()
160{ 160{
161 QFile file( mFileName ); 161 QFile file( mFileName );
162 162
163 if ( !file.exists() ) { 163 if ( !file.exists() ) {
164 // try to create the file 164 // try to create the file
165 bool ok = file.open( IO_WriteOnly ); 165 bool ok = file.open( IO_WriteOnly );
166 if ( ok ) 166 if ( ok )
167 file.close(); 167 file.close();
168 168
169 return ok; 169 return ok;
170 } else { 170 } else {
171 if ( !file.open( IO_ReadWrite ) ) 171 if ( !file.open( IO_ReadWrite ) )
172 return false; 172 return false;
173 173
174 if ( file.size() == 0 ) { 174 if ( file.size() == 0 ) {
175 file.close(); 175 file.close();
176 return true; 176 return true;
177 } 177 }
178 178
179 bool ok = mFormat->checkFormat( &file ); 179 bool ok = mFormat->checkFormat( &file );
180 file.close(); 180 file.close();
181 181
182 return ok; 182 return ok;
183 } 183 }
184} 184}
185 185
186void ResourceFile::doClose() 186void ResourceFile::doClose()
187{ 187{
188} 188}
189 189
190bool ResourceFile::load() 190bool ResourceFile::load()
191{ 191{
192 192
193 193
194 QFile file( mFileName ); 194 QFile file( mFileName );
195 if ( !file.open( IO_ReadOnly ) ) { 195 if ( !file.open( IO_ReadOnly ) ) {
196 addressBook()->error( i18n( "Unable to open file '%1'." ).arg( mFileName ) ); 196 addressBook()->error( i18n( "Unable to open file '%1'." ).arg( mFileName ) );
197 return false; 197 return false;
198 } 198 }
199 199
200// qDebug("ResourceFile::load format %s, %s", mFileName.latin1(), mFormatName.latin1()); 200// qDebug("ResourceFile::load format %s, %s", mFileName.latin1(), mFormatName.latin1());
201 201
202 return mFormat->loadAll( addressBook(), this, &file ); 202 return mFormat->loadAll( addressBook(), this, &file );
203} 203}
204 204
205bool ResourceFile::save( Ticket *ticket ) 205bool ResourceFile::save( Ticket *ticket )
206{ 206{
207// qDebug("ResourceFile::save format %s, %s", mFileName.latin1(), mFormatName.latin1()); 207// qDebug("ResourceFile::save format %s, %s", mFileName.latin1(), mFormatName.latin1());
208 208
209 209
210 // create backup file 210 // create backup file
211 QString extension = "_" + QString::number( QDate::currentDate().dayOfWeek() ); 211 QString extension = "_" + QString::number( QDate::currentDate().dayOfWeek() );
212 212
213/*US we use a simpler method to create a backupfile 213/*US we use a simpler method to create a backupfile
214 214
215 (void) KSaveFile::backupFile( mFileName, QString::null 215 (void) KSaveFile::backupFile( mFileName, QString::null
216 ,extension ); 216 ,extension );
217 217
218 KSaveFile saveFile( mFileName ); 218 KSaveFile saveFile( mFileName );
219 bool ok = false; 219 bool ok = false;
220 if ( saveFile.status() == 0 && saveFile.file() ) 220 if ( saveFile.status() == 0 && saveFile.file() )
221 { 221 {
222 mFormat->saveAll( addressBook(), this, saveFile.file() ); 222 mFormat->saveAll( addressBook(), this, saveFile.file() );
223 ok = saveFile.close(); 223 ok = saveFile.close();
224 } 224 }
225*/ 225*/
226 226
227//US ToDo: write backupfile 227//US ToDo: write backupfile
228 mDirWatch.stopScan();
229
228 QFile info; 230 QFile info;
229 info.setName( mFileName ); 231 info.setName( mFileName );
230 bool ok = info.open( IO_WriteOnly ); 232 bool ok = info.open( IO_WriteOnly );
231 if ( ok ) { 233 if ( ok ) {
232 mFormat->saveAll( addressBook(), this, &info ); 234 mFormat->saveAll( addressBook(), this, &info );
233 235
234 info.close(); 236 info.close();
235 ok = true; 237 ok = true;
236 } 238 }
237 else { 239 else {
238 240
239 } 241 }
240 242
241 if ( !ok ) 243 if ( !ok )
242 addressBook()->error( i18n( "Unable to save file '%1'." ).arg( mFileName ) ); 244 addressBook()->error( i18n( "Unable to save file '%1'." ).arg( mFileName ) );
243 245
246 mDirWatch.startScan();
247
244 delete ticket; 248 delete ticket;
245 unlock( mFileName ); 249 unlock( mFileName );
246 250
247 return ok; 251 return ok;
248
249 qDebug("ResourceFile::save has to be changed");
250 return true;
251} 252}
252 253
253bool ResourceFile::lock( const QString &fileName ) 254bool ResourceFile::lock( const QString &fileName )
254{ 255{
255 256
256 257
257 QString fn = fileName; 258 QString fn = fileName;
258 259
259//US change the implementation how the lockfilename is getting created 260//US change the implementation how the lockfilename is getting created
260//US fn.replace( QRegExp("/"), "_" ); 261//US fn.replace( QRegExp("/"), "_" );
261//US QString lockName = locateLocal( "data", "kabc/lock/" + fn + ".lock" ); 262//US QString lockName = locateLocal( "data", "kabc/lock/" + fn + ".lock" );
262 263
263 KURL url(fn); 264 KURL url(fn);
264 QString lockName = locateLocal( "data", "kabc/lock/" + url.fileName() + ".lock" ); 265 QString lockName = locateLocal( "data", "kabc/lock/" + url.fileName() + ".lock" );
265 266
266 267
267 268
268 if (QFile::exists( lockName )) return false; 269 if (QFile::exists( lockName )) return false;
269 270
270 QString lockUniqueName; 271 QString lockUniqueName;
271 lockUniqueName = fn + KApplication::randomString( 8 ); 272 lockUniqueName = fn + KApplication::randomString( 8 );
272 273
273 url = lockUniqueName; 274 url = lockUniqueName;
274//US mLockUniqueName = locateLocal( "data", "kabc/lock/" + lockUniqueName ); 275//US mLockUniqueName = locateLocal( "data", "kabc/lock/" + lockUniqueName );
275 mLockUniqueName = locateLocal( "data", "kabc/lock/" + url.fileName() ); 276 mLockUniqueName = locateLocal( "data", "kabc/lock/" + url.fileName() );
276 kdDebug(5700) << "-- lock unique name: " << mLockUniqueName << endl; 277 kdDebug(5700) << "-- lock unique name: " << mLockUniqueName << endl;
277 278
278 // Create unique file 279 // Create unique file
279 QFile file( mLockUniqueName ); 280 QFile file( mLockUniqueName );
280 file.open( IO_WriteOnly ); 281 file.open( IO_WriteOnly );
281 file.close(); 282 file.close();
282 283
283 // Create lock file 284 // Create lock file
284 int result = 0; 285 int result = 0;
285#ifndef _WIN32_ 286#ifndef _WIN32_
286 result = ::link( QFile::encodeName( mLockUniqueName ), 287 result = ::link( QFile::encodeName( mLockUniqueName ),
287 QFile::encodeName( lockName ) ); 288 QFile::encodeName( lockName ) );
288#endif 289#endif
289 if ( result == 0 ) { 290 if ( result == 0 ) {
290 addressBook()->emitAddressBookLocked(); 291 addressBook()->emitAddressBookLocked();
291 return true; 292 return true;
292 } 293 }
293 294
294 // TODO: check stat 295 // TODO: check stat
295 296
296 return false; 297 return false;
297} 298}
298 299
diff --git a/kabc/plugins/opie/resourceopie.cpp b/kabc/plugins/opie/resourceopie.cpp
index 4b811e9..22237dc 100644
--- a/kabc/plugins/opie/resourceopie.cpp
+++ b/kabc/plugins/opie/resourceopie.cpp
@@ -166,120 +166,122 @@ void ResourceOpie::doClose()
166{ 166{
167 qDebug("ResourceOpie::doClose: %s", fileName().latin1()); 167 qDebug("ResourceOpie::doClose: %s", fileName().latin1());
168 168
169 if(mAccess) 169 if(mAccess)
170 { 170 {
171 delete mAccess; 171 delete mAccess;
172 mAccess = 0; 172 mAccess = 0;
173 } 173 }
174 // it seems so, that deletion of access deletes backend as well 174 // it seems so, that deletion of access deletes backend as well
175 //delete backend; 175 //delete backend;
176 176
177 return; 177 return;
178 178
179} 179}
180 180
181 181
182bool ResourceOpie::load() 182bool ResourceOpie::load()
183{ 183{
184 qDebug("ResourceOpie::load: %s", fileName().latin1()); 184 qDebug("ResourceOpie::load: %s", fileName().latin1());
185 185
186 bool res = false; 186 bool res = false;
187 187
188 OContactAccess::List::Iterator it; 188 OContactAccess::List::Iterator it;
189 OContactAccess::List allList = mAccess->allRecords(); 189 OContactAccess::List allList = mAccess->allRecords();
190 for ( it = allList.begin(); it != allList.end(); ++it ) 190 for ( it = allList.begin(); it != allList.end(); ++it )
191 { 191 {
192 const OContact c = (*it); 192 const OContact c = (*it);
193 193
194 KABC::Addressee addressee; 194 KABC::Addressee addressee;
195 195
196 res = mConverter->opieToAddressee( c, addressee ); 196 res = mConverter->opieToAddressee( c, addressee );
197 197
198 if ( !addressee.isEmpty() && res ) 198 if ( !addressee.isEmpty() && res )
199 { 199 {
200 addressee.setResource( this ); 200 addressee.setResource( this );
201 addressBook()->insertAddressee( addressee ); 201 addressBook()->insertAddressee( addressee );
202 } 202 }
203 203
204 } 204 }
205 205
206 206
207 return true; 207 return true;
208} 208}
209 209
210bool ResourceOpie::save( Ticket *ticket ) 210bool ResourceOpie::save( Ticket *ticket )
211{ 211{
212 qDebug("ResourceOpie::save: %s", fileName().latin1()); 212 qDebug("ResourceOpie::save: %s", fileName().latin1());
213 213
214 214 mDirWatch.stopScan();
215 215
216 KABC::AddressBook::Iterator it; 216 KABC::AddressBook::Iterator it;
217 bool res; 217 bool res;
218 218
219 for ( it = addressBook()->begin(); it != addressBook()->end(); ++it ) { 219 for ( it = addressBook()->begin(); it != addressBook()->end(); ++it ) {
220 OContact c; 220 OContact c;
221 KABC::Addressee addressee = (*it); 221 KABC::Addressee addressee = (*it);
222 222
223 res = mConverter->addresseeToOpie( *it, c ); 223 res = mConverter->addresseeToOpie( *it, c );
224 if (res == true) 224 if (res == true)
225 { 225 {
226 res = mAccess->add(c); 226 res = mAccess->add(c);
227 if (res == false) 227 if (res == false)
228 qDebug("Unable to append Contact %s", c.fullName().latin1()); 228 qDebug("Unable to append Contact %s", c.fullName().latin1());
229 } 229 }
230 else 230 else
231 { 231 {
232 qDebug("Unable to convert Addressee %s", addressee.formattedName().latin1()); 232 qDebug("Unable to convert Addressee %s", addressee.formattedName().latin1());
233 } 233 }
234 } 234 }
235 235
236 mAccess->save(); 236 mAccess->save();
237 237
238 mDirWatch.startScan();
239
238 delete ticket; 240 delete ticket;
239 unlock( fileName() ); 241 unlock( fileName() );
240 242
241 return true; 243 return true;
242 244
243} 245}
244 246
245bool ResourceOpie::lock( const QString &lockfileName ) 247bool ResourceOpie::lock( const QString &lockfileName )
246{ 248{
247 qDebug("ResourceOpie::lock: %s", fileName().latin1()); 249 qDebug("ResourceOpie::lock: %s", fileName().latin1());
248 250
249 kdDebug(5700) << "ResourceOpie::lock()" << endl; 251 kdDebug(5700) << "ResourceOpie::lock()" << endl;
250 252
251 QString fn = lockfileName; 253 QString fn = lockfileName;
252 254
253 KURL url(fn); 255 KURL url(fn);
254 QString lockName = locateLocal( "data", "kabc/lock/" + url.fileName() + ".lock" ); 256 QString lockName = locateLocal( "data", "kabc/lock/" + url.fileName() + ".lock" );
255 257
256 kdDebug(5700) << "-- lock name: " << lockName << endl; 258 kdDebug(5700) << "-- lock name: " << lockName << endl;
257 259
258 if (QFile::exists( lockName )) 260 if (QFile::exists( lockName ))
259 { 261 {
260 qDebug("ResourceOpie::lock: lockfile %s already exists. (Delete it before continuing if nobody else is accessing the resourcefile %s)", lockName.latin1(), fileName().latin1()); 262 qDebug("ResourceOpie::lock: lockfile %s already exists. (Delete it before continuing if nobody else is accessing the resourcefile %s)", lockName.latin1(), fileName().latin1());
261 return false; 263 return false;
262 } 264 }
263 265
264 QString lockUniqueName; 266 QString lockUniqueName;
265 lockUniqueName = fn + KApplication::randomString( 8 ); 267 lockUniqueName = fn + KApplication::randomString( 8 );
266 268
267 url = lockUniqueName; 269 url = lockUniqueName;
268//US mLockUniqueName = locateLocal( "data", "kabc/lock/" + lockUniqueName ); 270//US mLockUniqueName = locateLocal( "data", "kabc/lock/" + lockUniqueName );
269 mLockUniqueName = locateLocal( "data", "kabc/lock/" + url.fileName() ); 271 mLockUniqueName = locateLocal( "data", "kabc/lock/" + url.fileName() );
270 kdDebug(5700) << "-- lock unique name: " << mLockUniqueName << endl; 272 kdDebug(5700) << "-- lock unique name: " << mLockUniqueName << endl;
271 273
272 // Create unique file 274 // Create unique file
273 QFile file( mLockUniqueName ); 275 QFile file( mLockUniqueName );
274 file.open( IO_WriteOnly ); 276 file.open( IO_WriteOnly );
275 file.close(); 277 file.close();
276 278
277 // Create lock file 279 // Create lock file
278 int result = 0; 280 int result = 0;
279#ifndef _WIN32_ 281#ifndef _WIN32_
280 result = ::link( QFile::encodeName( mLockUniqueName ), 282 result = ::link( QFile::encodeName( mLockUniqueName ),
281 QFile::encodeName( lockName ) ); 283 QFile::encodeName( lockName ) );
282#endif 284#endif
283 if ( result == 0 ) { 285 if ( result == 0 ) {
284 addressBook()->emitAddressBookLocked(); 286 addressBook()->emitAddressBookLocked();
285 return true; 287 return true;
diff --git a/kabc/plugins/qtopia/resourceqtopia.cpp b/kabc/plugins/qtopia/resourceqtopia.cpp
index 93a4d33..48a9f22 100644
--- a/kabc/plugins/qtopia/resourceqtopia.cpp
+++ b/kabc/plugins/qtopia/resourceqtopia.cpp
@@ -146,119 +146,122 @@ bool ResourceQtopia::doOpen()
146 return true; 146 return true;
147} 147}
148 148
149void ResourceQtopia::doClose() 149void ResourceQtopia::doClose()
150{ 150{
151 qDebug("ResourceQtopia::doClose: %s", fileName().latin1()); 151 qDebug("ResourceQtopia::doClose: %s", fileName().latin1());
152 152
153 if(mAccess) 153 if(mAccess)
154 { 154 {
155 delete mAccess; 155 delete mAccess;
156 mAccess = 0; 156 mAccess = 0;
157 } 157 }
158 // it seems so, that deletion of access deletes backend as well 158 // it seems so, that deletion of access deletes backend as well
159 //delete backend; 159 //delete backend;
160 160
161 return; 161 return;
162} 162}
163 163
164bool ResourceQtopia::load() 164bool ResourceQtopia::load()
165{ 165{
166 qDebug("ResourceQtopia::load: %s", fileName().latin1()); 166 qDebug("ResourceQtopia::load: %s", fileName().latin1());
167 167
168 AddressBookIterator it(*mAccess); 168 AddressBookIterator it(*mAccess);
169 const PimContact* contact; 169 const PimContact* contact;
170 bool res; 170 bool res;
171 171
172 for (contact=it.toFirst(); it.current(); ++it) 172 for (contact=it.toFirst(); it.current(); ++it)
173 { 173 {
174 contact = it.current(); 174 contact = it.current();
175 175
176 KABC::Addressee addressee; 176 KABC::Addressee addressee;
177 177
178 res = mConverter->qtopiaToAddressee( (*contact), addressee ); 178 res = mConverter->qtopiaToAddressee( (*contact), addressee );
179 179
180 if ( !addressee.isEmpty() && res ) 180 if ( !addressee.isEmpty() && res )
181 { 181 {
182 addressee.setResource( this ); 182 addressee.setResource( this );
183 addressBook()->insertAddressee( addressee ); 183 addressBook()->insertAddressee( addressee );
184 } 184 }
185 } 185 }
186 186
187 return true; 187 return true;
188} 188}
189 189
190bool ResourceQtopia::save( Ticket *ticket ) 190bool ResourceQtopia::save( Ticket *ticket )
191{ 191{
192 qDebug("ResourceQtopia::save: %s", fileName().latin1()); 192 qDebug("ResourceQtopia::save: %s", fileName().latin1());
193 193
194 mDirWatch.stopScan();
194 195
195 KABC::AddressBook::Iterator it; 196 KABC::AddressBook::Iterator it;
196 bool res; 197 bool res;
197 198
198 for ( it = addressBook()->begin(); it != addressBook()->end(); ++it ) { 199 for ( it = addressBook()->begin(); it != addressBook()->end(); ++it ) {
199 PimContact c; 200 PimContact c;
200 KABC::Addressee addressee = (*it); 201 KABC::Addressee addressee = (*it);
201 202
202 res = mConverter->addresseeToQtopia( *it, c ); 203 res = mConverter->addresseeToQtopia( *it, c );
203 if (res == true) 204 if (res == true)
204 { 205 {
205 mAccess->addContact(c); 206 mAccess->addContact(c);
206// if (res == false) 207// if (res == false)
207// qDebug("Unable to append Contact %s", c.fullName().latin1()); 208// qDebug("Unable to append Contact %s", c.fullName().latin1());
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 } 213 }
213 } 214 }
214 215
215// mAccess->addressBookUpdated(); 216// mAccess->addressBookUpdated();
216 217
218 mDirWatch.startScan();
219
217 delete ticket; 220 delete ticket;
218 unlock( fileName() ); 221 unlock( fileName() );
219 222
220 return true; 223 return true;
221} 224}
222 225
223bool ResourceQtopia::lock( const QString &lockfileName ) 226bool ResourceQtopia::lock( const QString &lockfileName )
224{ 227{
225 qDebug("ResourceQtopia::lock: %s", fileName().latin1()); 228 qDebug("ResourceQtopia::lock: %s", fileName().latin1());
226 229
227 kdDebug(5700) << "ResourceQtopia::lock()" << endl; 230 kdDebug(5700) << "ResourceQtopia::lock()" << endl;
228 231
229 QString fn = lockfileName; 232 QString fn = lockfileName;
230 233
231 KURL url(fn); 234 KURL url(fn);
232 QString lockName = locateLocal( "data", "kabc/lock/" + url.fileName() + ".lock" ); 235 QString lockName = locateLocal( "data", "kabc/lock/" + url.fileName() + ".lock" );
233 236
234 kdDebug(5700) << "-- lock name: " << lockName << endl; 237 kdDebug(5700) << "-- lock name: " << lockName << endl;
235 238
236 if (QFile::exists( lockName )) 239 if (QFile::exists( lockName ))
237 { 240 {
238 qDebug("ResourceOpie::lock: lockfile %s already exists. (Delete it before continuing if nobody else is accessing the resourcefile %s)", lockName.latin1(), fileName().latin1()); 241 qDebug("ResourceOpie::lock: lockfile %s already exists. (Delete it before continuing if nobody else is accessing the resourcefile %s)", lockName.latin1(), fileName().latin1());
239 return false; 242 return false;
240 } 243 }
241 244
242 QString lockUniqueName; 245 QString lockUniqueName;
243 lockUniqueName = fn + KApplication::randomString( 8 ); 246 lockUniqueName = fn + KApplication::randomString( 8 );
244 247
245 url = lockUniqueName; 248 url = lockUniqueName;
246//US mLockUniqueName = locateLocal( "data", "kabc/lock/" + lockUniqueName ); 249//US mLockUniqueName = locateLocal( "data", "kabc/lock/" + lockUniqueName );
247 mLockUniqueName = locateLocal( "data", "kabc/lock/" + url.fileName() ); 250 mLockUniqueName = locateLocal( "data", "kabc/lock/" + url.fileName() );
248 kdDebug(5700) << "-- lock unique name: " << mLockUniqueName << endl; 251 kdDebug(5700) << "-- lock unique name: " << mLockUniqueName << endl;
249 252
250 // Create unique file 253 // Create unique file
251 QFile file( mLockUniqueName ); 254 QFile file( mLockUniqueName );
252 file.open( IO_WriteOnly ); 255 file.open( IO_WriteOnly );
253 file.close(); 256 file.close();
254 257
255 // Create lock file 258 // Create lock file
256 int result = 0; 259 int result = 0;
257#ifndef _WIN32_ 260#ifndef _WIN32_
258 result = ::link( QFile::encodeName( mLockUniqueName ), 261 result = ::link( QFile::encodeName( mLockUniqueName ),
259 QFile::encodeName( lockName ) ); 262 QFile::encodeName( lockName ) );
260#endif 263#endif
261 if ( result == 0 ) { 264 if ( result == 0 ) {
262 addressBook()->emitAddressBookLocked(); 265 addressBook()->emitAddressBookLocked();
263 return true; 266 return true;
264 } 267 }
diff --git a/kabc/plugins/sharpdtm/resourcesharpdtm.cpp b/kabc/plugins/sharpdtm/resourcesharpdtm.cpp
index b63df0c..8a795e9 100644
--- a/kabc/plugins/sharpdtm/resourcesharpdtm.cpp
+++ b/kabc/plugins/sharpdtm/resourcesharpdtm.cpp
@@ -152,129 +152,131 @@ bool ResourceSharpDTM::doOpen()
152 return true; 152 return true;
153} 153}
154 154
155void ResourceSharpDTM::doClose() 155void ResourceSharpDTM::doClose()
156{ 156{
157 qDebug("ResourceSharpDTM::doClose: %s", fileName().latin1()); 157 qDebug("ResourceSharpDTM::doClose: %s", fileName().latin1());
158 158
159 if(mAccess) 159 if(mAccess)
160 { 160 {
161 delete mAccess; 161 delete mAccess;
162 mAccess = 0; 162 mAccess = 0;
163 } 163 }
164 // it seems so, that deletion of access deletes backend as well 164 // it seems so, that deletion of access deletes backend as well
165 //delete backend; 165 //delete backend;
166 166
167 return; 167 return;
168} 168}
169 169
170bool ResourceSharpDTM::load() 170bool ResourceSharpDTM::load()
171{ 171{
172 qDebug("ResourceSharpDTM::load: %s", fileName().latin1()); 172 qDebug("ResourceSharpDTM::load: %s", fileName().latin1());
173 173
174 bool res = false; 174 bool res = false;
175 175
176 CardId id; 176 CardId id;
177 177
178 for (bool res=mAccess->first(); res == true; res=mAccess->next()) 178 for (bool res=mAccess->first(); res == true; res=mAccess->next())
179 { 179 {
180 id = mAccess->cardId(); 180 id = mAccess->cardId();
181 181
182 KABC::Addressee addressee; 182 KABC::Addressee addressee;
183 183
184 res = mConverter->sharpToAddressee( id, mAccess, addressee ); 184 res = mConverter->sharpToAddressee( id, mAccess, addressee );
185 185
186 if ( !addressee.isEmpty() && res ) 186 if ( !addressee.isEmpty() && res )
187 { 187 {
188 addressee.setResource( this ); 188 addressee.setResource( this );
189 addressBook()->insertAddressee( addressee ); 189 addressBook()->insertAddressee( addressee );
190 } 190 }
191 } 191 }
192 192
193 return true; 193 return true;
194} 194}
195 195
196bool ResourceSharpDTM::save( Ticket *ticket ) 196bool ResourceSharpDTM::save( Ticket *ticket )
197{ 197{
198 qDebug("ResourceSharpDTM::save: %s", fileName().latin1()); 198 qDebug("ResourceSharpDTM::save: %s", fileName().latin1());
199 199
200 mDirWatch.stopScan();
200 201
201 KABC::AddressBook::Iterator it; 202 KABC::AddressBook::Iterator it;
202 bool res; 203 bool res;
203 204
204 for ( it = addressBook()->begin(); it != addressBook()->end(); ++it ) { 205 for ( it = addressBook()->begin(); it != addressBook()->end(); ++it ) {
205 CardId id = 0;// 0 means new card 206 CardId id = 0;// 0 means new card
206 KABC::Addressee addressee = (*it); 207 KABC::Addressee addressee = (*it);
207 208
208 res = mAccess->startEditCard(id); 209 res = mAccess->startEditCard(id);
209 if (res == true) 210 if (res == true)
210 { 211 {
211 res = mConverter->addresseeToSharp( *it, mAccess, id ); 212 res = mConverter->addresseeToSharp( *it, mAccess, id );
212 if (res == true) 213 if (res == true)
213 { 214 {
214 res = mAccess->finishEditCard(&id); 215 res = mAccess->finishEditCard(&id);
215 if (res == false) 216 if (res == false)
216 qDebug("Unable to append Contact: %s", addressee.formattedName().latin1()); 217 qDebug("Unable to append Contact: %s", addressee.formattedName().latin1());
217 } 218 }
218 else 219 else
219 { 220 {
220 qDebug("Unable to convert Addressee: %s", addressee.formattedName().latin1()); 221 qDebug("Unable to convert Addressee: %s", addressee.formattedName().latin1());
221 mAccess->cancelEditCard(); 222 mAccess->cancelEditCard();
222 } 223 }
223 } 224 }
224 else 225 else
225 { 226 {
226 qDebug("Unable to add new card. Addressee: %s", addressee.formattedName().latin1()); 227 qDebug("Unable to add new card. Addressee: %s", addressee.formattedName().latin1());
227 } 228 }
228 229
229 } 230 }
230 231
231//US mAccess->save(); 232//US mAccess->save();
232 233
234 mDirWatch.startScan();
233 delete ticket; 235 delete ticket;
234 unlock( fileName() ); 236 unlock( fileName() );
235 237
236 return true; 238 return true;
237} 239}
238 240
239bool ResourceSharpDTM::lock( const QString &lockfileName ) 241bool ResourceSharpDTM::lock( const QString &lockfileName )
240{ 242{
241 qDebug("ResourceSharpDTM::lock: %s", fileName().latin1()); 243 qDebug("ResourceSharpDTM::lock: %s", fileName().latin1());
242 244
243 kdDebug(5700) << "ResourceSharpDTM::lock()" << endl; 245 kdDebug(5700) << "ResourceSharpDTM::lock()" << endl;
244 246
245 QString fn = lockfileName; 247 QString fn = lockfileName;
246 248
247 KURL url(fn); 249 KURL url(fn);
248 QString lockName = locateLocal( "data", "kabc/lock/" + url.fileName() + ".lock" ); 250 QString lockName = locateLocal( "data", "kabc/lock/" + url.fileName() + ".lock" );
249 251
250 kdDebug(5700) << "-- lock name: " << lockName << endl; 252 kdDebug(5700) << "-- lock name: " << lockName << endl;
251 253
252 if (QFile::exists( lockName )) 254 if (QFile::exists( lockName ))
253 { 255 {
254 qDebug("ResourceSharpDTM::lock: lockfile %s already exists. (Delete it before continuing if nobody else is accessing the resourcefile %s)", lockName.latin1(), fileName()); 256 qDebug("ResourceSharpDTM::lock: lockfile %s already exists. (Delete it before continuing if nobody else is accessing the resourcefile %s)", lockName.latin1(), fileName());
255 return false; 257 return false;
256 } 258 }
257 259
258 260
259 QString lockUniqueName; 261 QString lockUniqueName;
260 lockUniqueName = fn + KApplication::randomString( 8 ); 262 lockUniqueName = fn + KApplication::randomString( 8 );
261 263
262 url = lockUniqueName; 264 url = lockUniqueName;
263//US mLockUniqueName = locateLocal( "data", "kabc/lock/" + lockUniqueName ); 265//US mLockUniqueName = locateLocal( "data", "kabc/lock/" + lockUniqueName );
264 mLockUniqueName = locateLocal( "data", "kabc/lock/" + url.fileName() ); 266 mLockUniqueName = locateLocal( "data", "kabc/lock/" + url.fileName() );
265 kdDebug(5700) << "-- lock unique name: " << mLockUniqueName << endl; 267 kdDebug(5700) << "-- lock unique name: " << mLockUniqueName << endl;
266 268
267 // Create unique file 269 // Create unique file
268 QFile file( mLockUniqueName ); 270 QFile file( mLockUniqueName );
269 file.open( IO_WriteOnly ); 271 file.open( IO_WriteOnly );
270 file.close(); 272 file.close();
271 273
272 // Create lock file 274 // Create lock file
273 int result = 0; 275 int result = 0;
274#ifndef _WIN32_ 276#ifndef _WIN32_
275 result = ::link( QFile::encodeName( mLockUniqueName ), 277 result = ::link( QFile::encodeName( mLockUniqueName ),
276 QFile::encodeName( lockName ) ); 278 QFile::encodeName( lockName ) );
277#endif 279#endif
278 if ( result == 0 ) { 280 if ( result == 0 ) {
279 addressBook()->emitAddressBookLocked(); 281 addressBook()->emitAddressBookLocked();
280 return true; 282 return true;