From 58b0d29bf4882ac71b5bec2cdf576a32ee7bdca7 Mon Sep 17 00:00:00 2001 From: Cody Northrop Date: Mon, 7 Aug 2017 14:22:55 -0600 Subject: [PATCH] utils: Add new messageBox helper that includes checkBox --- qrenderdoc/Code/QRDUtils.cpp | 23 +++++++++++++++++++++++ qrenderdoc/Code/QRDUtils.h | 15 +++++++++++++++ 2 files changed, 38 insertions(+) diff --git a/qrenderdoc/Code/QRDUtils.cpp b/qrenderdoc/Code/QRDUtils.cpp index 0bd54f535..22205a49b 100644 --- a/qrenderdoc/Code/QRDUtils.cpp +++ b/qrenderdoc/Code/QRDUtils.cpp @@ -442,6 +442,29 @@ QMessageBox::StandardButton RDDialog::messageBox(QMessageBox::Icon icon, QWidget return ret; } +QMessageBox::StandardButton RDDialog::messageBoxChecked(QMessageBox::Icon icon, QWidget *parent, + const QString &title, const QString &text, + QCheckBox *checkBox, bool &checked, + QMessageBox::StandardButtons buttons, + QMessageBox::StandardButton defaultButton) +{ + bool isChecked = checked; + QMessageBox::StandardButton ret = defaultButton; + + // if we're already on the right thread, this boils down to a function call + GUIInvoke::blockcall([&]() { + QMessageBox mb(icon, title, text, buttons, parent); + mb.setDefaultButton(defaultButton); + mb.setCheckBox(checkBox); + show(&mb); + isChecked = mb.checkBox()->isChecked(); + ret = mb.standardButton(mb.clickedButton()); + }); + + checked = isChecked; + return ret; +} + QString RDDialog::getExistingDirectory(QWidget *parent, const QString &caption, const QString &dir, QFileDialog::Options options) { diff --git a/qrenderdoc/Code/QRDUtils.h b/qrenderdoc/Code/QRDUtils.h index 7f23307c2..11ce54817 100644 --- a/qrenderdoc/Code/QRDUtils.h +++ b/qrenderdoc/Code/QRDUtils.h @@ -24,6 +24,7 @@ #pragma once +#include #include #include #include @@ -818,6 +819,10 @@ struct RDDialog QMessageBox::Icon, QWidget *parent, const QString &title, const QString &text, QMessageBox::StandardButtons buttons = QMessageBox::Ok, QMessageBox::StandardButton defaultButton = QMessageBox::NoButton); + static QMessageBox::StandardButton messageBoxChecked( + QMessageBox::Icon, QWidget *parent, const QString &title, const QString &text, + QCheckBox *checkBox, bool &checked, QMessageBox::StandardButtons buttons = QMessageBox::Ok, + QMessageBox::StandardButton defaultButton = QMessageBox::NoButton); static QMessageBox::StandardButton information( QWidget *parent, const QString &title, const QString &text, @@ -836,6 +841,16 @@ struct RDDialog return messageBox(QMessageBox::Question, parent, title, text, buttons, defaultButton); } + static QMessageBox::StandardButton questionChecked( + QWidget *parent, const QString &title, const QString &text, QCheckBox *checkBox, bool &checked, + QMessageBox::StandardButtons buttons = QMessageBox::StandardButtons(QMessageBox::Yes | + QMessageBox::No), + QMessageBox::StandardButton defaultButton = QMessageBox::NoButton) + { + return messageBoxChecked(QMessageBox::Question, parent, title, text, checkBox, checked, buttons, + defaultButton); + } + static QMessageBox::StandardButton warning( QWidget *parent, const QString &title, const QString &text, QMessageBox::StandardButtons buttons = QMessageBox::Ok,