From b9b1829dbc50534190c8b81f91ee477af6971834 Mon Sep 17 00:00:00 2001 From: "Javier S. Pedro" Date: Sun, 14 Sep 2014 14:11:26 +0200 Subject: addign watch properties, starting notification work --- src/notificationmonitor.cpp | 55 ++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 54 insertions(+), 1 deletion(-) (limited to 'src/notificationmonitor.cpp') diff --git a/src/notificationmonitor.cpp b/src/notificationmonitor.cpp index ca6f713..cdf4d50 100644 --- a/src/notificationmonitor.cpp +++ b/src/notificationmonitor.cpp @@ -1,6 +1,59 @@ +#include +#include +#include + #include "notificationmonitor.h" +#include "notificationadaptor.h" + +static NotificationMonitor *global_monitor = 0; + +namespace +{ + +void handleEavesdropCallFinished(QDBusPendingCallWatcher *watcher) +{ + QDBusPendingReply reply = *watcher; + if (reply.isError()) { + QDBusError error = reply.error(); + qWarning() << "Failure to eavesdrop for notifications:" << error.message(); + } else { + qDebug() << "Now eavesdropping notifications"; + } +} + +} NotificationMonitor::NotificationMonitor(QObject *parent) : - QObject(parent) + QObject(parent) +{ +} + +NotificationMonitor::~NotificationMonitor() +{ +} + +NotificationMonitor *NotificationMonitor::instance() { + if (!global_monitor) { + QDBusConnection bus = QDBusConnection::sessionBus(); + + // First register the global monitor object that will listen for notifications... + global_monitor = new NotificationMonitor; + new NotificationAdaptor(global_monitor); + bus.registerObject("/org/freedesktop/Notifications", global_monitor); + + // Now register for eavesdropping + QDBusConnectionInterface *dbus = bus.interface(); + QDBusPendingCall call = dbus->asyncCall("AddMatch", + "interface='org.freedesktop.Notifications',member='Notify',type='method_call',eavesdrop='true'"); + + QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(call); + connect(watcher, &QDBusPendingCallWatcher::finished, &handleEavesdropCallFinished); + } + return global_monitor; +} + +void NotificationMonitor::handleNotification(const QString &app_name, uint replaces_id, const QString &app_icon, const QString &summary, const QString &body, const QStringList &actions, const QVariantHash &hints, int expire_timeout) +{ + } -- cgit v1.2.3