]> git.sven.stormbind.net Git - sven/vym.git/blobdiff - src/taskmodel.h
New upstream version 2.9.22
[sven/vym.git] / src / taskmodel.h
diff --git a/src/taskmodel.h b/src/taskmodel.h
new file mode 100644 (file)
index 0000000..d73681b
--- /dev/null
@@ -0,0 +1,74 @@
+#ifndef TASKMODEL_H
+#define TASKMODEL_H
+
+#include <QAbstractTableModel>
+#include <QIcon>
+#include <QList>
+
+#include "task.h"
+
+class BranchItem;
+class VymModel;
+
+class TaskModel : public QAbstractTableModel {
+    Q_OBJECT
+
+  public:
+    TaskModel(QObject *parent = 0);
+    QModelIndex index(Task *t) const;
+    QModelIndex indexRowEnd(Task *t);
+    Task *getTask(const QModelIndex &ix) const;
+    Task *getTask(const int i) const;
+    int rowCount(const QModelIndex &parent) const;
+    int columnCount(const QModelIndex &parent) const;
+    QVariant data(const QModelIndex &index, int role) const;
+    QVariant headerData(int section, Qt::Orientation orientation,
+                        int role) const;
+    Qt::ItemFlags flags(const QModelIndex &index) const;
+    bool setData(const QModelIndex &index, const QVariant &value,
+                 int role = Qt::EditRole);
+    //    bool setData(const QModelIndex &index, Task *t, int
+    //    role=Qt::EditRole);
+    void emitDataChanged(Task *t);
+    bool insertRows(int position, int rows,
+                    const QModelIndex &index = QModelIndex(), Task *t = nullptr);
+    bool removeRows(int position, int rows,
+                    const QModelIndex &index = QModelIndex());
+
+    int count(VymModel *model = nullptr) const;
+    Task *createTask(BranchItem *bi);
+    void deleteTask(Task *t);
+    bool updateAwake(bool force = false);
+    void recalcPriorities();
+
+    void setShowParentsLevel(uint i);
+    uint getShowParentsLevel();
+
+    // Drag and drop support
+    Qt::DropActions supportedDropActions() const;
+    QStringList mimeTypes() const;
+    QMimeData *mimeData(const QModelIndexList &indexes) const;
+    bool dropMimeData(const QMimeData *data, Qt::DropAction action, int row,
+                      int column, const QModelIndex &parent);
+
+  private:
+    QList<Task *> tasks;
+    uint showParentsLevel;
+
+    QIcon arrow_up_icon;
+    QIcon arrow_2up_icon;
+    QIcon task_new_icon;
+    QIcon task_new_morning_icon;
+    QIcon task_new_sleeping_icon;
+    QIcon task_wip_icon;
+
+    QIcon task_wip_morning_icon;
+    QIcon task_wip_sleeping_icon;
+    QIcon task_finished_icon;
+
+    QIcon taskfilter_stopsign_icon;
+    QIcon taskfilter_stopsign_arrow_up_icon;
+    QIcon taskfilter_stopsign_arrow_2up_icon;
+};
+
+#endif