// TODO: hdr #pragma once #include "lts_notification_export.h" #include #include #include #include #include class QToolButton; namespace LtsSession { class LtsSession; } namespace LtsNotification { class LtsNotificationWidget; /** * @brief The LtsNotificationController class is the Controller for exactly one LtsNotification and creates / keeps track * on all Notification Icons of all BaseLayouts in one Session. * >>> !! Do not use by yourself! Call 'createNotification' from LtsSession to create a new LtsNotification !! <<< */ class LTSNOTIFICATION_EXPORT LtsNotificationController : public QObject { Q_OBJECT public: explicit LtsNotificationController(const QString &identifier); ~LtsNotificationController(); QToolButton *createWidget(); void setIcon(const QIcon& icon); void setAction(const std::function &action); void setToolTip(const QString &toolTip); void setCount(const int count); void setBackground(const int r, const int g, const int b); const QString &identifier() const { return m_identifier; } const QString &tooltip() const { return m_toolTip; } void setEnabled(bool enable); private: QList m_notiList; // all notis on all blws of one session //LtsSession::LtsSession *m_session; // the selected session FIXME: ShdPtr ?! but there can't be a LNI without a Session, so I think this is okay QIcon m_icon; std::function m_action; QString m_toolTip; int m_count; bool m_enable{true}; QString m_identifier; void setAllIcons(); QIcon modifyIcon(const QIcon &icon); private slots: void slotNotiWidgetDestroyed(QObject *obj); }; } // namespace LtsWidgets