Chatterino
Settings.hpp
Go to the documentation of this file.
1 #pragma once
2 
3 #include <pajlada/settings/setting.hpp>
4 #include <pajlada/settings/settinglistener.hpp>
5 
6 #include "BaseSettings.hpp"
7 #include "common/Channel.hpp"
14 #include "singletons/Toasts.hpp"
15 #include "util/StreamerMode.hpp"
16 #include "widgets/Notebook.hpp"
18 
19 using TimeoutButton = std::pair<QString, int>;
20 
21 namespace chatterino {
22 
23 class HighlightPhrase;
24 class HighlightBlacklistUser;
25 class IgnorePhrase;
26 class FilterRecord;
27 class Nickname;
28 
31 {
32 public:
34 
44 
45  bool isHighlightedUser(const QString &username);
46  bool isBlacklistedUser(const QString &username);
47  bool isMutedChannel(const QString &channelName);
48  bool toggleMutedChannel(const QString &channelName);
49 
50 private:
51  void mute(const QString &channelName);
52  void unmute(const QString &channelName);
53 };
54 
56 
57 enum UsernameDisplayMode : int {
58  Username = 1, // Username
59  LocalizedName = 2, // Localized name
60  UsernameAndLocalizedName = 3, // Username (Localized name)
61 };
62 
64  // Use the default timegated behaviour
65  // This means we use the old IRC command up until the migration date and
66  // switch over to the Helix API only after the migration date
67  Timegate = 1,
68 
69  // Ignore timegating and always force use the IRC command
71 
72  // Ignore timegating and always force use the Helix API
74 };
75 
77 // These settings are still accessed concurrently in the code but it is bad practice.
78 class Settings : public ABSettings, public ConcurrentSettings
79 {
80  static Settings *instance_;
81 
82 public:
83  Settings(const QString &settingsDirectory);
84 
85  static Settings &instance();
86 
88  BoolSetting showTimestamps = {"/appearance/messages/showTimestamps", true};
89  BoolSetting animationsWhenFocused = {
90  "/appearance/enableAnimationsWhenFocused", false};
91  QStringSetting timestampFormat = {"/appearance/messages/timestampFormat",
92  "h:mm"};
93  BoolSetting showLastMessageIndicator = {
94  "/appearance/messages/showLastMessageIndicator", false};
95  EnumSetting<Qt::BrushStyle> lastMessagePattern = {
96  "/appearance/messages/lastMessagePattern", Qt::SolidPattern};
97  QStringSetting lastMessageColor = {"/appearance/messages/lastMessageColor",
98  "#7f2026"};
99  BoolSetting showEmptyInput = {"/appearance/showEmptyInputBox", true};
100  BoolSetting showMessageLength = {"/appearance/messages/showMessageLength",
101  false};
102  EnumSetting<MessageOverflow> messageOverflow = {
103  "/appearance/messages/messageOverflow", MessageOverflow::Highlight};
104  BoolSetting separateMessages = {"/appearance/messages/separateMessages",
105  false};
106  BoolSetting hideModerated = {"/appearance/messages/hideModerated", false};
107  BoolSetting hideModerationActions = {
108  "/appearance/messages/hideModerationActions", false};
109  BoolSetting hideDeletionActions = {
110  "/appearance/messages/hideDeletionActions", false};
111  BoolSetting colorizeNicknames = {"/appearance/messages/colorizeNicknames",
112  true};
113  EnumSetting<UsernameDisplayMode> usernameDisplayMode = {
114  "/appearance/messages/usernameDisplayMode",
116 
117  EnumSetting<NotebookTabLocation> tabDirection = {"/appearance/tabDirection",
119 
120  // BoolSetting collapseLongMessages =
121  // {"/appearance/messages/collapseLongMessages", false};
122  BoolSetting showReplyButton = {"/appearance/showReplyButton", false};
123  BoolSetting stripReplyMention = {"/appearance/stripReplyMention", true};
124  IntSetting collpseMessagesMinLines = {
125  "/appearance/messages/collapseMessagesMinLines", 0};
126  BoolSetting alternateMessages = {
127  "/appearance/messages/alternateMessageBackground", false};
128  FloatSetting boldScale = {"/appearance/boldScale", 63};
129  BoolSetting showTabCloseButton = {"/appearance/showTabCloseButton", true};
130  BoolSetting showTabLive = {"/appearance/showTabLiveButton", true};
131  BoolSetting hidePreferencesButton = {"/appearance/hidePreferencesButton",
132  false};
133  BoolSetting hideUserButton = {"/appearance/hideUserButton", false};
134  BoolSetting enableSmoothScrolling = {"/appearance/smoothScrolling", true};
135  BoolSetting enableSmoothScrollingNewMessages = {
136  "/appearance/smoothScrollingNewMessages", false};
137  BoolSetting boldUsernames = {"/appearance/messages/boldUsernames", true};
138  BoolSetting colorUsernames = {"/appearance/messages/colorUsernames", true};
139  BoolSetting findAllUsernames = {"/appearance/messages/findAllUsernames",
140  false};
141  // BoolSetting customizable splitheader
142  BoolSetting headerViewerCount = {"/appearance/splitheader/showViewerCount",
143  false};
144  BoolSetting headerStreamTitle = {"/appearance/splitheader/showTitle",
145  false};
146  BoolSetting headerGame = {"/appearance/splitheader/showGame", false};
147  BoolSetting headerUptime = {"/appearance/splitheader/showUptime", false};
148  FloatSetting customThemeMultiplier = {"/appearance/customThemeMultiplier",
149  -0.5f};
150  // BoolSetting useCustomWindowFrame = {"/appearance/useCustomWindowFrame",
151  // false};
152 
153  // Badges
154  BoolSetting showBadgesGlobalAuthority = {
155  "/appearance/badges/GlobalAuthority", true};
156  BoolSetting showBadgesPredictions = {"/appearance/badges/predictions",
157  true};
158  BoolSetting showBadgesChannelAuthority = {
159  "/appearance/badges/ChannelAuthority", true};
160  BoolSetting showBadgesSubscription = {"/appearance/badges/subscription",
161  true};
162  BoolSetting showBadgesVanity = {"/appearance/badges/vanity", true};
163  BoolSetting showBadgesChatterino = {"/appearance/badges/chatterino", true};
164  BoolSetting showBadgesFfz = {"/appearance/badges/ffz", true};
165  BoolSetting useCustomFfzModeratorBadges = {
166  "/appearance/badges/useCustomFfzModeratorBadges", true};
167  BoolSetting useCustomFfzVipBadges = {
168  "/appearance/badges/useCustomFfzVipBadges", true};
169  BoolSetting showBadgesSevenTV = {"/appearance/badges/seventv", true};
170 
172  BoolSetting allowDuplicateMessages = {"/behaviour/allowDuplicateMessages",
173  true};
174  BoolSetting mentionUsersWithAt = {"/behaviour/mentionUsersWithAt", false};
175  BoolSetting showJoins = {"/behaviour/showJoins", false};
176  BoolSetting showParts = {"/behaviour/showParts", false};
177  FloatSetting mouseScrollMultiplier = {"/behaviour/mouseScrollMultiplier",
178  1.0};
179  BoolSetting autoCloseUserPopup = {"/behaviour/autoCloseUserPopup", true};
180  BoolSetting autoCloseThreadPopup = {"/behaviour/autoCloseThreadPopup",
181  false};
182  // BoolSetting twitchSeperateWriteConnection =
183  // {"/behaviour/twitchSeperateWriteConnection", false};
184 
185  // Auto-completion
186  BoolSetting onlyFetchChattersForSmallerStreamers = {
187  "/behaviour/autocompletion/onlyFetchChattersForSmallerStreamers", true};
188  IntSetting smallStreamerLimit = {
189  "/behaviour/autocompletion/smallStreamerLimit", 1000};
190  BoolSetting prefixOnlyEmoteCompletion = {
191  "/behaviour/autocompletion/prefixOnlyCompletion", true};
192  BoolSetting userCompletionOnlyWithAt = {
193  "/behaviour/autocompletion/userCompletionOnlyWithAt", false};
194  BoolSetting emoteCompletionWithColon = {
195  "/behaviour/autocompletion/emoteCompletionWithColon", true};
196  BoolSetting showUsernameCompletionMenu = {
197  "/behaviour/autocompletion/showUsernameCompletionMenu", true};
198 
199  FloatSetting pauseOnHoverDuration = {"/behaviour/pauseOnHoverDuration", 0};
200  EnumSetting<Qt::KeyboardModifier> pauseChatModifier = {
201  "/behaviour/pauseChatModifier", Qt::KeyboardModifier::NoModifier};
202  BoolSetting autorun = {"/behaviour/autorun", false};
203  BoolSetting mentionUsersWithComma = {"/behaviour/mentionUsersWithComma",
204  true};
205 
207  BoolSetting allowCommandsAtEnd = {"/commands/allowCommandsAtEnd", false};
208 
210  BoolSetting scaleEmotesByLineHeight = {"/emotes/scaleEmotesByLineHeight",
211  false};
212  BoolSetting enableEmoteImages = {"/emotes/enableEmoteImages", true};
213  BoolSetting animateEmotes = {"/emotes/enableGifAnimations", true};
214  FloatSetting emoteScale = {"/emotes/scale", 1.f};
215  BoolSetting showUnlistedSevenTVEmotes = {
216  "/emotes/showUnlistedSevenTVEmotes", false};
217 
218  QStringSetting emojiSet = {"/emotes/emojiSet", "Twitter"};
219 
220  BoolSetting stackBits = {"/emotes/stackBits", false};
221  BoolSetting removeSpacesBetweenEmotes = {
222  "/emotes/removeSpacesBetweenEmotes", false};
223 
224  BoolSetting enableBTTVGlobalEmotes = {"/emotes/bttv/global", true};
225  BoolSetting enableBTTVChannelEmotes = {"/emotes/bttv/channel", true};
226  BoolSetting enableFFZGlobalEmotes = {"/emotes/ffz/global", true};
227  BoolSetting enableFFZChannelEmotes = {"/emotes/ffz/channel", true};
228  BoolSetting enableSevenTVGlobalEmotes = {"/emotes/seventv/global", true};
229  BoolSetting enableSevenTVChannelEmotes = {"/emotes/seventv/channel", true};
230  BoolSetting enableSevenTVEventAPI = {"/emotes/seventv/eventapi", true};
231 
233  BoolSetting linksDoubleClickOnly = {"/links/doubleClickToOpen", false};
234  BoolSetting linkInfoTooltip = {"/links/linkInfoTooltip", false};
235  IntSetting thumbnailSize = {"/appearance/thumbnailSize", 0};
236  IntSetting thumbnailSizeStream = {"/appearance/thumbnailSizeStream", 2};
237  BoolSetting unshortLinks = {"/links/unshortLinks", false};
238  BoolSetting lowercaseDomains = {"/links/linkLowercase", true};
239 
241  EnumSetting<StreamerModeSetting> enableStreamerMode = {
242  "/streamerMode/enabled", StreamerModeSetting::DetectStreamingSoftware};
243  BoolSetting streamerModeHideUsercardAvatars = {
244  "/streamerMode/hideUsercardAvatars", true};
245  BoolSetting streamerModeHideLinkThumbnails = {
246  "/streamerMode/hideLinkThumbnails", true};
247  BoolSetting streamerModeHideViewerCountAndDuration = {
248  "/streamerMode/hideViewerCountAndDuration", false};
249  BoolSetting streamerModeHideModActions = {"/streamerMode/hideModActions",
250  true};
251  BoolSetting streamerModeMuteMentions = {"/streamerMode/muteMentions", true};
252  BoolSetting streamerModeSuppressLiveNotifications = {
253  "/streamerMode/supressLiveNotifications", false};
254  BoolSetting streamerModeSuppressInlineWhispers = {
255  "/streamerMode/suppressInlineWhispers", true};
256 
258  QStringSetting ignoredPhraseReplace = {"/ignore/ignoredPhraseReplace",
259  "***"};
260 
262  BoolSetting enableTwitchBlockedUsers = {"/ignore/enableTwitchBlockedUsers",
263  true};
264  IntSetting showBlockedUsersMessages = {"/ignore/showBlockedUsers", 0};
265 
267  QStringSetting timeoutAction = {"/moderation/timeoutAction", "Disable"};
268  IntSetting timeoutStackStyle = {
269  "/moderation/timeoutStackStyle",
270  static_cast<int>(TimeoutStackStyle::Default)};
271 
273  // BoolSetting enableHighlights = {"/highlighting/enabled", true};
274  BoolSetting customHighlightSound = {"/highlighting/useCustomSound", false};
275 
276  BoolSetting enableSelfHighlight = {
277  "/highlighting/selfHighlight/nameIsHighlightKeyword", true};
278  BoolSetting showSelfHighlightInMentions = {
279  "/highlighting/selfHighlight/showSelfHighlightInMentions", true};
280  BoolSetting enableSelfHighlightSound = {
281  "/highlighting/selfHighlight/enableSound", true};
282  BoolSetting enableSelfHighlightTaskbar = {
283  "/highlighting/selfHighlight/enableTaskbarFlashing", true};
284  QStringSetting selfHighlightSoundUrl = {
285  "/highlighting/selfHighlightSoundUrl", ""};
286  QStringSetting selfHighlightColor = {"/highlighting/selfHighlightColor",
287  ""};
288 
289  BoolSetting enableWhisperHighlight = {
290  "/highlighting/whisperHighlight/whispersHighlighted", true};
291  BoolSetting enableWhisperHighlightSound = {
292  "/highlighting/whisperHighlight/enableSound", false};
293  BoolSetting enableWhisperHighlightTaskbar = {
294  "/highlighting/whisperHighlight/enableTaskbarFlashing", false};
295  QStringSetting whisperHighlightSoundUrl = {
296  "/highlighting/whisperHighlightSoundUrl", ""};
297  QStringSetting whisperHighlightColor = {
298  "/highlighting/whisperHighlightColor", ""};
299 
300  BoolSetting enableRedeemedHighlight = {
301  "/highlighting/redeemedHighlight/highlighted", true};
302  // BoolSetting enableRedeemedHighlightSound = {
303  // "/highlighting/redeemedHighlight/enableSound", false};
304  // BoolSetting enableRedeemedHighlightTaskbar = {
305  // "/highlighting/redeemedHighlight/enableTaskbarFlashing", false};
306  QStringSetting redeemedHighlightSoundUrl = {
307  "/highlighting/redeemedHighlightSoundUrl", ""};
308  QStringSetting redeemedHighlightColor = {
309  "/highlighting/redeemedHighlightColor", ""};
310 
311  BoolSetting enableFirstMessageHighlight = {
312  "/highlighting/firstMessageHighlight/highlighted", true};
313  // BoolSetting enableFirstMessageHighlightSound = {
314  // "/highlighting/firstMessageHighlight/enableSound", false};
315  // BoolSetting enableFirstMessageHighlightTaskbar = {
316  // "/highlighting/firstMessageHighlight/enableTaskbarFlashing", false};
317  QStringSetting firstMessageHighlightSoundUrl = {
318  "/highlighting/firstMessageHighlightSoundUrl", ""};
319  QStringSetting firstMessageHighlightColor = {
320  "/highlighting/firstMessageHighlightColor", ""};
321 
322  BoolSetting enableElevatedMessageHighlight = {
323  "/highlighting/elevatedMessageHighlight/highlighted", true};
324  // BoolSetting enableElevatedMessageHighlightSound = {
325  // "/highlighting/elevatedMessageHighlight/enableSound", false};
326  // BoolSetting enableElevatedMessageHighlightTaskbar = {
327  // "/highlighting/elevatedMessageHighlight/enableTaskbarFlashing", false};
328  QStringSetting elevatedMessageHighlightSoundUrl = {
329  "/highlighting/elevatedMessageHighlight/soundUrl", ""};
330  QStringSetting elevatedMessageHighlightColor = {
331  "/highlighting/elevatedMessageHighlight/color", ""};
332 
333  BoolSetting enableSubHighlight = {
334  "/highlighting/subHighlight/subsHighlighted", true};
335  BoolSetting enableSubHighlightSound = {
336  "/highlighting/subHighlight/enableSound", false};
337  BoolSetting enableSubHighlightTaskbar = {
338  "/highlighting/subHighlight/enableTaskbarFlashing", false};
339  QStringSetting subHighlightSoundUrl = {"/highlighting/subHighlightSoundUrl",
340  ""};
341  QStringSetting subHighlightColor = {"/highlighting/subHighlightColor", ""};
342 
343  BoolSetting enableThreadHighlight = {
344  "/highlighting/thread/nameIsHighlightKeyword", true};
345  BoolSetting showThreadHighlightInMentions = {
346  "/highlighting/thread/showSelfHighlightInMentions", true};
347  BoolSetting enableThreadHighlightSound = {
348  "/highlighting/thread/enableSound", true};
349  BoolSetting enableThreadHighlightTaskbar = {
350  "/highlighting/thread/enableTaskbarFlashing", true};
351  QStringSetting threadHighlightSoundUrl = {
352  "/highlighting/threadHighlightSoundUrl", ""};
353  QStringSetting threadHighlightColor = {"/highlighting/threadHighlightColor",
354  ""};
355 
356  QStringSetting highlightColor = {"/highlighting/color", ""};
357 
358  BoolSetting longAlerts = {"/highlighting/alerts", false};
359 
360  BoolSetting highlightMentions = {"/highlighting/mentions", true};
361 
363  BoolSetting excludeUserMessagesFromFilter = {
364  "/filtering/excludeUserMessages", false};
365 
367  BoolSetting enableLogging = {"/logging/enabled", false};
368 
369  QStringSetting logPath = {"/logging/path", ""};
370 
371  QStringSetting pathHighlightSound = {"/highlighting/highlightSoundPath",
372  ""};
373 
374  BoolSetting highlightAlwaysPlaySound = {"/highlighting/alwaysPlaySound",
375  false};
376 
377  BoolSetting inlineWhispers = {"/whispers/enableInlineWhispers", true};
378  BoolSetting highlightInlineWhispers = {"/whispers/highlightInlineWhispers",
379  false};
380 
382  BoolSetting notificationFlashTaskbar = {"/notifications/enableFlashTaskbar",
383  false};
384  BoolSetting notificationPlaySound = {"/notifications/enablePlaySound",
385  false};
386  BoolSetting notificationCustomSound = {"/notifications/customPlaySound",
387  false};
388  QStringSetting notificationPathSound = {"/notifications/highlightSoundPath",
389  "qrc:/sounds/ping3.wav"};
390  BoolSetting notificationOnAnyChannel = {"/notifications/onAnyChannel",
391  false};
392 
393  BoolSetting notificationToast = {"/notifications/enableToast", false};
394  IntSetting openFromToast = {"/notifications/openFromToast",
395  static_cast<int>(ToastReaction::OpenInBrowser)};
396 
398  // Streamlink
399  BoolSetting streamlinkUseCustomPath = {"/external/streamlink/useCustomPath",
400  false};
401  QStringSetting streamlinkPath = {"/external/streamlink/customPath", ""};
402  QStringSetting preferredQuality = {"/external/streamlink/quality",
403  "Choose"};
404  QStringSetting streamlinkOpts = {"/external/streamlink/options", ""};
405 
406  // Custom URI Scheme
407  QStringSetting customURIScheme = {"/external/urischeme"};
408 
409  // Image Uploader
410  BoolSetting imageUploaderEnabled = {"/external/imageUploader/enabled",
411  false};
412  QStringSetting imageUploaderUrl = {"/external/imageUploader/url", ""};
413  QStringSetting imageUploaderFormField = {
414  "/external/imageUploader/formField", ""};
415  QStringSetting imageUploaderHeaders = {"/external/imageUploader/headers",
416  ""};
417  QStringSetting imageUploaderLink = {"/external/imageUploader/link", ""};
418  QStringSetting imageUploaderDeletionLink = {
419  "/external/imageUploader/deletionLink", ""};
420 
422  BoolSetting betaUpdates = {"/misc/beta", false};
423 #ifdef Q_OS_LINUX
424  BoolSetting useKeyring = {"/misc/useKeyring", true};
425 #endif
426  BoolSetting enableExperimentalIrc = {"/misc/experimentalIrc", false};
427 
428  IntSetting startUpNotification = {"/misc/startUpNotification", 0};
429  QStringSetting currentVersion = {"/misc/currentVersion", ""};
430 
431  BoolSetting loadTwitchMessageHistoryOnConnect = {
432  "/misc/twitch/loadMessageHistoryOnConnect", true};
433  IntSetting twitchMessageHistoryLimit = {
434  "/misc/twitch/messageHistoryLimit",
435  800,
436  };
437  IntSetting scrollbackSplitLimit = {
438  "/misc/scrollback/splitLimit",
439  1000,
440  };
441  IntSetting scrollbackUsercardLimit = {
442  "/misc/scrollback/usercardLimit",
443  1000,
444  };
445 
446  // Temporary time-gate-overrides
448  "/misc/twitch/helix-timegate/raid",
450  };
451  EnumSetting<HelixTimegateOverride> helixTimegateWhisper = {
452  "/misc/twitch/helix-timegate/whisper",
454  };
456  "/misc/twitch/helix-timegate/vips",
458  };
459  EnumSetting<HelixTimegateOverride> helixTimegateModerators = {
460  "/misc/twitch/helix-timegate/moderators",
462  };
463 
464  EnumSetting<HelixTimegateOverride> helixTimegateCommercial = {
465  "/misc/twitch/helix-timegate/commercial",
467  };
468 
469  IntSetting emotesTooltipPreview = {"/misc/emotesTooltipPreview", 1};
470  BoolSetting openLinksIncognito = {"/misc/openLinksIncognito", 0};
471 
472  QStringSetting cachePath = {"/cache/path", ""};
473  BoolSetting restartOnCrash = {"/misc/restartOnCrash", false};
474  BoolSetting attachExtensionToAnyProcess = {
475  "/misc/attachExtensionToAnyProcess", false};
476  BoolSetting askOnImageUpload = {"/misc/askOnImageUpload", true};
477  BoolSetting informOnTabVisibilityToggle = {"/misc/askOnTabVisibilityToggle",
478  true};
479  BoolSetting lockNotebookLayout = {"/misc/lockNotebookLayout", false};
480 
482  BoolSetting showUnhandledIrcMessages = {"/debug/showUnhandledIrcMessages",
483  false};
484 
486  // Purely QOL settings are here (like last item in a list).
487  IntSetting lastSelectChannelTab = {"/ui/lastSelectChannelTab", 0};
488  IntSetting lastSelectIrcConn = {"/ui/lastSelectIrcConn", 0};
489 
490  // Similarity
491  BoolSetting similarityEnabled = {"/similarity/similarityEnabled", false};
492  BoolSetting colorSimilarDisabled = {"/similarity/colorSimilarDisabled",
493  true};
494  BoolSetting hideSimilar = {"/similarity/hideSimilar", false};
495  BoolSetting hideSimilarBySameUser = {"/similarity/hideSimilarBySameUser",
496  true};
497  BoolSetting hideSimilarMyself = {"/similarity/hideSimilarMyself", false};
498  BoolSetting shownSimilarTriggerHighlights = {
499  "/similarity/shownSimilarTriggerHighlights", false};
500  FloatSetting similarityPercentage = {"/similarity/similarityPercentage",
501  0.9f};
502  IntSetting hideSimilarMaxDelay = {"/similarity/hideSimilarMaxDelay", 5};
503  IntSetting hideSimilarMaxMessagesToCheck = {
504  "/similarity/hideSimilarMaxMessagesToCheck", 3};
505 
507 
509  "/timeouts/timeoutButtons",
510  {{"s", 1},
511  {"s", 30},
512  {"m", 1},
513  {"m", 5},
514  {"m", 30},
515  {"h", 1},
516  {"d", 1},
517  {"w", 1}}};
518 
519 private:
520  void updateModerationActions();
521 };
522 
523 } // namespace chatterino
524 
525 #ifdef CHATTERINO
526 # include "singletons/Settings.hpp"
527 #endif
Definition: Settings.hpp:59
Definition: Settings.hpp:58
SignalVector< IgnorePhrase > & ignoredMessages
Definition: Settings.hpp:39
SignalVector< ModerationAction > & moderationActions
Definition: Settings.hpp:43
SignalVector< QString > & mutedChannels
Definition: Settings.hpp:40
Definition: Settings.hpp:73
bool isHighlightedUser(const QString &username)
Definition: Settings.cpp:41
Definition: Application.cpp:48
Definition: SplitInput.hpp:29
HelixTimegateOverride
Definition: Settings.hpp:63
Definition: Settings.hpp:70
Definition: StreamerMode.hpp:10
SignalVector< HighlightBlacklistUser > & blacklistedUsers
Definition: Settings.hpp:38
SignalVector< FilterRecordPtr > & filterRecords
Definition: Settings.hpp:41
bool toggleMutedChannel(const QString &channelName)
Definition: Settings.cpp:99
Definition: Settings.hpp:60
Settings which are available for reading on all threads.
Definition: Settings.hpp:30
bool isMutedChannel(const QString &channelName)
Definition: Settings.cpp:67
Settings which are availlable for reading and writing on the gui thread.
Definition: Settings.hpp:78
SignalVector< HighlightBadge > & highlightedBadges
Definition: Settings.hpp:37
SignalVector< HighlightPhrase > & highlightedMessages
Definition: Settings.hpp:35
SignalVector< Nickname > & nicknames
Definition: Settings.hpp:42
bool isBlacklistedUser(const QString &username)
Definition: Settings.cpp:54
ConcurrentSettings()
Definition: Settings.cpp:17
std::pair< QString, int > TimeoutButton
Definition: Settings.hpp:19
Definition: Notebook.hpp:20
SignalVector< HighlightPhrase > & highlightedUsers
Definition: Settings.hpp:36
UsernameDisplayMode
Definition: Settings.hpp:57
ConcurrentSettings & getCSettings()
Definition: Settings.cpp:113
Definition: Settings.hpp:67