resource.h00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifndef KABC_RESOURCE_H
00022 #define KABC_RESOURCE_H
00023
00024 #include <kresources/resource.h>
00025
00026 #include "addressbook.h"
00027 #include "plugin.h"
00028
00029 namespace KABC {
00030
00037 class KABC_EXPORT Ticket
00038 {
00039 friend class Resource;
00040
00041 public:
00042 ~Ticket();
00043
00044 Resource *resource();
00045
00046 private:
00047 Ticket( Resource *resource );
00048
00049 Resource *mResource;
00050 };
00051
00055 class KABC_EXPORT Resource : public KRES::Resource
00056 {
00057 Q_OBJECT
00058
00059 public:
00060
00068 class KABC_EXPORT Iterator
00069 {
00070 public:
00071 Iterator();
00072 Iterator( const Iterator & );
00073 virtual ~Iterator();
00074
00075 virtual Iterator &operator=( const Iterator & );
00076 virtual const Addressee &operator*() const;
00077 virtual Addressee &operator*();
00078 virtual Iterator &operator++();
00079 virtual Iterator &operator++( int );
00080 virtual Iterator &operator--();
00081 virtual Iterator &operator--( int );
00082 virtual bool operator==( const Iterator &it );
00083 virtual bool operator!=( const Iterator &it );
00084
00085 struct IteratorData;
00086 IteratorData *d;
00087 };
00088
00094 class KABC_EXPORT ConstIterator
00095 {
00096 public:
00097 ConstIterator();
00098 ConstIterator( const ConstIterator & );
00099 ConstIterator( const Iterator & );
00100 virtual ~ConstIterator();
00101
00102 virtual ConstIterator &operator=( const ConstIterator & );
00103 virtual const Addressee &operator*() const ;
00104 virtual ConstIterator &operator++();
00105 virtual ConstIterator &operator++( int );
00106 virtual ConstIterator &operator--();
00107 virtual ConstIterator &operator--( int );
00108 virtual bool operator==( const ConstIterator &it );
00109 virtual bool operator!=( const ConstIterator &it );
00110
00111 struct ConstIteratorData;
00112 ConstIteratorData *d;
00113 };
00114
00121 Resource( const KConfig *config );
00122
00126 virtual ~Resource();
00127
00132 virtual ConstIterator begin() const;
00133
00138 virtual Iterator begin();
00139
00144 virtual ConstIterator end() const;
00145
00150 virtual Iterator end();
00151
00155 AddressBook *addressBook();
00156
00160 virtual void writeConfig( KConfig *config );
00161
00167 virtual Ticket *requestSaveTicket() = 0;
00168
00174 virtual void releaseSaveTicket( Ticket* ) = 0;
00175
00181 virtual bool load() = 0;
00182
00192 virtual bool asyncLoad();
00193
00197 virtual void insertAddressee( const Addressee& );
00198
00202 virtual void removeAddressee( const Addressee& addr );
00203
00211 virtual bool save( Ticket *ticket ) = 0;
00212
00224 virtual bool asyncSave( Ticket *ticket );
00225
00233 virtual Addressee findByUid( const QString &uid );
00234
00241 virtual Addressee::List findByName( const QString &name );
00242
00249 virtual Addressee::List findByEmail( const QString &email );
00250
00257 virtual Addressee::List findByCategory( const QString &category );
00258
00262 virtual void clear();
00263
00269 void setAddressBook( AddressBook* );
00270
00271 signals:
00278 void loadingFinished( Resource *resource );
00279
00287 void loadingError( Resource *resource, const QString &msg );
00288
00295 void savingFinished( Resource *resource );
00296
00304 void savingError( Resource *resource, const QString &msg );
00305
00306 protected:
00307 Ticket *createTicket( Resource * );
00308 Addressee::Map mAddrMap;
00309
00310 private:
00311 AddressBook *mAddressBook;
00312
00313 class ResourcePrivate;
00314 ResourcePrivate *d;
00315 };
00316
00317 }
00318
00319 #endif
|