aboutsummaryrefslogtreecommitdiffstats
path: root/src/libs/utils/checkablemessagebox.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/libs/utils/checkablemessagebox.h')
-rw-r--r--src/libs/utils/checkablemessagebox.h127
1 files changed, 38 insertions, 89 deletions
diff --git a/src/libs/utils/checkablemessagebox.h b/src/libs/utils/checkablemessagebox.h
index eb80e15eac..297ff22b62 100644
--- a/src/libs/utils/checkablemessagebox.h
+++ b/src/libs/utils/checkablemessagebox.h
@@ -5,7 +5,7 @@
#include "utils_global.h"
-#include <QDialogButtonBox>
+#include <QMap>
#include <QMessageBox>
QT_BEGIN_NAMESPACE
@@ -14,102 +14,51 @@ QT_END_NAMESPACE
namespace Utils {
-class CheckableMessageBoxPrivate;
-
-class QTCREATOR_UTILS_EXPORT CheckableMessageBox : public QDialog
+class QTCREATOR_UTILS_EXPORT CheckableDecider
{
- Q_OBJECT
- Q_PROPERTY(QString text READ text WRITE setText)
- Q_PROPERTY(QMessageBox::Icon icon READ icon WRITE setIcon)
- Q_PROPERTY(bool isChecked READ isChecked WRITE setChecked)
- Q_PROPERTY(QString checkBoxText READ checkBoxText WRITE setCheckBoxText)
- Q_PROPERTY(QDialogButtonBox::StandardButtons buttons READ standardButtons WRITE setStandardButtons)
- Q_PROPERTY(QDialogButtonBox::StandardButton defaultButton READ defaultButton WRITE setDefaultButton)
-
public:
- explicit CheckableMessageBox(QWidget *parent);
- ~CheckableMessageBox() override;
-
- static QDialogButtonBox::StandardButton
- question(QWidget *parent,
- const QString &title,
- const QString &question,
- const QString &checkBoxText,
- bool *checkBoxSetting,
- QDialogButtonBox::StandardButtons buttons = QDialogButtonBox::Yes|QDialogButtonBox::No,
- QDialogButtonBox::StandardButton defaultButton = QDialogButtonBox::No);
-
- static QDialogButtonBox::StandardButton
- information(QWidget *parent,
- const QString &title,
- const QString &text,
- const QString &checkBoxText,
- bool *checkBoxSetting,
- QDialogButtonBox::StandardButtons buttons = QDialogButtonBox::Ok,
- QDialogButtonBox::StandardButton defaultButton = QDialogButtonBox::NoButton);
-
- static QDialogButtonBox::StandardButton
- doNotAskAgainQuestion(QWidget *parent,
- const QString &title,
- const QString &text,
- QSettings *settings,
- const QString &settingsSubKey,
- QDialogButtonBox::StandardButtons buttons = QDialogButtonBox::Yes|QDialogButtonBox::No,
- QDialogButtonBox::StandardButton defaultButton = QDialogButtonBox::No,
- QDialogButtonBox::StandardButton acceptButton = QDialogButtonBox::Yes);
-
- static QDialogButtonBox::StandardButton
- doNotShowAgainInformation(QWidget *parent,
- const QString &title,
- const QString &text,
- QSettings *settings,
- const QString &settingsSubKey,
- QDialogButtonBox::StandardButtons buttons = QDialogButtonBox::Ok,
- QDialogButtonBox::StandardButton defaultButton = QDialogButtonBox::NoButton);
-
- QString text() const;
- void setText(const QString &);
-
- bool isChecked() const;
- void setChecked(bool s);
-
- QString checkBoxText() const;
- void setCheckBoxText(const QString &);
-
- bool isCheckBoxVisible() const;
- void setCheckBoxVisible(bool);
-
- QString detailedText() const;
- void setDetailedText(const QString &text);
-
- QDialogButtonBox::StandardButtons standardButtons() const;
- void setStandardButtons(QDialogButtonBox::StandardButtons s);
- QPushButton *button(QDialogButtonBox::StandardButton b) const;
- QPushButton *addButton(const QString &text, QDialogButtonBox::ButtonRole role);
-
- QDialogButtonBox::StandardButton defaultButton() const;
- void setDefaultButton(QDialogButtonBox::StandardButton s);
-
- QMessageBox::Icon icon() const;
- void setIcon(QMessageBox::Icon icon);
-
- // Query the result
- QAbstractButton *clickedButton() const;
- QDialogButtonBox::StandardButton clickedStandardButton() const;
+ CheckableDecider() = default;
+ CheckableDecider(const QString &settingsSubKey);
+ CheckableDecider(bool *doNotAskAgain);
+ CheckableDecider(const std::function<bool()> &should, const std::function<void()> &doNot)
+ : shouldAskAgain(should), doNotAskAgain(doNot)
+ {}
+
+ std::function<bool()> shouldAskAgain;
+ std::function<void()> doNotAskAgain;
+};
- // check and set "ask again" status
- static bool shouldAskAgain(QSettings *settings, const QString &settingsSubKey);
- static void doNotAskAgain(QSettings *settings, const QString &settingsSubKey);
+class QTCREATOR_UTILS_EXPORT CheckableMessageBox
+{
+public:
+ static QMessageBox::StandardButton question(
+ QWidget *parent,
+ const QString &title,
+ const QString &question,
+ const CheckableDecider &decider,
+ QMessageBox::StandardButtons buttons = QMessageBox::Yes | QMessageBox::No,
+ QMessageBox::StandardButton defaultButton = QMessageBox::No,
+ QMessageBox::StandardButton acceptButton = QMessageBox::Yes,
+ QMap<QMessageBox::StandardButton, QString> buttonTextOverrides = {},
+ const QString &msg = {});
+
+ static QMessageBox::StandardButton information(
+ QWidget *parent,
+ const QString &title,
+ const QString &text,
+ const CheckableDecider &decider,
+ QMessageBox::StandardButtons buttons = QMessageBox::Ok,
+ QMessageBox::StandardButton defaultButton = QMessageBox::NoButton,
+ QMap<QMessageBox::StandardButton, QString> buttonTextOverrides = {},
+ const QString &msg = {});
// Conversion convenience
- static QMessageBox::StandardButton dialogButtonBoxToMessageBoxButton(QDialogButtonBox::StandardButton);
- static void resetAllDoNotAskAgainQuestions(QSettings *settings);
- static bool hasSuppressedQuestions(QSettings *settings);
+ static void resetAllDoNotAskAgainQuestions();
+ static bool hasSuppressedQuestions();
static QString msgDoNotAskAgain();
static QString msgDoNotShowAgain();
-private:
- CheckableMessageBoxPrivate *d;
+ static void initialize(QSettings *settings);
};
} // namespace Utils