]> git.sven.stormbind.net Git - sven/vym.git/blob - taskfiltermodel.cpp
fa3bde7cb2a3dcc598cf12a9089ad12307f88d4f
[sven/vym.git] / taskfiltermodel.cpp
1 #include "taskfiltermodel.h"
2 #include "taskmodel.h"
3
4 #include <QSortFilterProxyModel>
5
6 #include "branchitem.h"
7
8 extern TaskModel *taskModel;
9
10 void TaskFilterModel::setFilter (bool b)
11 {
12     useFilter = b;
13 }
14
15 void TaskFilterModel::setMapFilter (const QString &s)   
16 {
17     mapFilter = s;
18 }
19
20 void TaskFilterModel::setFilterNew (bool b)
21 {
22     filterNew = b;
23 }
24
25 void TaskFilterModel::setFilterFlags (bool b)
26 {
27     filterFlags = b;
28 }
29 bool TaskFilterModel::filterAcceptsRow(int sourceRow, 
30          const QModelIndex &sourceParent) const
31 {
32     QModelIndex ix = sourceModel()->index(sourceRow, 0, sourceParent);
33
34     // Filter by mapname
35     QString mapname = taskModel->getTask(ix)->getMapName();
36     if (mapname.isEmpty()) mapname = "justSomePseudoMapNameForFiltering";
37     if ( !mapFilter.isEmpty() && mapname != mapFilter )
38         return false;
39
40     // Filter new tasks
41     if (filterNew && taskModel->getTask(ix)->getAwake() != Task::Morning)
42         return false;
43
44     // Filter active tasks
45     if (useFilter && ((taskModel->getTask(ix)->getDaysSleep() > 0) || (taskModel->getTask(ix)->getStatus() == Task::Finished) ) )
46         return false;
47
48     // Filter flags  // FIXME-1 currently only "arrow-up"
49     if (filterFlags && !taskModel->getTask(ix)->getBranch()->hasActiveStandardFlag("arrow-up") )
50         return false;
51
52     return true;
53 }
54