#include "frontend_settings.hpp" #include #include #include // Frontend setting serialization/deserialization functions FrontendSettings::Theme FrontendSettings::themeFromString(std::string inString) { // Transform to lower-case to make the setting case-insensitive std::transform(inString.begin(), inString.end(), inString.begin(), [](unsigned char c) { return std::tolower(c); }); static const std::unordered_map map = { {"system", Theme::System}, {"light", Theme::Light}, {"dark", Theme::Dark}, {"greetingscat", Theme::GreetingsCat}, {"cream", Theme::Cream}, {"oled", Theme::Oled} }; if (auto search = map.find(inString); search != map.end()) { return search->second; } // Default to dark theme return Theme::Dark; } const char* FrontendSettings::themeToString(Theme theme) { switch (theme) { case Theme::System: return "system"; case Theme::Light: return "light"; case Theme::GreetingsCat: return "greetingscat"; case Theme::Cream: return "cream"; case Theme::Oled: return "oled"; case Theme::Dark: default: return "dark"; } } FrontendSettings::WindowIcon FrontendSettings::iconFromString(std::string inString) { // Transform to lower-case to make the setting case-insensitive std::transform(inString.begin(), inString.end(), inString.begin(), [](unsigned char c) { return std::tolower(c); }); static const std::unordered_map map = { {"rpog", WindowIcon::Rpog}, {"rsyn", WindowIcon::Rsyn}, {"rcow", WindowIcon::Rcow}, {"rnap", WindowIcon::Rnap}, {"skyemu", WindowIcon::SkyEmu}, }; if (auto search = map.find(inString); search != map.end()) { return search->second; } // Default to the icon rpog icon return WindowIcon::Rpog; } const char* FrontendSettings::iconToString(WindowIcon icon) { switch (icon) { case WindowIcon::Rsyn: return "rsyn"; case WindowIcon::Rcow: return "rcow"; case WindowIcon::Rnap: return "rnap"; case WindowIcon::SkyEmu: return "skyemu"; case WindowIcon::Rpog: default: return "rpog"; } }