From b37f4395889351829e295d6fd1b4535ad3a67728 Mon Sep 17 00:00:00 2001 From: eilers Date: Fri, 18 Mar 2005 16:03:58 +0000 Subject: Reworte generic sorted() and added filter for "DoNotShowWithCategory" needed by addressbook --- (limited to 'libopie2') 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 + * Rewrote generic sorted filter and added filter for "DoNotShowWithCategory", needed by addressbook (other filters need to be added!) 2005-01-16 Stefan Eilers * 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(!contact.categories().isEmpty() ) - continue; - } else if ( bCat && cat != 0) - if (!contact.categories().contains( cat ) ) - continue; - catPassed = true; - break; + + 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() ) + contactPassed = false; + } else if ( cat != 0 ) + if ( !contact.categories().contains( cat ) ) + contactPassed = false; + } + } /* * If none of the Categories matched * continue */ - if ( !catPassed ) + if ( !contactPassed ) continue; vector.insert(item++, contact ); -- cgit v0.9.0.2