summaryrefslogtreecommitdiff
path: root/libopie/pim
Unidiff
Diffstat (limited to 'libopie/pim') (more/less context) (ignore whitespace changes)
-rw-r--r--libopie/pim/opimaccessbackend.h53
-rw-r--r--libopie/pim/opimaccesstemplate.h81
-rw-r--r--libopie/pim/opimrecord.h19
-rw-r--r--libopie/pim/orecordlist.h40
-rw-r--r--libopie/pim/otemplatebase.h3
5 files changed, 187 insertions, 9 deletions
diff --git a/libopie/pim/opimaccessbackend.h b/libopie/pim/opimaccessbackend.h
index 8e744e7..5707b58 100644
--- a/libopie/pim/opimaccessbackend.h
+++ b/libopie/pim/opimaccessbackend.h
@@ -6,4 +6,13 @@
6#include <opie/opimrecord.h> 6#include <opie/opimrecord.h>
7 7
8
9/**
10 * OPimAccessBackend is the base class
11 * for all private backends
12 * it operates on OPimRecord as the base class
13 * and it's responsible for fast manipulating
14 * the resource the implementation takes care
15 * of
16 */
8template <class T = OPimRecord> 17template <class T = OPimRecord>
9class OPimAccessBackend { 18class OPimAccessBackend {
@@ -11,13 +20,57 @@ public:
11 OPimAccessBackend(); 20 OPimAccessBackend();
12 virtual ~OPimAccessBackend(); 21 virtual ~OPimAccessBackend();
22
23 /**
24 * load the resource
25 */
13 virtual void load() = 0; 26 virtual void load() = 0;
27
28 /**
29 * reload the resource
30 */
14 virtual void reload() = 0; 31 virtual void reload() = 0;
32
33 /**
34 * save the resource and
35 * all it's changes
36 */
15 virtual void save() = 0; 37 virtual void save() = 0;
38
39 /**
40 * return an array of
41 * all available uids
42 */
16 virtual QArray<int> allRecords()const = 0; 43 virtual QArray<int> allRecords()const = 0;
44
45 /**
46 * queryByExample for T with the SortOrder
47 * sort
48 */
17 virtual QArray<int> queryByExample( const T& t, int sort ) = 0; 49 virtual QArray<int> queryByExample( const T& t, int sort ) = 0;
50
51 /**
52 * find the OPimRecord with uid @param uid
53 * returns T and T.isEmpty() if nothing was found
54 */
18 virtual T find(int uid ) = 0; 55 virtual T find(int uid ) = 0;
56
57 /**
58 * clear the back end
59 */
19 virtual void clear() = 0; 60 virtual void clear() = 0;
61
62 /**
63 * add T
64 */
20 virtual bool add( const T& t ) = 0; 65 virtual bool add( const T& t ) = 0;
66
67 /**
68 * remove
69 */
21 virtual bool remove( int uid ) = 0; 70 virtual bool remove( int uid ) = 0;
71
72 /**
73 * replace a record with T.uid()
74 */
22 virtual bool replace( const T& t ) = 0; 75 virtual bool replace( const T& t ) = 0;
23 76
diff --git a/libopie/pim/opimaccesstemplate.h b/libopie/pim/opimaccesstemplate.h
index e0708e1..36f5a99 100644
--- a/libopie/pim/opimaccesstemplate.h
+++ b/libopie/pim/opimaccesstemplate.h
@@ -10,4 +10,13 @@
10#include "otemplatebase.h" 10#include "otemplatebase.h"
11 11
12/**
13 * Thats the frontend to our OPIE PIM
14 * Library. Either you want to use it's
15 * interface or you want to implement
16 * your own Access lib
17 * Just create a OPimRecord and inherit from
18 * the plugins
19 */
20
12template <class T = OPimRecord > 21template <class T = OPimRecord >
13class OPimAccessTemplate : public OTemplateBase<T> { 22class OPimAccessTemplate : public OTemplateBase<T> {
@@ -15,28 +24,89 @@ public:
15 typedef ORecordList<T> List; 24 typedef ORecordList<T> List;
16 typedef OPimAccessBackend<T> BackEnd; 25 typedef OPimAccessBackend<T> BackEnd;
26
27 /**
28 * our sort order
29 * should be safe explaining
30 */
31 enum SortOrder { WildCards = 0, IgnoreCase = 1,
32 RegExp = 2, ExactMatch = 4 };
33
34 /**
35 * c'tor BackEnd
36 */
17 OPimAccessTemplate( BackEnd* end); 37 OPimAccessTemplate( BackEnd* end);
18 virtual ~OPimAccessTemplate(); 38 virtual ~OPimAccessTemplate();
39
40 /**
41 * load from the backend
42 */
19 virtual void load(); 43 virtual void load();
44
45 /**
46 * reload from the backend
47 */
20 virtual void reload(); 48 virtual void reload();
49
50 /**
51 * save to the backend
52 */
21 virtual void save(); 53 virtual void save();
22 54
23 /* 55 /**
24 *do array to Records conversion 56 * if the resource was changed externally
25 * QArray<int> ids 57 */
58 bool wasChangedExternally()const;
59
60 /**
61 * return a List of records
62 * you can iterate over them
26 */ 63 */
27 virtual List allRecords()const; 64 virtual List allRecords()const;
65
66 /**
67 * queryByExample
68 */
28 virtual List queryByExample( const T& t, int sortOrder ); 69 virtual List queryByExample( const T& t, int sortOrder );
70
71 /**
72 * find the OPimRecord uid
73 */
29 virtual T find( int uid ); 74 virtual T find( int uid );
30 75
31 /* invalidate cache here */ 76 /* invalidate cache here */
77 /**
78 * clears the backend and invalidates the backend
79 */
32 virtual void clear() ; 80 virtual void clear() ;
81
82 /**
83 * add T to the backend
84 */
33 virtual bool add( const T& t ) ; 85 virtual bool add( const T& t ) ;
34 86
35 /* only the uid matters */ 87 /* only the uid matters */
88 /**
89 * remove T from the backend
90 */
36 virtual bool remove( const T& t ); 91 virtual bool remove( const T& t );
92
93 /**
94 * remove the OPimRecord with uid
95 */
37 virtual bool remove( int uid ); 96 virtual bool remove( int uid );
97
98 /**
99 * replace T from backend
100 */
38 virtual bool replace( const T& t) ; 101 virtual bool replace( const T& t) ;
39protected: 102protected:
103 /**
104 * invalidate the cache
105 */
40 void invalidateCache(); 106 void invalidateCache();
107
108 /**
109 * returns the backend
110 */
41 BackEnd* backEnd(); 111 BackEnd* backEnd();
42 BackEnd* m_backEnd; 112 BackEnd* m_backEnd;
@@ -115,4 +185,7 @@ OPimAccessTemplate<T>::BackEnd* OPimAccessTemplate<T>::backEnd() {
115 return m_backEnd; 185 return m_backEnd;
116} 186}
117 187template <class T>
188bool OPimAccessTemplate<T>::wasChangedExternally()const {
189 return false;
190}
118#endif 191#endif
diff --git a/libopie/pim/opimrecord.h b/libopie/pim/opimrecord.h
index e4d33d6..dbb94ed 100644
--- a/libopie/pim/opimrecord.h
+++ b/libopie/pim/opimrecord.h
@@ -8,7 +8,14 @@
8#include <qpe/palmtoprecord.h> 8#include <qpe/palmtoprecord.h>
9 9
10
11/**
12 * This is the base class for
13 * all PIM Records
14 *
15 */
10class OPimRecord : public Qtopia::Record { 16class OPimRecord : public Qtopia::Record {
11public: 17public:
12 /** 18 /**
19 * c'tor
13 * uid of 0 isEmpty 20 * uid of 0 isEmpty
14 * uid of 1 will be assigned a new one 21 * uid of 1 will be assigned a new one
@@ -45,4 +52,5 @@ public:
45 /** 52 /**
46 * if a Record isEmpty 53 * if a Record isEmpty
54 * it's empty if it's 0
47 */ 55 */
48 virtual bool isEmpty()const; 56 virtual bool isEmpty()const;
@@ -89,17 +97,22 @@ public:
89 97
90 /** 98 /**
91 * 99 * clear the relations for all relations
100 * with app
92 */ 101 */
93 void clearRelation( const QString& app ); 102 void clearRelation( const QString& app );
94 103
95 /** 104 /**
96 * 105 * add a relation
97 */ 106 */
98 void addRelation( const QString& app, int id ); 107 void addRelation( const QString& app, int id );
99 108
100 /** 109 /**
101 * 110 * set the relations for an app
102 */ 111 */
103 void setRelations( const QString&, QArray<int> ids ); 112 void setRelations( const QString&, QArray<int> ids );
113
114 /**
115 * set the uid
116 */
104 virtual void setUid( int uid ); 117 virtual void setUid( int uid );
105 118
diff --git a/libopie/pim/orecordlist.h b/libopie/pim/orecordlist.h
index a3955b0..3b30a73 100644
--- a/libopie/pim/orecordlist.h
+++ b/libopie/pim/orecordlist.h
@@ -8,14 +8,35 @@
8#include "opimrecord.h" 8#include "opimrecord.h"
9 9
10 10/**
11 * Our List Iterator
12 * it behaves like STL or Qt
13 *
14 * for(it = list.begin(); it != list.end(); ++it )
15 * doSomeCoolStuff( (*it) );
16 */
11template <class T = OPimRecord> 17template <class T = OPimRecord>
12class ORecordListIterator { 18class ORecordListIterator {
13public: 19public:
14 typedef OTemplateBase<T> Base; 20 typedef OTemplateBase<T> Base;
21
22 /**
23 * The c'tor used internally from
24 * ORecordList
25 */
15 ORecordListIterator( const QArray<int>, const Base* ); 26 ORecordListIterator( const QArray<int>, const Base* );
27
28 /**
29 * The standard c'tor
30 */
16 ORecordListIterator(); 31 ORecordListIterator();
17 ~ORecordListIterator(); 32 ~ORecordListIterator();
33
18 ORecordListIterator( const ORecordListIterator& ); 34 ORecordListIterator( const ORecordListIterator& );
19 ORecordListIterator &operator=(const ORecordListIterator& ); 35 ORecordListIterator &operator=(const ORecordListIterator& );
36
37 /**
38 * a * operator ;)
39 * use it like this T = (*it);
40 */
20 T &operator*(); 41 T &operator*();
21 ORecordListIterator &operator++(); 42 ORecordListIterator &operator++();
@@ -36,5 +57,8 @@ private:
36 IteratorPrivate *d; 57 IteratorPrivate *d;
37}; 58};
38 59/**
60 * The recordlist used as a return type
61 * from OPimAccessTemplate
62 */
39template <class T = OPimRecord > 63template <class T = OPimRecord >
40class ORecordList { 64class ORecordList {
@@ -42,8 +66,20 @@ public:
42 typedef OTemplateBase<T> Base; 66 typedef OTemplateBase<T> Base;
43 typedef ORecordListIterator<T> Iterator; 67 typedef ORecordListIterator<T> Iterator;
68
69 /**
70 * c'tor
71 */
44 ORecordList( const QArray<int>& ids, 72 ORecordList( const QArray<int>& ids,
45 const Base* ); 73 const Base* );
46 ~ORecordList(); 74 ~ORecordList();
75
76 /**
77 * the first iterator
78 */
47 Iterator begin(); 79 Iterator begin();
80
81 /**
82 * the end
83 */
48 Iterator end(); 84 Iterator end();
49 /* 85 /*
diff --git a/libopie/pim/otemplatebase.h b/libopie/pim/otemplatebase.h
index 41cc934..add1de4 100644
--- a/libopie/pim/otemplatebase.h
+++ b/libopie/pim/otemplatebase.h
@@ -4,4 +4,7 @@
4#include "opimrecord.h" 4#include "opimrecord.h"
5 5
6/**
7 * internal template base
8 */
6template <class T = OPimRecord> 9template <class T = OPimRecord>
7class OTemplateBase { 10class OTemplateBase {