From dc4f0795c7a77dbc98dbd0ce3258c608a48d08e1 Mon Sep 17 00:00:00 2001 From: Vyn Date: Sun, 14 Apr 2024 14:36:07 +0200 Subject: [PATCH] Add color to tags --- src/Backend.cpp | 14 ++++++++++++++ src/Backend.h | 3 +++ src/qml/SideMenu.qml | 6 ++++++ src/qml/components/Tag.qml | 7 ++++++- 4 files changed, 29 insertions(+), 1 deletion(-) diff --git a/src/Backend.cpp b/src/Backend.cpp index 999d53c..c19fe8b 100644 --- a/src/Backend.cpp +++ b/src/Backend.cpp @@ -43,6 +43,15 @@ Backend::Backend() for (const QJsonValueRef &filePath : jsonFilesPath.toArray()) { mirai.loadFile(filePath.toString().toStdString()); } + + auto jsonTagsConfig = json["tags"]; + if (jsonTagsConfig.isObject()) { + for (auto &jsonTagConfigKey : jsonTagsConfig.toObject().keys()) { + tagsConfig[jsonTagConfigKey] = + jsonTagsConfig.toObject()[jsonTagConfigKey].toObject()["color"].toString(); + } + } + view = mirai.getTasks(); rebuildQMLTasksList(); } @@ -227,3 +236,8 @@ QVariant Backend::getFiles() { return QVariant::fromValue(QMLTasksFiles); } + +QString Backend::getTagColor(QString tag) +{ + return tagsConfig[tag]; +} diff --git a/src/Backend.h b/src/Backend.h index aa04e8f..e252d2c 100644 --- a/src/Backend.h +++ b/src/Backend.h @@ -22,6 +22,7 @@ #include #include #include +#include #include "TaskItem.h" @@ -51,6 +52,7 @@ class Backend : public QObject Q_INVOKABLE void updateTodo(int todoIndex, QString state, QString text, QString date); Q_INVOKABLE void removeTodo(int todoIndex); Q_INVOKABLE void hideCompletedTasks(bool shouldHide); + Q_INVOKABLE QString getTagColor(QString tag); private: void rebuildQMLTasksList(); @@ -70,6 +72,7 @@ class Backend : public QObject QList QMLTags; QList QMLActiveTagsFilter; QList QMLActiveFilesFilter; + QMap tagsConfig; bool shouldHideCompletedTasks_ = true; diff --git a/src/qml/SideMenu.qml b/src/qml/SideMenu.qml index 7056667..4981003 100644 --- a/src/qml/SideMenu.qml +++ b/src/qml/SideMenu.qml @@ -64,8 +64,14 @@ ColumnLayout { Layout.fillWidth: true color: backend.activeTagsFilter.includes(modelData) ? MiraiColorPalette.filterSelected : mouse.hovered ? MiraiColorPalette.filterHovered : "transparent" radius: 4 + QtObject { + id: internal + property string configTagColor: backend.getTagColor(modelData) + } AppText { + text: modelData + color: internal.configTagColor != "" ? internal.configTagColor : MiraiColorPalette.text padding: 4 } MouseArea { diff --git a/src/qml/components/Tag.qml b/src/qml/components/Tag.qml index 3d264ad..6e75877 100644 --- a/src/qml/components/Tag.qml +++ b/src/qml/components/Tag.qml @@ -18,8 +18,13 @@ Rectangle { implicitHeight: childrenRect.height radius: 8 + QtObject { + id: internal + property string configTagColor: backend.getTagColor(control.text) + } + AppText { - color: control.textColor + color: internal.configTagColor != "" ? internal.configTagColor : control.textColor padding: 2 leftPadding: 6 rightPadding: 6