summaryrefslogtreecommitdiff
path: root/libopie2/opiepim/backend
Unidiff
Diffstat (limited to 'libopie2/opiepim/backend') (more/less context) (ignore whitespace changes)
-rw-r--r--libopie2/opiepim/backend/ocontactaccessbackend.cpp35
1 files changed, 23 insertions, 12 deletions
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
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 bCat = filter & OPimContactAccess::FilterCategory ? true : false; 249 bool contactPassed = false;
250 bool catPassed = false;
251 int cat; 250 int cat;
252 251
253 for ( uint i = 0; i < eve_count; ++i ) { 252 for ( uint i = 0; i < eve_count; ++i ) {
@@ -255,26 +254,38 @@ UIDArray OPimContactAccessBackend::sorted( const UIDArray& ar, bool asc, int sor
255 if ( contact.isEmpty() ) 254 if ( contact.isEmpty() )
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
273 /* 284 /*
274 * If none of the Categories matched 285 * If none of the Categories matched
275 * continue 286 * continue
276 */ 287 */
277 if ( !catPassed ) 288 if ( !contactPassed )
278 continue; 289 continue;
279 290
280 vector.insert(item++, contact ); 291 vector.insert(item++, contact );