summaryrefslogtreecommitdiffabout
path: root/kabc/plugins/qtopia
authorulf69 <ulf69>2004-08-02 18:32:08 (UTC)
committer ulf69 <ulf69>2004-08-02 18:32:08 (UTC)
commit863c4c3678e59ef125c08c00e9532ded5b540f67 (patch) (side-by-side diff)
tree449428c45689ffe10ff1ce4caa18f959c4dfe402 /kabc/plugins/qtopia
parent983127ce46c9ff6663d08dedd450da3fe7dd549b (diff)
downloadkdepimpi-863c4c3678e59ef125c08c00e9532ded5b540f67.zip
kdepimpi-863c4c3678e59ef125c08c00e9532ded5b540f67.tar.gz
kdepimpi-863c4c3678e59ef125c08c00e9532ded5b540f67.tar.bz2
added support for syncprofiles for resources and export/import capabilities
Diffstat (limited to 'kabc/plugins/qtopia') (more/less context) (ignore whitespace changes)
-rw-r--r--kabc/plugins/qtopia/qtopiaE.pro2
-rw-r--r--kabc/plugins/qtopia/resourceqtopia.cpp182
-rw-r--r--kabc/plugins/qtopia/resourceqtopia.h35
3 files changed, 125 insertions, 94 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
@@ -3,7 +3,7 @@ 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)
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
@@ -49,6 +49,7 @@ $Id$
#include "stdaddressbook.h"
#include "qtopiaconverter.h"
+#include "syncwidget.h"
#include "resourceqtopia.h"
@@ -57,12 +58,12 @@ 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";
@@ -70,8 +71,8 @@ ResourceQtopia::ResourceQtopia( const KConfig *config )
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 );
@@ -92,6 +93,8 @@ ResourceQtopia::~ResourceQtopia()
if (mConverter != 0)
delete mConverter;
+ if(mAccess != 0)
+ delete mAccess;
}
void ResourceQtopia::writeConfig( KConfig *config )
@@ -105,9 +108,9 @@ Ticket *ResourceQtopia::requestSaveTicket()
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 );
@@ -116,51 +119,12 @@ Ticket *ResourceQtopia::requestSaveTicket()
bool ResourceQtopia::doOpen()
{
-/*US
- QFile file( mFileName );
-
- if ( !file.exists() ) {
- // try to create the file
- bool ok = file.open( IO_WriteOnly );
- if ( ok )
- file.close();
-
- 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()
-{
-}
+ qDebug("ResourceQtopia::doOpen(): %s", fileName().latin1());
-bool ResourceQtopia::load()
-{
- kdDebug(5700) << "ResourceQtopia::load(): '" << mFileName << "'" << endl;
-
-// qDebug("ResourceQtopia::load: Try to load file() %s", mFileName.latin1());
+ mAccess = new AddressBookAccess();
- 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;
}
@@ -173,32 +137,53 @@ bool ResourceQtopia::load()
{
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);
- const PimContact* contact;
+ return true;
+}
- for (contact=it.toFirst(); it.current(); ++it) {
- contact = it.current();
+void ResourceQtopia::doClose()
+{
+ qDebug("ResourceQtopia::doClose: %s", fileName().latin1());
- KABC::Addressee addressee;
+ 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());
- res = mConverter->qtopiaToAddressee( (*contact), addressee );
+ AddressBookIterator it(*mAccess);
+ const PimContact* contact;
+ bool res;
+
+ for (contact=it.toFirst(); it.current(); ++it)
+ {
+ contact = it.current();
- if ( !addressee.isEmpty() && res )
- {
- addressee.setResource( this );
- addressBook()->insertAddressee( addressee );
- }
+ KABC::Addressee addressee;
+
+ res = mConverter->qtopiaToAddressee( (*contact), addressee );
+
+ if ( !addressee.isEmpty() && res )
+ {
+ addressee.setResource( this );
+ addressBook()->insertAddressee( addressee );
}
}
- delete access;
return true;
}
@@ -249,7 +234,12 @@ bool ResourceQtopia::save( Ticket *ticket )
return ok;
qDebug("ResourceQtopia::save has to be changed");
+
+
+ access->save();
+
*/
+
return true;
}
@@ -312,24 +302,17 @@ void ResourceQtopia::unlock( const QString &fileName )
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()
{
@@ -338,7 +321,7 @@ void ResourceQtopia::fileChanged()
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();
@@ -351,7 +334,50 @@ 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
@@ -36,6 +36,7 @@ $Id$
#include "resource.h"
+class AddressBookAccess;
namespace KABC {
@@ -57,12 +58,12 @@ public:
@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.
@@ -84,7 +85,7 @@ public:
* Closes the file again.
*/
virtual void doClose();
-
+
/**
* Requests a save ticket, that is used by @ref save()
*/
@@ -105,26 +106,31 @@ public:
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();
@@ -136,12 +142,11 @@ protected:
void unlock( const QString &fileName );
private:
+ AddressBookAccess* mAccess;
QtopiaConverter* mConverter;
-
- QString mFileName;
QString mLockUniqueName;
-
+
KDirWatch mDirWatch;
};