diff options
Diffstat (limited to 'src/libs/utils/checkablemessagebox.h')
-rw-r--r-- | src/libs/utils/checkablemessagebox.h | 127 |
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 |