diff --git a/src/ChatPage.cpp b/src/ChatPage.cpp index 6d67e6f22ed1e8c2819dfe1ee7bf1f1d2b82d406..656ddab07557aed26909bea7664fcd2dacfb594a 100644 --- a/src/ChatPage.cpp +++ b/src/ChatPage.cpp @@ -691,13 +691,20 @@ ChatPage::sendNotifications(const mtx::responses::Notifications &res) this, [this, room_id, event_id, item, user_id, info]( QPixmap image) { + bool isEmote = false; + auto ev = cache::client()->getEvent( + room_id.toStdString(), event_id); + if (ev && mtx::accessors::msg_type(ev->data) == + mtx::events::MessageType::Emote) + isEmote = true; notificationsManager.postNotification( room_id, QString::fromStdString(event_id), QString::fromStdString(info.name), cache::displayName(room_id, user_id), utils::event_body(item.event), - image.toImage()); + image.toImage(), + isEmote); }); } } diff --git a/src/notifications/Manager.h b/src/notifications/Manager.h index 2b869efc51b2fb358808e5fd3440516309f01a74..46f398d71e147946e935d757336064fd37f539c2 100644 --- a/src/notifications/Manager.h +++ b/src/notifications/Manager.h @@ -32,7 +32,8 @@ public: const QString &roomName, const QString &senderName, const QString &text, - const QImage &icon); + const QImage &icon, + const bool &isEmoteMsg = false); signals: void notificationClicked(const QString roomId, const QString eventId); diff --git a/src/notifications/ManagerLinux.cpp b/src/notifications/ManagerLinux.cpp index 8f7261e64e9a274139be4e594f95397639517360..7dbf663d9b356c27712e33e110b626e60eb2dcac 100644 --- a/src/notifications/ManagerLinux.cpp +++ b/src/notifications/ManagerLinux.cpp @@ -50,17 +50,23 @@ NotificationsManager::postNotification(const QString &roomid, const QString &roomname, const QString &sender, const QString &text, - const QImage &icon) + const QImage &icon, + const bool &isEmoteMessage) { QVariantMap hints; hints["image-data"] = icon; hints["sound-name"] = "message-new-instant"; QList<QVariant> argumentList; - argumentList << "nheko"; // app_name - argumentList << (uint)0; // replace_id - argumentList << ""; // app_icon - argumentList << roomname; // summary - argumentList << sender + ": " + text; // body + argumentList << "nheko"; // app_name + argumentList << (uint)0; // replace_id + argumentList << ""; // app_icon + argumentList << roomname; // summary + + // body + if (isEmoteMessage) + argumentList << "* " + sender + " " + text; + else + argumentList << sender + ": " + text; // 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. diff --git a/src/notifications/ManagerMac.mm b/src/notifications/ManagerMac.mm index c09e894c841c48240ae7eb6d5a7407792500e2f0..e21cc9040e52cf6905f4899766c6ec730feacd12 100644 --- a/src/notifications/ManagerMac.mm +++ b/src/notifications/ManagerMac.mm @@ -19,7 +19,8 @@ NotificationsManager::postNotification( const QString &roomName, const QString &senderName, const QString &text, - const QImage &icon) + const QImage &icon, + const bool &isEmoteMessage) { Q_UNUSED(roomId); Q_UNUSED(eventId); @@ -29,7 +30,10 @@ NotificationsManager::postNotification( notif.title = roomName.toNSString(); notif.subtitle = QString("%1 sent a message").arg(senderName).toNSString(); - notif.informativeText = text.toNSString(); + if (isEmoteMessage) + notif.informativeText = QString("* ").append(senderName).append(" ").append(text).toNSString(); + else + notif.informativeText = text.toNSString(); notif.soundName = NSUserNotificationDefaultSoundName; [[NSUserNotificationCenter defaultUserNotificationCenter] deliverNotification: notif]; diff --git a/src/notifications/ManagerWin.cpp b/src/notifications/ManagerWin.cpp index cc61c6455e7f6319fae08b970bd0a09403eefd32..43e6517b017961aaf4525d1544bed59ee824c0b2 100644 --- a/src/notifications/ManagerWin.cpp +++ b/src/notifications/ManagerWin.cpp @@ -37,7 +37,8 @@ NotificationsManager::postNotification(const QString &room_id, const QString &room_name, const QString &sender, const QString &text, - const QImage &icon) + const QImage &icon, + const bool &isEmoteMessage) { Q_UNUSED(room_id) Q_UNUSED(event_id) @@ -53,7 +54,13 @@ NotificationsManager::postNotification(const QString &room_id, else templ.setTextField(QString("%1").arg(sender).toStdWString(), WinToastTemplate::FirstLine); - templ.setTextField(QString("%1").arg(text).toStdWString(), WinToastTemplate::SecondLine); + if (isEmoteMessage) + templ.setTextField( + QString("* ").append(sender).append(" ").append(text).toStdWString(), + WinToastTemplate::SecondLine); + else + templ.setTextField(QString("%1").arg(text).toStdWString(), + WinToastTemplate::SecondLine); // TODO: implement room or user avatar // templ.setImagePath(L"C:/example.png");