mirror-chatterino2/src/settingsmanager.hpp

89 lines
2.3 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>
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
2017-01-20 06:10:28 +01:00
public:
2017-05-27 16:16:39 +02:00
void load();
void save();
messages::Word::Type getWordTypeMask();
bool isIgnoredEmote(const QString &emote);
QSettings &getQSettings();
SettingsSnapshot createSnapshot();
signals:
void wordTypeMaskChanged();
private:
SettingsManager();
// variables
QSettings _settings;
std::vector<std::reference_wrapper<BaseSetting>> _settingsItems;
messages::Word::Type _wordTypeMask = messages::Word::Default;
// methods
2017-07-31 00:57:42 +02:00
public: // temporary
2017-05-27 16:16:39 +02:00
void updateWordTypeMask();
public:
// new pajlada settings BBaper
pajlada::Settings::Setting<bool> showTimestamps;
pajlada::Settings::Setting<bool> showTimestampSeconds;
pajlada::Settings::Setting<bool> showBadges;
pajlada::Settings::Setting<std::string> streamlinkPath;
2017-05-27 16:16:39 +02:00
// Settings
Setting<float> emoteScale;
2017-01-26 04:26:40 +01:00
Setting<float> mouseScrollMultiplier;
Setting<bool> scaleEmotesByLineHeight;
Setting<bool> showLastMessageIndicator;
Setting<bool> allowDouplicateMessages;
Setting<bool> linksDoubleClickOnly;
Setting<bool> hideEmptyInput;
Setting<bool> showMessageLength;
Setting<bool> seperateMessages;
Setting<bool> mentionUsersWithAt;
Setting<bool> allowCommandsAtEnd;
Setting<bool> enableHighlights;
Setting<bool> enableHighlightsSelf;
Setting<bool> enableHighlightSound;
Setting<bool> enableHighlightTaskbar;
Setting<bool> customHighlightSound;
Setting<QString> pathHighlightSound;
2017-07-31 00:57:42 +02:00
Setting<QMap<QString, QPair<bool, bool>>> highlightProperties;
Setting<bool> enableTwitchEmotes;
Setting<bool> enableBttvEmotes;
Setting<bool> enableFfzEmotes;
Setting<bool> enableEmojis;
Setting<bool> enableGifAnimations;
Setting<bool> enableGifs;
Setting<bool> inlineWhispers;
Setting<bool> windowTopMost;
Setting<bool> hideTabX;
2017-02-02 02:46:33 +01:00
Setting<bool> hidePreferencesButton;
Setting<bool> hideUserButton;
2017-04-12 17:46:44 +02:00
Setting<bool> useCustomWindowFrame;
public:
static SettingsManager &getInstance()
{
static SettingsManager instance;
2017-04-12 17:46:44 +02:00
return instance;
}
2017-01-05 20:49:13 +01:00
};
2017-04-14 17:52:22 +02:00
} // namespace chatterino