summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorhjk <hjk@qt.io>2023-04-18 14:36:46 +0200
committerhjk <hjk@qt.io>2023-04-26 06:32:52 +0000
commit3edc491b2ab5b2177503cf58e7d04c6ef7f61080 (patch)
tree33b8fa91b71865c0aaaa66c29c54fc6a597a66c8
parent39dd0f8c0c24aa07fc51f7964c5009fb5ea26fd8 (diff)
downloadqt-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.cpp45
-rw-r--r--src/libs/utils/settingsaccessor.h17
-rw-r--r--src/plugins/cmakeprojectmanager/cmaketoolsettingsaccessor.cpp5
-rw-r--r--src/plugins/mesonprojectmanager/toolssettingsaccessor.cpp6
-rw-r--r--src/plugins/projectexplorer/extraabi.cpp15
-rw-r--r--src/plugins/projectexplorer/toolchainsettingsaccessor.cpp5
-rw-r--r--src/plugins/projectexplorer/userfileaccessor.cpp12
-rw-r--r--tests/auto/utils/settings/tst_settings.cpp5
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);