SettingsWindow: use list instead of map to preserve insertion order for sidebar items. (#20424)

* use a list instead of map to preserve insertion order

* unused signal

Co-authored-by: Adeeb Shihadeh <adeebshihadeh@gmail.com>
albatross
Dean Lee 2021-03-22 10:08:12 +08:00 committed by GitHub
parent e87d88490b
commit d34e414a65
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 7 additions and 17 deletions

View File

@ -293,11 +293,6 @@ QWidget * network_panel(QWidget * parent) {
}
void SettingsWindow::setActivePanel() {
auto *btn = qobject_cast<QPushButton *>(nav_btns->checkedButton());
panel_layout->setCurrentWidget(panels[btn->text()]);
}
SettingsWindow::SettingsWindow(QWidget *parent) : QFrame(parent) {
// setup two main layouts
QVBoxLayout *sidebar_layout = new QVBoxLayout();
@ -319,17 +314,17 @@ SettingsWindow::SettingsWindow(QWidget *parent) : QFrame(parent) {
QObject::connect(close_btn, SIGNAL(released()), this, SIGNAL(closeSettings()));
// setup panels
panels = {
{"Developer", developer_panel()},
QPair<QString, QWidget *> panels[] = {
{"Device", device_panel()},
{"Network", network_panel(this)},
{"Toggles", toggles_panel()},
{"Developer", developer_panel()},
};
sidebar_layout->addSpacing(45);
nav_btns = new QButtonGroup();
for (auto &panel : panels) {
QPushButton *btn = new QPushButton(panel.first);
for (auto &[name, panel] : panels) {
QPushButton *btn = new QPushButton(name);
btn->setCheckable(true);
btn->setStyleSheet(R"(
* {
@ -348,9 +343,9 @@ SettingsWindow::SettingsWindow(QWidget *parent) : QFrame(parent) {
nav_btns->addButton(btn);
sidebar_layout->addWidget(btn, 0, Qt::AlignRight);
panel_layout->addWidget(panel.second);
QObject::connect(btn, SIGNAL(released()), this, SLOT(setActivePanel()));
QObject::connect(btn, &QPushButton::released, [=](){emit sidebarPressed();});
panel_layout->addWidget(panel);
QObject::connect(btn, &QPushButton::released, [=, w = panel]() { panel_layout->setCurrentWidget(w); });
}
qobject_cast<QPushButton *>(nav_btns->buttons()[0])->setChecked(true);
sidebar_layout->setContentsMargins(50, 50, 100, 50);

View File

@ -37,16 +37,11 @@ public:
signals:
void closeSettings();
void sidebarPressed();
private:
QPushButton *sidebar_alert_widget;
QWidget *sidebar_widget;
std::map<QString, QWidget *> panels;
QButtonGroup *nav_btns;
QStackedLayout *panel_layout;
QFrame* panel_frame;
public slots:
void setActivePanel();
};