Advertisement
Glenpl

Untitled

Jun 27th, 2015
287
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.12 KB | None | 0 0
  1. const Tasklist Tasklist::filter(bool filterByID = false, int IDMin = 0, int IDMax = 0,
  2.                                 bool filterByDateOfCreation = false, QString dateOfCreationMin = "", QString dateOfCreationMax = "",
  3.                                 bool filterByPriority = false, int priorityMin = 0, int priorityMax = 0,
  4.                                 bool filterByDone = false, bool done = false)
  5. {
  6.   QVector<Task> filtered_list(tasks.size());
  7.  
  8.   auto condition_checker = [](Task t){
  9.       return ( ( filterByID ? isBetveen( t.getID(), IDMin, IDMax )  : true ) &&
  10.                ( filterByDateOfCreation ? isBetveen( t.getDateOfCreation(), dateOfCreationMin, dateOfCreationMax ) : true ) &&
  11.                ( filterByPriority ? isBetveen( t.getPriority(), priorityMin, priorityMax ) : true ) &&
  12.                ( filterByDone ? ( t.getDone() == done ) : true )
  13.             );
  14.     };
  15.  
  16.   auto it = std::copy_if( tasks.begin(), tasks.end(), filtered_list.begin(), condition_checker );
  17.   filtered_list.resize( std::distance(filtered_list.begin(), it) );  // shrink container to new size
  18.  
  19.   return Tasklist( filtered_list );
  20. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement