diff options
Diffstat (limited to 'saltoqd/notificationmanager.cpp')
-rw-r--r-- | saltoqd/notificationmanager.cpp | 36 |
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(); + } } |