summaryrefslogtreecommitdiff
path: root/saltoqd/notificationmanager.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'saltoqd/notificationmanager.cpp')
-rw-r--r--saltoqd/notificationmanager.cpp36
1 files changed, 34 insertions, 2 deletions
diff --git a/saltoqd/notificationmanager.cpp b/saltoqd/notificationmanager.cpp
index a2142fc..c78fffb 100644
--- a/saltoqd/notificationmanager.cpp
+++ b/saltoqd/notificationmanager.cpp
@@ -1,7 +1,39 @@
#include "notificationmanager.h"
#include "notificationmonitor.h"
-NotificationManager::NotificationManager(ToqManager *toq) :
- QObject(toq), _toq(toq), _monitor(NotificationMonitor::instance())
+NotificationManager::NotificationManager(CardManager *card, ToqManager *toq) :
+ QObject(toq), _toq(toq), _monitor(NotificationMonitor::instance()),
+ _card(card),
+ _deck(new CardDeck("com.qualcomm.qce.androidnotifications", "Notifications", this))
{
+ _card->installDeck(_deck);
+
+ connect(_monitor, &NotificationMonitor::notification,
+ this, &NotificationManager::handleNotification);
+}
+
+void NotificationManager::handleNotification(MonitoredNotification *n)
+{
+ Card *card = new Card(QString::number(qint64(n->id())));
+
+ card->setHeader(n->sender());
+ card->setTitle(n->summary());
+ card->setText(n->body());
+ card->setDateTime(n->timestamp());
+ card->setVibrate(true);
+
+ connect(n, &MonitoredNotification::closed,
+ this, &NotificationManager::handleClosedNotification);
+
+ _deck->appendCard(card);
+}
+
+void NotificationManager::handleClosedNotification()
+{
+ MonitoredNotification *n = static_cast<MonitoredNotification*>(sender());
+ Card *card = _cards.take(n);
+ if (card) {
+ _deck->removeCard(card);
+ card->deleteLater();
+ }
}