mirror-chatterino2/src/settingsmanager.hpp

104 lines
3.9 KiB
C++
Raw Normal View History

#pragma once
2017-01-05 20:49:13 +01:00
2017-06-11 09:31:45 +02:00
#include "messages/word.hpp"
#include "setting.hpp"
#include "settingssnapshot.hpp"
2017-01-20 06:10:28 +01:00
#include <QSettings>
#include <pajlada/settings/setting.hpp>
#include <pajlada/settings/settinglistener.hpp>
2017-01-05 20:49:13 +01:00
2017-01-18 21:30:23 +01:00
namespace chatterino {
2017-04-12 17:46:44 +02:00
class SettingsManager : public QObject
2017-01-05 20:49:13 +01:00
{
2017-01-22 12:46:35 +01:00
Q_OBJECT
using BoolSetting = pajlada::Settings::Setting<bool>;
using FloatSetting = pajlada::Settings::Setting<float>;
2017-01-20 06:10:28 +01:00
public:
2017-05-27 16:16:39 +02:00
void load();
void save();
messages::Word::Flags getWordTypeMask();
2017-05-27 16:16:39 +02:00
bool isIgnoredEmote(const QString &emote);
QSettings &getQSettings();
SettingsSnapshot createSnapshot();
/// Appearance
BoolSetting showTimestamps = {"/appearance/messages/showTimestamps", true};
BoolSetting showTimestampSeconds = {"/appearance/messages/showTimestampSeconds", true};
BoolSetting showBadges = {"/appearance/messages/showBadges", true};
BoolSetting showLastMessageIndicator = {"/appearance/messages/showLastMessageIndicator", false};
BoolSetting hideEmptyInput = {"/appearance/hideEmptyInputBox", false};
BoolSetting showMessageLength = {"/appearance/messages/showMessageLength", false};
BoolSetting seperateMessages = {"/appearance/messages/separateMessages", false};
BoolSetting windowTopMost = {"/appearance/windowAlwaysOnTop", false};
BoolSetting hideTabX = {"/appearance/hideTabX", false};
BoolSetting hidePreferencesButton = {"/appearance/hidePreferencesButton", false};
BoolSetting hideUserButton = {"/appearance/hideUserButton", false};
BoolSetting enableSmoothScrolling = {"/appearance/smoothScrolling", true};
// BoolSetting useCustomWindowFrame = {"/appearance/useCustomWindowFrame", false};
/// Behaviour
2017-12-17 13:48:02 +01:00
BoolSetting allowDuplicateMessages = {"/behaviour/allowDuplicateMessages", true};
BoolSetting mentionUsersWithAt = {"/behaviour/mentionUsersWithAt", false};
FloatSetting mouseScrollMultiplier = {"/behaviour/mouseScrollMultiplier", 1.0};
/// Commands
BoolSetting allowCommandsAtEnd = {"/commands/allowCommandsAtEnd", false};
/// Emotes
BoolSetting scaleEmotesByLineHeight = {"/emotes/scaleEmotesByLineHeight", false};
BoolSetting enableTwitchEmotes = {"/emotes/enableTwitchEmotes", true};
BoolSetting enableBttvEmotes = {"/emotes/enableBTTVEmotes", true};
BoolSetting enableFfzEmotes = {"/emotes/enableFFZEmotes", true};
BoolSetting enableEmojis = {"/emotes/enableEmojis", true};
BoolSetting enableGifAnimations = {"/emotes/enableGifAnimations", true};
/// Links
BoolSetting linksDoubleClickOnly = {"/links/doubleClickToOpen", false};
/// Highlighting
BoolSetting enableHighlights = {"/highlighting/enabled", true};
BoolSetting enableHighlightsSelf = {"/highlighting/nameIsHighlightKeyword", true};
BoolSetting enableHighlightSound = {"/highlighting/enableSound", true};
BoolSetting enableHighlightTaskbar = {"/highlighting/enableTaskbarFlashing", true};
BoolSetting customHighlightSound = {"/highlighting/useCustomSound", false};
pajlada::Settings::Setting<std::string> streamlinkPath;
pajlada::Settings::Setting<std::string> preferredQuality;
Setting<float> emoteScale;
Setting<QString> pathHighlightSound;
2017-07-31 00:57:42 +02:00
Setting<QMap<QString, QPair<bool, bool>>> highlightProperties;
Setting<QString> highlightUserBlacklist;
BoolSetting highlightAlwaysPlaySound = {"/highlighting/alwaysPlaySound", false};
BoolSetting inlineWhispers = {"/whispers/enableInlineWhispers", true};
2017-04-12 17:46:44 +02:00
static SettingsManager &getInstance()
{
static SettingsManager instance;
2017-04-12 17:46:44 +02:00
return instance;
}
2017-09-21 12:15:01 +02:00
void updateWordTypeMask();
signals:
void wordTypeMaskChanged();
private:
SettingsManager();
QSettings settings;
std::vector<std::reference_wrapper<BaseSetting>> settingsItems;
messages::Word::Flags wordTypeMask = messages::Word::Default;
pajlada::Settings::SettingListener wordMaskListener;
2017-01-05 20:49:13 +01:00
};
2017-04-14 17:52:22 +02:00
} // namespace chatterino