summaryrefslogtreecommitdiff
path: root/saltoqd/notificationmonitor.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'saltoqd/notificationmonitor.cpp')
-rw-r--r--saltoqd/notificationmonitor.cpp71
1 files changed, 13 insertions, 58 deletions
diff --git a/saltoqd/notificationmonitor.cpp b/saltoqd/notificationmonitor.cpp
index 2c6621d..5cff5f6 100644
--- a/saltoqd/notificationmonitor.cpp
+++ b/saltoqd/notificationmonitor.cpp
@@ -116,6 +116,10 @@ QVariantHash parse_notify_call(DBusMessage *msg)
const char *s;
dbus_message_iter_get_basic(&value, &s);
r.insert("category", QString::fromUtf8(s));
+ } else if (strcmp(key, "x-nemo-timestamp") == 0 && dbus_message_iter_get_arg_type(&value) == DBUS_TYPE_STRING) {
+ const char *s;
+ dbus_message_iter_get_basic(&value, &s);
+ r.insert("timestamp", QDateTime::fromString(QString::fromUtf8(s), Qt::ISODate));
}
dbus_message_iter_next(&sub);
@@ -201,7 +205,7 @@ void remove_match_rule(const char *rule)
}
-IncomingNotification::IncomingNotification(QObject *parent) :
+MonitoredNotification::MonitoredNotification(QObject *parent) :
QObject(parent)
{
}
@@ -262,13 +266,16 @@ NotificationMonitor *NotificationMonitor::instance()
void NotificationMonitor::processIncomingNotification(quint32 id, const QVariantHash &content)
{
qDebug() << "Incoming notification" << id << content;
- IncomingNotification *n = _notifs.value(id, 0);
+ MonitoredNotification *n = _notifs.value(id, 0);
if (n) {
// TODO emit changed signals for individual fields
} else {
- n = new IncomingNotification(this);
- n->_sender = content["app_name"].toString();
+ n = new MonitoredNotification(this);
+ n->_id = id;
+ n->_sender = content["sender"].toString();
n->_summary = content["summary"].toString();
+ n->_body = content["body"].toString();
+ n->_timestamp = content["timestamp"].toDateTime();
emit notification(n);
}
@@ -277,62 +284,10 @@ void NotificationMonitor::processIncomingNotification(quint32 id, const QVariant
void NotificationMonitor::processCloseNotification(quint32 id, quint32 reason)
{
qDebug() << "Close notification" << id << reason;
- IncomingNotification *n = _notifs.value(id, 0);
+ MonitoredNotification *n = _notifs.value(id, 0);
if (n) {
_notifs.remove(id);
+ emit n->closed(reason);
n->deleteLater();
}
}
-
-#if 0
-
-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;
-}
-
-void NotificationMonitor::CloseNotification(uint id)
-{
- qDebug() << "Close notification" << id;
-}
-
-#endif
-