// Copyright (C) 2022 The Qt Company Ltd. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0+ OR GPL-3.0 WITH Qt-GPL-exception-1.0 #pragma once #include "utils_global.h" #include "id.h" #include "infobar.h" #include #include #include QT_BEGIN_NAMESPACE class QAction; QT_END_NAMESPACE namespace Utils { class QTCREATOR_UTILS_EXPORT MinimizableInfoBars : public QObject { Q_OBJECT public: using ActionCreator = std::function; public: explicit MinimizableInfoBars(InfoBar &infoBar); void setSettingsGroup(const QString &settingsGroup); void setPossibleInfoBarEntries(const QList &entries); void createShowInfoBarActions(const ActionCreator &actionCreator) const; void setInfoVisible(const Id &id, bool visible); private: void createActions(); QString settingsKey(const Id &id) const; bool showInInfoBar(const Id &id) const; void setShowInInfoBar(const Id &id, bool show); void updateInfo(const Id &id); void showInfoBar(const Id &id); private: InfoBar &m_infoBar; QString m_settingsGroup; QHash m_actions; QHash m_isInfoVisible; QHash m_infoEntries; }; } // namespace Utils