summaryrefslogtreecommitdiffabout
path: root/kabc/plugins/qtopia
Side-by-side diff
Diffstat (limited to 'kabc/plugins/qtopia') (more/less context) (show whitespace changes)
-rw-r--r--kabc/plugins/qtopia/qtopiaE.pro2
-rw-r--r--kabc/plugins/qtopia/resourceqtopia.cpp166
-rw-r--r--kabc/plugins/qtopia/resourceqtopia.h31
3 files changed, 115 insertions, 84 deletions
diff --git a/kabc/plugins/qtopia/qtopiaE.pro b/kabc/plugins/qtopia/qtopiaE.pro
index 56eae87..d956519 100644
--- a/kabc/plugins/qtopia/qtopiaE.pro
+++ b/kabc/plugins/qtopia/qtopiaE.pro
@@ -1,12 +1,12 @@
TEMPLATE = lib
CONFIG += qt warn_on
TARGET = microkabc_qtopia
-INCLUDEPATH += ../.. ../../../microkde ../../../microkde/kdecore ../../../microkde/kio/kfile ../../../microkde/kio/kio ../../../qtcompat $(QPEDIR)/include
+INCLUDEPATH += ../.. ../../../microkde ../../../microkde/kdecore ../../../microkde/kio/kfile ../../../microkde/kio/kio ../../../microkde/kresources ../../../qtcompat $(QPEDIR)/include
OBJECTS_DIR = obj/$(PLATFORM)
MOC_DIR = moc/$(PLATFORM)
DESTDIR = $(QPEDIR)/lib
LIBS += -lmicrokde
LIBS += -lmicrokabc
diff --git a/kabc/plugins/qtopia/resourceqtopia.cpp b/kabc/plugins/qtopia/resourceqtopia.cpp
index 7e10e46..dc88272 100644
--- a/kabc/plugins/qtopia/resourceqtopia.cpp
+++ b/kabc/plugins/qtopia/resourceqtopia.cpp
@@ -46,35 +46,36 @@ $Id$
#include "resourceqtopiaconfig.h"
#include "stdaddressbook.h"
#include "qtopiaconverter.h"
+#include "syncwidget.h"
#include "resourceqtopia.h"
using namespace KABC;
extern "C"
{
void *init_microkabc_qtopia()
{
- return new KRES::PluginFactory<ResourceQtopia,ResourceQtopiaConfig>();
+ return new KRES::PluginFactory<ResourceQtopia,ResourceQtopiaConfig, KRES::SyncWidget>();
}
}
-ResourceQtopia::ResourceQtopia( const KConfig *config )
- : Resource( config ), mConverter (0)
+ResourceQtopia::ResourceQtopia( const KConfig *config, bool syncable )
+ : Resource( config, syncable ), mConverter (0)
{
// we can not choose the filename. Therefore use the default to display
QString fileName = QDir::homeDirPath() + "/Applications/addressbook/addressbook.xml";
init( fileName );
}
-ResourceQtopia::ResourceQtopia( const QString &fileName )
- : Resource( 0 )
+ResourceQtopia::ResourceQtopia( const QString &fileName, bool syncable )
+ : Resource( 0, syncable )
{
// qDebug("ResourceFile::ResourceFile : 3 %s, %s", fileName.latin1(), formatName.latin1());
init( fileName );
}
void ResourceQtopia::init( const QString &fileName )
@@ -89,12 +90,14 @@ void ResourceQtopia::init( const QString &fileName )
ResourceQtopia::~ResourceQtopia()
{
if (mConverter != 0)
delete mConverter;
+ if(mAccess != 0)
+ delete mAccess;
}
void ResourceQtopia::writeConfig( KConfig *config )
{
Resource::writeConfig( config );
}
@@ -102,106 +105,88 @@ void ResourceQtopia::writeConfig( KConfig *config )
Ticket *ResourceQtopia::requestSaveTicket()
{
kdDebug(5700) << "ResourceQtopia::requestSaveTicket()" << endl;
if ( !addressBook() ) return 0;
- if ( !lock( mFileName ) ) {
+ if ( !lock( fileName() ) ) {
kdDebug(5700) << "ResourceQtopia::requestSaveTicket(): Unable to lock file '"
- << mFileName << "'" << endl;
+ << fileName() << "'" << endl;
return 0;
}
return createTicket( this );
}
bool ResourceQtopia::doOpen()
{
-/*US
- QFile file( mFileName );
+ qDebug("ResourceQtopia::doOpen(): %s", fileName().latin1());
- if ( !file.exists() ) {
- // try to create the file
- bool ok = file.open( IO_WriteOnly );
- if ( ok )
- file.close();
+ mAccess = new AddressBookAccess();
- return ok;
- } else {
- if ( !file.open( IO_ReadWrite ) )
- return false;
-
- if ( file.size() == 0 ) {
- file.close();
- return true;
- }
-
-//US bool ok = mFormat->checkFormat( &file );
- bool ok = true;
-
- file.close();
-
- return ok;
- }
-*/
- return true;
-}
-
-void ResourceQtopia::doClose()
-{
-}
-
-bool ResourceQtopia::load()
-{
- kdDebug(5700) << "ResourceQtopia::load(): '" << mFileName << "'" << endl;
-
-// qDebug("ResourceQtopia::load: Try to load file() %s", mFileName.latin1());
-
- AddressBookAccess* access = new AddressBookAccess();
-
- if ( !access ) {
- qDebug("Unable to load file() %s", mFileName.latin1());
- addressBook()->error( i18n( "Unable to load file '%1'." ).arg( mFileName ) );
+ if ( !mAccess ) {
+ qDebug("Unable to load file() %s", fileName().latin1());
return false;
}
bool res = false;
if (mConverter == 0)
{
mConverter = new QtopiaConverter();
res = mConverter->init();
if ( !res )
{
QString msg("Unable to initialize qtopia converter. Most likely a problem with the category file");
qDebug(msg);
- addressBook()->error( i18n( msg ) );
- delete access;
+ delete mAccess;
+ mAccess = 0;
return false;
}
}
- { //create a new scope
- AddressBookIterator it(*access);
+ 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) {
+ 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 );
}
}
- }
- delete access;
return true;
}
bool ResourceQtopia::save( Ticket *ticket )
{
/*US
@@ -246,13 +231,18 @@ bool ResourceQtopia::save( Ticket *ticket )
delete ticket;
unlock( mFileName );
return ok;
qDebug("ResourceQtopia::save has to be changed");
+
+
+ access->save();
+
*/
+
return true;
}
bool ResourceQtopia::lock( const QString &fileName )
{
kdDebug(5700) << "ResourceQtopia::lock()" << endl;
@@ -309,49 +299,85 @@ void ResourceQtopia::unlock( const QString &fileName )
QFile::remove( lockName );
QFile::remove( mLockUniqueName );
addressBook()->emitAddressBookUnlocked();
}
-void ResourceQtopia::setFileName( const QString &fileName )
+void ResourceQtopia::setFileName( const QString &newFileName )
{
mDirWatch.stopScan();
- mDirWatch.removeFile( mFileName );
+ mDirWatch.removeFile( fileName() );
- mFileName = fileName;
+ Resource::setFileName( newFileName );
- mDirWatch.addFile( mFileName );
+ mDirWatch.addFile( fileName() );
mDirWatch.startScan();
-
-//US simulate KDirWatch event
-//US fileChanged();
}
-QString ResourceQtopia::fileName() const
-{
- return mFileName;
-}
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( mFileName ) );
+ 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( mFileName );
+ 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"
diff --git a/kabc/plugins/qtopia/resourceqtopia.h b/kabc/plugins/qtopia/resourceqtopia.h
index bf9dd45..90ab1f4 100644
--- a/kabc/plugins/qtopia/resourceqtopia.h
+++ b/kabc/plugins/qtopia/resourceqtopia.h
@@ -33,12 +33,13 @@ $Id$
#include <kdirwatch.h>
#include <sys/types.h>
#include "resource.h"
+class AddressBookAccess;
namespace KABC {
//US class FormatPlugin;
class ResourceConfigWidget;
class QtopiaConverter;
@@ -54,18 +55,18 @@ public:
/**
Constructor.
@param cfg The config object where custom resource settings are stored.
*/
- ResourceQtopia( const KConfig *cfg );
+ ResourceQtopia( const KConfig *cfg, bool syncable );
/**
Construct file resource on file @arg fileName using format @arg formatName.
*/
- ResourceQtopia( const QString &fileName );
+ ResourceQtopia( const QString &fileName, bool syncable );
/**
* Destructor.
*/
~ResourceQtopia();
@@ -102,47 +103,51 @@ public:
*
* @param ticket The ticket returned by @ref requestSaveTicket()
*/
virtual bool save( Ticket *ticket );
/**
+ * Remove a addressee from its source.
+ * This method is mainly called by KABC::AddressBook.
+ */
+ virtual void removeAddressee( const Addressee& addr );
+
+ /**
* Set name of file to be used for saving.
*/
- void setFileName( const QString & );
+ virtual void setFileName( const QString & );
/**
- * Return name of file used for loading and saving the address book.
+ * This method is called by an error handler if the application
+ * crashed
*/
- QString fileName() const;
+ virtual void cleanUp();
/**
- * Remove a addressee from its source.
- * This method is mainly called by KABC::AddressBook.
+ * This method returns the number of elements that are currently in the resource.
*/
- virtual void removeAddressee( const Addressee& addr );
+ virtual int count() const;
/**
- * This method is called by an error handler if the application
- * crashed
+ * This method removes all elements from the resource!! (Not from the addressbook)
*/
- virtual void cleanUp();
+ virtual bool clear();
protected slots:
void fileChanged();
protected:
void init( const QString &fileName );
bool lock( const QString &fileName );
void unlock( const QString &fileName );
private:
+ AddressBookAccess* mAccess;
QtopiaConverter* mConverter;
- QString mFileName;
-
QString mLockUniqueName;
KDirWatch mDirWatch;
};
}