diff --git a/src/plugins/coreplugin/infobar.cpp b/src/plugins/coreplugin/infobar.cpp index a2eb2d93108..31b84db655f 100644 --- a/src/plugins/coreplugin/infobar.cpp +++ b/src/plugins/coreplugin/infobar.cpp @@ -98,6 +98,24 @@ bool InfoBar::containsInfo(Id id) const return false; } +// Remove and suppress id +void InfoBar::suppressInfo(Id id) +{ + removeInfo(id); + m_suppressed << id; +} + +// Info can not be added more than once, or if it is suppressed +bool InfoBar::canInfoBeAdded(Id id) const +{ + return !containsInfo(id) && !m_suppressed.contains(id); +} + +void InfoBar::enableInfo(Id id) +{ + m_suppressed.remove(id); +} + void InfoBar::clear() { if (!m_infoBarEntries.isEmpty()) { diff --git a/src/plugins/coreplugin/infobar.h b/src/plugins/coreplugin/infobar.h index b1993d8aa05..28b9d389a54 100644 --- a/src/plugins/coreplugin/infobar.h +++ b/src/plugins/coreplugin/infobar.h @@ -34,6 +34,7 @@ #include #include +#include QT_BEGIN_NAMESPACE class QBoxLayout; @@ -74,6 +75,9 @@ public: void addInfo(const InfoBarEntry &info); void removeInfo(Id id); bool containsInfo(Id id) const; + void suppressInfo(Id id); + bool canInfoBeAdded(Id id) const; + void enableInfo(Id id); void clear(); signals: @@ -81,6 +85,7 @@ signals: private: QList m_infoBarEntries; + QSet m_suppressed; friend class InfoBarDisplay; };