Status and Priority service singleton
This commit is contained in:
@@ -4,8 +4,8 @@ greaterThan(QT_MAJOR_VERSION, 5): QT += widgets
|
|||||||
|
|
||||||
CONFIG += c++17
|
CONFIG += c++17
|
||||||
|
|
||||||
win32:VERSION = 0.2.1.0 # major.minor.patch.build
|
win32:VERSION = 0.3.0.0 # major.minor.patch.build
|
||||||
else:VERSION = 0.2.1 # major.minor.patch
|
else:VERSION = 0.3.0 # major.minor.patch
|
||||||
|
|
||||||
DEFINES += APP_VERSION=\"\\\"$${VERSION}\\\"\"
|
DEFINES += APP_VERSION=\"\\\"$${VERSION}\\\"\"
|
||||||
DEFINES += APP_NAME=\"\\\"TaskBoard\\\"\"
|
DEFINES += APP_NAME=\"\\\"TaskBoard\\\"\"
|
||||||
@@ -80,6 +80,7 @@ SOURCES += \
|
|||||||
src/models/status.cpp \
|
src/models/status.cpp \
|
||||||
src/models/task.cpp \
|
src/models/task.cpp \
|
||||||
src/frames/taskdialog.cpp \
|
src/frames/taskdialog.cpp \
|
||||||
|
src/services/taskstateservice.cpp \
|
||||||
src/tools.cpp
|
src/tools.cpp
|
||||||
|
|
||||||
HEADERS += \
|
HEADERS += \
|
||||||
@@ -94,6 +95,7 @@ HEADERS += \
|
|||||||
src/models/status.h \
|
src/models/status.h \
|
||||||
src/models/task.h \
|
src/models/task.h \
|
||||||
src/frames/taskdialog.h \
|
src/frames/taskdialog.h \
|
||||||
|
src/services/taskstateservice.h \
|
||||||
src/tools.h
|
src/tools.h
|
||||||
|
|
||||||
FORMS += \
|
FORMS += \
|
||||||
|
|||||||
@@ -3,22 +3,24 @@
|
|||||||
|
|
||||||
#include <QMessageBox>
|
#include <QMessageBox>
|
||||||
|
|
||||||
FilterDialog::FilterDialog(QString dialogTitle, QVector<Board*> boards, QVector<Status> status, QVector<Priority> priorities, QWidget *parent) :
|
#include "../services/taskstateservice.h"
|
||||||
|
|
||||||
|
FilterDialog::FilterDialog(QString dialogTitle, QVector<Board*> boards, QWidget *parent) :
|
||||||
QDialog(parent),
|
QDialog(parent),
|
||||||
ui(new Ui::FilterDialog)
|
ui(new Ui::FilterDialog)
|
||||||
{
|
{
|
||||||
ui->setupUi(this);
|
ui->setupUi(this);
|
||||||
this->setWindowTitle(dialogTitle);
|
this->setWindowTitle(dialogTitle);
|
||||||
init(boards, status, priorities);
|
init(boards);
|
||||||
}
|
}
|
||||||
|
|
||||||
FilterDialog::FilterDialog(QString dialogTitle, Filter f, QVector<Board*> boards, QVector<Status> status, QVector<Priority> priorities, QWidget *parent) :
|
FilterDialog::FilterDialog(QString dialogTitle, Filter f, QVector<Board*> boards, QWidget *parent) :
|
||||||
QDialog(parent),
|
QDialog(parent),
|
||||||
ui(new Ui::FilterDialog)
|
ui(new Ui::FilterDialog)
|
||||||
{
|
{
|
||||||
ui->setupUi(this);
|
ui->setupUi(this);
|
||||||
this->setWindowTitle(dialogTitle);
|
this->setWindowTitle(dialogTitle);
|
||||||
init(boards, status, priorities);
|
init(boards);
|
||||||
|
|
||||||
ui->nameEdit->setText(f.getName());
|
ui->nameEdit->setText(f.getName());
|
||||||
ui->descriptionEdit->setPlainText(f.getDescription());
|
ui->descriptionEdit->setPlainText(f.getDescription());
|
||||||
@@ -59,7 +61,7 @@ FilterDialog::FilterDialog(QString dialogTitle, Filter f, QVector<Board*> boards
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void FilterDialog::init(QVector<Board *> boards, QVector<Status> status, QVector<Priority> priorities)
|
void FilterDialog::init(QVector<Board *> boards)
|
||||||
{
|
{
|
||||||
for (Board *b : boards)
|
for (Board *b : boards)
|
||||||
{
|
{
|
||||||
@@ -71,7 +73,8 @@ void FilterDialog::init(QVector<Board *> boards, QVector<Status> status, QVector
|
|||||||
ui->boardListWidget->addItem(item);
|
ui->boardListWidget->addItem(item);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (Status s : status)
|
QVector<Status> statuses = TaskStateService::getInstance()->getStatuses();
|
||||||
|
for (Status s : statuses)
|
||||||
{
|
{
|
||||||
QListWidgetItem *item = new QListWidgetItem();
|
QListWidgetItem *item = new QListWidgetItem();
|
||||||
item->setFlags(item->flags() | Qt::ItemIsUserCheckable);
|
item->setFlags(item->flags() | Qt::ItemIsUserCheckable);
|
||||||
@@ -81,6 +84,7 @@ void FilterDialog::init(QVector<Board *> boards, QVector<Status> status, QVector
|
|||||||
ui->statusListWidget->addItem(item);
|
ui->statusListWidget->addItem(item);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QVector<Priority> priorities = TaskStateService::getInstance()->getPriorities();
|
||||||
for (Priority p : priorities)
|
for (Priority p : priorities)
|
||||||
{
|
{
|
||||||
QListWidgetItem *item = new QListWidgetItem();
|
QListWidgetItem *item = new QListWidgetItem();
|
||||||
|
|||||||
@@ -17,8 +17,8 @@ class FilterDialog : public QDialog
|
|||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
public:
|
public:
|
||||||
explicit FilterDialog(QString dialogTitle, QVector<Board*> boards, QVector<Status> status, QVector<Priority> priorities, QWidget *parent = nullptr);
|
explicit FilterDialog(QString dialogTitle, QVector<Board*> boards, QWidget *parent = nullptr);
|
||||||
FilterDialog(QString dialogTitle, Filter f, QVector<Board*> boards, QVector<Status> status, QVector<Priority> priorities, QWidget *parent = nullptr);
|
FilterDialog(QString dialogTitle, Filter f, QVector<Board*> boards, QWidget *parent = nullptr);
|
||||||
~FilterDialog();
|
~FilterDialog();
|
||||||
const Filter getFilter();
|
const Filter getFilter();
|
||||||
|
|
||||||
@@ -28,7 +28,7 @@ private slots:
|
|||||||
private:
|
private:
|
||||||
Ui::FilterDialog *ui;
|
Ui::FilterDialog *ui;
|
||||||
|
|
||||||
void init(QVector<Board*> boards, QVector<Status> status, QVector<Priority> priorities);
|
void init(QVector<Board*> boards);
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // FILTERDIALOG_H
|
#endif // FILTERDIALOG_H
|
||||||
|
|||||||
@@ -18,6 +18,7 @@
|
|||||||
#include "taskdialog.h"
|
#include "taskdialog.h"
|
||||||
#include "filterdialog.h"
|
#include "filterdialog.h"
|
||||||
#include "../tools.h"
|
#include "../tools.h"
|
||||||
|
#include "../services/taskstateservice.h"
|
||||||
|
|
||||||
MainWindow::MainWindow(QWidget *parent)
|
MainWindow::MainWindow(QWidget *parent)
|
||||||
: QMainWindow(parent)
|
: QMainWindow(parent)
|
||||||
@@ -61,11 +62,11 @@ MainWindow::~MainWindow()
|
|||||||
|
|
||||||
void MainWindow::openPreferences()
|
void MainWindow::openPreferences()
|
||||||
{
|
{
|
||||||
PrefDialog dialog(status, priorities, this);
|
PrefDialog dialog(this);
|
||||||
if (dialog.exec() == QDialog::DialogCode::Accepted)
|
if (dialog.exec() == QDialog::DialogCode::Accepted)
|
||||||
{
|
{
|
||||||
this->priorities = dialog.getPriorities();
|
TaskStateService::getInstance()->updatePriorities(dialog.getPriorities());
|
||||||
this->status = dialog.getStatus();
|
TaskStateService::getInstance()->updateStatuses(dialog.getStatus());
|
||||||
save();
|
save();
|
||||||
redrawTaskTree();
|
redrawTaskTree();
|
||||||
}
|
}
|
||||||
@@ -153,7 +154,7 @@ void MainWindow::onNewTaskClick()
|
|||||||
{
|
{
|
||||||
if (selectedBoardIndex > -1)
|
if (selectedBoardIndex > -1)
|
||||||
{
|
{
|
||||||
TaskDialog dialog(status, priorities, this);
|
TaskDialog dialog(this);
|
||||||
if (dialog.exec() == QDialog::DialogCode::Accepted)
|
if (dialog.exec() == QDialog::DialogCode::Accepted)
|
||||||
{
|
{
|
||||||
Task t = dialog.getTask();
|
Task t = dialog.getTask();
|
||||||
@@ -169,7 +170,7 @@ void MainWindow::onNewTaskClick()
|
|||||||
|
|
||||||
void MainWindow::onNewFilterClick()
|
void MainWindow::onNewFilterClick()
|
||||||
{
|
{
|
||||||
FilterDialog dialog("New filter", boards, status, priorities, this);
|
FilterDialog dialog("New filter", boards, this);
|
||||||
if (dialog.exec() == QDialog::DialogCode::Accepted)
|
if (dialog.exec() == QDialog::DialogCode::Accepted)
|
||||||
{
|
{
|
||||||
Filter f = dialog.getFilter();
|
Filter f = dialog.getFilter();
|
||||||
@@ -237,7 +238,7 @@ void MainWindow::onEditTask(QTreeWidgetItem *item)
|
|||||||
Task *t = getSelectedTask();
|
Task *t = getSelectedTask();
|
||||||
if (t != nullptr)
|
if (t != nullptr)
|
||||||
{
|
{
|
||||||
TaskDialog dialog(t, status, priorities, this);
|
TaskDialog dialog(t, this);
|
||||||
if (dialog.exec() == QDialog::DialogCode::Accepted)
|
if (dialog.exec() == QDialog::DialogCode::Accepted)
|
||||||
{
|
{
|
||||||
Task editedTask = dialog.getTask();
|
Task editedTask = dialog.getTask();
|
||||||
@@ -346,7 +347,7 @@ void MainWindow::onEditFilterMenu()
|
|||||||
{
|
{
|
||||||
int i = ui->filterListWidget->indexFromItem(menuSelectedFilterItem).row();
|
int i = ui->filterListWidget->indexFromItem(menuSelectedFilterItem).row();
|
||||||
Filter f = filters[i];
|
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)
|
if (dialog.exec() == QDialog::DialogCode::Accepted)
|
||||||
{
|
{
|
||||||
Filter f = dialog.getFilter();
|
Filter f = dialog.getFilter();
|
||||||
@@ -396,13 +397,15 @@ void MainWindow::init()
|
|||||||
QJsonArray jsonStatus = save[STATUS_KEY].toArray();
|
QJsonArray jsonStatus = save[STATUS_KEY].toArray();
|
||||||
QJsonArray jsonBoards = save[BOARDS_KEY].toArray();
|
QJsonArray jsonBoards = save[BOARDS_KEY].toArray();
|
||||||
QJsonArray jsonFilters = save[FILTERS_KEY].toArray();
|
QJsonArray jsonFilters = save[FILTERS_KEY].toArray();
|
||||||
|
QVector<Priority> priorities;
|
||||||
|
QVector<Status> statuses;
|
||||||
for (QJsonValueRef value : jsonPriorities)
|
for (QJsonValueRef value : jsonPriorities)
|
||||||
{
|
{
|
||||||
priorities.append(Priority(value.toObject()));
|
priorities.append(Priority(value.toObject()));
|
||||||
}
|
}
|
||||||
for (QJsonValueRef value : jsonStatus)
|
for (QJsonValueRef value : jsonStatus)
|
||||||
{
|
{
|
||||||
status.append(Status(value.toObject()));
|
statuses.append(Status(value.toObject()));
|
||||||
}
|
}
|
||||||
for (QJsonValueRef value : jsonBoards)
|
for (QJsonValueRef value : jsonBoards)
|
||||||
{
|
{
|
||||||
@@ -412,35 +415,16 @@ void MainWindow::init()
|
|||||||
{
|
{
|
||||||
filters.append(Filter(value.toObject()));
|
filters.append(Filter(value.toObject()));
|
||||||
}
|
}
|
||||||
|
TaskStateService::getInstance()->updatePriorities(priorities);
|
||||||
|
TaskStateService::getInstance()->updateStatuses(statuses);
|
||||||
redrawFilterList();
|
redrawFilterList();
|
||||||
redrawBoardList();
|
redrawBoardList();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
this->priorities = defaultPriorities();
|
|
||||||
this->status = defaultStatus();
|
|
||||||
save();
|
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> MainWindow::defaultFilters()
|
||||||
{
|
{
|
||||||
QVector<Filter> res;
|
QVector<Filter> res;
|
||||||
@@ -449,54 +433,42 @@ QVector<Filter> MainWindow::defaultFilters()
|
|||||||
|
|
||||||
const QString MainWindow::getPriorityLabel(QString uuid)
|
const QString MainWindow::getPriorityLabel(QString uuid)
|
||||||
{
|
{
|
||||||
QString res = "";
|
std::optional<Priority> p = TaskStateService::getInstance()->getPriorityByUUID(uuid);
|
||||||
foreach (Priority p, priorities)
|
if (p.has_value())
|
||||||
{
|
{
|
||||||
if (p.getUUID() == uuid)
|
return p.value().getName();
|
||||||
{
|
|
||||||
res = p.getName();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return res;
|
return "";
|
||||||
}
|
}
|
||||||
|
|
||||||
const QString MainWindow::getStatusLabel(QString uuid)
|
const QString MainWindow::getStatusLabel(QString uuid)
|
||||||
{
|
{
|
||||||
QString res = "";
|
std::optional<Status> s = TaskStateService::getInstance()->getStatusByUUID(uuid);
|
||||||
foreach (Status s, status)
|
if (s.has_value())
|
||||||
{
|
{
|
||||||
if (s.getUUID() == uuid)
|
return s.value().getName();
|
||||||
{
|
|
||||||
res = s.getName();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return res;
|
return "";
|
||||||
}
|
}
|
||||||
|
|
||||||
const QColor MainWindow::getPriorityColor(QString uuid, QColor defaultColor)
|
const QColor MainWindow::getPriorityColor(QString uuid, QColor defaultColor)
|
||||||
{
|
{
|
||||||
QColor color = defaultColor;
|
std::optional<Priority> p = TaskStateService::getInstance()->getPriorityByUUID(uuid);
|
||||||
foreach (Priority p, priorities)
|
if (p.has_value())
|
||||||
{
|
{
|
||||||
if (p.getUUID() == uuid)
|
return p.value().getColor();
|
||||||
{
|
|
||||||
color = p.getColor();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return color;
|
return defaultColor;
|
||||||
}
|
}
|
||||||
|
|
||||||
const QColor MainWindow::getStatusColor(QString uuid, QColor defaultColor)
|
const QColor MainWindow::getStatusColor(QString uuid, QColor defaultColor)
|
||||||
{
|
{
|
||||||
QColor color = defaultColor;
|
std::optional<Status> s = TaskStateService::getInstance()->getStatusByUUID(uuid);
|
||||||
foreach (Status s, status)
|
if (s.has_value())
|
||||||
{
|
{
|
||||||
if (s.getUUID() == uuid)
|
return s.value().getColor();
|
||||||
{
|
|
||||||
color = s.getColor();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return color;
|
return defaultColor;
|
||||||
}
|
}
|
||||||
|
|
||||||
const QJsonDocument MainWindow::getJsonSave()
|
const QJsonDocument MainWindow::getJsonSave()
|
||||||
@@ -504,18 +476,24 @@ const QJsonDocument MainWindow::getJsonSave()
|
|||||||
QJsonDocument doc;
|
QJsonDocument doc;
|
||||||
QJsonObject obj;
|
QJsonObject obj;
|
||||||
QJsonArray jsonPriorities;
|
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());
|
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());
|
jsonStatus.append(s.toJson());
|
||||||
}
|
}
|
||||||
QJsonArray jsonBoards;
|
|
||||||
foreach (Board *b, this->boards) {
|
foreach (Board *b, this->boards) {
|
||||||
jsonBoards.append(b->toJson());
|
jsonBoards.append(b->toJson());
|
||||||
}
|
}
|
||||||
QJsonArray jsonFilters;
|
|
||||||
foreach (Filter f, this->filters)
|
foreach (Filter f, this->filters)
|
||||||
{
|
{
|
||||||
jsonFilters.append(f.toJson());
|
jsonFilters.append(f.toJson());
|
||||||
|
|||||||
@@ -57,8 +57,6 @@ private:
|
|||||||
|
|
||||||
QVector<Task*> filterResult;
|
QVector<Task*> filterResult;
|
||||||
|
|
||||||
QVector<Priority> priorities;
|
|
||||||
QVector<Status> status;
|
|
||||||
QVector<Board*> boards;
|
QVector<Board*> boards;
|
||||||
QVector<Filter> filters;
|
QVector<Filter> filters;
|
||||||
|
|
||||||
|
|||||||
@@ -5,13 +5,15 @@
|
|||||||
#include <QUuid>
|
#include <QUuid>
|
||||||
|
|
||||||
#include "../tools.h"
|
#include "../tools.h"
|
||||||
|
#include "../services/taskstateservice.h"
|
||||||
|
|
||||||
PrefDialog::PrefDialog(QVector<Status> status, QVector<Priority> priorities, QWidget *parent) :
|
PrefDialog::PrefDialog(QWidget *parent) :
|
||||||
QDialog(parent),
|
QDialog(parent),
|
||||||
ui(new Ui::PrefDialog)
|
ui(new Ui::PrefDialog)
|
||||||
{
|
{
|
||||||
ui->setupUi(this);
|
ui->setupUi(this);
|
||||||
|
|
||||||
|
QVector<Status> status = TaskStateService::getInstance()->getStatuses();
|
||||||
foreach (Status s, status)
|
foreach (Status s, status)
|
||||||
{
|
{
|
||||||
QListWidgetItem *item = new QListWidgetItem(s.getName());
|
QListWidgetItem *item = new QListWidgetItem(s.getName());
|
||||||
@@ -20,6 +22,7 @@ PrefDialog::PrefDialog(QVector<Status> status, QVector<Priority> priorities, QWi
|
|||||||
ui->statusListWidget->addItem(item);
|
ui->statusListWidget->addItem(item);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QVector<Priority> priorities = TaskStateService::getInstance()->getPriorities();
|
||||||
foreach (Priority p, priorities)
|
foreach (Priority p, priorities)
|
||||||
{
|
{
|
||||||
QListWidgetItem *item = new QListWidgetItem(p.getName());
|
QListWidgetItem *item = new QListWidgetItem(p.getName());
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ class PrefDialog : public QDialog
|
|||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
public:
|
public:
|
||||||
explicit PrefDialog(QVector<Status> status, QVector<Priority> priorities, QWidget *parent = nullptr);
|
explicit PrefDialog(QWidget *parent = nullptr);
|
||||||
~PrefDialog();
|
~PrefDialog();
|
||||||
|
|
||||||
QVector<Priority> getPriorities();
|
QVector<Priority> getPriorities();
|
||||||
|
|||||||
@@ -3,14 +3,16 @@
|
|||||||
|
|
||||||
#include <QDate>
|
#include <QDate>
|
||||||
|
|
||||||
TaskDialog::TaskDialog(QVector<Status> status, QVector<Priority> priorities, QWidget *parent) :
|
#include "../services/taskstateservice.h"
|
||||||
|
|
||||||
|
TaskDialog::TaskDialog(QWidget *parent) :
|
||||||
QDialog(parent),
|
QDialog(parent),
|
||||||
ui(new Ui::TaskDialog)
|
ui(new Ui::TaskDialog)
|
||||||
{
|
{
|
||||||
ui->setupUi(this);
|
ui->setupUi(this);
|
||||||
this->setWindowTitle("New task");
|
this->setWindowTitle("New task");
|
||||||
this->status = status;
|
this->status = TaskStateService::getInstance()->getStatuses();
|
||||||
this->priorities = priorities;
|
this->priorities = TaskStateService::getInstance()->getPriorities();
|
||||||
|
|
||||||
foreach (Status s, this->status)
|
foreach (Status s, this->status)
|
||||||
{
|
{
|
||||||
@@ -27,14 +29,14 @@ TaskDialog::TaskDialog(QVector<Status> status, QVector<Priority> priorities, QWi
|
|||||||
ui->expectedForEdit->setDate(expectedFor);
|
ui->expectedForEdit->setDate(expectedFor);
|
||||||
}
|
}
|
||||||
|
|
||||||
TaskDialog::TaskDialog(Task *t, QVector<Status> status, QVector<Priority> priorities, QWidget *parent) :
|
TaskDialog::TaskDialog(Task *t, QWidget *parent) :
|
||||||
QDialog(parent),
|
QDialog(parent),
|
||||||
ui(new Ui::TaskDialog)
|
ui(new Ui::TaskDialog)
|
||||||
{
|
{
|
||||||
ui->setupUi(this);
|
ui->setupUi(this);
|
||||||
this->setWindowTitle("Edit task");
|
this->setWindowTitle("Edit task");
|
||||||
this->status = status;
|
this->status = TaskStateService::getInstance()->getStatuses();
|
||||||
this->priorities = priorities;
|
this->priorities = TaskStateService::getInstance()->getPriorities();
|
||||||
|
|
||||||
foreach (Status s, this->status)
|
foreach (Status s, this->status)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -17,8 +17,8 @@ class TaskDialog : public QDialog
|
|||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
public:
|
public:
|
||||||
explicit TaskDialog(QVector<Status>, QVector<Priority>, QWidget *parent = nullptr);
|
explicit TaskDialog(QWidget *parent = nullptr);
|
||||||
TaskDialog(Task*, QVector<Status>, QVector<Priority>, QWidget *parent = nullptr);
|
TaskDialog(Task *t, QWidget *parent = nullptr);
|
||||||
~TaskDialog();
|
~TaskDialog();
|
||||||
|
|
||||||
Task getTask();
|
Task getTask();
|
||||||
|
|||||||
@@ -4,6 +4,8 @@
|
|||||||
#define TASKS_KEY "tasks"
|
#define TASKS_KEY "tasks"
|
||||||
#define UUID_KEY "uuid"
|
#define UUID_KEY "uuid"
|
||||||
#define DESCRIPTION_KEY "description"
|
#define DESCRIPTION_KEY "description"
|
||||||
|
#define AUTOSTATUS_KEY "auto_status"
|
||||||
|
#define STATUS_KEY "status"
|
||||||
|
|
||||||
#include <QJsonArray>
|
#include <QJsonArray>
|
||||||
#include <QJsonValue>
|
#include <QJsonValue>
|
||||||
@@ -23,6 +25,8 @@ Board::Board(QJsonObject obj)
|
|||||||
this->uuid = obj[UUID_KEY].toString(uuid.toString(QUuid::WithoutBraces));
|
this->uuid = obj[UUID_KEY].toString(uuid.toString(QUuid::WithoutBraces));
|
||||||
this->name = obj[NAME_KEY].toString("!Missing name!");
|
this->name = obj[NAME_KEY].toString("!Missing name!");
|
||||||
this->description = obj[DESCRIPTION_KEY].toString("");
|
this->description = obj[DESCRIPTION_KEY].toString("");
|
||||||
|
this->autoStatus = obj[AUTOSTATUS_KEY].toBool(true);
|
||||||
|
this->statusUUID = obj[STATUS_KEY].toString();
|
||||||
QJsonArray jsonTasks = obj[TASKS_KEY].toArray();
|
QJsonArray jsonTasks = obj[TASKS_KEY].toArray();
|
||||||
foreach (QJsonValue value, jsonTasks) {
|
foreach (QJsonValue value, jsonTasks) {
|
||||||
Task *t = new Task(value.toObject());
|
Task *t = new Task(value.toObject());
|
||||||
@@ -54,6 +58,16 @@ const QString Board::getDescription()
|
|||||||
return description;
|
return description;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const QString Board::getStatus()
|
||||||
|
{
|
||||||
|
return statusUUID;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool Board::isAutoStatus()
|
||||||
|
{
|
||||||
|
return autoStatus;
|
||||||
|
}
|
||||||
|
|
||||||
void Board::setName(const QString name)
|
void Board::setName(const QString name)
|
||||||
{
|
{
|
||||||
this->name = name;
|
this->name = name;
|
||||||
@@ -100,6 +114,8 @@ const QJsonObject Board::toJson()
|
|||||||
QJsonObject obj;
|
QJsonObject obj;
|
||||||
obj[NAME_KEY] = this->name;
|
obj[NAME_KEY] = this->name;
|
||||||
obj[UUID_KEY] = this->uuid;
|
obj[UUID_KEY] = this->uuid;
|
||||||
|
obj[STATUS_KEY] = this->statusUUID;
|
||||||
|
obj[AUTOSTATUS_KEY] = this->autoStatus;
|
||||||
obj[TASKS_KEY] = array;
|
obj[TASKS_KEY] = array;
|
||||||
obj[DESCRIPTION_KEY] = description;
|
obj[DESCRIPTION_KEY] = description;
|
||||||
return obj;
|
return obj;
|
||||||
|
|||||||
@@ -17,6 +17,8 @@ public:
|
|||||||
const QString getUuid();
|
const QString getUuid();
|
||||||
const QString getName();
|
const QString getName();
|
||||||
const QString getDescription();
|
const QString getDescription();
|
||||||
|
const QString getStatus();
|
||||||
|
bool isAutoStatus();
|
||||||
void setName(const QString name);
|
void setName(const QString name);
|
||||||
void setDescription(const QString description);
|
void setDescription(const QString description);
|
||||||
void add(Task);
|
void add(Task);
|
||||||
@@ -32,6 +34,9 @@ private:
|
|||||||
QString name;
|
QString name;
|
||||||
QString description;
|
QString description;
|
||||||
|
|
||||||
|
QString statusUUID;
|
||||||
|
bool autoStatus;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // BOARD_H
|
#endif // BOARD_H
|
||||||
|
|||||||
66
src/services/taskstateservice.cpp
Normal file
66
src/services/taskstateservice.cpp
Normal file
@@ -0,0 +1,66 @@
|
|||||||
|
#include "taskstateservice.h"
|
||||||
|
|
||||||
|
TaskStateService *TaskStateService::instance = nullptr;
|
||||||
|
|
||||||
|
TaskStateService *TaskStateService::getInstance()
|
||||||
|
{
|
||||||
|
if (instance == nullptr)
|
||||||
|
{
|
||||||
|
instance = new TaskStateService();
|
||||||
|
}
|
||||||
|
return instance;
|
||||||
|
}
|
||||||
|
|
||||||
|
void TaskStateService::updateStatuses(QVector<Status> statuses)
|
||||||
|
{
|
||||||
|
this->statuses = statuses;
|
||||||
|
}
|
||||||
|
|
||||||
|
void TaskStateService::updatePriorities(QVector<Priority> priorities)
|
||||||
|
{
|
||||||
|
this->priorities = priorities;
|
||||||
|
}
|
||||||
|
|
||||||
|
QVector<Status> TaskStateService::getStatuses()
|
||||||
|
{
|
||||||
|
return statuses;
|
||||||
|
}
|
||||||
|
|
||||||
|
QVector<Priority> TaskStateService::getPriorities()
|
||||||
|
{
|
||||||
|
return priorities;
|
||||||
|
}
|
||||||
|
|
||||||
|
std::optional<Status> TaskStateService::getStatusByUUID(QString uuid)
|
||||||
|
{
|
||||||
|
foreach (Status s, statuses) {
|
||||||
|
if (s.getUUID() == uuid)
|
||||||
|
{
|
||||||
|
return std::optional{s};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
std::optional<Priority> TaskStateService::getPriorityByUUID(QString uuid)
|
||||||
|
{
|
||||||
|
foreach (Priority p, priorities) {
|
||||||
|
if (p.getUUID() == uuid)
|
||||||
|
{
|
||||||
|
return std::optional{p};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
TaskStateService::TaskStateService()
|
||||||
|
{
|
||||||
|
priorities.append(Priority(QUuid::createUuid().toString(QUuid::WithoutBraces), "None", QColor(217, 217, 217)));
|
||||||
|
priorities.append(Priority(QUuid::createUuid().toString(QUuid::WithoutBraces), "Low", QColor(48, 157, 176)));
|
||||||
|
priorities.append(Priority(QUuid::createUuid().toString(QUuid::WithoutBraces), "Medium", QColor(176, 142, 48)));
|
||||||
|
priorities.append(Priority(QUuid::createUuid().toString(QUuid::WithoutBraces), "High", QColor(176, 67, 48)));
|
||||||
|
|
||||||
|
statuses.append(Status(QUuid::createUuid().toString(QUuid::WithoutBraces), "To Do", QColor(143, 143, 143)));
|
||||||
|
statuses.append(Status(QUuid::createUuid().toString(QUuid::WithoutBraces), "Working on", QColor(95, 48, 176)));
|
||||||
|
statuses.append(Status(QUuid::createUuid().toString(QUuid::WithoutBraces), "Completed", QColor(48, 176, 73)));
|
||||||
|
}
|
||||||
32
src/services/taskstateservice.h
Normal file
32
src/services/taskstateservice.h
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
#ifndef TASKSTATESERVICE_H
|
||||||
|
#define TASKSTATESERVICE_H
|
||||||
|
|
||||||
|
#include <QVector>
|
||||||
|
|
||||||
|
#include "../models/priority.h"
|
||||||
|
#include "../models/status.h"
|
||||||
|
|
||||||
|
class TaskStateService
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
static TaskStateService *getInstance();
|
||||||
|
|
||||||
|
void updateStatuses(QVector<Status>);
|
||||||
|
void updatePriorities(QVector<Priority>);
|
||||||
|
|
||||||
|
QVector<Status> getStatuses();
|
||||||
|
QVector<Priority> getPriorities();
|
||||||
|
|
||||||
|
std::optional<Status> getStatusByUUID(QString);
|
||||||
|
std::optional<Priority> getPriorityByUUID(QString);
|
||||||
|
|
||||||
|
|
||||||
|
private:
|
||||||
|
TaskStateService();
|
||||||
|
static TaskStateService *instance;
|
||||||
|
|
||||||
|
QVector<Priority> priorities;
|
||||||
|
QVector<Status> statuses;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // TASKSTATESERVICE_H
|
||||||
Reference in New Issue
Block a user