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:
Tobias Hunger
2014-02-27 11:46:07 +01:00
parent a2b8444879
commit feca029249
2 changed files with 26 additions and 14 deletions

View File

@@ -502,6 +502,28 @@ private:
} // 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 {
// When restoring settings...
@@ -674,12 +696,6 @@ void SettingsAccessor::backupUserFile() const
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
{
SettingsData result;
@@ -826,11 +842,8 @@ SettingsAccessor::SettingsData SettingsAccessor::mergeSettings(const SettingsAcc
SettingsData newShared = shared;
SettingsData result;
if (shared.isValid() && user.isValid()) {
while (newUser.version() < newShared.version())
incrementVersion(newUser);
while (newShared.version() < newUser.version())
incrementVersion(newShared);
upgradeSettings(newUser, newShared.version());
upgradeSettings(newShared, newUser.version());
result = newUser;
result.m_map = mergeSharedSettings(newUser.m_map, newShared.m_map);
} else if (shared.isValid()) {
@@ -845,8 +858,7 @@ SettingsAccessor::SettingsData SettingsAccessor::mergeSettings(const SettingsAcc
return result;
// Update from the base version to Creator's version.
for (int i = result.version(); i < currentVersion(); ++i)
incrementVersion(result);
upgradeSettings(result, currentVersion());
return result;
}

View File

@@ -81,7 +81,7 @@ private:
Utils::FileName m_fileName;
};
void incrementVersion(SettingsData &data) const;
void upgradeSettings(SettingsData &data, int toVersion) const;
SettingsData readUserSettings() const;
SettingsData readSharedSettings() const;