summaryrefslogtreecommitdiffabout
path: root/kabc/plugins/qtopia/resourceqtopia.cpp
authorulf69 <ulf69>2004-08-03 20:49:15 (UTC)
committer ulf69 <ulf69>2004-08-03 20:49:15 (UTC)
commitbe52d7d03e57620919b23cb0cbb33ac22d0920e0 (patch) (side-by-side diff)
tree34e8e29a221c828424126694f865d702c7635f97 /kabc/plugins/qtopia/resourceqtopia.cpp
parentd5358380edce9a2c39f3eea4df741a148338880c (diff)
downloadkdepimpi-be52d7d03e57620919b23cb0cbb33ac22d0920e0.zip
kdepimpi-be52d7d03e57620919b23cb0cbb33ac22d0920e0.tar.gz
kdepimpi-be52d7d03e57620919b23cb0cbb33ac22d0920e0.tar.bz2
hopefully last modifications of resource based export/import functionality
for opie, qtopia and sharpdtm
Diffstat (limited to 'kabc/plugins/qtopia/resourceqtopia.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--kabc/plugins/qtopia/resourceqtopia.cpp49
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
@@ -140,219 +140,180 @@ bool ResourceQtopia::doOpen()
delete mAccess;
mAccess = 0;
return false;
}
}
return true;
}
void ResourceQtopia::doClose()
{
qDebug("ResourceQtopia::doClose: %s", fileName().latin1());
if(mAccess)
{
delete mAccess;
mAccess = 0;
}
// it seems so, that deletion of access deletes backend as well
//delete backend;
return;
}
bool ResourceQtopia::load()
{
qDebug("ResourceQtopia::load: %s", fileName().latin1());
AddressBookIterator it(*mAccess);
const PimContact* contact;
bool res;
for (contact=it.toFirst(); it.current(); ++it)
{
contact = it.current();
KABC::Addressee addressee;
res = mConverter->qtopiaToAddressee( (*contact), addressee );
if ( !addressee.isEmpty() && res )
{
addressee.setResource( this );
addressBook()->insertAddressee( addressee );
}
}
return true;
}
bool ResourceQtopia::save( Ticket *ticket )
{
qDebug("ResourceQtopia::save: %s", fileName().latin1());
KABC::AddressBook::Iterator it;
bool res;
for ( it = addressBook()->begin(); it != addressBook()->end(); ++it ) {
PimContact c;
KABC::Addressee addressee = (*it);
res = mConverter->addresseeToQtopia( *it, c );
if (res == true)
{
mAccess->addContact(c);
// if (res == false)
// qDebug("Unable to append Contact %s", c.fullName().latin1());
}
else
{
qDebug("Unable to convert Addressee %s", addressee.formattedName().latin1());
}
}
// mAccess->addressBookUpdated();
delete ticket;
unlock( fileName() );
return true;
}
bool ResourceQtopia::lock( const QString &lockfileName )
{
qDebug("ResourceQtopia::lock: %s", fileName().latin1());
kdDebug(5700) << "ResourceQtopia::lock()" << endl;
QString fn = lockfileName;
KURL url(fn);
QString lockName = locateLocal( "data", "kabc/lock/" + url.fileName() + ".lock" );
kdDebug(5700) << "-- lock name: " << lockName << endl;
- if (QFile::exists( lockName )) return false;
+ if (QFile::exists( lockName ))
+ {
+ qDebug("ResourceOpie::lock: lockfile %s already exists. (Delete it before continuing if nobody else is accessing the resourcefile %s)", lockName.latin1(), fileName());
+ return false;
+ }
QString lockUniqueName;
lockUniqueName = fn + KApplication::randomString( 8 );
url = lockUniqueName;
//US mLockUniqueName = locateLocal( "data", "kabc/lock/" + lockUniqueName );
mLockUniqueName = locateLocal( "data", "kabc/lock/" + url.fileName() );
kdDebug(5700) << "-- lock unique name: " << mLockUniqueName << endl;
// Create unique file
QFile file( mLockUniqueName );
file.open( IO_WriteOnly );
file.close();
// Create lock file
int result = 0;
#ifndef _WIN32_
result = ::link( QFile::encodeName( mLockUniqueName ),
QFile::encodeName( lockName ) );
#endif
if ( result == 0 ) {
addressBook()->emitAddressBookLocked();
return true;
}
// TODO: check stat
return false;
}
void ResourceQtopia::unlock( const QString &fileName )
{
qDebug("ResourceQtopia::unlock() %s", fileName.latin1());
QString fn = fileName;
KURL url(fn);
QString lockName = locateLocal( "data", "kabc/lock/" + url.fileName() + ".lock" );
QFile::remove( lockName );
QFile::remove( mLockUniqueName );
addressBook()->emitAddressBookUnlocked();
}
void ResourceQtopia::setFileName( const QString &newFileName )
{
mDirWatch.stopScan();
mDirWatch.removeFile( fileName() );
Resource::setFileName( newFileName );
mDirWatch.addFile( fileName() );
mDirWatch.startScan();
}
void ResourceQtopia::fileChanged()
{
// There is a small theoretical chance that KDirWatch calls us before
// we are fully constructed
if (!addressBook())
return;
QString text( i18n( "Qtopia resource '%1'<br> has been changed by third party.<br>Do you want to reload?").arg( fileName() ) );
if ( readOnly() || KMessageBox::questionYesNo( 0, text ) == KMessageBox::Yes ) {
load();
addressBook()->emitAddressBookChanged();
}
}
void ResourceQtopia::removeAddressee( const Addressee &addr )
{
}
void ResourceQtopia::cleanUp()
{
unlock( fileName() );
}
-
-
-/**
- * This method returns the number of elements that are currently in the resource.
- */
-int ResourceQtopia::count() const
-{
- if (mAccess != 0)
- {
- int counter = 0;
- AddressBookIterator it2(*mAccess);
- for (it2.toFirst(); it2.current(); ++it2) {
- counter++;
- }
-
- return counter;
- }
- else
- return 0;
-}
-
-
-/**
- * This method removes all elements from the resource!! (Not from the addressbook)
- */
-bool ResourceQtopia::clear()
-{
- if (mAccess != 0)
- {
- AddressBookIterator it2(*mAccess);
- for (it2.toFirst(); it2.current(); ++it2) {
- mAccess->removeContact(*it2.current());
- }
- return true;
- }
- else
- return false;
-}
-
-
-
-
-
//US #include "resourceqtopia.moc"