Diffstat (limited to 'libopie2/opiepim/core/opimaccesstemplate.h') (more/less context) (ignore whitespace changes)
-rw-r--r-- | libopie2/opiepim/core/opimaccesstemplate.h | 76 |
1 files changed, 69 insertions, 7 deletions
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 | |||
@@ -83,13 +83,53 @@ public: | |||
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 | /** |
@@ -266,26 +306,48 @@ typename OPimAccessTemplate<T>::List OPimAccessTemplate<T>::matchRegexp( const Q | |||
266 | template <class T> | 306 | template <class T> |
267 | QArray<int> OPimAccessTemplate<T>::records()const { | 307 | QArray<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 | */ | ||
276 | template <class T> | 312 | template <class T> |
277 | typename OPimAccessTemplate<T>::List | 313 | typename OPimAccessTemplate<T>::List |
278 | OPimAccessTemplate<T>::queryByExample( const T& t, int settings, const QDateTime& d ) { | 314 | OPimAccessTemplate<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 | ||
285 | template <class T> | 321 | template <class T> |
322 | typename OPimAccessTemplate<T>::List | ||
323 | OPimAccessTemplate<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 | |||
337 | template <class T> | ||
338 | typename OPimAccessTemplate<T>::List | ||
339 | OPimAccessTemplate<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 | |||
347 | template <class T> | ||
286 | T OPimAccessTemplate<T>::find( UID uid ) const{ | 348 | T 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 ); |