Skip to content
Snippets Groups Projects
Verified Commit 41427039 authored by Nicolas Werner's avatar Nicolas Werner
Browse files

Try to make windows notifications prettier

parent 791cb660
No related branches found
No related tags found
No related merge requests found
Pipeline #5359 passed
......@@ -15,7 +15,7 @@ echo %DATE%
call "C:/Program Files (x86)/Microsoft Visual Studio/2022/BuildTools/VC/Auxiliary/Build/vcvarsall.bat" x64
cmake -G "Visual Studio 17 2022" -A x64 -S. -Bbuild -DHUNTER_ROOT="C:\hunter" -DHUNTER_ENABLED=ON -DBUILD_SHARED_LIBS=OFF -DUSE_BUNDLED_OPENSSL=ON -DUSE_BUNDLED_KDSINGLEAPPLICATION=ON -DCMAKE_BUILD_TYPE=Release -DHUNTER_CONFIGURATION_TYPES=Release
cmake -G "Visual Studio 17 2022" -A x64 -S. -Bbuild -DHUNTER_ROOT="C:\hunter" -DHUNTER_ENABLED=ON -DBUILD_SHARED_LIBS=OFF -DUSE_BUNDLED_OPENSSL=ON -DUSE_BUNDLED_KDSINGLEAPPLICATION=ON -DKDSingleApplication_STATIC=ON -DCMAKE_BUILD_TYPE=Release -DHUNTER_CONFIGURATION_TYPES=Release
cmake --build build --config Release
......
......@@ -647,14 +647,14 @@ if(APPLE)
endif()
elseif(WIN32)
file(DOWNLOAD
"https://raw.githubusercontent.com/mohabouje/WinToast/41ed1c58d5dce0ee9c01dbdeac05be45358d4f57/src/wintoastlib.cpp"
"https://raw.githubusercontent.com/mohabouje/WinToast/v1.3.0/src/wintoastlib.cpp"
${PROJECT_SOURCE_DIR}/src/wintoastlib.cpp
EXPECTED_HASH SHA256=1A1A7CE41C1052B12946798F4A6C67CE1FAD209C967F5ED4D720B173527E2073)
EXPECTED_HASH SHA256=1ddf8ee2604e1757d383a2f60d4d597c4f5d9496369e6a22586cedf4af77ca8f)
file(DOWNLOAD
"https://raw.githubusercontent.com/mohabouje/WinToast/41ed1c58d5dce0ee9c01dbdeac05be45358d4f57/src/wintoastlib.h"
"https://raw.githubusercontent.com/mohabouje/WinToast/v1.3.0/include/wintoastlib.h"
${PROJECT_SOURCE_DIR}/src/wintoastlib.h
EXPECTED_HASH SHA256=b4481023c5782733795838be22bf1a75f45d87458cd4d9a5a75f664a146eea11)
EXPECTED_HASH SHA256=08cb30d28db9c851d3d4259ae6108ce7dafa966957df6735a06cd55e0716fded)
set(SRC_FILES ${SRC_FILES} src/notifications/ManagerWin.cpp src/wintoastlib.cpp src/wintoastlib.h)
else()
......
......@@ -93,8 +93,10 @@ public:
#if defined(Q_OS_WINDOWS)
private:
void
systemPostNotification(const QString &line1, const QString &line2, const QString &iconPath);
void systemPostNotification(const QString &line1,
const QString &line2,
const QString &iconPath,
const QString &bodyImagePath);
#endif
// these slots are platform specific (D-Bus only)
......
......@@ -114,7 +114,8 @@ NotificationsManager::postNotification(const mtx::responses::Notification &notif
if (hasMarkup_) {
if (hasImages_ &&
mtx::accessors::msg_type(notification.event) == mtx::events::MessageType::Image) {
(mtx::accessors::msg_type(notification.event) == mtx::events::MessageType::Image ||
mtx::accessors::msg_type(notification.event) == mtx::events::MessageType::Image)) {
MxcImageProvider::download(
QString::fromStdString(mtx::accessors::url(notification.event))
.remove(QStringLiteral("mxc://")),
......
......@@ -13,6 +13,7 @@
#include "Cache.h"
#include "EventAccessors.h"
#include "MxcImageProvider.h"
#include "Utils.h"
using namespace WinToastLib;
......@@ -34,9 +35,9 @@ init()
{
isInitialized = true;
WinToast::instance()->setAppName(L"Nheko");
WinToast::instance()->setAppUserModelId(
WinToast::configureAUMI(L"NhekoReborn", L"in.nheko.Nheko"));
WinToast::instance()->setAppName(L"Nheko");
if (!WinToast::instance()->initialize())
std::wcout << "Your system is not compatible with toast notifications\n";
}
......@@ -61,20 +62,35 @@ NotificationsManager::postNotification(const mtx::responses::Notification &notif
}
return template_.arg(utils::stripReplyFallbacks(notification.event, {}, {}).quoted_body);
};
}();
auto iconPath = QStandardPaths::writableLocation(QStandardPaths::CacheLocation) + room_name +
"-room-avatar.png";
if (!icon.save(iconPath))
iconPath.clear();
systemPostNotification(room_name, formatNotification(), iconPath);
if (mtx::accessors::msg_type(notification.event) == mtx::events::MessageType::Image ||
mtx::accessors::msg_type(notification.event) == mtx::events::MessageType::Image) {
MxcImageProvider::download(
QString::fromStdString(mtx::accessors::url(notification.event))
.remove(QStringLiteral("mxc://")),
QSize(200, 80),
[this, room_name, formatNotification, iconPath](QString, QSize, QImage, QString imgPath) {
if (imgPath.isEmpty())
systemPostNotification(room_name, formatNotification, iconPath, "");
else
systemPostNotification(room_name, formatNotification, iconPath, imgPath);
});
} else {
systemPostNotification(room_name, formatNotification, iconPath, "");
}
}
void
NotificationsManager::systemPostNotification(const QString &line1,
const QString &line2,
const QString &iconPath)
const QString &iconPath,
const QString &bodyImagePath)
{
if (!isInitialized)
init();
......@@ -85,6 +101,10 @@ NotificationsManager::systemPostNotification(const QString &line1,
if (!iconPath.isNull())
templ.setImagePath(iconPath.toStdWString());
if (!bodyImagePath.isNull())
templ.setHeroImagePath(bodyImagePath.toStdWString(), true);
templ.setAudioPath(WinToastTemplate::IM);
WinToast::instance()->showToast(templ, new CustomHandler());
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment