Utils: Collapse the two SettingsAccessor constructor hierarchies

Change-Id: I7b659c9e3c66700cfc92f9cfbd9df0535a1ca655
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This commit is contained in:
hjk
2023-04-18 14:14:39 +02:00
parent b4a6af026e
commit aeac83af78
4 changed files with 19 additions and 31 deletions

View File

@@ -223,14 +223,8 @@ std::optional<FilePath> BackUpStrategy::backupName(const QVariantMap &oldData,
BackingUpSettingsAccessor::BackingUpSettingsAccessor(const QString &docType, BackingUpSettingsAccessor::BackingUpSettingsAccessor(const QString &docType,
const QString &applicationDisplayName) : const QString &applicationDisplayName) :
BackingUpSettingsAccessor(std::make_unique<BackUpStrategy>(), docType, applicationDisplayName)
{ }
BackingUpSettingsAccessor::BackingUpSettingsAccessor(std::unique_ptr<BackUpStrategy> &&strategy,
const QString &docType,
const QString &applicationDisplayName) :
SettingsAccessor(docType, applicationDisplayName), SettingsAccessor(docType, applicationDisplayName),
m_strategy(std::move(strategy)) m_strategy(std::make_unique<BackUpStrategy>())
{ } { }
SettingsAccessor::RestoreData SettingsAccessor::RestoreData
@@ -272,6 +266,11 @@ std::optional<SettingsAccessor::Issue> BackingUpSettingsAccessor::writeData(cons
return SettingsAccessor::writeData(path, data, parent); return SettingsAccessor::writeData(path, data, parent);
} }
void BackingUpSettingsAccessor::setStrategy(std::unique_ptr<BackUpStrategy> &&strategy)
{
m_strategy = std::move(strategy);
}
FilePaths BackingUpSettingsAccessor::readFileCandidates(const FilePath &path) const FilePaths BackingUpSettingsAccessor::readFileCandidates(const FilePath &path) const
{ {
FilePaths result = filteredUnique(m_strategy->readFileCandidates(path)); FilePaths result = filteredUnique(m_strategy->readFileCandidates(path));
@@ -405,15 +404,10 @@ QVariantMap VersionUpgrader::renameKeys(const QList<Change> &changes, QVariantMa
*/ */
UpgradingSettingsAccessor::UpgradingSettingsAccessor(const QString &docType, UpgradingSettingsAccessor::UpgradingSettingsAccessor(const QString &docType,
const QString &applicationDisplayName) : const QString &applicationDisplayName) :
UpgradingSettingsAccessor(std::make_unique<VersionedBackUpStrategy>(this), docType, BackingUpSettingsAccessor(docType, applicationDisplayName)
applicationDisplayName) {
{ } setStrategy(std::make_unique<VersionedBackUpStrategy>(this));
}
UpgradingSettingsAccessor::UpgradingSettingsAccessor(std::unique_ptr<BackUpStrategy> &&strategy,
const QString &docType,
const QString &applicationDisplayName) :
BackingUpSettingsAccessor(std::move(strategy), docType, applicationDisplayName)
{ }
int UpgradingSettingsAccessor::currentVersion() const int UpgradingSettingsAccessor::currentVersion() const
{ {
@@ -568,10 +562,9 @@ UpgradingSettingsAccessor::validateVersionRange(const RestoreData &data) const
* MergingSettingsAccessor allows to merge secondary settings into the main settings. * MergingSettingsAccessor allows to merge secondary settings into the main settings.
* This is useful to e.g. handle .shared files together with .user files. * This is useful to e.g. handle .shared files together with .user files.
*/ */
MergingSettingsAccessor::MergingSettingsAccessor(std::unique_ptr<BackUpStrategy> &&strategy, MergingSettingsAccessor::MergingSettingsAccessor(const QString &docType,
const QString &docType,
const QString &applicationDisplayName) : const QString &applicationDisplayName) :
UpgradingSettingsAccessor(std::move(strategy), docType, applicationDisplayName) UpgradingSettingsAccessor(docType, applicationDisplayName)
{ } { }
SettingsAccessor::RestoreData MergingSettingsAccessor::readData(const FilePath &path, SettingsAccessor::RestoreData MergingSettingsAccessor::readData(const FilePath &path,

View File

@@ -147,8 +147,6 @@ class QTCREATOR_UTILS_EXPORT BackingUpSettingsAccessor : public SettingsAccessor
{ {
public: public:
BackingUpSettingsAccessor(const QString &docType, const QString &applicationDisplayName); BackingUpSettingsAccessor(const QString &docType, const QString &applicationDisplayName);
BackingUpSettingsAccessor(std::unique_ptr<BackUpStrategy> &&strategy, const QString &docType,
const QString &applicationDisplayName);
RestoreData readData(const FilePath &path, QWidget *parent) const override; RestoreData readData(const FilePath &path, QWidget *parent) const override;
std::optional<Issue> writeData(const FilePath &path, std::optional<Issue> writeData(const FilePath &path,
@@ -156,6 +154,7 @@ public:
QWidget *parent) const override; QWidget *parent) const override;
BackUpStrategy *strategy() const { return m_strategy.get(); } BackUpStrategy *strategy() const { return m_strategy.get(); }
void setStrategy(std::unique_ptr<BackUpStrategy> &&strategy);
private: private:
FilePaths readFileCandidates(const FilePath &path) const; FilePaths readFileCandidates(const FilePath &path) const;
@@ -218,8 +217,6 @@ class QTCREATOR_UTILS_EXPORT UpgradingSettingsAccessor : public BackingUpSetting
{ {
public: public:
UpgradingSettingsAccessor(const QString &docType, const QString &applicationDisplayName); UpgradingSettingsAccessor(const QString &docType, const QString &applicationDisplayName);
UpgradingSettingsAccessor(std::unique_ptr<BackUpStrategy> &&strategy, const QString &docType,
const QString &appDisplayName);
int currentVersion() const; int currentVersion() const;
int firstSupportedVersion() const; int firstSupportedVersion() const;
@@ -259,9 +256,7 @@ public:
QString key; QString key;
}; };
MergingSettingsAccessor(std::unique_ptr<BackUpStrategy> &&strategy, MergingSettingsAccessor(const QString &docType, const QString &applicationDisplayName);
const QString &docType,
const QString &applicationDisplayName);
RestoreData readData(const FilePath &path, QWidget *parent) const final; RestoreData readData(const FilePath &path, QWidget *parent) const final;

View File

@@ -284,11 +284,11 @@ FilePaths UserFileBackUpStrategy::readFileCandidates(const FilePath &baseFileNam
// -------------------------------------------------------------------- // --------------------------------------------------------------------
UserFileAccessor::UserFileAccessor(Project *project) : UserFileAccessor::UserFileAccessor(Project *project) :
MergingSettingsAccessor(std::make_unique<VersionedBackUpStrategy>(this), MergingSettingsAccessor("QtCreatorProject", Core::Constants::IDE_DISPLAY_NAME),
"QtCreatorProject",
Core::Constants::IDE_DISPLAY_NAME),
m_project(project) m_project(project)
{ {
setStrategy(std::make_unique<VersionedBackUpStrategy>(this));
// Setup: // Setup:
const FilePath externalUser = externalUserFile(); const FilePath externalUser = externalUserFile();
const FilePath projectUser = projectUserFile(); const FilePath projectUser = projectUserFile();

View File

@@ -143,9 +143,9 @@ public:
}; };
BasicTestSettingsAccessor::BasicTestSettingsAccessor(const FilePath &baseName, const QByteArray &id) : BasicTestSettingsAccessor::BasicTestSettingsAccessor(const FilePath &baseName, const QByteArray &id) :
Utils::MergingSettingsAccessor(std::make_unique<TestBackUpStrategy>(this), Utils::MergingSettingsAccessor("TestData", TESTACCESSOR_APPLICATION_DN)
"TestData", TESTACCESSOR_APPLICATION_DN)
{ {
setStrategy(std::make_unique<TestBackUpStrategy>(this));
setSettingsId(id); setSettingsId(id);
setBaseFilePath(baseName); setBaseFilePath(baseName);
} }