summaryrefslogtreecommitdiff
authorzecke <zecke>2003-04-13 18:07:10 (UTC)
committer zecke <zecke>2003-04-13 18:07:10 (UTC)
commit6f610544d3db6198c90105b70fab1cc84f5a1fbd (patch) (unidiff)
tree964d18f0a4cca7383a31810aa922876751c4a22c
parent0b311079ff19798866291034663757103c6ba935 (diff)
downloadopie-6f610544d3db6198c90105b70fab1cc84f5a1fbd.zip
opie-6f610544d3db6198c90105b70fab1cc84f5a1fbd.tar.gz
opie-6f610544d3db6198c90105b70fab1cc84f5a1fbd.tar.bz2
More API doc
QString -> const QString& QString = 0l -> QString::null
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--libopie/pim/obackendfactory.h26
-rw-r--r--libopie/pim/ocontact.h11
-rw-r--r--libopie/pim/ocontactaccess.h16
-rw-r--r--libopie/pim/ocontactaccessbackend.h32
-rw-r--r--libopie/pim/ocontactaccessbackend_vcard.cpp7
-rw-r--r--libopie/pim/ocontactaccessbackend_vcard.h18
-rw-r--r--libopie/pim/ocontactaccessbackend_xml.cpp171
-rw-r--r--libopie/pim/ocontactaccessbackend_xml.h46
-rw-r--r--libopie/pim/odatebookaccess.cpp28
-rw-r--r--libopie/pim/odatebookaccess.h15
-rw-r--r--libopie/pim/odatebookaccessbackend.h45
-rw-r--r--libopie/pim/odatebookaccessbackend_xml.h6
-rw-r--r--libopie/pim/oevent.h17
-rw-r--r--libopie2/opiepim/backend/obackendfactory.h26
-rw-r--r--libopie2/opiepim/backend/ocontactaccessbackend.h32
-rw-r--r--libopie2/opiepim/backend/ocontactaccessbackend_vcard.cpp7
-rw-r--r--libopie2/opiepim/backend/ocontactaccessbackend_vcard.h18
-rw-r--r--libopie2/opiepim/backend/ocontactaccessbackend_xml.cpp171
-rw-r--r--libopie2/opiepim/backend/ocontactaccessbackend_xml.h46
-rw-r--r--libopie2/opiepim/backend/odatebookaccessbackend.h45
-rw-r--r--libopie2/opiepim/backend/odatebookaccessbackend_xml.h6
-rw-r--r--libopie2/opiepim/core/ocontactaccess.h16
-rw-r--r--libopie2/opiepim/core/odatebookaccess.cpp28
-rw-r--r--libopie2/opiepim/core/odatebookaccess.h15
-rw-r--r--libopie2/opiepim/ocontact.h11
-rw-r--r--libopie2/opiepim/oevent.h17
26 files changed, 630 insertions, 246 deletions
diff --git a/libopie/pim/obackendfactory.h b/libopie/pim/obackendfactory.h
index 3a73210..ad6cf5a 100644
--- a/libopie/pim/obackendfactory.h
+++ b/libopie/pim/obackendfactory.h
@@ -17,4 +17,9 @@
17 * History: 17 * History:
18 * $Log$ 18 * $Log$
19 * Revision 1.6 2003/04/13 18:07:10 zecke
20 * More API doc
21 * QString -> const QString&
22 * QString = 0l -> QString::null
23 *
19 * Revision 1.5 2003/02/21 23:31:52 zecke 24 * Revision 1.5 2003/02/21 23:31:52 zecke
20 * Add XML datebookresource 25 * Add XML datebookresource
@@ -64,5 +69,19 @@
64#endif 69#endif
65 70
66 71/**
72 * This class is our factory. It will give us the default implementations
73 * of at least Todolist, Contacts and Datebook. In the future this class will
74 * allow users to switch the backend with ( XML->SQLite ) without the need
75 * to recompile.#
76 * This class as the whole PIM Api is making use of templates
77 *
78 * <pre>
79 * OTodoAccessBackend* backend = OBackEndFactory<OTodoAccessBackend>::Default("todo", QString::null );
80 * backend->load();
81 * </pre>
82 *
83 * @author Stefan Eilers
84 * @version 0.1
85 */
67template<class T> 86template<class T>
68class OBackendFactory 87class OBackendFactory
@@ -77,4 +96,9 @@ class OBackendFactory
77 }; 96 };
78 97
98 /**
99 * Returns a backend implementation for backendName
100 * @param backendName the type of the backend
101 * @param appName will be passed on to the backend
102 */
79 static T* Default( const QString backendName, const QString& appName ){ 103 static T* Default( const QString backendName, const QString& appName ){
80 104
diff --git a/libopie/pim/ocontact.h b/libopie/pim/ocontact.h
index 1fd1c75..25fa0e7 100644
--- a/libopie/pim/ocontact.h
+++ b/libopie/pim/ocontact.h
@@ -35,6 +35,13 @@ QPC_TEMPLATEEXTERN template class QPC_EXPORT QMap<int, QString>;
35#endif 35#endif
36 36
37class ContactPrivate; 37class ContactPrivate;
38 38
39/**
40 * OContact class represents a specialised PIM Record for contacts.
41 * It does store all kind of persopn related information.
42 *
43 * @short Contact Container
44 * @author TT, Stefan Eiler, Holger Freyther
45 */
39class QPC_EXPORT OContact : public OPimRecord 46class QPC_EXPORT OContact : public OPimRecord
40{ 47{
diff --git a/libopie/pim/ocontactaccess.h b/libopie/pim/ocontactaccess.h
index 32b2dcb..d7ceaf2 100644
--- a/libopie/pim/ocontactaccess.h
+++ b/libopie/pim/ocontactaccess.h
@@ -18,4 +18,9 @@
18 * History: 18 * History:
19 * $Log$ 19 * $Log$
20 * Revision 1.7 2003/04/13 18:07:10 zecke
21 * More API doc
22 * QString -> const QString&
23 * QString = 0l -> QString::null
24 *
20 * Revision 1.6 2003/01/02 14:27:12 eilers 25 * Revision 1.6 2003/01/02 14:27:12 eilers
21 * Improved query by example: Search by date is possible.. First step 26 * Improved query by example: Search by date is possible.. First step
@@ -56,7 +61,11 @@
56#include "opimaccesstemplate.h" 61#include "opimaccesstemplate.h"
57 62
58/** Class to access the contacts database. 63/**
64 * Class to access the contacts database.
59 * This is just a frontend for the real database handling which is 65 * This is just a frontend for the real database handling which is
60 * done by the backend. 66 * done by the backend.
67 * This class is used to access the Contacts on a system. This class as any OPIE PIM
68 * class is backend independent.
69
61 * @see OPimAccessTemplate 70 * @see OPimAccessTemplate
62 */ 71 */
@@ -66,5 +75,6 @@ class OContactAccess: public QObject, public OPimAccessTemplate<OContact>
66 75
67 public: 76 public:
68 /** Create Database with contacts (addressbook). 77 /**
78 * Create Database with contacts (addressbook).
69 * @param appname Name of application which wants access to the database 79 * @param appname Name of application which wants access to the database
70 * (i.e. "todolist") 80 * (i.e. "todolist")
@@ -100,5 +110,5 @@ class OContactAccess: public QObject, public OPimAccessTemplate<OContact>
100 }; 110 };
101 111
102 112
103 ORecordList<OContact> matchRegexp( const QRegExp &r )const; 113 ORecordList<OContact> matchRegexp( const QRegExp &r )const;
104 114
diff --git a/libopie/pim/ocontactaccessbackend.h b/libopie/pim/ocontactaccessbackend.h
index 821f5bf..ebeb42d 100644
--- a/libopie/pim/ocontactaccessbackend.h
+++ b/libopie/pim/ocontactaccessbackend.h
@@ -20,4 +20,9 @@
20 * History: 20 * History:
21 * $Log$ 21 * $Log$
22 * Revision 1.5 2003/04/13 18:07:10 zecke
23 * More API doc
24 * QString -> const QString&
25 * QString = 0l -> QString::null
26 *
22 * Revision 1.4 2002/11/13 14:14:51 eilers 27 * Revision 1.4 2002/11/13 14:14:51 eilers
23 * Added sorted for Contacts.. 28 * Added sorted for Contacts..
@@ -45,6 +50,16 @@
45#include "opimaccessbackend.h" 50#include "opimaccessbackend.h"
46 51
47#include "qregexp.h" 52#include <qregexp.h>
48 53
54/**
55 * This class represents the interface of all Contact Backends.
56 * Derivates of this class will be used to access the contacts.
57 * As implementation currently XML and vCard exist. This class needs to be implemented
58 * if you want to provide your own storage.
59 * In all queries a list of uids is passed on instead of loading the actual record!
60 *
61 * @see OContactAccessBackend_VCard
62 * @see OContactAccessBackend_XML
63 */
49class OContactAccessBackend: public OPimAccessBackend<OContact> { 64class OContactAccessBackend: public OPimAccessBackend<OContact> {
50 public: 65 public:
@@ -53,5 +68,6 @@ class OContactAccessBackend: public OPimAccessBackend<OContact> {
53 68
54 69
55 /** Return if database was changed externally. 70 /**
71 * Return if database was changed externally.
56 * This may just make sense on file based databases like a XML-File. 72 * This may just make sense on file based databases like a XML-File.
57 * It is used to prevent to overwrite the current database content 73 * It is used to prevent to overwrite the current database content
@@ -69,5 +85,6 @@ class OContactAccessBackend: public OPimAccessBackend<OContact> {
69 virtual QArray<int> matchRegexp( const QRegExp &r ) const = 0; 85 virtual QArray<int> matchRegexp( const QRegExp &r ) const = 0;
70 86
71 /** Return all possible settings. 87 /**
88 * Return all possible settings.
72 * @return All settings provided by the current backend 89 * @return All settings provided by the current backend
73 * (i.e.: query_WildCards & query_IgnoreCase) 90 * (i.e.: query_WildCards & query_IgnoreCase)
@@ -75,10 +92,15 @@ class OContactAccessBackend: public OPimAccessBackend<OContact> {
75 virtual const uint querySettings() = 0; 92 virtual const uint querySettings() = 0;
76 93
77 /** Check whether settings are correct. 94 /**
95 * Check whether settings are correct.
78 * @return <i>true</i> if the given settings are correct and possible. 96 * @return <i>true</i> if the given settings are correct and possible.
79 */ 97 */
80 virtual bool hasQuerySettings (uint querySettings) const = 0; 98 virtual bool hasQuerySettings (uint querySettings) const = 0;
81 99
82 virtual QArray<int> sorted( bool ascending, int sortOrder, int sortFilter, int cat ) = 0; 100 /**
101 * FIXME!!!
102 * Returns a sorted list of records either ascendinf or descending for a giving criteria and category
103 */
104 virtual QArray<int> sorted( bool ascending, int sortOrder, int sortFilter, int cat ) = 0;
83 105
84}; 106};
diff --git a/libopie/pim/ocontactaccessbackend_vcard.cpp b/libopie/pim/ocontactaccessbackend_vcard.cpp
index f24523f..270bef3 100644
--- a/libopie/pim/ocontactaccessbackend_vcard.cpp
+++ b/libopie/pim/ocontactaccessbackend_vcard.cpp
@@ -18,4 +18,9 @@
18 * History: 18 * History:
19 * $Log$ 19 * $Log$
20 * Revision 1.10 2003/04/13 18:07:10 zecke
21 * More API doc
22 * QString -> const QString&
23 * QString = 0l -> QString::null
24 *
20 * Revision 1.9 2003/03/21 10:33:09 eilers 25 * Revision 1.9 2003/03/21 10:33:09 eilers
21 * Merged speed optimized xml backend for contacts to main. 26 * Merged speed optimized xml backend for contacts to main.
@@ -77,5 +82,5 @@
77#include <qfile.h> 82#include <qfile.h>
78 83
79OContactAccessBackend_VCard::OContactAccessBackend_VCard ( QString , QString filename ): 84OContactAccessBackend_VCard::OContactAccessBackend_VCard ( const QString& , const QString& filename ):
80 m_dirty( false ), 85 m_dirty( false ),
81 m_file( filename ) 86 m_file( filename )
diff --git a/libopie/pim/ocontactaccessbackend_vcard.h b/libopie/pim/ocontactaccessbackend_vcard.h
index 93e2da3..712d769 100644
--- a/libopie/pim/ocontactaccessbackend_vcard.h
+++ b/libopie/pim/ocontactaccessbackend_vcard.h
@@ -18,4 +18,9 @@
18 * History: 18 * History:
19 * $Log$ 19 * $Log$
20 * Revision 1.6 2003/04/13 18:07:10 zecke
21 * More API doc
22 * QString -> const QString&
23 * QString = 0l -> QString::null
24 *
20 * Revision 1.5 2003/03/21 10:33:09 eilers 25 * Revision 1.5 2003/03/21 10:33:09 eilers
21 * Merged speed optimized xml backend for contacts to main. 26 * Merged speed optimized xml backend for contacts to main.
@@ -48,7 +53,12 @@
48class VObject; 53class VObject;
49 54
55/**
56 * This is the vCard 2.1 implementation of the Contact Storage
57 * @see OContactAccessBackend_XML
58 * @see OPimAccessBackend
59 */
50class OContactAccessBackend_VCard : public OContactAccessBackend { 60class OContactAccessBackend_VCard : public OContactAccessBackend {
51 public: 61 public:
52 OContactAccessBackend_VCard ( QString appname, QString filename = 0l ); 62 OContactAccessBackend_VCard ( const QString& appname, const QString& filename = QString::null );
53 63
54 bool load (); 64 bool load ();
@@ -60,5 +70,5 @@ class OContactAccessBackend_VCard : public OContactAccessBackend {
60 bool remove ( int uid ); 70 bool remove ( int uid );
61 bool replace ( const OContact& contact ); 71 bool replace ( const OContact& contact );
62 72
63 OContact find ( int uid ) const; 73 OContact find ( int uid ) const;
64 QArray<int> allRecords() const; 74 QArray<int> allRecords() const;
@@ -70,5 +80,5 @@ class OContactAccessBackend_VCard : public OContactAccessBackend {
70 QArray<int> sorted( bool ascending, int sortOrder, int sortFilter, int cat ); 80 QArray<int> sorted( bool ascending, int sortOrder, int sortFilter, int cat );
71 bool wasChangedExternally(); 81 bool wasChangedExternally();
72 82
73private: 83private:
74 OContact parseVObject( VObject* obj ); 84 OContact parseVObject( VObject* obj );
@@ -78,5 +88,5 @@ private:
78 VObject *safeAddPropValue( VObject *o, const char* prop, const QString& value ); 88 VObject *safeAddPropValue( VObject *o, const char* prop, const QString& value );
79 VObject *safeAddProp( VObject* o, const char* prop); 89 VObject *safeAddProp( VObject* o, const char* prop);
80 90
81 bool m_dirty : 1; 91 bool m_dirty : 1;
82 QString m_file; 92 QString m_file;
diff --git a/libopie/pim/ocontactaccessbackend_xml.cpp b/libopie/pim/ocontactaccessbackend_xml.cpp
index c5a7820..661cd51 100644
--- a/libopie/pim/ocontactaccessbackend_xml.cpp
+++ b/libopie/pim/ocontactaccessbackend_xml.cpp
@@ -18,4 +18,9 @@
18 * History: 18 * History:
19 * $Log$ 19 * $Log$
20 * Revision 1.5 2003/04/13 18:07:10 zecke
21 * More API doc
22 * QString -> const QString&
23 * QString = 0l -> QString::null
24 *
20 * Revision 1.4 2003/03/21 14:32:54 mickeyl 25 * Revision 1.4 2003/03/21 14:32:54 mickeyl
21 * g++ compliance fix: default arguments belong into the declaration, but not the definition 26 * g++ compliance fix: default arguments belong into the declaration, but not the definition
@@ -94,5 +99,5 @@
94#include <qarray.h> 99#include <qarray.h>
95#include <qmap.h> 100#include <qmap.h>
96#include <qdatetime.h> 101#include <qdatetime.h>
97 102
98#include <qpe/global.h> 103#include <qpe/global.h>
@@ -108,5 +113,5 @@ using namespace Opie;
108 113
109 114
110OContactAccessBackend_XML::OContactAccessBackend_XML ( QString appname, QString filename ): 115OContactAccessBackend_XML::OContactAccessBackend_XML ( const QString& appname, const QString& filename ):
111 m_changed( false ) 116 m_changed( false )
112{ 117{
@@ -117,9 +122,9 @@ OContactAccessBackend_XML::OContactAccessBackend_XML ( QString appname, QString
117 122
118 m_appName = appname; 123 m_appName = appname;
119 124
120 /* Set journalfile name ... */ 125 /* Set journalfile name ... */
121 m_journalName = getenv("HOME"); 126 m_journalName = getenv("HOME");
122 m_journalName +="/.abjournal" + appname; 127 m_journalName +="/.abjournal" + appname;
123 128
124 /* Expecting to access the default filename if nothing else is set */ 129 /* Expecting to access the default filename if nothing else is set */
125 if ( filename.isEmpty() ){ 130 if ( filename.isEmpty() ){
@@ -127,20 +132,20 @@ OContactAccessBackend_XML::OContactAccessBackend_XML ( QString appname, QString
127 } else 132 } else
128 m_fileName = filename; 133 m_fileName = filename;
129 134
130 /* Load Database now */ 135 /* Load Database now */
131 load (); 136 load ();
132} 137}
133 138
134bool OContactAccessBackend_XML::save() 139bool OContactAccessBackend_XML::save()
135{ 140{
136 141
137 if ( !m_changed ) 142 if ( !m_changed )
138 return true; 143 return true;
139 144
140 QString strNewFile = m_fileName + ".new"; 145 QString strNewFile = m_fileName + ".new";
141 QFile f( strNewFile ); 146 QFile f( strNewFile );
142 if ( !f.open( IO_WriteOnly|IO_Raw ) ) 147 if ( !f.open( IO_WriteOnly|IO_Raw ) )
143 return false; 148 return false;
144 149
145 int total_written; 150 int total_written;
146 int idx_offset = 0; 151 int idx_offset = 0;
@@ -175,5 +180,5 @@ bool OContactAccessBackend_XML::save()
175 } 180 }
176 out += " </Contacts>\n</AddressBook>\n"; 181 out += " </Contacts>\n</AddressBook>\n";
177 182
178 // Write Footer 183 // Write Footer
179 cstr = out.utf8(); 184 cstr = out.utf8();
@@ -185,5 +190,5 @@ bool OContactAccessBackend_XML::save()
185 } 190 }
186 f.close(); 191 f.close();
187 192
188 // move the file over, I'm just going to use the system call 193 // move the file over, I'm just going to use the system call
189 // because, I don't feel like using QDir. 194 // because, I don't feel like using QDir.
@@ -194,17 +199,17 @@ bool OContactAccessBackend_XML::save()
194 QFile::remove( strNewFile ); 199 QFile::remove( strNewFile );
195 } 200 }
196 201
197 /* The journalfile should be removed now... */ 202 /* The journalfile should be removed now... */
198 removeJournal(); 203 removeJournal();
199 204
200 m_changed = false; 205 m_changed = false;
201 return true; 206 return true;
202} 207}
203 208
204bool OContactAccessBackend_XML::load () 209bool OContactAccessBackend_XML::load ()
205{ 210{
206 m_contactList.clear(); 211 m_contactList.clear();
207 m_uidToContact.clear(); 212 m_uidToContact.clear();
208 213
209 /* Load XML-File and journal if it exists */ 214 /* Load XML-File and journal if it exists */
210 if ( !load ( m_fileName, false ) ) 215 if ( !load ( m_fileName, false ) )
@@ -217,9 +222,9 @@ bool OContactAccessBackend_XML::load ()
217 */ 222 */
218 load (m_journalName, true); 223 load (m_journalName, true);
219 224
220 return true; 225 return true;
221} 226}
222 227
223void OContactAccessBackend_XML::clear () 228void OContactAccessBackend_XML::clear ()
224{ 229{
225 m_contactList.clear(); 230 m_contactList.clear();
@@ -232,20 +237,20 @@ bool OContactAccessBackend_XML::wasChangedExternally()
232{ 237{
233 QFileInfo fi( m_fileName ); 238 QFileInfo fi( m_fileName );
234 239
235 QDateTime lastmod = fi.lastModified (); 240 QDateTime lastmod = fi.lastModified ();
236 241
237 return (lastmod != m_readtime); 242 return (lastmod != m_readtime);
238} 243}
239 244
240QArray<int> OContactAccessBackend_XML::allRecords() const 245QArray<int> OContactAccessBackend_XML::allRecords() const
241{ 246{
242 QArray<int> uid_list( m_contactList.count() ); 247 QArray<int> uid_list( m_contactList.count() );
243 248
244 uint counter = 0; 249 uint counter = 0;
245 QListIterator<OContact> it( m_contactList ); 250 QListIterator<OContact> it( m_contactList );
246 for( ; it.current(); ++it ){ 251 for( ; it.current(); ++it ){
247 uid_list[counter++] = (*it)->uid(); 252 uid_list[counter++] = (*it)->uid();
248 } 253 }
249 254
250 return ( uid_list ); 255 return ( uid_list );
251} 256}
@@ -254,5 +259,5 @@ OContact OContactAccessBackend_XML::find ( int uid ) const
254{ 259{
255 OContact foundContact; //Create empty contact 260 OContact foundContact; //Create empty contact
256 261
257 OContact* found = m_uidToContact.find( QString().setNum( uid ) ); 262 OContact* found = m_uidToContact.find( QString().setNum( uid ) );
258 263
@@ -260,16 +265,16 @@ OContact OContactAccessBackend_XML::find ( int uid ) const
260 foundContact = *found; 265 foundContact = *found;
261 } 266 }
262 267
263 return ( foundContact ); 268 return ( foundContact );
264} 269}
265 270
266QArray<int> OContactAccessBackend_XML::queryByExample ( const OContact &query, int settings, 271QArray<int> OContactAccessBackend_XML::queryByExample ( const OContact &query, int settings,
267 const QDateTime& d ) 272 const QDateTime& d )
268{ 273{
269 274
270 QArray<int> m_currentQuery( m_contactList.count() ); 275 QArray<int> m_currentQuery( m_contactList.count() );
271 QListIterator<OContact> it( m_contactList ); 276 QListIterator<OContact> it( m_contactList );
272 uint arraycounter = 0; 277 uint arraycounter = 0;
273 278
274 for( ; it.current(); ++it ){ 279 for( ; it.current(); ++it ){
275 /* Search all fields and compare them with query object. Store them into list 280 /* Search all fields and compare them with query object. Store them into list
@@ -291,5 +296,5 @@ QArray<int> OContactAccessBackend_XML::queryByExample ( const OContact &query, i
291 checkDate = new QDate( (*it)->anniversary() ); 296 checkDate = new QDate( (*it)->anniversary() );
292 } 297 }
293 298
294 if ( queryDate->isValid() ){ 299 if ( queryDate->isValid() ){
295 if( checkDate->isValid() ){ 300 if( checkDate->isValid() ){
@@ -297,18 +302,18 @@ QArray<int> OContactAccessBackend_XML::queryByExample ( const OContact &query, i
297 if ( queryDate->year() != checkDate->year() ) 302 if ( queryDate->year() != checkDate->year() )
298 allcorrect = false; 303 allcorrect = false;
299 } 304 }
300 if ( settings & OContactAccess::DateMonth ){ 305 if ( settings & OContactAccess::DateMonth ){
301 if ( queryDate->month() != checkDate->month() ) 306 if ( queryDate->month() != checkDate->month() )
302 allcorrect = false; 307 allcorrect = false;
303 } 308 }
304 if ( settings & OContactAccess::DateDay ){ 309 if ( settings & OContactAccess::DateDay ){
305 if ( queryDate->day() != checkDate->day() ) 310 if ( queryDate->day() != checkDate->day() )
306 allcorrect = false; 311 allcorrect = false;
307 } 312 }
308 if ( settings & OContactAccess::DateDiff ) { 313 if ( settings & OContactAccess::DateDiff ) {
309 QDate current; 314 QDate current;
310 // If we get an additional date, we 315 // If we get an additional date, we
311 // will take this date instead of 316 // will take this date instead of
312 // the current one.. 317 // the current one..
313 if ( !d.date().isValid() ) 318 if ( !d.date().isValid() )
314 current = QDate::currentDate(); 319 current = QDate::currentDate();
@@ -318,10 +323,10 @@ QArray<int> OContactAccessBackend_XML::queryByExample ( const OContact &query, i
318 // We have to equalize the year, otherwise 323 // We have to equalize the year, otherwise
319 // the search will fail.. 324 // the search will fail..
320 checkDate->setYMD( current.year(), 325 checkDate->setYMD( current.year(),
321 checkDate->month(), 326 checkDate->month(),
322 checkDate->day() ); 327 checkDate->day() );
323 if ( *checkDate < current ) 328 if ( *checkDate < current )
324 checkDate->setYMD( current.year()+1, 329 checkDate->setYMD( current.year()+1,
325 checkDate->month(), 330 checkDate->month(),
326 checkDate->day() ); 331 checkDate->day() );
327 332
@@ -329,10 +334,10 @@ QArray<int> OContactAccessBackend_XML::queryByExample ( const OContact &query, i
329 // the current/given date and the maximum date 334 // the current/given date and the maximum date
330 // ( maximum time range ) ! 335 // ( maximum time range ) !
331 qWarning("Checking if %s is between %s and %s ! ", 336 qWarning("Checking if %s is between %s and %s ! ",
332 checkDate->toString().latin1(), 337 checkDate->toString().latin1(),
333 current.toString().latin1(), 338 current.toString().latin1(),
334 queryDate->toString().latin1() ); 339 queryDate->toString().latin1() );
335 if ( current.daysTo( *queryDate ) >= 0 ){ 340 if ( current.daysTo( *queryDate ) >= 0 ){
336 if ( !( ( *checkDate >= current ) && 341 if ( !( ( *checkDate >= current ) &&
337 ( *checkDate <= *queryDate ) ) ){ 342 ( *checkDate <= *queryDate ) ) ){
338 allcorrect = false; 343 allcorrect = false;
@@ -346,5 +351,5 @@ QArray<int> OContactAccessBackend_XML::queryByExample ( const OContact &query, i
346 } 351 }
347 } 352 }
348 353
349 delete queryDate; 354 delete queryDate;
350 queryDate = 0l; 355 queryDate = 0l;
@@ -360,7 +365,7 @@ QArray<int> OContactAccessBackend_XML::queryByExample ( const OContact &query, i
360 | OContactAccess::DateMonth 365 | OContactAccess::DateMonth
361 | OContactAccess::DateDay 366 | OContactAccess::DateDay
362 | OContactAccess::MatchOne 367 | OContactAccess::MatchOne
363 ) ){ 368 ) ){
364 369
365 case OContactAccess::RegExp:{ 370 case OContactAccess::RegExp:{
366 QRegExp expr ( query.field(i), 371 QRegExp expr ( query.field(i),
@@ -398,8 +403,8 @@ QArray<int> OContactAccessBackend_XML::queryByExample ( const OContact &query, i
398 } 403 }
399 } 404 }
400 405
401 // Shrink to fit.. 406 // Shrink to fit..
402 m_currentQuery.resize(arraycounter); 407 m_currentQuery.resize(arraycounter);
403 408
404 return m_currentQuery; 409 return m_currentQuery;
405} 410}
@@ -410,14 +415,14 @@ QArray<int> OContactAccessBackend_XML::matchRegexp( const QRegExp &r ) const
410 QListIterator<OContact> it( m_contactList ); 415 QListIterator<OContact> it( m_contactList );
411 uint arraycounter = 0; 416 uint arraycounter = 0;
412 417
413 for( ; it.current(); ++it ){ 418 for( ; it.current(); ++it ){
414 if ( (*it)->match( r ) ){ 419 if ( (*it)->match( r ) ){
415 m_currentQuery[arraycounter++] = (*it)->uid(); 420 m_currentQuery[arraycounter++] = (*it)->uid();
416 } 421 }
417 422
418 } 423 }
419 // Shrink to fit.. 424 // Shrink to fit..
420 m_currentQuery.resize(arraycounter); 425 m_currentQuery.resize(arraycounter);
421 426
422 return m_currentQuery; 427 return m_currentQuery;
423} 428}
@@ -428,5 +433,5 @@ const uint OContactAccessBackend_XML::querySettings()
428 | OContactAccess::IgnoreCase 433 | OContactAccess::IgnoreCase
429 | OContactAccess::RegExp 434 | OContactAccess::RegExp
430 | OContactAccess::ExactMatch 435 | OContactAccess::ExactMatch
431 | OContactAccess::DateDiff 436 | OContactAccess::DateDiff
432 | OContactAccess::DateYear 437 | OContactAccess::DateYear
@@ -438,12 +443,12 @@ const uint OContactAccessBackend_XML::querySettings()
438bool OContactAccessBackend_XML::hasQuerySettings (uint querySettings) const 443bool OContactAccessBackend_XML::hasQuerySettings (uint querySettings) const
439{ 444{
440 /* OContactAccess::IgnoreCase, DateDiff, DateYear, DateMonth, DateDay 445 /* OContactAccess::IgnoreCase, DateDiff, DateYear, DateMonth, DateDay
441 * may be added with any of the other settings. IgnoreCase should never used alone. 446 * may be added with any of the other settings. IgnoreCase should never used alone.
442 * Wildcards, RegExp, ExactMatch should never used at the same time... 447 * Wildcards, RegExp, ExactMatch should never used at the same time...
443 */ 448 */
444 449
445 if ( querySettings == OContactAccess::IgnoreCase ) 450 if ( querySettings == OContactAccess::IgnoreCase )
446 return false; 451 return false;
447 452
448 switch ( querySettings & ~( OContactAccess::IgnoreCase 453 switch ( querySettings & ~( OContactAccess::IgnoreCase
449 | OContactAccess::DateDiff 454 | OContactAccess::DateDiff
@@ -451,5 +456,5 @@ bool OContactAccessBackend_XML::hasQuerySettings (uint querySettings) const
451 | OContactAccess::DateMonth 456 | OContactAccess::DateMonth
452 | OContactAccess::DateDay 457 | OContactAccess::DateDay
453 ) 458 )
454 ){ 459 ){
455 case OContactAccess::RegExp: 460 case OContactAccess::RegExp:
@@ -464,12 +469,12 @@ bool OContactAccessBackend_XML::hasQuerySettings (uint querySettings) const
464} 469}
465 470
466// Currently only asc implemented.. 471// Currently only asc implemented..
467QArray<int> OContactAccessBackend_XML::sorted( bool asc, int , int , int ) 472QArray<int> OContactAccessBackend_XML::sorted( bool asc, int , int , int )
468{ 473{
469 QMap<QString, int> nameToUid; 474 QMap<QString, int> nameToUid;
470 QStringList names; 475 QStringList names;
471 QArray<int> m_currentQuery( m_contactList.count() ); 476 QArray<int> m_currentQuery( m_contactList.count() );
472 477
473 // First fill map and StringList with all Names 478 // First fill map and StringList with all Names
474 // Afterwards sort namelist and use map to fill array to return.. 479 // Afterwards sort namelist and use map to fill array to return..
475 QListIterator<OContact> it( m_contactList ); 480 QListIterator<OContact> it( m_contactList );
@@ -479,5 +484,5 @@ QArray<int> OContactAccessBackend_XML::sorted( bool asc, int , int , int )
479 } 484 }
480 names.sort(); 485 names.sort();
481 486
482 int i = 0; 487 int i = 0;
483 if ( asc ){ 488 if ( asc ){
@@ -488,7 +493,7 @@ QArray<int> OContactAccessBackend_XML::sorted( bool asc, int , int , int )
488 m_currentQuery[i++] = nameToUid[ (*it) ]; 493 m_currentQuery[i++] = nameToUid[ (*it) ];
489 } 494 }
490 495
491 return m_currentQuery; 496 return m_currentQuery;
492 497
493} 498}
494 499
@@ -498,7 +503,7 @@ bool OContactAccessBackend_XML::add ( const OContact &newcontact )
498 updateJournal (newcontact, ACTION_ADD); 503 updateJournal (newcontact, ACTION_ADD);
499 addContact_p( newcontact ); 504 addContact_p( newcontact );
500 505
501 m_changed = true; 506 m_changed = true;
502 507
503 return true; 508 return true;
504} 509}
@@ -507,5 +512,5 @@ bool OContactAccessBackend_XML::replace ( const OContact &contact )
507{ 512{
508 m_changed = true; 513 m_changed = true;
509 514
510 OContact* found = m_uidToContact.find ( QString().setNum( contact.uid() ) ); 515 OContact* found = m_uidToContact.find ( QString().setNum( contact.uid() ) );
511 516
@@ -529,5 +534,5 @@ bool OContactAccessBackend_XML::remove ( int uid )
529{ 534{
530 m_changed = true; 535 m_changed = true;
531 536
532 OContact* found = m_uidToContact.find ( QString().setNum( uid ) ); 537 OContact* found = m_uidToContact.find ( QString().setNum( uid ) );
533 538
@@ -556,7 +561,7 @@ void OContactAccessBackend_XML::addContact_p( const OContact &newcontact )
556 561
557/* This function loads the xml-database and the journalfile */ 562/* This function loads the xml-database and the journalfile */
558bool OContactAccessBackend_XML::load( const QString filename, bool isJournal ) 563bool OContactAccessBackend_XML::load( const QString filename, bool isJournal )
559{ 564{
560 565
561 /* We use the time of the last read to check if the file was 566 /* We use the time of the last read to check if the file was
562 * changed externally. 567 * changed externally.
@@ -566,8 +571,8 @@ bool OContactAccessBackend_XML::load( const QString filename, bool isJournal )
566 m_readtime = fi.lastModified (); 571 m_readtime = fi.lastModified ();
567 } 572 }
568 573
569 const int JOURNALACTION = Qtopia::Notes + 1; 574 const int JOURNALACTION = Qtopia::Notes + 1;
570 const int JOURNALROW = JOURNALACTION + 1; 575 const int JOURNALROW = JOURNALACTION + 1;
571 576
572 bool foundAction = false; 577 bool foundAction = false;
573 journal_action action = ACTION_ADD; 578 journal_action action = ACTION_ADD;
@@ -577,5 +582,5 @@ bool OContactAccessBackend_XML::load( const QString filename, bool isJournal )
577 QMap<QString, QString>::Iterator customIt; 582 QMap<QString, QString>::Iterator customIt;
578 QAsciiDict<int> dict( 47 ); 583 QAsciiDict<int> dict( 47 );
579 584
580 dict.setAutoDelete( TRUE ); 585 dict.setAutoDelete( TRUE );
581 dict.insert( "Uid", new int(Qtopia::AddressUid) ); 586 dict.insert( "Uid", new int(Qtopia::AddressUid) );
@@ -624,7 +629,7 @@ bool OContactAccessBackend_XML::load( const QString filename, bool isJournal )
624 dict.insert( "action", new int(JOURNALACTION) ); 629 dict.insert( "action", new int(JOURNALACTION) );
625 dict.insert( "actionrow", new int(JOURNALROW) ); 630 dict.insert( "actionrow", new int(JOURNALROW) );
626 631
627 //qWarning( "OContactDefaultBackEnd::loading %s", filename.latin1() ); 632 //qWarning( "OContactDefaultBackEnd::loading %s", filename.latin1() );
628 633
629 XMLElement *root = XMLElement::load( filename ); 634 XMLElement *root = XMLElement::load( filename );
630 if(root != 0l ){ // start parsing 635 if(root != 0l ){ // start parsing
@@ -635,5 +640,5 @@ bool OContactAccessBackend_XML::load( const QString filename, bool isJournal )
635 //qWarning("OContactAccess::load tagName(): %s", root->tagName().latin1() ); 640 //qWarning("OContactAccess::load tagName(): %s", root->tagName().latin1() );
636 element = element->firstChild(); 641 element = element->firstChild();
637 642
638 /* Search Tag "Contacts" which is the parent of all Contacts */ 643 /* Search Tag "Contacts" which is the parent of all Contacts */
639 while( element && !isJournal ){ 644 while( element && !isJournal ){
@@ -662,5 +667,5 @@ bool OContactAccessBackend_XML::load( const QString filename, bool isJournal )
662 QString dummy; 667 QString dummy;
663 foundAction = false; 668 foundAction = false;
664 669
665 XMLElement::AttributeMap aMap = element->attributes(); 670 XMLElement::AttributeMap aMap = element->attributes();
666 XMLElement::AttributeMap::Iterator it; 671 XMLElement::AttributeMap::Iterator it;
@@ -669,5 +674,5 @@ bool OContactAccessBackend_XML::load( const QString filename, bool isJournal )
669 for( it = aMap.begin(); it != aMap.end(); ++it ){ 674 for( it = aMap.begin(); it != aMap.end(); ++it ){
670 // qWarning ("Read Attribute: %s=%s", it.key().latin1(),it.data().latin1()); 675 // qWarning ("Read Attribute: %s=%s", it.key().latin1(),it.data().latin1());
671 676
672 int *find = dict[ it.key() ]; 677 int *find = dict[ it.key() ];
673 /* Unknown attributes will be stored as "Custom" elements */ 678 /* Unknown attributes will be stored as "Custom" elements */
@@ -678,5 +683,5 @@ bool OContactAccessBackend_XML::load( const QString filename, bool isJournal )
678 continue; 683 continue;
679 } 684 }
680 685
681 /* Check if special conversion is needed and add attribute 686 /* Check if special conversion is needed and add attribute
682 * into Contact class 687 * into Contact class
@@ -706,9 +711,9 @@ bool OContactAccessBackend_XML::load( const QString filename, bool isJournal )
706 /* now generate the Contact contact */ 711 /* now generate the Contact contact */
707 OContact contact( contactMap ); 712 OContact contact( contactMap );
708 713
709 for (customIt = customMap.begin(); customIt != customMap.end(); ++customIt ) { 714 for (customIt = customMap.begin(); customIt != customMap.end(); ++customIt ) {
710 contact.setCustomField( customIt.key(), customIt.data() ); 715 contact.setCustomField( customIt.key(), customIt.data() );
711 } 716 }
712 717
713 if (foundAction){ 718 if (foundAction){
714 foundAction = false; 719 foundAction = false;
@@ -735,5 +740,5 @@ bool OContactAccessBackend_XML::load( const QString filename, bool isJournal )
735 addContact_p (contact); 740 addContact_p (contact);
736 } 741 }
737 742
738 /* Move to next element */ 743 /* Move to next element */
739 element = element->nextChild(); 744 element = element->nextChild();
@@ -749,5 +754,5 @@ bool OContactAccessBackend_XML::load( const QString filename, bool isJournal )
749 754
750void OContactAccessBackend_XML::updateJournal( const OContact& cnt, 755void OContactAccessBackend_XML::updateJournal( const OContact& cnt,
751 journal_action action ) 756 journal_action action )
752{ 757{
753 QFile f( m_journalName ); 758 QFile f( m_journalName );
@@ -755,8 +760,8 @@ void OContactAccessBackend_XML::updateJournal( const OContact& cnt,
755 if ( !f.open(IO_WriteOnly|IO_Append) ) 760 if ( !f.open(IO_WriteOnly|IO_Append) )
756 return; 761 return;
757 762
758 QString buf; 763 QString buf;
759 QCString str; 764 QCString str;
760 765
761 // if the file was created, we have to set the Tag "<CONTACTS>" to 766 // if the file was created, we have to set the Tag "<CONTACTS>" to
762 // get a XML-File which is readable by our parser. 767 // get a XML-File which is readable by our parser.
@@ -767,5 +772,5 @@ void OContactAccessBackend_XML::updateJournal( const OContact& cnt,
767 f.writeBlock( cstr.data(), cstr.length() ); 772 f.writeBlock( cstr.data(), cstr.length() );
768 } 773 }
769 774
770 buf = "<Contact "; 775 buf = "<Contact ";
771 cnt.save( buf ); 776 cnt.save( buf );
diff --git a/libopie/pim/ocontactaccessbackend_xml.h b/libopie/pim/ocontactaccessbackend_xml.h
index 4d6a7ef..7b5365b 100644
--- a/libopie/pim/ocontactaccessbackend_xml.h
+++ b/libopie/pim/ocontactaccessbackend_xml.h
@@ -18,4 +18,9 @@
18 * History: 18 * History:
19 * $Log$ 19 * $Log$
20 * Revision 1.14 2003/04/13 18:07:10 zecke
21 * More API doc
22 * QString -> const QString&
23 * QString = 0l -> QString::null
24 *
20 * Revision 1.13 2003/03/21 10:33:09 eilers 25 * Revision 1.13 2003/03/21 10:33:09 eilers
21 * Merged speed optimized xml backend for contacts to main. 26 * Merged speed optimized xml backend for contacts to main.
@@ -85,37 +90,42 @@
85 90
86/* the default xml implementation */ 91/* the default xml implementation */
92/**
93 * This class is the XML implementation of a Contact backend
94 * it does implement everything available for OContact.
95 * @see OPimAccessBackend for more information of available methods
96 */
87class OContactAccessBackend_XML : public OContactAccessBackend { 97class OContactAccessBackend_XML : public OContactAccessBackend {
88 public: 98 public:
89 OContactAccessBackend_XML ( QString appname, QString filename = 0l ); 99 OContactAccessBackend_XML ( const QString& appname, const QString& filename = QString::null );
90 100
91 bool save(); 101 bool save();
92 102
93 bool load (); 103 bool load ();
94 104
95 void clear (); 105 void clear ();
96 106
97 bool wasChangedExternally(); 107 bool wasChangedExternally();
98 108
99 QArray<int> allRecords() const; 109 QArray<int> allRecords() const;
100 110
101 OContact find ( int uid ) const; 111 OContact find ( int uid ) const;
102 112
103 QArray<int> queryByExample ( const OContact &query, int settings, const QDateTime& d = QDateTime() ); 113 QArray<int> queryByExample ( const OContact &query, int settings, const QDateTime& d = QDateTime() );
104 114
105 QArray<int> matchRegexp( const QRegExp &r ) const; 115 QArray<int> matchRegexp( const QRegExp &r ) const;
106 116
107 const uint querySettings(); 117 const uint querySettings();
108 118
109 bool hasQuerySettings (uint querySettings) const; 119 bool hasQuerySettings (uint querySettings) const;
110 120
111 // Currently only asc implemented.. 121 // Currently only asc implemented..
112 QArray<int> sorted( bool asc, int , int , int ); 122 QArray<int> sorted( bool asc, int , int , int );
113 bool add ( const OContact &newcontact ); 123 bool add ( const OContact &newcontact );
114 124
115 bool replace ( const OContact &contact ); 125 bool replace ( const OContact &contact );
116 126
117 bool remove ( int uid ); 127 bool remove ( int uid );
118 bool reload(); 128 bool reload();
119 129
120 private: 130 private:
121 131
@@ -123,12 +133,12 @@ class OContactAccessBackend_XML : public OContactAccessBackend {
123 133
124 void addContact_p( const OContact &newcontact ); 134 void addContact_p( const OContact &newcontact );
125 135
126 /* This function loads the xml-database and the journalfile */ 136 /* This function loads the xml-database and the journalfile */
127 bool load( const QString filename, bool isJournal ); 137 bool load( const QString filename, bool isJournal );
128 138
129 139
130 void updateJournal( const OContact& cnt, journal_action action ); 140 void updateJournal( const OContact& cnt, journal_action action );
131 void removeJournal(); 141 void removeJournal();
132 142
133 protected: 143 protected:
134 bool m_changed; 144 bool m_changed;
diff --git a/libopie/pim/odatebookaccess.cpp b/libopie/pim/odatebookaccess.cpp
index 08e61ff..a3661a3 100644
--- a/libopie/pim/odatebookaccess.cpp
+++ b/libopie/pim/odatebookaccess.cpp
@@ -2,4 +2,11 @@
2#include "odatebookaccess.h" 2#include "odatebookaccess.h"
3 3
4/**
5 * Simple constructor
6 * It takes a ODateBookAccessBackend as parent. If it is 0 the default implementation
7 * will be used!
8 * @param back The backend to be used or 0 for the default backend
9 * @param ac What kind of access is intended
10 */
4ODateBookAccess::ODateBookAccess( ODateBookAccessBackend* back, enum Access ac ) 11ODateBookAccess::ODateBookAccess( ODateBookAccessBackend* back, enum Access ac )
5 : OPimAccessTemplate<OEvent>( back ) 12 : OPimAccessTemplate<OEvent>( back )
@@ -13,4 +20,8 @@ ODateBookAccess::ODateBookAccess( ODateBookAccessBackend* back, enum Access ac )
13ODateBookAccess::~ODateBookAccess() { 20ODateBookAccess::~ODateBookAccess() {
14} 21}
22
23/**
24 * @return all events available
25 */
15ODateBookAccess::List ODateBookAccess::rawEvents()const { 26ODateBookAccess::List ODateBookAccess::rawEvents()const {
16 QArray<int> ints = m_backEnd->rawEvents(); 27 QArray<int> ints = m_backEnd->rawEvents();
@@ -19,4 +30,8 @@ ODateBookAccess::List ODateBookAccess::rawEvents()const {
19 return lis; 30 return lis;
20} 31}
32
33/**
34 * @return all repeating events
35 */
21ODateBookAccess::List ODateBookAccess::rawRepeats()const { 36ODateBookAccess::List ODateBookAccess::rawRepeats()const {
22 QArray<int> ints = m_backEnd->rawRepeats(); 37 QArray<int> ints = m_backEnd->rawRepeats();
@@ -25,4 +40,8 @@ ODateBookAccess::List ODateBookAccess::rawRepeats()const {
25 return lis; 40 return lis;
26} 41}
42
43/**
44 * @return all non repeating events
45 */
27ODateBookAccess::List ODateBookAccess::nonRepeats()const { 46ODateBookAccess::List ODateBookAccess::nonRepeats()const {
28 QArray<int> ints = m_backEnd->nonRepeats(); 47 QArray<int> ints = m_backEnd->nonRepeats();
@@ -31,7 +50,16 @@ ODateBookAccess::List ODateBookAccess::nonRepeats()const {
31 return lis; 50 return lis;
32} 51}
52
53/**
54 * @return dates in the time span between from and to
55 * @param from Include all events from...
56 * @param to Include all events to...
57 */
33OEffectiveEvent::ValueList ODateBookAccess::effectiveEvents( const QDate& from, const QDate& to ) { 58OEffectiveEvent::ValueList ODateBookAccess::effectiveEvents( const QDate& from, const QDate& to ) {
34 return m_backEnd->effecticeEvents( from, to ); 59 return m_backEnd->effecticeEvents( from, to );
35} 60}
61/**
62 * @return all events at a given datetime
63 */
36OEffectiveEvent::ValueList ODateBookAccess::effectiveEvents( const QDateTime& start ) { 64OEffectiveEvent::ValueList ODateBookAccess::effectiveEvents( const QDateTime& start ) {
37 return m_backEnd->effecticeEvents( start ); 65 return m_backEnd->effecticeEvents( start );
diff --git a/libopie/pim/odatebookaccess.h b/libopie/pim/odatebookaccess.h
index 7047039..7c7a63f 100644
--- a/libopie/pim/odatebookaccess.h
+++ b/libopie/pim/odatebookaccess.h
@@ -7,4 +7,13 @@
7#include "oevent.h" 7#include "oevent.h"
8 8
9/**
10 * This is the object orientated datebook database. It'll use OBackendFactory
11 * to query for a backend.
12 * All access to the datebook should be done via this class.
13 * Make sure to load and save the datebook this is not part of
14 * destructing and creating the object
15 *
16 * @author Holger Freyther
17 */
9class ODateBookAccess : public OPimAccessTemplate<OEvent> { 18class ODateBookAccess : public OPimAccessTemplate<OEvent> {
10public: 19public:
@@ -12,11 +21,11 @@ public:
12 ~ODateBookAccess(); 21 ~ODateBookAccess();
13 22
14 /** return all events */ 23 /* return all events */
15 List rawEvents()const; 24 List rawEvents()const;
16 25
17 /** return repeating events */ 26 /* return repeating events */
18 List rawRepeats()const; 27 List rawRepeats()const;
19 28
20 /** return non repeating events */ 29 /* return non repeating events */
21 List nonRepeats()const; 30 List nonRepeats()const;
22 31
diff --git a/libopie/pim/odatebookaccessbackend.h b/libopie/pim/odatebookaccessbackend.h
index eb6e8fb..86ff298 100644
--- a/libopie/pim/odatebookaccessbackend.h
+++ b/libopie/pim/odatebookaccessbackend.h
@@ -7,23 +7,64 @@
7#include "oevent.h" 7#include "oevent.h"
8 8
9/**
10 * This class is the interface to the storage of Events.
11 * @see OPimAccessBackend
12 *
13 */
9class ODateBookAccessBackend : public OPimAccessBackend<OEvent> { 14class ODateBookAccessBackend : public OPimAccessBackend<OEvent> {
10public: 15public:
11 typedef int UID; 16 typedef int UID;
17
18 /**
19 * c'tor without parameter
20 */
12 ODateBookAccessBackend(); 21 ODateBookAccessBackend();
13 ~ODateBookAccessBackend(); 22 ~ODateBookAccessBackend();
14 23
24 /**
25 * This method should return a list of UIDs containing
26 * all events. No filter should be applied
27 * @return list of events
28 */
15 virtual QArray<UID> rawEvents()const = 0; 29 virtual QArray<UID> rawEvents()const = 0;
30
31 /**
32 * This method should return a list of UIDs containing
33 * all repeating events. No filter should be applied
34 * @return list of repeating events
35 */
16 virtual QArray<UID> rawRepeats()const = 0; 36 virtual QArray<UID> rawRepeats()const = 0;
37
38 /**
39 * This mthod should return a list of UIDs containing all non
40 * repeating events. No filter should be applied
41 * @return list of nonrepeating events
42 */
17 virtual QArray<UID> nonRepeats() const = 0; 43 virtual QArray<UID> nonRepeats() const = 0;
18 44
19 /** 45 /**
20 * these two methods are used if you do not implement 46 * If you do not want to implement the effectiveEvents methods below
21 * effectiveEvents... 47 * you need to supply it with directNonRepeats.
48 * This method can return empty lists if effectiveEvents is implememted
22 */ 49 */
23 virtual OEvent::ValueList directNonRepeats() = 0; 50 virtual OEvent::ValueList directNonRepeats() = 0;
51
52 /**
53 * Same as above but return raw repeats!
54 */
24 virtual OEvent::ValueList directRawRepeats() = 0; 55 virtual OEvent::ValueList directRawRepeats() = 0;
25 56
26 /* is implemented by default but you can reimplement it*/ 57 /* is implemented by default but you can reimplement it*/
58 /**
59 * Effective Events are special event occuring during a time frame. This method does calcualte
60 * EffectiveEvents bases on the directNonRepeats and directRawRepeats. You may implement this method
61 * yourself
62 */
27 virtual OEffectiveEvent::ValueList effecticeEvents( const QDate& from, const QDate& to ); 63 virtual OEffectiveEvent::ValueList effecticeEvents( const QDate& from, const QDate& to );
64
65 /**
66 * this is an overloaded member function
67 * @see effecticeEvents
68 */
28 virtual OEffectiveEvent::ValueList effecticeEvents( const QDateTime& start ); 69 virtual OEffectiveEvent::ValueList effecticeEvents( const QDateTime& start );
29 70
diff --git a/libopie/pim/odatebookaccessbackend_xml.h b/libopie/pim/odatebookaccessbackend_xml.h
index 563c31f..7848f7c 100644
--- a/libopie/pim/odatebookaccessbackend_xml.h
+++ b/libopie/pim/odatebookaccessbackend_xml.h
@@ -6,4 +6,10 @@
6#include "odatebookaccessbackend.h" 6#include "odatebookaccessbackend.h"
7 7
8/**
9 * This is the default XML implementation for DateBoook XML storage
10 * It fully implements the interface
11 * @see ODateBookAccessBackend
12 * @see OPimAccessBackend
13 */
8class ODateBookAccessBackend_XML : public ODateBookAccessBackend { 14class ODateBookAccessBackend_XML : public ODateBookAccessBackend {
9public: 15public:
diff --git a/libopie/pim/oevent.h b/libopie/pim/oevent.h
index 585515c..57d32d0 100644
--- a/libopie/pim/oevent.h
+++ b/libopie/pim/oevent.h
@@ -31,7 +31,16 @@ struct OCalendarHelper {
31class OPimNotifyManager; 31class OPimNotifyManager;
32class ORecur; 32class ORecur;
33
34/**
35 * This is the container for all Events. It encapsules all
36 * available information for a single Event
37 * @short container for events.
38 */
33class OEvent : public OPimRecord { 39class OEvent : public OPimRecord {
34public: 40public:
35 typedef QValueList<OEvent> ValueList; 41 typedef QValueList<OEvent> ValueList;
42 /**
43 * RecordFields contain possible attributes
44 */
36 enum RecordFields { 45 enum RecordFields {
37 Uid = Qtopia::UID_ID, 46 Uid = Qtopia::UID_ID,
@@ -50,5 +59,12 @@ public:
50 }; 59 };
51 60
61 /**
62 * Start with an Empty OEvent. UID == 0 means that it is empty
63 */
52 OEvent(int uid = 0); 64 OEvent(int uid = 0);
65
66 /**
67 * copy c'tor
68 */
53 OEvent( const OEvent& ); 69 OEvent( const OEvent& );
54 ~OEvent(); 70 ~OEvent();
@@ -145,5 +161,4 @@ private:
145 * AN Event can span through multiple days. We split up a multiday eve 161 * AN Event can span through multiple days. We split up a multiday eve
146 */ 162 */
147
148class OEffectiveEvent { 163class OEffectiveEvent {
149public: 164public:
diff --git a/libopie2/opiepim/backend/obackendfactory.h b/libopie2/opiepim/backend/obackendfactory.h
index 3a73210..ad6cf5a 100644
--- a/libopie2/opiepim/backend/obackendfactory.h
+++ b/libopie2/opiepim/backend/obackendfactory.h
@@ -17,4 +17,9 @@
17 * History: 17 * History:
18 * $Log$ 18 * $Log$
19 * Revision 1.6 2003/04/13 18:07:10 zecke
20 * More API doc
21 * QString -> const QString&
22 * QString = 0l -> QString::null
23 *
19 * Revision 1.5 2003/02/21 23:31:52 zecke 24 * Revision 1.5 2003/02/21 23:31:52 zecke
20 * Add XML datebookresource 25 * Add XML datebookresource
@@ -64,5 +69,19 @@
64#endif 69#endif
65 70
66 71/**
72 * This class is our factory. It will give us the default implementations
73 * of at least Todolist, Contacts and Datebook. In the future this class will
74 * allow users to switch the backend with ( XML->SQLite ) without the need
75 * to recompile.#
76 * This class as the whole PIM Api is making use of templates
77 *
78 * <pre>
79 * OTodoAccessBackend* backend = OBackEndFactory<OTodoAccessBackend>::Default("todo", QString::null );
80 * backend->load();
81 * </pre>
82 *
83 * @author Stefan Eilers
84 * @version 0.1
85 */
67template<class T> 86template<class T>
68class OBackendFactory 87class OBackendFactory
@@ -77,4 +96,9 @@ class OBackendFactory
77 }; 96 };
78 97
98 /**
99 * Returns a backend implementation for backendName
100 * @param backendName the type of the backend
101 * @param appName will be passed on to the backend
102 */
79 static T* Default( const QString backendName, const QString& appName ){ 103 static T* Default( const QString backendName, const QString& appName ){
80 104
diff --git a/libopie2/opiepim/backend/ocontactaccessbackend.h b/libopie2/opiepim/backend/ocontactaccessbackend.h
index 821f5bf..ebeb42d 100644
--- a/libopie2/opiepim/backend/ocontactaccessbackend.h
+++ b/libopie2/opiepim/backend/ocontactaccessbackend.h
@@ -20,4 +20,9 @@
20 * History: 20 * History:
21 * $Log$ 21 * $Log$
22 * Revision 1.5 2003/04/13 18:07:10 zecke
23 * More API doc
24 * QString -> const QString&
25 * QString = 0l -> QString::null
26 *
22 * Revision 1.4 2002/11/13 14:14:51 eilers 27 * Revision 1.4 2002/11/13 14:14:51 eilers
23 * Added sorted for Contacts.. 28 * Added sorted for Contacts..
@@ -45,6 +50,16 @@
45#include "opimaccessbackend.h" 50#include "opimaccessbackend.h"
46 51
47#include "qregexp.h" 52#include <qregexp.h>
48 53
54/**
55 * This class represents the interface of all Contact Backends.
56 * Derivates of this class will be used to access the contacts.
57 * As implementation currently XML and vCard exist. This class needs to be implemented
58 * if you want to provide your own storage.
59 * In all queries a list of uids is passed on instead of loading the actual record!
60 *
61 * @see OContactAccessBackend_VCard
62 * @see OContactAccessBackend_XML
63 */
49class OContactAccessBackend: public OPimAccessBackend<OContact> { 64class OContactAccessBackend: public OPimAccessBackend<OContact> {
50 public: 65 public:
@@ -53,5 +68,6 @@ class OContactAccessBackend: public OPimAccessBackend<OContact> {
53 68
54 69
55 /** Return if database was changed externally. 70 /**
71 * Return if database was changed externally.
56 * This may just make sense on file based databases like a XML-File. 72 * This may just make sense on file based databases like a XML-File.
57 * It is used to prevent to overwrite the current database content 73 * It is used to prevent to overwrite the current database content
@@ -69,5 +85,6 @@ class OContactAccessBackend: public OPimAccessBackend<OContact> {
69 virtual QArray<int> matchRegexp( const QRegExp &r ) const = 0; 85 virtual QArray<int> matchRegexp( const QRegExp &r ) const = 0;
70 86
71 /** Return all possible settings. 87 /**
88 * Return all possible settings.
72 * @return All settings provided by the current backend 89 * @return All settings provided by the current backend
73 * (i.e.: query_WildCards & query_IgnoreCase) 90 * (i.e.: query_WildCards & query_IgnoreCase)
@@ -75,10 +92,15 @@ class OContactAccessBackend: public OPimAccessBackend<OContact> {
75 virtual const uint querySettings() = 0; 92 virtual const uint querySettings() = 0;
76 93
77 /** Check whether settings are correct. 94 /**
95 * Check whether settings are correct.
78 * @return <i>true</i> if the given settings are correct and possible. 96 * @return <i>true</i> if the given settings are correct and possible.
79 */ 97 */
80 virtual bool hasQuerySettings (uint querySettings) const = 0; 98 virtual bool hasQuerySettings (uint querySettings) const = 0;
81 99
82 virtual QArray<int> sorted( bool ascending, int sortOrder, int sortFilter, int cat ) = 0; 100 /**
101 * FIXME!!!
102 * Returns a sorted list of records either ascendinf or descending for a giving criteria and category
103 */
104 virtual QArray<int> sorted( bool ascending, int sortOrder, int sortFilter, int cat ) = 0;
83 105
84}; 106};
diff --git a/libopie2/opiepim/backend/ocontactaccessbackend_vcard.cpp b/libopie2/opiepim/backend/ocontactaccessbackend_vcard.cpp
index f24523f..270bef3 100644
--- a/libopie2/opiepim/backend/ocontactaccessbackend_vcard.cpp
+++ b/libopie2/opiepim/backend/ocontactaccessbackend_vcard.cpp
@@ -18,4 +18,9 @@
18 * History: 18 * History:
19 * $Log$ 19 * $Log$
20 * Revision 1.10 2003/04/13 18:07:10 zecke
21 * More API doc
22 * QString -> const QString&
23 * QString = 0l -> QString::null
24 *
20 * Revision 1.9 2003/03/21 10:33:09 eilers 25 * Revision 1.9 2003/03/21 10:33:09 eilers
21 * Merged speed optimized xml backend for contacts to main. 26 * Merged speed optimized xml backend for contacts to main.
@@ -77,5 +82,5 @@
77#include <qfile.h> 82#include <qfile.h>
78 83
79OContactAccessBackend_VCard::OContactAccessBackend_VCard ( QString , QString filename ): 84OContactAccessBackend_VCard::OContactAccessBackend_VCard ( const QString& , const QString& filename ):
80 m_dirty( false ), 85 m_dirty( false ),
81 m_file( filename ) 86 m_file( filename )
diff --git a/libopie2/opiepim/backend/ocontactaccessbackend_vcard.h b/libopie2/opiepim/backend/ocontactaccessbackend_vcard.h
index 93e2da3..712d769 100644
--- a/libopie2/opiepim/backend/ocontactaccessbackend_vcard.h
+++ b/libopie2/opiepim/backend/ocontactaccessbackend_vcard.h
@@ -18,4 +18,9 @@
18 * History: 18 * History:
19 * $Log$ 19 * $Log$
20 * Revision 1.6 2003/04/13 18:07:10 zecke
21 * More API doc
22 * QString -> const QString&
23 * QString = 0l -> QString::null
24 *
20 * Revision 1.5 2003/03/21 10:33:09 eilers 25 * Revision 1.5 2003/03/21 10:33:09 eilers
21 * Merged speed optimized xml backend for contacts to main. 26 * Merged speed optimized xml backend for contacts to main.
@@ -48,7 +53,12 @@
48class VObject; 53class VObject;
49 54
55/**
56 * This is the vCard 2.1 implementation of the Contact Storage
57 * @see OContactAccessBackend_XML
58 * @see OPimAccessBackend
59 */
50class OContactAccessBackend_VCard : public OContactAccessBackend { 60class OContactAccessBackend_VCard : public OContactAccessBackend {
51 public: 61 public:
52 OContactAccessBackend_VCard ( QString appname, QString filename = 0l ); 62 OContactAccessBackend_VCard ( const QString& appname, const QString& filename = QString::null );
53 63
54 bool load (); 64 bool load ();
@@ -60,5 +70,5 @@ class OContactAccessBackend_VCard : public OContactAccessBackend {
60 bool remove ( int uid ); 70 bool remove ( int uid );
61 bool replace ( const OContact& contact ); 71 bool replace ( const OContact& contact );
62 72
63 OContact find ( int uid ) const; 73 OContact find ( int uid ) const;
64 QArray<int> allRecords() const; 74 QArray<int> allRecords() const;
@@ -70,5 +80,5 @@ class OContactAccessBackend_VCard : public OContactAccessBackend {
70 QArray<int> sorted( bool ascending, int sortOrder, int sortFilter, int cat ); 80 QArray<int> sorted( bool ascending, int sortOrder, int sortFilter, int cat );
71 bool wasChangedExternally(); 81 bool wasChangedExternally();
72 82
73private: 83private:
74 OContact parseVObject( VObject* obj ); 84 OContact parseVObject( VObject* obj );
@@ -78,5 +88,5 @@ private:
78 VObject *safeAddPropValue( VObject *o, const char* prop, const QString& value ); 88 VObject *safeAddPropValue( VObject *o, const char* prop, const QString& value );
79 VObject *safeAddProp( VObject* o, const char* prop); 89 VObject *safeAddProp( VObject* o, const char* prop);
80 90
81 bool m_dirty : 1; 91 bool m_dirty : 1;
82 QString m_file; 92 QString m_file;
diff --git a/libopie2/opiepim/backend/ocontactaccessbackend_xml.cpp b/libopie2/opiepim/backend/ocontactaccessbackend_xml.cpp
index c5a7820..661cd51 100644
--- a/libopie2/opiepim/backend/ocontactaccessbackend_xml.cpp
+++ b/libopie2/opiepim/backend/ocontactaccessbackend_xml.cpp
@@ -18,4 +18,9 @@
18 * History: 18 * History:
19 * $Log$ 19 * $Log$
20 * Revision 1.5 2003/04/13 18:07:10 zecke
21 * More API doc
22 * QString -> const QString&
23 * QString = 0l -> QString::null
24 *
20 * Revision 1.4 2003/03/21 14:32:54 mickeyl 25 * Revision 1.4 2003/03/21 14:32:54 mickeyl
21 * g++ compliance fix: default arguments belong into the declaration, but not the definition 26 * g++ compliance fix: default arguments belong into the declaration, but not the definition
@@ -94,5 +99,5 @@
94#include <qarray.h> 99#include <qarray.h>
95#include <qmap.h> 100#include <qmap.h>
96#include <qdatetime.h> 101#include <qdatetime.h>
97 102
98#include <qpe/global.h> 103#include <qpe/global.h>
@@ -108,5 +113,5 @@ using namespace Opie;
108 113
109 114
110OContactAccessBackend_XML::OContactAccessBackend_XML ( QString appname, QString filename ): 115OContactAccessBackend_XML::OContactAccessBackend_XML ( const QString& appname, const QString& filename ):
111 m_changed( false ) 116 m_changed( false )
112{ 117{
@@ -117,9 +122,9 @@ OContactAccessBackend_XML::OContactAccessBackend_XML ( QString appname, QString
117 122
118 m_appName = appname; 123 m_appName = appname;
119 124
120 /* Set journalfile name ... */ 125 /* Set journalfile name ... */
121 m_journalName = getenv("HOME"); 126 m_journalName = getenv("HOME");
122 m_journalName +="/.abjournal" + appname; 127 m_journalName +="/.abjournal" + appname;
123 128
124 /* Expecting to access the default filename if nothing else is set */ 129 /* Expecting to access the default filename if nothing else is set */
125 if ( filename.isEmpty() ){ 130 if ( filename.isEmpty() ){
@@ -127,20 +132,20 @@ OContactAccessBackend_XML::OContactAccessBackend_XML ( QString appname, QString
127 } else 132 } else
128 m_fileName = filename; 133 m_fileName = filename;
129 134
130 /* Load Database now */ 135 /* Load Database now */
131 load (); 136 load ();
132} 137}
133 138
134bool OContactAccessBackend_XML::save() 139bool OContactAccessBackend_XML::save()
135{ 140{
136 141
137 if ( !m_changed ) 142 if ( !m_changed )
138 return true; 143 return true;
139 144
140 QString strNewFile = m_fileName + ".new"; 145 QString strNewFile = m_fileName + ".new";
141 QFile f( strNewFile ); 146 QFile f( strNewFile );
142 if ( !f.open( IO_WriteOnly|IO_Raw ) ) 147 if ( !f.open( IO_WriteOnly|IO_Raw ) )
143 return false; 148 return false;
144 149
145 int total_written; 150 int total_written;
146 int idx_offset = 0; 151 int idx_offset = 0;
@@ -175,5 +180,5 @@ bool OContactAccessBackend_XML::save()
175 } 180 }
176 out += " </Contacts>\n</AddressBook>\n"; 181 out += " </Contacts>\n</AddressBook>\n";
177 182
178 // Write Footer 183 // Write Footer
179 cstr = out.utf8(); 184 cstr = out.utf8();
@@ -185,5 +190,5 @@ bool OContactAccessBackend_XML::save()
185 } 190 }
186 f.close(); 191 f.close();
187 192
188 // move the file over, I'm just going to use the system call 193 // move the file over, I'm just going to use the system call
189 // because, I don't feel like using QDir. 194 // because, I don't feel like using QDir.
@@ -194,17 +199,17 @@ bool OContactAccessBackend_XML::save()
194 QFile::remove( strNewFile ); 199 QFile::remove( strNewFile );
195 } 200 }
196 201
197 /* The journalfile should be removed now... */ 202 /* The journalfile should be removed now... */
198 removeJournal(); 203 removeJournal();
199 204
200 m_changed = false; 205 m_changed = false;
201 return true; 206 return true;
202} 207}
203 208
204bool OContactAccessBackend_XML::load () 209bool OContactAccessBackend_XML::load ()
205{ 210{
206 m_contactList.clear(); 211 m_contactList.clear();
207 m_uidToContact.clear(); 212 m_uidToContact.clear();
208 213
209 /* Load XML-File and journal if it exists */ 214 /* Load XML-File and journal if it exists */
210 if ( !load ( m_fileName, false ) ) 215 if ( !load ( m_fileName, false ) )
@@ -217,9 +222,9 @@ bool OContactAccessBackend_XML::load ()
217 */ 222 */
218 load (m_journalName, true); 223 load (m_journalName, true);
219 224
220 return true; 225 return true;
221} 226}
222 227
223void OContactAccessBackend_XML::clear () 228void OContactAccessBackend_XML::clear ()
224{ 229{
225 m_contactList.clear(); 230 m_contactList.clear();
@@ -232,20 +237,20 @@ bool OContactAccessBackend_XML::wasChangedExternally()
232{ 237{
233 QFileInfo fi( m_fileName ); 238 QFileInfo fi( m_fileName );
234 239
235 QDateTime lastmod = fi.lastModified (); 240 QDateTime lastmod = fi.lastModified ();
236 241
237 return (lastmod != m_readtime); 242 return (lastmod != m_readtime);
238} 243}
239 244
240QArray<int> OContactAccessBackend_XML::allRecords() const 245QArray<int> OContactAccessBackend_XML::allRecords() const
241{ 246{
242 QArray<int> uid_list( m_contactList.count() ); 247 QArray<int> uid_list( m_contactList.count() );
243 248
244 uint counter = 0; 249 uint counter = 0;
245 QListIterator<OContact> it( m_contactList ); 250 QListIterator<OContact> it( m_contactList );
246 for( ; it.current(); ++it ){ 251 for( ; it.current(); ++it ){
247 uid_list[counter++] = (*it)->uid(); 252 uid_list[counter++] = (*it)->uid();
248 } 253 }
249 254
250 return ( uid_list ); 255 return ( uid_list );
251} 256}
@@ -254,5 +259,5 @@ OContact OContactAccessBackend_XML::find ( int uid ) const
254{ 259{
255 OContact foundContact; //Create empty contact 260 OContact foundContact; //Create empty contact
256 261
257 OContact* found = m_uidToContact.find( QString().setNum( uid ) ); 262 OContact* found = m_uidToContact.find( QString().setNum( uid ) );
258 263
@@ -260,16 +265,16 @@ OContact OContactAccessBackend_XML::find ( int uid ) const
260 foundContact = *found; 265 foundContact = *found;
261 } 266 }
262 267
263 return ( foundContact ); 268 return ( foundContact );
264} 269}
265 270
266QArray<int> OContactAccessBackend_XML::queryByExample ( const OContact &query, int settings, 271QArray<int> OContactAccessBackend_XML::queryByExample ( const OContact &query, int settings,
267 const QDateTime& d ) 272 const QDateTime& d )
268{ 273{
269 274
270 QArray<int> m_currentQuery( m_contactList.count() ); 275 QArray<int> m_currentQuery( m_contactList.count() );
271 QListIterator<OContact> it( m_contactList ); 276 QListIterator<OContact> it( m_contactList );
272 uint arraycounter = 0; 277 uint arraycounter = 0;
273 278
274 for( ; it.current(); ++it ){ 279 for( ; it.current(); ++it ){
275 /* Search all fields and compare them with query object. Store them into list 280 /* Search all fields and compare them with query object. Store them into list
@@ -291,5 +296,5 @@ QArray<int> OContactAccessBackend_XML::queryByExample ( const OContact &query, i
291 checkDate = new QDate( (*it)->anniversary() ); 296 checkDate = new QDate( (*it)->anniversary() );
292 } 297 }
293 298
294 if ( queryDate->isValid() ){ 299 if ( queryDate->isValid() ){
295 if( checkDate->isValid() ){ 300 if( checkDate->isValid() ){
@@ -297,18 +302,18 @@ QArray<int> OContactAccessBackend_XML::queryByExample ( const OContact &query, i
297 if ( queryDate->year() != checkDate->year() ) 302 if ( queryDate->year() != checkDate->year() )
298 allcorrect = false; 303 allcorrect = false;
299 } 304 }
300 if ( settings & OContactAccess::DateMonth ){ 305 if ( settings & OContactAccess::DateMonth ){
301 if ( queryDate->month() != checkDate->month() ) 306 if ( queryDate->month() != checkDate->month() )
302 allcorrect = false; 307 allcorrect = false;
303 } 308 }
304 if ( settings & OContactAccess::DateDay ){ 309 if ( settings & OContactAccess::DateDay ){
305 if ( queryDate->day() != checkDate->day() ) 310 if ( queryDate->day() != checkDate->day() )
306 allcorrect = false; 311 allcorrect = false;
307 } 312 }
308 if ( settings & OContactAccess::DateDiff ) { 313 if ( settings & OContactAccess::DateDiff ) {
309 QDate current; 314 QDate current;
310 // If we get an additional date, we 315 // If we get an additional date, we
311 // will take this date instead of 316 // will take this date instead of
312 // the current one.. 317 // the current one..
313 if ( !d.date().isValid() ) 318 if ( !d.date().isValid() )
314 current = QDate::currentDate(); 319 current = QDate::currentDate();
@@ -318,10 +323,10 @@ QArray<int> OContactAccessBackend_XML::queryByExample ( const OContact &query, i
318 // We have to equalize the year, otherwise 323 // We have to equalize the year, otherwise
319 // the search will fail.. 324 // the search will fail..
320 checkDate->setYMD( current.year(), 325 checkDate->setYMD( current.year(),
321 checkDate->month(), 326 checkDate->month(),
322 checkDate->day() ); 327 checkDate->day() );
323 if ( *checkDate < current ) 328 if ( *checkDate < current )
324 checkDate->setYMD( current.year()+1, 329 checkDate->setYMD( current.year()+1,
325 checkDate->month(), 330 checkDate->month(),
326 checkDate->day() ); 331 checkDate->day() );
327 332
@@ -329,10 +334,10 @@ QArray<int> OContactAccessBackend_XML::queryByExample ( const OContact &query, i
329 // the current/given date and the maximum date 334 // the current/given date and the maximum date
330 // ( maximum time range ) ! 335 // ( maximum time range ) !
331 qWarning("Checking if %s is between %s and %s ! ", 336 qWarning("Checking if %s is between %s and %s ! ",
332 checkDate->toString().latin1(), 337 checkDate->toString().latin1(),
333 current.toString().latin1(), 338 current.toString().latin1(),
334 queryDate->toString().latin1() ); 339 queryDate->toString().latin1() );
335 if ( current.daysTo( *queryDate ) >= 0 ){ 340 if ( current.daysTo( *queryDate ) >= 0 ){
336 if ( !( ( *checkDate >= current ) && 341 if ( !( ( *checkDate >= current ) &&
337 ( *checkDate <= *queryDate ) ) ){ 342 ( *checkDate <= *queryDate ) ) ){
338 allcorrect = false; 343 allcorrect = false;
@@ -346,5 +351,5 @@ QArray<int> OContactAccessBackend_XML::queryByExample ( const OContact &query, i
346 } 351 }
347 } 352 }
348 353
349 delete queryDate; 354 delete queryDate;
350 queryDate = 0l; 355 queryDate = 0l;
@@ -360,7 +365,7 @@ QArray<int> OContactAccessBackend_XML::queryByExample ( const OContact &query, i
360 | OContactAccess::DateMonth 365 | OContactAccess::DateMonth
361 | OContactAccess::DateDay 366 | OContactAccess::DateDay
362 | OContactAccess::MatchOne 367 | OContactAccess::MatchOne
363 ) ){ 368 ) ){
364 369
365 case OContactAccess::RegExp:{ 370 case OContactAccess::RegExp:{
366 QRegExp expr ( query.field(i), 371 QRegExp expr ( query.field(i),
@@ -398,8 +403,8 @@ QArray<int> OContactAccessBackend_XML::queryByExample ( const OContact &query, i
398 } 403 }
399 } 404 }
400 405
401 // Shrink to fit.. 406 // Shrink to fit..
402 m_currentQuery.resize(arraycounter); 407 m_currentQuery.resize(arraycounter);
403 408
404 return m_currentQuery; 409 return m_currentQuery;
405} 410}
@@ -410,14 +415,14 @@ QArray<int> OContactAccessBackend_XML::matchRegexp( const QRegExp &r ) const
410 QListIterator<OContact> it( m_contactList ); 415 QListIterator<OContact> it( m_contactList );
411 uint arraycounter = 0; 416 uint arraycounter = 0;
412 417
413 for( ; it.current(); ++it ){ 418 for( ; it.current(); ++it ){
414 if ( (*it)->match( r ) ){ 419 if ( (*it)->match( r ) ){
415 m_currentQuery[arraycounter++] = (*it)->uid(); 420 m_currentQuery[arraycounter++] = (*it)->uid();
416 } 421 }
417 422
418 } 423 }
419 // Shrink to fit.. 424 // Shrink to fit..
420 m_currentQuery.resize(arraycounter); 425 m_currentQuery.resize(arraycounter);
421 426
422 return m_currentQuery; 427 return m_currentQuery;
423} 428}
@@ -428,5 +433,5 @@ const uint OContactAccessBackend_XML::querySettings()
428 | OContactAccess::IgnoreCase 433 | OContactAccess::IgnoreCase
429 | OContactAccess::RegExp 434 | OContactAccess::RegExp
430 | OContactAccess::ExactMatch 435 | OContactAccess::ExactMatch
431 | OContactAccess::DateDiff 436 | OContactAccess::DateDiff
432 | OContactAccess::DateYear 437 | OContactAccess::DateYear
@@ -438,12 +443,12 @@ const uint OContactAccessBackend_XML::querySettings()
438bool OContactAccessBackend_XML::hasQuerySettings (uint querySettings) const 443bool OContactAccessBackend_XML::hasQuerySettings (uint querySettings) const
439{ 444{
440 /* OContactAccess::IgnoreCase, DateDiff, DateYear, DateMonth, DateDay 445 /* OContactAccess::IgnoreCase, DateDiff, DateYear, DateMonth, DateDay
441 * may be added with any of the other settings. IgnoreCase should never used alone. 446 * may be added with any of the other settings. IgnoreCase should never used alone.
442 * Wildcards, RegExp, ExactMatch should never used at the same time... 447 * Wildcards, RegExp, ExactMatch should never used at the same time...
443 */ 448 */
444 449
445 if ( querySettings == OContactAccess::IgnoreCase ) 450 if ( querySettings == OContactAccess::IgnoreCase )
446 return false; 451 return false;
447 452
448 switch ( querySettings & ~( OContactAccess::IgnoreCase 453 switch ( querySettings & ~( OContactAccess::IgnoreCase
449 | OContactAccess::DateDiff 454 | OContactAccess::DateDiff
@@ -451,5 +456,5 @@ bool OContactAccessBackend_XML::hasQuerySettings (uint querySettings) const
451 | OContactAccess::DateMonth 456 | OContactAccess::DateMonth
452 | OContactAccess::DateDay 457 | OContactAccess::DateDay
453 ) 458 )
454 ){ 459 ){
455 case OContactAccess::RegExp: 460 case OContactAccess::RegExp:
@@ -464,12 +469,12 @@ bool OContactAccessBackend_XML::hasQuerySettings (uint querySettings) const
464} 469}
465 470
466// Currently only asc implemented.. 471// Currently only asc implemented..
467QArray<int> OContactAccessBackend_XML::sorted( bool asc, int , int , int ) 472QArray<int> OContactAccessBackend_XML::sorted( bool asc, int , int , int )
468{ 473{
469 QMap<QString, int> nameToUid; 474 QMap<QString, int> nameToUid;
470 QStringList names; 475 QStringList names;
471 QArray<int> m_currentQuery( m_contactList.count() ); 476 QArray<int> m_currentQuery( m_contactList.count() );
472 477
473 // First fill map and StringList with all Names 478 // First fill map and StringList with all Names
474 // Afterwards sort namelist and use map to fill array to return.. 479 // Afterwards sort namelist and use map to fill array to return..
475 QListIterator<OContact> it( m_contactList ); 480 QListIterator<OContact> it( m_contactList );
@@ -479,5 +484,5 @@ QArray<int> OContactAccessBackend_XML::sorted( bool asc, int , int , int )
479 } 484 }
480 names.sort(); 485 names.sort();
481 486
482 int i = 0; 487 int i = 0;
483 if ( asc ){ 488 if ( asc ){
@@ -488,7 +493,7 @@ QArray<int> OContactAccessBackend_XML::sorted( bool asc, int , int , int )
488 m_currentQuery[i++] = nameToUid[ (*it) ]; 493 m_currentQuery[i++] = nameToUid[ (*it) ];
489 } 494 }
490 495
491 return m_currentQuery; 496 return m_currentQuery;
492 497
493} 498}
494 499
@@ -498,7 +503,7 @@ bool OContactAccessBackend_XML::add ( const OContact &newcontact )
498 updateJournal (newcontact, ACTION_ADD); 503 updateJournal (newcontact, ACTION_ADD);
499 addContact_p( newcontact ); 504 addContact_p( newcontact );
500 505
501 m_changed = true; 506 m_changed = true;
502 507
503 return true; 508 return true;
504} 509}
@@ -507,5 +512,5 @@ bool OContactAccessBackend_XML::replace ( const OContact &contact )
507{ 512{
508 m_changed = true; 513 m_changed = true;
509 514
510 OContact* found = m_uidToContact.find ( QString().setNum( contact.uid() ) ); 515 OContact* found = m_uidToContact.find ( QString().setNum( contact.uid() ) );
511 516
@@ -529,5 +534,5 @@ bool OContactAccessBackend_XML::remove ( int uid )
529{ 534{
530 m_changed = true; 535 m_changed = true;
531 536
532 OContact* found = m_uidToContact.find ( QString().setNum( uid ) ); 537 OContact* found = m_uidToContact.find ( QString().setNum( uid ) );
533 538
@@ -556,7 +561,7 @@ void OContactAccessBackend_XML::addContact_p( const OContact &newcontact )
556 561
557/* This function loads the xml-database and the journalfile */ 562/* This function loads the xml-database and the journalfile */
558bool OContactAccessBackend_XML::load( const QString filename, bool isJournal ) 563bool OContactAccessBackend_XML::load( const QString filename, bool isJournal )
559{ 564{
560 565
561 /* We use the time of the last read to check if the file was 566 /* We use the time of the last read to check if the file was
562 * changed externally. 567 * changed externally.
@@ -566,8 +571,8 @@ bool OContactAccessBackend_XML::load( const QString filename, bool isJournal )
566 m_readtime = fi.lastModified (); 571 m_readtime = fi.lastModified ();
567 } 572 }
568 573
569 const int JOURNALACTION = Qtopia::Notes + 1; 574 const int JOURNALACTION = Qtopia::Notes + 1;
570 const int JOURNALROW = JOURNALACTION + 1; 575 const int JOURNALROW = JOURNALACTION + 1;
571 576
572 bool foundAction = false; 577 bool foundAction = false;
573 journal_action action = ACTION_ADD; 578 journal_action action = ACTION_ADD;
@@ -577,5 +582,5 @@ bool OContactAccessBackend_XML::load( const QString filename, bool isJournal )
577 QMap<QString, QString>::Iterator customIt; 582 QMap<QString, QString>::Iterator customIt;
578 QAsciiDict<int> dict( 47 ); 583 QAsciiDict<int> dict( 47 );
579 584
580 dict.setAutoDelete( TRUE ); 585 dict.setAutoDelete( TRUE );
581 dict.insert( "Uid", new int(Qtopia::AddressUid) ); 586 dict.insert( "Uid", new int(Qtopia::AddressUid) );
@@ -624,7 +629,7 @@ bool OContactAccessBackend_XML::load( const QString filename, bool isJournal )
624 dict.insert( "action", new int(JOURNALACTION) ); 629 dict.insert( "action", new int(JOURNALACTION) );
625 dict.insert( "actionrow", new int(JOURNALROW) ); 630 dict.insert( "actionrow", new int(JOURNALROW) );
626 631
627 //qWarning( "OContactDefaultBackEnd::loading %s", filename.latin1() ); 632 //qWarning( "OContactDefaultBackEnd::loading %s", filename.latin1() );
628 633
629 XMLElement *root = XMLElement::load( filename ); 634 XMLElement *root = XMLElement::load( filename );
630 if(root != 0l ){ // start parsing 635 if(root != 0l ){ // start parsing
@@ -635,5 +640,5 @@ bool OContactAccessBackend_XML::load( const QString filename, bool isJournal )
635 //qWarning("OContactAccess::load tagName(): %s", root->tagName().latin1() ); 640 //qWarning("OContactAccess::load tagName(): %s", root->tagName().latin1() );
636 element = element->firstChild(); 641 element = element->firstChild();
637 642
638 /* Search Tag "Contacts" which is the parent of all Contacts */ 643 /* Search Tag "Contacts" which is the parent of all Contacts */
639 while( element && !isJournal ){ 644 while( element && !isJournal ){
@@ -662,5 +667,5 @@ bool OContactAccessBackend_XML::load( const QString filename, bool isJournal )
662 QString dummy; 667 QString dummy;
663 foundAction = false; 668 foundAction = false;
664 669
665 XMLElement::AttributeMap aMap = element->attributes(); 670 XMLElement::AttributeMap aMap = element->attributes();
666 XMLElement::AttributeMap::Iterator it; 671 XMLElement::AttributeMap::Iterator it;
@@ -669,5 +674,5 @@ bool OContactAccessBackend_XML::load( const QString filename, bool isJournal )
669 for( it = aMap.begin(); it != aMap.end(); ++it ){ 674 for( it = aMap.begin(); it != aMap.end(); ++it ){
670 // qWarning ("Read Attribute: %s=%s", it.key().latin1(),it.data().latin1()); 675 // qWarning ("Read Attribute: %s=%s", it.key().latin1(),it.data().latin1());
671 676
672 int *find = dict[ it.key() ]; 677 int *find = dict[ it.key() ];
673 /* Unknown attributes will be stored as "Custom" elements */ 678 /* Unknown attributes will be stored as "Custom" elements */
@@ -678,5 +683,5 @@ bool OContactAccessBackend_XML::load( const QString filename, bool isJournal )
678 continue; 683 continue;
679 } 684 }
680 685
681 /* Check if special conversion is needed and add attribute 686 /* Check if special conversion is needed and add attribute
682 * into Contact class 687 * into Contact class
@@ -706,9 +711,9 @@ bool OContactAccessBackend_XML::load( const QString filename, bool isJournal )
706 /* now generate the Contact contact */ 711 /* now generate the Contact contact */
707 OContact contact( contactMap ); 712 OContact contact( contactMap );
708 713
709 for (customIt = customMap.begin(); customIt != customMap.end(); ++customIt ) { 714 for (customIt = customMap.begin(); customIt != customMap.end(); ++customIt ) {
710 contact.setCustomField( customIt.key(), customIt.data() ); 715 contact.setCustomField( customIt.key(), customIt.data() );
711 } 716 }
712 717
713 if (foundAction){ 718 if (foundAction){
714 foundAction = false; 719 foundAction = false;
@@ -735,5 +740,5 @@ bool OContactAccessBackend_XML::load( const QString filename, bool isJournal )
735 addContact_p (contact); 740 addContact_p (contact);
736 } 741 }
737 742
738 /* Move to next element */ 743 /* Move to next element */
739 element = element->nextChild(); 744 element = element->nextChild();
@@ -749,5 +754,5 @@ bool OContactAccessBackend_XML::load( const QString filename, bool isJournal )
749 754
750void OContactAccessBackend_XML::updateJournal( const OContact& cnt, 755void OContactAccessBackend_XML::updateJournal( const OContact& cnt,
751 journal_action action ) 756 journal_action action )
752{ 757{
753 QFile f( m_journalName ); 758 QFile f( m_journalName );
@@ -755,8 +760,8 @@ void OContactAccessBackend_XML::updateJournal( const OContact& cnt,
755 if ( !f.open(IO_WriteOnly|IO_Append) ) 760 if ( !f.open(IO_WriteOnly|IO_Append) )
756 return; 761 return;
757 762
758 QString buf; 763 QString buf;
759 QCString str; 764 QCString str;
760 765
761 // if the file was created, we have to set the Tag "<CONTACTS>" to 766 // if the file was created, we have to set the Tag "<CONTACTS>" to
762 // get a XML-File which is readable by our parser. 767 // get a XML-File which is readable by our parser.
@@ -767,5 +772,5 @@ void OContactAccessBackend_XML::updateJournal( const OContact& cnt,
767 f.writeBlock( cstr.data(), cstr.length() ); 772 f.writeBlock( cstr.data(), cstr.length() );
768 } 773 }
769 774
770 buf = "<Contact "; 775 buf = "<Contact ";
771 cnt.save( buf ); 776 cnt.save( buf );
diff --git a/libopie2/opiepim/backend/ocontactaccessbackend_xml.h b/libopie2/opiepim/backend/ocontactaccessbackend_xml.h
index 4d6a7ef..7b5365b 100644
--- a/libopie2/opiepim/backend/ocontactaccessbackend_xml.h
+++ b/libopie2/opiepim/backend/ocontactaccessbackend_xml.h
@@ -18,4 +18,9 @@
18 * History: 18 * History:
19 * $Log$ 19 * $Log$
20 * Revision 1.14 2003/04/13 18:07:10 zecke
21 * More API doc
22 * QString -> const QString&
23 * QString = 0l -> QString::null
24 *
20 * Revision 1.13 2003/03/21 10:33:09 eilers 25 * Revision 1.13 2003/03/21 10:33:09 eilers
21 * Merged speed optimized xml backend for contacts to main. 26 * Merged speed optimized xml backend for contacts to main.
@@ -85,37 +90,42 @@
85 90
86/* the default xml implementation */ 91/* the default xml implementation */
92/**
93 * This class is the XML implementation of a Contact backend
94 * it does implement everything available for OContact.
95 * @see OPimAccessBackend for more information of available methods
96 */
87class OContactAccessBackend_XML : public OContactAccessBackend { 97class OContactAccessBackend_XML : public OContactAccessBackend {
88 public: 98 public:
89 OContactAccessBackend_XML ( QString appname, QString filename = 0l ); 99 OContactAccessBackend_XML ( const QString& appname, const QString& filename = QString::null );
90 100
91 bool save(); 101 bool save();
92 102
93 bool load (); 103 bool load ();
94 104
95 void clear (); 105 void clear ();
96 106
97 bool wasChangedExternally(); 107 bool wasChangedExternally();
98 108
99 QArray<int> allRecords() const; 109 QArray<int> allRecords() const;
100 110
101 OContact find ( int uid ) const; 111 OContact find ( int uid ) const;
102 112
103 QArray<int> queryByExample ( const OContact &query, int settings, const QDateTime& d = QDateTime() ); 113 QArray<int> queryByExample ( const OContact &query, int settings, const QDateTime& d = QDateTime() );
104 114
105 QArray<int> matchRegexp( const QRegExp &r ) const; 115 QArray<int> matchRegexp( const QRegExp &r ) const;
106 116
107 const uint querySettings(); 117 const uint querySettings();
108 118
109 bool hasQuerySettings (uint querySettings) const; 119 bool hasQuerySettings (uint querySettings) const;
110 120
111 // Currently only asc implemented.. 121 // Currently only asc implemented..
112 QArray<int> sorted( bool asc, int , int , int ); 122 QArray<int> sorted( bool asc, int , int , int );
113 bool add ( const OContact &newcontact ); 123 bool add ( const OContact &newcontact );
114 124
115 bool replace ( const OContact &contact ); 125 bool replace ( const OContact &contact );
116 126
117 bool remove ( int uid ); 127 bool remove ( int uid );
118 bool reload(); 128 bool reload();
119 129
120 private: 130 private:
121 131
@@ -123,12 +133,12 @@ class OContactAccessBackend_XML : public OContactAccessBackend {
123 133
124 void addContact_p( const OContact &newcontact ); 134 void addContact_p( const OContact &newcontact );
125 135
126 /* This function loads the xml-database and the journalfile */ 136 /* This function loads the xml-database and the journalfile */
127 bool load( const QString filename, bool isJournal ); 137 bool load( const QString filename, bool isJournal );
128 138
129 139
130 void updateJournal( const OContact& cnt, journal_action action ); 140 void updateJournal( const OContact& cnt, journal_action action );
131 void removeJournal(); 141 void removeJournal();
132 142
133 protected: 143 protected:
134 bool m_changed; 144 bool m_changed;
diff --git a/libopie2/opiepim/backend/odatebookaccessbackend.h b/libopie2/opiepim/backend/odatebookaccessbackend.h
index eb6e8fb..86ff298 100644
--- a/libopie2/opiepim/backend/odatebookaccessbackend.h
+++ b/libopie2/opiepim/backend/odatebookaccessbackend.h
@@ -7,23 +7,64 @@
7#include "oevent.h" 7#include "oevent.h"
8 8
9/**
10 * This class is the interface to the storage of Events.
11 * @see OPimAccessBackend
12 *
13 */
9class ODateBookAccessBackend : public OPimAccessBackend<OEvent> { 14class ODateBookAccessBackend : public OPimAccessBackend<OEvent> {
10public: 15public:
11 typedef int UID; 16 typedef int UID;
17
18 /**
19 * c'tor without parameter
20 */
12 ODateBookAccessBackend(); 21 ODateBookAccessBackend();
13 ~ODateBookAccessBackend(); 22 ~ODateBookAccessBackend();
14 23
24 /**
25 * This method should return a list of UIDs containing
26 * all events. No filter should be applied
27 * @return list of events
28 */
15 virtual QArray<UID> rawEvents()const = 0; 29 virtual QArray<UID> rawEvents()const = 0;
30
31 /**
32 * This method should return a list of UIDs containing
33 * all repeating events. No filter should be applied
34 * @return list of repeating events
35 */
16 virtual QArray<UID> rawRepeats()const = 0; 36 virtual QArray<UID> rawRepeats()const = 0;
37
38 /**
39 * This mthod should return a list of UIDs containing all non
40 * repeating events. No filter should be applied
41 * @return list of nonrepeating events
42 */
17 virtual QArray<UID> nonRepeats() const = 0; 43 virtual QArray<UID> nonRepeats() const = 0;
18 44
19 /** 45 /**
20 * these two methods are used if you do not implement 46 * If you do not want to implement the effectiveEvents methods below
21 * effectiveEvents... 47 * you need to supply it with directNonRepeats.
48 * This method can return empty lists if effectiveEvents is implememted
22 */ 49 */
23 virtual OEvent::ValueList directNonRepeats() = 0; 50 virtual OEvent::ValueList directNonRepeats() = 0;
51
52 /**
53 * Same as above but return raw repeats!
54 */
24 virtual OEvent::ValueList directRawRepeats() = 0; 55 virtual OEvent::ValueList directRawRepeats() = 0;
25 56
26 /* is implemented by default but you can reimplement it*/ 57 /* is implemented by default but you can reimplement it*/
58 /**
59 * Effective Events are special event occuring during a time frame. This method does calcualte
60 * EffectiveEvents bases on the directNonRepeats and directRawRepeats. You may implement this method
61 * yourself
62 */
27 virtual OEffectiveEvent::ValueList effecticeEvents( const QDate& from, const QDate& to ); 63 virtual OEffectiveEvent::ValueList effecticeEvents( const QDate& from, const QDate& to );
64
65 /**
66 * this is an overloaded member function
67 * @see effecticeEvents
68 */
28 virtual OEffectiveEvent::ValueList effecticeEvents( const QDateTime& start ); 69 virtual OEffectiveEvent::ValueList effecticeEvents( const QDateTime& start );
29 70
diff --git a/libopie2/opiepim/backend/odatebookaccessbackend_xml.h b/libopie2/opiepim/backend/odatebookaccessbackend_xml.h
index 563c31f..7848f7c 100644
--- a/libopie2/opiepim/backend/odatebookaccessbackend_xml.h
+++ b/libopie2/opiepim/backend/odatebookaccessbackend_xml.h
@@ -6,4 +6,10 @@
6#include "odatebookaccessbackend.h" 6#include "odatebookaccessbackend.h"
7 7
8/**
9 * This is the default XML implementation for DateBoook XML storage
10 * It fully implements the interface
11 * @see ODateBookAccessBackend
12 * @see OPimAccessBackend
13 */
8class ODateBookAccessBackend_XML : public ODateBookAccessBackend { 14class ODateBookAccessBackend_XML : public ODateBookAccessBackend {
9public: 15public:
diff --git a/libopie2/opiepim/core/ocontactaccess.h b/libopie2/opiepim/core/ocontactaccess.h
index 32b2dcb..d7ceaf2 100644
--- a/libopie2/opiepim/core/ocontactaccess.h
+++ b/libopie2/opiepim/core/ocontactaccess.h
@@ -18,4 +18,9 @@
18 * History: 18 * History:
19 * $Log$ 19 * $Log$
20 * Revision 1.7 2003/04/13 18:07:10 zecke
21 * More API doc
22 * QString -> const QString&
23 * QString = 0l -> QString::null
24 *
20 * Revision 1.6 2003/01/02 14:27:12 eilers 25 * Revision 1.6 2003/01/02 14:27:12 eilers
21 * Improved query by example: Search by date is possible.. First step 26 * Improved query by example: Search by date is possible.. First step
@@ -56,7 +61,11 @@
56#include "opimaccesstemplate.h" 61#include "opimaccesstemplate.h"
57 62
58/** Class to access the contacts database. 63/**
64 * Class to access the contacts database.
59 * This is just a frontend for the real database handling which is 65 * This is just a frontend for the real database handling which is
60 * done by the backend. 66 * done by the backend.
67 * This class is used to access the Contacts on a system. This class as any OPIE PIM
68 * class is backend independent.
69
61 * @see OPimAccessTemplate 70 * @see OPimAccessTemplate
62 */ 71 */
@@ -66,5 +75,6 @@ class OContactAccess: public QObject, public OPimAccessTemplate<OContact>
66 75
67 public: 76 public:
68 /** Create Database with contacts (addressbook). 77 /**
78 * Create Database with contacts (addressbook).
69 * @param appname Name of application which wants access to the database 79 * @param appname Name of application which wants access to the database
70 * (i.e. "todolist") 80 * (i.e. "todolist")
@@ -100,5 +110,5 @@ class OContactAccess: public QObject, public OPimAccessTemplate<OContact>
100 }; 110 };
101 111
102 112
103 ORecordList<OContact> matchRegexp( const QRegExp &r )const; 113 ORecordList<OContact> matchRegexp( const QRegExp &r )const;
104 114
diff --git a/libopie2/opiepim/core/odatebookaccess.cpp b/libopie2/opiepim/core/odatebookaccess.cpp
index 08e61ff..a3661a3 100644
--- a/libopie2/opiepim/core/odatebookaccess.cpp
+++ b/libopie2/opiepim/core/odatebookaccess.cpp
@@ -2,4 +2,11 @@
2#include "odatebookaccess.h" 2#include "odatebookaccess.h"
3 3
4/**
5 * Simple constructor
6 * It takes a ODateBookAccessBackend as parent. If it is 0 the default implementation
7 * will be used!
8 * @param back The backend to be used or 0 for the default backend
9 * @param ac What kind of access is intended
10 */
4ODateBookAccess::ODateBookAccess( ODateBookAccessBackend* back, enum Access ac ) 11ODateBookAccess::ODateBookAccess( ODateBookAccessBackend* back, enum Access ac )
5 : OPimAccessTemplate<OEvent>( back ) 12 : OPimAccessTemplate<OEvent>( back )
@@ -13,4 +20,8 @@ ODateBookAccess::ODateBookAccess( ODateBookAccessBackend* back, enum Access ac )
13ODateBookAccess::~ODateBookAccess() { 20ODateBookAccess::~ODateBookAccess() {
14} 21}
22
23/**
24 * @return all events available
25 */
15ODateBookAccess::List ODateBookAccess::rawEvents()const { 26ODateBookAccess::List ODateBookAccess::rawEvents()const {
16 QArray<int> ints = m_backEnd->rawEvents(); 27 QArray<int> ints = m_backEnd->rawEvents();
@@ -19,4 +30,8 @@ ODateBookAccess::List ODateBookAccess::rawEvents()const {
19 return lis; 30 return lis;
20} 31}
32
33/**
34 * @return all repeating events
35 */
21ODateBookAccess::List ODateBookAccess::rawRepeats()const { 36ODateBookAccess::List ODateBookAccess::rawRepeats()const {
22 QArray<int> ints = m_backEnd->rawRepeats(); 37 QArray<int> ints = m_backEnd->rawRepeats();
@@ -25,4 +40,8 @@ ODateBookAccess::List ODateBookAccess::rawRepeats()const {
25 return lis; 40 return lis;
26} 41}
42
43/**
44 * @return all non repeating events
45 */
27ODateBookAccess::List ODateBookAccess::nonRepeats()const { 46ODateBookAccess::List ODateBookAccess::nonRepeats()const {
28 QArray<int> ints = m_backEnd->nonRepeats(); 47 QArray<int> ints = m_backEnd->nonRepeats();
@@ -31,7 +50,16 @@ ODateBookAccess::List ODateBookAccess::nonRepeats()const {
31 return lis; 50 return lis;
32} 51}
52
53/**
54 * @return dates in the time span between from and to
55 * @param from Include all events from...
56 * @param to Include all events to...
57 */
33OEffectiveEvent::ValueList ODateBookAccess::effectiveEvents( const QDate& from, const QDate& to ) { 58OEffectiveEvent::ValueList ODateBookAccess::effectiveEvents( const QDate& from, const QDate& to ) {
34 return m_backEnd->effecticeEvents( from, to ); 59 return m_backEnd->effecticeEvents( from, to );
35} 60}
61/**
62 * @return all events at a given datetime
63 */
36OEffectiveEvent::ValueList ODateBookAccess::effectiveEvents( const QDateTime& start ) { 64OEffectiveEvent::ValueList ODateBookAccess::effectiveEvents( const QDateTime& start ) {
37 return m_backEnd->effecticeEvents( start ); 65 return m_backEnd->effecticeEvents( start );
diff --git a/libopie2/opiepim/core/odatebookaccess.h b/libopie2/opiepim/core/odatebookaccess.h
index 7047039..7c7a63f 100644
--- a/libopie2/opiepim/core/odatebookaccess.h
+++ b/libopie2/opiepim/core/odatebookaccess.h
@@ -7,4 +7,13 @@
7#include "oevent.h" 7#include "oevent.h"
8 8
9/**
10 * This is the object orientated datebook database. It'll use OBackendFactory
11 * to query for a backend.
12 * All access to the datebook should be done via this class.
13 * Make sure to load and save the datebook this is not part of
14 * destructing and creating the object
15 *
16 * @author Holger Freyther
17 */
9class ODateBookAccess : public OPimAccessTemplate<OEvent> { 18class ODateBookAccess : public OPimAccessTemplate<OEvent> {
10public: 19public:
@@ -12,11 +21,11 @@ public:
12 ~ODateBookAccess(); 21 ~ODateBookAccess();
13 22
14 /** return all events */ 23 /* return all events */
15 List rawEvents()const; 24 List rawEvents()const;
16 25
17 /** return repeating events */ 26 /* return repeating events */
18 List rawRepeats()const; 27 List rawRepeats()const;
19 28
20 /** return non repeating events */ 29 /* return non repeating events */
21 List nonRepeats()const; 30 List nonRepeats()const;
22 31
diff --git a/libopie2/opiepim/ocontact.h b/libopie2/opiepim/ocontact.h
index 1fd1c75..25fa0e7 100644
--- a/libopie2/opiepim/ocontact.h
+++ b/libopie2/opiepim/ocontact.h
@@ -35,6 +35,13 @@ QPC_TEMPLATEEXTERN template class QPC_EXPORT QMap<int, QString>;
35#endif 35#endif
36 36
37class ContactPrivate; 37class ContactPrivate;
38 38
39/**
40 * OContact class represents a specialised PIM Record for contacts.
41 * It does store all kind of persopn related information.
42 *
43 * @short Contact Container
44 * @author TT, Stefan Eiler, Holger Freyther
45 */
39class QPC_EXPORT OContact : public OPimRecord 46class QPC_EXPORT OContact : public OPimRecord
40{ 47{
diff --git a/libopie2/opiepim/oevent.h b/libopie2/opiepim/oevent.h
index 585515c..57d32d0 100644
--- a/libopie2/opiepim/oevent.h
+++ b/libopie2/opiepim/oevent.h
@@ -31,7 +31,16 @@ struct OCalendarHelper {
31class OPimNotifyManager; 31class OPimNotifyManager;
32class ORecur; 32class ORecur;
33
34/**
35 * This is the container for all Events. It encapsules all
36 * available information for a single Event
37 * @short container for events.
38 */
33class OEvent : public OPimRecord { 39class OEvent : public OPimRecord {
34public: 40public:
35 typedef QValueList<OEvent> ValueList; 41 typedef QValueList<OEvent> ValueList;
42 /**
43 * RecordFields contain possible attributes
44 */
36 enum RecordFields { 45 enum RecordFields {
37 Uid = Qtopia::UID_ID, 46 Uid = Qtopia::UID_ID,
@@ -50,5 +59,12 @@ public:
50 }; 59 };
51 60
61 /**
62 * Start with an Empty OEvent. UID == 0 means that it is empty
63 */
52 OEvent(int uid = 0); 64 OEvent(int uid = 0);
65
66 /**
67 * copy c'tor
68 */
53 OEvent( const OEvent& ); 69 OEvent( const OEvent& );
54 ~OEvent(); 70 ~OEvent();
@@ -145,5 +161,4 @@ private:
145 * AN Event can span through multiple days. We split up a multiday eve 161 * AN Event can span through multiple days. We split up a multiday eve
146 */ 162 */
147
148class OEffectiveEvent { 163class OEffectiveEvent {
149public: 164public: