Files
TaskBoard/src/frames/taskdialog.cpp
2024-10-31 16:01:27 +01:00

97 lines
2.4 KiB
C++

#include "taskdialog.h"
#include "ui_taskdialog.h"
#include <QDate>
#include "../services/taskstateservice.h"
TaskDialog::TaskDialog(QWidget *parent) :
QDialog(parent),
ui(new Ui::TaskDialog)
{
ui->setupUi(this);
init();
this->setWindowTitle("New task");
QDate expectedFor = QDate::currentDate();
expectedFor = expectedFor.addDays(10);
ui->expectedForEdit->setDate(expectedFor);
ui->statusCombo->setCurrentText(TaskStateService::getInstance()->getDefaultStatus().getName());
}
TaskDialog::TaskDialog(Task *t, QWidget *parent) :
QDialog(parent),
ui(new Ui::TaskDialog)
{
ui->setupUi(this);
init();
this->setWindowTitle("Edit task");
// set fields
ui->nameEdit->setText(t->getTitle());
ui->descriptionEdit->setMarkdown(t->getDescription());
ui->expectedForEdit->setDate(t->getExpectedFor());
if (t->getPriorityUUID().length() > 0)
{
initSelectionCombobox(t->getPriorityUUID(), ui->priorityCombo);
}
if (t->getStatusUUID().length() > 0)
{
initSelectionCombobox(t->getStatusUUID(), ui->statusCombo);
}
}
TaskDialog::~TaskDialog()
{
delete ui;
}
Task TaskDialog::getTask()
{
QString title = ui->nameEdit->text();
QString description = ui->descriptionEdit->toMarkdown(QTextDocument::MarkdownFeature::MarkdownDialectCommonMark);
QDate expectedFor = ui->expectedForEdit->date();
QString priorityUUID = "";
if (!ui->priorityCombo->currentData().isNull())
{
priorityUUID = ui->priorityCombo->currentData().toString();
}
QString statusUUID = "";
if (!ui->statusCombo->currentData().isNull())
{
statusUUID = ui->statusCombo->currentData().toString();
}
return Task(title, description, expectedFor, priorityUUID, statusUUID);
}
void TaskDialog::init()
{
QVector<Status> statuses = TaskStateService::getInstance()->getStatuses();
QVector<Priority> priorities = TaskStateService::getInstance()->getPriorities();
foreach (Status s, statuses)
{
ui->statusCombo->addItem(s.getName(), s.getUUID());
}
foreach (Priority p, priorities)
{
ui->priorityCombo->addItem(p.getName(), p.getUUID());
}
}
void TaskDialog::initSelectionCombobox(QString uuid, QComboBox *cbx)
{
for (uint16_t i = 0; i < cbx->count(); i++)
{
if (cbx->itemData(i).toString() == uuid)
{
cbx->setCurrentIndex(i);
break;
}
}
}