fix out of bound crash when edit or remove a board, add board config dialog, fix glibc version in about dialog

This commit is contained in:
Aurelie Delhaie
2023-02-20 16:51:21 +01:00
parent 93026b1373
commit 22ebe6eded
11 changed files with 364 additions and 69 deletions

View File

@@ -17,6 +17,7 @@
#include "namedialog.h"
#include "taskdialog.h"
#include "filterdialog.h"
#include "boardconfigdialog.h"
#include "../tools.h"
#include "../services/taskstateservice.h"
@@ -197,7 +198,16 @@ void MainWindow::onBoardSelected(int i)
{
Board *b = boards[selectedBoardIndex];
ui->label->setText(b->getName());
ui->boardDescription->setText(b->getDescription());
if (b->getDescription().length() > 0)
{
ui->boardDescription->setText(b->getDescription());
ui->boardDescription->setEnabled(true);
}
else
{
ui->boardDescription->setText("No description");
ui->boardDescription->setEnabled(false);
}
ui->actionNew_task->setDisabled(false);
}
else
@@ -224,7 +234,16 @@ void MainWindow::onFilterSelected(int i)
{
Filter f = filters[selectedFilterIndex];
ui->label->setText(f.getName());
ui->boardDescription->setText(f.getDescription());
if (f.getDescription().length() > 0)
{
ui->boardDescription->setText(f.getDescription());
ui->boardDescription->setEnabled(true);
}
else
{
ui->boardDescription->setText("No description");
ui->boardDescription->setEnabled(false);
}
}
else
{
@@ -259,7 +278,11 @@ void MainWindow::onRemoveBoardMenu()
{
if (menuSelectedBoardItem != nullptr)
{
int i = ui->filterListWidget->indexFromItem(menuSelectedFilterItem).row();
int i = ui->boardList->indexFromItem(menuSelectedBoardItem).row();
if (i == -1)
{
return;
}
QMessageBox::StandardButton result = QMessageBox::question(this, "Delete a board", "Do you want to delete this board?");
if (result == QMessageBox::Yes)
{
@@ -296,6 +319,10 @@ void MainWindow::onRemoveFilterMenu()
if (menuSelectedFilterItem != nullptr)
{
int i = ui->filterListWidget->indexFromItem(menuSelectedFilterItem).row();
if (i == -1)
{
return;
}
QMessageBox::StandardButton result = QMessageBox::question(this, "Delete a filter", "Do you want to delete this filter?");
if (result == QMessageBox::Yes)
{
@@ -315,20 +342,50 @@ void MainWindow::onEditNameBoardMenu()
{
if (menuSelectedBoardItem != nullptr)
{
int i = ui->filterListWidget->indexFromItem(menuSelectedFilterItem).row();
int i = ui->boardList->indexFromItem(menuSelectedBoardItem).row();
if (i == -1)
{
return;
}
Board *b = boards.at(i);
NameDialog dialog("Edit board name", b->getName(), b->getDescription(), this);
BoardConfigDialog dialog(b, this);
if (dialog.exec() == QDialog::DialogCode::Accepted)
{
QString newName = dialog.getChoosenName();
QString newName = dialog.getName();
QString newDesc = dialog.getDescription();
b->setName(newName);
b->setDescription(newDesc);
if (!dialog.isAutoStatus())
{
std::optional<Status> status = TaskStateService::getInstance()->getStatusByUUID(dialog.getStatus());
if (status.has_value())
{
b->setDirtyStatus(status.value());
}
else
{
b->removeDirtyStatus();
}
}
else
{
b->removeDirtyStatus();
}
QListWidgetItem *item = ui->boardList->item(i);
item->setText(newName);
item->setToolTip(newDesc);
ui->label->setText(newName);
ui->boardDescription->setText(newDesc);
if (newDesc.length() > 0)
{
ui->boardDescription->setText(newDesc);
ui->boardDescription->setEnabled(true);
}
else
{
ui->boardDescription->setText("No description");
ui->boardDescription->setEnabled(false);
}
redrawBoardStatus();
save();
}
}
@@ -358,7 +415,16 @@ void MainWindow::onEditFilterMenu()
item->setText(f.getName());
item->setToolTip(f.getDescription());
ui->label->setText(f.getName());
ui->boardDescription->setText(f.getDescription());
if (f.getDescription().length() > 0)
{
ui->boardDescription->setText(f.getDescription());
ui->boardDescription->setEnabled(true);
}
else
{
ui->boardDescription->setText("No description");
ui->boardDescription->setEnabled(false);
}
redrawTaskTree();
save();
}