summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--libopie2/opiepim/ChangeLog2
-rw-r--r--libopie2/opiepim/backend/ocontactaccessbackend.cpp35
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 +1,3 @@
12005-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!)
12005-01-16 Stefan Eilers <stefan@eilers-online.net> 32005-01-16 Stefan Eilers <stefan@eilers-online.net>
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
@@ -248,4 +248,3 @@ UIDArray OPimContactAccessBackend::sorted( const UIDArray& ar, bool asc, int sor
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;
@@ -257,15 +256,27 @@ UIDArray OPimContactAccessBackend::sorted( const UIDArray& ar, bool asc, int sor
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 }
@@ -276,3 +287,3 @@ UIDArray OPimContactAccessBackend::sorted( const UIDArray& ar, bool asc, int sor
276 */ 287 */
277 if ( !catPassed ) 288 if ( !contactPassed )
278 continue; 289 continue;