comparison src/core/config.cc @ 116:254b1d2b7096

settings: add torrents page, make rss feed configurable
author Paper <mrpapersonic@gmail.com>
date Tue, 07 Nov 2023 13:52:13 -0500
parents 2004b41d4a59
children 39521c47c7a3
comparison
equal deleted inserted replaced
115:c72b907b9bef 116:254b1d2b7096
15 #include <cstring> 15 #include <cstring>
16 #include <filesystem> 16 #include <filesystem>
17 #include <fstream> 17 #include <fstream>
18 #include <limits.h> 18 #include <limits.h>
19 19
20 /* Move these to strings.cc or the translation stuff, please. */
21 static bool string_to_bool(const std::string& s, bool def = false) {
22 if (s.length() < 4)
23 return def;
24 std::string l = Strings::ToLower(s);
25 if (Strings::BeginningMatchesSubstring(l, "true"))
26 return true;
27 else if (Strings::BeginningMatchesSubstring(l, "false"))
28 return false;
29 return def;
30 }
31
32 static std::string bool_to_string(bool b) {
33 return b ? "true" : "false";
34 }
35
36 int Config::Load() { 20 int Config::Load() {
37 Filesystem::Path cfg_path = Filesystem::GetConfigPath(); 21 Filesystem::Path cfg_path = Filesystem::GetConfigPath();
38 22
39 mINI::INIFile file(cfg_path.GetPath()); 23 mINI::INIFile file(cfg_path.GetPath());
40 mINI::INIStructure ini; 24 mINI::INIStructure ini;
41 file.read(ini); 25 file.read(ini);
42 26
43 service = Translate::ToService(ini.get("General").get("Service")); 27 service = Translate::ToService(INI::GetIniString(ini, "General", "Service", "None"));
44 locale.SetActiveLocale(QLocale(Strings::ToQString(ini.get("General").get("Locale")))); 28 /* ew */
45 anime_list.language = Translate::ToLanguage(ini.get("Anime List").get("Title language")); 29 locale.SetActiveLocale(QLocale(Strings::ToQString(INI::GetIniString(ini, "General", "Locale", "en_US"))));
46 anime_list.display_aired_episodes = string_to_bool(ini.get("Anime List").get("Display only aired episodes"), true); 30
47 anime_list.display_available_episodes = string_to_bool(ini.get("Anime List").get("Display only available episodes in library"), true); 31 anime_list.language = Translate::ToLanguage(INI::GetIniString(ini, "Anime List", "Title language", "Romaji"));
48 anime_list.highlight_anime_if_available = string_to_bool(ini.get("Anime List").get("Highlight anime if available"), true); 32 anime_list.display_aired_episodes = Strings::ToBool(INI::GetIniString(ini, "Anime List", "Display only aired episodes", ""), true);
49 anime_list.highlighted_anime_above_others = string_to_bool(ini.get("Anime List").get("Display highlighted anime above others")); 33 anime_list.display_available_episodes = Strings::ToBool(INI::GetIniString(ini, "Anime List", "Display only available episodes in library", ""), true);
50 anilist.auth_token = ini.get("AniList").get("Auth Token"); 34 anime_list.highlight_anime_if_available = Strings::ToBool(INI::GetIniString(ini, "Anime List", "Highlight anime if available", ""), true);
51 anilist.user_id = Strings::ToInt(ini.get("AniList").get("User ID")); 35 anime_list.highlighted_anime_above_others = Strings::ToBool(INI::GetIniString(ini, "Anime List", "Display highlighted anime above others", ""), false);
52 theme.SetTheme(Translate::ToTheme(ini.get("Appearance").get("Theme"))); 36
37 anilist.auth_token = INI::GetIniString(ini, "AniList", "Auth Token", "");
38 anilist.user_id = Strings::ToInt(INI::GetIniString(ini, "AniList", "User ID", ""), 0);
39
40 torrents.feed_link = INI::GetIniString(ini, "Torrents", "RSS Feed Link", "https://www.tokyotosho.info/rss.php?filter=1,11&zwnj=0");
41
42 theme.SetTheme(Translate::ToTheme(INI::GetIniString(ini, "Appearance", "Theme", "Default")));
53 43
54 return 0; 44 return 0;
55 } 45 }
56 46
57 int Config::Save() { 47 int Config::Save() {
63 mINI::INIStructure ini; 53 mINI::INIStructure ini;
64 54
65 ini["General"]["Service"] = Translate::ToString(service); 55 ini["General"]["Service"] = Translate::ToString(service);
66 ini["General"]["Locale"] = Strings::ToUtf8String(locale.GetLocale().name()); 56 ini["General"]["Locale"] = Strings::ToUtf8String(locale.GetLocale().name());
67 ini["Anime List"]["Title language"] = Translate::ToString(anime_list.language); 57 ini["Anime List"]["Title language"] = Translate::ToString(anime_list.language);
68 ini["Anime List"]["Display only aired episodes"] = bool_to_string(anime_list.display_aired_episodes); 58 ini["Anime List"]["Display only aired episodes"] = Strings::ToUtf8String(anime_list.display_aired_episodes);
69 ini["Anime List"]["Display only available episodes in library"] = bool_to_string(anime_list.display_available_episodes); 59 ini["Anime List"]["Display only available episodes in library"] = Strings::ToUtf8String(anime_list.display_available_episodes);
70 ini["Anime List"]["Highlight anime if available"] = bool_to_string(anime_list.highlight_anime_if_available); 60 ini["Anime List"]["Highlight anime if available"] = Strings::ToUtf8String(anime_list.highlight_anime_if_available);
71 ini["Anime List"]["Display highlighted anime above others"] = bool_to_string(anime_list.highlighted_anime_above_others); 61 ini["Anime List"]["Display highlighted anime above others"] = Strings::ToUtf8String(anime_list.highlighted_anime_above_others);
72 ini["AniList"]["Auth Token"] = anilist.auth_token; 62 ini["AniList"]["Auth Token"] = anilist.auth_token;
73 ini["AniList"]["User ID"] = std::to_string(anilist.user_id); 63 ini["AniList"]["User ID"] = std::to_string(anilist.user_id);
74 ini["Appearance"]["Theme"] = Translate::ToString(theme.GetTheme()); 64 ini["Appearance"]["Theme"] = Translate::ToString(theme.GetTheme());
65 ini["Torrents"]["RSS Feed Link"] = torrents.feed_link;
75 66
76 file.write(ini); 67 file.write(ini);
77 68
78 return 0; 69 return 0;
79 } 70 }