mirror of
https://github.com/Nheko-Reborn/nheko.git
synced 2024-11-21 18:50:47 +03:00
Allow clicking notifications on Windows
This commit is contained in:
parent
68114427a8
commit
d116deedd7
4 changed files with 30 additions and 9 deletions
|
@ -16,6 +16,7 @@ build-windows:
|
|||
variables:
|
||||
APPVEYOR_REPO_BRANCH: "${CI_COMMIT_REF_NAME}"
|
||||
APPVEYOR_REPO_COMMIT: "${CI_COMMIT_SHORT_SHA}"
|
||||
CMAKE_BUILD_PARALLEL_LEVEL: 8
|
||||
before_script:
|
||||
- mkdir -p hunter
|
||||
- Move-Item -Path hunter -Destination C:/hunter
|
||||
|
|
|
@ -26,7 +26,7 @@
|
|||
uap10:RuntimeBehavior="packagedClassicApp"
|
||||
uap10:TrustLevel="mediumIL">
|
||||
<uap:VisualElements DisplayName="Nheko" Description="Matrix client written in Qt" Square150x150Logo="nheko.png"
|
||||
Square44x44Logo="nheko.png" BackgroundColor="#ffffff00" />
|
||||
Square44x44Logo="nheko.png" BackgroundColor="transparent" />
|
||||
<Extensions>
|
||||
<uap:Extension Category="windows.protocol">
|
||||
<uap:Protocol Name="matrix">
|
||||
|
|
|
@ -93,7 +93,9 @@ public:
|
|||
|
||||
#if defined(Q_OS_WINDOWS)
|
||||
private:
|
||||
void systemPostNotification(const QString &line1,
|
||||
void systemPostNotification(const QString &roomid,
|
||||
const QString &eventid,
|
||||
const QString &line1,
|
||||
const QString &line2,
|
||||
const QString &iconPath,
|
||||
const QString &bodyImagePath);
|
||||
|
|
|
@ -21,10 +21,21 @@ using namespace WinToastLib;
|
|||
class CustomHandler : public IWinToastHandler
|
||||
{
|
||||
public:
|
||||
void toastActivated() const {}
|
||||
CustomHandler(NotificationsManager *manager_, const QString &roomid_, const QString &eventid_)
|
||||
: manager(manager_)
|
||||
, roomid(roomid_)
|
||||
, eventid(eventid_)
|
||||
{
|
||||
}
|
||||
|
||||
void toastActivated() const { manager->notificationClicked(roomid, eventid); }
|
||||
void toastActivated(int) const {}
|
||||
void toastFailed() const { std::wcout << L"Error showing current toast" << std::endl; }
|
||||
void toastDismissed(WinToastDismissalReason) const {}
|
||||
|
||||
NotificationsManager *manager;
|
||||
QString roomid;
|
||||
QString eventid;
|
||||
};
|
||||
|
||||
namespace {
|
||||
|
@ -53,6 +64,8 @@ NotificationsManager::postNotification(const mtx::responses::Notification ¬if
|
|||
const QImage &icon)
|
||||
{
|
||||
const auto room_name = QString::fromStdString(cache::singleRoomInfo(notification.room_id).name);
|
||||
auto roomid = QString::fromStdString(notification.room_id);
|
||||
auto eventid = QString::fromStdString(mtx::accessors::event_id(notification.event));
|
||||
|
||||
auto formatNotification = [this, notification] {
|
||||
const auto template_ = getMessageTemplate(notification);
|
||||
|
@ -75,19 +88,24 @@ NotificationsManager::postNotification(const mtx::responses::Notification ¬if
|
|||
QString::fromStdString(mtx::accessors::url(notification.event))
|
||||
.remove(QStringLiteral("mxc://")),
|
||||
QSize(200, 80),
|
||||
[this, room_name, formatNotification, iconPath](QString, QSize, QImage, QString imgPath) {
|
||||
[this, roomid, eventid, room_name, formatNotification, iconPath](
|
||||
QString, QSize, QImage, QString imgPath) {
|
||||
if (imgPath.isEmpty())
|
||||
systemPostNotification(room_name, formatNotification, iconPath, "");
|
||||
systemPostNotification(
|
||||
roomid, eventid, room_name, formatNotification, iconPath, "");
|
||||
else
|
||||
systemPostNotification(room_name, formatNotification, iconPath, imgPath);
|
||||
systemPostNotification(
|
||||
roomid, eventid, room_name, formatNotification, iconPath, imgPath);
|
||||
});
|
||||
} else {
|
||||
systemPostNotification(room_name, formatNotification, iconPath, "");
|
||||
systemPostNotification(roomid, eventid, room_name, formatNotification, iconPath, "");
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
NotificationsManager::systemPostNotification(const QString &line1,
|
||||
NotificationsManager::systemPostNotification(const QString &roomid,
|
||||
const QString &eventid,
|
||||
const QString &line1,
|
||||
const QString &line2,
|
||||
const QString &iconPath,
|
||||
const QString &bodyImagePath)
|
||||
|
@ -106,7 +124,7 @@ NotificationsManager::systemPostNotification(const QString &line1,
|
|||
|
||||
templ.setAudioPath(WinToastTemplate::IM);
|
||||
|
||||
WinToast::instance()->showToast(templ, new CustomHandler());
|
||||
WinToast::instance()->showToast(templ, new CustomHandler(this, roomid, eventid));
|
||||
}
|
||||
|
||||
// clang-format off
|
||||
|
|
Loading…
Reference in a new issue