Adding filters

This commit is contained in:
Aurélie Delhaie
2023-01-15 12:39:03 +01:00
parent 6206a16c9d
commit 43ecd2601e
7 changed files with 333 additions and 46 deletions

View File

@@ -1,13 +1,66 @@
#include "filterdialog.h"
#include "ui_filterdialog.h"
#include <QMessageBox>
FilterDialog::FilterDialog(QString dialogTitle, QVector<Board*> boards, QVector<Status> status, QVector<Priority> priorities, QWidget *parent) :
QDialog(parent),
ui(new Ui::FilterDialog)
{
ui->setupUi(this);
this->setWindowTitle(dialogTitle);
init(boards, status, priorities);
}
FilterDialog::FilterDialog(QString dialogTitle, Filter f, QVector<Board*> boards, QVector<Status> status, QVector<Priority> priorities, QWidget *parent) :
QDialog(parent),
ui(new Ui::FilterDialog)
{
ui->setupUi(this);
this->setWindowTitle(dialogTitle);
init(boards, status, priorities);
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, QVector<Status> status, QVector<Priority> priorities)
{
for (Board *b : boards)
{
QListWidgetItem *item = new QListWidgetItem();
@@ -37,6 +90,8 @@ FilterDialog::FilterDialog(QString dialogTitle, QVector<Board*> boards, QVector<
item->setData(1, p.getUUID());
ui->priorityListWidget->addItem(item);
}
connect(ui->buttonBox, &QDialogButtonBox::accepted, this, &FilterDialog::validateAndAccept);
}
FilterDialog::~FilterDialog()
@@ -47,6 +102,7 @@ FilterDialog::~FilterDialog()
const Filter FilterDialog::getFilter()
{
QString name = ui->nameEdit->text();
QString description = ui->descriptionEdit->toPlainText();
uint8_t dateComparation = 0;
if (ui->dateComparationCombobox->currentIndex() > -1)
{
@@ -76,5 +132,15 @@ const Filter FilterDialog::getFilter()
priorities.append(item->data(1).toString());
}
}
return Filter(name, dateComparation, boards, status, priorities);
return Filter(name, description, dateComparation, boards, status, priorities);
}
void FilterDialog::validateAndAccept()
{
if (ui->nameEdit->text().count() == 0)
{
QMessageBox::critical(this, "This filter needs a name", "You need to enter a name to save this filter");
return;
}
accept();
}