comparison src/config.cpp @ 7:07a9095eaeed

Update Refactored some code, moved some around
author Paper <mrpapersonic@gmail.com>
date Thu, 24 Aug 2023 23:11:38 -0400
parents 1d82f6e04d7d
children
comparison
equal deleted inserted replaced
6:1d82f6e04d7d 7:07a9095eaeed
39 std::map<std::string, enum AnimeListServices> StringToService { 39 std::map<std::string, enum AnimeListServices> StringToService {
40 {"None", NONE}, 40 {"None", NONE},
41 {"AniList", ANILIST} 41 {"AniList", ANILIST}
42 }; 42 };
43 43
44 std::map<enum AnimeTitleLanguage, std::string> AnimeTitleToStringMap = {
45 {ROMAJI, "Romaji"},
46 {NATIVE, "Native"},
47 {ENGLISH, "English"}
48 };
49
50 std::map<std::string, enum AnimeTitleLanguage> StringToAnimeTitleMap = {
51 {"Romaji", ROMAJI},
52 {"Native", NATIVE},
53 {"English", ENGLISH}
54 };
55
44 int Config::Load() { 56 int Config::Load() {
45 std::filesystem::path cfg_path = get_config_path(); 57 std::filesystem::path cfg_path = get_config_path();
46 if (!std::filesystem::exists(cfg_path)) 58 if (!std::filesystem::exists(cfg_path))
47 return 0; 59 return 0;
48 std::ifstream config_in(cfg_path.string().c_str(), std::ifstream::in); 60 std::ifstream config_in(cfg_path.string().c_str(), std::ifstream::in);
49 auto config_js = nlohmann::json::parse(config_in); 61 auto config_js = nlohmann::json::parse(config_in);
50 service = StringToService[JSON::GetString(config_js, "/General/Service"_json_pointer)]; 62 service = StringToService[JSON::GetString(config_js, "/General/Service"_json_pointer)];
63 anime_list.language = StringToAnimeTitleMap[JSON::GetString(config_js, "/Anime List/Display only aired episodes"_json_pointer, "Romaji")];
64 anime_list.display_aired_episodes = JSON::GetBoolean(config_js, "/Anime List/Display only aired episodes"_json_pointer, true);
65 anime_list.display_available_episodes = JSON::GetBoolean(config_js, "/Anime List/Display only available episodes in library"_json_pointer, true);
66 anime_list.highlight_anime_if_available = JSON::GetBoolean(config_js, "/Anime List/Highlight anime if available"_json_pointer, true);
67 anime_list.highlighted_anime_above_others = JSON::GetBoolean(config_js, "/Anime List/Display highlighted anime above others"_json_pointer);
51 anilist.auth_token = JSON::GetString(config_js, "/Authorization/AniList/Auth Token"_json_pointer); 68 anilist.auth_token = JSON::GetString(config_js, "/Authorization/AniList/Auth Token"_json_pointer);
52 anilist.username = JSON::GetString(config_js, "/Authorization/AniList/Username"_json_pointer); 69 anilist.username = JSON::GetString(config_js, "/Authorization/AniList/Username"_json_pointer);
53 anilist.user_id = JSON::GetInt(config_js, "/Authorization/AniList/User ID"_json_pointer); 70 anilist.user_id = JSON::GetInt(config_js, "/Authorization/AniList/User ID"_json_pointer);
54 theme = StringToTheme[JSON::GetString(config_js, "/Appearance/Theme"_json_pointer)]; 71 theme = StringToTheme[JSON::GetString(config_js, "/Appearance/Theme"_json_pointer)];
55 config_in.close(); 72 config_in.close();
63 std::ofstream config_out(cfg_path.string().c_str(), std::ofstream::out | std::ofstream::trunc); 80 std::ofstream config_out(cfg_path.string().c_str(), std::ofstream::out | std::ofstream::trunc);
64 nlohmann::json config_js = { 81 nlohmann::json config_js = {
65 {"General", { 82 {"General", {
66 {"Service", ServiceToString[service]} 83 {"Service", ServiceToString[service]}
67 }}, 84 }},
85 {"Anime List", {
86 {"Title language", AnimeTitleToStringMap[anime_list.language]},
87 {"Display only aired episodes", anime_list.display_aired_episodes},
88 {"Display only available episodes in library", anime_list.display_available_episodes},
89 {"Highlight anime if available", anime_list.highlight_anime_if_available},
90 {"Display highlighted anime above others", anime_list.highlighted_anime_above_others}
91 }},
68 {"Authorization", { 92 {"Authorization", {
69 {"AniList", { 93 {"AniList", {
70 {"Auth Token", anilist.auth_token}, 94 {"Auth Token", anilist.auth_token},
71 {"Username", anilist.username}, 95 {"Username", anilist.username},
72 {"User ID", anilist.user_id} 96 {"User ID", anilist.user_id}