Diffstat (limited to 'kabc/plugins/qtopia/resourceqtopia.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r-- | kabc/plugins/qtopia/resourceqtopia.cpp | 49 |
1 files changed, 5 insertions, 44 deletions
diff --git a/kabc/plugins/qtopia/resourceqtopia.cpp b/kabc/plugins/qtopia/resourceqtopia.cpp index 4a35f19..242e0c6 100644 --- a/kabc/plugins/qtopia/resourceqtopia.cpp +++ b/kabc/plugins/qtopia/resourceqtopia.cpp | |||
@@ -212,49 +212,53 @@ bool ResourceQtopia::save( Ticket *ticket ) | |||
212 | } | 212 | } |
213 | } | 213 | } |
214 | 214 | ||
215 | // mAccess->addressBookUpdated(); | 215 | // mAccess->addressBookUpdated(); |
216 | 216 | ||
217 | delete ticket; | 217 | delete ticket; |
218 | unlock( fileName() ); | 218 | unlock( fileName() ); |
219 | 219 | ||
220 | return true; | 220 | return true; |
221 | } | 221 | } |
222 | 222 | ||
223 | bool ResourceQtopia::lock( const QString &lockfileName ) | 223 | bool ResourceQtopia::lock( const QString &lockfileName ) |
224 | { | 224 | { |
225 | qDebug("ResourceQtopia::lock: %s", fileName().latin1()); | 225 | qDebug("ResourceQtopia::lock: %s", fileName().latin1()); |
226 | 226 | ||
227 | kdDebug(5700) << "ResourceQtopia::lock()" << endl; | 227 | kdDebug(5700) << "ResourceQtopia::lock()" << endl; |
228 | 228 | ||
229 | QString fn = lockfileName; | 229 | QString fn = lockfileName; |
230 | 230 | ||
231 | KURL url(fn); | 231 | KURL url(fn); |
232 | QString lockName = locateLocal( "data", "kabc/lock/" + url.fileName() + ".lock" ); | 232 | QString lockName = locateLocal( "data", "kabc/lock/" + url.fileName() + ".lock" ); |
233 | 233 | ||
234 | kdDebug(5700) << "-- lock name: " << lockName << endl; | 234 | kdDebug(5700) << "-- lock name: " << lockName << endl; |
235 | 235 | ||
236 | if (QFile::exists( lockName )) return false; | 236 | if (QFile::exists( lockName )) |
237 | { | ||
238 | qDebug("ResourceOpie::lock: lockfile %s already exists. (Delete it before continuing if nobody else is accessing the resourcefile %s)", lockName.latin1(), fileName()); | ||
239 | return false; | ||
240 | } | ||
237 | 241 | ||
238 | QString lockUniqueName; | 242 | QString lockUniqueName; |
239 | lockUniqueName = fn + KApplication::randomString( 8 ); | 243 | lockUniqueName = fn + KApplication::randomString( 8 ); |
240 | 244 | ||
241 | url = lockUniqueName; | 245 | url = lockUniqueName; |
242 | //US mLockUniqueName = locateLocal( "data", "kabc/lock/" + lockUniqueName ); | 246 | //US mLockUniqueName = locateLocal( "data", "kabc/lock/" + lockUniqueName ); |
243 | mLockUniqueName = locateLocal( "data", "kabc/lock/" + url.fileName() ); | 247 | mLockUniqueName = locateLocal( "data", "kabc/lock/" + url.fileName() ); |
244 | kdDebug(5700) << "-- lock unique name: " << mLockUniqueName << endl; | 248 | kdDebug(5700) << "-- lock unique name: " << mLockUniqueName << endl; |
245 | 249 | ||
246 | // Create unique file | 250 | // Create unique file |
247 | QFile file( mLockUniqueName ); | 251 | QFile file( mLockUniqueName ); |
248 | file.open( IO_WriteOnly ); | 252 | file.open( IO_WriteOnly ); |
249 | file.close(); | 253 | file.close(); |
250 | 254 | ||
251 | // Create lock file | 255 | // Create lock file |
252 | int result = 0; | 256 | int result = 0; |
253 | #ifndef _WIN32_ | 257 | #ifndef _WIN32_ |
254 | result = ::link( QFile::encodeName( mLockUniqueName ), | 258 | result = ::link( QFile::encodeName( mLockUniqueName ), |
255 | QFile::encodeName( lockName ) ); | 259 | QFile::encodeName( lockName ) ); |
256 | #endif | 260 | #endif |
257 | if ( result == 0 ) { | 261 | if ( result == 0 ) { |
258 | addressBook()->emitAddressBookLocked(); | 262 | addressBook()->emitAddressBookLocked(); |
259 | return true; | 263 | return true; |
260 | } | 264 | } |
@@ -291,68 +295,25 @@ void ResourceQtopia::setFileName( const QString &newFileName ) | |||
291 | 295 | ||
292 | void ResourceQtopia::fileChanged() | 296 | void ResourceQtopia::fileChanged() |
293 | { | 297 | { |
294 | // There is a small theoretical chance that KDirWatch calls us before | 298 | // There is a small theoretical chance that KDirWatch calls us before |
295 | // we are fully constructed | 299 | // we are fully constructed |
296 | if (!addressBook()) | 300 | if (!addressBook()) |
297 | return; | 301 | return; |
298 | 302 | ||
299 | QString text( i18n( "Qtopia resource '%1'<br> has been changed by third party.<br>Do you want to reload?").arg( fileName() ) ); | 303 | QString text( i18n( "Qtopia resource '%1'<br> has been changed by third party.<br>Do you want to reload?").arg( fileName() ) ); |
300 | if ( readOnly() || KMessageBox::questionYesNo( 0, text ) == KMessageBox::Yes ) { | 304 | if ( readOnly() || KMessageBox::questionYesNo( 0, text ) == KMessageBox::Yes ) { |
301 | load(); | 305 | load(); |
302 | addressBook()->emitAddressBookChanged(); | 306 | addressBook()->emitAddressBookChanged(); |
303 | } | 307 | } |
304 | } | 308 | } |
305 | 309 | ||
306 | void ResourceQtopia::removeAddressee( const Addressee &addr ) | 310 | void ResourceQtopia::removeAddressee( const Addressee &addr ) |
307 | { | 311 | { |
308 | } | 312 | } |
309 | 313 | ||
310 | void ResourceQtopia::cleanUp() | 314 | void ResourceQtopia::cleanUp() |
311 | { | 315 | { |
312 | unlock( fileName() ); | 316 | unlock( fileName() ); |
313 | } | 317 | } |
314 | 318 | ||
315 | |||
316 | |||
317 | /** | ||
318 | * This method returns the number of elements that are currently in the resource. | ||
319 | */ | ||
320 | int ResourceQtopia::count() const | ||
321 | { | ||
322 | if (mAccess != 0) | ||
323 | { | ||
324 | int counter = 0; | ||
325 | AddressBookIterator it2(*mAccess); | ||
326 | for (it2.toFirst(); it2.current(); ++it2) { | ||
327 | counter++; | ||
328 | } | ||
329 | |||
330 | return counter; | ||
331 | } | ||
332 | else | ||
333 | return 0; | ||
334 | } | ||
335 | |||
336 | |||
337 | /** | ||
338 | * This method removes all elements from the resource!! (Not from the addressbook) | ||
339 | */ | ||
340 | bool ResourceQtopia::clear() | ||
341 | { | ||
342 | if (mAccess != 0) | ||
343 | { | ||
344 | AddressBookIterator it2(*mAccess); | ||
345 | for (it2.toFirst(); it2.current(); ++it2) { | ||
346 | mAccess->removeContact(*it2.current()); | ||
347 | } | ||
348 | return true; | ||
349 | } | ||
350 | else | ||
351 | return false; | ||
352 | } | ||
353 | |||
354 | |||
355 | |||
356 | |||
357 | |||
358 | //US #include "resourceqtopia.moc" | 319 | //US #include "resourceqtopia.moc" |