1515#include < QVariant>
1616
1717#include < aide/aidesettingsprovider.hpp>
18+ #include < aide/gui/widgets/banner.hpp>
1819#include < aide/gui/widgets/gotittooltip.hpp>
20+ #include < aide/mainwindowinterface.hpp>
1921#include < aide/notification.hpp>
2022#include < aide/notificationaction.hpp>
2123#include < aide/notificationmanagerinterface.hpp>
@@ -29,6 +31,7 @@ using aide::Notification;
2931using aide::NotificationAction;
3032using aide::NotificationManagerInterface;
3133using aide::NotificationType;
34+ using aide::core::MainWindowInterface;
3235using aide::widgets::GotItPosition;
3336using aide::widgets::GotItTooltip;
3437using demo::NotificationLauncherDialog;
@@ -57,10 +60,11 @@ namespace
5760
5861NotificationLauncherDialog::NotificationLauncherDialog (
5962 NotificationManagerInterface& notificationManager,
60- HierarchicalId balloonGroupId , HierarchicalId stickyBalloonGroupId ,
61- QWidget* parent)
63+ MainWindowInterface& mainWindow , HierarchicalId balloonGroupId ,
64+ HierarchicalId stickyBalloonGroupId, QWidget* parent)
6265 : QDialog(parent)
6366 , m_notificationManager{notificationManager}
67+ , m_mainWindow{mainWindow}
6468 , m_balloonGroupId{std::move (balloonGroupId)}
6569 , m_stickyBalloonGroupId{std::move (stickyBalloonGroupId)}
6670{
@@ -70,6 +74,7 @@ NotificationLauncherDialog::NotificationLauncherDialog(
7074 mainLayout->addWidget (createBalloonSection ());
7175 mainLayout->addWidget (createGotItSection ());
7276 mainLayout->addWidget (createDialogBannerSection ());
77+ mainLayout->addWidget (createEditorBannerSection ());
7378
7479 auto * buttonBox = new QDialogButtonBox (QDialogButtonBox::Close, this );
7580 connect (buttonBox, &QDialogButtonBox::rejected, this , &QDialog::reject);
@@ -183,6 +188,43 @@ QWidget* NotificationLauncherDialog::createDialogBannerSection()
183188 return group;
184189}
185190
191+ QWidget* NotificationLauncherDialog::createEditorBannerSection ()
192+ {
193+ // NOLINTNEXTLINE(cppcoreguidelines-owning-memory)
194+ auto * group = new QGroupBox (tr (" Editor banner" ));
195+ auto * groupLayout = new QVBoxLayout (group);
196+
197+ auto * severityRow = new QHBoxLayout;
198+
199+ const std::array<SeverityButton, 4 > severityButtons{{
200+ {NotificationType::Information, tr (" Info" ), tr (" Information" ),
201+ tr (" This is an informational editor banner." )},
202+ {NotificationType::Success, tr (" Success" ), tr (" Success" ),
203+ tr (" This is a success editor banner." )},
204+ {NotificationType::Warning, tr (" Warning" ), tr (" Warning" ),
205+ tr (" This is a warning editor banner." )},
206+ {NotificationType::Error, tr (" Error" ), tr (" Error" ),
207+ tr (" This is an error editor banner." )},
208+ }};
209+
210+ for (const auto & severityButton : severityButtons) {
211+ auto * button = new QPushButton (severityButton.buttonLabel , group);
212+ connect (button, &QPushButton::clicked, this , [this , severityButton]() {
213+ addEditorBanner (severityButton.type , severityButton.content );
214+ });
215+ severityRow->addWidget (button);
216+ }
217+
218+ auto * clearAllButton = new QPushButton (tr (" Clear all" ), group);
219+ connect (clearAllButton, &QPushButton::clicked, this ,
220+ &NotificationLauncherDialog::clearEditorBanners);
221+
222+ groupLayout->addLayout (severityRow);
223+ groupLayout->addWidget (clearAllButton);
224+
225+ return group;
226+ }
227+
186228void NotificationLauncherDialog::showGotIt ()
187229{
188230 const auto settings = AideSettingsProvider::unversionableSettings ();
@@ -255,3 +297,17 @@ void NotificationLauncherDialog::postStickyBalloon()
255297 tr (" This balloon has no auto-dismiss timer; close it manually." );
256298 m_notificationManager.post (std::move (notification));
257299}
300+
301+ void NotificationLauncherDialog::addEditorBanner (NotificationType type,
302+ const QString& message)
303+ {
304+ m_editorBanners.push_back (m_mainWindow.addBanner (type, message));
305+ }
306+
307+ void NotificationLauncherDialog::clearEditorBanners ()
308+ {
309+ for (auto * banner : m_editorBanners) {
310+ m_mainWindow.removeBanner (banner);
311+ }
312+ m_editorBanners.clear ();
313+ }
0 commit comments