From 1cdacce135cad31c2a8d75b95f742c47038211ee Mon Sep 17 00:00:00 2001 From: "Javier S. Pedro" Date: Sat, 27 Sep 2014 17:20:54 +0200 Subject: add a few icons for some notifications --- src/notificationmonitor.cpp | 49 ++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 48 insertions(+), 1 deletion(-) (limited to 'src/notificationmonitor.cpp') diff --git a/src/notificationmonitor.cpp b/src/notificationmonitor.cpp index 2001b25..dfc32f3 100644 --- a/src/notificationmonitor.cpp +++ b/src/notificationmonitor.cpp @@ -2,11 +2,52 @@ #include #include #include + +#include + #include "notificationmonitor.h" #include "notifications_adaptor.h" static NotificationMonitor *global_monitor = 0; +namespace +{ + +QHash icons_for_categories; + +QIcon get_builtin_icon(const QString &iconName) +{ + QIcon icon; + + QString filePath = SailfishApp::pathTo("qml/watch/icons/" + iconName + ".png").toLocalFile(); + icon.addFile(filePath); + + return icon; +} + +QIcon icon_for_category(const QString &category) +{ + if (icons_for_categories.isEmpty()) { + icons_for_categories.insert("x-nemo.email", "notification-email"); + icons_for_categories.insert("x-nemo.messaging.im", "notification-sms"); + icons_for_categories.insert("x-nemo.messaging.sms", "notification-sms"); + icons_for_categories.insert("x-nemo.messaging.mms", "notification-sms"); + icons_for_categories.insert("x-nemo.social.twitter.mention", "notification-twitter"); + icons_for_categories.insert("x-nemo.social.twitter.tweet", "notification-twitter"); + icons_for_categories.insert("x-nemo.social.facebook.notification", "notification-facebook"); + icons_for_categories.insert("x-nemo.social.facebook.statuspost", "notification-facebook"); + } + + QString iconName = icons_for_categories.value(category, QString()); + if (!iconName.isEmpty()) { + return get_builtin_icon(iconName); + } else { + return QIcon(); + } +} + +} + NotificationMonitor::NotificationMonitor(QObject *parent) : QObject(parent) { @@ -46,13 +87,19 @@ uint NotificationMonitor::Notify(const QString &app_name, uint replaces_id, cons 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 { - icon = QIcon::fromTheme(app_icon); + QString category = hints.value("category").toString(); + // Let's hardcode a few categories for now.. + if (!category.isEmpty()) { + icon = icon_for_category(category); + } } int count = hints.value("x-nemo-item-count").toInt(); -- cgit v1.2.3