mirror-chatterino2/settings.h

118 lines
2.3 KiB
C
Raw Normal View History

2017-01-05 20:49:13 +01:00
#ifndef APPSETTINGS_H
#define APPSETTINGS_H
2017-01-18 21:30:23 +01:00
#include "messages/word.h"
2017-01-23 16:38:06 +01:00
#include "setting.h"
2017-01-24 19:51:57 +01:00
#include "settingssnapshot.h"
2017-01-20 06:10:28 +01:00
#include <QSettings>
2017-01-05 20:49:13 +01:00
2017-01-18 21:30:23 +01:00
namespace chatterino {
2017-01-22 12:46:35 +01:00
class Settings : public QObject
2017-01-05 20:49:13 +01:00
{
2017-01-22 12:46:35 +01:00
Q_OBJECT
2017-01-05 20:49:13 +01:00
public:
2017-01-22 12:46:35 +01:00
static Settings &
getInstance()
{
return instance;
2017-01-22 12:46:35 +01:00
}
void load();
void save();
messages::Word::Type
2017-01-18 04:33:30 +01:00
getWordTypeMask()
2017-01-11 18:52:09 +01:00
{
2017-01-18 04:33:30 +01:00
return wordTypeMask;
2017-01-05 20:49:33 +01:00
}
2017-01-22 12:46:35 +01:00
bool isIgnoredEmote(const QString &emote);
2017-01-18 04:33:30 +01:00
2017-01-22 12:46:35 +01:00
bool
2017-01-20 06:10:28 +01:00
getPortable()
2017-01-11 18:52:09 +01:00
{
2017-01-20 06:10:28 +01:00
return portable;
2017-01-11 01:08:20 +01:00
}
2017-01-22 12:46:35 +01:00
void
2017-01-20 06:10:28 +01:00
setPortable(bool value)
2017-01-11 18:52:09 +01:00
{
2017-01-20 06:10:28 +01:00
portable = value;
2017-01-11 01:08:20 +01:00
}
2017-01-24 19:51:57 +01:00
QSettings &
getQSettings()
{
return settings;
}
SettingsSnapshot
createSnapshot()
{
SettingsSnapshot snapshot;
for (auto &item : this->settingsItems) {
snapshot.addItem(item, item.get().getVariant());
}
return snapshot;
}
2017-01-22 12:46:35 +01:00
signals:
void wordTypeMaskChanged();
2017-01-20 06:10:28 +01:00
private:
Settings();
static Settings instance;
2017-01-20 06:10:28 +01:00
void updateWordTypeMask();
2017-01-20 06:10:28 +01:00
2017-01-22 12:46:35 +01:00
QSettings settings;
std::vector<std::reference_wrapper<BaseSetting>> settingsItems;
2017-01-22 12:46:35 +01:00
bool portable;
2017-01-20 06:10:28 +01:00
2017-01-22 12:46:35 +01:00
messages::Word::Type wordTypeMask;
2017-01-20 06:10:28 +01:00
public:
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;
Setting<float> emoteScale;
2017-01-26 04:26:40 +01:00
Setting<float> mouseScrollMultiplier;
Setting<bool> scaleEmotesByLineHeight;
Setting<bool> showTimestamps;
Setting<bool> showTimestampSeconds;
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-01-05 20:49:13 +01:00
};
} // namespace chatterino
2017-01-05 20:49:13 +01:00
2017-01-11 18:52:09 +01:00
#endif // APPSETTINGS_H