From d1a4858504dce68d56399b6340e8030f1e45fc27 Mon Sep 17 00:00:00 2001 From: Vyn Date: Wed, 17 Apr 2024 15:07:33 +0200 Subject: [PATCH] Show tasks with deadline first, in order --- src/Backend.cpp | 2 ++ src/core/TaskItem.cpp | 5 +++++ src/core/TaskItem.h | 1 + src/core/TasksView.cpp | 12 +++++++++++- 4 files changed, 19 insertions(+), 1 deletion(-) diff --git a/src/Backend.cpp b/src/Backend.cpp index c19fe8b..19f6ddb 100644 --- a/src/Backend.cpp +++ b/src/Backend.cpp @@ -122,6 +122,7 @@ void Backend::updateTodoFromRawFormat(int todoIndex, QString text, QString date) *(taskItem.taskItem) = mirai::TodoMdFormat::StringToTask(text.toStdString(), date.toStdString()); mirai.save(); + view.lock()->update(); rebuildQMLTasksList(); emit tasksChanged(); } @@ -137,6 +138,7 @@ void Backend::updateTodo(int todoIndex, QString state, QString text, QString dat taskItem.taskItem->setText(text.toStdString()); taskItem.taskItem->setDate(date.toStdString()); mirai.save(); + view.lock()->update(); rebuildQMLTasksList(); emit tasksChanged(); } diff --git a/src/core/TaskItem.cpp b/src/core/TaskItem.cpp index 919c818..ca71401 100644 --- a/src/core/TaskItem.cpp +++ b/src/core/TaskItem.cpp @@ -75,6 +75,11 @@ bool TaskItem::hasDate() const return isDate(data.date); } +bool TaskItem::hasTime() const +{ + return getStartTime() != "" && getEndTime() != ""; +} + bool TaskItem::hasTag(const std::string &tag) const { return vectorUtils::contains(data.tags, tag); diff --git a/src/core/TaskItem.h b/src/core/TaskItem.h index 2e61d61..6f7beb5 100644 --- a/src/core/TaskItem.h +++ b/src/core/TaskItem.h @@ -57,6 +57,7 @@ class TaskItem const Tags &getTags() const; bool hasTag(const std::string &tag) const; bool hasDate() const; + bool hasTime() const; private: void onChange(); diff --git a/src/core/TasksView.cpp b/src/core/TasksView.cpp index 1077978..26d95cf 100644 --- a/src/core/TasksView.cpp +++ b/src/core/TasksView.cpp @@ -52,7 +52,17 @@ void TasksView::update() } else if (!t1->hasDate() && t2->hasDate()) { return false; } - return t1->getDate() < t2->getDate(); + if (t1->getDate() < t2->getDate()) { + return true; + } else if (t1->getDate() > t2->getDate()) { + return false; + } + if (t1->hasTime() && !t2->hasTime()) { + return true; + } else if (!t1->hasTime() && t2->hasTime()) { + return false; + } + return t1->getStartTime() < t2->getStartTime(); }); }