#include "filterdialog.h" #include "ui_filterdialog.h" #include #include "../services/taskstateservice.h" FilterDialog::FilterDialog(QString dialogTitle, QVector boards, QWidget *parent) : QDialog(parent), ui(new Ui::FilterDialog) { ui->setupUi(this); this->setWindowTitle(dialogTitle); init(boards); } FilterDialog::FilterDialog(QString dialogTitle, Filter f, QVector boards, QWidget *parent) : QDialog(parent), ui(new Ui::FilterDialog) { ui->setupUi(this); this->setWindowTitle(dialogTitle); init(boards); ui->nameEdit->setText(f.getName()); ui->descriptionEdit->setPlainText(f.getDescription()); ui->dateComparationCombobox->setCurrentIndex(f.getExpectedForComparator()); foreach (QString uuid, f.getBoards()) { for (int i = 0; i < ui->boardListWidget->count(); ++i) { QListWidgetItem *item = ui->boardListWidget->item(i); if (item->data(1).toString() == uuid) { item->setCheckState(Qt::Checked); } } } foreach (QString uuid, f.getStatus()) { for (int i = 0; i < ui->statusListWidget->count(); ++i) { QListWidgetItem *item = ui->statusListWidget->item(i); if (item->data(1).toString() == uuid) { item->setCheckState(Qt::Checked); } } } foreach (QString uuid, f.getPriorities()) { for (int i = 0; i < ui->priorityListWidget->count(); ++i) { QListWidgetItem *item = ui->priorityListWidget->item(i); if (item->data(1).toString() == uuid) { item->setCheckState(Qt::Checked); } } } } void FilterDialog::init(QVector boards) { for (Board *b : boards) { QListWidgetItem *item = new QListWidgetItem(); item->setFlags(item->flags() | Qt::ItemIsUserCheckable); item->setCheckState(Qt::Unchecked); item->setText(b->getName()); item->setData(1, b->getUuid()); ui->boardListWidget->addItem(item); } QVector statuses = TaskStateService::getInstance()->getStatuses(); for (Status s : statuses) { QListWidgetItem *item = new QListWidgetItem(); item->setFlags(item->flags() | Qt::ItemIsUserCheckable); item->setCheckState(Qt::Unchecked); item->setText(s.getName()); item->setData(1, s.getUUID()); ui->statusListWidget->addItem(item); } QVector priorities = TaskStateService::getInstance()->getPriorities(); for (Priority p : priorities) { QListWidgetItem *item = new QListWidgetItem(); item->setFlags(item->flags() | Qt::ItemIsUserCheckable); item->setCheckState(Qt::Unchecked); item->setText(p.getName()); item->setData(1, p.getUUID()); ui->priorityListWidget->addItem(item); } connect(ui->buttonBox, &QDialogButtonBox::accepted, this, &FilterDialog::validateAndAccept); } FilterDialog::~FilterDialog() { delete ui; } const Filter FilterDialog::getFilter() { QString name = ui->nameEdit->text(); QString description = ui->descriptionEdit->toPlainText(); uint8_t dateComparation = 0; if (ui->dateComparationCombobox->currentIndex() > -1) { dateComparation = ui->dateComparationCombobox->currentIndex(); } QVector boards; for (int i = 0; i < ui->boardListWidget->count(); ++i) { QListWidgetItem *item = ui->boardListWidget->item(i); if (item->checkState() == Qt::Checked) { boards.append(item->data(1).toString()); } } QVector status; for (int i = 0; i < ui->statusListWidget->count(); ++i) { QListWidgetItem *item = ui->statusListWidget->item(i); if (item->checkState() == Qt::Checked) { status.append(item->data(1).toString()); } } QVector priorities; for (int i = 0; i < ui->priorityListWidget->count(); ++i) { QListWidgetItem *item = ui->priorityListWidget->item(i); if (item->checkState() == Qt::Checked) { priorities.append(item->data(1).toString()); } } return Filter(name, description, dateComparation, boards, status, priorities); } void FilterDialog::validateAndAccept() { if (ui->nameEdit->text().length() == 0) { QMessageBox::critical(this, "This filter needs a name", "You need to enter a name to save this filter"); return; } accept(); }