summaryrefslogtreecommitdiff
Side-by-side diff
Diffstat (more/less context) (show whitespace changes)
-rw-r--r--libopie2/opiepim/ChangeLog2
-rw-r--r--libopie2/opiepim/backend/ocontactaccessbackend.cpp31
2 files changed, 23 insertions, 10 deletions
diff --git a/libopie2/opiepim/ChangeLog b/libopie2/opiepim/ChangeLog
index e94fa59..52b3f6b 100644
--- a/libopie2/opiepim/ChangeLog
+++ b/libopie2/opiepim/ChangeLog
@@ -1,3 +1,5 @@
+2005-03-18 Stefan Eilers <stefan@eilers-online.net>
+ * Rewrote generic sorted filter and added filter for "DoNotShowWithCategory", needed by addressbook (other filters need to be added!)
2005-01-16 Stefan Eilers <stefan@eilers-online.net>
* Added new OPimEventSortVector class, improved OPimSortVector
* OPimAccessBackend now supports generic sorting.
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
@@ -246,8 +246,7 @@ UIDArray OPimContactAccessBackend::sorted( const UIDArray& ar, bool asc, int sor
int item = 0;
uint cat_count = categories.count();
uint eve_count = ar.count();
- bool bCat = filter & OPimContactAccess::FilterCategory ? true : false;
- bool catPassed = false;
+ bool contactPassed = false;
int cat;
for ( uint i = 0; i < eve_count; ++i ) {
@@ -255,26 +254,38 @@ UIDArray OPimContactAccessBackend::sorted( const UIDArray& ar, bool asc, int sor
if ( contact.isEmpty() )
continue;
+ contactPassed = true;
+
+ // Filter all Contacts which have any category
+ if ( (filter & OPimContactAccess::DoNotShowWithCategory) ? true : false ){
+ if ( !contact.categories().isEmpty() )
+ continue;
+ }
+
/* show category */
/* -1 == unfiled */
- catPassed = false;
for ( uint cat_nu = 0; cat_nu < cat_count; ++cat_nu ) {
cat = categories[cat_nu];
- if ( bCat && cat == -1 ) {
+
+ if ( (filter & OPimContactAccess::FilterCategory) ? true : false ){
+ if ( cat == -1 ) {
+ // We should search unfiled contacts.
+ // Unfiled categories have no category set, thus continue if
+ // this contact has no empty category.
if(!contact.categories().isEmpty() )
- continue;
- } else if ( bCat && cat != 0)
+ contactPassed = false;
+ } else if ( cat != 0 )
if (!contact.categories().contains( cat ) )
- continue;
- catPassed = true;
- break;
+ contactPassed = false;
+ }
+
}
/*
* If none of the Categories matched
* continue
*/
- if ( !catPassed )
+ if ( !contactPassed )
continue;
vector.insert(item++, contact );