diff options
| author | oldmud0 <oldmud0@users.noreply.github.com> | 2021-12-26 13:18:33 -0600 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-12-26 13:18:33 -0600 |
| commit | 593bd54000be14c9a1455914285c1b2549b0fa51 (patch) | |
| tree | be8283c8a1e3563861f7eae6d2c41934dda88312 /src/debug_functions.cpp | |
| parent | a180600bf4950cc547d11285a2ffbe46f7b63e9f (diff) | |
| parent | dcff063f19fbcfa698a8f703fabaa92c2c7fc428 (diff) | |
Merge pull request #624 from AttorneyOnline/feature/nicer-notice-timer
Polish appearance of "OK" button on notice
Diffstat (limited to 'src/debug_functions.cpp')
| -rw-r--r-- | src/debug_functions.cpp | 33 |
1 files changed, 29 insertions, 4 deletions
diff --git a/src/debug_functions.cpp b/src/debug_functions.cpp index 456aee8a..f4f7b3a7 100644 --- a/src/debug_functions.cpp +++ b/src/debug_functions.cpp @@ -1,7 +1,10 @@ #include <QCoreApplication> +#include <QDialogButtonBox> #include <QElapsedTimer> #include <QMessageBox> +#include <QPushButton> #include <QTimer> + #include <functional> #include "debug_functions.h" @@ -22,16 +25,38 @@ void call_error(QString p_message) void call_notice(QString p_message) { - QMessageBox *msgBox = new QMessageBox; + auto *msgBox = new QMessageBox; msgBox->setAttribute(Qt::WA_DeleteOnClose); msgBox->setText(p_message); msgBox->setWindowTitle( QCoreApplication::translate("debug_functions", "Notice")); - msgBox->setStandardButtons(QMessageBox::NoButton); - - QTimer::singleShot(3000, msgBox, std::bind(&QMessageBox::setStandardButtons,msgBox,QMessageBox::Ok)); + msgBox->setStandardButtons(QMessageBox::Ok); + msgBox->setDefaultButton(QMessageBox::Ok); + msgBox->defaultButton()->setEnabled(false); + + QTimer intervalTimer; + intervalTimer.setInterval(1000); + + int counter = 3; + const auto updateCounter = [msgBox, &counter] { + if (counter <= 0) + return; + msgBox->defaultButton()->setText( + QString("%1 (%2)").arg(QDialogButtonBox::tr("OK")).arg(counter)); + counter--; + }; + + QObject::connect(&intervalTimer, &QTimer::timeout, msgBox, updateCounter); + intervalTimer.start(); + updateCounter(); + + QTimer::singleShot(3000, msgBox, [msgBox, &intervalTimer] { + msgBox->defaultButton()->setEnabled(true); + msgBox->defaultButton()->setText(QDialogButtonBox::tr("OK")); + intervalTimer.stop(); + }); msgBox->exec(); |
