2017-06-07 10:09:24 +02:00
|
|
|
#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>
|
2017-06-11 20:53:43 +02:00
|
|
|
#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
|
|
|
|
void updateWordTypeMask();
|
|
|
|
|
|
|
|
public:
|
2017-06-11 20:53:43 +02:00
|
|
|
// new pajlada settings BBaper
|
|
|
|
pajlada::Settings::Setting<bool> showTimestamps;
|
|
|
|
pajlada::Settings::Setting<bool> showTimestampSeconds;
|
|
|
|
pajlada::Settings::Setting<bool> showBadges;
|
|
|
|
|
2017-05-27 16:16:39 +02:00
|
|
|
// Settings
|
2017-01-22 23:00:35 +01:00
|
|
|
Setting<QString> theme;
|
2017-02-02 01:23:26 +01:00
|
|
|
Setting<float> themeHue;
|
2017-01-24 19:51:57 +01:00
|
|
|
Setting<QString> selectedUser;
|
2017-01-22 23:00:35 +01:00
|
|
|
Setting<float> emoteScale;
|
2017-01-26 04:26:40 +01:00
|
|
|
Setting<float> mouseScrollMultiplier;
|
2017-01-22 23:00:35 +01:00
|
|
|
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> enableHighlightSound;
|
|
|
|
Setting<bool> enableHighlightTaskbar;
|
|
|
|
Setting<bool> customHighlightSound;
|
|
|
|
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()
|
|
|
|
{
|
2017-04-19 15:25:05 +02:00
|
|
|
static SettingsManager instance;
|
2017-04-12 17:46:44 +02:00
|
|
|
return instance;
|
|
|
|
}
|
2017-01-05 20:49:13 +01:00
|
|
|
};
|
2017-01-22 23:00:35 +01:00
|
|
|
|
2017-04-14 17:52:22 +02:00
|
|
|
} // namespace chatterino
|