00001 /* 00002 This file is part of the Opie Project 00003 Copyright (C) Stefan Eilers (Eilers.Stefan@epost.de) 00004 =. Copyright (C) The Opie Team <opie-devel@handhelds.org> 00005 .=l. 00006 .>+-= 00007 _;:, .> :=|. This program is free software; you can 00008 .> <`_, > . <= redistribute it and/or modify it under 00009 :`=1 )Y*s>-.-- : the terms of the GNU Library General Public 00010 .="- .-=="i, .._ License as published by the Free Software 00011 - . .-<_> .<> Foundation; either version 2 of the License, 00012 ._= =} : or (at your option) any later version. 00013 .%`+i> _;_. 00014 .i_,=:_. -<s. This program is distributed in the hope that 00015 + . -:. = it will be useful, but WITHOUT ANY WARRANTY; 00016 : .. .:, . . . without even the implied warranty of 00017 =_ + =;=|` MERCHANTABILITY or FITNESS FOR A 00018 _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU 00019 ..}^=.= = ; Library General Public License for more 00020 ++= -. .` .: details. 00021 : = ...= . :.=- 00022 -. .:....=;==+<; You should have received a copy of the GNU 00023 -_. . . )=. = Library General Public License along with 00024 -- :-=` this library; see the file COPYING.LIB. 00025 If not, write to the Free Software Foundation, 00026 Inc., 59 Temple Place - Suite 330, 00027 Boston, MA 02111-1307, USA. 00028 */ 00029 /* 00030 * XML Backend for the OPIE-Contact Database. 00031 */ 00032 00033 #ifndef _OPimContactAccessBackend_XML_ 00034 #define _OPimContactAccessBackend_XML_ 00035 00036 #include <opie2/ocontactaccessbackend.h> 00037 #include <opie2/ocontactaccess.h> 00038 00039 #include <qlist.h> 00040 #include <qdict.h> 00041 00042 namespace Opie { 00043 /* the default xml implementation */ 00049 class OPimContactAccessBackend_XML : public OPimContactAccessBackend { 00050 public: 00051 OPimContactAccessBackend_XML ( const QString& appname, const QString& filename = QString::null ); 00052 00053 bool save(); 00054 00055 bool load (); 00056 00057 void clear (); 00058 00059 bool wasChangedExternally(); 00060 00061 UIDArray allRecords() const; 00062 00063 OPimContact find ( int uid ) const; 00064 00065 UIDArray matchRegexp( const QRegExp &r ) const; 00066 00067 bool add ( const OPimContact &newcontact ); 00068 00069 bool replace ( const OPimContact &contact ); 00070 00071 bool remove ( int uid ); 00072 bool reload(); 00073 00074 private: 00075 00076 enum journal_action { ACTION_ADD, ACTION_REMOVE, ACTION_REPLACE }; 00077 00078 void addContact_p( const OPimContact &newcontact ); 00079 00080 /* This function loads the xml-database and the journalfile */ 00081 bool load( const QString filename, bool isJournal ); 00082 00083 00084 void updateJournal( const OPimContact& cnt, journal_action action ); 00085 void removeJournal(); 00086 00087 protected: 00088 bool m_changed; 00089 QString m_journalName; 00090 QString m_fileName; 00091 QString m_appName; 00092 QList<OPimContact> m_contactList; 00093 QDateTime m_readtime; 00094 00095 QDict<OPimContact> m_uidToContact; 00096 }; 00097 00098 } 00099 00100 #endif
1.4.2