diff options
author | Fabien Proriol <fabien.proriol@kazoe.org> | 2025-05-25 12:13:31 +0200 |
---|---|---|
committer | Fabien Proriol <fabien.proriol@kazoe.org> | 2025-05-25 12:13:31 +0200 |
commit | 1dbc0e3c88ba271ba35bc3f82e7864c4f35e1236 (patch) | |
tree | 8c491cd196e2eff4c59f8c23f566f7ff26981586 /src/lib/xdgnotificationmanager.h |
Initial Commit
Diffstat (limited to 'src/lib/xdgnotificationmanager.h')
-rw-r--r-- | src/lib/xdgnotificationmanager.h | 55 |
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 |