Overhauled config clean-up code: Allow up to three "obsolete" sections. If more than three "obsolete" sections are found, all but the latest three are removed.

This commit is contained in:
LoRd_MuldeR 2015-10-24 15:27:51 +02:00
parent cabe1b3fca
commit eb4ba3cbd7
2 changed files with 28 additions and 11 deletions

View File

@ -35,7 +35,7 @@
#define VER_LAMEXP_MINOR_LO 3 #define VER_LAMEXP_MINOR_LO 3
#define VER_LAMEXP_TYPE Alpha #define VER_LAMEXP_TYPE Alpha
#define VER_LAMEXP_PATCH 1 #define VER_LAMEXP_PATCH 1
#define VER_LAMEXP_BUILD 1820 #define VER_LAMEXP_BUILD 1821
#define VER_LAMEXP_CONFG 1818 #define VER_LAMEXP_CONFG 1818
/////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////

View File

@ -336,24 +336,41 @@ SettingsModel::SettingsModel(void)
//Create settings //Create settings
QSettings *configFile = new QSettings(configPath, QSettings::IniFormat); QSettings *configFile = new QSettings(configPath, QSettings::IniFormat);
const QString groupKey = QString().sprintf("LameXP_%u%02u%05u", lamexp_version_major(), lamexp_version_minor(), lamexp_version_confg()); const QString groupKey = QString().sprintf("LameXP_%u%02u%05u", lamexp_version_major(), lamexp_version_minor(), lamexp_version_confg());
QStringList childGroups =configFile->childGroups(); const QStringList childGroups = configFile->childGroups();
//Clean-up settings //Clean-up settings
while(!childGroups.isEmpty()) if (!childGroups.empty())
{ {
QString current = childGroups.takeFirst(); static const int MAX_GROUPS = 3;
QRegExp filter("^LameXP_(\\d+)(\\d\\d)(\\d\\d\\d\\d\\d)$"); QRegExp filter("^LameXP_(\\d+)(\\d\\d)(\\d\\d\\d\\d\\d)$");
if(filter.indexIn(current) >= 0) QStringList obsoleteGroups;
for (QStringList::ConstIterator iter = childGroups.constBegin(); iter != childGroups.constEnd(); iter++)
{ {
bool ok = false; if (filter.indexIn(*iter) >= 0)
unsigned int temp = filter.cap(3).toUInt(&ok) + 10;
if(ok && (temp >= lamexp_version_confg()))
{ {
continue; quint32 temp[3] = { 0, 0, 0 };
if (MUtils::regexp_parse_uint32(filter, temp, 3))
{
if ((temp[0] < lamexp_version_major()) || ((temp[0] == lamexp_version_major()) && ((temp[1] < lamexp_version_minor()) || ((temp[1] == lamexp_version_minor()) && (temp[2] < lamexp_version_confg())))))
{
obsoleteGroups.append(*iter);
}
}
}
}
if (obsoleteGroups.count() > MAX_GROUPS)
{
qSort(obsoleteGroups);
for (int i = 0; i < MAX_GROUPS; i++)
{
obsoleteGroups.removeLast();
}
for (QStringList::ConstIterator iter = obsoleteGroups.constBegin(); iter != obsoleteGroups.constEnd(); iter++)
{
qWarning("Deleting obsolete group from config: %s", MUTILS_UTF8(*iter));
REMOVE_GROUP(configFile, (*iter));
} }
} }
qWarning("Deleting obsolete group from config: %s", MUTILS_UTF8(current));
REMOVE_GROUP(configFile, current);
} }
//Setup settings //Setup settings