summaryrefslogtreecommitdiff
path: root/libopie2
Unidiff
Diffstat (limited to 'libopie2') (more/less context) (ignore whitespace changes)
-rw-r--r--libopie2/opiepim/ChangeLog2
-rw-r--r--libopie2/opiepim/backend/ocontactaccessbackend.cpp41
2 files changed, 22 insertions, 21 deletions
diff --git a/libopie2/opiepim/ChangeLog b/libopie2/opiepim/ChangeLog
index 52b3f6b..a1b4db0 100644
--- a/libopie2/opiepim/ChangeLog
+++ b/libopie2/opiepim/ChangeLog
@@ -1,31 +1,33 @@
12005-03.19 Stefan Eilers <stefan@eilers-online.net>
2 * Minor update for sorted(). Now ignoring any category search if "DoNotShowWithCategory" filter is activated.
12005-03-18 Stefan Eilers <stefan@eilers-online.net> 32005-03-18 Stefan Eilers <stefan@eilers-online.net>
2 * Rewrote generic sorted filter and added filter for "DoNotShowWithCategory", needed by addressbook (other filters need to be added!) 4 * Rewrote generic sorted filter and added filter for "DoNotShowWithCategory", needed by addressbook (other filters need to be added!)
32005-01-16 Stefan Eilers <stefan@eilers-online.net> 52005-01-16 Stefan Eilers <stefan@eilers-online.net>
4 * Added new OPimEventSortVector class, improved OPimSortVector 6 * Added new OPimEventSortVector class, improved OPimSortVector
5 * OPimAccessBackend now supports generic sorting. 7 * OPimAccessBackend now supports generic sorting.
62005-01-03 Stefan Eilers <stefan@eilers-online.net> 82005-01-03 Stefan Eilers <stefan@eilers-online.net>
7 * Fixing bug in API documentation 9 * Fixing bug in API documentation
8 * Moving hasQuerySettings() and querySettings() to OPimAccessTemplate to be available for all frontends 10 * Moving hasQuerySettings() and querySettings() to OPimAccessTemplate to be available for all frontends
92004-12-28 Stefan Eilers <stefan@eilers-online.net> 112004-12-28 Stefan Eilers <stefan@eilers-online.net>
10 * Make improved query by example accessable via frontend 12 * Make improved query by example accessable via frontend
11 * Some API documentation improvement 13 * Some API documentation improvement
12 * Cleanup of backend api.. 14 * Cleanup of backend api..
13 * Fixing bug #1501 15 * Fixing bug #1501
142004-11-23 Stefan Eilers <stefan@eilers-online.net> 162004-11-23 Stefan Eilers <stefan@eilers-online.net>
15 * Implement fast and full featured version of sorted() for addressbook 17 * Implement fast and full featured version of sorted() for addressbook
16 * Implement generic queryByExample for all Addressboook backends. It allows incremental search. 18 * Implement generic queryByExample for all Addressboook backends. It allows incremental search.
17 * Update of API Documentation 19 * Update of API Documentation
182004-11-18 Holger Freyther <freyther@handhelds.org> 202004-11-18 Holger Freyther <freyther@handhelds.org>
19 * Every Access can give a set of Occurrences for a period or a datetime 21 * Every Access can give a set of Occurrences for a period or a datetime
20 * QueryByExample, Find, Sort can be generically accessed by OPimBase 22 * QueryByExample, Find, Sort can be generically accessed by OPimBase
21 pointer interface 23 pointer interface
22 * OPimBackendOccurrence gets split up to OPimOccurrences by 24 * OPimBackendOccurrence gets split up to OPimOccurrences by
23 OPimTemplateBase 25 OPimTemplateBase
24 * Add safeCast to various OPimRecords 26 * Add safeCast to various OPimRecords
25 * Kill memleak in OPimTodo 27 * Kill memleak in OPimTodo
26 * Add SortVector implementations for OPimTodo and OPimContact 28 * Add SortVector implementations for OPimTodo and OPimContact
27 29
28 2004-??-??The Opie Team <opie@handhelds.org> 30 2004-??-??The Opie Team <opie@handhelds.org>
29 * Implemented some important modifications to allow to use OPimRecords as it is, without 31 * Implemented some important modifications to allow to use OPimRecords as it is, without
30 have to cast them. This makes it possible to write applications which handling pim 32 have to cast them. This makes it possible to write applications which handling pim
31 data in a generic manner (see opimconvertion tool) (eilers) \ No newline at end of file 33 data in a generic manner (see opimconvertion tool) (eilers) \ No newline at end of file
diff --git a/libopie2/opiepim/backend/ocontactaccessbackend.cpp b/libopie2/opiepim/backend/ocontactaccessbackend.cpp
index 6ac9934..e942905 100644
--- a/libopie2/opiepim/backend/ocontactaccessbackend.cpp
+++ b/libopie2/opiepim/backend/ocontactaccessbackend.cpp
@@ -227,89 +227,88 @@ bool OPimContactAccessBackend::hasQuerySettings (uint querySettings) const
227 return ( true ); 227 return ( true );
228 case OPimContactAccess::WildCards: 228 case OPimContactAccess::WildCards:
229 return ( true ); 229 return ( true );
230 case OPimContactAccess::ExactMatch: 230 case OPimContactAccess::ExactMatch:
231 return ( true ); 231 return ( true );
232 case 0: // one of the upper removed bits were set.. 232 case 0: // one of the upper removed bits were set..
233 return ( true ); 233 return ( true );
234 default: 234 default:
235 return ( false ); 235 return ( false );
236 } 236 }
237} 237}
238 238
239 239
240UIDArray OPimContactAccessBackend::sorted( const UIDArray& ar, bool asc, int sortOrder, 240UIDArray OPimContactAccessBackend::sorted( const UIDArray& ar, bool asc, int sortOrder,
241 int filter, const QArray<int>& categories )const { 241 int filter, const QArray<int>& categories )const {
242 odebug << "Using Unaccelerated OPimContactAccessBackend sorted Implementation" << oendl; 242 odebug << "Using Unaccelerated OPimContactAccessBackend sorted Implementation" << oendl;
243 243
244 Internal::OPimContactSortVector vector(ar.count(), asc, sortOrder ); 244 Internal::OPimContactSortVector vector(ar.count(), asc, sortOrder );
245 245
246 int item = 0; 246 int item = 0;
247 uint cat_count = categories.count(); 247 uint cat_count = categories.count();
248 uint eve_count = ar.count(); 248 uint eve_count = ar.count();
249 bool contactPassed = false; 249 bool contactPassed = false;
250 int cat; 250 int cat;
251 251
252 for ( uint i = 0; i < eve_count; ++i ) { 252 for ( uint i = 0; i < eve_count; ++i ) {
253 OPimContact contact = find( ar[i], ar, i, Frontend::Forward ); 253 OPimContact contact = find( ar[i], ar, i, Frontend::Forward );
254 if ( contact.isEmpty() ) 254 if ( contact.isEmpty() )
255 continue; 255 continue;
256 256
257 contactPassed = true; 257 contactPassed = true;
258 258
259 // Filter all Contacts which have any category
260 if ( (filter & OPimContactAccess::DoNotShowWithCategory) ? true : false ){ 259 if ( (filter & OPimContactAccess::DoNotShowWithCategory) ? true : false ){
261 if ( !contact.categories().isEmpty() ) 260 if ( !contact.categories().isEmpty() )
262 continue; 261 continue;
262 } else {
263
264 if ( (filter & OPimContactAccess::FilterCategory) ? true : false ){
265 /* show category */
266 /* -1 == unfiled */
267 for ( uint cat_nu = 0; cat_nu < cat_count; ++cat_nu ) {
268 cat = categories[cat_nu];
269
270 if ( cat == -1 ) {
271 // We should search unfiled contacts.
272 // Unfiled categories have no category set, thus continue if
273 // this contact has no empty category.
274 if( !contact.categories().isEmpty() )
275 contactPassed = false;
276 } else if ( cat != 0 )
277 if ( !contact.categories().contains( cat ) )
278 contactPassed = false;
279 }
280
281 }
263 } 282 }
264
265 /* show category */
266 /* -1 == unfiled */
267 for ( uint cat_nu = 0; cat_nu < cat_count; ++cat_nu ) {
268 cat = categories[cat_nu];
269
270 if ( (filter & OPimContactAccess::FilterCategory) ? true : false ){
271 if ( cat == -1 ) {
272 // We should search unfiled contacts.
273 // Unfiled categories have no category set, thus continue if
274 // this contact has no empty category.
275 if( !contact.categories().isEmpty() )
276 contactPassed = false;
277 } else if ( cat != 0 )
278 if ( !contact.categories().contains( cat ) )
279 contactPassed = false;
280 }
281
282 }
283
284 /* 283 /*
285 * If none of the Categories matched 284 * If none of the Categories matched
286 * continue 285 * continue
287 */ 286 */
288 if ( !contactPassed ) 287 if ( !contactPassed )
289 continue; 288 continue;
290 289
291 vector.insert(item++, contact ); 290 vector.insert(item++, contact );
292 } 291 }
293 292
294 vector.resize( item ); 293 vector.resize( item );
295 /* sort it now */ 294 /* sort it now */
296 vector.sort(); 295 vector.sort();
297 /* now get the uids */ 296 /* now get the uids */
298 UIDArray array( vector.count() ); 297 UIDArray array( vector.count() );
299 for (uint i= 0; i < vector.count(); i++ ) 298 for (uint i= 0; i < vector.count(); i++ )
300 array[i] = vector.uidAt( i ); 299 array[i] = vector.uidAt( i );
301 300
302 return array; 301 return array;
303} 302}
304 303
305OPimBackendOccurrence::List OPimContactAccessBackend::occurrences( const QDate& start, 304OPimBackendOccurrence::List OPimContactAccessBackend::occurrences( const QDate& start,
306 const QDate& end)const { 305 const QDate& end)const {
307 OPimBackendOccurrence::List lst; 306 OPimBackendOccurrence::List lst;
308 307
309 UIDArray records = allRecords(); 308 UIDArray records = allRecords();
310 const uint count = records.count(); 309 const uint count = records.count();
311 int uid; 310 int uid;
312 311
313 for ( uint i = 0; i < count; ++i ) { 312 for ( uint i = 0; i < count; ++i ) {
314 uid = records[i]; 313 uid = records[i];
315 OPimContact contact = find(uid, records, i, Frontend::Forward ); 314 OPimContact contact = find(uid, records, i, Frontend::Forward );