summaryrefslogtreecommitdiff
path: root/src/lib/xdgnotificationmanager.h
diff options
context:
space:
mode:
authorFabien Proriol <fabien.proriol@kazoe.org>2025-05-25 12:13:31 +0200
committerFabien Proriol <fabien.proriol@kazoe.org>2025-05-25 12:13:31 +0200
commit1dbc0e3c88ba271ba35bc3f82e7864c4f35e1236 (patch)
tree8c491cd196e2eff4c59f8c23f566f7ff26981586 /src/lib/xdgnotificationmanager.h
Initial Commit
Diffstat (limited to 'src/lib/xdgnotificationmanager.h')
-rw-r--r--src/lib/xdgnotificationmanager.h55
1 files changed, 55 insertions, 0 deletions
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 <QAbstractListModel>
+#include <QObject>
+
+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<unsigned int, NotificationMessage *> m_pending;
+ QList<unsigned int> 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<int, QByteArray> 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