Qt: Add ignore button for panic alerts

Allows easily disabling panic alerts during a session if needed.
This commit is contained in:
Léo Lam 2017-10-05 18:20:18 +02:00
parent 8308d6b464
commit 8580b3ba1f
1 changed files with 13 additions and 1 deletions

View File

@ -7,6 +7,7 @@
#include <QApplication> #include <QApplication>
#include <QMessageBox> #include <QMessageBox>
#include <QObject> #include <QObject>
#include <QPushButton>
#include <QWidget> #include <QWidget>
#include "Common/MsgHandler.h" #include "Common/MsgHandler.h"
@ -30,7 +31,11 @@ static bool QtMsgAlertHandler(const char* caption, const char* text, bool yes_no
QMessageBox message_box(QApplication::activeWindow()); QMessageBox message_box(QApplication::activeWindow());
message_box.setWindowTitle(QString::fromUtf8(caption)); message_box.setWindowTitle(QString::fromUtf8(caption));
message_box.setText(QString::fromUtf8(text)); message_box.setText(QString::fromUtf8(text));
message_box.setStandardButtons(yes_no ? QMessageBox::Yes | QMessageBox::No : QMessageBox::Ok); message_box.setStandardButtons(yes_no ? QMessageBox::Yes | QMessageBox::No : QMessageBox::Ok);
if (style == MsgType::Warning)
message_box.addButton(QMessageBox::Ignore)->setText(QObject::tr("Ignore for this session"));
message_box.setIcon([&] { message_box.setIcon([&] {
switch (style) switch (style)
{ {
@ -47,7 +52,14 @@ static bool QtMsgAlertHandler(const char* caption, const char* text, bool yes_no
return QMessageBox::NoIcon; return QMessageBox::NoIcon;
}()); }());
return message_box.exec() == QMessageBox::Yes; const int button = message_box.exec();
if (button == QMessageBox::Yes)
return true;
if (button == QMessageBox::Ignore)
SetEnableAlert(false);
return false;
}); });
} }