comparison src/gui/dialog/settings.cpp @ 68:2417121d894e

*: normalize usage of layouts before, I used them two ways, once was by setting the layout later by using setLayout(QWidget), and the other was just using the constructor. I find the constructor to be easier to read, so I chose that one.
author Paper <mrpapersonic@gmail.com>
date Mon, 02 Oct 2023 21:33:25 -0400
parents fe719c109dbc
children 27a19dd6cba1
comparison
equal deleted inserted replaced
67:442065432549 68:2417121d894e
1 #include "gui/dialog/settings.h" 1 #include "gui/dialog/settings.h"
2 #include "gui/widgets/sidebar.h" 2 #include "gui/widgets/sidebar.h"
3 #include "gui/widgets/text.h" 3 #include "gui/widgets/text.h"
4 #include <QComboBox>
5 #include <QDialogButtonBox> 4 #include <QDialogButtonBox>
6 #include <QGroupBox>
7 #include <QHBoxLayout>
8 #include <QPlainTextDocumentLayout>
9 #include <QPlainTextEdit>
10 #include <QStackedWidget> 5 #include <QStackedWidget>
11 #include <QVBoxLayout> 6 #include <QVBoxLayout>
7 #include <QHBoxLayout>
12 #include <QWidget> 8 #include <QWidget>
13 9
14 SettingsPage::SettingsPage(QWidget* parent, QString title) : QWidget(parent) { 10 SettingsPage::SettingsPage(QWidget* parent, QString title) : QWidget(parent) {
15 setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Expanding); 11 setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Expanding);
16 page_title = new QLabel(title, this); 12 page_title = new QLabel(title, this);
34 page_title->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Fixed); 30 page_title->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Fixed);
35 31
36 tab_widget = new QTabWidget(this); 32 tab_widget = new QTabWidget(this);
37 tab_widget->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Expanding); 33 tab_widget->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Expanding);
38 34
39 QVBoxLayout* layout = new QVBoxLayout; 35 QVBoxLayout* layout = new QVBoxLayout(this);
40 layout->setContentsMargins(0, 0, 0, 0); 36 layout->setContentsMargins(0, 0, 0, 0);
41 layout->addWidget(page_title); 37 layout->addWidget(page_title);
42 layout->addWidget(tab_widget); 38 layout->addWidget(tab_widget);
43 setLayout(layout);
44 } 39 }
45 40
46 void SettingsPage::SetTitle(QString title) { 41 void SettingsPage::SetTitle(QString title) {
47 page_title->setText(title); 42 page_title->setText(title);
48 } 43 }
54 void SettingsPage::SaveInfo() { 49 void SettingsPage::SaveInfo() {
55 // no-op... child classes will implement this 50 // no-op... child classes will implement this
56 } 51 }
57 52
58 void SettingsDialog::OnOK() { 53 void SettingsDialog::OnOK() {
59 QStackedWidget* stacked = reinterpret_cast<QStackedWidget*>(layout->itemAt(1)->widget()); 54 QStackedWidget* stacked = reinterpret_cast<QStackedWidget*>(layout()->itemAt(1)->widget());
60 for (int i = 0; i < stacked->count(); i++) { 55 for (int i = 0; i < stacked->count(); i++) {
61 reinterpret_cast<SettingsPage*>(stacked->widget(i))->SaveInfo(); 56 reinterpret_cast<SettingsPage*>(stacked->widget(i))->SaveInfo();
62 } 57 }
63 QDialog::accept(); 58 QDialog::accept();
64 } 59 }
82 77
83 QFont font(sidebar->font()); 78 QFont font(sidebar->font());
84 font.setPointSize(9); 79 font.setPointSize(9);
85 sidebar->setFont(font); 80 sidebar->setFont(font);
86 81
87 QPalette pal; 82 QPalette pal(sidebar->palette());
88 pal.setColor(QPalette::Window, Qt::white); 83 pal.setColor(QPalette::Base, pal.color(QPalette::Window));
89 sidebar->setPalette(pal); 84 sidebar->setPalette(pal);
90 85
91 sidebar->setFixedWidth(158); 86 sidebar->setFixedWidth(158);
92 sidebar->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Expanding); 87 sidebar->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Expanding);
93 88
94 QStackedWidget* stacked = new QStackedWidget; 89 QStackedWidget* stacked = new QStackedWidget(this);
95 stacked->addWidget(new SettingsPageServices(stacked)); 90 stacked->addWidget(new SettingsPageServices(stacked));
96 stacked->addWidget(new SettingsPageApplication(stacked)); 91 stacked->addWidget(new SettingsPageApplication(stacked));
97 stacked->setCurrentIndex(0); 92 stacked->setCurrentIndex(0);
98 93
99 connect(sidebar, &QListWidget::currentRowChanged, stacked, &QStackedWidget::setCurrentIndex); 94 connect(sidebar, &QListWidget::currentRowChanged, stacked, &QStackedWidget::setCurrentIndex);
100 95
101 layout = new QHBoxLayout; 96 QHBoxLayout* layout = new QHBoxLayout(widget);
102 layout->addWidget(sidebar); 97 layout->addWidget(sidebar);
103 layout->addWidget(stacked); 98 layout->addWidget(stacked);
104 layout->setContentsMargins(0, 0, 0, 0); 99 layout->setContentsMargins(0, 0, 0, 0);
105 widget->setLayout(layout);
106 100
107 QDialogButtonBox* button_box = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel, this); 101 QDialogButtonBox* button_box = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel, this);
108 connect(button_box, &QDialogButtonBox::accepted, this, &SettingsDialog::OnOK); 102 connect(button_box, &QDialogButtonBox::accepted, this, &SettingsDialog::OnOK);
109 connect(button_box, &QDialogButtonBox::rejected, this, &QDialog::reject); 103 connect(button_box, &QDialogButtonBox::rejected, this, &QDialog::reject);
110 104
111 QVBoxLayout* buttons_layout = new QVBoxLayout(this); 105 QVBoxLayout* buttons_layout = new QVBoxLayout(this);
112 buttons_layout->addWidget(widget); 106 buttons_layout->addWidget(widget);
113 buttons_layout->addWidget(button_box); 107 buttons_layout->addWidget(button_box);
114 setLayout(buttons_layout);
115 } 108 }
116 109
117 #include "gui/dialog/moc_settings.cpp" 110 #include "gui/dialog/moc_settings.cpp"