From 60a6886f06be31ec690df34dc8e3b8931c2d3bd7 Mon Sep 17 00:00:00 2001 From: ulf69 Date: Mon, 02 Aug 2004 18:33:07 +0000 Subject: added support for syncable resources --- (limited to 'kabc') diff --git a/kabc/addressbook.cpp b/kabc/addressbook.cpp index 0838157..20310a0 100644 --- a/kabc/addressbook.cpp +++ b/kabc/addressbook.cpp @@ -216,15 +216,22 @@ bool AddressBook::ConstIterator::operator!=( const ConstIterator &it ) AddressBook::AddressBook() { - init(0); + init(0, "contact"); } AddressBook::AddressBook( const QString &config ) { - init(config); + init(config, "contact"); } -void AddressBook::init(const QString &config) +AddressBook::AddressBook( const QString &config, const QString &family ) +{ + init(config, family); + +} + +// the default family is "contact" +void AddressBook::init(const QString &config, const QString &family ) { d = new AddressBookData; if (config != 0) { @@ -235,9 +242,9 @@ void AddressBook::init(const QString &config) d->mConfig = 0; // qDebug("AddressBook::init 1 config=0"); } - + //US d->mErrorHandler = 0; - d->mManager = new KRES::Manager( "contact" ); + d->mManager = new KRES::Manager( family, false ); d->mManager->readConfig( d->mConfig ); } @@ -251,7 +258,7 @@ AddressBook::~AddressBook() bool AddressBook::load() { - + clear(); @@ -277,7 +284,7 @@ bool AddressBook::save( Ticket *ticket ) if ( ticket->resource() ) { deleteRemovedAddressees(); - + return ticket->resource()->save( ticket ); } @@ -356,7 +363,7 @@ void AddressBook::insertAddressee( const Addressee &a ) if ( changed ) { (*it).setRevision( QDateTime::currentDateTime() ); - (*it).setChanged( true ); + (*it).setChanged( true ); } return; @@ -435,7 +442,7 @@ Addressee::List AddressBook::findByEmail( const QString &email ) Iterator it; for ( it = begin(); it != end(); ++it ) { - mailList = (*it).emails(); + mailList = (*it).emails(); for ( QStringList::Iterator ite = mailList.begin(); ite != mailList.end(); ++ite ) { if ( email == (*ite) ) { results.append( *it ); @@ -491,15 +498,15 @@ Field::List AddressBook::fields( int category ) if ( d->mAllFields.isEmpty() ) { d->mAllFields = Field::allFields(); } - + if ( category == Field::All ) return d->mAllFields; - + Field::List result; Field::List::ConstIterator it; for( it = d->mAllFields.begin(); it != d->mAllFields.end(); ++it ) { if ( (*it)->category() & category ) result.append( *it ); } - + return result; } @@ -541,8 +548,6 @@ QDataStream &KABC::operator>>( QDataStream &s, AddressBook &ab ) bool AddressBook::addResource( Resource *resource ) { - qDebug("AddressBook::addResource 1"); - if ( !resource->open() ) { kdDebug(5700) << "AddressBook::addResource(): can't add resource" << endl; return false; @@ -572,7 +577,7 @@ QPtrList AddressBook::resources() QPtrList list; // qDebug("AddressBook::resources() 1"); - + KRES::Manager::ActiveIterator it; for ( it = d->mManager->activeBegin(); it != d->mManager->activeEnd(); ++it ) list.append( *it ); diff --git a/kabc/addressbook.h b/kabc/addressbook.h index 3a8e028..f89d7da 100644 --- a/kabc/addressbook.h +++ b/kabc/addressbook.h @@ -44,7 +44,7 @@ class Ticket; /** @short Address Book - + This class provides access to a collection of address book entries. */ class AddressBook : public QObject @@ -58,7 +58,7 @@ class AddressBook : public QObject public: /** @short Address Book Iterator - + This class provides an iterator for address book entries. */ class Iterator @@ -85,7 +85,7 @@ class AddressBook : public QObject /** @short Address Book Const Iterator - + This class provides a const iterator for address book entries. */ class ConstIterator @@ -94,7 +94,7 @@ class AddressBook : public QObject ConstIterator(); ConstIterator( const ConstIterator & ); ~ConstIterator(); - + ConstIterator &operator=( const ConstIterator & ); const Addressee &operator*() const; const Addressee* operator->() const; @@ -108,14 +108,15 @@ class AddressBook : public QObject struct ConstIteratorData; ConstIteratorData *d; }; - + /** Constructs a address book object. - + @param format File format class. */ AddressBook(); AddressBook( const QString &config ); + AddressBook( const QString &config, const QString &family ); virtual ~AddressBook(); /** @@ -123,11 +124,11 @@ class AddressBook : public QObject the addressbook for all other processes. If the address book is already locked the function returns 0. You need the returned @ref Ticket object for calling the @ref save() function. - + @see save() */ Ticket *requestSaveTicket( Resource *resource=0 ); - + /** Load address book from file. */ @@ -136,7 +137,7 @@ class AddressBook : public QObject /** Save address book. The address book is saved to the file, the Ticket object has been requested for by @ref requestSaveTicket(). - + @param ticket a ticket object returned by @ref requestSaveTicket() */ bool save( Ticket *ticket ); @@ -165,7 +166,7 @@ class AddressBook : public QObject Removes all entries from address book. */ void clear(); - + /** Insert an Addressee object into address book. If an object with the same unique id already exists in the address book it it replaced by the new @@ -243,7 +244,7 @@ class AddressBook : public QObject /** Add custom field to address book. - + @param label User visible label of the field. @param category Ored list of field categories. @param key Identifier used as key for reading and writing the field. @@ -254,7 +255,7 @@ class AddressBook : public QObject const QString &key = QString::null, const QString &app = QString::null ); - + /** Add address book resource. */ @@ -308,12 +309,11 @@ class AddressBook : public QObject Resource *standardResource(); KRES::Manager *resourceManager(); + void init(const QString &config, const QString &family); + private: //US QPtrList mDummy; // Remove in KDE 4 -//US optimization - void init(const QString &config); - struct AddressBookData; AddressBookData *d; diff --git a/kabc/kabc.pro b/kabc/kabc.pro index a8cd695..10b092c 100644 --- a/kabc/kabc.pro +++ b/kabc/kabc.pro @@ -7,7 +7,7 @@ TARGET = microkabc include( ../variables.pri ) -INCLUDEPATH += . ./vcard/include ./vcard/include/generated ../microkde ../microkde/kdecore ../microkde/kio/kfile ../microkde/kio/kio ../qtcompat ../microkde/kdeui +INCLUDEPATH += . ./vcard/include ./vcard/include/generated ../microkde ../microkde/kdecore ../microkde/kio/kfile ../microkde/kio/kio ../libkdepim ../qtcompat ../microkde/kdeui #LIBS += -lmicrokde -lldap LIBS += -L$(QPEDIR)/lib @@ -48,6 +48,7 @@ formats/vcardformatplugin2.h \ sound.h \ addressbook.h \ timezone.h \ + tmpaddressbook.h \ addressee.h \ addresseedialog.h \ vcardconverter.h \ @@ -157,6 +158,7 @@ formatfactory.cpp \ sound.cpp \ addressbook.cpp \ timezone.cpp \ + tmpaddressbook.cpp \ addressee.cpp \ addresseelist.cpp \ addresseedialog.cpp \ diff --git a/kabc/kabcE.pro b/kabc/kabcE.pro index bc1c0ed..598d4fc 100644 --- a/kabc/kabcE.pro +++ b/kabc/kabcE.pro @@ -3,11 +3,12 @@ CONFIG += qt warn_on TARGET = microkabc -INCLUDEPATH += . ./vcard/include ./vcard/include/generated ../microkde ../microkde/kdecore ../microkde/kdeui ../microkde/kio/kfile ../microkde/kio/kio ../qtcompat $(QPEDIR)/include +INCLUDEPATH += . ./vcard/include ./vcard/include/generated ../microkde ../microkde/kdecore ../microkde/kdeui ../microkde/kio/kfile ../microkde/kio/kio ../libkdepim ../qtcompat $(QPEDIR)/include OBJECTS_DIR = obj/$(PLATFORM) MOC_DIR = moc/$(PLATFORM) DESTDIR = $(QPEDIR)/lib LIBS += -lmicrokde +LIBS += -lmicrokdepim #LIBS += -lldap LIBS += -L$(QPEDIR)/lib DEFINES += KAB_EMBEDDED @@ -36,7 +37,9 @@ HEADERS = \ secrecy.h \ sound.h \ stdaddressbook.h \ + syncprefwidget.h \ timezone.h \ + tmpaddressbook.h \ vcardconverter.h \ vcard21parser.h \ vcardformatimpl.h \ @@ -138,7 +141,9 @@ SOURCES = \ secrecy.cpp \ sound.cpp \ stdaddressbook.cpp \ + syncprefwidget.cpp \ timezone.cpp \ + tmpaddressbook.cpp \ vcardconverter.cpp \ vcard21parser.cpp \ vcardformatimpl.cpp \ diff --git a/kabc/resource.cpp b/kabc/resource.cpp index 9a1a5f8..9632a3f 100644 --- a/kabc/resource.cpp +++ b/kabc/resource.cpp @@ -27,24 +27,38 @@ $Id$ #include +#include + #include "resource.h" using namespace KABC; -Resource::Resource( const KConfig *config ) - : KRES::Resource( config ), mAddressBook( 0 ) +Resource::Resource( const KConfig *config, bool syncable ) + : KRES::Resource( config ), mAddressBook( 0 ), mSyncProfile( 0 ) { + if(syncable == true) { + mSyncProfile = new KSyncProfile( identifier() ); + mSyncProfile->setName(resourceName()); + mSyncProfile->readConfig( (KConfig *)config ); + } } Resource::~Resource() { + if (mSyncProfile != 0) { + delete mSyncProfile; + } } void Resource::writeConfig( KConfig *config ) { KRES::Resource::writeConfig( config ); + + if(mSyncProfile != 0) + mSyncProfile->writeConfig( config ); } + void Resource::setAddressBook( AddressBook *ab ) { mAddressBook = ab; @@ -93,3 +107,48 @@ void Resource::cleanUp() { // do nothing } + +bool Resource::isSyncable() const +{ + return (mSyncProfile != 0); +} + +/** + * This method returns the number of elements that are currently in the resource. + */ +int Resource::count() const +{ + return 0; +} + +/** + * This method removes all elements from the resource!! (Not from the addressbook) + */ +bool Resource::clear() +{ + return false; +} + +QString Resource::fileName() const +{ + return mFileName; +} + +void Resource::setFileName( const QString &fileName ) +{ + mFileName = fileName; +} + +/** + * Set the name of resource.You can override this method, + * but also remember to call Resource::setResourceName(). + */ +void Resource::setResourceName( const QString &name ) +{ + KRES::Resource::setResourceName(name); + if(mSyncProfile != 0) { + mSyncProfile->setName( name ); + } + +} + diff --git a/kabc/resource.h b/kabc/resource.h index c363125..db806a6 100644 --- a/kabc/resource.h +++ b/kabc/resource.h @@ -30,13 +30,16 @@ $Id$ #include + #include "addressbook.h" +class KSyncProfile; + namespace KABC { /** * @short Helper class for handling coordinated save of address books. - * + * * This class is used as helper class for saving address book. * @see requestSaveTicket(), save(). */ @@ -46,9 +49,9 @@ class Ticket public: Resource *resource() { return mResource; } - private: + private: Ticket( Resource *resource ) : mResource( resource ) {} - + Resource *mResource; }; @@ -57,11 +60,17 @@ class Ticket */ class Resource : public KRES::Resource { +private: + /** + * make this constructor private to force everybody to use the other one + */ + Resource( const KConfig *config); + public: /** * Constructor */ - Resource( const KConfig *config ); + Resource( const KConfig *config, bool syncable ); /** * Destructor. @@ -88,17 +97,13 @@ public: */ virtual bool doOpen(); - /** - * Close the resource and returns if it was successfully - */ - virtual void doClose(); - + /** * Request a ticket, you have to pass through @ref save() to * allow locking. */ virtual Ticket *requestSaveTicket(); - + /** * Load all addressees to the addressbook */ @@ -117,18 +122,59 @@ public: */ virtual void removeAddressee( const Addressee& addr ); + /** * This method is called by an error handler if the application * crashed */ virtual void cleanUp(); + + /** + * This method returns the number of elements that are currently in the resource. + */ + virtual int count() const; + + /** + * This method removes all elements from the resource!! (Not from the addressbook) + */ + virtual bool clear(); + + /** + * Set name of file to be used for saving. + */ + virtual void setFileName( const QString & ); + + /** + * Return name of file used for loading and saving the address book. + */ + virtual QString fileName() const; + + + virtual bool isSyncable() const; + + /** + * Set the name of resource.You can override this method, + * but also remember to call Resource::setResourceName(). + */ + virtual void setResourceName( const QString &name ); + + + protected: Ticket *createTicket( Resource * ); + virtual void doClose(); private: AddressBook *mAddressBook; + KSyncProfile *mSyncProfile; + QString mFileName; + }; + } + + + #endif -- cgit v0.9.0.2