#pragma once #include #include #include #include #include #include "services/dbus/messages.hpp" #include "widgets/notification/baseNotification.hpp" #include "gdkmm/monitor.h" class NotificationController { static std::shared_ptr instance; public: static std::shared_ptr getInstance() { if (!NotificationController::instance) { NotificationController::instance = std::shared_ptr(new NotificationController()); } return NotificationController::instance; } void showSpotifyNotification(MprisPlayer2Message mpris); void showNotificationOnAllMonitors(NotifyMessage notify); private: uint64_t globalNotificationId = 1; std::map>> activeNotifications; std::map hoverCounts; NotificationController(); std::vector> activeMonitors; void updateHoverState(uint64_t notificationId, bool isHovered); void closeNotification(uint64_t notificationId); };