Status and Priority service singleton

This commit is contained in:
Aurelie Delhaie
2023-02-12 22:33:22 +01:00
parent d0186d0759
commit 35dee6684f
13 changed files with 191 additions and 85 deletions

View File

@@ -18,6 +18,7 @@
#include "taskdialog.h"
#include "filterdialog.h"
#include "../tools.h"
#include "../services/taskstateservice.h"
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
@@ -61,11 +62,11 @@ MainWindow::~MainWindow()
void MainWindow::openPreferences()
{
PrefDialog dialog(status, priorities, this);
PrefDialog dialog(this);
if (dialog.exec() == QDialog::DialogCode::Accepted)
{
this->priorities = dialog.getPriorities();
this->status = dialog.getStatus();
TaskStateService::getInstance()->updatePriorities(dialog.getPriorities());
TaskStateService::getInstance()->updateStatuses(dialog.getStatus());
save();
redrawTaskTree();
}
@@ -153,7 +154,7 @@ void MainWindow::onNewTaskClick()
{
if (selectedBoardIndex > -1)
{
TaskDialog dialog(status, priorities, this);
TaskDialog dialog(this);
if (dialog.exec() == QDialog::DialogCode::Accepted)
{
Task t = dialog.getTask();
@@ -169,7 +170,7 @@ void MainWindow::onNewTaskClick()
void MainWindow::onNewFilterClick()
{
FilterDialog dialog("New filter", boards, status, priorities, this);
FilterDialog dialog("New filter", boards, this);
if (dialog.exec() == QDialog::DialogCode::Accepted)
{
Filter f = dialog.getFilter();
@@ -237,7 +238,7 @@ void MainWindow::onEditTask(QTreeWidgetItem *item)
Task *t = getSelectedTask();
if (t != nullptr)
{
TaskDialog dialog(t, status, priorities, this);
TaskDialog dialog(t, this);
if (dialog.exec() == QDialog::DialogCode::Accepted)
{
Task editedTask = dialog.getTask();
@@ -346,7 +347,7 @@ void MainWindow::onEditFilterMenu()
{
int i = ui->filterListWidget->indexFromItem(menuSelectedFilterItem).row();
Filter f = filters[i];
FilterDialog dialog("Edit the filter", f, boards, status, priorities, this);
FilterDialog dialog("Edit the filter", f, boards, this);
if (dialog.exec() == QDialog::DialogCode::Accepted)
{
Filter f = dialog.getFilter();
@@ -396,13 +397,15 @@ void MainWindow::init()
QJsonArray jsonStatus = save[STATUS_KEY].toArray();
QJsonArray jsonBoards = save[BOARDS_KEY].toArray();
QJsonArray jsonFilters = save[FILTERS_KEY].toArray();
QVector<Priority> priorities;
QVector<Status> statuses;
for (QJsonValueRef value : jsonPriorities)
{
priorities.append(Priority(value.toObject()));
}
for (QJsonValueRef value : jsonStatus)
{
status.append(Status(value.toObject()));
statuses.append(Status(value.toObject()));
}
for (QJsonValueRef value : jsonBoards)
{
@@ -412,35 +415,16 @@ void MainWindow::init()
{
filters.append(Filter(value.toObject()));
}
TaskStateService::getInstance()->updatePriorities(priorities);
TaskStateService::getInstance()->updateStatuses(statuses);
redrawFilterList();
redrawBoardList();
return;
}
}
this->priorities = defaultPriorities();
this->status = defaultStatus();
save();
}
QVector<Priority> MainWindow::defaultPriorities()
{
QVector<Priority> res;
res.append(Priority(QUuid::createUuid().toString(QUuid::WithoutBraces), "None", QColor(217, 217, 217)));
res.append(Priority(QUuid::createUuid().toString(QUuid::WithoutBraces), "Low", QColor(48, 157, 176)));
res.append(Priority(QUuid::createUuid().toString(QUuid::WithoutBraces), "Medium", QColor(176, 142, 48)));
res.append(Priority(QUuid::createUuid().toString(QUuid::WithoutBraces), "High", QColor(176, 67, 48)));
return res;
}
QVector<Status> MainWindow::defaultStatus()
{
QVector<Status> res;
res.append(Status(QUuid::createUuid().toString(QUuid::WithoutBraces), "To Do", QColor(143, 143, 143)));
res.append(Status(QUuid::createUuid().toString(QUuid::WithoutBraces), "Working on", QColor(95, 48, 176)));
res.append(Status(QUuid::createUuid().toString(QUuid::WithoutBraces), "Completed", QColor(48, 176, 73)));
return res;
}
QVector<Filter> MainWindow::defaultFilters()
{
QVector<Filter> res;
@@ -449,54 +433,42 @@ QVector<Filter> MainWindow::defaultFilters()
const QString MainWindow::getPriorityLabel(QString uuid)
{
QString res = "";
foreach (Priority p, priorities)
std::optional<Priority> p = TaskStateService::getInstance()->getPriorityByUUID(uuid);
if (p.has_value())
{
if (p.getUUID() == uuid)
{
res = p.getName();
}
return p.value().getName();
}
return res;
return "";
}
const QString MainWindow::getStatusLabel(QString uuid)
{
QString res = "";
foreach (Status s, status)
std::optional<Status> s = TaskStateService::getInstance()->getStatusByUUID(uuid);
if (s.has_value())
{
if (s.getUUID() == uuid)
{
res = s.getName();
}
return s.value().getName();
}
return res;
return "";
}
const QColor MainWindow::getPriorityColor(QString uuid, QColor defaultColor)
{
QColor color = defaultColor;
foreach (Priority p, priorities)
std::optional<Priority> p = TaskStateService::getInstance()->getPriorityByUUID(uuid);
if (p.has_value())
{
if (p.getUUID() == uuid)
{
color = p.getColor();
}
return p.value().getColor();
}
return color;
return defaultColor;
}
const QColor MainWindow::getStatusColor(QString uuid, QColor defaultColor)
{
QColor color = defaultColor;
foreach (Status s, status)
std::optional<Status> s = TaskStateService::getInstance()->getStatusByUUID(uuid);
if (s.has_value())
{
if (s.getUUID() == uuid)
{
color = s.getColor();
}
return s.value().getColor();
}
return color;
return defaultColor;
}
const QJsonDocument MainWindow::getJsonSave()
@@ -504,18 +476,24 @@ const QJsonDocument MainWindow::getJsonSave()
QJsonDocument doc;
QJsonObject obj;
QJsonArray jsonPriorities;
foreach (Priority p, this->priorities) {
QJsonArray jsonStatus;
QJsonArray jsonBoards;
QJsonArray jsonFilters;
QVector<Priority> priorities = TaskStateService::getInstance()->getPriorities();
foreach (Priority p, priorities) {
jsonPriorities.append(p.toJson());
}
QJsonArray jsonStatus;
foreach (Status s, this->status) {
QVector<Status> statuses = TaskStateService::getInstance()->getStatuses();
foreach (Status s, statuses) {
jsonStatus.append(s.toJson());
}
QJsonArray jsonBoards;
foreach (Board *b, this->boards) {
jsonBoards.append(b->toJson());
}
QJsonArray jsonFilters;
foreach (Filter f, this->filters)
{
jsonFilters.append(f.toJson());