diff options
Diffstat (limited to 'sailfish/notificationmonitor.cpp')
-rw-r--r-- | sailfish/notificationmonitor.cpp | 79 |
1 files changed, 0 insertions, 79 deletions
diff --git a/sailfish/notificationmonitor.cpp b/sailfish/notificationmonitor.cpp deleted file mode 100644 index f22ce02..0000000 --- a/sailfish/notificationmonitor.cpp +++ /dev/null @@ -1,79 +0,0 @@ -#include <QtCore/QDebug> -#include <QtGui/QIcon> -#include <QtDBus/QDBusConnection> -#include <QtDBus/QDBusConnectionInterface> - -#include "notificationmonitor.h" -#include "notifications_adaptor.h" - -static NotificationMonitor *global_monitor = 0; - -NotificationMonitor::NotificationMonitor(QObject *parent) : - QObject(parent) -{ - QDBusConnection bus = QDBusConnection::sessionBus(); - QDBusConnectionInterface *dbus = bus.interface(); - dbus->call("AddMatch", - "interface='org.freedesktop.Notifications',member='Notify',type='method_call',eavesdrop='true'"); - new NotificationsAdaptor(this); - bus.registerObject("/org/freedesktop/Notifications", this); -} - -NotificationMonitor::~NotificationMonitor() -{ - QDBusConnection bus = QDBusConnection::sessionBus(); - QDBusConnectionInterface *dbus = bus.interface(); - dbus->call("RemoveMatch", - "interface='org.freedesktop.Notifications',member='Notify',type='method_call',eavesdrop='true'"); -} - -NotificationMonitor *NotificationMonitor::instance() -{ - if (!global_monitor) { - global_monitor = new NotificationMonitor; - } - return global_monitor; -} - -uint NotificationMonitor::Notify(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) -{ - QIcon icon; - - qDebug() << "Got notification" << app_name << app_icon << summary << body; - - // Avoid sending a reply for this method call, since we've received it - // because we're eavesdropping. - // The actual target of the method call will send the proper reply, not us. - Q_ASSERT(calledFromDBus()); - setDelayedReply(true); - - // If the notification mentions a specific icon, then use it. - // But otherwise let's prefer our builtin icons. - if (app_icon.startsWith("/")) { - icon = QIcon(app_icon); - } else if (app_icon.startsWith("file:")) { - QUrl url(app_icon); - icon = QIcon(url.toLocalFile()); - } else { - QString category = hints.value("category").toString(); - // Let's hardcode a few categories for now.. - if (!category.isEmpty()) { - qDebug() << "TODO: Category icons"; - } - } - - int count = hints.value("x-nemo-item-count").toInt(); - QDateTime dateTime = hints.value("x-nemo-timestamp").toDateTime(); - if (!dateTime.isValid()) { - dateTime = QDateTime::currentDateTime(); - } - - if (summary.isEmpty() && body.isEmpty()) { - // Avoid sending empty notifications to watch. - return 0; - } - - emit incomingNotification(app_name, icon, summary, count, body, dateTime); - - return 0; -} |