diff options
author | Javier S. Pedro <dev.git@javispedro.com> | 2014-09-14 19:47:14 +0200 |
---|---|---|
committer | Javier S. Pedro <dev.git@javispedro.com> | 2014-09-14 19:47:14 +0200 |
commit | 4bc56bff80046b74926289be8825726296f39791 (patch) | |
tree | f7ebd1ddcbaf972181ce4515f22cb76f0fe94ea4 /src/notificationmonitor.cpp | |
parent | 4ec3c9fa5b33feb4f98401735664fa405107369c (diff) | |
download | salmeta-4bc56bff80046b74926289be8825726296f39791.tar.gz salmeta-4bc56bff80046b74926289be8825726296f39791.zip |
Prepare new plan for notification eavesdropping
Diffstat (limited to 'src/notificationmonitor.cpp')
-rw-r--r-- | src/notificationmonitor.cpp | 39 |
1 files changed, 12 insertions, 27 deletions
diff --git a/src/notificationmonitor.cpp b/src/notificationmonitor.cpp index cdf4d50..50f7b91 100644 --- a/src/notificationmonitor.cpp +++ b/src/notificationmonitor.cpp @@ -3,29 +3,27 @@ #include <QtDBus/QDBusConnectionInterface> #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) { + QDBusConnection bus = QDBusConnection::sessionBus(); + + _watcher = new QDBusServiceWatcher("org.freedesktop.Notifications", bus, + QDBusServiceWatcher::WatchForOwnerChange, + this); + connect(_watcher, &QDBusServiceWatcher::serviceOwnerChanged, + this, &NotificationMonitor::handleServiceOwnerChanged); + + bus.interface()->call("AddMatch", + "interface='org.freedesktop.Notifications',member='Notify',type='method_call',eavesdrop='true'"); } NotificationMonitor::~NotificationMonitor() @@ -35,25 +33,12 @@ 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) +void NotificationMonitor::handleServiceOwnerChanged(const QString &serviceName, const QString &oldOwner, const QString &newOwner) { - + qDebug() << "Service owner changed" << serviceName << oldOwner << newOwner; } |