comparison src/gui/dialog/information.cpp @ 9:5c0397762b53

INCOMPLETE: megacommit :)
author Paper <mrpapersonic@gmail.com>
date Sun, 10 Sep 2023 03:59:16 -0400
parents
children 4b198a111713
comparison
equal deleted inserted replaced
8:b1f73678ef61 9:5c0397762b53
1 #include "gui/dialog/information.h"
2 #include "core/anime.h"
3 #include "core/strings.h"
4 #include "gui/pages/anime_list.h"
5 #include "gui/translate/anime.h"
6 #include "gui/ui_utils.h"
7 #include "gui/window.h"
8 #include <QDebug>
9 #include <QDialogButtonBox>
10 #include <QPlainTextEdit>
11 #include <QTextStream>
12 #include <QVBoxLayout>
13 #include <functional>
14
15 InformationDialog::InformationDialog(Anime::Anime& anime, std::function<void()> accept, QWidget* parent)
16 : QDialog(parent) {
17 setFixedSize(842, 613);
18 setWindowTitle(tr("Anime Information"));
19 setWindowFlags(Qt::Dialog | Qt::CustomizeWindowHint | Qt::WindowTitleHint | Qt::WindowCloseButtonHint);
20 setObjectName("infodiag");
21 setStyleSheet(UiUtils::IsInDarkMode() ? "" : "QDialog#infodiag{background-color: white;}");
22
23 QWidget* widget = new QWidget(this);
24
25 /* "sidebar", includes... just the anime image :) */
26 QWidget* sidebar = new QWidget(widget);
27 sidebar->setFixedWidth(175);
28
29 /* main widget */
30 QWidget* main_widget = new QWidget(widget);
31 main_widget->setStyleSheet(UiUtils::IsInDarkMode() ? "" : "background-color: white");
32 main_widget->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
33
34 /* anime title header text */
35 UiUtils::Paragraph* anime_title =
36 new UiUtils::Paragraph(QString::fromUtf8(anime.GetUserPreferredTitle().c_str()), main_widget);
37 anime_title->setReadOnly(true);
38 anime_title->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
39 anime_title->setWordWrapMode(QTextOption::NoWrap);
40 anime_title->setFrameShape(QFrame::NoFrame);
41 anime_title->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Maximum);
42 anime_title->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
43 anime_title->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
44 anime_title->setStyleSheet("font-size: 16px; color: blue; background: transparent;");
45
46 /* tabbed widget */
47 QTabWidget* tabbed_widget = new QTabWidget(main_widget);
48 tabbed_widget->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred);
49
50 /* main info tab */
51 QWidget* main_information_widget = new QWidget(tabbed_widget);
52 main_information_widget->setLayout(new QVBoxLayout);
53
54 /* alt titles */
55 main_information_widget->layout()->addWidget(new UiUtils::SelectableTextParagraph(
56 "Alternative titles", QString::fromUtf8(StringUtils::Implode(anime.GetTitleSynonyms(), ", ").c_str()),
57 main_information_widget));
58
59 /* details */
60 QString details_data;
61 QTextStream details_data_s(&details_data);
62 details_data_s << Translate::TranslateSeriesFormat(anime.GetFormat()).c_str() << "\n"
63 << anime.GetEpisodes() << "\n"
64 << Translate::TranslateListStatus(anime.GetUserStatus()).c_str() << "\n"
65 << Translate::TranslateSeriesSeason(anime.GetSeason()).c_str() << " " << anime.GetAirDate().GetYear()
66 << "\n"
67 << StringUtils::Implode(anime.GetGenres(), ", ").c_str() << "\n"
68 << anime.GetAudienceScore() << "%";
69 main_information_widget->layout()->addWidget(new UiUtils::LabelledTextParagraph(
70 "Details", "Type:\nEpisodes:\nStatus:\nSeason:\nGenres:\nScore:", details_data, main_information_widget));
71
72 /* synopsis */
73 UiUtils::SelectableTextParagraph* synopsis = new UiUtils::SelectableTextParagraph(
74 "Synopsis", QString::fromUtf8(anime.GetSynopsis().c_str()), main_information_widget);
75
76 synopsis->GetParagraph()->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Expanding);
77 ((QVBoxLayout*)main_information_widget->layout())->addWidget(synopsis);
78
79 QWidget* settings_widget = new QWidget(tabbed_widget);
80
81 tabbed_widget->addTab(main_information_widget, "Main information");
82 tabbed_widget->addTab(settings_widget, "My list and settings");
83
84 QVBoxLayout* main_layout = new QVBoxLayout;
85 main_layout->addWidget(anime_title);
86 main_layout->addWidget(tabbed_widget);
87 main_layout->setMargin(0);
88 main_widget->setLayout(main_layout);
89
90 QHBoxLayout* layout = new QHBoxLayout;
91 layout->addWidget(sidebar);
92 layout->addWidget(main_widget);
93 widget->setLayout(layout);
94
95 QDialogButtonBox* button_box = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel, this);
96 connect(button_box, &QDialogButtonBox::accepted, this, [this, accept] {
97 accept();
98 QDialog::accept();
99 });
100 connect(button_box, &QDialogButtonBox::rejected, this, &QDialog::reject);
101
102 QVBoxLayout* buttons_layout = new QVBoxLayout;
103 buttons_layout->addWidget(widget);
104 buttons_layout->addWidget(button_box, 0, Qt::AlignBottom);
105 setLayout(buttons_layout);
106 }
107
108 #include "gui/dialog/moc_information.cpp"