summaryrefslogtreecommitdiff
authoreilers <eilers>2004-12-28 12:14:44 (UTC)
committer eilers <eilers>2004-12-28 12:14:44 (UTC)
commit4f0a67218237c83bdd02d339835f62ad064dc248 (patch) (unidiff)
tree26680f7a55cb0b09f158e1bf18b4bad4117e0db0
parent97a3d431ba9e33a3e256955755b23a55a9a9ea05 (diff)
downloadopie-4f0a67218237c83bdd02d339835f62ad064dc248.zip
opie-4f0a67218237c83bdd02d339835f62ad064dc248.tar.gz
opie-4f0a67218237c83bdd02d339835f62ad064dc248.tar.bz2
* Make improved query by example accessable via frontend
* Some API improvement
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--libopie2/opiepim/ChangeLog3
-rw-r--r--libopie2/opiepim/core/ocontactaccess.h2
-rw-r--r--libopie2/opiepim/core/opimaccesstemplate.h76
-rw-r--r--libopie2/opiepim/core/opimtemplatebase.h2
4 files changed, 74 insertions, 9 deletions
diff --git a/libopie2/opiepim/ChangeLog b/libopie2/opiepim/ChangeLog
index dd57259..564e92a 100644
--- a/libopie2/opiepim/ChangeLog
+++ b/libopie2/opiepim/ChangeLog
@@ -1,12 +1,15 @@
12004-12-28 Stefan Eilers <stefan@eilers-online.net>
2 * Make improved query by example accessable via frontend
3 * Some API improvement
12004-11-23 Stefan Eilers <stefan@eilers-online.net> 42004-11-23 Stefan Eilers <stefan@eilers-online.net>
2 * Implement fast and full featured version of sorted() for addressbook 5 * Implement fast and full featured version of sorted() for addressbook
3 * Implement generic queryByExample for all Addressboook backends. It allows incremental search. 6 * Implement generic queryByExample for all Addressboook backends. It allows incremental search.
4 * Update of API Documentation 7 * Update of API Documentation
52004-11-18 Holger Freyther <freyther@handhelds.org> 82004-11-18 Holger Freyther <freyther@handhelds.org>
6 * Every Access can give a set of Occurrences for a period or a datetime 9 * Every Access can give a set of Occurrences for a period or a datetime
7 * QueryByExample, Find, Sort can be generically accessed by OPimBase 10 * QueryByExample, Find, Sort can be generically accessed by OPimBase
8 pointer interface 11 pointer interface
9 * OPimBackendOccurrence gets split up to OPimOccurrences by 12 * OPimBackendOccurrence gets split up to OPimOccurrences by
10 OPimTemplateBase 13 OPimTemplateBase
11 * Add safeCast to various OPimRecords 14 * Add safeCast to various OPimRecords
12 * Kill memleak in OPimTodo 15 * Kill memleak in OPimTodo
diff --git a/libopie2/opiepim/core/ocontactaccess.h b/libopie2/opiepim/core/ocontactaccess.h
index bd85b4e..5051321 100644
--- a/libopie2/opiepim/core/ocontactaccess.h
+++ b/libopie2/opiepim/core/ocontactaccess.h
@@ -111,25 +111,25 @@ class OPimContactAccess: public QObject, public OPimAccessTemplate<OPimContact>
111 * to react itself, it should be disabled by setting it to <b>false</b> 111 * to react itself, it should be disabled by setting it to <b>false</b>
112 * @see OPimContactAccessBackend 112 * @see OPimContactAccessBackend
113 */ 113 */
114 OPimContactAccess (const QString appname, const QString filename = 0l, 114 OPimContactAccess (const QString appname, const QString filename = 0l,
115 OPimContactAccessBackend* backend = 0l, bool handlesync = true); 115 OPimContactAccessBackend* backend = 0l, bool handlesync = true);
116 ~OPimContactAccess (); 116 ~OPimContactAccess ();
117 117
118 118
119 /** 119 /**
120 * Return all possible settings for queryByExample(). 120 * Return all possible settings for queryByExample().
121 * @return All settings provided by the current backend 121 * @return All settings provided by the current backend
122 * (i.e.: WildCards & IgnoreCase) 122 * (i.e.: WildCards & IgnoreCase)
123 * @see QuerySettings in OPimBase for details of the parameter 123 * @see QuerySettings in OPimBase for details of the parameter, queryByExample()
124 */ 124 */
125 const uint querySettings(); 125 const uint querySettings();
126 126
127 /** 127 /**
128 * Check whether settings are correct for queryByExample(). 128 * Check whether settings are correct for queryByExample().
129 * @return <i>true</i> if the given settings are correct and possible. 129 * @return <i>true</i> if the given settings are correct and possible.
130 * @see QuerySettings in OPimBase for details of the parameter 130 * @see QuerySettings in OPimBase for details of the parameter
131 */ 131 */
132 bool hasQuerySettings ( int querySettings ) const; 132 bool hasQuerySettings ( int querySettings ) const;
133 133
134 /** 134 /**
135 * if the resource was changed externally. 135 * if the resource was changed externally.
diff --git a/libopie2/opiepim/core/opimaccesstemplate.h b/libopie2/opiepim/core/opimaccesstemplate.h
index 073d5f9..3875f09 100644
--- a/libopie2/opiepim/core/opimaccesstemplate.h
+++ b/libopie2/opiepim/core/opimaccesstemplate.h
@@ -77,25 +77,65 @@ public:
77 bool load(); 77 bool load();
78 virtual bool reload(); 78 virtual bool reload();
79 bool save(); 79 bool save();
80 void clear() ; 80 void clear() ;
81 //@} 81 //@}
82 82
83 83
84 bool wasChangedExternally()const; 84 bool wasChangedExternally()const;
85 85
86 //@{ 86 //@{
87 virtual List allRecords()const; 87 virtual List allRecords()const;
88 virtual List matchRegexp( const QRegExp &r ) const; 88 virtual List matchRegexp( const QRegExp &r ) const;
89 virtual List queryByExample( const T& t, int querySettings, const QDateTime& d = QDateTime() ); 89
90 /**
91 * Query by example search interface.
92 * "Query by Example" provides a very powerful search engine. Use the query object
93 * (this may be a contact, a todo or databook event)
94 * as a search mask which is converted into a query regarding the querySettings. If a time period is needed
95 * (as for OpimBase::DateDiff), you have to use the date/time in the query object and the endperiod (the last parameter).
96 * @see QuerySettings in class OPimBase
97 * @param query The object which contains the query set
98 * @param querySettings This parameter defines what should be searched and how the query should be interpreted
99 * @param endperiod Defines the end of a period for some special queries.
100 */
101 virtual List queryByExample( const T& query, int querySettings, const QDateTime& endperiod = QDateTime() );
102
103 /**
104 * Generic query by example search interface. This is a special version which handles generic OPimRecord types. They are converted
105 * automatically into the right datatype.
106 * "Query by Example" provides a very powerful search engine. Use the query object (this may be a contact, a todo or databook event)
107 * as a search mask which is converted into a query regarding the querySettings. If a time period is needed
108 * (as for OpimBase::DateDiff), you have to use the date/time in the query object and the endperiod (the last parameter).
109 * @see QuerySettings in class OPimBase
110 * @param query The object which contains the query set
111 * @param querySettings This parameter defines what should be searched and how the query should be interpreted
112 * @param endperiod Defines the end of a period for some special queries.
113 */
114 virtual List queryByExample( const OPimRecord* query, int querySettings, const QDateTime& endperiod = QDateTime() );
115 /**
116 * Incremental query by example search interface. Providing incremental search, this one provides the feature
117 * to search in a list of records which may be returned by an other search.
118 * "Query by Example" provides a very powerful search engine. Use the query object (this may be a contact, a todo or databook event)
119 * as a search mask which is converted into a query regarding the querySettings. If a time period is needed
120 * (as for OpimBase::DateDiff), you have to use the date/time in the query object and the endperiod (the last parameter).
121 * @see QuerySettings in class OPimBase
122 * @param uidlist List of uid's which should be incorporated into the next search
123 * @param query The object which contains the query set
124 * @param querySettings This parameter defines what should be searched and how the query should be interpreted
125 * @param endperiod Defines the end of a period for some special queries.
126 */
127 virtual List queryByExample( const OPimAccessTemplate::List& uidlist, const T& query, int querySettings,
128 const QDateTime& endperiod = QDateTime() );
129
90 virtual T find( UID uid )const; 130 virtual T find( UID uid )const;
91 virtual T find( UID uid, const QArray<int>&, 131 virtual T find( UID uid, const QArray<int>&,
92 uint current, typename OTemplateBase<T>::CacheDirection dir = OTemplateBase<T>::Forward )const; 132 uint current, typename OTemplateBase<T>::CacheDirection dir = OTemplateBase<T>::Forward )const;
93 //@} 133 //@}
94 134
95 /** 135 /**
96 * Get sorted lists.. 136 * Get sorted lists..
97 * @see OPimContactAccess, OPimTodoAccess and ODateBookAccess regarding more info for the following params: 137 * @see OPimContactAccess, OPimTodoAccess and ODateBookAccess regarding more info for the following params:
98 * @param list of UID's received by allRecords() or others... 138 * @param list of UID's received by allRecords() or others...
99 * @param sortOrder Setting the sort order defined by enum SortOrder 139 * @param sortOrder Setting the sort order defined by enum SortOrder
100 * @param ascending Sort in ascending order if true, otherwise descending 140 * @param ascending Sort in ascending order if true, otherwise descending
101 * @param sortFilter Setting the sort filter defined by enum SortFilter 141 * @param sortFilter Setting the sort filter defined by enum SortFilter
@@ -260,38 +300,60 @@ typename OPimAccessTemplate<T>::List OPimAccessTemplate<T>::matchRegexp( const Q
260 return lis; 300 return lis;
261} 301}
262 302
263/** 303/**
264 * find the OPimRecord uid 304 * find the OPimRecord uid
265 */ 305 */
266template <class T> 306template <class T>
267QArray<int> OPimAccessTemplate<T>::records()const { 307QArray<int> OPimAccessTemplate<T>::records()const {
268 return m_backEnd->allRecords(); 308 return m_backEnd->allRecords();
269} 309}
270 310
271 311
272/**
273 * queryByExample.
274 * @see otodoaccess, ocontactaccess
275 */
276template <class T> 312template <class T>
277typename OPimAccessTemplate<T>::List 313typename OPimAccessTemplate<T>::List
278OPimAccessTemplate<T>::queryByExample( const T& t, int settings, const QDateTime& d ) { 314OPimAccessTemplate<T>::queryByExample( const T& t, int settings, const QDateTime& d ) {
279 QArray<int> ints = m_backEnd->queryByExample( t, settings, d ); 315 QArray<int> ints = m_backEnd->queryByExample( t, settings, d );
280 316
281 List lis(ints, this ); 317 List list(ints, this );
282 return lis; 318 return list;
283} 319}
284 320
285template <class T> 321template <class T>
322typename OPimAccessTemplate<T>::List
323OPimAccessTemplate<T>::queryByExample( const OPimRecord* t, int settings, const QDateTime& d ) {
324 T tempInstance;
325
326 if ( t->rtti() == tempInstance.rtti() ) {
327 QArray<int> ints = m_backEnd->queryByExample( t, settings, d );
328 List list( ints, this );
329 return list;
330 } else {
331 owarn << "Query not possible: Objecttype mismatch" << oendl;
332 }
333
334 return List();
335}
336
337template <class T>
338typename OPimAccessTemplate<T>::List
339OPimAccessTemplate<T>::queryByExample( const OPimAccessTemplate::List& uidlist, const T& t, int settings, const QDateTime& d ) {
340 QArray<int> ints = m_backEnd->queryByExample( uidlist.uids(), t, settings, d );
341
342 List list( ints, this );
343 return list;
344}
345
346
347template <class T>
286T OPimAccessTemplate<T>::find( UID uid ) const{ 348T OPimAccessTemplate<T>::find( UID uid ) const{
287 // First search in cache.. 349 // First search in cache..
288 if ( m_cache.contains( uid ) ) 350 if ( m_cache.contains( uid ) )
289 return m_cache.find( uid ); 351 return m_cache.find( uid );
290 352
291 T t = m_backEnd->find( uid ); 353 T t = m_backEnd->find( uid );
292 cache( t ); 354 cache( t );
293 355
294 return t; 356 return t;
295} 357}
296 358
297 359
diff --git a/libopie2/opiepim/core/opimtemplatebase.h b/libopie2/opiepim/core/opimtemplatebase.h
index c8abab4..075e573 100644
--- a/libopie2/opiepim/core/opimtemplatebase.h
+++ b/libopie2/opiepim/core/opimtemplatebase.h
@@ -125,25 +125,25 @@ struct OPimBase {
125 /** make this enum 16bit large */ 125 /** make this enum 16bit large */
126 LastSortOrderBase = 0xffff 126 LastSortOrderBase = 0xffff
127 }; 127 };
128 128
129 /** 129 /**
130 * Sort a list of Items with the help of the sorted() function. 130 * Sort a list of Items with the help of the sorted() function.
131 * The Item you provide in SortOrder will be used 131 * The Item you provide in SortOrder will be used
132 * for sorting. 132 * for sorting.
133 * 133 *
134 * @see OPimAccessTemplate<>::sorted() 134 * @see OPimAccessTemplate<>::sorted()
135 */ 135 */
136 enum SortFilterBase { 136 enum SortFilterBase {
137 /** Do not filter anything. */ 137 /** Do not filter anything. */
138 FilterOff = 0, 138 FilterOff = 0,
139 /** Use given Categories for filter */ 139 /** Use given Categories for filter */
140 FilterCategory = 1, 140 FilterCategory = 1,
141 /** The first available custom filter defined in the specialized frontends */ 141 /** The first available custom filter defined in the specialized frontends */
142 FilterCustom = 1024, 142 FilterCustom = 1024,
143 LastSortFilterBase = 0xffffffff 143 LastSortFilterBase = 0xffffffff
144 }; 144 };
145 145
146 virtual UIDArray matchRegexpSimple( const QRegExp& r )const = 0; 146 virtual UIDArray matchRegexpSimple( const QRegExp& r )const = 0;
147 virtual UIDArray queryByExampleSimple( const OPimRecord*, int settings, 147 virtual UIDArray queryByExampleSimple( const OPimRecord*, int settings,
148 const QDateTime& d = QDateTime() )const = 0; 148 const QDateTime& d = QDateTime() )const = 0;
149 virtual UIDArray sortedSimple( const UIDArray& uid, bool ascending, 149 virtual UIDArray sortedSimple( const UIDArray& uid, bool ascending,