author | eilers <eilers> | 2005-03-19 16:23:16 (UTC) |
---|---|---|
committer | eilers <eilers> | 2005-03-19 16:23:16 (UTC) |
commit | ea15abad0554edab0746f342fafddd461a0fb0eb (patch) (unidiff) | |
tree | d645b3d8655bab11f9685f1989a854b21468e1d5 /libopie2 | |
parent | 34e42590a8ef21c1377f89c7b82f25bcf0aec3cb (diff) | |
download | opie-ea15abad0554edab0746f342fafddd461a0fb0eb.zip opie-ea15abad0554edab0746f342fafddd461a0fb0eb.tar.gz opie-ea15abad0554edab0746f342fafddd461a0fb0eb.tar.bz2 |
Minor update for generic sorted(): It will now ignory any categories if filter "DoNotShowCategories" is used..
-rw-r--r-- | libopie2/opiepim/ChangeLog | 2 | ||||
-rw-r--r-- | libopie2/opiepim/backend/ocontactaccessbackend.cpp | 41 |
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,24 +1,26 @@ | |||
1 | 2005-03.19 Stefan Eilers <stefan@eilers-online.net> | ||
2 | * Minor update for sorted(). Now ignoring any category search if "DoNotShowWithCategory" filter is activated. | ||
1 | 2005-03-18 Stefan Eilers <stefan@eilers-online.net> | 3 | 2005-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!) |
3 | 2005-01-16 Stefan Eilers <stefan@eilers-online.net> | 5 | 2005-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. |
6 | 2005-01-03 Stefan Eilers <stefan@eilers-online.net> | 8 | 2005-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 |
9 | 2004-12-28 Stefan Eilers <stefan@eilers-online.net> | 11 | 2004-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 |
14 | 2004-11-23 Stefan Eilers <stefan@eilers-online.net> | 16 | 2004-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 |
18 | 2004-11-18 Holger Freyther <freyther@handhelds.org> | 20 | 2004-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 |
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 | |||
@@ -235,73 +235,72 @@ bool OPimContactAccessBackend::hasQuerySettings (uint querySettings) const | |||
235 | return ( false ); | 235 | return ( false ); |
236 | } | 236 | } |
237 | } | 237 | } |
238 | 238 | ||
239 | 239 | ||
240 | UIDArray OPimContactAccessBackend::sorted( const UIDArray& ar, bool asc, int sortOrder, | 240 | UIDArray 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 | ||
305 | OPimBackendOccurrence::List OPimContactAccessBackend::occurrences( const QDate& start, | 304 | OPimBackendOccurrence::List OPimContactAccessBackend::occurrences( const QDate& start, |
306 | const QDate& end)const { | 305 | const QDate& end)const { |
307 | OPimBackendOccurrence::List lst; | 306 | OPimBackendOccurrence::List lst; |