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 } // 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;
} }

View File

@@ -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;