Backend can really send notifications
This commit is contained in:
parent
9f708080c8
commit
8809372b67
4 changed files with 54 additions and 1 deletions
|
@ -14,6 +14,8 @@ TARGET = harbour-fernschreiber
|
||||||
|
|
||||||
CONFIG += sailfishapp sailfishapp_i18n
|
CONFIG += sailfishapp sailfishapp_i18n
|
||||||
|
|
||||||
|
PKGCONFIG += nemonotifications-qt5
|
||||||
|
|
||||||
QT += core dbus
|
QT += core dbus
|
||||||
|
|
||||||
SOURCES += src/harbour-fernschreiber.cpp \
|
SOURCES += src/harbour-fernschreiber.cpp \
|
||||||
|
|
BIN
images/fernschreiber-notification.png
Normal file
BIN
images/fernschreiber-notification.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 19 KiB |
|
@ -18,6 +18,11 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "notificationmanager.h"
|
#include "notificationmanager.h"
|
||||||
|
#include <nemonotifications-qt5/notification.h>
|
||||||
|
#include <sailfishapp.h>
|
||||||
|
#include <QDebug>
|
||||||
|
#include <QListIterator>
|
||||||
|
#include <QUrl>
|
||||||
|
|
||||||
NotificationManager::NotificationManager(TDLibWrapper *tdLibWrapper, QObject *parent) : QObject(parent)
|
NotificationManager::NotificationManager(TDLibWrapper *tdLibWrapper, QObject *parent) : QObject(parent)
|
||||||
{
|
{
|
||||||
|
@ -42,7 +47,32 @@ void NotificationManager::handleUpdateActiveNotifications(const QVariantList not
|
||||||
|
|
||||||
void NotificationManager::handleUpdateNotificationGroup(const QVariantMap notificationGroupUpdate)
|
void NotificationManager::handleUpdateNotificationGroup(const QVariantMap notificationGroupUpdate)
|
||||||
{
|
{
|
||||||
qDebug() << "[NotificationManager] Received notification group update, group ID:" << notificationGroupUpdate.value("notification_group_id").toInt();
|
QString notificationGroupId = notificationGroupUpdate.value("notification_group_id").toString();
|
||||||
|
qDebug() << "[NotificationManager] Received notification group update, group ID:" << notificationGroupId;
|
||||||
|
QVariantMap notificationGroup = this->notificationGroups.value(notificationGroupId).toMap();
|
||||||
|
|
||||||
|
notificationGroup.insert("type", notificationGroupUpdate.value("type"));
|
||||||
|
notificationGroup.insert("chat_id", notificationGroupUpdate.value("chat_id"));
|
||||||
|
notificationGroup.insert("notification_settings_chat_id", notificationGroupUpdate.value("notification_settings_chat_id"));
|
||||||
|
notificationGroup.insert("is_silent", notificationGroupUpdate.value("is_silent"));
|
||||||
|
notificationGroup.insert("total_count", notificationGroupUpdate.value("total_count"));
|
||||||
|
|
||||||
|
QVariantMap notifications = notificationGroup.value("notifications").toMap();
|
||||||
|
QVariantList addedNotifications = notificationGroupUpdate.value("added_notifications").toList();
|
||||||
|
QListIterator<QVariant> addedNotificationIterator(addedNotifications);
|
||||||
|
while (addedNotificationIterator.hasNext()) {
|
||||||
|
QVariantMap addedNotification = addedNotificationIterator.next().toMap();
|
||||||
|
notifications.insert(addedNotification.value("id").toString(), addedNotification);
|
||||||
|
}
|
||||||
|
QVariantList removedNotifications = notificationGroupUpdate.value("removed_notification_ids").toList();
|
||||||
|
QListIterator<QVariant> removedNotificationIterator(removedNotifications);
|
||||||
|
while (removedNotificationIterator.hasNext()) {
|
||||||
|
QString removedNotificationId = removedNotificationIterator.next().toString();
|
||||||
|
notifications.remove(removedNotificationId);
|
||||||
|
}
|
||||||
|
notificationGroup.insert("notifications", notifications);
|
||||||
|
this->notificationGroups.insert(notificationGroupId, notificationGroup);
|
||||||
|
// this->sendNotifications();
|
||||||
}
|
}
|
||||||
|
|
||||||
void NotificationManager::handleUpdateNotification(const QVariantMap updatedNotification)
|
void NotificationManager::handleUpdateNotification(const QVariantMap updatedNotification)
|
||||||
|
@ -57,3 +87,21 @@ void NotificationManager::handleChatDiscovered(const QString &chatId, const QVar
|
||||||
this->chatMap.insert(chatId, chatInformation);
|
this->chatMap.insert(chatId, chatInformation);
|
||||||
this->chatListMutex.unlock();
|
this->chatListMutex.unlock();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void NotificationManager::sendNotifications()
|
||||||
|
{
|
||||||
|
QVariantList notificationGroupList = this->notificationGroups.values();
|
||||||
|
QListIterator<QVariant> notificationGroupIterator(notificationGroupList);
|
||||||
|
QUrl appIconUrl = SailfishApp::pathTo("images/fernschreiber-notification.png");
|
||||||
|
while (notificationGroupIterator.hasNext()) {
|
||||||
|
QVariantMap notificationGroup = notificationGroupIterator.next().toMap();
|
||||||
|
Notification nemoNotification;
|
||||||
|
nemoNotification.setAppName("Fernschreiber");
|
||||||
|
nemoNotification.setAppIcon(appIconUrl.toLocalFile());
|
||||||
|
nemoNotification.setBody("This is the body");
|
||||||
|
nemoNotification.setSummary("This is the summary");
|
||||||
|
nemoNotification.setPreviewSummary("This is the preview summary");
|
||||||
|
nemoNotification.setPreviewBody("This is the preview body");
|
||||||
|
nemoNotification.publish();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -45,8 +45,11 @@ private:
|
||||||
|
|
||||||
TDLibWrapper *tdLibWrapper;
|
TDLibWrapper *tdLibWrapper;
|
||||||
QVariantMap chatMap;
|
QVariantMap chatMap;
|
||||||
|
QVariantMap notificationGroups;
|
||||||
QMutex chatListMutex;
|
QMutex chatListMutex;
|
||||||
|
|
||||||
|
void sendNotifications();
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // NOTIFICATIONMANAGER_H
|
#endif // NOTIFICATIONMANAGER_H
|
||||||
|
|
Loading…
Reference in a new issue