Mercurial > minori
annotate src/gui/dialog/settings.cc @ 218:c39ad2a8587d
strings: include cstdint
oops
author | Paper <mrpapersonic@gmail.com> |
---|---|
date | Sun, 07 Jan 2024 13:28:00 -0500 |
parents | 4eae379cb1ff |
children | f784b5b1914c |
rev | line source |
---|---|
9 | 1 #include "gui/dialog/settings.h" |
108 | 2 #include "core/session.h" |
46 | 3 #include "gui/widgets/sidebar.h" |
4 #include "gui/widgets/text.h" | |
9 | 5 #include <QDialogButtonBox> |
76 | 6 #include <QHBoxLayout> |
7 #include <QLabel> | |
9 | 8 #include <QStackedWidget> |
9 #include <QVBoxLayout> | |
6
1d82f6e04d7d
Update: add first parts to the settings dialog
Paper <mrpapersonic@gmail.com>
parents:
diff
changeset
|
10 #include <QWidget> |
108 | 11 #ifdef WIN32 |
12 #include "sys/win32/dark_theme.h" | |
13 #endif | |
6
1d82f6e04d7d
Update: add first parts to the settings dialog
Paper <mrpapersonic@gmail.com>
parents:
diff
changeset
|
14 |
9 | 15 SettingsPage::SettingsPage(QWidget* parent, QString title) : QWidget(parent) { |
6
1d82f6e04d7d
Update: add first parts to the settings dialog
Paper <mrpapersonic@gmail.com>
parents:
diff
changeset
|
16 setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Expanding); |
1d82f6e04d7d
Update: add first parts to the settings dialog
Paper <mrpapersonic@gmail.com>
parents:
diff
changeset
|
17 page_title = new QLabel(title, this); |
1d82f6e04d7d
Update: add first parts to the settings dialog
Paper <mrpapersonic@gmail.com>
parents:
diff
changeset
|
18 page_title->setWordWrap(false); |
1d82f6e04d7d
Update: add first parts to the settings dialog
Paper <mrpapersonic@gmail.com>
parents:
diff
changeset
|
19 page_title->setFrameShape(QFrame::Panel); |
1d82f6e04d7d
Update: add first parts to the settings dialog
Paper <mrpapersonic@gmail.com>
parents:
diff
changeset
|
20 page_title->setFrameShadow(QFrame::Sunken); |
36 | 21 |
22 QFont font(page_title->font()); | |
77 | 23 font.setPixelSize(12); |
36 | 24 font.setWeight(QFont::Bold); |
25 page_title->setFont(font); | |
26 | |
102 | 27 { |
28 QPalette pal = page_title->palette(); | |
29 pal.setColor(QPalette::Window, QColor(0xAB, 0xAB, 0xAB)); | |
30 pal.setColor(QPalette::WindowText, Qt::white); | |
31 page_title->setPalette(pal); | |
32 } | |
118
39521c47c7a3
*: another huge megacommit, SORRY
Paper <mrpapersonic@gmail.com>
parents:
116
diff
changeset
|
33 |
46 | 34 page_title->setAutoFillBackground(true); |
36 | 35 |
6
1d82f6e04d7d
Update: add first parts to the settings dialog
Paper <mrpapersonic@gmail.com>
parents:
diff
changeset
|
36 page_title->setFixedHeight(23); |
1d82f6e04d7d
Update: add first parts to the settings dialog
Paper <mrpapersonic@gmail.com>
parents:
diff
changeset
|
37 page_title->setAlignment(Qt::AlignVCenter | Qt::AlignLeft); |
1d82f6e04d7d
Update: add first parts to the settings dialog
Paper <mrpapersonic@gmail.com>
parents:
diff
changeset
|
38 page_title->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Fixed); |
46 | 39 |
6
1d82f6e04d7d
Update: add first parts to the settings dialog
Paper <mrpapersonic@gmail.com>
parents:
diff
changeset
|
40 tab_widget = new QTabWidget(this); |
1d82f6e04d7d
Update: add first parts to the settings dialog
Paper <mrpapersonic@gmail.com>
parents:
diff
changeset
|
41 tab_widget->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Expanding); |
1d82f6e04d7d
Update: add first parts to the settings dialog
Paper <mrpapersonic@gmail.com>
parents:
diff
changeset
|
42 |
68
2417121d894e
*: normalize usage of layouts
Paper <mrpapersonic@gmail.com>
parents:
64
diff
changeset
|
43 QVBoxLayout* layout = new QVBoxLayout(this); |
62 | 44 layout->setContentsMargins(0, 0, 0, 0); |
6
1d82f6e04d7d
Update: add first parts to the settings dialog
Paper <mrpapersonic@gmail.com>
parents:
diff
changeset
|
45 layout->addWidget(page_title); |
1d82f6e04d7d
Update: add first parts to the settings dialog
Paper <mrpapersonic@gmail.com>
parents:
diff
changeset
|
46 layout->addWidget(tab_widget); |
1d82f6e04d7d
Update: add first parts to the settings dialog
Paper <mrpapersonic@gmail.com>
parents:
diff
changeset
|
47 } |
1d82f6e04d7d
Update: add first parts to the settings dialog
Paper <mrpapersonic@gmail.com>
parents:
diff
changeset
|
48 |
1d82f6e04d7d
Update: add first parts to the settings dialog
Paper <mrpapersonic@gmail.com>
parents:
diff
changeset
|
49 void SettingsPage::SetTitle(QString title) { |
1d82f6e04d7d
Update: add first parts to the settings dialog
Paper <mrpapersonic@gmail.com>
parents:
diff
changeset
|
50 page_title->setText(title); |
1d82f6e04d7d
Update: add first parts to the settings dialog
Paper <mrpapersonic@gmail.com>
parents:
diff
changeset
|
51 } |
1d82f6e04d7d
Update: add first parts to the settings dialog
Paper <mrpapersonic@gmail.com>
parents:
diff
changeset
|
52 |
1d82f6e04d7d
Update: add first parts to the settings dialog
Paper <mrpapersonic@gmail.com>
parents:
diff
changeset
|
53 void SettingsPage::AddTab(QWidget* tab, QString title) { |
1d82f6e04d7d
Update: add first parts to the settings dialog
Paper <mrpapersonic@gmail.com>
parents:
diff
changeset
|
54 tab_widget->addTab(tab, title); |
1d82f6e04d7d
Update: add first parts to the settings dialog
Paper <mrpapersonic@gmail.com>
parents:
diff
changeset
|
55 } |
1d82f6e04d7d
Update: add first parts to the settings dialog
Paper <mrpapersonic@gmail.com>
parents:
diff
changeset
|
56 |
1d82f6e04d7d
Update: add first parts to the settings dialog
Paper <mrpapersonic@gmail.com>
parents:
diff
changeset
|
57 void SettingsPage::SaveInfo() { |
1d82f6e04d7d
Update: add first parts to the settings dialog
Paper <mrpapersonic@gmail.com>
parents:
diff
changeset
|
58 // no-op... child classes will implement this |
1d82f6e04d7d
Update: add first parts to the settings dialog
Paper <mrpapersonic@gmail.com>
parents:
diff
changeset
|
59 } |
1d82f6e04d7d
Update: add first parts to the settings dialog
Paper <mrpapersonic@gmail.com>
parents:
diff
changeset
|
60 |
1d82f6e04d7d
Update: add first parts to the settings dialog
Paper <mrpapersonic@gmail.com>
parents:
diff
changeset
|
61 void SettingsDialog::OnOK() { |
7 | 62 for (int i = 0; i < stacked->count(); i++) { |
64 | 63 reinterpret_cast<SettingsPage*>(stacked->widget(i))->SaveInfo(); |
6
1d82f6e04d7d
Update: add first parts to the settings dialog
Paper <mrpapersonic@gmail.com>
parents:
diff
changeset
|
64 } |
1d82f6e04d7d
Update: add first parts to the settings dialog
Paper <mrpapersonic@gmail.com>
parents:
diff
changeset
|
65 QDialog::accept(); |
1d82f6e04d7d
Update: add first parts to the settings dialog
Paper <mrpapersonic@gmail.com>
parents:
diff
changeset
|
66 } |
1d82f6e04d7d
Update: add first parts to the settings dialog
Paper <mrpapersonic@gmail.com>
parents:
diff
changeset
|
67 |
108 | 68 void SettingsDialog::showEvent(QShowEvent* event) { |
69 QDialog::showEvent(event); | |
70 #ifdef WIN32 | |
71 win32::SetTitleBarsToBlack(session.config.theme.IsInDarkTheme()); | |
72 #endif | |
73 } | |
74 | |
9 | 75 SettingsDialog::SettingsDialog(QWidget* parent) : QDialog(parent) { |
6
1d82f6e04d7d
Update: add first parts to the settings dialog
Paper <mrpapersonic@gmail.com>
parents:
diff
changeset
|
76 setFixedSize(755, 566); |
1d82f6e04d7d
Update: add first parts to the settings dialog
Paper <mrpapersonic@gmail.com>
parents:
diff
changeset
|
77 setWindowTitle(tr("Settings")); |
1d82f6e04d7d
Update: add first parts to the settings dialog
Paper <mrpapersonic@gmail.com>
parents:
diff
changeset
|
78 setWindowFlags(Qt::Dialog | Qt::CustomizeWindowHint | Qt::WindowTitleHint | Qt::WindowCloseButtonHint); |
108 | 79 |
80 QVBoxLayout* full_layout = new QVBoxLayout(this); | |
81 | |
82 { | |
83 QWidget* widget = new QWidget(this); | |
84 widget->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Expanding); | |
85 QHBoxLayout* layout = new QHBoxLayout(widget); | |
86 | |
87 { | |
88 sidebar = new SideBar(widget); | |
36 | 89 |
108 | 90 sidebar->setCurrentItem(sidebar->AddItem(tr("Services"), SideBar::CreateIcon(":/icons/24x24/globe.png"))); |
91 // sidebar->AddItem(tr("Library"), SideBar::CreateIcon(":/icons/24x24/inbox-film.png")); | |
92 sidebar->AddItem(tr("Application"), SideBar::CreateIcon(":/icons/24x24/application-sidebar-list.png")); | |
119
4eae379cb1ff
settings: add a very early recognition tab for configuring players and extensions
Paper <mrpapersonic@gmail.com>
parents:
118
diff
changeset
|
93 sidebar->AddItem(tr("Recognition"), SideBar::CreateIcon(":/icons/24x24/question.png")); |
108 | 94 // sidebar->AddItem(tr("Sharing"), SideBar::CreateIcon(":/icons/24x24/megaphone.png")); |
116
254b1d2b7096
settings: add torrents page, make rss feed configurable
Paper <mrpapersonic@gmail.com>
parents:
108
diff
changeset
|
95 sidebar->AddItem(tr("Torrents"), SideBar::CreateIcon(":/icons/24x24/feed.png")); |
108 | 96 // sidebar->AddItem(tr("Advanced"), SideBar::CreateIcon(":/icons/24x24/gear.png")); |
36 | 97 |
108 | 98 sidebar->setIconSize(QSize(24, 24)); |
99 sidebar->setFrameShape(QFrame::Box); | |
100 | |
101 QPalette pal(sidebar->palette()); | |
102 sidebar->SetBackgroundColor(pal.color(QPalette::Base)); | |
9 | 103 |
108 | 104 sidebar->setFixedWidth(158); |
105 sidebar->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Expanding); | |
106 layout->addWidget(sidebar); | |
107 } | |
7 | 108 |
108 | 109 { |
110 stacked = new QStackedWidget(widget); | |
111 stacked->addWidget(new SettingsPageServices(stacked)); | |
112 stacked->addWidget(new SettingsPageApplication(stacked)); | |
119
4eae379cb1ff
settings: add a very early recognition tab for configuring players and extensions
Paper <mrpapersonic@gmail.com>
parents:
118
diff
changeset
|
113 stacked->addWidget(new SettingsPageRecognition(stacked)); |
116
254b1d2b7096
settings: add torrents page, make rss feed configurable
Paper <mrpapersonic@gmail.com>
parents:
108
diff
changeset
|
114 stacked->addWidget(new SettingsPageTorrents(stacked)); |
108 | 115 stacked->setCurrentIndex(0); |
116 | |
117 connect(sidebar, &QListWidget::currentRowChanged, stacked, &QStackedWidget::setCurrentIndex); | |
6
1d82f6e04d7d
Update: add first parts to the settings dialog
Paper <mrpapersonic@gmail.com>
parents:
diff
changeset
|
118 |
108 | 119 layout->addWidget(stacked); |
120 } | |
121 | |
122 layout->setContentsMargins(0, 0, 0, 0); | |
123 full_layout->addWidget(widget); | |
124 } | |
9 | 125 |
108 | 126 { |
127 QDialogButtonBox* button_box = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel, this); | |
128 connect(button_box, &QDialogButtonBox::accepted, this, &SettingsDialog::OnOK); | |
129 connect(button_box, &QDialogButtonBox::rejected, this, &QDialog::reject); | |
130 full_layout->addWidget(button_box); | |
131 } | |
6
1d82f6e04d7d
Update: add first parts to the settings dialog
Paper <mrpapersonic@gmail.com>
parents:
diff
changeset
|
132 } |
1d82f6e04d7d
Update: add first parts to the settings dialog
Paper <mrpapersonic@gmail.com>
parents:
diff
changeset
|
133 |
9 | 134 #include "gui/dialog/moc_settings.cpp" |