diff --git a/src/gui/dbsettings/DatabaseSettingsDialog.cpp b/src/gui/dbsettings/DatabaseSettingsDialog.cpp index c70c3c5d9f..1d228c74c1 100644 --- a/src/gui/dbsettings/DatabaseSettingsDialog.cpp +++ b/src/gui/dbsettings/DatabaseSettingsDialog.cpp @@ -33,7 +33,6 @@ #include "fdosecrets/DatabaseSettingsPageFdoSecrets.h" #endif -#include "core/Config.h" #include "core/Database.h" #include "core/Global.h" #include "gui/Icons.h" @@ -110,7 +109,6 @@ DatabaseSettingsDialog::DatabaseSettingsDialog(QWidget* parent) connect(m_securityTabWidget, SIGNAL(currentChanged(int)), SLOT(pageChanged())); connect(m_ui->categoryList, SIGNAL(categoryChanged(int)), m_ui->stackedWidget, SLOT(setCurrentIndex(int))); - connect(m_ui->advancedSettingsToggle, SIGNAL(toggled(bool)), SLOT(toggleAdvancedMode(bool))); #ifdef WITH_XC_BROWSER m_ui->categoryList->addCategory(tr("Browser Integration"), icons()->icon("internet-web-browser")); @@ -140,7 +138,6 @@ void DatabaseSettingsDialog::load(const QSharedPointer& db) for (const ExtraPage& page : asConst(m_extraPages)) { page.loadSettings(db); } - m_ui->advancedSettingsToggle->setChecked(config()->get(Config::GUI_AdvancedSettings).toBool()); m_db = db; } @@ -196,32 +193,5 @@ void DatabaseSettingsDialog::reject() void DatabaseSettingsDialog::pageChanged() { - int pageIndex = m_ui->stackedWidget->currentIndex(); - - bool visible = (pageIndex == Page::General && m_generalWidget->hasAdvancedMode()); - - if (Page::Security == pageIndex) { - int tabIndex = m_securityTabWidget->currentIndex(); - visible = (tabIndex == 0 && m_databaseKeyWidget->hasAdvancedMode()); - visible |= (tabIndex == 1 && m_encryptionWidget->hasAdvancedMode()); - } - - m_ui->advancedSettingsToggle->setVisible(visible); -} - -void DatabaseSettingsDialog::toggleAdvancedMode(bool advanced) -{ - if (m_generalWidget->hasAdvancedMode()) { - m_generalWidget->setAdvancedMode(advanced); - } - - if (m_databaseKeyWidget->hasAdvancedMode()) { - m_databaseKeyWidget->setAdvancedMode(advanced); - } - - if (m_encryptionWidget->hasAdvancedMode()) { - m_encryptionWidget->setAdvancedMode(advanced); - } - - config()->set(Config::GUI_AdvancedSettings, advanced); + m_ui->stackedWidget->currentIndex(); } diff --git a/src/gui/dbsettings/DatabaseSettingsDialog.h b/src/gui/dbsettings/DatabaseSettingsDialog.h index 290810411b..54c54ffa2a 100644 --- a/src/gui/dbsettings/DatabaseSettingsDialog.h +++ b/src/gui/dbsettings/DatabaseSettingsDialog.h @@ -73,7 +73,6 @@ private slots: void save(); void reject(); void pageChanged(); - void toggleAdvancedMode(bool advanced); private: enum Page diff --git a/src/gui/dbsettings/DatabaseSettingsDialog.ui b/src/gui/dbsettings/DatabaseSettingsDialog.ui index 1e10e4f1da..16d46646db 100644 --- a/src/gui/dbsettings/DatabaseSettingsDialog.ui +++ b/src/gui/dbsettings/DatabaseSettingsDialog.ui @@ -18,22 +18,11 @@ - - - - - Advanced Settings - - - - - - - QDialogButtonBox::Cancel|QDialogButtonBox::Ok - - - - + + + QDialogButtonBox::Cancel|QDialogButtonBox::Ok + + diff --git a/src/gui/dbsettings/DatabaseSettingsWidgetEncryption.cpp b/src/gui/dbsettings/DatabaseSettingsWidgetEncryption.cpp index 46bdd99932..a13b40f4fc 100644 --- a/src/gui/dbsettings/DatabaseSettingsWidgetEncryption.cpp +++ b/src/gui/dbsettings/DatabaseSettingsWidgetEncryption.cpp @@ -19,6 +19,7 @@ #include "ui_DatabaseSettingsWidgetEncryption.h" #include "core/AsyncTask.h" +#include "core/Config.h" #include "core/Database.h" #include "core/Global.h" #include "core/Metadata.h" @@ -36,7 +37,9 @@ DatabaseSettingsWidgetEncryption::DatabaseSettingsWidgetEncryption(QWidget* pare , m_ui(new Ui::DatabaseSettingsWidgetEncryption()) { m_ui->setupUi(this); + m_ui->advancedSettingsToggle->setChecked(config()->get(Config::GUI_AdvancedSettings).toBool()); + connect(m_ui->advancedSettingsToggle, SIGNAL(toggled(bool)), SLOT(setAdvancedMode(bool))); connect(m_ui->transformBenchmarkButton, SIGNAL(clicked()), SLOT(benchmarkTransformRounds())); connect(m_ui->kdfComboBox, SIGNAL(currentIndexChanged(int)), SLOT(changeKdf(int))); @@ -85,6 +88,8 @@ void DatabaseSettingsWidgetEncryption::initialize() return; } + setAdvancedMode(m_ui->advancedSettingsToggle->isChecked()); + bool isDirty = false; if (!m_db->kdf()) { @@ -376,6 +381,7 @@ void DatabaseSettingsWidgetEncryption::setAdvancedMode(bool advanced) m_ui->compatibilitySelection->setCurrentIndex(m_db->kdf()->uuid() == KeePass2::KDF_AES_KDBX3 ? KDBX3 : KDBX4); m_ui->stackedWidget->setCurrentIndex(0); } + config()->set(Config::GUI_AdvancedSettings, advanced); } void DatabaseSettingsWidgetEncryption::updateDecryptionTime(int value) diff --git a/src/gui/dbsettings/DatabaseSettingsWidgetEncryption.h b/src/gui/dbsettings/DatabaseSettingsWidgetEncryption.h index 69388da6b8..56a2e583ba 100644 --- a/src/gui/dbsettings/DatabaseSettingsWidgetEncryption.h +++ b/src/gui/dbsettings/DatabaseSettingsWidgetEncryption.h @@ -44,12 +44,12 @@ class DatabaseSettingsWidgetEncryption : public DatabaseSettingsWidget { return true; } - void setAdvancedMode(bool advanced) override; public slots: void initialize() override; void uninitialize() override; bool save() override; + void setAdvancedMode(bool advanced) override; static QString getTextualEncryptionTime(int millisecs); diff --git a/src/gui/dbsettings/DatabaseSettingsWidgetEncryption.ui b/src/gui/dbsettings/DatabaseSettingsWidgetEncryption.ui index 97da37475e..e3b3a08366 100644 --- a/src/gui/dbsettings/DatabaseSettingsWidgetEncryption.ui +++ b/src/gui/dbsettings/DatabaseSettingsWidgetEncryption.ui @@ -11,6 +11,13 @@ + + + + Advanced Settings + + +