diff options
author | aqua <aqua@iserlohn-fortress.net> | 2022-08-24 16:38:49 +0300 |
---|---|---|
committer | aqua <aqua@iserlohn-fortress.net> | 2022-08-28 09:49:20 +0300 |
commit | c5ed279da0e74adb79c6c2a3e485cb9668b1c130 (patch) | |
tree | 4271dcd3530bec7df25b01190317bee56533df94 /src/settings/settingsdialog.cpp | |
parent | Load plugins from AppLocalDataLocation by default (diff) | |
download | rekonq-c5ed279da0e74adb79c6c2a3e485cb9668b1c130.tar.xz |
SettingsDialog: save settings when changed
- connect Restore Defaults button
Diffstat (limited to 'src/settings/settingsdialog.cpp')
-rw-r--r-- | src/settings/settingsdialog.cpp | 36 |
1 files changed, 32 insertions, 4 deletions
diff --git a/src/settings/settingsdialog.cpp b/src/settings/settingsdialog.cpp index 0c54856e..68fa7a26 100644 --- a/src/settings/settingsdialog.cpp +++ b/src/settings/settingsdialog.cpp @@ -13,17 +13,45 @@ #include "settingsdialog.h" #include "settingswidgets.hpp" #include "ui_settingsdialog.h" +#include <QPushButton> SettingsDialog::SettingsDialog(RekonqSettings *settings, QWidget *parent) : QDialog(parent), ui(new Ui::SettingsDialog) { ui->setupUi(this); + saveBtn = ui->buttonBox->button(QDialogButtonBox::Save); + Q_CHECK_PTR(saveBtn); + restoreDefaultsBtn = ui->buttonBox->button(QDialogButtonBox::RestoreDefaults); + Q_CHECK_PTR(restoreDefaultsBtn); - ui->stackedWidget->addWidget(new GeneralSettingsWidget(settings, this)); - ui->stackedWidget->addWidget(new AppearanceSettingsWidget(settings, this)); - ui->stackedWidget->addWidget(new NetworkSettingsWidget(settings, this)); - ui->stackedWidget->addWidget(new ShortcutsSettingsWidget(settings, this)); + if (!settings->value("FirstRun", true).toBool()) saveBtn->setEnabled(false); + + addPage(new GeneralSettingsWidget(settings, this)); + addPage(new AppearanceSettingsWidget(settings, this)); + addPage(new NetworkSettingsWidget(settings, this)); + addPage(new ShortcutsSettingsWidget(settings, this)); connect(ui->listWidget, &QListWidget::currentRowChanged, ui->stackedWidget, &QStackedWidget::setCurrentIndex); + + connect(restoreDefaultsBtn, &QPushButton::clicked, this, [this]() { + for (auto *w : ui->stackedWidget->findChildren<SettingsWidget *>(QString(), Qt::FindDirectChildrenOnly)) { + w->reset(); + } + }); + + connect(this, &QDialog::accepted, this, [this]() { + for (auto *w : ui->stackedWidget->findChildren<SettingsWidget *>(QString(), Qt::FindDirectChildrenOnly)) { + w->save(); + } + }); } SettingsDialog::~SettingsDialog() { delete ui; } + +void SettingsDialog::addPage(SettingsWidget *page) +{ + auto *item = new QListWidgetItem(page->objectName(), ui->listWidget); + item->setTextAlignment(Qt::AlignHCenter | Qt::AlignVCenter); + ui->stackedWidget->addWidget(page); + + connect(page, &SettingsWidget::changed, this, [this]() { saveBtn->setEnabled(true); }); +}
\ No newline at end of file |