#ifndef NOTIFICATIONMONITOR_H #define NOTIFICATIONMONITOR_H #include #include #include class MonitoredNotification : public QObject { Q_OBJECT Q_PROPERTY(uint id READ id CONSTANT) Q_PROPERTY(QString sender READ sender) Q_PROPERTY(QString summary READ summary NOTIFY summaryChanged) Q_PROPERTY(QString body READ body NOTIFY bodyChanged) Q_PROPERTY(QDateTime timestamp READ timestamp NOTIFY timestampChanged) explicit MonitoredNotification(QObject *parent = 0); public: inline uint id() const { return _id; } inline QString sender() const { return _sender; } inline QString summary() const { return _summary; } inline QString body() const { return _body; } inline QDateTime timestamp() const { return _timestamp; } signals: void summaryChanged(); void bodyChanged(); void timestampChanged(); void closed(int reason); private: friend class NotificationMonitor; uint _id; QString _sender; QString _summary; QString _body; QDateTime _timestamp; }; class NotificationMonitor : public QObject { Q_OBJECT public: ~NotificationMonitor(); static NotificationMonitor *instance(); void processIncomingNotification(quint32 id, const QVariantHash &content); void processCloseNotification(quint32 id, quint32 reason); signals: void notification(MonitoredNotification *n); private: explicit NotificationMonitor(QObject *parent = 0); QMap _notifs; }; #endif // NOTIFICATIONMONITOR_H