Mercurial > minori
comparison src/gui/widgets/anime_button.cc @ 253:b3549da699a6
*: ooooh! stupid big commit!
oops
author | Paper <paper@paper.us.eu.org> |
---|---|
date | Tue, 06 Feb 2024 16:56:32 -0500 |
parents | |
children | d14f8e0e40c3 |
comparison
equal
deleted
inserted
replaced
252:a0eeb2cc7e6d | 253:b3549da699a6 |
---|---|
1 #include "gui/widgets/anime_button.h" | |
2 | |
3 #include "core/anime_db.h" | |
4 #include "core/strings.h" | |
5 #include "core/session.h" | |
6 #include "gui/widgets/text.h" | |
7 #include "gui/widgets/elided_label.h" | |
8 #include "gui/widgets/poster.h" | |
9 | |
10 #include <QWidget> | |
11 #include <QVBoxLayout> | |
12 #include <QHBoxLayout> | |
13 #include <QDate> | |
14 | |
15 /* This widget is only used on the Seasons page. */ | |
16 | |
17 /***********************************\ | |
18 *|---------| Title * | |
19 *| | * | |
20 *| | Aired * | |
21 *| | Episodes * | |
22 *| Poster | Producers * | |
23 *| | Score * | |
24 *| | Popularity * | |
25 *| | * | |
26 *|_________| Synopsis * | |
27 \***********************************/ | |
28 | |
29 AnimeButton::AnimeButton(QWidget* parent) : QFrame(parent) { | |
30 setFrameShadow(QFrame::Plain); | |
31 setFrameShape(QFrame::Box); | |
32 QHBoxLayout* ly = new QHBoxLayout(this); | |
33 | |
34 _poster = new Poster(this); | |
35 _poster->setFixedSize(120, 170); | |
36 ly->addWidget(_poster); | |
37 | |
38 { | |
39 QWidget* misc_section = new QWidget(this); | |
40 misc_section->setFixedSize(354, 180); | |
41 | |
42 QVBoxLayout* misc_layout = new QVBoxLayout(misc_section); | |
43 misc_layout->setContentsMargins(0, 0, 0, 0); | |
44 | |
45 _title = new TextWidgets::Line("", misc_section); | |
46 misc_layout->addWidget(_title); | |
47 | |
48 /* need to make a separate "labelled paragraph" for this */ | |
49 _info = new TextWidgets::LabelledParagraph(tr("Aired:\nEpisodes:\nProducers:\nScore:\nPopularity:"), "\n\n\n\n", misc_section); | |
50 _info->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Minimum); | |
51 misc_layout->addWidget(_info); | |
52 | |
53 _synopsis = new ElidedLabel("", misc_section); | |
54 misc_layout->addWidget(_synopsis); | |
55 | |
56 ly->addWidget(misc_section); | |
57 } | |
58 } | |
59 | |
60 AnimeButton::AnimeButton(const Anime::Anime& anime, QWidget* parent) : AnimeButton(parent) { | |
61 SetAnime(anime); | |
62 } | |
63 | |
64 void AnimeButton::SetAnime(const Anime::Anime& anime) { | |
65 _poster->SetAnime(anime); | |
66 _title->SetText(Strings::ToQString(anime.GetUserPreferredTitle())); | |
67 | |
68 { | |
69 const QLocale& locale = session.config.locale.GetLocale(); | |
70 _info->GetParagraph()->SetText( | |
71 locale.toString(anime.GetAirDate().GetAsQDate(), "dd MMM yyyy") + "\n" + | |
72 QString::number(anime.GetEpisodes()) + "\n" + | |
73 "...\n" + | |
74 QString::number(anime.GetAudienceScore()) + "%\n" + | |
75 "..." | |
76 ); | |
77 } | |
78 | |
79 { | |
80 QString synopsis = Strings::ToQString(anime.GetSynopsis()); | |
81 QFontMetrics metrics(_synopsis->font()); | |
82 _synopsis->SetText(Strings::ToQString(anime.GetSynopsis())); | |
83 } | |
84 } |