Mercurial > minori
comparison src/gui/translate/anime.cc @ 202:71832ffe425a
animia: re-add kvm fd source
this is all being merged from my wildly out-of-date laptop. SORRY!
in other news, I edited the CI file to install the wayland client
as well, so the linux CI build might finally get wayland stuff.
author | Paper <paper@paper.us.eu.org> |
---|---|
date | Tue, 02 Jan 2024 06:05:06 -0500 |
parents | 9613d72b097e |
children | 862d0d8619f6 |
comparison
equal
deleted
inserted
replaced
201:8f6f8dd2eb23 | 202:71832ffe425a |
---|---|
1 #include "core/anime.h" | 1 #include "core/anime.h" |
2 #include "core/strings.h" | 2 #include "core/strings.h" |
3 #include "gui/translate/anime.h" | 3 #include "gui/translate/anime.h" |
4 | |
4 #include <QCoreApplication> | 5 #include <QCoreApplication> |
5 | 6 |
7 #include <unordered_map> | |
8 | |
6 namespace Translate { | 9 namespace Translate { |
7 | 10 |
8 std::string ToString(const Anime::ListStatus status) { | 11 std::string ToString(const Anime::ListStatus status) { |
12 switch (status) { | |
13 case Anime::ListStatus::CURRENT: return "Currently watching"; | |
14 case Anime::ListStatus::PLANNING: return "Plan to watch"; | |
15 case Anime::ListStatus::COMPLETED: return "Completed"; | |
16 case Anime::ListStatus::DROPPED: return "Dropped"; | |
17 case Anime::ListStatus::PAUSED: return "On hold"; | |
18 default: | |
19 case Anime::ListStatus::NOT_IN_LIST: return "Not in list"; | |
20 } | |
21 } | |
22 | |
23 std::string ToString(const Anime::SeriesFormat format) { | |
24 switch (format) { | |
25 case Anime::SeriesFormat::TV: return "TV"; | |
26 case Anime::SeriesFormat::TV_SHORT: return "TV short"; | |
27 case Anime::SeriesFormat::OVA: return "OVA"; | |
28 case Anime::SeriesFormat::MOVIE: return "Movie"; | |
29 case Anime::SeriesFormat::SPECIAL: return "Special"; | |
30 case Anime::SeriesFormat::ONA: return "ONA"; | |
31 case Anime::SeriesFormat::MUSIC: return "Music"; | |
32 default: | |
33 case Anime::SeriesFormat::UNKNOWN: return "Unknown"; | |
34 } | |
35 } | |
36 | |
37 std::string ToString(const Anime::SeriesSeason season) { | |
38 switch (season) { | |
39 case Anime::SeriesSeason::WINTER: return "Winter"; | |
40 case Anime::SeriesSeason::SUMMER: return "Summer"; | |
41 case Anime::SeriesSeason::FALL: return "Fall"; | |
42 case Anime::SeriesSeason::SPRING: return "Spring"; | |
43 default: | |
44 case Anime::SeriesSeason::UNKNOWN: return "Unknown"; | |
45 } | |
46 } | |
47 | |
48 std::string ToString(const Anime::SeriesStatus status) { | |
49 switch (status) { | |
50 case Anime::SeriesStatus::RELEASING: return "Currently airing"; | |
51 case Anime::SeriesStatus::FINISHED: return "Finished airing"; | |
52 case Anime::SeriesStatus::NOT_YET_RELEASED: return "Not yet aired"; | |
53 case Anime::SeriesStatus::CANCELLED: return "Cancelled"; | |
54 case Anime::SeriesStatus::HIATUS: return "On hiatus"; | |
55 default: | |
56 case Anime::SeriesStatus::UNKNOWN: return "Unknown"; | |
57 } | |
58 } | |
59 | |
60 std::string ToString(const Anime::Services service) { | |
61 switch (service) { | |
62 case Anime::Services::ANILIST: return "AniList"; | |
63 default: | |
64 case Anime::Services::NONE: return "None"; | |
65 } | |
66 } | |
67 | |
68 std::string ToString(const Anime::TitleLanguage language) { | |
69 switch (language) { | |
70 case Anime::TitleLanguage::NATIVE: return "Native"; | |
71 case Anime::TitleLanguage::ENGLISH: return "English"; | |
72 default: | |
73 case Anime::TitleLanguage::ROMAJI: return "Romaji"; | |
74 } | |
75 } | |
76 | |
77 std::string ToString(const Anime::ScoreFormat format) { | |
78 switch (format) { | |
79 case Anime::ScoreFormat::POINT_3: return "POINT_3"; | |
80 case Anime::ScoreFormat::POINT_5: return "POINT_5"; | |
81 case Anime::ScoreFormat::POINT_10: return "POINT_10"; | |
82 case Anime::ScoreFormat::POINT_10_DECIMAL: return "POINT_10_DECIMAL"; | |
83 default: | |
84 case Anime::ScoreFormat::POINT_100: return "POINT_100"; | |
85 } | |
86 } | |
87 | |
88 Anime::ListStatus ToListStatus(const std::string& str) { | |
89 static const std::unordered_map<std::string, Anime::ListStatus> map = { | |
90 {"Currently watching", Anime::ListStatus::CURRENT}, | |
91 {"Plan to watch", Anime::ListStatus::PLANNING}, | |
92 {"Completed", Anime::ListStatus::COMPLETED}, | |
93 {"Dropped", Anime::ListStatus::DROPPED}, | |
94 {"On hold", Anime::ListStatus::PAUSED} | |
95 }; | |
96 | |
97 if (map.find(str) == map.end()) | |
98 return Anime::ListStatus::NOT_IN_LIST; | |
99 return map.at(str); | |
100 } | |
101 | |
102 Anime::SeriesStatus ToSeriesStatus(const std::string& str) { | |
103 static const std::unordered_map<std::string, Anime::SeriesStatus> map = { | |
104 {"Currently airing", Anime::SeriesStatus::RELEASING}, | |
105 {"Finished airing", Anime::SeriesStatus::FINISHED}, | |
106 {"Not yet aired", Anime::SeriesStatus::NOT_YET_RELEASED}, | |
107 {"Cancelled", Anime::SeriesStatus::CANCELLED}, | |
108 {"On hiatus", Anime::SeriesStatus::HIATUS} | |
109 }; | |
110 | |
111 if (map.find(str) == map.end()) | |
112 return Anime::SeriesStatus::UNKNOWN; | |
113 return map.at(str); | |
114 } | |
115 | |
116 Anime::SeriesSeason ToSeriesSeason(const std::string& str) { | |
117 static const std::unordered_map<std::string, Anime::SeriesSeason> map = { | |
118 {"Winter", Anime::SeriesSeason::WINTER}, | |
119 {"Summer", Anime::SeriesSeason::SUMMER}, | |
120 {"Fall", Anime::SeriesSeason::FALL}, | |
121 {"Spring", Anime::SeriesSeason::SPRING} | |
122 }; | |
123 | |
124 if (map.find(str) == map.end()) | |
125 return Anime::SeriesSeason::UNKNOWN; | |
126 return map.at(str); | |
127 } | |
128 | |
129 Anime::SeriesFormat ToSeriesFormat(const std::string& str) { | |
130 static const std::unordered_map<std::string, Anime::SeriesFormat> map = { | |
131 {"TV", Anime::SeriesFormat::TV}, | |
132 {"TV short", Anime::SeriesFormat::TV_SHORT}, | |
133 {"OVA", Anime::SeriesFormat::OVA}, | |
134 {"Movie", Anime::SeriesFormat::MOVIE}, | |
135 {"Special", Anime::SeriesFormat::SPECIAL}, | |
136 {"ONA", Anime::SeriesFormat::ONA}, | |
137 {"Music", Anime::SeriesFormat::MUSIC} | |
138 }; | |
139 | |
140 if (map.find(str) == map.end()) | |
141 return Anime::SeriesFormat::UNKNOWN; | |
142 return map.at(str); | |
143 } | |
144 | |
145 Anime::Services ToService(const std::string& str) { | |
146 static const std::unordered_map<std::string, Anime::Services> map = { | |
147 {"AniList", Anime::Services::ANILIST} | |
148 }; | |
149 | |
150 if (map.find(str) == map.end()) | |
151 return Anime::Services::NONE; | |
152 return map.at(str); | |
153 } | |
154 | |
155 Anime::TitleLanguage ToLanguage(const std::string& str) { | |
156 static const std::unordered_map<std::string, Anime::TitleLanguage> map = { | |
157 {"Romaji", Anime::TitleLanguage::ROMAJI}, | |
158 {"Native", Anime::TitleLanguage::NATIVE}, | |
159 {"English", Anime::TitleLanguage::ENGLISH} | |
160 }; | |
161 | |
162 if (map.find(str) == map.end()) | |
163 return Anime::TitleLanguage::ROMAJI; | |
164 return map.at(str); | |
165 } | |
166 | |
167 Anime::ScoreFormat ToScoreFormat(const std::string& str) { | |
168 static const std::unordered_map<std::string, Anime::ScoreFormat> map = { | |
169 {"POINT_3", Anime::ScoreFormat::POINT_3}, | |
170 {"POINT_5", Anime::ScoreFormat::POINT_5}, | |
171 {"POINT_10", Anime::ScoreFormat::POINT_10}, | |
172 {"POINT_10_DECIMAL", Anime::ScoreFormat::POINT_10_DECIMAL}, | |
173 {"POINT_100", Anime::ScoreFormat::POINT_100} | |
174 }; | |
175 | |
176 if (map.find(str) == map.end()) | |
177 return Anime::ScoreFormat::POINT_100; | |
178 return map.at(str); | |
179 } | |
180 | |
181 /* Localized versions of ToString() functions. Meant for display to the user. */ | |
182 | |
183 std::string ToLocalString(const Anime::ListStatus status) { | |
9 switch (status) { | 184 switch (status) { |
10 case Anime::ListStatus::CURRENT: return Strings::ToUtf8String(QCoreApplication::tr("Currently watching")); | 185 case Anime::ListStatus::CURRENT: return Strings::ToUtf8String(QCoreApplication::tr("Currently watching")); |
11 case Anime::ListStatus::PLANNING: return Strings::ToUtf8String(QCoreApplication::tr("Plan to watch")); | 186 case Anime::ListStatus::PLANNING: return Strings::ToUtf8String(QCoreApplication::tr("Plan to watch")); |
12 case Anime::ListStatus::COMPLETED: return Strings::ToUtf8String(QCoreApplication::tr("Completed")); | 187 case Anime::ListStatus::COMPLETED: return Strings::ToUtf8String(QCoreApplication::tr("Completed")); |
13 case Anime::ListStatus::DROPPED: return Strings::ToUtf8String(QCoreApplication::tr("Dropped")); | 188 case Anime::ListStatus::DROPPED: return Strings::ToUtf8String(QCoreApplication::tr("Dropped")); |
15 default: | 190 default: |
16 case Anime::ListStatus::NOT_IN_LIST: return Strings::ToUtf8String(QCoreApplication::tr("Not in list")); | 191 case Anime::ListStatus::NOT_IN_LIST: return Strings::ToUtf8String(QCoreApplication::tr("Not in list")); |
17 } | 192 } |
18 } | 193 } |
19 | 194 |
20 std::string ToString(const Anime::SeriesFormat format) { | 195 std::string ToLocalString(const Anime::SeriesFormat format) { |
21 switch (format) { | 196 switch (format) { |
22 case Anime::SeriesFormat::TV: return Strings::ToUtf8String(QCoreApplication::tr("TV")); | 197 case Anime::SeriesFormat::TV: return Strings::ToUtf8String(QCoreApplication::tr("TV")); |
23 case Anime::SeriesFormat::TV_SHORT: return Strings::ToUtf8String(QCoreApplication::tr("TV short")); | 198 case Anime::SeriesFormat::TV_SHORT: return Strings::ToUtf8String(QCoreApplication::tr("TV short")); |
24 case Anime::SeriesFormat::OVA: return Strings::ToUtf8String(QCoreApplication::tr("OVA")); | 199 case Anime::SeriesFormat::OVA: return Strings::ToUtf8String(QCoreApplication::tr("OVA")); |
25 case Anime::SeriesFormat::MOVIE: return Strings::ToUtf8String(QCoreApplication::tr("Movie")); | 200 case Anime::SeriesFormat::MOVIE: return Strings::ToUtf8String(QCoreApplication::tr("Movie")); |
29 default: | 204 default: |
30 case Anime::SeriesFormat::UNKNOWN: return Strings::ToUtf8String(QCoreApplication::tr("Unknown")); | 205 case Anime::SeriesFormat::UNKNOWN: return Strings::ToUtf8String(QCoreApplication::tr("Unknown")); |
31 } | 206 } |
32 } | 207 } |
33 | 208 |
34 std::string ToString(const Anime::SeriesSeason season) { | 209 std::string ToLocalString(const Anime::SeriesSeason season) { |
35 switch (season) { | 210 switch (season) { |
36 case Anime::SeriesSeason::WINTER: return Strings::ToUtf8String(QCoreApplication::tr("Winter")); | 211 case Anime::SeriesSeason::WINTER: return Strings::ToUtf8String(QCoreApplication::tr("Winter")); |
37 case Anime::SeriesSeason::SUMMER: return Strings::ToUtf8String(QCoreApplication::tr("Summer")); | 212 case Anime::SeriesSeason::SUMMER: return Strings::ToUtf8String(QCoreApplication::tr("Summer")); |
38 case Anime::SeriesSeason::FALL: return Strings::ToUtf8String(QCoreApplication::tr("Fall")); | 213 case Anime::SeriesSeason::FALL: return Strings::ToUtf8String(QCoreApplication::tr("Fall")); |
39 case Anime::SeriesSeason::SPRING: return Strings::ToUtf8String(QCoreApplication::tr("Spring")); | 214 case Anime::SeriesSeason::SPRING: return Strings::ToUtf8String(QCoreApplication::tr("Spring")); |
40 default: | 215 default: |
41 case Anime::SeriesSeason::UNKNOWN: return Strings::ToUtf8String(QCoreApplication::tr("Unknown")); | 216 case Anime::SeriesSeason::UNKNOWN: return Strings::ToUtf8String(QCoreApplication::tr("Unknown")); |
42 } | 217 } |
43 } | 218 } |
44 | 219 |
45 std::string ToString(const Anime::SeriesStatus status) { | 220 std::string ToLocalString(const Anime::SeriesStatus status) { |
46 switch (status) { | 221 switch (status) { |
47 case Anime::SeriesStatus::RELEASING: return Strings::ToUtf8String(QCoreApplication::tr("Currently airing")); | 222 case Anime::SeriesStatus::RELEASING: return Strings::ToUtf8String(QCoreApplication::tr("Currently airing")); |
48 case Anime::SeriesStatus::FINISHED: return Strings::ToUtf8String(QCoreApplication::tr("Finished airing")); | 223 case Anime::SeriesStatus::FINISHED: return Strings::ToUtf8String(QCoreApplication::tr("Finished airing")); |
49 case Anime::SeriesStatus::NOT_YET_RELEASED: return Strings::ToUtf8String(QCoreApplication::tr("Not yet aired")); | 224 case Anime::SeriesStatus::NOT_YET_RELEASED: return Strings::ToUtf8String(QCoreApplication::tr("Not yet aired")); |
50 case Anime::SeriesStatus::CANCELLED: return Strings::ToUtf8String(QCoreApplication::tr("Cancelled")); | 225 case Anime::SeriesStatus::CANCELLED: return Strings::ToUtf8String(QCoreApplication::tr("Cancelled")); |
52 default: | 227 default: |
53 case Anime::SeriesStatus::UNKNOWN: return Strings::ToUtf8String(QCoreApplication::tr("Unknown")); | 228 case Anime::SeriesStatus::UNKNOWN: return Strings::ToUtf8String(QCoreApplication::tr("Unknown")); |
54 } | 229 } |
55 } | 230 } |
56 | 231 |
57 std::string ToString(const Anime::Services service) { | 232 std::string ToLocalString(const Anime::Services service) { |
58 switch (service) { | 233 switch (service) { |
59 case Anime::Services::ANILIST: return Strings::ToUtf8String(QCoreApplication::tr("AniList")); | 234 case Anime::Services::ANILIST: return Strings::ToUtf8String(QCoreApplication::tr("AniList")); |
60 default: | 235 default: |
61 case Anime::Services::NONE: return Strings::ToUtf8String(QCoreApplication::tr("None")); | 236 case Anime::Services::NONE: return Strings::ToUtf8String(QCoreApplication::tr("None")); |
62 } | 237 } |
63 } | 238 } |
64 | 239 |
65 Anime::Services ToService(const std::string& str) { | 240 std::string ToLocalString(const Anime::TitleLanguage language) { |
66 const std::unordered_map<std::string, Anime::Services> map = { | |
67 {"None", Anime::Services::NONE }, | |
68 {"AniList", Anime::Services::ANILIST} | |
69 }; | |
70 | |
71 if (map.find(str) == map.end()) | |
72 return Anime::Services::NONE; | |
73 return map.at(str); | |
74 } | |
75 | |
76 std::string ToString(const Anime::TitleLanguage language) { | |
77 switch (language) { | 241 switch (language) { |
78 case Anime::TitleLanguage::NATIVE: return Strings::ToUtf8String(QCoreApplication::tr("Native")); | 242 case Anime::TitleLanguage::NATIVE: return Strings::ToUtf8String(QCoreApplication::tr("Native")); |
79 case Anime::TitleLanguage::ENGLISH: return Strings::ToUtf8String(QCoreApplication::tr("English")); | 243 case Anime::TitleLanguage::ENGLISH: return Strings::ToUtf8String(QCoreApplication::tr("English")); |
80 default: | 244 default: |
81 case Anime::TitleLanguage::ROMAJI: return Strings::ToUtf8String(QCoreApplication::tr("Romaji")); | 245 case Anime::TitleLanguage::ROMAJI: return Strings::ToUtf8String(QCoreApplication::tr("Romaji")); |
82 } | 246 } |
83 } | 247 } |
84 | 248 |
85 Anime::TitleLanguage ToLanguage(const std::string& str) { | 249 std::string ToLocalString(const Anime::ScoreFormat format) { |
86 const std::unordered_map<std::string, Anime::TitleLanguage> map = { | 250 switch (format) { |
87 {"Romaji", Anime::TitleLanguage::ROMAJI}, | 251 case Anime::ScoreFormat::POINT_3: return Strings::ToUtf8String(QCoreApplication::tr("3-point")); |
88 {"Native", Anime::TitleLanguage::NATIVE}, | 252 case Anime::ScoreFormat::POINT_5: return Strings::ToUtf8String(QCoreApplication::tr("5-point")); |
89 {"English", Anime::TitleLanguage::ENGLISH} | 253 case Anime::ScoreFormat::POINT_10: return Strings::ToUtf8String(QCoreApplication::tr("10-point")); |
90 }; | 254 case Anime::ScoreFormat::POINT_10_DECIMAL: return Strings::ToUtf8String(QCoreApplication::tr("10-point (Decimal)")); |
91 | 255 default: |
92 if (map.find(str) == map.end()) | 256 case Anime::ScoreFormat::POINT_100: return Strings::ToUtf8String(QCoreApplication::tr("100-point")); |
93 return Anime::TitleLanguage::ROMAJI; | 257 } |
94 return map.at(str); | |
95 } | 258 } |
96 | 259 |
97 } // namespace Translate | 260 } // namespace Translate |