-rw-r--r-- | libopie2/opiepim/ChangeLog | 2 | ||||
-rw-r--r-- | libopie2/opiepim/backend/ocontactaccessbackend.cpp | 35 |
2 files changed, 25 insertions, 12 deletions
diff --git a/libopie2/opiepim/ChangeLog b/libopie2/opiepim/ChangeLog index e94fa59..52b3f6b 100644 --- a/libopie2/opiepim/ChangeLog +++ b/libopie2/opiepim/ChangeLog | |||
@@ -1,2 +1,4 @@ | |||
1 | 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!) | ||
1 | 2005-01-16 Stefan Eilers <stefan@eilers-online.net> | 3 | 2005-01-16 Stefan Eilers <stefan@eilers-online.net> |
2 | * Added new OPimEventSortVector class, improved OPimSortVector | 4 | * Added new OPimEventSortVector class, improved OPimSortVector |
diff --git a/libopie2/opiepim/backend/ocontactaccessbackend.cpp b/libopie2/opiepim/backend/ocontactaccessbackend.cpp index c09427c..6ac9934 100644 --- a/libopie2/opiepim/backend/ocontactaccessbackend.cpp +++ b/libopie2/opiepim/backend/ocontactaccessbackend.cpp | |||
@@ -247,6 +247,5 @@ UIDArray OPimContactAccessBackend::sorted( const UIDArray& ar, bool asc, int sor | |||
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 bCat = filter & OPimContactAccess::FilterCategory ? true : false; | 249 | bool contactPassed = false; |
250 | bool catPassed = false; | ||
251 | int cat; | 250 | int cat; |
252 | 251 | ||
@@ -256,17 +255,29 @@ UIDArray OPimContactAccessBackend::sorted( const UIDArray& ar, bool asc, int sor | |||
256 | continue; | 255 | continue; |
257 | 256 | ||
257 | contactPassed = true; | ||
258 | |||
259 | // Filter all Contacts which have any category | ||
260 | if ( (filter & OPimContactAccess::DoNotShowWithCategory) ? true : false ){ | ||
261 | if ( !contact.categories().isEmpty() ) | ||
262 | continue; | ||
263 | } | ||
264 | |||
258 | /* show category */ | 265 | /* show category */ |
259 | /* -1 == unfiled */ | 266 | /* -1 == unfiled */ |
260 | catPassed = false; | ||
261 | for ( uint cat_nu = 0; cat_nu < cat_count; ++cat_nu ) { | 267 | for ( uint cat_nu = 0; cat_nu < cat_count; ++cat_nu ) { |
262 | cat = categories[cat_nu]; | 268 | cat = categories[cat_nu]; |
263 | if ( bCat && cat == -1 ) { | 269 | |
264 | if(!contact.categories().isEmpty() ) | 270 | if ( (filter & OPimContactAccess::FilterCategory) ? true : false ){ |
265 | continue; | 271 | if ( cat == -1 ) { |
266 | } else if ( bCat && cat != 0) | 272 | // We should search unfiled contacts. |
267 | if (!contact.categories().contains( cat ) ) | 273 | // Unfiled categories have no category set, thus continue if |
268 | continue; | 274 | // this contact has no empty category. |
269 | catPassed = true; | 275 | if( !contact.categories().isEmpty() ) |
270 | break; | 276 | contactPassed = false; |
277 | } else if ( cat != 0 ) | ||
278 | if ( !contact.categories().contains( cat ) ) | ||
279 | contactPassed = false; | ||
280 | } | ||
281 | |||
271 | } | 282 | } |
272 | 283 | ||
@@ -275,5 +286,5 @@ UIDArray OPimContactAccessBackend::sorted( const UIDArray& ar, bool asc, int sor | |||
275 | * continue | 286 | * continue |
276 | */ | 287 | */ |
277 | if ( !catPassed ) | 288 | if ( !contactPassed ) |
278 | continue; | 289 | continue; |
279 | 290 | ||