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" |
