diff --git a/src/notifications/Manager.h b/src/notifications/Manager.h index ef049914..d7820b18 100644 --- a/src/notifications/Manager.h +++ b/src/notifications/Manager.h @@ -84,10 +84,9 @@ private: #if defined(Q_OS_WINDOWS) private: - void systemPostNotification(const QString &roomName, - const QString &sender, - const QString &text, - const QImage &icon); + void systemPostNotification(const QString &line1, + const QString &line2, + const QString &iconPath); #endif // these slots are platform specific (D-Bus only) diff --git a/src/notifications/ManagerWin.cpp b/src/notifications/ManagerWin.cpp index 5b134c0b..9c45d166 100644 --- a/src/notifications/ManagerWin.cpp +++ b/src/notifications/ManagerWin.cpp @@ -60,39 +60,33 @@ NotificationsManager::postNotification(const mtx::responses::Notification ¬if ¬ification.event) != nullptr; const auto isReply = utils::isReply(notification.event); - if (isEncrypted) { - // TODO: decrypt this message if the decryption setting is on in the UserSettings - const QString text = (isReply ? tr("%1 replied with an encrypted message") - : tr("%1 sent an encrypted message")) - .arg(sender); - systemPostNotification(room_name, sender, text, icon); - } else { - systemPostNotification(room_name, sender, formatNotification(notification), icon); - } + const auto line1 = + (room_name == sender) ? sender : QString("%1 - %2").arg(sender).arg(room_name); + const auto line2 = (isEncrypted ? (isReply ? tr("%1 replied with an encrypted message") + : tr("%1 sent an encrypted message")) + : formatNotification(notification)); - systemPostNotification(room_name, sender, text, icon); + auto iconPath = QStandardPaths::writableLocation(QStandardPaths::CacheLocation) + + room_name + "-room-avatar.png"; + if (!icon.save(iconPath)) + iconPath.clear(); + + systemPostNotification(line1, line2, iconPath); } void -NotificationsManager::systemPostNotification(const QString &roomName, - const QString &sender, - const QString &text, - const QImage &icon) +NotificationsManager::systemPostNotification(const QString &line1, + const QString &line2, + const QString &iconPath) { if (!isInitialized) init(); auto templ = WinToastTemplate(WinToastTemplate::ImageAndText02); - if (roomName != sender) - templ.setTextField(QString("%1 - %2").arg(sender).arg(roomName).toStdWString(), - WinToastTemplate::FirstLine); - else - templ.setTextField(sender.toStdWString(), WinToastTemplate::FirstLine); - templ.setTextField(text.toStdWString(), WinToastTemplate::SecondLine); + templ.setTextField(line1.toStdWString(), WinToastTemplate::FirstLine); + templ.setTextField(line2.toStdWString(), WinToastTemplate::SecondLine); - auto iconPath = QStandardPaths::writableLocation(QStandardPaths::CacheLocation) + roomName + - "-room-avatar.png"; - if (icon.save(iconPath)) + if (!iconPath.isNull()) templ.setImagePath(iconPath.toStdWString()); WinToast::instance()->showToast(templ, new CustomHandler());