annotate src/gui/dialog/information.cc @ 101:c537996cf67b

*: multitude of config changes 1. theme is now configurable from the settings menu (but you have to restart for it to apply) 2. config is now stored in an INI file, with no method of conversion from json (this repo is private-ish anyway)
author Paper <mrpapersonic@gmail.com>
date Fri, 03 Nov 2023 14:06:02 -0400
parents e6fab256ddc4
children 6d8da6e64d61
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
9
5c0397762b53 INCOMPLETE: megacommit :)
Paper <mrpapersonic@gmail.com>
parents:
diff changeset
1 #include "gui/dialog/information.h"
5c0397762b53 INCOMPLETE: megacommit :)
Paper <mrpapersonic@gmail.com>
parents:
diff changeset
2 #include "core/anime.h"
47
d8eb763e6661 information.cpp: add widgets to the list tab, and add an
Paper <mrpapersonic@gmail.com>
parents: 46
diff changeset
3 #include "core/anime_db.h"
9
5c0397762b53 INCOMPLETE: megacommit :)
Paper <mrpapersonic@gmail.com>
parents:
diff changeset
4 #include "core/strings.h"
5c0397762b53 INCOMPLETE: megacommit :)
Paper <mrpapersonic@gmail.com>
parents:
diff changeset
5 #include "gui/pages/anime_list.h"
5c0397762b53 INCOMPLETE: megacommit :)
Paper <mrpapersonic@gmail.com>
parents:
diff changeset
6 #include "gui/translate/anime.h"
64
fe719c109dbc *: update
Paper <mrpapersonic@gmail.com>
parents: 63
diff changeset
7 #include "gui/widgets/anime_info.h"
76
3364fadc8a36 *: format source code
Paper <mrpapersonic@gmail.com>
parents: 69
diff changeset
8 #include "gui/widgets/optional_date.h"
66
6481c5aed3e1 posters: add poster widget...
Paper <mrpapersonic@gmail.com>
parents: 65
diff changeset
9 #include "gui/widgets/poster.h"
46
d0adc4aedfc8 *: update...
Paper <mrpapersonic@gmail.com>
parents: 36
diff changeset
10 #include "gui/widgets/text.h"
9
5c0397762b53 INCOMPLETE: megacommit :)
Paper <mrpapersonic@gmail.com>
parents:
diff changeset
11 #include "gui/window.h"
46
d0adc4aedfc8 *: update...
Paper <mrpapersonic@gmail.com>
parents: 36
diff changeset
12 #include <QCheckBox>
d0adc4aedfc8 *: update...
Paper <mrpapersonic@gmail.com>
parents: 36
diff changeset
13 #include <QComboBox>
47
d8eb763e6661 information.cpp: add widgets to the list tab, and add an
Paper <mrpapersonic@gmail.com>
parents: 46
diff changeset
14 #include <QDateEdit>
9
5c0397762b53 INCOMPLETE: megacommit :)
Paper <mrpapersonic@gmail.com>
parents:
diff changeset
15 #include <QDebug>
5c0397762b53 INCOMPLETE: megacommit :)
Paper <mrpapersonic@gmail.com>
parents:
diff changeset
16 #include <QDialogButtonBox>
76
3364fadc8a36 *: format source code
Paper <mrpapersonic@gmail.com>
parents: 69
diff changeset
17 #include <QLabel>
46
d0adc4aedfc8 *: update...
Paper <mrpapersonic@gmail.com>
parents: 36
diff changeset
18 #include <QLineEdit>
9
5c0397762b53 INCOMPLETE: megacommit :)
Paper <mrpapersonic@gmail.com>
parents:
diff changeset
19 #include <QPlainTextEdit>
46
d0adc4aedfc8 *: update...
Paper <mrpapersonic@gmail.com>
parents: 36
diff changeset
20 #include <QSpinBox>
d0adc4aedfc8 *: update...
Paper <mrpapersonic@gmail.com>
parents: 36
diff changeset
21 #include <QStringList>
9
5c0397762b53 INCOMPLETE: megacommit :)
Paper <mrpapersonic@gmail.com>
parents:
diff changeset
22 #include <QTextStream>
5c0397762b53 INCOMPLETE: megacommit :)
Paper <mrpapersonic@gmail.com>
parents:
diff changeset
23 #include <QVBoxLayout>
5c0397762b53 INCOMPLETE: megacommit :)
Paper <mrpapersonic@gmail.com>
parents:
diff changeset
24 #include <functional>
5c0397762b53 INCOMPLETE: megacommit :)
Paper <mrpapersonic@gmail.com>
parents:
diff changeset
25
46
d0adc4aedfc8 *: update...
Paper <mrpapersonic@gmail.com>
parents: 36
diff changeset
26 /* TODO: Taiga disables rendering of the tab widget entirely when the anime is not part of a list,
d0adc4aedfc8 *: update...
Paper <mrpapersonic@gmail.com>
parents: 36
diff changeset
27 which sucks. Think of a better way to implement this later. */
83
d02fdf1d6708 *: huuuge update
Paper <mrpapersonic@gmail.com>
parents: 81
diff changeset
28 void InformationDialog::SaveData(Anime::Anime& anime) {
d02fdf1d6708 *: huuuge update
Paper <mrpapersonic@gmail.com>
parents: 81
diff changeset
29 anime.SetUserProgress(_progress);
d02fdf1d6708 *: huuuge update
Paper <mrpapersonic@gmail.com>
parents: 81
diff changeset
30 anime.SetUserScore(_score);
d02fdf1d6708 *: huuuge update
Paper <mrpapersonic@gmail.com>
parents: 81
diff changeset
31 anime.SetUserIsRewatching(_rewatching);
d02fdf1d6708 *: huuuge update
Paper <mrpapersonic@gmail.com>
parents: 81
diff changeset
32 anime.SetUserStatus(_status);
d02fdf1d6708 *: huuuge update
Paper <mrpapersonic@gmail.com>
parents: 81
diff changeset
33 anime.SetUserNotes(_notes);
d02fdf1d6708 *: huuuge update
Paper <mrpapersonic@gmail.com>
parents: 81
diff changeset
34 anime.SetUserDateStarted(_started);
d02fdf1d6708 *: huuuge update
Paper <mrpapersonic@gmail.com>
parents: 81
diff changeset
35 anime.SetUserDateCompleted(_completed);
47
d8eb763e6661 information.cpp: add widgets to the list tab, and add an
Paper <mrpapersonic@gmail.com>
parents: 46
diff changeset
36 }
d8eb763e6661 information.cpp: add widgets to the list tab, and add an
Paper <mrpapersonic@gmail.com>
parents: 46
diff changeset
37
83
d02fdf1d6708 *: huuuge update
Paper <mrpapersonic@gmail.com>
parents: 81
diff changeset
38 InformationDialog::InformationDialog(Anime::Anime& anime, std::function<void()> accept, QWidget* parent)
15
cde8f67a7c7d *: update, megacommit :)
Paper <mrpapersonic@gmail.com>
parents: 10
diff changeset
39 : QDialog(parent) {
9
5c0397762b53 INCOMPLETE: megacommit :)
Paper <mrpapersonic@gmail.com>
parents:
diff changeset
40 setFixedSize(842, 613);
5c0397762b53 INCOMPLETE: megacommit :)
Paper <mrpapersonic@gmail.com>
parents:
diff changeset
41 setWindowTitle(tr("Anime Information"));
5c0397762b53 INCOMPLETE: megacommit :)
Paper <mrpapersonic@gmail.com>
parents:
diff changeset
42 setWindowFlags(Qt::Dialog | Qt::CustomizeWindowHint | Qt::WindowTitleHint | Qt::WindowCloseButtonHint);
36
2743011a6042 *: mass update
Paper <mrpapersonic@gmail.com>
parents: 15
diff changeset
43
2743011a6042 *: mass update
Paper <mrpapersonic@gmail.com>
parents: 15
diff changeset
44 {
69
27a19dd6cba1 *: fix up some stuff
Paper <mrpapersonic@gmail.com>
parents: 68
diff changeset
45 QPalette pal(palette());
27a19dd6cba1 *: fix up some stuff
Paper <mrpapersonic@gmail.com>
parents: 68
diff changeset
46 pal.setColor(QPalette::Window, pal.color(QPalette::Base));
36
2743011a6042 *: mass update
Paper <mrpapersonic@gmail.com>
parents: 15
diff changeset
47 setPalette(pal);
2743011a6042 *: mass update
Paper <mrpapersonic@gmail.com>
parents: 15
diff changeset
48 }
9
5c0397762b53 INCOMPLETE: megacommit :)
Paper <mrpapersonic@gmail.com>
parents:
diff changeset
49
5c0397762b53 INCOMPLETE: megacommit :)
Paper <mrpapersonic@gmail.com>
parents:
diff changeset
50 QWidget* widget = new QWidget(this);
5c0397762b53 INCOMPLETE: megacommit :)
Paper <mrpapersonic@gmail.com>
parents:
diff changeset
51
5c0397762b53 INCOMPLETE: megacommit :)
Paper <mrpapersonic@gmail.com>
parents:
diff changeset
52 /* "sidebar", includes... just the anime image :) */
5c0397762b53 INCOMPLETE: megacommit :)
Paper <mrpapersonic@gmail.com>
parents:
diff changeset
53 QWidget* sidebar = new QWidget(widget);
66
6481c5aed3e1 posters: add poster widget...
Paper <mrpapersonic@gmail.com>
parents: 65
diff changeset
54 QVBoxLayout* sidebar_layout = new QVBoxLayout(sidebar);
83
d02fdf1d6708 *: huuuge update
Paper <mrpapersonic@gmail.com>
parents: 81
diff changeset
55 Poster* poster = new Poster(anime, sidebar);
66
6481c5aed3e1 posters: add poster widget...
Paper <mrpapersonic@gmail.com>
parents: 65
diff changeset
56 sidebar_layout->addWidget(poster);
6481c5aed3e1 posters: add poster widget...
Paper <mrpapersonic@gmail.com>
parents: 65
diff changeset
57 sidebar_layout->setContentsMargins(0, 0, 0, 0);
6481c5aed3e1 posters: add poster widget...
Paper <mrpapersonic@gmail.com>
parents: 65
diff changeset
58 sidebar_layout->addStretch();
9
5c0397762b53 INCOMPLETE: megacommit :)
Paper <mrpapersonic@gmail.com>
parents:
diff changeset
59
5c0397762b53 INCOMPLETE: megacommit :)
Paper <mrpapersonic@gmail.com>
parents:
diff changeset
60 /* main widget */
5c0397762b53 INCOMPLETE: megacommit :)
Paper <mrpapersonic@gmail.com>
parents:
diff changeset
61 QWidget* main_widget = new QWidget(widget);
36
2743011a6042 *: mass update
Paper <mrpapersonic@gmail.com>
parents: 15
diff changeset
62
9
5c0397762b53 INCOMPLETE: megacommit :)
Paper <mrpapersonic@gmail.com>
parents:
diff changeset
63 main_widget->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
5c0397762b53 INCOMPLETE: megacommit :)
Paper <mrpapersonic@gmail.com>
parents:
diff changeset
64
5c0397762b53 INCOMPLETE: megacommit :)
Paper <mrpapersonic@gmail.com>
parents:
diff changeset
65 /* anime title header text */
64
fe719c109dbc *: update
Paper <mrpapersonic@gmail.com>
parents: 63
diff changeset
66 TextWidgets::Title* anime_title =
65
26721c28bf22 *: avoid usage of (to|from)StdString
Paper <mrpapersonic@gmail.com>
parents: 64
diff changeset
67 new TextWidgets::Title(Strings::ToQString(anime.GetUserPreferredTitle()), main_widget);
9
5c0397762b53 INCOMPLETE: megacommit :)
Paper <mrpapersonic@gmail.com>
parents:
diff changeset
68
5c0397762b53 INCOMPLETE: megacommit :)
Paper <mrpapersonic@gmail.com>
parents:
diff changeset
69 /* tabbed widget */
5c0397762b53 INCOMPLETE: megacommit :)
Paper <mrpapersonic@gmail.com>
parents:
diff changeset
70 QTabWidget* tabbed_widget = new QTabWidget(main_widget);
5c0397762b53 INCOMPLETE: megacommit :)
Paper <mrpapersonic@gmail.com>
parents:
diff changeset
71 tabbed_widget->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred);
5c0397762b53 INCOMPLETE: megacommit :)
Paper <mrpapersonic@gmail.com>
parents:
diff changeset
72
5c0397762b53 INCOMPLETE: megacommit :)
Paper <mrpapersonic@gmail.com>
parents:
diff changeset
73 /* main info tab */
64
fe719c109dbc *: update
Paper <mrpapersonic@gmail.com>
parents: 63
diff changeset
74 AnimeInfoWidget* main_information_widget = new AnimeInfoWidget(anime, tabbed_widget);
9
5c0397762b53 INCOMPLETE: megacommit :)
Paper <mrpapersonic@gmail.com>
parents:
diff changeset
75
69
27a19dd6cba1 *: fix up some stuff
Paper <mrpapersonic@gmail.com>
parents: 68
diff changeset
76 {
27a19dd6cba1 *: fix up some stuff
Paper <mrpapersonic@gmail.com>
parents: 68
diff changeset
77 QPalette pal(main_information_widget->palette());
27a19dd6cba1 *: fix up some stuff
Paper <mrpapersonic@gmail.com>
parents: 68
diff changeset
78 pal.setColor(QPalette::Base, pal.color(QPalette::Window));
27a19dd6cba1 *: fix up some stuff
Paper <mrpapersonic@gmail.com>
parents: 68
diff changeset
79 main_information_widget->setPalette(pal);
27a19dd6cba1 *: fix up some stuff
Paper <mrpapersonic@gmail.com>
parents: 68
diff changeset
80 }
27a19dd6cba1 *: fix up some stuff
Paper <mrpapersonic@gmail.com>
parents: 68
diff changeset
81
9
5c0397762b53 INCOMPLETE: megacommit :)
Paper <mrpapersonic@gmail.com>
parents:
diff changeset
82 QWidget* settings_widget = new QWidget(tabbed_widget);
46
d0adc4aedfc8 *: update...
Paper <mrpapersonic@gmail.com>
parents: 36
diff changeset
83 settings_widget->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Maximum);
d0adc4aedfc8 *: update...
Paper <mrpapersonic@gmail.com>
parents: 36
diff changeset
84
68
2417121d894e *: normalize usage of layouts
Paper <mrpapersonic@gmail.com>
parents: 66
diff changeset
85 QVBoxLayout* settings_layout = new QVBoxLayout(settings_widget);
2417121d894e *: normalize usage of layouts
Paper <mrpapersonic@gmail.com>
parents: 66
diff changeset
86 settings_layout->addWidget(new TextWidgets::Header(tr("Anime list"), settings_widget));
46
d0adc4aedfc8 *: update...
Paper <mrpapersonic@gmail.com>
parents: 36
diff changeset
87
d0adc4aedfc8 *: update...
Paper <mrpapersonic@gmail.com>
parents: 36
diff changeset
88 QWidget* sg_anime_list_content = new QWidget(settings_widget);
d0adc4aedfc8 *: update...
Paper <mrpapersonic@gmail.com>
parents: 36
diff changeset
89
88
1b19d80b3f8c dialog/information.cc: fix QGridLayout :)
Paper <mrpapersonic@gmail.com>
parents: 87
diff changeset
90 constexpr int LAYOUT_HORIZ_SPACING = 25;
1b19d80b3f8c dialog/information.cc: fix QGridLayout :)
Paper <mrpapersonic@gmail.com>
parents: 87
diff changeset
91 constexpr int LAYOUT_VERT_SPACING = 5;
1b19d80b3f8c dialog/information.cc: fix QGridLayout :)
Paper <mrpapersonic@gmail.com>
parents: 87
diff changeset
92 constexpr int LAYOUT_ITEM_WIDTH = 175;
1b19d80b3f8c dialog/information.cc: fix QGridLayout :)
Paper <mrpapersonic@gmail.com>
parents: 87
diff changeset
93
68
2417121d894e *: normalize usage of layouts
Paper <mrpapersonic@gmail.com>
parents: 66
diff changeset
94 QVBoxLayout* al_layout = new QVBoxLayout(sg_anime_list_content);
88
1b19d80b3f8c dialog/information.cc: fix QGridLayout :)
Paper <mrpapersonic@gmail.com>
parents: 87
diff changeset
95 al_layout->setSpacing(LAYOUT_VERT_SPACING);
68
2417121d894e *: normalize usage of layouts
Paper <mrpapersonic@gmail.com>
parents: 66
diff changeset
96 al_layout->setContentsMargins(12, 0, 0, 0);
2417121d894e *: normalize usage of layouts
Paper <mrpapersonic@gmail.com>
parents: 66
diff changeset
97
88
1b19d80b3f8c dialog/information.cc: fix QGridLayout :)
Paper <mrpapersonic@gmail.com>
parents: 87
diff changeset
98 const auto CREATE_SECTION = [](QWidget* parent, std::function<void(QWidget*, QGridLayout*)> x) {
1b19d80b3f8c dialog/information.cc: fix QGridLayout :)
Paper <mrpapersonic@gmail.com>
parents: 87
diff changeset
99 QWidget* section = new QWidget(parent);
1b19d80b3f8c dialog/information.cc: fix QGridLayout :)
Paper <mrpapersonic@gmail.com>
parents: 87
diff changeset
100 QGridLayout* layout = new QGridLayout(section);
1b19d80b3f8c dialog/information.cc: fix QGridLayout :)
Paper <mrpapersonic@gmail.com>
parents: 87
diff changeset
101 layout->setHorizontalSpacing(LAYOUT_HORIZ_SPACING);
1b19d80b3f8c dialog/information.cc: fix QGridLayout :)
Paper <mrpapersonic@gmail.com>
parents: 87
diff changeset
102 layout->setVerticalSpacing(LAYOUT_VERT_SPACING);
1b19d80b3f8c dialog/information.cc: fix QGridLayout :)
Paper <mrpapersonic@gmail.com>
parents: 87
diff changeset
103 layout->setContentsMargins(0, 0, 0, 0);
1b19d80b3f8c dialog/information.cc: fix QGridLayout :)
Paper <mrpapersonic@gmail.com>
parents: 87
diff changeset
104 x(section, layout);
1b19d80b3f8c dialog/information.cc: fix QGridLayout :)
Paper <mrpapersonic@gmail.com>
parents: 87
diff changeset
105 parent->layout()->addWidget(section);
1b19d80b3f8c dialog/information.cc: fix QGridLayout :)
Paper <mrpapersonic@gmail.com>
parents: 87
diff changeset
106 };
64
fe719c109dbc *: update
Paper <mrpapersonic@gmail.com>
parents: 63
diff changeset
107
89
e6fab256ddc4 dialog/info: make some stuff more sane
Paper <mrpapersonic@gmail.com>
parents: 88
diff changeset
108 CREATE_SECTION(sg_anime_list_content, [this, &anime](QWidget* section, QGridLayout* layout){
e6fab256ddc4 dialog/info: make some stuff more sane
Paper <mrpapersonic@gmail.com>
parents: 88
diff changeset
109 /* Episodes watched... */
87
4aef97f4d998 information: use QGridLayout please...
Paper <mrpapersonic@gmail.com>
parents: 86
diff changeset
110 layout->addWidget(new QLabel(tr("Episodes watched:"), section), 0, 0);
46
d0adc4aedfc8 *: update...
Paper <mrpapersonic@gmail.com>
parents: 36
diff changeset
111
87
4aef97f4d998 information: use QGridLayout please...
Paper <mrpapersonic@gmail.com>
parents: 86
diff changeset
112 QSpinBox* spin_box = new QSpinBox(section);
4aef97f4d998 information: use QGridLayout please...
Paper <mrpapersonic@gmail.com>
parents: 86
diff changeset
113 connect(spin_box, QOverload<int>::of(&QSpinBox::valueChanged), this, [this](int i) { _progress = i; });
4aef97f4d998 information: use QGridLayout please...
Paper <mrpapersonic@gmail.com>
parents: 86
diff changeset
114 spin_box->setRange(0, anime.GetEpisodes());
4aef97f4d998 information: use QGridLayout please...
Paper <mrpapersonic@gmail.com>
parents: 86
diff changeset
115 spin_box->setSingleStep(1);
4aef97f4d998 information: use QGridLayout please...
Paper <mrpapersonic@gmail.com>
parents: 86
diff changeset
116 spin_box->setValue(_progress = anime.GetUserProgress());
88
1b19d80b3f8c dialog/information.cc: fix QGridLayout :)
Paper <mrpapersonic@gmail.com>
parents: 87
diff changeset
117 spin_box->setFixedWidth(LAYOUT_ITEM_WIDTH);
87
4aef97f4d998 information: use QGridLayout please...
Paper <mrpapersonic@gmail.com>
parents: 86
diff changeset
118 layout->addWidget(spin_box, 1, 0);
46
d0adc4aedfc8 *: update...
Paper <mrpapersonic@gmail.com>
parents: 36
diff changeset
119
89
e6fab256ddc4 dialog/info: make some stuff more sane
Paper <mrpapersonic@gmail.com>
parents: 88
diff changeset
120 /* Rewatching? */
87
4aef97f4d998 information: use QGridLayout please...
Paper <mrpapersonic@gmail.com>
parents: 86
diff changeset
121 QCheckBox* checkbox = new QCheckBox(tr("Rewatching"));
4aef97f4d998 information: use QGridLayout please...
Paper <mrpapersonic@gmail.com>
parents: 86
diff changeset
122 connect(checkbox, QOverload<int>::of(&QCheckBox::stateChanged), this,
4aef97f4d998 information: use QGridLayout please...
Paper <mrpapersonic@gmail.com>
parents: 86
diff changeset
123 [this](int state) { _rewatching = (state == Qt::Checked); });
4aef97f4d998 information: use QGridLayout please...
Paper <mrpapersonic@gmail.com>
parents: 86
diff changeset
124 checkbox->setCheckState((_rewatching = anime.GetUserIsRewatching()) ? Qt::Checked : Qt::Unchecked);
88
1b19d80b3f8c dialog/information.cc: fix QGridLayout :)
Paper <mrpapersonic@gmail.com>
parents: 87
diff changeset
125 checkbox->setFixedWidth(LAYOUT_ITEM_WIDTH);
87
4aef97f4d998 information: use QGridLayout please...
Paper <mrpapersonic@gmail.com>
parents: 86
diff changeset
126 layout->addWidget(checkbox, 1, 1);
89
e6fab256ddc4 dialog/info: make some stuff more sane
Paper <mrpapersonic@gmail.com>
parents: 88
diff changeset
127 layout->setColumnStretch(layout->columnCount(), 1);
47
d8eb763e6661 information.cpp: add widgets to the list tab, and add an
Paper <mrpapersonic@gmail.com>
parents: 46
diff changeset
128 });
88
1b19d80b3f8c dialog/information.cc: fix QGridLayout :)
Paper <mrpapersonic@gmail.com>
parents: 87
diff changeset
129
89
e6fab256ddc4 dialog/info: make some stuff more sane
Paper <mrpapersonic@gmail.com>
parents: 88
diff changeset
130 CREATE_SECTION(sg_anime_list_content, [this, &anime](QWidget* section, QGridLayout* layout){
e6fab256ddc4 dialog/info: make some stuff more sane
Paper <mrpapersonic@gmail.com>
parents: 88
diff changeset
131 /* Status */
87
4aef97f4d998 information: use QGridLayout please...
Paper <mrpapersonic@gmail.com>
parents: 86
diff changeset
132 layout->addWidget(new QLabel(tr("Status:"), section), 0, 0);
46
d0adc4aedfc8 *: update...
Paper <mrpapersonic@gmail.com>
parents: 36
diff changeset
133
89
e6fab256ddc4 dialog/info: make some stuff more sane
Paper <mrpapersonic@gmail.com>
parents: 88
diff changeset
134 QComboBox* combo_box = new QComboBox(section);
e6fab256ddc4 dialog/info: make some stuff more sane
Paper <mrpapersonic@gmail.com>
parents: 88
diff changeset
135
87
4aef97f4d998 information: use QGridLayout please...
Paper <mrpapersonic@gmail.com>
parents: 86
diff changeset
136 for (unsigned int i = 0; i < Anime::ListStatuses.size(); i++)
89
e6fab256ddc4 dialog/info: make some stuff more sane
Paper <mrpapersonic@gmail.com>
parents: 88
diff changeset
137 combo_box->addItem(Strings::ToQString(Translate::ToString(Anime::ListStatuses[i])), static_cast<int>(Anime::ListStatuses[i]));
46
d0adc4aedfc8 *: update...
Paper <mrpapersonic@gmail.com>
parents: 36
diff changeset
138
89
e6fab256ddc4 dialog/info: make some stuff more sane
Paper <mrpapersonic@gmail.com>
parents: 88
diff changeset
139 connect(combo_box, QOverload<int>::of(&QComboBox::currentIndexChanged), this, [this, combo_box](int) {
e6fab256ddc4 dialog/info: make some stuff more sane
Paper <mrpapersonic@gmail.com>
parents: 88
diff changeset
140 _status = static_cast<Anime::ListStatus>(combo_box->currentData().toInt());
e6fab256ddc4 dialog/info: make some stuff more sane
Paper <mrpapersonic@gmail.com>
parents: 88
diff changeset
141 });
e6fab256ddc4 dialog/info: make some stuff more sane
Paper <mrpapersonic@gmail.com>
parents: 88
diff changeset
142 /* this should NEVER, EVER, be NOT_IN_LIST */
87
4aef97f4d998 information: use QGridLayout please...
Paper <mrpapersonic@gmail.com>
parents: 86
diff changeset
143 combo_box->setCurrentIndex(static_cast<int>(_status = anime.GetUserStatus()) - 1);
88
1b19d80b3f8c dialog/information.cc: fix QGridLayout :)
Paper <mrpapersonic@gmail.com>
parents: 87
diff changeset
144 combo_box->setFixedWidth(LAYOUT_ITEM_WIDTH);
87
4aef97f4d998 information: use QGridLayout please...
Paper <mrpapersonic@gmail.com>
parents: 86
diff changeset
145 layout->addWidget(combo_box, 1, 0);
89
e6fab256ddc4 dialog/info: make some stuff more sane
Paper <mrpapersonic@gmail.com>
parents: 88
diff changeset
146
e6fab256ddc4 dialog/info: make some stuff more sane
Paper <mrpapersonic@gmail.com>
parents: 88
diff changeset
147 /* Score */
87
4aef97f4d998 information: use QGridLayout please...
Paper <mrpapersonic@gmail.com>
parents: 86
diff changeset
148 layout->addWidget(new QLabel(tr("Score:"), section), 0, 1);
46
d0adc4aedfc8 *: update...
Paper <mrpapersonic@gmail.com>
parents: 36
diff changeset
149
87
4aef97f4d998 information: use QGridLayout please...
Paper <mrpapersonic@gmail.com>
parents: 86
diff changeset
150 QSpinBox* spin_box = new QSpinBox(section);
89
e6fab256ddc4 dialog/info: make some stuff more sane
Paper <mrpapersonic@gmail.com>
parents: 88
diff changeset
151 connect(spin_box, QOverload<int>::of(&QSpinBox::valueChanged), this, [this](int i) {
e6fab256ddc4 dialog/info: make some stuff more sane
Paper <mrpapersonic@gmail.com>
parents: 88
diff changeset
152 _score = i;
e6fab256ddc4 dialog/info: make some stuff more sane
Paper <mrpapersonic@gmail.com>
parents: 88
diff changeset
153 });
87
4aef97f4d998 information: use QGridLayout please...
Paper <mrpapersonic@gmail.com>
parents: 86
diff changeset
154 spin_box->setRange(0, 100);
4aef97f4d998 information: use QGridLayout please...
Paper <mrpapersonic@gmail.com>
parents: 86
diff changeset
155 spin_box->setSingleStep(5);
4aef97f4d998 information: use QGridLayout please...
Paper <mrpapersonic@gmail.com>
parents: 86
diff changeset
156 spin_box->setValue(_score = anime.GetUserScore());
88
1b19d80b3f8c dialog/information.cc: fix QGridLayout :)
Paper <mrpapersonic@gmail.com>
parents: 87
diff changeset
157 spin_box->setFixedWidth(LAYOUT_ITEM_WIDTH);
87
4aef97f4d998 information: use QGridLayout please...
Paper <mrpapersonic@gmail.com>
parents: 86
diff changeset
158 layout->addWidget(spin_box, 1, 1);
89
e6fab256ddc4 dialog/info: make some stuff more sane
Paper <mrpapersonic@gmail.com>
parents: 88
diff changeset
159 layout->setColumnStretch(layout->columnCount(), 1);
47
d8eb763e6661 information.cpp: add widgets to the list tab, and add an
Paper <mrpapersonic@gmail.com>
parents: 46
diff changeset
160 });
88
1b19d80b3f8c dialog/information.cc: fix QGridLayout :)
Paper <mrpapersonic@gmail.com>
parents: 87
diff changeset
161
1b19d80b3f8c dialog/information.cc: fix QGridLayout :)
Paper <mrpapersonic@gmail.com>
parents: 87
diff changeset
162 CREATE_SECTION(sg_anime_list_content, [this, &anime](QWidget* section, QGridLayout* layout){
1b19d80b3f8c dialog/information.cc: fix QGridLayout :)
Paper <mrpapersonic@gmail.com>
parents: 87
diff changeset
163 layout->addWidget(new QLabel(tr("Notes:"), section), 0, 0);
46
d0adc4aedfc8 *: update...
Paper <mrpapersonic@gmail.com>
parents: 36
diff changeset
164
87
4aef97f4d998 information: use QGridLayout please...
Paper <mrpapersonic@gmail.com>
parents: 86
diff changeset
165 QLineEdit* line_edit = new QLineEdit(section);
4aef97f4d998 information: use QGridLayout please...
Paper <mrpapersonic@gmail.com>
parents: 86
diff changeset
166 connect(line_edit, &QLineEdit::textChanged, this, [this](const QString& text) {
4aef97f4d998 information: use QGridLayout please...
Paper <mrpapersonic@gmail.com>
parents: 86
diff changeset
167 /* this sucks but I don't really want to implement anything smarter :) */
4aef97f4d998 information: use QGridLayout please...
Paper <mrpapersonic@gmail.com>
parents: 86
diff changeset
168 _notes = Strings::ToUtf8String(text);
47
d8eb763e6661 information.cpp: add widgets to the list tab, and add an
Paper <mrpapersonic@gmail.com>
parents: 46
diff changeset
169 });
87
4aef97f4d998 information: use QGridLayout please...
Paper <mrpapersonic@gmail.com>
parents: 86
diff changeset
170 line_edit->setText(Strings::ToQString(_notes = anime.GetUserNotes()));
4aef97f4d998 information: use QGridLayout please...
Paper <mrpapersonic@gmail.com>
parents: 86
diff changeset
171 line_edit->setPlaceholderText(tr("Enter your notes about this anime"));
88
1b19d80b3f8c dialog/information.cc: fix QGridLayout :)
Paper <mrpapersonic@gmail.com>
parents: 87
diff changeset
172 layout->addWidget(line_edit, 1, 0);
47
d8eb763e6661 information.cpp: add widgets to the list tab, and add an
Paper <mrpapersonic@gmail.com>
parents: 46
diff changeset
173 });
88
1b19d80b3f8c dialog/information.cc: fix QGridLayout :)
Paper <mrpapersonic@gmail.com>
parents: 87
diff changeset
174
89
e6fab256ddc4 dialog/info: make some stuff more sane
Paper <mrpapersonic@gmail.com>
parents: 88
diff changeset
175 CREATE_SECTION(sg_anime_list_content, [this, &anime](QWidget* section, QGridLayout* layout){
e6fab256ddc4 dialog/info: make some stuff more sane
Paper <mrpapersonic@gmail.com>
parents: 88
diff changeset
176 /* Started */
87
4aef97f4d998 information: use QGridLayout please...
Paper <mrpapersonic@gmail.com>
parents: 86
diff changeset
177 layout->addWidget(new QLabel(tr("Date started:"), section), 0, 0);
4aef97f4d998 information: use QGridLayout please...
Paper <mrpapersonic@gmail.com>
parents: 86
diff changeset
178
4aef97f4d998 information: use QGridLayout please...
Paper <mrpapersonic@gmail.com>
parents: 86
diff changeset
179 OptionalDate* date = new OptionalDate(true, section);
4aef97f4d998 information: use QGridLayout please...
Paper <mrpapersonic@gmail.com>
parents: 86
diff changeset
180 connect(date, &OptionalDate::DataChanged, this,
89
e6fab256ddc4 dialog/info: make some stuff more sane
Paper <mrpapersonic@gmail.com>
parents: 88
diff changeset
181 [this](bool enabled, Date date) { _started = enabled ? date : Date(); });
88
1b19d80b3f8c dialog/information.cc: fix QGridLayout :)
Paper <mrpapersonic@gmail.com>
parents: 87
diff changeset
182 date->setFixedWidth(LAYOUT_ITEM_WIDTH);
87
4aef97f4d998 information: use QGridLayout please...
Paper <mrpapersonic@gmail.com>
parents: 86
diff changeset
183 _started = anime.GetUserDateStarted();
4aef97f4d998 information: use QGridLayout please...
Paper <mrpapersonic@gmail.com>
parents: 86
diff changeset
184 if (!_started.IsValid()) {
4aef97f4d998 information: use QGridLayout please...
Paper <mrpapersonic@gmail.com>
parents: 86
diff changeset
185 date->SetEnabled(false);
4aef97f4d998 information: use QGridLayout please...
Paper <mrpapersonic@gmail.com>
parents: 86
diff changeset
186 _started = anime.GetAirDate();
4aef97f4d998 information: use QGridLayout please...
Paper <mrpapersonic@gmail.com>
parents: 86
diff changeset
187 }
4aef97f4d998 information: use QGridLayout please...
Paper <mrpapersonic@gmail.com>
parents: 86
diff changeset
188 date->SetDate(_started);
4aef97f4d998 information: use QGridLayout please...
Paper <mrpapersonic@gmail.com>
parents: 86
diff changeset
189 layout->addWidget(date, 1, 0);
46
d0adc4aedfc8 *: update...
Paper <mrpapersonic@gmail.com>
parents: 36
diff changeset
190
89
e6fab256ddc4 dialog/info: make some stuff more sane
Paper <mrpapersonic@gmail.com>
parents: 88
diff changeset
191 /* Completed */
87
4aef97f4d998 information: use QGridLayout please...
Paper <mrpapersonic@gmail.com>
parents: 86
diff changeset
192 layout->addWidget(new QLabel(tr("Date completed:"), section), 0, 1);
47
d8eb763e6661 information.cpp: add widgets to the list tab, and add an
Paper <mrpapersonic@gmail.com>
parents: 46
diff changeset
193
87
4aef97f4d998 information: use QGridLayout please...
Paper <mrpapersonic@gmail.com>
parents: 86
diff changeset
194 date = new OptionalDate(true, section);
4aef97f4d998 information: use QGridLayout please...
Paper <mrpapersonic@gmail.com>
parents: 86
diff changeset
195 connect(date, &OptionalDate::DataChanged, this,
89
e6fab256ddc4 dialog/info: make some stuff more sane
Paper <mrpapersonic@gmail.com>
parents: 88
diff changeset
196 [this](bool enabled, Date date) { _completed = enabled ? date : Date(); });
88
1b19d80b3f8c dialog/information.cc: fix QGridLayout :)
Paper <mrpapersonic@gmail.com>
parents: 87
diff changeset
197 date->setFixedWidth(LAYOUT_ITEM_WIDTH);
87
4aef97f4d998 information: use QGridLayout please...
Paper <mrpapersonic@gmail.com>
parents: 86
diff changeset
198 _completed = anime.GetUserDateCompleted();
4aef97f4d998 information: use QGridLayout please...
Paper <mrpapersonic@gmail.com>
parents: 86
diff changeset
199 if (!_completed.IsValid()) {
4aef97f4d998 information: use QGridLayout please...
Paper <mrpapersonic@gmail.com>
parents: 86
diff changeset
200 date->SetEnabled(false);
4aef97f4d998 information: use QGridLayout please...
Paper <mrpapersonic@gmail.com>
parents: 86
diff changeset
201 _completed = anime.GetAirDate();
4aef97f4d998 information: use QGridLayout please...
Paper <mrpapersonic@gmail.com>
parents: 86
diff changeset
202 }
4aef97f4d998 information: use QGridLayout please...
Paper <mrpapersonic@gmail.com>
parents: 86
diff changeset
203 date->SetDate(_completed);
4aef97f4d998 information: use QGridLayout please...
Paper <mrpapersonic@gmail.com>
parents: 86
diff changeset
204 layout->addWidget(date, 1, 1);
89
e6fab256ddc4 dialog/info: make some stuff more sane
Paper <mrpapersonic@gmail.com>
parents: 88
diff changeset
205 layout->setColumnStretch(layout->columnCount(), 1);
47
d8eb763e6661 information.cpp: add widgets to the list tab, and add an
Paper <mrpapersonic@gmail.com>
parents: 46
diff changeset
206 });
46
d0adc4aedfc8 *: update...
Paper <mrpapersonic@gmail.com>
parents: 36
diff changeset
207
68
2417121d894e *: normalize usage of layouts
Paper <mrpapersonic@gmail.com>
parents: 66
diff changeset
208 settings_layout->addWidget(sg_anime_list_content);
2417121d894e *: normalize usage of layouts
Paper <mrpapersonic@gmail.com>
parents: 66
diff changeset
209
89
e6fab256ddc4 dialog/info: make some stuff more sane
Paper <mrpapersonic@gmail.com>
parents: 88
diff changeset
210 /*
e6fab256ddc4 dialog/info: make some stuff more sane
Paper <mrpapersonic@gmail.com>
parents: 88
diff changeset
211 // commenting this out until it actually gets implemented :)
e6fab256ddc4 dialog/info: make some stuff more sane
Paper <mrpapersonic@gmail.com>
parents: 88
diff changeset
212
68
2417121d894e *: normalize usage of layouts
Paper <mrpapersonic@gmail.com>
parents: 66
diff changeset
213 settings_layout->addWidget(new TextWidgets::Header(tr("Local settings"), settings_widget));
46
d0adc4aedfc8 *: update...
Paper <mrpapersonic@gmail.com>
parents: 36
diff changeset
214
d0adc4aedfc8 *: update...
Paper <mrpapersonic@gmail.com>
parents: 36
diff changeset
215 QWidget* sg_local_content = new QWidget(settings_widget);
68
2417121d894e *: normalize usage of layouts
Paper <mrpapersonic@gmail.com>
parents: 66
diff changeset
216 QVBoxLayout* sg_local_layout = new QVBoxLayout(sg_local_content);
2417121d894e *: normalize usage of layouts
Paper <mrpapersonic@gmail.com>
parents: 66
diff changeset
217 sg_local_layout->setSpacing(5);
2417121d894e *: normalize usage of layouts
Paper <mrpapersonic@gmail.com>
parents: 66
diff changeset
218 sg_local_layout->setContentsMargins(12, 0, 0, 0);
46
d0adc4aedfc8 *: update...
Paper <mrpapersonic@gmail.com>
parents: 36
diff changeset
219
88
1b19d80b3f8c dialog/information.cc: fix QGridLayout :)
Paper <mrpapersonic@gmail.com>
parents: 87
diff changeset
220 CREATE_SECTION(sg_local_content, [this, &anime](QWidget* section, QGridLayout* layout){
1b19d80b3f8c dialog/information.cc: fix QGridLayout :)
Paper <mrpapersonic@gmail.com>
parents: 87
diff changeset
221 layout->addWidget(new QLabel(tr("Alternative titles:"), section), 0, 0);
46
d0adc4aedfc8 *: update...
Paper <mrpapersonic@gmail.com>
parents: 36
diff changeset
222
87
4aef97f4d998 information: use QGridLayout please...
Paper <mrpapersonic@gmail.com>
parents: 86
diff changeset
223 QLineEdit* line_edit = new QLineEdit("", section);
4aef97f4d998 information: use QGridLayout please...
Paper <mrpapersonic@gmail.com>
parents: 86
diff changeset
224 line_edit->setPlaceholderText(
4aef97f4d998 information: use QGridLayout please...
Paper <mrpapersonic@gmail.com>
parents: 86
diff changeset
225 tr("Enter alternative titles here, separated by a semicolon (i.e. Title 1; Title 2)"));
88
1b19d80b3f8c dialog/information.cc: fix QGridLayout :)
Paper <mrpapersonic@gmail.com>
parents: 87
diff changeset
226 layout->addWidget(line_edit, 1, 0);
46
d0adc4aedfc8 *: update...
Paper <mrpapersonic@gmail.com>
parents: 36
diff changeset
227
87
4aef97f4d998 information: use QGridLayout please...
Paper <mrpapersonic@gmail.com>
parents: 86
diff changeset
228 QCheckBox* checkbox = new QCheckBox(tr("Use the first alternative title to search for torrents"));
88
1b19d80b3f8c dialog/information.cc: fix QGridLayout :)
Paper <mrpapersonic@gmail.com>
parents: 87
diff changeset
229 layout->addWidget(checkbox, 2, 0);
47
d8eb763e6661 information.cpp: add widgets to the list tab, and add an
Paper <mrpapersonic@gmail.com>
parents: 46
diff changeset
230 });
89
e6fab256ddc4 dialog/info: make some stuff more sane
Paper <mrpapersonic@gmail.com>
parents: 88
diff changeset
231
e6fab256ddc4 dialog/info: make some stuff more sane
Paper <mrpapersonic@gmail.com>
parents: 88
diff changeset
232 settings_layout->addWidget(sg_local_content);
e6fab256ddc4 dialog/info: make some stuff more sane
Paper <mrpapersonic@gmail.com>
parents: 88
diff changeset
233 */
47
d8eb763e6661 information.cpp: add widgets to the list tab, and add an
Paper <mrpapersonic@gmail.com>
parents: 46
diff changeset
234 #undef CREATE_SECTION
d8eb763e6661 information.cpp: add widgets to the list tab, and add an
Paper <mrpapersonic@gmail.com>
parents: 46
diff changeset
235 #undef CREATE_FULL_WIDTH_SECTION
46
d0adc4aedfc8 *: update...
Paper <mrpapersonic@gmail.com>
parents: 36
diff changeset
236
68
2417121d894e *: normalize usage of layouts
Paper <mrpapersonic@gmail.com>
parents: 66
diff changeset
237 settings_layout->addStretch();
9
5c0397762b53 INCOMPLETE: megacommit :)
Paper <mrpapersonic@gmail.com>
parents:
diff changeset
238
51
75c804f713b2 window: add about window,
Paper <mrpapersonic@gmail.com>
parents: 47
diff changeset
239 tabbed_widget->addTab(main_information_widget, tr("Main information"));
75c804f713b2 window: add about window,
Paper <mrpapersonic@gmail.com>
parents: 47
diff changeset
240 tabbed_widget->addTab(settings_widget, tr("My list and settings"));
9
5c0397762b53 INCOMPLETE: megacommit :)
Paper <mrpapersonic@gmail.com>
parents:
diff changeset
241
68
2417121d894e *: normalize usage of layouts
Paper <mrpapersonic@gmail.com>
parents: 66
diff changeset
242 QVBoxLayout* main_layout = new QVBoxLayout(main_widget);
9
5c0397762b53 INCOMPLETE: megacommit :)
Paper <mrpapersonic@gmail.com>
parents:
diff changeset
243 main_layout->addWidget(anime_title);
5c0397762b53 INCOMPLETE: megacommit :)
Paper <mrpapersonic@gmail.com>
parents:
diff changeset
244 main_layout->addWidget(tabbed_widget);
62
4c6dd5999b39 *: update
Paper <mrpapersonic@gmail.com>
parents: 51
diff changeset
245 main_layout->setContentsMargins(0, 0, 0, 0);
86
c912128af0eb *: various macos fixes
Paper <mrpapersonic@gmail.com>
parents: 83
diff changeset
246 main_layout->setSpacing(12);
9
5c0397762b53 INCOMPLETE: megacommit :)
Paper <mrpapersonic@gmail.com>
parents:
diff changeset
247
68
2417121d894e *: normalize usage of layouts
Paper <mrpapersonic@gmail.com>
parents: 66
diff changeset
248 QHBoxLayout* layout = new QHBoxLayout(widget);
9
5c0397762b53 INCOMPLETE: megacommit :)
Paper <mrpapersonic@gmail.com>
parents:
diff changeset
249 layout->addWidget(sidebar);
5c0397762b53 INCOMPLETE: megacommit :)
Paper <mrpapersonic@gmail.com>
parents:
diff changeset
250 layout->addWidget(main_widget);
68
2417121d894e *: normalize usage of layouts
Paper <mrpapersonic@gmail.com>
parents: 66
diff changeset
251 layout->setSpacing(12);
9
5c0397762b53 INCOMPLETE: megacommit :)
Paper <mrpapersonic@gmail.com>
parents:
diff changeset
252
5c0397762b53 INCOMPLETE: megacommit :)
Paper <mrpapersonic@gmail.com>
parents:
diff changeset
253 QDialogButtonBox* button_box = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel, this);
83
d02fdf1d6708 *: huuuge update
Paper <mrpapersonic@gmail.com>
parents: 81
diff changeset
254 connect(button_box, &QDialogButtonBox::accepted, this, [this, accept, &anime] {
d02fdf1d6708 *: huuuge update
Paper <mrpapersonic@gmail.com>
parents: 81
diff changeset
255 SaveData(anime);
9
5c0397762b53 INCOMPLETE: megacommit :)
Paper <mrpapersonic@gmail.com>
parents:
diff changeset
256 accept();
5c0397762b53 INCOMPLETE: megacommit :)
Paper <mrpapersonic@gmail.com>
parents:
diff changeset
257 QDialog::accept();
5c0397762b53 INCOMPLETE: megacommit :)
Paper <mrpapersonic@gmail.com>
parents:
diff changeset
258 });
5c0397762b53 INCOMPLETE: megacommit :)
Paper <mrpapersonic@gmail.com>
parents:
diff changeset
259 connect(button_box, &QDialogButtonBox::rejected, this, &QDialog::reject);
5c0397762b53 INCOMPLETE: megacommit :)
Paper <mrpapersonic@gmail.com>
parents:
diff changeset
260
68
2417121d894e *: normalize usage of layouts
Paper <mrpapersonic@gmail.com>
parents: 66
diff changeset
261 QVBoxLayout* buttons_layout = new QVBoxLayout(this);
9
5c0397762b53 INCOMPLETE: megacommit :)
Paper <mrpapersonic@gmail.com>
parents:
diff changeset
262 buttons_layout->addWidget(widget);
5c0397762b53 INCOMPLETE: megacommit :)
Paper <mrpapersonic@gmail.com>
parents:
diff changeset
263 buttons_layout->addWidget(button_box, 0, Qt::AlignBottom);
5c0397762b53 INCOMPLETE: megacommit :)
Paper <mrpapersonic@gmail.com>
parents:
diff changeset
264 }
5c0397762b53 INCOMPLETE: megacommit :)
Paper <mrpapersonic@gmail.com>
parents:
diff changeset
265
5c0397762b53 INCOMPLETE: megacommit :)
Paper <mrpapersonic@gmail.com>
parents:
diff changeset
266 #include "gui/dialog/moc_information.cpp"