From 1dbc0e3c88ba271ba35bc3f82e7864c4f35e1236 Mon Sep 17 00:00:00 2001 From: Fabien Proriol Date: Sun, 25 May 2025 12:13:31 +0200 Subject: Initial Commit --- src/lib/xdgnotificationmanager.h | 55 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 src/lib/xdgnotificationmanager.h (limited to 'src/lib/xdgnotificationmanager.h') diff --git a/src/lib/xdgnotificationmanager.h b/src/lib/xdgnotificationmanager.h new file mode 100644 index 0000000..181bf0b --- /dev/null +++ b/src/lib/xdgnotificationmanager.h @@ -0,0 +1,55 @@ +#ifndef SystrayNotifyManager_H +#define SystrayNotifyManager_H + +#include +#include + +class XdgNotificationServer; + +namespace xdg { + uint serverNotify(QObject *manager, const QString &app_name, uint replaces_id, const QString &app_icon, const QString &summary, const QString &body, const QStringList &actions, const QVariantMap &hints, int timeout); + class NotificationMessage; + + class NotificationManager : public QAbstractListModel + { + Q_OBJECT + Q_PROPERTY(int nbNotifications READ nbNotifications NOTIFY notificationsChanged) + + XdgNotificationServer *m_server; + unsigned int m_last = 0; + QMap m_pending; + QList m_ids; + + friend uint serverNotify(QObject *manager, const QString &app_name, uint replaces_id, const QString &app_icon, const QString &summary, const QString &body, const QStringList &actions, const QVariantMap &hints, int timeout); + public: + explicit NotificationManager(QObject *parent = nullptr); + + enum SystrayNotifyRoles { + AppNameRole = Qt::UserRole + 1, + AppIconRole, + SummaryRole, + BodyRole, + ActionsRole, + HintsRole, + IdRole, + }; + + int rowCount(const QModelIndex &parent = QModelIndex()) const override; + QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override; + QHash roleNames() const override; + + + public slots: + int nbNotifications(); + void close(unsigned int id, unsigned int reason = 2); + void returnAction(unsigned int appid, const QString &key); + + private slots: + void _closeNotification(unsigned int id); + + signals: + void notificationsChanged(); + }; +} + +#endif // SystrayNotifyManager_H -- cgit v1.2.3