151 lines
4.5 KiB
C++
151 lines
4.5 KiB
C++
#include "filterdialog.h"
|
|
#include "ui_filterdialog.h"
|
|
|
|
#include <QMessageBox>
|
|
|
|
#include "../services/taskstateservice.h"
|
|
|
|
FilterDialog::FilterDialog(QString dialogTitle, QVector<Board*> boards, QWidget *parent) :
|
|
QDialog(parent),
|
|
ui(new Ui::FilterDialog)
|
|
{
|
|
ui->setupUi(this);
|
|
this->setWindowTitle(dialogTitle);
|
|
init(boards);
|
|
}
|
|
|
|
FilterDialog::FilterDialog(QString dialogTitle, Filter f, QVector<Board*> 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<Board *> 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<Status> 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<Priority> 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<QString> 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<QString> 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<QString> 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();
|
|
}
|