From aa0dc33d325cfd1bb0fce1c597cd851faebdab14 Mon Sep 17 00:00:00 2001 From: Orgad Shaneh Date: Mon, 12 Nov 2012 21:54:30 +0200 Subject: [PATCH] InfoBar: Introduce suppression support This facilitates a consistent mechanism for not repeating messages Change-Id: I5a766f104d7da8b3f5000c9814b5e4aff335a764 Reviewed-by: Eike Ziller --- src/plugins/coreplugin/infobar.cpp | 18 ++++++++++++++++++ src/plugins/coreplugin/infobar.h | 5 +++++ 2 files changed, 23 insertions(+) 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; };