// Copyright (C) 2016 The Qt Company Ltd. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 #pragma once #include "utils_global.h" #include #include namespace Utils { class Key; class QtcSettings; class QTCREATOR_UTILS_EXPORT CheckableDecider { public: CheckableDecider() = default; CheckableDecider(const Key &settingsSubKey); CheckableDecider(bool *doNotAskAgain); CheckableDecider(const std::function &should, const std::function &doNot) : shouldAskAgain(should), doNotAskAgain(doNot) {} std::function shouldAskAgain; std::function doNotAskAgain; }; class QTCREATOR_UTILS_EXPORT CheckableMessageBox { public: static QMessageBox::StandardButton question( 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 buttonTextOverrides = {}, const QString &msg = {}); static void question_async( const QString &title, const QString &question, const CheckableDecider &decider, QObject *guard = nullptr, std::function callback = nullptr, QMessageBox::StandardButtons buttons = QMessageBox::Yes | QMessageBox::No, QMessageBox::StandardButton defaultButton = QMessageBox::No, QMessageBox::StandardButton acceptButton = QMessageBox::Yes, QMap buttonTextOverrides = {}, const QString &msg = {}); static QMessageBox::StandardButton information( const QString &title, const QString &text, const CheckableDecider &decider, QMessageBox::StandardButtons buttons = QMessageBox::Ok, QMessageBox::StandardButton defaultButton = QMessageBox::Ok, QMap buttonTextOverrides = {}, const QString &msg = {}); static void information_async( const QString &title, const QString &text, const CheckableDecider &decider, QObject *guard = nullptr, std::function callback = nullptr, QMessageBox::StandardButtons buttons = QMessageBox::Ok, QMessageBox::StandardButton defaultButton = QMessageBox::Ok, QMap buttonTextOverrides = {}, const QString &msg = {}); // Conversion convenience static void resetAllDoNotAskAgainQuestions(); static bool hasSuppressedQuestions(); static QString msgDoNotAskAgain(); static QString msgDoNotShowAgain(); static void initialize(QtcSettings *settings); }; } // namespace Utils