summaryrefslogtreecommitdiff
path: root/src/notificationmonitor.cpp
diff options
context:
space:
mode:
authorJavier S. Pedro <dev.git@javispedro.com>2014-09-14 14:11:26 +0200
committerJavier S. Pedro <dev.git@javispedro.com>2014-09-14 14:11:26 +0200
commitb9b1829dbc50534190c8b81f91ee477af6971834 (patch)
tree360f09061f43a247a5afdc2c83df2b9a03d86a4a /src/notificationmonitor.cpp
parent85fb48bc51fed06a50b6178727fdf9e96aea4fc4 (diff)
downloadsalmeta-b9b1829dbc50534190c8b81f91ee477af6971834.tar.gz
salmeta-b9b1829dbc50534190c8b81f91ee477af6971834.zip
addign watch properties, starting notification work
Diffstat (limited to 'src/notificationmonitor.cpp')
-rw-r--r--src/notificationmonitor.cpp55
1 files changed, 54 insertions, 1 deletions
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 <QtCore/QDebug>
+#include <QtDBus/QDBusConnection>
+#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)
+ 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)
+{
+
}