253
|
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 } |