From b76a9654ccba246099ae8305305bc07dd188d764 Mon Sep 17 00:00:00 2001 From: Olivier Goffart Date: Thu, 26 Jan 2017 10:00:19 +0100 Subject: [PATCH] General Settings: Make sure to reload the settings when an account is added The Size limit, or confirmation checkboxes might have changed. We need to guard against saving if the control changes while we are loading Issue: https://github.com/owncloud/client/pull/5340#issuecomment-274878023 --- src/gui/generalsettings.cpp | 8 ++++++++ src/gui/generalsettings.h | 3 ++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/src/gui/generalsettings.cpp b/src/gui/generalsettings.cpp index 25a3c2828..c4474b5e2 100644 --- a/src/gui/generalsettings.cpp +++ b/src/gui/generalsettings.cpp @@ -32,6 +32,7 @@ #include #include +#include namespace OCC { @@ -66,6 +67,7 @@ GeneralSettings::GeneralSettings(QWidget *parent) : connect(_ui->crashreporterCheckBox, SIGNAL(toggled(bool)), SLOT(saveMiscSettings())); connect(_ui->newFolderLimitCheckBox, SIGNAL(toggled(bool)), SLOT(saveMiscSettings())); connect(_ui->newFolderLimitSpinBox, SIGNAL(valueChanged(int)), SLOT(saveMiscSettings())); + connect(_ui->newExternalStorage, SIGNAL(toggled(bool)), SLOT(saveMiscSettings())); #ifndef WITH_CRASHREPORTER _ui->crashreporterCheckBox->setVisible(false); @@ -85,6 +87,9 @@ GeneralSettings::GeneralSettings(QWidget *parent) : _ui->monoIconsCheckBox->setVisible(QDir(themeDir).exists()); connect(_ui->ignoredFilesButton, SIGNAL(clicked()), SLOT(slotIgnoreFilesEditor())); + + // accountAdded means the wizard was finished and the wizard might change some options. + connect(AccountManager::instance(), SIGNAL(accountAdded(AccountState*)), this, SLOT(loadMiscSettings())); } GeneralSettings::~GeneralSettings() @@ -99,6 +104,7 @@ QSize GeneralSettings::sizeHint() const { void GeneralSettings::loadMiscSettings() { + QScopedValueRollback scope(_currentlyLoading, true); ConfigFile cfgFile; _ui->monoIconsCheckBox->setChecked(cfgFile.monoIcons()); _ui->desktopNotificationsCheckBox->setChecked(cfgFile.optionalDesktopNotifications()); @@ -132,6 +138,8 @@ void GeneralSettings::slotUpdateInfo() void GeneralSettings::saveMiscSettings() { + if (_currentlyLoading) + return; ConfigFile cfgFile; bool isChecked = _ui->monoIconsCheckBox->isChecked(); cfgFile.setMonoIcons(isChecked); diff --git a/src/gui/generalsettings.h b/src/gui/generalsettings.h index 1746f3fb5..740eddd71 100644 --- a/src/gui/generalsettings.h +++ b/src/gui/generalsettings.h @@ -45,13 +45,14 @@ private slots: void slotToggleOptionalDesktopNotifications(bool); void slotUpdateInfo(); void slotIgnoreFilesEditor(); + void loadMiscSettings(); private: - void loadMiscSettings(); Ui::GeneralSettings *_ui; QPointer _ignoreEditor; QPointer _syncLogDialog; + bool _currentlyLoading = false; }; -- 2.30.2