diff options
author | hjk <hjk@qt.io> | 2023-04-18 14:36:46 +0200 |
---|---|---|
committer | hjk <hjk@qt.io> | 2023-04-26 06:32:52 +0000 |
commit | 3edc491b2ab5b2177503cf58e7d04c6ef7f61080 (patch) | |
tree | 33b8fa91b71865c0aaaa66c29c54fc6a597a66c8 | |
parent | 39dd0f8c0c24aa07fc51f7964c5009fb5ea26fd8 (diff) | |
download | qt-creator-3edc491b2ab5b2177503cf58e7d04c6ef7f61080.tar.gz |
Utils: Simplify SettingsAccessor constructors
Use setters instead.
Change-Id: I912234fa832eeb80519740ca011921f1e71d70b4
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
-rw-r--r-- | src/libs/utils/settingsaccessor.cpp | 45 | ||||
-rw-r--r-- | src/libs/utils/settingsaccessor.h | 17 | ||||
-rw-r--r-- | src/plugins/cmakeprojectmanager/cmaketoolsettingsaccessor.cpp | 5 | ||||
-rw-r--r-- | src/plugins/mesonprojectmanager/toolssettingsaccessor.cpp | 6 | ||||
-rw-r--r-- | src/plugins/projectexplorer/extraabi.cpp | 15 | ||||
-rw-r--r-- | src/plugins/projectexplorer/toolchainsettingsaccessor.cpp | 5 | ||||
-rw-r--r-- | src/plugins/projectexplorer/userfileaccessor.cpp | 12 | ||||
-rw-r--r-- | tests/auto/utils/settings/tst_settings.cpp | 5 |
8 files changed, 55 insertions, 55 deletions
diff --git a/src/libs/utils/settingsaccessor.cpp b/src/libs/utils/settingsaccessor.cpp index 0562f5cf98..275290674f 100644 --- a/src/libs/utils/settingsaccessor.cpp +++ b/src/libs/utils/settingsaccessor.cpp @@ -39,12 +39,7 @@ QMessageBox::StandardButtons SettingsAccessor::Issue::allButtons() const /*! * The SettingsAccessor can be used to read/write settings in XML format. */ -SettingsAccessor::SettingsAccessor(const QString &docType, const QString &applicationDisplayName) - : docType(docType), applicationDisplayName(applicationDisplayName) -{ - QTC_CHECK(!docType.isEmpty()); - QTC_CHECK(!applicationDisplayName.isEmpty()); -} +SettingsAccessor::SettingsAccessor() = default; SettingsAccessor::~SettingsAccessor() = default; @@ -63,6 +58,9 @@ QVariantMap SettingsAccessor::restoreSettings(QWidget *parent) const */ bool SettingsAccessor::saveSettings(const QVariantMap &data, QWidget *parent) const { + QTC_CHECK(!m_docType.isEmpty()); + QTC_CHECK(!m_applicationDisplayName.isEmpty()); + const std::optional<Issue> result = writeData(m_baseFilePath, data, parent); const ProceedInfo pi = result ? reportIssues(result.value(), m_baseFilePath, parent) : ProceedInfo::Continue; @@ -94,6 +92,9 @@ std::optional<SettingsAccessor::Issue> SettingsAccessor::writeData(const FilePat QVariantMap SettingsAccessor::restoreSettings(const FilePath &settingsPath, QWidget *parent) const { + QTC_CHECK(!m_docType.isEmpty()); + QTC_CHECK(!m_applicationDisplayName.isEmpty()); + const RestoreData result = readData(settingsPath, parent); const ProceedInfo pi = result.hasIssue() ? reportIssues(result.issue.value(), result.path, parent) @@ -118,7 +119,7 @@ SettingsAccessor::RestoreData SettingsAccessor::readFile(const FilePath &path) c const QVariantMap data = reader.restoreValues(); if (!m_readOnly && path == m_baseFilePath) { if (!m_writer) - m_writer = std::make_unique<PersistentSettingsWriter>(m_baseFilePath, docType); + m_writer = std::make_unique<PersistentSettingsWriter>(m_baseFilePath, m_docType); m_writer->setContents(data); } @@ -141,7 +142,7 @@ std::optional<SettingsAccessor::Issue> SettingsAccessor::writeFile(const FilePat QString errorMessage; if (!m_readOnly && (!m_writer || m_writer->fileName() != path)) - m_writer = std::make_unique<PersistentSettingsWriter>(path, docType); + m_writer = std::make_unique<PersistentSettingsWriter>(path, m_docType); if (!m_writer->save(data, &errorMessage)) { return Issue(Tr::tr("Failed to Write File"), @@ -151,8 +152,7 @@ std::optional<SettingsAccessor::Issue> SettingsAccessor::writeFile(const FilePat } SettingsAccessor::ProceedInfo -SettingsAccessor::reportIssues(const SettingsAccessor::Issue &issue, const FilePath &path, - QWidget *parent) +SettingsAccessor::reportIssues(const Issue &issue, const FilePath &path, QWidget *parent) { if (!path.exists()) return Continue; @@ -221,10 +221,8 @@ std::optional<FilePath> BackUpStrategy::backupName(const QVariantMap &oldData, return path.stringAppended(".bak"); } -BackingUpSettingsAccessor::BackingUpSettingsAccessor(const QString &docType, - const QString &applicationDisplayName) : - SettingsAccessor(docType, applicationDisplayName), - m_strategy(std::make_unique<BackUpStrategy>()) +BackingUpSettingsAccessor::BackingUpSettingsAccessor() + : m_strategy(std::make_unique<BackUpStrategy>()) { } SettingsAccessor::RestoreData @@ -246,7 +244,7 @@ BackingUpSettingsAccessor::readData(const FilePath &path, QWidget *parent) const "for instance because they were written by an incompatible " "version of %2, or because a different settings path " "was used.</p>") - .arg(path.toUserOutput(), applicationDisplayName), Issue::Type::ERROR); + .arg(path.toUserOutput(), m_applicationDisplayName), Issue::Type::ERROR); i.buttons.insert(QMessageBox::Ok, DiscardAndContinue); result.issue = i; } @@ -402,9 +400,7 @@ QVariantMap VersionUpgrader::renameKeys(const QList<Change> &changes, QVariantMa * The UpgradingSettingsAccessor keeps version information in the settings file and will * upgrade the settings on load to the latest supported version (if possible). */ -UpgradingSettingsAccessor::UpgradingSettingsAccessor(const QString &docType, - const QString &applicationDisplayName) : - BackingUpSettingsAccessor(docType, applicationDisplayName) +UpgradingSettingsAccessor::UpgradingSettingsAccessor() { setStrategy(std::make_unique<VersionedBackUpStrategy>(this)); } @@ -526,7 +522,7 @@ UpgradingSettingsAccessor::validateVersionRange(const RestoreData &data) const "version of %2 was used are ignored, and " "changes made now will <b>not</b> be propagated to " "the newer version.</p>") - .arg(result.path.toUserOutput(), applicationDisplayName), Issue::Type::WARNING); + .arg(result.path.toUserOutput(), m_applicationDisplayName), Issue::Type::WARNING); i.buttons.insert(QMessageBox::Ok, Continue); result.issue = i; return result; @@ -535,13 +531,13 @@ UpgradingSettingsAccessor::validateVersionRange(const RestoreData &data) const const QByteArray readId = settingsIdFromMap(result.data); if (!settingsId().isEmpty() && !readId.isEmpty() && readId != settingsId()) { Issue i(Tr::tr("Settings File for \"%1\" from a Different Environment?") - .arg(applicationDisplayName), + .arg(m_applicationDisplayName), Tr::tr("<p>No settings file created by this instance " "of %1 was found.</p>" "<p>Did you work with this project on another machine or " "using a different settings path before?</p>" "<p>Do you still want to load the settings file \"%2\"?</p>") - .arg(applicationDisplayName, result.path.toUserOutput()), Issue::Type::WARNING); + .arg(m_applicationDisplayName, result.path.toUserOutput()), Issue::Type::WARNING); i.defaultButton = QMessageBox::No; i.escapeButton = QMessageBox::No; i.buttons.clear(); @@ -562,10 +558,7 @@ 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(const QString &docType, - const QString &applicationDisplayName) : - UpgradingSettingsAccessor(docType, applicationDisplayName) -{ } +MergingSettingsAccessor::MergingSettingsAccessor() = default; SettingsAccessor::RestoreData MergingSettingsAccessor::readData(const FilePath &path, QWidget *parent) const @@ -597,7 +590,7 @@ SettingsAccessor::RestoreData MergingSettingsAccessor::readData(const FilePath & secondaryData.issue = Issue(Tr::tr("Unsupported Merge Settings File"), Tr::tr("\"%1\" is not supported by %2. " "Do you want to try loading it anyway?") - .arg(secondaryData.path.toUserOutput(), applicationDisplayName), + .arg(secondaryData.path.toUserOutput(), m_applicationDisplayName), Issue::Type::WARNING); secondaryData.issue->buttons.clear(); secondaryData.issue->buttons.insert(QMessageBox::Yes, Continue); diff --git a/src/libs/utils/settingsaccessor.h b/src/libs/utils/settingsaccessor.h index 5ad37bd59c..683743ac62 100644 --- a/src/libs/utils/settingsaccessor.h +++ b/src/libs/utils/settingsaccessor.h @@ -51,7 +51,7 @@ using SettingsMergeResult = std::optional<QPair<QString, QVariant>>; class QTCREATOR_UTILS_EXPORT SettingsAccessor { public: - SettingsAccessor(const QString &docType, const QString &applicationDisplayName); + SettingsAccessor(); virtual ~SettingsAccessor(); enum ProceedInfo { Continue, DiscardAndContinue }; @@ -94,9 +94,6 @@ public: QVariantMap restoreSettings(QWidget *parent) const; bool saveSettings(const QVariantMap &data, QWidget *parent) const; - const QString docType; - const QString applicationDisplayName; - void setBaseFilePath(const FilePath &baseFilePath) { m_baseFilePath = baseFilePath; } void setReadOnly() { m_readOnly = true; } FilePath baseFilePath() const { return m_baseFilePath; } @@ -106,6 +103,9 @@ public: const QVariantMap &data, QWidget *parent) const; + void setDocType(const QString &docType) { m_docType = docType; } + void setApplicationDisplayName(const QString &name) { m_applicationDisplayName = name; } + protected: // Report errors: QVariantMap restoreSettings(const FilePath &settingsPath, QWidget *parent) const; @@ -117,6 +117,9 @@ protected: virtual RestoreData readFile(const FilePath &path) const; virtual std::optional<Issue> writeFile(const FilePath &path, const QVariantMap &data) const; + QString m_docType; + QString m_applicationDisplayName; + private: FilePath m_baseFilePath; mutable std::unique_ptr<PersistentSettingsWriter> m_writer; @@ -146,7 +149,7 @@ public: class QTCREATOR_UTILS_EXPORT BackingUpSettingsAccessor : public SettingsAccessor { public: - BackingUpSettingsAccessor(const QString &docType, const QString &applicationDisplayName); + BackingUpSettingsAccessor(); RestoreData readData(const FilePath &path, QWidget *parent) const override; std::optional<Issue> writeData(const FilePath &path, @@ -216,7 +219,7 @@ class MergingSettingsAccessor; class QTCREATOR_UTILS_EXPORT UpgradingSettingsAccessor : public BackingUpSettingsAccessor { public: - UpgradingSettingsAccessor(const QString &docType, const QString &applicationDisplayName); + UpgradingSettingsAccessor(); int currentVersion() const; int firstSupportedVersion() const; @@ -256,7 +259,7 @@ public: QString key; }; - MergingSettingsAccessor(const QString &docType, const QString &applicationDisplayName); + MergingSettingsAccessor(); RestoreData readData(const FilePath &path, QWidget *parent) const final; diff --git a/src/plugins/cmakeprojectmanager/cmaketoolsettingsaccessor.cpp b/src/plugins/cmakeprojectmanager/cmaketoolsettingsaccessor.cpp index fe66c4b490..614183352c 100644 --- a/src/plugins/cmakeprojectmanager/cmaketoolsettingsaccessor.cpp +++ b/src/plugins/cmakeprojectmanager/cmaketoolsettingsaccessor.cpp @@ -138,9 +138,10 @@ mergeTools(std::vector<std::unique_ptr<CMakeTool>> &sdkTools, // CMakeToolSettingsAccessor: // -------------------------------------------------------------------- -CMakeToolSettingsAccessor::CMakeToolSettingsAccessor() : - UpgradingSettingsAccessor("QtCreatorCMakeTools", Core::Constants::IDE_DISPLAY_NAME) +CMakeToolSettingsAccessor::CMakeToolSettingsAccessor() { + setDocType("QtCreatorCMakeTools"); + setApplicationDisplayName(Core::Constants::IDE_DISPLAY_NAME); setBaseFilePath(Core::ICore::userResourcePath(CMAKE_TOOL_FILENAME)); addVersionUpgrader(std::make_unique<CMakeToolSettingsUpgraderV0>()); diff --git a/src/plugins/mesonprojectmanager/toolssettingsaccessor.cpp b/src/plugins/mesonprojectmanager/toolssettingsaccessor.cpp index 8cc7b10d8f..a67175742b 100644 --- a/src/plugins/mesonprojectmanager/toolssettingsaccessor.cpp +++ b/src/plugins/mesonprojectmanager/toolssettingsaccessor.cpp @@ -21,13 +21,13 @@ namespace Internal { static QString entryName(int index) { - using namespace Constants; - return QString("%1%2").arg(ToolsSettings::ENTRY_KEY).arg(index); + return QString("%1%2").arg(Constants::ToolsSettings::ENTRY_KEY).arg(index); } ToolsSettingsAccessor::ToolsSettingsAccessor() - : UpgradingSettingsAccessor("QtCreatorMesonTools", Core::Constants::IDE_DISPLAY_NAME) { + setDocType("QtCreatorMesonTools"); + setApplicationDisplayName(Core::Constants::IDE_DISPLAY_NAME); setBaseFilePath(Core::ICore::userResourcePath(Constants::ToolsSettings::FILENAME)); } diff --git a/src/plugins/projectexplorer/extraabi.cpp b/src/plugins/projectexplorer/extraabi.cpp index 768c133a26..19f970b11a 100644 --- a/src/plugins/projectexplorer/extraabi.cpp +++ b/src/plugins/projectexplorer/extraabi.cpp @@ -35,16 +35,15 @@ public: class AbiFlavorAccessor : public UpgradingSettingsAccessor { public: - AbiFlavorAccessor(); + AbiFlavorAccessor() + { + setDocType("QtCreatorExtraAbi"); + setApplicationDisplayName(Core::Constants::IDE_DISPLAY_NAME); + setBaseFilePath(Core::ICore::installerResourcePath("abi.xml")); + addVersionUpgrader(std::make_unique<AbiFlavorUpgraderV0>()); + } }; -AbiFlavorAccessor::AbiFlavorAccessor() : - UpgradingSettingsAccessor("QtCreatorExtraAbi", Core::Constants::IDE_DISPLAY_NAME) -{ - setBaseFilePath(Core::ICore::installerResourcePath("abi.xml")); - - addVersionUpgrader(std::make_unique<AbiFlavorUpgraderV0>()); -} // -------------------------------------------------------------------- // ExtraAbi: diff --git a/src/plugins/projectexplorer/toolchainsettingsaccessor.cpp b/src/plugins/projectexplorer/toolchainsettingsaccessor.cpp index 5077083ac8..35224e4d02 100644 --- a/src/plugins/projectexplorer/toolchainsettingsaccessor.cpp +++ b/src/plugins/projectexplorer/toolchainsettingsaccessor.cpp @@ -169,9 +169,10 @@ static ToolChainOperations mergeToolChainLists(const Toolchains &systemFileTcs, // ToolChainSettingsAccessor: // -------------------------------------------------------------------- -ToolChainSettingsAccessor::ToolChainSettingsAccessor() : - UpgradingSettingsAccessor("QtCreatorToolChains", Core::Constants::IDE_DISPLAY_NAME) +ToolChainSettingsAccessor::ToolChainSettingsAccessor() { + setDocType("QtCreatorToolChains"); + setApplicationDisplayName(Core::Constants::IDE_DISPLAY_NAME); setBaseFilePath(Core::ICore::userResourcePath(TOOLCHAIN_FILENAME)); addVersionUpgrader(std::make_unique<ToolChainSettingsUpgraderV0>()); diff --git a/src/plugins/projectexplorer/userfileaccessor.cpp b/src/plugins/projectexplorer/userfileaccessor.cpp index 7d7a07a651..646e336643 100644 --- a/src/plugins/projectexplorer/userfileaccessor.cpp +++ b/src/plugins/projectexplorer/userfileaccessor.cpp @@ -283,19 +283,21 @@ FilePaths UserFileBackUpStrategy::readFileCandidates(const FilePath &baseFileNam // UserFileAccessor: // -------------------------------------------------------------------- -UserFileAccessor::UserFileAccessor(Project *project) : - MergingSettingsAccessor("QtCreatorProject", Core::Constants::IDE_DISPLAY_NAME), - m_project(project) +UserFileAccessor::UserFileAccessor(Project *project) + : m_project(project) { setStrategy(std::make_unique<VersionedBackUpStrategy>(this)); + setDocType("QtCreatorProject"); + setApplicationDisplayName(Core::Constants::IDE_DISPLAY_NAME); // Setup: const FilePath externalUser = externalUserFile(); const FilePath projectUser = projectUserFile(); setBaseFilePath(externalUser.isEmpty() ? projectUser : externalUser); - auto secondary - = std::make_unique<SettingsAccessor>(docType, applicationDisplayName); + auto secondary = std::make_unique<SettingsAccessor>(); + secondary->setDocType(m_docType); + secondary->setApplicationDisplayName(m_applicationDisplayName); secondary->setBaseFilePath(sharedFile()); secondary->setReadOnly(); setSecondaryAccessor(std::move(secondary)); diff --git a/tests/auto/utils/settings/tst_settings.cpp b/tests/auto/utils/settings/tst_settings.cpp index 9f723b916b..d45d673e4d 100644 --- a/tests/auto/utils/settings/tst_settings.cpp +++ b/tests/auto/utils/settings/tst_settings.cpp @@ -142,9 +142,10 @@ public: using Utils::MergingSettingsAccessor::upgradeSettings; }; -BasicTestSettingsAccessor::BasicTestSettingsAccessor(const FilePath &baseName, const QByteArray &id) : - Utils::MergingSettingsAccessor("TestData", TESTACCESSOR_APPLICATION_DN) +BasicTestSettingsAccessor::BasicTestSettingsAccessor(const FilePath &baseName, const QByteArray &id) { + setDocType("TestData"); + setApplicationDisplayName(TESTACCESSOR_APPLICATION_DN); setStrategy(std::make_unique<TestBackUpStrategy>(this)); setSettingsId(id); setBaseFilePath(baseName); |