summary refs log tree commit diff
path: root/src/notifications
diff options
context:
space:
mode:
authorJoseph Donofry <joedonofry@gmail.com>2021-01-11 17:51:39 -0500
committerJoseph Donofry <joedonofry@gmail.com>2021-01-11 17:51:39 -0500
commit3ff8b3ad8c015d45a515ca381691cae43fc32a00 (patch)
treeedec1d1e7926d9c0e0beb68ca604cc6bcdc1ebf6 /src/notifications
parentAdd Ripple effects to qml buttons and avatar (diff)
parentMerge pull request #372 from deepbluev7/fix-pr-CI (diff)
downloadnheko-3ff8b3ad8c015d45a515ca381691cae43fc32a00.tar.xz
Merge master and fix conflicts
Diffstat (limited to 'src/notifications')
-rw-r--r--src/notifications/Manager.h2
-rw-r--r--src/notifications/ManagerLinux.cpp42
-rw-r--r--src/notifications/ManagerMac.mm5
-rw-r--r--src/notifications/ManagerWin.cpp1
4 files changed, 40 insertions, 10 deletions
diff --git a/src/notifications/Manager.h b/src/notifications/Manager.h

index e6be5953..b5347bd6 100644 --- a/src/notifications/Manager.h +++ b/src/notifications/Manager.h
@@ -36,6 +36,7 @@ public: signals: void notificationClicked(const QString roomId, const QString eventId); + void sendNotificationReply(const QString roomId, const QString eventId, const QString body); public slots: void removeNotification(const QString &roomId, const QString &eventId); @@ -58,6 +59,7 @@ private: private slots: void actionInvoked(uint id, QString action); void notificationClosed(uint id, uint reason); + void notificationReplied(uint id, QString reply); }; #if defined(Q_OS_LINUX) || defined(Q_OS_FREEBSD) diff --git a/src/notifications/ManagerLinux.cpp b/src/notifications/ManagerLinux.cpp
index b9eca1a8..b5e9a6a4 100644 --- a/src/notifications/ManagerLinux.cpp +++ b/src/notifications/ManagerLinux.cpp
@@ -28,6 +28,12 @@ NotificationsManager::NotificationsManager(QObject *parent) "NotificationClosed", this, SLOT(notificationClosed(uint, uint))); + QDBusConnection::sessionBus().connect("org.freedesktop.Notifications", + "/org/freedesktop/Notifications", + "org.freedesktop.Notifications", + "NotificationReplied", + this, + SLOT(notificationReplied(uint, QString))); } void @@ -56,14 +62,19 @@ NotificationsManager::showNotification(const QString summary, hints["image-data"] = image; hints["sound-name"] = "message-new-instant"; QList<QVariant> argumentList; - argumentList << "nheko"; // app_name - argumentList << (uint)0; // replace_id - argumentList << ""; // app_icon - argumentList << summary; // summary - argumentList << text; // body - argumentList << (QStringList("default") << "reply"); // actions - argumentList << hints; // hints - argumentList << (int)-1; // timeout in ms + argumentList << "nheko"; // app_name + argumentList << (uint)0; // replace_id + argumentList << ""; // app_icon + argumentList << summary; // summary + argumentList << text; // body + // The list of actions has always the action name and then a localized version of that + // action. Currently we just use an empty string for that. + // TODO(Nico): Look into what to actually put there. + argumentList << (QStringList("default") << "" + << "inline-reply" + << ""); // actions + argumentList << hints; // hints + argumentList << (int)-1; // timeout in ms static QDBusInterface notifyApp("org.freedesktop.Notifications", "/org/freedesktop/Notifications", @@ -121,9 +132,20 @@ NotificationsManager::removeNotification(const QString &roomId, const QString &e void NotificationsManager::actionInvoked(uint id, QString action) { - if (action == "default" && notificationIds.contains(id)) { + if (notificationIds.contains(id)) { + roomEventId idEntry = notificationIds[id]; + if (action == "default") { + emit notificationClicked(idEntry.roomId, idEntry.eventId); + } + } +} + +void +NotificationsManager::notificationReplied(uint id, QString reply) +{ + if (notificationIds.contains(id)) { roomEventId idEntry = notificationIds[id]; - emit notificationClicked(idEntry.roomId, idEntry.eventId); + emit sendNotificationReply(idEntry.roomId, idEntry.eventId, reply); } } diff --git a/src/notifications/ManagerMac.mm b/src/notifications/ManagerMac.mm
index f035e5f2..c09e894c 100644 --- a/src/notifications/ManagerMac.mm +++ b/src/notifications/ManagerMac.mm
@@ -40,6 +40,11 @@ NotificationsManager::postNotification( void NotificationsManager::actionInvoked(uint, QString) { + } + +void +NotificationsManager::notificationReplied(uint, QString) +{ } void diff --git a/src/notifications/ManagerWin.cpp b/src/notifications/ManagerWin.cpp
index 5a9cb83e..cc61c645 100644 --- a/src/notifications/ManagerWin.cpp +++ b/src/notifications/ManagerWin.cpp
@@ -61,6 +61,7 @@ NotificationsManager::postNotification(const QString &room_id, } void NotificationsManager::actionInvoked(uint, QString) {} +void NotificationsManager::notificationReplied(uint, QString) {} void NotificationsManager::notificationClosed(uint, uint) {}