Mercurial > minori
annotate src/gui/widgets/anime_info.cc @ 187:9613d72b097e
*: multiple performance improvements
like marking `static const` when it makes sense...
date: change old stupid heap-based method to a structure which should
make copying the thing actually make a copy.
also many performance-based changes, like removing the std::tie
dependency and forward-declaring nlohmann json
*: replace every instance of QString::fromUtf8 to Strings::ToQString.
the main difference is that our function will always convert exactly
what is in the string, while some other times it would only convert
up to the nearest NUL byte
author | Paper <mrpapersonic@gmail.com> |
---|---|
date | Wed, 06 Dec 2023 13:43:54 -0500 |
parents | 80f49f623d30 |
children | c4ca035c565d |
rev | line source |
---|---|
64 | 1 #include "gui/widgets/anime_info.h" |
2 #include "core/anime.h" | |
3 #include "core/strings.h" | |
4 #include "gui/translate/anime.h" | |
5 #include "gui/widgets/text.h" | |
6 #include <QHBoxLayout> | |
7 #include <QTextStream> | |
8 | |
80 | 9 AnimeInfoWidget::AnimeInfoWidget(QWidget* parent) : QWidget(parent) { |
64 | 10 QVBoxLayout* layout = new QVBoxLayout(this); |
11 | |
80 | 12 _title.reset(new TextWidgets::OneLineSection(tr("Alternative titles"), "", this)); |
13 layout->addWidget(_title.get()); | |
14 | |
82
8b65c417c225
*: fix old stuff, make video players and extensions constants
Paper <mrpapersonic@gmail.com>
parents:
81
diff
changeset
|
15 _details.reset(new TextWidgets::LabelledSection(tr("Details"), tr("Type:\nEpisodes:\nStatus:\nSeason:\nGenres:\nScore:"), "", this)); |
80 | 16 layout->addWidget(_details.get()); |
17 | |
82
8b65c417c225
*: fix old stuff, make video players and extensions constants
Paper <mrpapersonic@gmail.com>
parents:
81
diff
changeset
|
18 _synopsis.reset(new TextWidgets::SelectableSection(tr("Synopsis"), "", this)); |
80 | 19 _synopsis->GetParagraph()->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Expanding); |
20 layout->addWidget(_synopsis.get()); | |
21 } | |
22 | |
23 AnimeInfoWidget::AnimeInfoWidget(const Anime::Anime& anime, QWidget* parent) : AnimeInfoWidget(parent) { | |
24 SetAnime(anime); | |
25 } | |
26 | |
82
8b65c417c225
*: fix old stuff, make video players and extensions constants
Paper <mrpapersonic@gmail.com>
parents:
81
diff
changeset
|
27 void AnimeInfoWidget::SetAnime(const Anime::Anime& anime) { |
64 | 28 /* alt titles */ |
83 | 29 _title->GetLine()->SetText(Strings::ToQString(Strings::Implode(anime.GetTitleSynonyms(), ", "))); |
64 | 30 |
31 /* details */ | |
32 QString details_data; | |
33 QTextStream details_data_s(&details_data); | |
112
80f49f623d30
locale: allow switching locales without restarting
Paper <mrpapersonic@gmail.com>
parents:
83
diff
changeset
|
34 /* we have to convert ALL of these strings to |
187
9613d72b097e
*: multiple performance improvements
Paper <mrpapersonic@gmail.com>
parents:
112
diff
changeset
|
35 * QString because QTextStream sucks and assumes |
9613d72b097e
*: multiple performance improvements
Paper <mrpapersonic@gmail.com>
parents:
112
diff
changeset
|
36 * Latin1 (on Windows?) |
9613d72b097e
*: multiple performance improvements
Paper <mrpapersonic@gmail.com>
parents:
112
diff
changeset
|
37 */ |
112
80f49f623d30
locale: allow switching locales without restarting
Paper <mrpapersonic@gmail.com>
parents:
83
diff
changeset
|
38 details_data_s << Strings::ToQString(Translate::ToString(anime.GetFormat())) << "\n" |
64 | 39 << anime.GetEpisodes() << "\n" |
112
80f49f623d30
locale: allow switching locales without restarting
Paper <mrpapersonic@gmail.com>
parents:
83
diff
changeset
|
40 << Strings::ToQString(Translate::ToString(anime.GetUserStatus())) << "\n" |
80f49f623d30
locale: allow switching locales without restarting
Paper <mrpapersonic@gmail.com>
parents:
83
diff
changeset
|
41 << Strings::ToQString(Translate::ToString(anime.GetSeason())) << " " |
80f49f623d30
locale: allow switching locales without restarting
Paper <mrpapersonic@gmail.com>
parents:
83
diff
changeset
|
42 << anime.GetAirDate().GetYear() << "\n" |
80f49f623d30
locale: allow switching locales without restarting
Paper <mrpapersonic@gmail.com>
parents:
83
diff
changeset
|
43 << Strings::ToQString(Strings::Implode(anime.GetGenres(), ", ")) << "\n" |
64 | 44 << anime.GetAudienceScore() << "%"; |
83 | 45 _details->GetParagraph()->SetText(details_data); |
64 | 46 |
83 | 47 _synopsis->GetParagraph()->SetText(Strings::ToQString(anime.GetSynopsis())); |
48 | |
49 updateGeometry(); | |
64 | 50 } |
51 | |
52 #include "gui/widgets/moc_anime_info.cpp" |