#include "taskdialog.h" #include "ui_taskdialog.h" #include #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 statuses = TaskStateService::getInstance()->getStatuses(); QVector 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; } } }