Implemented requested changes

changed setting from String to int.
changed EnumCase

I used createComboBox only has an implementation that handles stringsettings. I implemented my own combobox to handle the ToastsSettings now. Not sure if this is the best way. Won't come up with something smarter for now.
This commit is contained in:
TranRed
2019-04-27 18:15:41 +02:00
committed by pajlada
parent c20629c165
commit 2a590adba7
5 changed files with 67 additions and 33 deletions
+2 -2
View File
@@ -173,9 +173,9 @@ public:
"qrc:/sounds/ping3.wav"};
BoolSetting notificationToast = {"/notifications/enableToast", false};
QStringSetting openFromToast = {
IntSetting openFromToast = {
"/notifications/openFromToast",
Toasts::findStringFromReaction(ToastReactions::openInBrowser)};
static_cast<int>(ToastReactions::OpenInBrowser)};
/// External tools
// Streamlink
+25 -16
View File
@@ -28,16 +28,16 @@
namespace chatterino {
std::map<ToastReactions, QString> Toasts::reactionToString = {
{ToastReactions::openInBrowser, OPEN_IN_BROWSER},
{ToastReactions::openInPlayer, OPEN_PLAYER_IN_BROWSER},
{ToastReactions::openInStreamlink, OPEN_IN_STREAMLINK},
{ToastReactions::dontOpen, DONT_OPEN}};
{ToastReactions::OpenInBrowser, OPEN_IN_BROWSER},
{ToastReactions::OpenInPlayer, OPEN_PLAYER_IN_BROWSER},
{ToastReactions::OpenInStreamlink, OPEN_IN_STREAMLINK},
{ToastReactions::DontOpen, DONT_OPEN}};
std::map<QString, ToastReactions> Toasts::stringToReaction = {
{OPEN_IN_BROWSER, ToastReactions::openInBrowser},
{OPEN_PLAYER_IN_BROWSER, ToastReactions::openInPlayer},
{OPEN_IN_STREAMLINK, ToastReactions::openInStreamlink},
{DONT_OPEN, ToastReactions::dontOpen}};
{OPEN_IN_BROWSER, ToastReactions::OpenInBrowser},
{OPEN_PLAYER_IN_BROWSER, ToastReactions::OpenInPlayer},
{OPEN_IN_STREAMLINK, ToastReactions::OpenInStreamlink},
{DONT_OPEN, ToastReactions::DontOpen}};
bool Toasts::isEnabled()
{
@@ -61,6 +61,13 @@ QString Toasts::findStringFromReaction(const ToastReactions &reaction)
}
}
QString Toasts::findStringFromReaction(
const pajlada::Settings::Setting<int> &value)
{
int i = static_cast<int>(value);
return Toasts::findStringFromReaction(static_cast<ToastReactions>(i));
}
ToastReactions Toasts::findReactionFromString(const QString &string)
{
auto iterator = Toasts::stringToReaction.find(string);
@@ -70,7 +77,7 @@ ToastReactions Toasts::findReactionFromString(const QString &string)
}
else
{
return ToastReactions::dontOpen;
return ToastReactions::DontOpen;
}
}
void Toasts::sendChannelNotification(const QString &channelName, Platform p)
@@ -125,23 +132,24 @@ public:
void toastActivated() const
{
QString link;
switch (Toasts::findReactionFromString(getSettings()->openFromToast))
switch (static_cast<ToastReactions>(
getSettings()->openFromToast.getValue()))
{
case ToastReactions::openInBrowser:
case ToastReactions::OpenInBrowser:
if (platform_ == Platform::Twitch)
{
link = "http://www.twitch.tv/" + channelName_;
}
QDesktopServices::openUrl(QUrl(link));
break;
case ToastReactions::openInPlayer:
case ToastReactions::OpenInPlayer:
if (platform_ == Platform::Twitch)
{
link = "https://player.twitch.tv/?channel=" + channelName_;
}
QDesktopServices::openUrl(QUrl(link));
break;
case ToastReactions::openInStreamlink:
case ToastReactions::OpenInStreamlink:
{
openStreamlinkForChannel(channelName_);
break;
@@ -173,10 +181,11 @@ 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);
if (Toasts::findReactionFromString(getSettings()->openFromToast) !=
ToastReactions::dontOpen)
if (static_cast<ToastReactions>(getSettings()->openFromToast.getValue()) !=
ToastReactions::DontOpen)
{
QString mode = getSettings()->openFromToast;
QString mode =
Toasts::findStringFromReaction(getSettings()->openFromToast);
mode = mode.toLower();
templ.setTextField(L"Click here to " + mode.toStdWString(),
+6 -4
View File
@@ -8,10 +8,10 @@ namespace chatterino {
enum class Platform : uint8_t;
enum class ToastReactions {
openInBrowser,
openInPlayer,
openInStreamlink,
dontOpen
OpenInBrowser = 0,
OpenInPlayer = 1,
OpenInStreamlink = 2,
DontOpen = 3
};
class Toasts final : public Singleton
@@ -19,6 +19,8 @@ class Toasts final : public Singleton
public:
void sendChannelNotification(const QString &channelName, Platform p);
static QString findStringFromReaction(const ToastReactions &reaction);
static QString findStringFromReaction(
const pajlada::Settings::Setting<int> &reaction);
static ToastReactions findReactionFromString(const QString &string);
static std::map<ToastReactions, QString> reactionToString;
static std::map<QString, ToastReactions> stringToReaction;