preferences: don't remove/add pages in refreshPages()

This function was called when opening the preferences dialog
to update all the pages with the current preferences.

For unknown reasons it also removed / readded all the pages.
Remove that code and use the now leaner function when refreshing
the pages.

Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
This commit is contained in:
Berthold Stoeger 2020-11-24 13:54:21 +01:00 committed by Dirk Hohndel
parent f3a2ee8082
commit 0fab09a990

View file

@ -24,7 +24,6 @@
#include <QStackedWidget> #include <QStackedWidget>
#include <QDialogButtonBox> #include <QDialogButtonBox>
#include <QAbstractButton> #include <QAbstractButton>
#include <QDebug>
PreferencesDialog *PreferencesDialog::instance() PreferencesDialog *PreferencesDialog::instance()
{ {
@ -80,7 +79,12 @@ PreferencesDialog::PreferencesDialog()
pages.push_back(new PreferencesReset); pages.push_back(new PreferencesReset);
std::sort(pages.begin(), pages.end(), abstractpreferenceswidget_lessthan); std::sort(pages.begin(), pages.end(), abstractpreferenceswidget_lessthan);
refreshPages(); for (AbstractPreferencesWidget *page: pages) {
QListWidgetItem *item = new QListWidgetItem(page->icon(), page->name());
pagesList->addItem(item);
pagesStack->addWidget(page);
page->refreshSettings();
}
connect(pagesList, &QListWidget::currentRowChanged, connect(pagesList, &QListWidget::currentRowChanged,
pagesStack, &QStackedWidget::setCurrentIndex); pagesStack, &QStackedWidget::setCurrentIndex);
@ -106,21 +110,8 @@ void PreferencesDialog::buttonClicked(QAbstractButton* btn)
void PreferencesDialog::refreshPages() void PreferencesDialog::refreshPages()
{ {
// Remove things for (AbstractPreferencesWidget *page: pages)
pagesList->clear();
while(pagesStack->count()) {
QWidget *curr = pagesStack->widget(0);
pagesStack->removeWidget(curr);
curr->setParent(0);
}
// Read things
Q_FOREACH(AbstractPreferencesWidget *page, pages) {
QListWidgetItem *item = new QListWidgetItem(page->icon(), page->name());
pagesList->addItem(item);
pagesStack->addWidget(page);
page->refreshSettings(); page->refreshSettings();
}
} }
void PreferencesDialog::applyRequested(bool closeIt) void PreferencesDialog::applyRequested(bool closeIt)
@ -136,18 +127,14 @@ void PreferencesDialog::applyRequested(bool closeIt)
void PreferencesDialog::cancelRequested() void PreferencesDialog::cancelRequested()
{ {
Q_FOREACH(AbstractPreferencesWidget *page, pages) { refreshPages();
page->refreshSettings();
}
reject(); reject();
} }
void PreferencesDialog::defaultsRequested() void PreferencesDialog::defaultsRequested()
{ {
copy_prefs(&default_prefs, &prefs); copy_prefs(&default_prefs, &prefs);
Q_FOREACH(AbstractPreferencesWidget *page, pages) { refreshPages();
page->refreshSettings();
}
emit diveListNotifier.settingsChanged(); emit diveListNotifier.settingsChanged();
accept(); accept();
} }