[Report] Prompt for a note on Resolve and drop the redundant option (#7445)

- Remove the third close option (Resolve with note...) so closing a
  report is one of two clear actions
- Make Resolve always prompt for the optional resolution note, matching
  Dismiss, and rename the button to Resolve...
- Halve the resolveReport signature now that every caller prompts

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
This commit is contained in:
BruebachL 2026-10-11 15:33:48 +02:00 • committed by GitHub
parent 38acddeede
commit 07eb9f0103
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 11 additions and 21 deletions

View file

@ -238,15 +238,13 @@ TabReport::TabReport(TabSupervisor *_tabSupervisor, AbstractClient *_client) : T
assignButton = new QPushButton; assignButton = new QPushButton;
resolveButton = new QPushButton; resolveButton = new QPushButton;
resolveWithNoteButton = new QPushButton;
dismissButton = new QPushButton; dismissButton = new QPushButton;
reopenButton = new QPushButton; reopenButton = new QPushButton;
viewReplayButton = new QPushButton; viewReplayButton = new QPushButton;
joinGameButton = new QPushButton; joinGameButton = new QPushButton;
connect(assignButton, &QPushButton::clicked, this, &TabReport::assignReport); connect(assignButton, &QPushButton::clicked, this, &TabReport::assignReport);
connect(resolveButton, &QPushButton::clicked, this, [this]() { resolveReport(false, false); }); connect(resolveButton, &QPushButton::clicked, this, [this]() { resolveReport(false); });
connect(resolveWithNoteButton, &QPushButton::clicked, this, [this]() { resolveReport(false, true); }); connect(dismissButton, &QPushButton::clicked, this, [this]() { resolveReport(true); });
connect(dismissButton, &QPushButton::clicked, this, [this]() { resolveReport(true, true); });
connect(reopenButton, &QPushButton::clicked, this, &TabReport::reopenReport); connect(reopenButton, &QPushButton::clicked, this, &TabReport::reopenReport);
connect(viewReplayButton, &QPushButton::clicked, this, &TabReport::viewReplay); connect(viewReplayButton, &QPushButton::clicked, this, &TabReport::viewReplay);
connect(joinGameButton, &QPushButton::clicked, this, &TabReport::joinGame); connect(joinGameButton, &QPushButton::clicked, this, &TabReport::joinGame);
@ -256,7 +254,6 @@ TabReport::TabReport(TabSupervisor *_tabSupervisor, AbstractClient *_client) : T
auto *actionBar = new QHBoxLayout; auto *actionBar = new QHBoxLayout;
actionBar->addWidget(assignButton); actionBar->addWidget(assignButton);
actionBar->addWidget(resolveButton); actionBar->addWidget(resolveButton);
actionBar->addWidget(resolveWithNoteButton);
actionBar->addWidget(dismissButton); actionBar->addWidget(dismissButton);
actionBar->addWidget(reopenButton); actionBar->addWidget(reopenButton);
actionBar->addSpacing(20); actionBar->addSpacing(20);
@ -323,8 +320,7 @@ void TabReport::retranslateUi()
statsGroup->setTitle(tr("Report Statistics")); statsGroup->setTitle(tr("Report Statistics"));
assignButton->setText(tr("Assign to Me")); assignButton->setText(tr("Assign to Me"));
resolveButton->setText(tr("Resolve")); resolveButton->setText(tr("Resolve..."));
resolveWithNoteButton->setText(tr("Resolve with note..."));
dismissButton->setText(tr("Dismiss...")); dismissButton->setText(tr("Dismiss..."));
reopenButton->setText(tr("Reopen...")); reopenButton->setText(tr("Reopen..."));
reopenButton->setToolTip(tr("Available for resolved or dismissed reports.")); reopenButton->setToolTip(tr("Available for resolved or dismissed reports."));
@ -626,7 +622,6 @@ void TabReport::updateActionStates()
const QString status = QString::fromStdString(report.status()); const QString status = QString::fromStdString(report.status());
assignButton->setEnabled(status == "open"); assignButton->setEnabled(status == "open");
resolveButton->setEnabled(status == "open" || status == "assigned"); resolveButton->setEnabled(status == "open" || status == "assigned");
resolveWithNoteButton->setEnabled(status == "open" || status == "assigned");
dismissButton->setEnabled(status == "open" || status == "assigned"); dismissButton->setEnabled(status == "open" || status == "assigned");
reopenButton->setEnabled(status == "resolved" || status == "dismissed"); reopenButton->setEnabled(status == "resolved" || status == "dismissed");
@ -640,7 +635,6 @@ void TabReport::setActionsEnabled(bool enabled)
{ {
assignButton->setEnabled(enabled); assignButton->setEnabled(enabled);
resolveButton->setEnabled(enabled); resolveButton->setEnabled(enabled);
resolveWithNoteButton->setEnabled(enabled);
dismissButton->setEnabled(enabled); dismissButton->setEnabled(enabled);
reopenButton->setEnabled(enabled); reopenButton->setEnabled(enabled);
viewReplayButton->setEnabled(false); viewReplayButton->setEnabled(false);
@ -704,22 +698,19 @@ void TabReport::assignResponse(const Response &response)
} }
} }
void TabReport::resolveReport(bool dismissed, bool promptNote) void TabReport::resolveReport(bool dismissed)
{ {
const int reportId = selectedReportId(); const int reportId = selectedReportId();
if (reportId < 0) { if (reportId < 0) {
return; return;
} }
QString note; bool ok;
if (promptNote) { QString note = QInputDialog::getText(this, dismissed ? tr("Dismiss Report") : tr("Resolve Report"),
bool ok; dismissed ? tr("Optional note:") : tr("Resolution note (optional):"),
note = QInputDialog::getText(this, dismissed ? tr("Dismiss Report") : tr("Resolve Report"), QLineEdit::Normal, QString(), &ok);
dismissed ? tr("Optional note:") : tr("Resolution note (optional):"), if (!ok) {
QLineEdit::Normal, QString(), &ok); return;
if (!ok) {
return;
}
} }
setActionsEnabled(false); setActionsEnabled(false);

View file

@ -46,7 +46,7 @@ private slots:
void reportListResponse(const Response &response); void reportListResponse(const Response &response);
void assignReport(); void assignReport();
void assignResponse(const Response &response); void assignResponse(const Response &response);
void resolveReport(bool dismissed, bool promptNote); void resolveReport(bool dismissed);
void resolveResponse(const Response &response); void resolveResponse(const Response &response);
void onSelectionChanged(); void onSelectionChanged();
void showTableContextMenu(const QPoint &pos); void showTableContextMenu(const QPoint &pos);
@ -91,7 +91,6 @@ private:
QPushButton *commentButton; QPushButton *commentButton;
QPushButton *assignButton; QPushButton *assignButton;
QPushButton *resolveButton; QPushButton *resolveButton;
QPushButton *resolveWithNoteButton;
QPushButton *dismissButton; QPushButton *dismissButton;
QPushButton *reopenButton; QPushButton *reopenButton;
QPushButton *viewReplayButton; QPushButton *viewReplayButton;