Mercurial > minori
diff src/core/config.cc @ 90:c4bb49c2f6eb
config: improve handling of vars
: )
author | Paper <mrpapersonic@gmail.com> |
---|---|
date | Tue, 31 Oct 2023 23:41:53 -0400 |
parents | 9b2b41f83a5e |
children | c537996cf67b |
line wrap: on
line diff
--- a/src/core/config.cc Tue Oct 31 23:06:33 2023 -0400 +++ b/src/core/config.cc Tue Oct 31 23:41:53 2023 -0400 @@ -6,67 +6,30 @@ #include "core/anime.h" #include "core/filesystem.h" #include "core/json.h" +#include "gui/translate/anime.h" +#include "gui/translate/config.h" #include <cstdlib> #include <cstring> #include <filesystem> #include <fstream> #include <limits.h> -std::map<std::string, Themes> StringToTheme = { - {"Default", Themes::OS }, - {"Light", Themes::LIGHT}, - {"Dark", Themes::DARK } -}; - -std::map<Themes, std::string> ThemeToString = { - {Themes::OS, "Default"}, - {Themes::LIGHT, "Light" }, - {Themes::DARK, "Dark" } -}; - -std::map<Anime::Services, std::string> ServiceToString{ - {Anime::Services::NONE, "None" }, - {Anime::Services::ANILIST, "AniList"} -}; - -std::map<std::string, Anime::Services> StringToService{ - {"None", Anime::Services::NONE }, - {"AniList", Anime::Services::ANILIST} -}; - -std::map<Anime::TitleLanguage, std::string> AnimeTitleToStringMap = { - {Anime::TitleLanguage::ROMAJI, "Romaji" }, - {Anime::TitleLanguage::NATIVE, "Native" }, - {Anime::TitleLanguage::ENGLISH, "English"} -}; - -std::map<std::string, Anime::TitleLanguage> StringToAnimeTitleMap = { - {"Romaji", Anime::TitleLanguage::ROMAJI }, - {"Native", Anime::TitleLanguage::NATIVE }, - {"English", Anime::TitleLanguage::ENGLISH} -}; - int Config::Load() { Filesystem::Path cfg_path = Filesystem::GetConfigPath(); if (!cfg_path.Exists()) return 0; std::ifstream config(cfg_path.GetPath(), std::ifstream::in); auto config_js = nlohmann::json::parse(config); - service = StringToService[JSON::GetString(config_js, "/General/Service"_json_pointer)]; - anime_list.language = - StringToAnimeTitleMap[JSON::GetString(config_js, "/Anime List/Title language"_json_pointer, "Romaji")]; - anime_list.display_aired_episodes = - JSON::GetBoolean(config_js, "/Anime List/Display only aired episodes"_json_pointer, true); - anime_list.display_available_episodes = - JSON::GetBoolean(config_js, "/Anime List/Display only available episodes in library"_json_pointer, true); - anime_list.highlight_anime_if_available = - JSON::GetBoolean(config_js, "/Anime List/Highlight anime if available"_json_pointer, true); - anime_list.highlighted_anime_above_others = - JSON::GetBoolean(config_js, "/Anime List/Display highlighted anime above others"_json_pointer); + service = Translate::ToService(JSON::GetString(config_js, "/General/Service"_json_pointer, "None")); + anime_list.language = Translate::ToLanguage(JSON::GetString(config_js, "/Anime List/Title language"_json_pointer, "Romaji")); + anime_list.display_aired_episodes = JSON::GetBoolean(config_js, "/Anime List/Display only aired episodes"_json_pointer, true); + anime_list.display_available_episodes = JSON::GetBoolean(config_js, "/Anime List/Display only available episodes in library"_json_pointer, true); + anime_list.highlight_anime_if_available = JSON::GetBoolean(config_js, "/Anime List/Highlight anime if available"_json_pointer, true); + anime_list.highlighted_anime_above_others = JSON::GetBoolean(config_js, "/Anime List/Display highlighted anime above others"_json_pointer); anilist.auth_token = JSON::GetString(config_js, "/Authorization/AniList/Auth Token"_json_pointer); anilist.username = JSON::GetString(config_js, "/Authorization/AniList/Username"_json_pointer); anilist.user_id = JSON::GetInt(config_js, "/Authorization/AniList/User ID"_json_pointer); - theme = StringToTheme[JSON::GetString(config_js, "/Appearance/Theme"_json_pointer)]; + theme = Translate::ToTheme(JSON::GetString(config_js, "/Appearance/Theme"_json_pointer, "Default")); config.close(); return 0; } @@ -79,10 +42,10 @@ /* clang-format off */ nlohmann::json config_js = { {"General", { - {"Service", ServiceToString[service]} + {"Service", Translate::ToString(service)} }}, {"Anime List", { - {"Title language", AnimeTitleToStringMap[anime_list.language]}, + {"Title language", Translate::ToString(anime_list.language)}, {"Display only aired episodes", anime_list.display_aired_episodes}, {"Display only available episodes in library", anime_list.display_available_episodes}, {"Highlight anime if available", anime_list.highlight_anime_if_available}, @@ -96,7 +59,7 @@ }} }}, {"Appearance", { - {"Theme", ThemeToString[theme]} + {"Theme", Translate::ToString(theme)} }} }; /* clang-format on */