From a51a54bc5979a2491f152abc47ad54e6b63f27c8 Mon Sep 17 00:00:00 2001 From: Dylam De La Torre Date: Tue, 23 Nov 2021 05:21:56 +0100 Subject: Restructure source and resource files (#46) importantly, res is now res/res and css is now res/css --- src/settings.cpp | 115 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 115 insertions(+) create mode 100644 src/settings.cpp (limited to 'src/settings.cpp') diff --git a/src/settings.cpp b/src/settings.cpp new file mode 100644 index 0000000..0a7dbb7 --- /dev/null +++ b/src/settings.cpp @@ -0,0 +1,115 @@ +#include "settings.hpp" +#include +#include + +SettingsManager::SettingsManager(std::string filename) + : m_filename(filename) { + if (!std::filesystem::exists(filename)) { + std::fstream fs; + fs.open(filename, std::ios::out); + fs.close(); + } + + auto rc = m_ini.LoadFile(filename.c_str()); + m_ok = rc == SI_OK; +} + +void SettingsManager::Reload() { + m_ok = m_ini.LoadFile(m_filename.c_str()) == SI_OK; +} + +std::string SettingsManager::GetSettingString(const std::string §ion, const std::string &key, std::string fallback) const { + return m_ini.GetValue(section.c_str(), key.c_str(), fallback.c_str()); +} + +int SettingsManager::GetSettingInt(const std::string §ion, const std::string &key, int fallback) const { + return std::stoul(GetSettingString(section, key, std::to_string(fallback))); +} + +bool SettingsManager::GetSettingBool(const std::string §ion, const std::string &key, bool fallback) const { + return GetSettingString(section, key, fallback ? "true" : "false") != "false"; +} + +bool SettingsManager::IsValid() const { + return m_ok; +} + +void SettingsManager::Close() { + m_ini.SaveFile(m_filename.c_str()); +} + +bool SettingsManager::GetUseMemoryDB() const { + return GetSettingBool("discord", "memory_db", false); +} + +std::string SettingsManager::GetUserAgent() const { + return GetSettingString("http", "user_agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.87 Safari/537.36"); +} + +std::string SettingsManager::GetDiscordToken() const { + return GetSettingString("discord", "token"); +} + +bool SettingsManager::GetShowMemberListDiscriminators() const { + return GetSettingBool("gui", "member_list_discriminator", true); +} + +bool SettingsManager::GetShowStockEmojis() const { +#ifdef _WIN32 + return GetSettingBool("gui", "stock_emojis", false); +#else + return GetSettingBool("gui", "stock_emojis", true); +#endif +} + +bool SettingsManager::GetShowCustomEmojis() const { + return GetSettingBool("gui", "custom_emojis", true); +} + +std::string SettingsManager::GetLinkColor() const { + return GetSettingString("style", "linkcolor", "rgba(40, 200, 180, 255)"); +} + +std::string SettingsManager::GetChannelsExpanderColor() const { + return GetSettingString("style", "expandercolor", "rgba(255, 83, 112, 255)"); +} + +std::string SettingsManager::GetNSFWChannelColor() const { + return GetSettingString("style", "nsfwchannelcolor", "#ed6666"); +} + +int SettingsManager::GetCacheHTTPConcurrency() const { + return GetSettingInt("http", "concurrent", 20); +} + +bool SettingsManager::GetPrefetch() const { + return GetSettingBool("discord", "prefetch", false); +} + +std::string SettingsManager::GetMainCSS() const { + return GetSettingString("gui", "css", "main.css"); +} + +bool SettingsManager::GetShowAnimations() const { + return GetSettingBool("gui", "animations", true); +} + +bool SettingsManager::GetShowOwnerCrown() const { + return GetSettingBool("gui", "owner_crown", true); +} + +std::string SettingsManager::GetGatewayURL() const { + return GetSettingString("discord", "gateway", "wss://gateway.discord.gg/?v=9&encoding=json&compress=zlib-stream"); +} + +std::string SettingsManager::GetAPIBaseURL() const { + return GetSettingString("discord", "api_base", "https://discord.com/api/v9"); +} + +bool SettingsManager::GetAnimatedGuildHoverOnly() const { + return GetSettingBool("gui", "animated_guild_hover_only", true); +} + +bool SettingsManager::GetSaveState() const { + return GetSettingBool("gui", "save_state", true); +} -- cgit v1.2.3