summaryrefslogtreecommitdiff
path: root/src/notificationmonitor.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/notificationmonitor.cpp')
-rw-r--r--src/notificationmonitor.cpp49
1 files changed, 48 insertions, 1 deletions
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 <QtGui/QIcon>
#include <QtDBus/QDBusConnection>
#include <QtDBus/QDBusConnectionInterface>
+
+#include <sailfishapp.h>
+
#include "notificationmonitor.h"
#include "notifications_adaptor.h"
static NotificationMonitor *global_monitor = 0;
+namespace
+{
+
+QHash<QString, QString> 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();