diff --git a/src/singletons/Settings.hpp b/src/singletons/Settings.hpp index c471f0632..9e3df9dcf 100644 --- a/src/singletons/Settings.hpp +++ b/src/singletons/Settings.hpp @@ -172,6 +172,7 @@ public: "qrc:/sounds/ping3.wav"}; BoolSetting notificationToast = {"/notifications/enableToast", false}; + QStringSetting openFromToast = {"/notifications/openFromToast", "in browser"}; /// External tools // Streamlink diff --git a/src/singletons/Toasts.cpp b/src/singletons/Toasts.cpp index 367724368..9ccefbb3d 100644 --- a/src/singletons/Toasts.cpp +++ b/src/singletons/Toasts.cpp @@ -8,6 +8,7 @@ #include "providers/twitch/TwitchCommon.hpp" #include "providers/twitch/TwitchServer.hpp" #include "singletons/Paths.hpp" +#include "util/StreamLink.hpp" #ifdef Q_OS_WIN @@ -85,12 +86,30 @@ public: } void toastActivated() const { + QString openingMode = getSettings()->openFromToast; QString link; - if (platform_ == Platform::Twitch) + if (openingMode == "in browser") { - link = "http://www.twitch.tv/" + channelName_; + if (platform_ == Platform::Twitch) + { + link = "http://www.twitch.tv/" + channelName_; + } + QDesktopServices::openUrl(QUrl(link)); } - QDesktopServices::openUrl(QUrl(link)); + else if (openingMode == "player in browser") + { + if (platform_ == Platform::Twitch) + { + link = "https://player.twitch.tv/?channel=" + channelName_; + } + QDesktopServices::openUrl(QUrl(link)); + } + else if (openingMode == "in streamlink") + { + openStreamlinkForChannel(channelName_); + } + //the fourth and last option is "don't open" + //in this case obviously nothing should happen } void toastActivated(int actionIndex) const @@ -115,8 +134,14 @@ void Toasts::sendWindowsNotification(const QString &channelName, Platform p) std::wstring widestr = std::wstring(utf8_text.begin(), utf8_text.end()); templ.setTextField(widestr, WinToastLib::WinToastTemplate::FirstLine); - templ.setTextField(L"Click here to open in browser", - WinToastLib::WinToastTemplate::SecondLine); + + if (getSettings()->openFromToast != "don't open") { + QString mode = getSettings()->openFromToast ; + + templ.setTextField(L"Click here to open " + mode.toStdWString(), + WinToastLib::WinToastTemplate::SecondLine); + } + QString Path; if (p == Platform::Twitch) { diff --git a/src/widgets/settingspages/NotificationPage.cpp b/src/widgets/settingspages/NotificationPage.cpp index c557a0178..c1f5fd84e 100644 --- a/src/widgets/settingspages/NotificationPage.cpp +++ b/src/widgets/settingspages/NotificationPage.cpp @@ -17,6 +17,10 @@ #include #include + +#define TOAST_REACTIONS \ +"in browser", "player in browser", "in streamlink", "don't open" + namespace chatterino { NotificationPage::NotificationPage() @@ -39,6 +43,18 @@ NotificationPage::NotificationPage() settings.append( this->createCheckBox("Enable toasts (Windows 8 or later)", getSettings()->notificationToast)); + auto openIn = + settings.emplace().withoutMargin(); + { + openIn.emplace("Open stream from Toast: ")->setSizePolicy( + QSizePolicy::Maximum, QSizePolicy::Preferred); + openIn.append( + this->createComboBox({TOAST_REACTIONS}, + getSettings()->openFromToast))->setSizePolicy( + QSizePolicy::Maximum, QSizePolicy::Preferred); + } + openIn->setContentsMargins(40,0,0,0); + openIn->setSizeConstraint(QLayout::SetMaximumSize); #endif auto customSound = layout.emplace().withoutMargin();