From ad38d0ca1cdb37980365c57df48acac0628da674 Mon Sep 17 00:00:00 2001 From: TranRed Date: Mon, 22 Apr 2019 09:03:52 +0200 Subject: [PATCH 1/2] Added setting for opening streams from toast Implemented #710 Added options for opening streams from clicking the toas notficiation: (according to options in splits) - open in browser - open player in browser - open in streamlink (needs to be tested, but should in theory work, since I only use the already existing function) - don't open the stream (in case someone wants to prevent opening streams "by accident") --- src/singletons/Settings.hpp | 1 + src/singletons/Toasts.cpp | 35 ++++++++++++++++--- .../settingspages/NotificationPage.cpp | 16 +++++++++ 3 files changed, 47 insertions(+), 5 deletions(-) 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(); From ac1957ff681a946687752e8fc60b318d4c81c120 Mon Sep 17 00:00:00 2001 From: TranRed Date: Mon, 22 Apr 2019 18:32:58 +0200 Subject: [PATCH 2/2] Quick fix for highlighting in light themes set defaults for highlighting colors. Only use "hidden setting" when populated. --- src/singletons/Settings.hpp | 2 +- src/singletons/Theme.cpp | 18 ++++++++++++++++-- 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/src/singletons/Settings.hpp b/src/singletons/Settings.hpp index 9e3df9dcf..17ff94637 100644 --- a/src/singletons/Settings.hpp +++ b/src/singletons/Settings.hpp @@ -144,7 +144,7 @@ public: "/highlighting/whisperHighlight/enableSound", false}; BoolSetting enableWhisperHighlightTaskbar = { "/highlighting/whisperHighlight/enableTaskbarFlashing", false}; - QStringSetting highlightColor = {"/highlighting/color", "#4B282C"}; + QStringSetting highlightColor = {"/highlighting/color", ""}; BoolSetting longAlerts = {"/highlighting/alerts", false}; diff --git a/src/singletons/Theme.cpp b/src/singletons/Theme.cpp index 70d70776c..1c1411ec2 100644 --- a/src/singletons/Theme.cpp +++ b/src/singletons/Theme.cpp @@ -38,6 +38,10 @@ void Theme::actuallyUpdate(double hue, double multiplier) this->splits.resizeHandle = QColor(0, 148, 255, 0xff); this->splits.resizeHandleBackground = QColor(0, 148, 255, 0x50); + + // Highlighted Messages: theme support quick-fix + this->messages.backgrounds.highlighted = + QColor("#BD8489"); } else { @@ -46,6 +50,11 @@ void Theme::actuallyUpdate(double hue, double multiplier) this->splits.resizeHandle = QColor(0, 148, 255, 0x70); this->splits.resizeHandleBackground = QColor(0, 148, 255, 0x20); + + // Highlighted Messages: theme support quick-fix + this->messages.backgrounds.highlighted = + QColor("#4B282C"); + } this->splits.header.background = getColor(0, sat, flat ? 1 : 0.9); @@ -74,8 +83,13 @@ void Theme::actuallyUpdate(double hue, double multiplier) this->splits.dropPreviewBorder = QColor(0, 148, 255, 0xff); // Highlighted Messages - this->messages.backgrounds.highlighted = - QColor(getSettings()->highlightColor); + // hidden setting from PR #744 - if set it will overwrite theme color (for now!) + //TODO: implement full theme support + if (getSettings()->highlightColor != "") { + this->messages.backgrounds.highlighted = + QColor(getSettings()->highlightColor); + } + } void Theme::normalizeColor(QColor &color)