js8call/JS8_Main/JS8MessageBox.cpp
Chris-AC9KH 356bdc0f50 Code cleanup - move loose source and header files in source tree to group folders
Rename all header files with .h extension
Fix function declaration in HamlibTransceiver.h that overrode member function but was not marked override
Remove unused variable in Modulator.cpp
Remove unused files from source tree
Remove duplicate LazyFillComboBox files
Reformat codebase to LLVM C++ standard
2026-01-02 16:46:38 -06:00

101 lines
3.9 KiB
C++

#include "JS8MessageBox.h"
#include <QCoreApplication>
#include <QDialogButtonBox>
#include <QPushButton>
#include "revision_utils.h"
JS8MessageBox::JS8MessageBox(QWidget *parent) : QMessageBox{parent} {
setWindowTitle(program_title());
}
JS8MessageBox::JS8MessageBox(Icon icon, QString const &text,
StandardButtons buttons, QWidget *parent,
Qt::WindowFlags flags)
: QMessageBox{icon, QCoreApplication::applicationName(),
text, buttons,
parent, flags} {}
void JS8MessageBox::about_message(QWidget *parent, QString const &text) {
QMessageBox::about(parent, program_title(), text);
}
void JS8MessageBox::about_Qt_message(QWidget *parent) {
QMessageBox::aboutQt(parent, program_title());
}
namespace {
QMessageBox::StandardButton
show_it(QWidget *parent, JS8MessageBox::Icon icon, QString const &text,
QString const &informative, QString const &detail,
JS8MessageBox::StandardButtons buttons,
JS8MessageBox::StandardButton default_button) {
JS8MessageBox mb{icon, text, JS8MessageBox::NoButton, parent};
QDialogButtonBox *button_box = mb.findChild<QDialogButtonBox *>();
Q_ASSERT(button_box);
uint mask = JS8MessageBox::FirstButton;
while (mask <= JS8MessageBox::LastButton) {
uint sb = buttons & mask;
mask <<= 1;
if (!sb)
continue;
QPushButton *button =
mb.addButton(static_cast<JS8MessageBox::StandardButton>(sb));
// Choose the first accept role as the default
if (mb.defaultButton())
continue;
if ((default_button == JS8MessageBox::NoButton &&
button_box->buttonRole(button) == QDialogButtonBox::AcceptRole) ||
(default_button != JS8MessageBox::NoButton &&
sb == static_cast<uint>(default_button)))
mb.setDefaultButton(button);
}
mb.setInformativeText(informative);
mb.setDetailedText(detail);
if (mb.exec() == -1)
return JS8MessageBox::Cancel;
return mb.standardButton(mb.clickedButton());
}
} // namespace
auto JS8MessageBox::information_message(QWidget *parent, QString const &text,
QString const &informative,
QString const &detail,
StandardButtons buttons,
StandardButton default_button)
-> StandardButton {
return show_it(parent, Information, text, informative, detail, buttons,
default_button);
}
auto JS8MessageBox::query_message(QWidget *parent, QString const &text,
QString const &informative,
QString const &detail,
StandardButtons buttons,
StandardButton default_button)
-> StandardButton {
return show_it(parent, Question, text, informative, detail, buttons,
default_button);
}
auto JS8MessageBox::warning_message(QWidget *parent, QString const &text,
QString const &informative,
QString const &detail,
StandardButtons buttons,
StandardButton default_button)
-> StandardButton {
return show_it(parent, Warning, text, informative, detail, buttons,
default_button);
}
auto JS8MessageBox::critical_message(QWidget *parent, QString const &text,
QString const &informative,
QString const &detail,
StandardButtons buttons,
StandardButton default_button)
-> StandardButton {
return show_it(parent, Critical, text, informative, detail, buttons,
default_button);
}