forked from qt-creator/qt-creator
SettingsAccessor: incrementVersion --> upgradeSettings
Also since incrementVersion is always called in a loop, move the loop inside the function. Change-Id: I6550a322b2423ed41f05c729b913647e52906cb9 Reviewed-by: Daniel Teske <daniel.teske@digia.com>
This commit is contained in:
@@ -502,6 +502,28 @@ private:
|
|||||||
|
|
||||||
} // namespace
|
} // namespace
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Upgrade the settings to a target version
|
||||||
|
*/
|
||||||
|
void SettingsAccessor::upgradeSettings(SettingsData &data, int toVersion) const
|
||||||
|
{
|
||||||
|
if (data.m_map.isEmpty())
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (data.version() >= toVersion
|
||||||
|
|| data.version() < m_firstVersion
|
||||||
|
|| toVersion > currentVersion())
|
||||||
|
return;
|
||||||
|
|
||||||
|
for (int i = data.version(); i < toVersion; ++i) {
|
||||||
|
VersionUpgrader *upgrader = m_handlers.value(data.version());
|
||||||
|
data.m_map = upgrader->upgrade(data.m_map);
|
||||||
|
data.m_version++;
|
||||||
|
}
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
namespace {
|
namespace {
|
||||||
|
|
||||||
// When restoring settings...
|
// When restoring settings...
|
||||||
@@ -674,12 +696,6 @@ void SettingsAccessor::backupUserFile() const
|
|||||||
QFile::copy(origName, backupName);
|
QFile::copy(origName, backupName);
|
||||||
}
|
}
|
||||||
|
|
||||||
void SettingsAccessor::incrementVersion(SettingsAccessor::SettingsData &data) const
|
|
||||||
{
|
|
||||||
data.m_map = m_handlers.value(data.version())->upgrade(data.m_map);
|
|
||||||
++data.m_version;
|
|
||||||
}
|
|
||||||
|
|
||||||
SettingsAccessor::SettingsData SettingsAccessor::readUserSettings() const
|
SettingsAccessor::SettingsData SettingsAccessor::readUserSettings() const
|
||||||
{
|
{
|
||||||
SettingsData result;
|
SettingsData result;
|
||||||
@@ -826,11 +842,8 @@ SettingsAccessor::SettingsData SettingsAccessor::mergeSettings(const SettingsAcc
|
|||||||
SettingsData newShared = shared;
|
SettingsData newShared = shared;
|
||||||
SettingsData result;
|
SettingsData result;
|
||||||
if (shared.isValid() && user.isValid()) {
|
if (shared.isValid() && user.isValid()) {
|
||||||
while (newUser.version() < newShared.version())
|
upgradeSettings(newUser, newShared.version());
|
||||||
incrementVersion(newUser);
|
upgradeSettings(newShared, newUser.version());
|
||||||
|
|
||||||
while (newShared.version() < newUser.version())
|
|
||||||
incrementVersion(newShared);
|
|
||||||
result = newUser;
|
result = newUser;
|
||||||
result.m_map = mergeSharedSettings(newUser.m_map, newShared.m_map);
|
result.m_map = mergeSharedSettings(newUser.m_map, newShared.m_map);
|
||||||
} else if (shared.isValid()) {
|
} else if (shared.isValid()) {
|
||||||
@@ -845,8 +858,7 @@ SettingsAccessor::SettingsData SettingsAccessor::mergeSettings(const SettingsAcc
|
|||||||
return result;
|
return result;
|
||||||
|
|
||||||
// Update from the base version to Creator's version.
|
// Update from the base version to Creator's version.
|
||||||
for (int i = result.version(); i < currentVersion(); ++i)
|
upgradeSettings(result, currentVersion());
|
||||||
incrementVersion(result);
|
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -81,7 +81,7 @@ private:
|
|||||||
Utils::FileName m_fileName;
|
Utils::FileName m_fileName;
|
||||||
};
|
};
|
||||||
|
|
||||||
void incrementVersion(SettingsData &data) const;
|
void upgradeSettings(SettingsData &data, int toVersion) const;
|
||||||
|
|
||||||
SettingsData readUserSettings() const;
|
SettingsData readUserSettings() const;
|
||||||
SettingsData readSharedSettings() const;
|
SettingsData readSharedSettings() const;
|
||||||
|
|||||||
Reference in New Issue
Block a user