mirror-chatterino2/src/singletons/Settings.hpp
TranRed e64f37d288 Made 8 customizable timeout buttons
changed fixed timeout buttons to be read from settings
2019-07-17 16:50:03 +02:00

260 lines
12 KiB
C++

#pragma once
#include "BaseSettings.hpp"
#include "controllers/highlights/HighlightPhrase.hpp"
#include "controllers/moderationactions/ModerationAction.hpp"
#include "singletons/Toasts.hpp"
#include <pajlada/settings/setting.hpp>
#include <pajlada/settings/settinglistener.hpp>
namespace chatterino {
class Settings : public ABSettings
{
static Settings *instance;
public:
Settings(const QString &settingsDirectory);
static Settings &getInstance();
/// Appearance
BoolSetting showTimestamps = {"/appearance/messages/showTimestamps", true};
BoolSetting animationsWhenFocused = {
"/appearance/enableAnimationsWhenFocused", false};
QStringSetting timestampFormat = {"/appearance/messages/timestampFormat",
"h:mm"};
BoolSetting showLastMessageIndicator = {
"/appearance/messages/showLastMessageIndicator", false};
IntSetting lastMessagePattern = {"/appearance/messages/lastMessagePattern",
Qt::VerPattern};
QStringSetting lastMessageColor = {"/appearance/messages/lastMessageColor",
""};
BoolSetting showEmptyInput = {"/appearance/showEmptyInputBox", true};
BoolSetting showMessageLength = {"/appearance/messages/showMessageLength",
false};
BoolSetting separateMessages = {"/appearance/messages/separateMessages",
false};
BoolSetting compactEmotes = {"/appearance/messages/compactEmotes", true};
BoolSetting hideModerated = {"/appearance/messages/hideModerated", false};
BoolSetting hideModerationActions = {
"/appearance/messages/hideModerationActions", false};
// BoolSetting collapseLongMessages =
// {"/appearance/messages/collapseLongMessages", false};
IntSetting collpseMessagesMinLines = {
"/appearance/messages/collapseMessagesMinLines", 0};
BoolSetting alternateMessages = {
"/appearance/messages/alternateMessageBackground", false};
FloatSetting boldScale = {"/appearance/boldScale", 50};
BoolSetting showTabCloseButton = {"/appearance/showTabCloseButton", true};
BoolSetting showTabLive = {"/appearance/showTabLiveButton", false};
BoolSetting hidePreferencesButton = {"/appearance/hidePreferencesButton",
false};
BoolSetting hideUserButton = {"/appearance/hideUserButton", false};
BoolSetting enableSmoothScrolling = {"/appearance/smoothScrolling", true};
BoolSetting enableSmoothScrollingNewMessages = {
"/appearance/smoothScrollingNewMessages", false};
BoolSetting boldUsernames = {"/appearance/messages/boldUsernames", false};
// BoolSetting customizable splitheader
BoolSetting headerViewerCount = {"/appearance/splitheader/showViewerCount",
false};
BoolSetting headerStreamTitle = {"/appearance/splitheader/showTitle",
false};
BoolSetting headerGame = {"/appearance/splitheader/showGame", false};
BoolSetting headerUptime = {"/appearance/splitheader/showUptime", false};
FloatSetting customThemeMultiplier = {"/appearance/customThemeMultiplier",
-0.5f};
// BoolSetting useCustomWindowFrame = {"/appearance/useCustomWindowFrame",
// false};
// Badges
BoolSetting showBadgesGlobalAuthority = {
"/appearance/badges/GlobalAuthority", 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};
/// Behaviour
BoolSetting allowDuplicateMessages = {"/behaviour/allowDuplicateMessages",
true};
BoolSetting mentionUsersWithAt = {"/behaviour/mentionUsersWithAt", false};
BoolSetting showJoins = {"/behaviour/showJoins", false};
BoolSetting showParts = {"/behaviour/showParts", false};
FloatSetting mouseScrollMultiplier = {"/behaviour/mouseScrollMultiplier",
1.0};
// BoolSetting twitchSeperateWriteConnection =
// {"/behaviour/twitchSeperateWriteConnection", false};
// Auto-completion
BoolSetting onlyFetchChattersForSmallerStreamers = {
"/behaviour/autocompletion/onlyFetchChattersForSmallerStreamers", true};
IntSetting smallStreamerLimit = {
"/behaviour/autocompletion/smallStreamerLimit", 1000};
BoolSetting pauseChatOnHover = {"/behaviour/pauseChatHover", false};
/// Commands
BoolSetting allowCommandsAtEnd = {"/commands/allowCommandsAtEnd", false};
/// Emotes
BoolSetting scaleEmotesByLineHeight = {"/emotes/scaleEmotesByLineHeight",
false};
BoolSetting enableEmoteImages = {"/emotes/enableEmoteImages", true};
BoolSetting animateEmotes = {"/emotes/enableGifAnimations", true};
FloatSetting emoteScale = {"/emotes/scale", 1.f};
QStringSetting emojiSet = {"/emotes/emojiSet", "EmojiOne 2"};
/// Links
BoolSetting linksDoubleClickOnly = {"/links/doubleClickToOpen", false};
BoolSetting linkInfoTooltip = {"/links/linkInfoTooltip", false};
BoolSetting unshortLinks = {"/links/unshortLinks", false};
BoolSetting lowercaseDomains = {"/links/linkLowercase", true};
/// Ignored phrases
QStringSetting ignoredPhraseReplace = {"/ignore/ignoredPhraseReplace",
"***"};
/// Ingored Users
BoolSetting enableTwitchIgnoredUsers = {"/ignore/enableTwitchIgnoredUsers",
true};
IntSetting showIgnoredUsersMessages = {"/ignore/showIgnoredUsers", 0};
/// Moderation
QStringSetting timeoutAction = {"/moderation/timeoutAction", "Disable"};
/// Highlighting
// BoolSetting enableHighlights = {"/highlighting/enabled", true};
BoolSetting customHighlightSound = {"/highlighting/useCustomSound", false};
BoolSetting enableSelfHighlight = {
"/highlighting/selfHighlight/nameIsHighlightKeyword", true};
BoolSetting enableSelfHighlightSound = {
"/highlighting/selfHighlight/enableSound", true};
BoolSetting enableSelfHighlightTaskbar = {
"/highlighting/selfHighlight/enableTaskbarFlashing", true};
BoolSetting enableWhisperHighlight = {
"/highlighting/whisperHighlight/whispersHighlighted", true};
BoolSetting enableWhisperHighlightSound = {
"/highlighting/whisperHighlight/enableSound", false};
BoolSetting enableWhisperHighlightTaskbar = {
"/highlighting/whisperHighlight/enableTaskbarFlashing", false};
QStringSetting highlightColor = {"/highlighting/color", ""};
BoolSetting longAlerts = {"/highlighting/alerts", false};
/// Logging
BoolSetting enableLogging = {"/logging/enabled", false};
QStringSetting logPath = {"/logging/path", ""};
QStringSetting pathHighlightSound = {"/highlighting/highlightSoundPath",
"qrc:/sounds/ping2.wav"};
BoolSetting highlightAlwaysPlaySound = {"/highlighting/alwaysPlaySound",
false};
BoolSetting inlineWhispers = {"/whispers/enableInlineWhispers", true};
BoolSetting highlightInlineWhispers = {"/whispers/highlightInlineWhispers",
false};
/// Notifications
BoolSetting notificationFlashTaskbar = {"/notifications/enableFlashTaskbar",
false};
BoolSetting notificationPlaySound = {"/notifications/enablePlaySound",
false};
BoolSetting notificationCustomSound = {"/notifications/customPlaySound",
false};
QStringSetting notificationPathSound = {"/notifications/highlightSoundPath",
"qrc:/sounds/ping3.wav"};
BoolSetting notificationToast = {"/notifications/enableToast", false};
IntSetting openFromToast = {"/notifications/openFromToast",
static_cast<int>(ToastReaction::OpenInBrowser)};
/// External tools
// Streamlink
BoolSetting streamlinkUseCustomPath = {"/external/streamlink/useCustomPath",
false};
QStringSetting streamlinkPath = {"/external/streamlink/customPath", ""};
QStringSetting preferredQuality = {"/external/streamlink/quality",
"Choose"};
QStringSetting streamlinkOpts = {"/external/streamlink/options", ""};
/// Misc
IntSetting startUpNotification = {"/misc/startUpNotification", 0};
QStringSetting currentVersion = {"/misc/currentVersion", ""};
BoolSetting loadTwitchMessageHistoryOnConnect = {
"/misc/twitch/loadMessageHistoryOnConnect", true};
IntSetting emotesTooltipPreview = {"/misc/emotesTooltipPreview", 0};
QStringSetting cachePath = {"/cache/path", ""};
/// Timeout buttons
QStringSetting timeoutDurationPerUnit1 = {
"/timeouts/timeoutDurationPerUnit1", "1"};
QStringSetting timeoutDurationUnit1 = {"/timeouts/timeoutDurationUnit1",
"s"};
IntSetting timeoutDurationInSec1 = {"/timeouts/timeoutDurationInSec1", 1};
QStringSetting timeoutDurationPerUnit2 = {
"/timeouts/timeoutDurationPerUnit2", "30"};
QStringSetting timeoutDurationUnit2 = {"/timeouts/timeoutDurationUnit2",
"s"};
IntSetting timeoutDurationInSec2 = {"/timeouts/timeoutDurationInSec1", 30};
QStringSetting timeoutDurationPerUnit3 = {
"/timeouts/timeoutDurationPerUnit3", "1"};
QStringSetting timeoutDurationUnit3 = {"/timeouts/timeoutDurationUnit3",
"m"};
IntSetting timeoutDurationInSec3 = {"/timeouts/timeoutDurationInSec3", 60};
QStringSetting timeoutDurationPerUnit4 = {
"/timeouts/timeoutDurationPerUnit4", "5"};
QStringSetting timeoutDurationUnit4 = {"/timeouts/timeoutDurationUnit4",
"s"};
IntSetting timeoutDurationInSec4 = {"/timeouts/timeoutDurationInSec4", 300};
QStringSetting timeoutDurationPerUnit5 = {
"/timeouts/timeoutDurationPerUnit5", "30"};
QStringSetting timeoutDurationUnit5 = {"/timeouts/timeoutDurationUnit5",
"m"};
IntSetting timeoutDurationInSec5 = {"/timeouts/timeoutDurationInSec5",
1800};
QStringSetting timeoutDurationPerUnit6 = {
"/timeouts/timeoutDurationPerUnit6", "1"};
QStringSetting timeoutDurationUnit6 = {"/timeouts/timeoutDurationUnit6",
"h"};
IntSetting timeoutDurationInSec6 = {"/timeouts/timeoutDurationInSec6",
3600};
QStringSetting timeoutDurationPerUnit7 = {
"/timeouts/timeoutDurationPerUnit7", "1"};
QStringSetting timeoutDurationUnit7 = {"/timeouts/timeoutDurationUnit7",
"d"};
IntSetting timeoutDurationInSec7 = {"/timeouts/timeoutDurationInSec7",
86400};
QStringSetting timeoutDurationPerUnit8 = {
"/timeouts/timeoutDurationPerUnit8", "1"};
QStringSetting timeoutDurationUnit8 = {"/timeouts/timeoutDurationUnit8",
"w"};
IntSetting timeoutDurationInSec8 = {"/timeouts/timeoutDurationInSec8",
604800};
private:
void updateModerationActions();
};
} // namespace chatterino
#ifdef CHATTERINO
# include "singletons/Settings.hpp"
#endif