mirror-chatterino2/src/singletons/Settings.hpp

552 lines
24 KiB
C++
Raw Normal View History

#pragma once
2017-01-05 20:49:13 +01:00
2019-09-22 15:32:36 +02:00
#include "BaseSettings.hpp"
#include "common/Channel.hpp"
#include "common/enums/MessageOverflow.hpp"
#include "common/SignalVector.hpp"
#include "controllers/logging/ChannelLog.hpp"
#include "singletons/Toasts.hpp"
#include "util/RapidJsonSerializeQString.hpp"
#include "util/StreamerMode.hpp"
#include "widgets/Notebook.hpp"
2017-01-20 06:10:28 +01:00
#include <pajlada/settings/setting.hpp>
#include <pajlada/settings/settinglistener.hpp>
using TimeoutButton = std::pair<QString, int>;
2017-01-18 21:30:23 +01:00
namespace chatterino {
class HighlightPhrase;
class HighlightBlacklistUser;
class IgnorePhrase;
class FilterRecord;
using FilterRecordPtr = std::shared_ptr<FilterRecord>;
class Nickname;
class HighlightBadge;
class ModerationAction;
/// Settings which are available for reading on all threads.
class ConcurrentSettings
{
public:
ConcurrentSettings();
2020-02-23 23:07:28 +01:00
SignalVector<HighlightPhrase> &highlightedMessages;
SignalVector<HighlightPhrase> &highlightedUsers;
SignalVector<HighlightBadge> &highlightedBadges;
SignalVector<HighlightBlacklistUser> &blacklistedUsers;
2020-02-23 23:07:28 +01:00
SignalVector<IgnorePhrase> &ignoredMessages;
SignalVector<QString> &mutedChannels;
SignalVector<FilterRecordPtr> &filterRecords;
SignalVector<Nickname> &nicknames;
2020-02-23 23:07:28 +01:00
SignalVector<ModerationAction> &moderationActions;
SignalVector<ChannelLog> &loggedChannels;
bool isHighlightedUser(const QString &username);
bool isBlacklistedUser(const QString &username);
2020-02-23 23:07:28 +01:00
bool isMutedChannel(const QString &channelName);
bool toggleMutedChannel(const QString &channelName);
private:
void mute(const QString &channelName);
void unmute(const QString &channelName);
};
ConcurrentSettings &getCSettings();
enum UsernameDisplayMode : int {
Username = 1, // Username
LocalizedName = 2, // Localized name
UsernameAndLocalizedName = 3, // Username (Localized name)
};
enum HelixTimegateOverride : int {
// Use the default timegated behaviour
// This means we use the old IRC command up until the migration date and
// switch over to the Helix API only after the migration date
Timegate = 1,
// Ignore timegating and always force use the IRC command
AlwaysUseIRC = 2,
// Ignore timegating and always force use the Helix API
AlwaysUseHelix = 3,
};
enum ThumbnailPreviewMode : int {
DontShow = 0,
AlwaysShow = 1,
ShowOnShift = 2,
};
2020-02-23 23:07:28 +01:00
/// Settings which are availlable for reading and writing on the gui thread.
// These settings are still accessed concurrently in the code but it is bad practice.
class Settings : public ABSettings, public ConcurrentSettings
2017-01-05 20:49:13 +01:00
{
static Settings *instance_;
public:
2018-11-25 15:02:48 +01:00
Settings(const QString &settingsDirectory);
2017-05-27 16:16:39 +02:00
static Settings &instance();
/// Appearance
BoolSetting showTimestamps = {"/appearance/messages/showTimestamps", true};
2018-10-31 19:45:51 +01:00
BoolSetting animationsWhenFocused = {
2018-08-15 23:48:16 +02:00
"/appearance/enableAnimationsWhenFocused", false};
2018-08-06 21:17:03 +02:00
QStringSetting timestampFormat = {"/appearance/messages/timestampFormat",
"h:mm"};
BoolSetting showLastMessageIndicator = {
"/appearance/messages/showLastMessageIndicator", false};
EnumSetting<Qt::BrushStyle> lastMessagePattern = {
"/appearance/messages/lastMessagePattern", Qt::SolidPattern};
QStringSetting lastMessageColor = {"/appearance/messages/lastMessageColor",
"#7f2026"};
2018-07-05 18:17:12 +02:00
BoolSetting showEmptyInput = {"/appearance/showEmptyInputBox", true};
2018-08-06 21:17:03 +02:00
BoolSetting showMessageLength = {"/appearance/messages/showMessageLength",
false};
EnumSetting<MessageOverflow> messageOverflow = {
"/appearance/messages/messageOverflow", MessageOverflow::Highlight};
2018-08-06 21:17:03 +02:00
BoolSetting separateMessages = {"/appearance/messages/separateMessages",
false};
BoolSetting hideModerated = {"/appearance/messages/hideModerated", false};
BoolSetting hideModerationActions = {
"/appearance/messages/hideModerationActions", false};
BoolSetting hideDeletionActions = {
"/appearance/messages/hideDeletionActions", false};
2019-08-20 21:50:36 +02:00
BoolSetting colorizeNicknames = {"/appearance/messages/colorizeNicknames",
true};
EnumSetting<UsernameDisplayMode> usernameDisplayMode = {
"/appearance/messages/usernameDisplayMode",
UsernameDisplayMode::UsernameAndLocalizedName};
EnumSetting<NotebookTabLocation> tabDirection = {"/appearance/tabDirection",
NotebookTabLocation::Top};
2018-08-06 21:17:03 +02:00
// BoolSetting collapseLongMessages =
// {"/appearance/messages/collapseLongMessages", false};
BoolSetting hideReplyContext = {"/appearance/hideReplyContext", false};
BoolSetting showReplyButton = {"/appearance/showReplyButton", false};
BoolSetting stripReplyMention = {"/appearance/stripReplyMention", true};
2018-08-06 21:17:03 +02:00
IntSetting collpseMessagesMinLines = {
"/appearance/messages/collapseMessagesMinLines", 0};
2018-10-31 19:45:51 +01:00
BoolSetting alternateMessages = {
2018-08-06 21:17:03 +02:00
"/appearance/messages/alternateMessageBackground", false};
FloatSetting boldScale = {"/appearance/boldScale", 63};
2018-04-27 01:11:09 +02:00
BoolSetting showTabCloseButton = {"/appearance/showTabCloseButton", true};
BoolSetting showTabLive = {"/appearance/showTabLiveButton", true};
2018-08-06 21:17:03 +02:00
BoolSetting hidePreferencesButton = {"/appearance/hidePreferencesButton",
false};
BoolSetting hideUserButton = {"/appearance/hideUserButton", false};
BoolSetting enableSmoothScrolling = {"/appearance/smoothScrolling", true};
2018-08-06 21:17:03 +02:00
BoolSetting enableSmoothScrollingNewMessages = {
"/appearance/smoothScrollingNewMessages", false};
BoolSetting boldUsernames = {"/appearance/messages/boldUsernames", true};
BoolSetting colorUsernames = {"/appearance/messages/colorUsernames", true};
2020-07-18 16:03:51 +02:00
BoolSetting findAllUsernames = {"/appearance/messages/findAllUsernames",
false};
// BoolSetting customizable splitheader
2018-10-31 19:45:51 +01:00
BoolSetting headerViewerCount = {"/appearance/splitheader/showViewerCount",
false};
BoolSetting headerStreamTitle = {"/appearance/splitheader/showTitle",
false};
BoolSetting headerGame = {"/appearance/splitheader/showGame", false};
BoolSetting headerUptime = {"/appearance/splitheader/showUptime", false};
2018-10-25 21:52:12 +02:00
FloatSetting customThemeMultiplier = {"/appearance/customThemeMultiplier",
-0.5f};
2018-08-06 21:17:03 +02:00
// BoolSetting useCustomWindowFrame = {"/appearance/useCustomWindowFrame",
// false};
// Badges
BoolSetting showBadgesGlobalAuthority = {
"/appearance/badges/GlobalAuthority", true};
BoolSetting showBadgesPredictions = {"/appearance/badges/predictions",
true};
BoolSetting showBadgesChannelAuthority = {
"/appearance/badges/ChannelAuthority", true};
BoolSetting showBadgesSubscription = {"/appearance/badges/subscription",
true};
BoolSetting showBadgesVanity = {"/appearance/badges/vanity", true};
BoolSetting showBadgesChatterino = {"/appearance/badges/chatterino", true};
BoolSetting showBadgesFfz = {"/appearance/badges/ffz", true};
BoolSetting useCustomFfzModeratorBadges = {
"/appearance/badges/useCustomFfzModeratorBadges", true};
BoolSetting useCustomFfzVipBadges = {
"/appearance/badges/useCustomFfzVipBadges", true};
BoolSetting showBadgesSevenTV = {"/appearance/badges/seventv", true};
/// Behaviour
2018-08-06 21:17:03 +02:00
BoolSetting allowDuplicateMessages = {"/behaviour/allowDuplicateMessages",
true};
BoolSetting mentionUsersWithAt = {"/behaviour/mentionUsersWithAt", false};
BoolSetting showJoins = {"/behaviour/showJoins", false};
BoolSetting showParts = {"/behaviour/showParts", false};
2018-08-06 21:17:03 +02:00
FloatSetting mouseScrollMultiplier = {"/behaviour/mouseScrollMultiplier",
1.0};
BoolSetting autoCloseUserPopup = {"/behaviour/autoCloseUserPopup", true};
BoolSetting autoCloseThreadPopup = {"/behaviour/autoCloseThreadPopup",
false};
2018-08-06 21:17:03 +02:00
// BoolSetting twitchSeperateWriteConnection =
// {"/behaviour/twitchSeperateWriteConnection", false};
// Auto-completion
BoolSetting onlyFetchChattersForSmallerStreamers = {
"/behaviour/autocompletion/onlyFetchChattersForSmallerStreamers", true};
2018-08-06 21:17:03 +02:00
IntSetting smallStreamerLimit = {
"/behaviour/autocompletion/smallStreamerLimit", 1000};
2019-08-20 21:50:36 +02:00
BoolSetting prefixOnlyEmoteCompletion = {
"/behaviour/autocompletion/prefixOnlyCompletion", true};
BoolSetting userCompletionOnlyWithAt = {
"/behaviour/autocompletion/userCompletionOnlyWithAt", false};
BoolSetting emoteCompletionWithColon = {
"/behaviour/autocompletion/emoteCompletionWithColon", true};
BoolSetting showUsernameCompletionMenu = {
"/behaviour/autocompletion/showUsernameCompletionMenu", true};
FloatSetting pauseOnHoverDuration = {"/behaviour/pauseOnHoverDuration", 0};
2019-09-16 10:40:02 +02:00
EnumSetting<Qt::KeyboardModifier> pauseChatModifier = {
"/behaviour/pauseChatModifier", Qt::KeyboardModifier::NoModifier};
BoolSetting autorun = {"/behaviour/autorun", false};
2019-08-21 01:08:15 +02:00
BoolSetting mentionUsersWithComma = {"/behaviour/mentionUsersWithComma",
true};
/// Commands
BoolSetting allowCommandsAtEnd = {"/commands/allowCommandsAtEnd", false};
/// Emotes
2018-08-06 21:17:03 +02:00
BoolSetting scaleEmotesByLineHeight = {"/emotes/scaleEmotesByLineHeight",
false};
BoolSetting enableEmoteImages = {"/emotes/enableEmoteImages", true};
2018-10-31 19:45:51 +01:00
BoolSetting animateEmotes = {"/emotes/enableGifAnimations", true};
BoolSetting enableZeroWidthEmotes = {"/emotes/enableZeroWidthEmotes", true};
FloatSetting emoteScale = {"/emotes/scale", 1.f};
BoolSetting showUnlistedSevenTVEmotes = {
"/emotes/showUnlistedSevenTVEmotes", false};
2021-02-13 19:17:22 +01:00
QStringSetting emojiSet = {"/emotes/emojiSet", "Twitter"};
2019-12-21 10:36:46 +01:00
BoolSetting stackBits = {"/emotes/stackBits", false};
BoolSetting removeSpacesBetweenEmotes = {
"/emotes/removeSpacesBetweenEmotes", false};
2019-12-21 10:36:46 +01:00
BoolSetting enableBTTVGlobalEmotes = {"/emotes/bttv/global", true};
BoolSetting enableBTTVChannelEmotes = {"/emotes/bttv/channel", true};
BoolSetting enableBTTVLiveUpdates = {"/emotes/bttv/liveupdates", true};
BoolSetting enableFFZGlobalEmotes = {"/emotes/ffz/global", true};
BoolSetting enableFFZChannelEmotes = {"/emotes/ffz/channel", true};
BoolSetting enableSevenTVGlobalEmotes = {"/emotes/seventv/global", true};
BoolSetting enableSevenTVChannelEmotes = {"/emotes/seventv/channel", true};
BoolSetting enableSevenTVEventAPI = {"/emotes/seventv/eventapi", true};
/// Links
BoolSetting linksDoubleClickOnly = {"/links/doubleClickToOpen", false};
2018-10-31 19:45:51 +01:00
BoolSetting linkInfoTooltip = {"/links/linkInfoTooltip", false};
IntSetting thumbnailSize = {"/appearance/thumbnailSize", 0};
IntSetting thumbnailSizeStream = {"/appearance/thumbnailSizeStream", 2};
2018-10-31 19:45:51 +01:00
BoolSetting unshortLinks = {"/links/unshortLinks", false};
BoolSetting lowercaseDomains = {"/links/linkLowercase", true};
/// Streamer Mode
EnumSetting<StreamerModeSetting> enableStreamerMode = {
"/streamerMode/enabled", StreamerModeSetting::DetectStreamingSoftware};
BoolSetting streamerModeHideUsercardAvatars = {
"/streamerMode/hideUsercardAvatars", true};
BoolSetting streamerModeHideLinkThumbnails = {
"/streamerMode/hideLinkThumbnails", true};
BoolSetting streamerModeHideViewerCountAndDuration = {
"/streamerMode/hideViewerCountAndDuration", false};
BoolSetting streamerModeHideModActions = {"/streamerMode/hideModActions",
true};
BoolSetting streamerModeMuteMentions = {"/streamerMode/muteMentions", true};
2021-02-21 16:42:59 +01:00
BoolSetting streamerModeSuppressLiveNotifications = {
"/streamerMode/supressLiveNotifications", false};
BoolSetting streamerModeSuppressInlineWhispers = {
"/streamerMode/suppressInlineWhispers", true};
/// Ignored Phrases
QStringSetting ignoredPhraseReplace = {"/ignore/ignoredPhraseReplace",
"***"};
Squashed commit of the following: commit ea07bbef0be589cc5412bff0a25735ac713128e3 Merge: 0b36f436 5cfcf114 Author: hemirt <hemirt@email.cz> Date: Sun Sep 23 20:05:14 2018 +0200 Merge branch 'blacklist' into blacklistnew commit 5cfcf114b65ea7c0fca9654393ac2faa78610098 Author: hemirt <hemirt@email.cz> Date: Sun Sep 23 20:00:16 2018 +0200 rename second pattern to replacement commit f08cc4cf88c49140a282d3d29af5ad8e7179bb7c Author: hemirt <hemirt@email.cz> Date: Sun Sep 23 19:52:30 2018 +0200 delete out commented code commit 1acb1278aa0109359e0e349ae240d10b34de9d34 Author: hemirt <hemirt@email.cz> Date: Sun Sep 23 19:52:03 2018 +0200 fix replacement with emotes issues commit 646268ab1883a955291f152029fa37f4416e681e Author: hemirt <hemirt@email.cz> Date: Sun Aug 19 01:06:36 2018 +0200 fix build commit ad711b4c15ef0660c554af5ceea82397769a2313 Merge: e8e059f8 8bcc9c48 Author: hemirt <hemirt@email.cz> Date: Sun Aug 19 00:52:38 2018 +0200 Merge branch 'master' of https://github.com/fourtf/chatterino2 into blacklist commit e8e059f8473271128086c5230cf1c40b235af380 Author: hemirt <hemirt@email.cz> Date: Sun Aug 19 00:25:58 2018 +0200 add replaced emotes into twitchEmotes commit a63454f00de479cee1ab1eca18a8b4ab93e37d52 Merge: e7f2f397 63eaf3b9 Author: hemirt <hemirt@email.cz> Date: Sat Aug 11 22:38:16 2018 +0200 Merge branch 'master' of https://github.com/fourtf/chatterino2 into blacklist commit e7f2f397378d0582d989ff8fcbe83bcec41449a1 Author: hemirt <hemirt@email.cz> Date: Sat Aug 11 21:54:01 2018 +0200 emotedata commit f00d3da537ec14aebd9cbb84d63f7b16c196f199 Author: hemirt <hemirt@email.cz> Date: Sat Jul 28 19:53:55 2018 +0200 rename variables to fit better, emotes in capture groups from regex work commit 00c9fa080aeb8a4a187743d708ba139cbed5a849 Author: hemirt <hemirt@email.cz> Date: Mon Jul 9 19:53:53 2018 +0200 add case sensitivity checkbox and fix validity issues due to isValid that checked regex commit 4385fcd13fe6e011b91a3f4a29fd440d019fc499 Author: hemirt <hemirt@email.cz> Date: Sun Jul 8 21:09:14 2018 +0200 remove commented code commit 1834342f74c4fbff38b81fa2c2fcfd6c55adc0d5 Author: hemirt <hemirt@email.cz> Date: Sun Jul 8 21:03:13 2018 +0200 IgnorePhrase replacement also removes twitch emotes info about the matched and changed parts and shifts positions of other emotes from emote infos to the corresponding new position commit d3b6e294ed38fa8587c367c5da6f257641c28b86 Author: hemirt <hemirt@email.cz> Date: Sun Jul 8 16:21:33 2018 +0200 ignore phrases
2018-09-23 20:21:50 +02:00
/// Blocked Users
BoolSetting enableTwitchBlockedUsers = {"/ignore/enableTwitchBlockedUsers",
2018-08-06 21:17:03 +02:00
true};
IntSetting showBlockedUsersMessages = {"/ignore/showBlockedUsers", 0};
2018-01-23 21:33:49 +01:00
2018-01-13 03:06:10 +01:00
/// Moderation
2018-03-24 16:55:28 +01:00
QStringSetting timeoutAction = {"/moderation/timeoutAction", "Disable"};
IntSetting timeoutStackStyle = {
"/moderation/timeoutStackStyle",
static_cast<int>(TimeoutStackStyle::Default)};
2018-01-13 03:06:10 +01:00
/// Highlighting
2018-04-27 01:11:09 +02:00
// BoolSetting enableHighlights = {"/highlighting/enabled", true};
BoolSetting enableSelfHighlight = {
"/highlighting/selfHighlight/nameIsHighlightKeyword", true};
BoolSetting showSelfHighlightInMentions = {
"/highlighting/selfHighlight/showSelfHighlightInMentions", true};
BoolSetting enableSelfHighlightSound = {
"/highlighting/selfHighlight/enableSound", true};
BoolSetting enableSelfHighlightTaskbar = {
"/highlighting/selfHighlight/enableTaskbarFlashing", true};
QStringSetting selfHighlightSoundUrl = {
"/highlighting/selfHighlightSoundUrl", ""};
QStringSetting selfHighlightColor = {"/highlighting/selfHighlightColor",
""};
BoolSetting enableSelfMessageHighlight = {
"/highlighting/selfMessageHighlight/enabled", false};
BoolSetting showSelfMessageHighlightInMentions = {
"/highlighting/selfMessageHighlight/showInMentions", false};
QStringSetting selfMessageHighlightColor = {
"/highlighting/selfMessageHighlight/color", ""};
BoolSetting enableWhisperHighlight = {
"/highlighting/whisperHighlight/whispersHighlighted", true};
BoolSetting enableWhisperHighlightSound = {
"/highlighting/whisperHighlight/enableSound", false};
BoolSetting enableWhisperHighlightTaskbar = {
"/highlighting/whisperHighlight/enableTaskbarFlashing", false};
QStringSetting whisperHighlightSoundUrl = {
"/highlighting/whisperHighlightSoundUrl", ""};
QStringSetting whisperHighlightColor = {
"/highlighting/whisperHighlightColor", ""};
BoolSetting enableRedeemedHighlight = {
"/highlighting/redeemedHighlight/highlighted", true};
// BoolSetting enableRedeemedHighlightSound = {
// "/highlighting/redeemedHighlight/enableSound", false};
// BoolSetting enableRedeemedHighlightTaskbar = {
// "/highlighting/redeemedHighlight/enableTaskbarFlashing", false};
// QStringSetting redeemedHighlightSoundUrl = {
// "/highlighting/redeemedHighlightSoundUrl", ""};
QStringSetting redeemedHighlightColor = {
"/highlighting/redeemedHighlightColor", ""};
BoolSetting enableFirstMessageHighlight = {
"/highlighting/firstMessageHighlight/highlighted", true};
// BoolSetting enableFirstMessageHighlightSound = {
// "/highlighting/firstMessageHighlight/enableSound", false};
// BoolSetting enableFirstMessageHighlightTaskbar = {
// "/highlighting/firstMessageHighlight/enableTaskbarFlashing", false};
// QStringSetting firstMessageHighlightSoundUrl = {
// "/highlighting/firstMessageHighlightSoundUrl", ""};
QStringSetting firstMessageHighlightColor = {
"/highlighting/firstMessageHighlightColor", ""};
BoolSetting enableElevatedMessageHighlight = {
"/highlighting/elevatedMessageHighlight/highlighted", true};
// BoolSetting enableElevatedMessageHighlightSound = {
// "/highlighting/elevatedMessageHighlight/enableSound", false};
// BoolSetting enableElevatedMessageHighlightTaskbar = {
// "/highlighting/elevatedMessageHighlight/enableTaskbarFlashing", false};
// QStringSetting elevatedMessageHighlightSoundUrl = {
// "/highlighting/elevatedMessageHighlight/soundUrl", ""};
QStringSetting elevatedMessageHighlightColor = {
"/highlighting/elevatedMessageHighlight/color", ""};
BoolSetting enableSubHighlight = {
"/highlighting/subHighlight/subsHighlighted", true};
BoolSetting enableSubHighlightSound = {
"/highlighting/subHighlight/enableSound", false};
BoolSetting enableSubHighlightTaskbar = {
"/highlighting/subHighlight/enableTaskbarFlashing", false};
QStringSetting subHighlightSoundUrl = {"/highlighting/subHighlightSoundUrl",
""};
QStringSetting subHighlightColor = {"/highlighting/subHighlightColor", ""};
BoolSetting enableThreadHighlight = {
"/highlighting/thread/nameIsHighlightKeyword", true};
BoolSetting showThreadHighlightInMentions = {
"/highlighting/thread/showSelfHighlightInMentions", true};
BoolSetting enableThreadHighlightSound = {
"/highlighting/thread/enableSound", true};
BoolSetting enableThreadHighlightTaskbar = {
"/highlighting/thread/enableTaskbarFlashing", true};
QStringSetting threadHighlightSoundUrl = {
"/highlighting/threadHighlightSoundUrl", ""};
QStringSetting threadHighlightColor = {"/highlighting/threadHighlightColor",
""};
QStringSetting highlightColor = {"/highlighting/color", ""};
BoolSetting longAlerts = {"/highlighting/alerts", false};
BoolSetting highlightMentions = {"/highlighting/mentions", true};
/// Filtering
BoolSetting excludeUserMessagesFromFilter = {
"/filtering/excludeUserMessages", false};
/// Logging
BoolSetting enableLogging = {"/logging/enabled", false};
BoolSetting onlyLogListedChannels = {"/logging/onlyLogListedChannels",
false};
QStringSetting logPath = {"/logging/path", ""};
QStringSetting pathHighlightSound = {"/highlighting/highlightSoundPath",
""};
2018-08-06 21:17:03 +02:00
BoolSetting highlightAlwaysPlaySound = {"/highlighting/alwaysPlaySound",
false};
BoolSetting inlineWhispers = {"/whispers/enableInlineWhispers", true};
BoolSetting highlightInlineWhispers = {"/whispers/highlightInlineWhispers",
false};
2017-04-12 17:46:44 +02:00
/// Notifications
BoolSetting notificationFlashTaskbar = {"/notifications/enableFlashTaskbar",
false};
BoolSetting notificationPlaySound = {"/notifications/enablePlaySound",
false};
2018-08-24 18:05:36 +02:00
BoolSetting notificationCustomSound = {"/notifications/customPlaySound",
false};
QStringSetting notificationPathSound = {"/notifications/highlightSoundPath",
"qrc:/sounds/ping3.wav"};
BoolSetting notificationOnAnyChannel = {"/notifications/onAnyChannel",
false};
2018-08-24 18:05:36 +02:00
2018-08-12 18:54:32 +02:00
BoolSetting notificationToast = {"/notifications/enableToast", false};
IntSetting openFromToast = {"/notifications/openFromToast",
static_cast<int>(ToastReaction::OpenInBrowser)};
/// External tools
// Streamlink
2018-08-06 21:17:03 +02:00
BoolSetting streamlinkUseCustomPath = {"/external/streamlink/useCustomPath",
false};
QStringSetting streamlinkPath = {"/external/streamlink/customPath", ""};
2018-08-06 21:17:03 +02:00
QStringSetting preferredQuality = {"/external/streamlink/quality",
"Choose"};
QStringSetting streamlinkOpts = {"/external/streamlink/options", ""};
// Custom URI Scheme
QStringSetting customURIScheme = {"/external/urischeme"};
// Image Uploader
2020-08-22 18:33:37 +02:00
BoolSetting imageUploaderEnabled = {"/external/imageUploader/enabled",
false};
QStringSetting imageUploaderUrl = {"/external/imageUploader/url", ""};
QStringSetting imageUploaderFormField = {
2020-08-22 18:33:37 +02:00
"/external/imageUploader/formField", ""};
QStringSetting imageUploaderHeaders = {"/external/imageUploader/headers",
""};
QStringSetting imageUploaderLink = {"/external/imageUploader/link", ""};
QStringSetting imageUploaderDeletionLink = {
"/external/imageUploader/deletionLink", ""};
2018-06-21 22:02:35 +02:00
/// Misc
2019-09-02 10:52:01 +02:00
BoolSetting betaUpdates = {"/misc/beta", false};
2019-09-13 19:26:52 +02:00
#ifdef Q_OS_LINUX
BoolSetting useKeyring = {"/misc/useKeyring", true};
#endif
BoolSetting enableExperimentalIrc = {"/misc/experimentalIrc", false};
2019-09-13 19:26:52 +02:00
2018-06-21 22:02:35 +02:00
IntSetting startUpNotification = {"/misc/startUpNotification", 0};
2018-06-23 22:17:57 +02:00
QStringSetting currentVersion = {"/misc/currentVersion", ""};
BoolSetting loadTwitchMessageHistoryOnConnect = {
"/misc/twitch/loadMessageHistoryOnConnect", true};
IntSetting twitchMessageHistoryLimit = {
"/misc/twitch/messageHistoryLimit",
800,
};
IntSetting scrollbackSplitLimit = {
"/misc/scrollback/splitLimit",
1000,
};
IntSetting scrollbackUsercardLimit = {
"/misc/scrollback/usercardLimit",
1000,
};
// Temporary time-gate-overrides
EnumSetting<HelixTimegateOverride> helixTimegateRaid = {
"/misc/twitch/helix-timegate/raid",
HelixTimegateOverride::Timegate,
};
2022-10-08 13:11:55 +02:00
EnumSetting<HelixTimegateOverride> helixTimegateWhisper = {
"/misc/twitch/helix-timegate/whisper",
HelixTimegateOverride::Timegate,
};
chore: migrate /vips command to Helix call (#4053) * feat(helix): create response model for VIP listing * feat(helix): stub out channel/vips request + handler * feat(helix): parse VIPs list from data and pass to callback * feat(helix): handle errors when getting VIP list then pass to callback * feat(command): add barebones handler for helix-based /vips * feat(command): provide better /vips output when user is not broadcaster * chore(format): bulk reformat with clang-format * chore(changelog): add entry for /vips Helix migration * fix(helix): use correct method when calling VIP list endpoint * fix(helix): use correct VIP list endpoint * chore(tidy): please clang-tidy by marking parameter as unused * feat(command): display unsorted VIP list returned from Helix API * feat(settings): clone raid timegate settings for /vips * feat(command): check /vips timegate setting before execution * feat(command): handle 0 VIPs from Helix response * feat(command): sort users alphabetically from Helix VIPs response * fix(command): highlight users in Helix /vips output to match IRC * fix(command): replace dynamic /vips error message with hardcoded string * chore(comment): remove TODO comment that was DONE * chore(format): bulk reformat using clang-format * fix(command): send 0 VIP message after creation * chore: apply suggestions from Felanbird * fix(helix): change mention of user ban to VIPs in VIP list error message * feat(helix): distinguish non-broadcaster auth error when getting VIPs * chore(command): move handling of non-broadcaster /vips usage to API response * chore(format): re-indent multiline string to get away from 80 char limit * reformat * fix tests Co-authored-by: pajlada <rasmus.karlsson@pajlada.com>
2022-10-10 12:56:55 +02:00
EnumSetting<HelixTimegateOverride> helixTimegateVIPs = {
"/misc/twitch/helix-timegate/vips",
HelixTimegateOverride::Timegate,
};
EnumSetting<HelixTimegateOverride> helixTimegateModerators = {
"/misc/twitch/helix-timegate/moderators",
HelixTimegateOverride::Timegate,
};
EnumSetting<HelixTimegateOverride> helixTimegateCommercial = {
"/misc/twitch/helix-timegate/commercial",
HelixTimegateOverride::Timegate,
};
BoolSetting openLinksIncognito = {"/misc/openLinksIncognito", 0};
2018-06-21 22:02:35 +02:00
EnumSetting<ThumbnailPreviewMode> emotesTooltipPreview = {
"/misc/emotesTooltipPreview",
ThumbnailPreviewMode::AlwaysShow,
};
QStringSetting cachePath = {"/cache/path", ""};
BoolSetting restartOnCrash = {"/misc/restartOnCrash", false};
BoolSetting attachExtensionToAnyProcess = {
"/misc/attachExtensionToAnyProcess", false};
2020-05-09 13:14:41 +02:00
BoolSetting askOnImageUpload = {"/misc/askOnImageUpload", true};
BoolSetting informOnTabVisibilityToggle = {"/misc/askOnTabVisibilityToggle",
true};
BoolSetting lockNotebookLayout = {"/misc/lockNotebookLayout", false};
/// Debug
BoolSetting showUnhandledIrcMessages = {"/debug/showUnhandledIrcMessages",
false};
2019-09-11 13:17:36 +02:00
/// UI
// Purely QOL settings are here (like last item in a list).
2019-09-11 13:17:36 +02:00
IntSetting lastSelectChannelTab = {"/ui/lastSelectChannelTab", 0};
IntSetting lastSelectIrcConn = {"/ui/lastSelectIrcConn", 0};
BoolSetting showSendButton = {"/ui/showSendButton", false};
// Similarity
BoolSetting similarityEnabled = {"/similarity/similarityEnabled", false};
BoolSetting colorSimilarDisabled = {"/similarity/colorSimilarDisabled",
true};
BoolSetting hideSimilar = {"/similarity/hideSimilar", false};
BoolSetting hideSimilarBySameUser = {"/similarity/hideSimilarBySameUser",
true};
BoolSetting hideSimilarMyself = {"/similarity/hideSimilarMyself", false};
BoolSetting shownSimilarTriggerHighlights = {
"/similarity/shownSimilarTriggerHighlights", false};
FloatSetting similarityPercentage = {"/similarity/similarityPercentage",
0.9f};
IntSetting hideSimilarMaxDelay = {"/similarity/hideSimilarMaxDelay", 5};
IntSetting hideSimilarMaxMessagesToCheck = {
"/similarity/hideSimilarMaxMessagesToCheck", 3};
/// Timeout buttons
ChatterinoSetting<std::vector<TimeoutButton>> timeoutButtons = {
"/timeouts/timeoutButtons",
2020-09-26 15:18:48 +02:00
{{"s", 1},
{"s", 30},
{"m", 1},
{"m", 5},
{"m", 30},
{"h", 1},
{"d", 1},
{"w", 1}}};
BoolSetting pluginsEnabled = {"/plugins/supportEnabled", false};
ChatterinoSetting<std::vector<QString>> enabledPlugins = {
"/plugins/enabledPlugins", {}};
2017-09-21 12:15:01 +02:00
private:
2018-01-17 14:14:31 +01:00
void updateModerationActions();
2017-01-05 20:49:13 +01:00
};
2017-04-14 17:52:22 +02:00
} // namespace chatterino