addressbook.h
00001 /* 00002 This file is part of libkabc. 00003 Copyright (c) 2001 Cornelius Schumacher <schumacher@kde.org> 00004 00005 This library is free software; you can redistribute it and/or 00006 modify it under the terms of the GNU Library General Public 00007 License as published by the Free Software Foundation; either 00008 version 2 of the License, or (at your option) any later version. 00009 00010 This library is distributed in the hope that it will be useful, 00011 but WITHOUT ANY WARRANTY; without even the implied warranty of 00012 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00013 Library General Public License for more details. 00014 00015 You should have received a copy of the GNU Library General Public License 00016 along with this library; see the file COPYING.LIB. If not, write to 00017 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, 00018 Boston, MA 02111-1307, USA. 00019 */ 00020 00021 #ifndef KABC_ADDRESSBOOK_H 00022 #define KABC_ADDRESSBOOK_H 00023 00024 #include <qobject.h> 00025 #include <qptrlist.h> 00026 00027 #include "addressee.h" 00028 #include "field.h" 00029 00030 namespace KABC { 00031 00032 class ErrorHandler; 00033 class Resource; 00034 class Ticket; 00035 00041 class AddressBook : public QObject 00042 { 00043 Q_OBJECT 00044 00045 friend QDataStream &operator<<( QDataStream &, const AddressBook & ); 00046 friend QDataStream &operator>>( QDataStream &, AddressBook & ); 00047 friend class StdAddressBook; 00048 00049 public: 00055 class Iterator 00056 { 00057 public: 00058 Iterator(); 00059 Iterator( const Iterator & ); 00060 ~Iterator(); 00061 00062 Iterator &operator=( const Iterator & ); 00063 const Addressee &operator*() const; 00064 Addressee &operator*(); 00065 Addressee* operator->(); 00066 Iterator &operator++(); 00067 Iterator &operator++(int); 00068 Iterator &operator--(); 00069 Iterator &operator--(int); 00070 bool operator==( const Iterator &it ); 00071 bool operator!=( const Iterator &it ); 00072 00073 struct IteratorData; 00074 IteratorData *d; 00075 }; 00076 00082 class ConstIterator 00083 { 00084 public: 00085 ConstIterator(); 00086 ConstIterator( const ConstIterator & ); 00087 ~ConstIterator(); 00088 00089 ConstIterator &operator=( const ConstIterator & ); 00090 const Addressee &operator*() const; 00091 const Addressee* operator->() const; 00092 ConstIterator &operator++(); 00093 ConstIterator &operator++(int); 00094 ConstIterator &operator--(); 00095 ConstIterator &operator--(int); 00096 bool operator==( const ConstIterator &it ); 00097 bool operator!=( const ConstIterator &it ); 00098 00099 struct ConstIteratorData; 00100 ConstIteratorData *d; 00101 }; 00102 00108 AddressBook(); 00109 virtual ~AddressBook(); 00110 00119 Ticket *requestSaveTicket( Resource *resource=0 ); 00120 00124 bool load(); 00125 00132 bool save( Ticket *ticket ); 00133 00137 Iterator begin(); 00138 00142 ConstIterator begin() const; 00143 00147 Iterator end(); 00148 00152 ConstIterator end() const; 00153 00157 void clear(); 00158 00164 void insertAddressee( const Addressee & ); 00165 00169 void removeAddressee( const Addressee & ); 00170 00175 void removeAddressee( const Iterator & ); 00176 00181 Iterator find( const Addressee & ); 00182 00187 Addressee findByUid( const QString & ); 00188 00193 Addressee::List findByName( const QString & ); 00194 00199 Addressee::List findByEmail( const QString & ); 00200 00205 Addressee::List findByCategory( const QString & ); 00206 00210 virtual QString identifier(); 00211 00215 void dump() const; 00216 00217 void emitAddressBookLocked() { emit addressBookLocked( this ); } 00218 void emitAddressBookUnlocked() { emit addressBookUnlocked( this ); } 00219 void emitAddressBookChanged() { emit addressBookChanged( this ); } 00220 00225 Field::List fields( int category = Field::All ); 00226 00236 bool addCustomField( const QString &label, int category = Field::All, 00237 const QString &key = QString::null, 00238 const QString &app = QString::null ); 00239 00243 bool addResource( Resource * ); 00244 00248 bool removeResource( Resource * ); 00249 00253 QPtrList<Resource> resources(); 00254 00259 void setErrorHandler( ErrorHandler * ); 00260 00264 void error( const QString& ); 00265 00269 void cleanUp(); 00270 00271 signals: 00275 void addressBookChanged( AddressBook * ); 00276 00280 void addressBookLocked( AddressBook * ); 00281 00285 void addressBookUnlocked( AddressBook * ); 00286 00287 protected: 00288 void deleteRemovedAddressees(); 00289 void setStandardResource( Resource * ); 00290 Resource *standardResource(); 00291 00292 private: 00293 QPtrList<Resource> mDummy; // Remove in KDE 4 00294 struct AddressBookData; 00295 AddressBookData *d; 00296 }; 00297 00298 QDataStream &operator<<( QDataStream &, const AddressBook & ); 00299 QDataStream &operator>>( QDataStream &, AddressBook & ); 00300 00301 } 00302 00303 #endif