diff options
author | Nicolas Werner <nicolas.werner@hotmail.de> | 2023-05-29 15:23:08 +0200 |
---|---|---|
committer | Nicolas Werner <nicolas.werner@hotmail.de> | 2023-05-29 20:15:43 +0200 |
commit | 0b9bbd39367f102e616d0c7c5b81eed02ffb3894 (patch) | |
tree | 31b0a104739831b1f528c1d49a23139dde9169da /src | |
parent | Fix duplicate notification category identifier (diff) | |
download | nheko-0b9bbd39367f102e616d0c7c5b81eed02ffb3894.tar.xz |
Enable sending notifications via the systemNotification signal on macOS
Diffstat (limited to 'src')
-rw-r--r-- | src/notifications/Manager.h | 7 | ||||
-rw-r--r-- | src/notifications/ManagerMac.cpp | 64 | ||||
-rw-r--r-- | src/notifications/ManagerMac.mm | 8 |
3 files changed, 36 insertions, 43 deletions
diff --git a/src/notifications/Manager.h b/src/notifications/Manager.h index 129b5131..e200e8be 100644 --- a/src/notifications/Manager.h +++ b/src/notifications/Manager.h @@ -81,11 +81,12 @@ private: const QString &subtitle, const QString &informativeText, const QString &bodyImagePath, - const QString &respondStr, - const QString &sendStr, - const QString &placeholder, const bool playSound); + QString respondStr; + QString sendStr; + QString placeholder; + public: static void attachToMacNotifCenter(); #endif diff --git a/src/notifications/ManagerMac.cpp b/src/notifications/ManagerMac.cpp index e22ae52d..627e9315 100644 --- a/src/notifications/ManagerMac.cpp +++ b/src/notifications/ManagerMac.cpp @@ -22,6 +22,35 @@ formatNotification(const mtx::responses::Notification ¬ification) return utils::stripReplyFallbacks(notification.event, {}, {}).quoted_body; } +NotificationsManager::NotificationsManager(QObject *parent) + : QObject(parent) +{ + // Putting these here to pass along since I'm not sure how + // our translate step interacts with .mm files + respondStr = QObject::tr("Respond"); + sendStr = QObject::tr("Send"); + placeholder = QObject::tr("Write a message..."); + + connect( + this, + &NotificationsManager::systemPostNotificationCb, + this, + [this](const QString &room_id, + const QString &event_id, + const QString &roomName, + const QString &text, + const QImage &) { + objCxxPostNotification(roomName, + room_id, + event_id, + text, + /*const QString &informativeText*/ "", + "", + true); + }, + Qt::QueuedConnection); +} + void NotificationsManager::postNotification(const mtx::responses::Notification ¬ification, const QImage &icon) @@ -40,12 +69,6 @@ NotificationsManager::postNotification(const mtx::responses::Notification ¬if ¬ification.event) != nullptr; const auto isReply = utils::isReply(notification.event); - // Putting these here to pass along since I'm not sure how - // our translate step interacts with .mm files - const auto respondStr = QObject::tr("Respond"); - const auto sendStr = QObject::tr("Send"); - const auto placeholder = QObject::tr("Write a message..."); - auto playSound = false; if (std::find(notification.actions.begin(), @@ -59,16 +82,7 @@ NotificationsManager::postNotification(const mtx::responses::Notification ¬if const QString messageInfo = (isReply ? tr("%1 replied with an encrypted message") : tr("%1 sent an encrypted message")) .arg(sender); - objCxxPostNotification(room_name, - room_id, - event_id, - messageInfo, - "", - "", - respondStr, - sendStr, - placeholder, - playSound); + objCxxPostNotification(room_name, room_id, event_id, messageInfo, "", "", playSound); } else { const QString messageInfo = (isReply ? tr("%1 replied to a message") : tr("%1 sent a message")).arg(sender); @@ -76,25 +90,14 @@ NotificationsManager::postNotification(const mtx::responses::Notification ¬if MxcImageProvider::download( QString::fromStdString(mtx::accessors::url(notification.event)).remove("mxc://"), QSize(200, 80), - [this, - notification, - room_name, - room_id, - event_id, - messageInfo, - respondStr, - sendStr, - placeholder, - playSound](QString, QSize, QImage, QString imgPath) { + [this, notification, room_name, room_id, event_id, messageInfo, playSound]( + QString, QSize, QImage, QString imgPath) { objCxxPostNotification(room_name, room_id, event_id, messageInfo, formatNotification(notification), imgPath, - respondStr, - sendStr, - placeholder, playSound); }); else @@ -104,9 +107,6 @@ NotificationsManager::postNotification(const mtx::responses::Notification ¬if messageInfo, formatNotification(notification), "", - respondStr, - sendStr, - placeholder, playSound); } } diff --git a/src/notifications/ManagerMac.mm b/src/notifications/ManagerMac.mm index 0d6c7cb4..8578b675 100644 --- a/src/notifications/ManagerMac.mm +++ b/src/notifications/ManagerMac.mm @@ -61,11 +61,6 @@ } @end -NotificationsManager::NotificationsManager(QObject* parent) - : QObject(parent) -{ -} - void NotificationsManager::objCxxPostNotification( const QString& room_name, const QString& room_id, @@ -73,9 +68,6 @@ void NotificationsManager::objCxxPostNotification( const QString& subtitle, const QString& informativeText, const QString& bodyImagePath, - const QString& respondStr, - const QString& sendStr, - const QString& placeholder, const bool enableSound) { // Request permissions for alerts (the generic type of notification), sound playback, |