2
|
1 #include "window.h"
|
|
2 #include "anime.h"
|
|
3 #include "information.h"
|
|
4 #include "ui_utils.h"
|
|
5 #include "string_utils.h"
|
|
6
|
|
7 #include <QDialogButtonBox>
|
|
8
|
|
9 void InformationDialog::OnOK() {
|
|
10 model->UpdateAnime(*anime);
|
|
11 QDialog::accept();
|
|
12 }
|
|
13
|
|
14 InformationDialog::InformationDialog(Anime& a, AnimeListWidgetModel* model, QWidget* parent)
|
|
15 : QDialog(parent)
|
|
16 {
|
|
17 this->model = model;
|
|
18 this->anime = &a;
|
|
19 setFixedSize(842, 613);
|
|
20 setWindowTitle(tr("Anime Information"));
|
|
21 setWindowFlags(Qt::Dialog | Qt::CustomizeWindowHint | Qt::WindowTitleHint | Qt::WindowCloseButtonHint);
|
|
22 setObjectName("infodiag");
|
|
23 QWidget* widget = new QWidget(this);
|
|
24 widget->resize(842-175, 530);
|
|
25 widget->move(175, 0);
|
|
26 widget->setStyleSheet(UiUtils::IsInDarkMode() ? "" : "background-color: white");
|
|
27 widget->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed);
|
|
28 QPlainTextEdit* anime_title = new QPlainTextEdit(QString::fromWCharArray(anime->title.english.c_str()), widget);
|
|
29 anime_title->setReadOnly(true);
|
|
30 anime_title->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
|
|
31 anime_title->setWordWrapMode(QTextOption::NoWrap);
|
|
32 anime_title->setFrameShape(QFrame::NoFrame);
|
|
33 anime_title->resize(636, 28);
|
|
34 anime_title->move(0, 12);
|
|
35 anime_title->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed);
|
|
36 anime_title->setStyleSheet("font-size: 16px; color: blue");
|
|
37 QTabWidget* tabbed_widget = new QTabWidget(widget);
|
|
38 tabbed_widget->resize(636, 485);
|
|
39 tabbed_widget->move(0, 45);
|
|
40 tabbed_widget->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed);
|
|
41 QWidget* main_information_widget = new QWidget(tabbed_widget);
|
|
42 UiUtils::CreateSelectableTextParagraph(main_information_widget, "Alternative titles", "-", QPoint(6, 6), QSize(636-18, 56));
|
|
43 QString details_data("");
|
|
44 QTextStream details_data_s(&details_data);
|
|
45 details_data_s << AnimeFormatToStringMap[anime->type].c_str() << "\n"
|
|
46 << anime->episodes << "\n"
|
|
47 << AnimeAiringToStringMap[anime->airing].c_str() << "\n"
|
|
48 << AnimeSeasonToStringMap[anime->season].c_str() << " " << anime->air_date.GetYear() << "\n"
|
|
49 << StringUtils::Implode(anime->genres, ", ").c_str() << "\n"
|
|
50 << anime->audience_score << "%\n";
|
|
51 UiUtils::CreateTextParagraphWithLabels(main_information_widget, "Details", "Type:\nEpisodes:\nStatus:\nSeason:\nGenres:\nScore:", details_data, QPoint(6, 62), QSize(636-18, 142));
|
|
52 UiUtils::CreateSelectableTextParagraph(main_information_widget, "Synopsis", QString::fromWCharArray(anime->synopsis.c_str()), QPoint(6, 202), QSize(636-18, 253));
|
|
53 tabbed_widget->addTab(main_information_widget, "Main information");
|
|
54 QWidget* settings_widget = new QWidget(tabbed_widget);
|
3
|
55 tabbed_widget->addTab(settings_widget, "My list and settings");
|
2
|
56 QDialogButtonBox* button_box = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel, this);
|
3
|
57 connect(button_box, &QDialogButtonBox::accepted, this, &InformationDialog::OnOK);
|
2
|
58 connect(button_box, &QDialogButtonBox::rejected, this, &QDialog::reject);
|
|
59 QVBoxLayout* buttons_layout = new QVBoxLayout(widget);
|
|
60 buttons_layout->addWidget(widget, 0, Qt::AlignTop);
|
|
61 buttons_layout->addWidget(button_box, 0, Qt::AlignBottom);
|
|
62 // this should probably be win32-only
|
|
63 setStyleSheet(UiUtils::IsInDarkMode() ? "" : "QDialog#infodiag{background-color: white;}");
|
|
64 setLayout(buttons_layout);
|
|
65 }
|
|
66
|
|
67 #include "moc_information.cpp"
|