]> git.sven.stormbind.net Git - sven/vym.git/blob - src/taskmodel.h
Replace Pierre as the maintainer
[sven/vym.git] / src / taskmodel.h
1 #ifndef TASKMODEL_H
2 #define TASKMODEL_H
3
4 #include <QAbstractTableModel>
5 #include <QIcon>
6 #include <QList>
7
8 #include "task.h"
9
10 class BranchItem;
11 class VymModel;
12
13 class TaskModel : public QAbstractTableModel {
14     Q_OBJECT
15
16   public:
17     TaskModel(QObject *parent = 0);
18     QModelIndex index(Task *t) const;
19     QModelIndex indexRowEnd(Task *t);
20     Task *getTask(const QModelIndex &ix) const;
21     Task *getTask(const int i) const;
22     int rowCount(const QModelIndex &parent) const;
23     int columnCount(const QModelIndex &parent) const;
24     QVariant data(const QModelIndex &index, int role) const;
25     QVariant headerData(int section, Qt::Orientation orientation,
26                         int role) const;
27     Qt::ItemFlags flags(const QModelIndex &index) const;
28     bool setData(const QModelIndex &index, const QVariant &value,
29                  int role = Qt::EditRole);
30     //    bool setData(const QModelIndex &index, Task *t, int
31     //    role=Qt::EditRole);
32     void emitDataChanged(Task *t);
33     bool insertRows(int position, int rows,
34                     const QModelIndex &index = QModelIndex(), Task *t = nullptr);
35     bool removeRows(int position, int rows,
36                     const QModelIndex &index = QModelIndex());
37
38     int count(VymModel *model = nullptr) const;
39     Task *createTask(BranchItem *bi);
40     void deleteTask(Task *t);
41     bool updateAwake(bool force = false);
42     void recalcPriorities();
43
44     void setShowParentsLevel(uint i);
45     uint getShowParentsLevel();
46
47     // Drag and drop support
48     Qt::DropActions supportedDropActions() const;
49     QStringList mimeTypes() const;
50     QMimeData *mimeData(const QModelIndexList &indexes) const;
51     bool dropMimeData(const QMimeData *data, Qt::DropAction action, int row,
52                       int column, const QModelIndex &parent);
53
54   private:
55     QList<Task *> tasks;
56     uint showParentsLevel;
57
58     QIcon arrow_up_icon;
59     QIcon arrow_2up_icon;
60     QIcon task_new_icon;
61     QIcon task_new_morning_icon;
62     QIcon task_new_sleeping_icon;
63     QIcon task_wip_icon;
64
65     QIcon task_wip_morning_icon;
66     QIcon task_wip_sleeping_icon;
67     QIcon task_finished_icon;
68
69     QIcon taskfilter_stopsign_icon;
70     QIcon taskfilter_stopsign_arrow_up_icon;
71     QIcon taskfilter_stopsign_arrow_2up_icon;
72 };
73
74 #endif