From aeac83af7813f6ca5c67281c6cd91fc77351830e Mon Sep 17 00:00:00 2001 From: hjk Date: Tue, 18 Apr 2023 14:14:39 +0200 Subject: Utils: Collapse the two SettingsAccessor constructor hierarchies Change-Id: I7b659c9e3c66700cfc92f9cfbd9df0535a1ca655 Reviewed-by: Reviewed-by: Christian Stenger --- src/libs/utils/settingsaccessor.cpp | 31 +++++++++--------------- src/libs/utils/settingsaccessor.h | 9 ++----- src/plugins/projectexplorer/userfileaccessor.cpp | 6 ++--- tests/auto/utils/settings/tst_settings.cpp | 4 +-- 4 files changed, 19 insertions(+), 31 deletions(-) diff --git a/src/libs/utils/settingsaccessor.cpp b/src/libs/utils/settingsaccessor.cpp index 24f922bf98..0562f5cf98 100644 --- a/src/libs/utils/settingsaccessor.cpp +++ b/src/libs/utils/settingsaccessor.cpp @@ -223,14 +223,8 @@ std::optional BackUpStrategy::backupName(const QVariantMap &oldData, BackingUpSettingsAccessor::BackingUpSettingsAccessor(const QString &docType, const QString &applicationDisplayName) : - BackingUpSettingsAccessor(std::make_unique(), docType, applicationDisplayName) -{ } - -BackingUpSettingsAccessor::BackingUpSettingsAccessor(std::unique_ptr &&strategy, - const QString &docType, - const QString &applicationDisplayName) : SettingsAccessor(docType, applicationDisplayName), - m_strategy(std::move(strategy)) + m_strategy(std::make_unique()) { } SettingsAccessor::RestoreData @@ -272,6 +266,11 @@ std::optional BackingUpSettingsAccessor::writeData(cons return SettingsAccessor::writeData(path, data, parent); } +void BackingUpSettingsAccessor::setStrategy(std::unique_ptr &&strategy) +{ + m_strategy = std::move(strategy); +} + FilePaths BackingUpSettingsAccessor::readFileCandidates(const FilePath &path) const { FilePaths result = filteredUnique(m_strategy->readFileCandidates(path)); @@ -405,15 +404,10 @@ QVariantMap VersionUpgrader::renameKeys(const QList &changes, QVariantMa */ UpgradingSettingsAccessor::UpgradingSettingsAccessor(const QString &docType, const QString &applicationDisplayName) : - UpgradingSettingsAccessor(std::make_unique(this), docType, - applicationDisplayName) -{ } - -UpgradingSettingsAccessor::UpgradingSettingsAccessor(std::unique_ptr &&strategy, - const QString &docType, - const QString &applicationDisplayName) : - BackingUpSettingsAccessor(std::move(strategy), docType, applicationDisplayName) -{ } + BackingUpSettingsAccessor(docType, applicationDisplayName) +{ + setStrategy(std::make_unique(this)); +} int UpgradingSettingsAccessor::currentVersion() const { @@ -568,10 +562,9 @@ UpgradingSettingsAccessor::validateVersionRange(const RestoreData &data) const * MergingSettingsAccessor allows to merge secondary settings into the main settings. * This is useful to e.g. handle .shared files together with .user files. */ -MergingSettingsAccessor::MergingSettingsAccessor(std::unique_ptr &&strategy, - const QString &docType, +MergingSettingsAccessor::MergingSettingsAccessor(const QString &docType, const QString &applicationDisplayName) : - UpgradingSettingsAccessor(std::move(strategy), docType, applicationDisplayName) + UpgradingSettingsAccessor(docType, applicationDisplayName) { } SettingsAccessor::RestoreData MergingSettingsAccessor::readData(const FilePath &path, diff --git a/src/libs/utils/settingsaccessor.h b/src/libs/utils/settingsaccessor.h index 0c0af48500..5ad37bd59c 100644 --- a/src/libs/utils/settingsaccessor.h +++ b/src/libs/utils/settingsaccessor.h @@ -147,8 +147,6 @@ class QTCREATOR_UTILS_EXPORT BackingUpSettingsAccessor : public SettingsAccessor { public: BackingUpSettingsAccessor(const QString &docType, const QString &applicationDisplayName); - BackingUpSettingsAccessor(std::unique_ptr &&strategy, const QString &docType, - const QString &applicationDisplayName); RestoreData readData(const FilePath &path, QWidget *parent) const override; std::optional writeData(const FilePath &path, @@ -156,6 +154,7 @@ public: QWidget *parent) const override; BackUpStrategy *strategy() const { return m_strategy.get(); } + void setStrategy(std::unique_ptr &&strategy); private: FilePaths readFileCandidates(const FilePath &path) const; @@ -218,8 +217,6 @@ class QTCREATOR_UTILS_EXPORT UpgradingSettingsAccessor : public BackingUpSetting { public: UpgradingSettingsAccessor(const QString &docType, const QString &applicationDisplayName); - UpgradingSettingsAccessor(std::unique_ptr &&strategy, const QString &docType, - const QString &appDisplayName); int currentVersion() const; int firstSupportedVersion() const; @@ -259,9 +256,7 @@ public: QString key; }; - MergingSettingsAccessor(std::unique_ptr &&strategy, - const QString &docType, - const QString &applicationDisplayName); + MergingSettingsAccessor(const QString &docType, const QString &applicationDisplayName); RestoreData readData(const FilePath &path, QWidget *parent) const final; diff --git a/src/plugins/projectexplorer/userfileaccessor.cpp b/src/plugins/projectexplorer/userfileaccessor.cpp index bd0f60276c..7d7a07a651 100644 --- a/src/plugins/projectexplorer/userfileaccessor.cpp +++ b/src/plugins/projectexplorer/userfileaccessor.cpp @@ -284,11 +284,11 @@ FilePaths UserFileBackUpStrategy::readFileCandidates(const FilePath &baseFileNam // -------------------------------------------------------------------- UserFileAccessor::UserFileAccessor(Project *project) : - MergingSettingsAccessor(std::make_unique(this), - "QtCreatorProject", - Core::Constants::IDE_DISPLAY_NAME), + MergingSettingsAccessor("QtCreatorProject", Core::Constants::IDE_DISPLAY_NAME), m_project(project) { + setStrategy(std::make_unique(this)); + // Setup: const FilePath externalUser = externalUserFile(); const FilePath projectUser = projectUserFile(); diff --git a/tests/auto/utils/settings/tst_settings.cpp b/tests/auto/utils/settings/tst_settings.cpp index 433401b9e1..9f723b916b 100644 --- a/tests/auto/utils/settings/tst_settings.cpp +++ b/tests/auto/utils/settings/tst_settings.cpp @@ -143,9 +143,9 @@ public: }; BasicTestSettingsAccessor::BasicTestSettingsAccessor(const FilePath &baseName, const QByteArray &id) : - Utils::MergingSettingsAccessor(std::make_unique(this), - "TestData", TESTACCESSOR_APPLICATION_DN) + Utils::MergingSettingsAccessor("TestData", TESTACCESSOR_APPLICATION_DN) { + setStrategy(std::make_unique(this)); setSettingsId(id); setBaseFilePath(baseName); } -- cgit v1.2.1