diff options
Diffstat (limited to 'meegohandsetnotification/watchnotificationsink.cpp')
-rw-r--r-- | meegohandsetnotification/watchnotificationsink.cpp | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/meegohandsetnotification/watchnotificationsink.cpp b/meegohandsetnotification/watchnotificationsink.cpp new file mode 100644 index 0000000..0d97562 --- /dev/null +++ b/meegohandsetnotification/watchnotificationsink.cpp @@ -0,0 +1,72 @@ +#include "meegohandsetnotificationprovider.h" +#include "watchnotificationsink.h" + +WatchNotificationSink::WatchNotificationSink(sowatch::MeegoHandsetNotificationProvider *parent) : + NotificationSink(parent), _parent(parent) +{ + for (uint i = 0; i < maxTypes; i++) { + _counts[i] = 0; + } +} + +void WatchNotificationSink::addNotification(const Notification ¬ification) +{ + const NotificationParameters& p = notification.parameters(); + sowatch::Notification::Type type = notificationTypeFromEventType(p.value("eventType").toString()); + uint count = p.value("count").toUInt(); + + _counts[type] += count; + _trackedNotifications[notification.notificationId()] = notification; + + emit countsChanged(type); + + QDateTime dt = QDateTime::fromTime_t(p.value("timestamp").toUInt()); + QDateTime tenSecondsAgo = QDateTime::currentDateTimeUtc().addSecs(-10); + if (dt >= tenSecondsAgo) { + // If the notification happened recently, show it. + sowatch::Notification n(type, dt, p.value("summary").toString(), p.value("body").toString()); + emit incomingNotification(n); + } +} + +void WatchNotificationSink::removeNotification(uint notificationId) +{ + Notification notification = _trackedNotifications[notificationId]; + const NotificationParameters& p = notification.parameters(); + sowatch::Notification::Type type = notificationTypeFromEventType(p.value("eventType").toString()); + uint count = p.value("count").toUInt(); + + _counts[type] -= count; + _trackedNotifications.remove(notificationId); + + emit countsChanged(type); +} + +void WatchNotificationSink::addGroup(uint groupId, const NotificationParameters ¶meters) +{ + // We do not care about notification groups + Q_UNUSED(groupId); + Q_UNUSED(parameters); +} + +void WatchNotificationSink::removeGroup(uint groupId) +{ + Q_UNUSED(groupId); +} + +int WatchNotificationSink::getCount(sowatch::Notification::Type type) +{ + return _counts[type]; +} + +sowatch::Notification::Type WatchNotificationSink::notificationTypeFromEventType(const QString& eventType) +{ + if (eventType == "email.arrived") + return sowatch::Notification::EmailNotification; + else if (eventType == "x-nokia.call.missed") + return sowatch::Notification::MissedCallNotification; + else if (eventType == "x-nokia.messaging.im") + return sowatch::Notification::ImNotification; + else + return sowatch::Notification::OtherNotification; +} |