Fixed: When incrementing version of ini file, check servers by ID not by index
This commit is contained in:
parent
af1efdcfb9
commit
e3291f999c
3 changed files with 53 additions and 7 deletions
|
@ -114,16 +114,26 @@ bool CConfigFile::load(const QString &filename)
|
||||||
settings.endGroup();
|
settings.endGroup();
|
||||||
|
|
||||||
// only resize if added servers in local ryzom_installer.ini
|
// only resize if added servers in local ryzom_installer.ini
|
||||||
int oldServersCount = m_servers.size();
|
CServers defaultServers = m_servers;
|
||||||
|
|
||||||
if (serversCount > oldServersCount) m_servers.resize(serversCount);
|
m_servers.resize(serversCount);
|
||||||
|
|
||||||
for (int i = oldServersCount; i < serversCount; ++i)
|
for (int i = 0; i < serversCount; ++i)
|
||||||
{
|
{
|
||||||
|
settings.beginGroup(QString("server_%1").arg(i));
|
||||||
|
|
||||||
CServer &server = m_servers[i];
|
CServer &server = m_servers[i];
|
||||||
|
|
||||||
settings.beginGroup(QString("server_%1").arg(i));
|
if (useDefaultValues)
|
||||||
server.loadFromSettings(settings);
|
{
|
||||||
|
// search server with same ID and use these values
|
||||||
|
server.loadFromServers(defaultServers);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
server.loadFromSettings(settings);
|
||||||
|
}
|
||||||
|
|
||||||
settings.endGroup();
|
settings.endGroup();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -52,6 +52,38 @@ void CServer::loadFromSettings(const QSettings &settings)
|
||||||
comments = settings.value("comments").toString();
|
comments = settings.value("comments").toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CServer::loadFromServers(const CServers &servers)
|
||||||
|
{
|
||||||
|
foreach(const CServer &server, servers)
|
||||||
|
{
|
||||||
|
if (server.id == id)
|
||||||
|
{
|
||||||
|
// found the same server
|
||||||
|
loadFromServer(server);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void CServer::loadFromServer(const CServer &server)
|
||||||
|
{
|
||||||
|
// copy all members
|
||||||
|
id = server.id;
|
||||||
|
name = server.name;
|
||||||
|
displayUrl = server.displayUrl;
|
||||||
|
filesListUrl = server.filesListUrl;
|
||||||
|
dataDownloadUrl = server.dataDownloadUrl;
|
||||||
|
dataDownloadFilename = server.dataDownloadFilename;
|
||||||
|
dataCompressedSize = server.dataCompressedSize;
|
||||||
|
dataUncompressedSize = server.dataUncompressedSize;
|
||||||
|
clientDownloadUrl = server.clientDownloadUrl;
|
||||||
|
clientDownloadFilename = server.clientDownloadFilename;
|
||||||
|
clientFilename = server.clientFilename;
|
||||||
|
clientFilenameOld = server.clientFilenameOld;
|
||||||
|
configurationFilename = server.configurationFilename;
|
||||||
|
comments = server.comments;
|
||||||
|
}
|
||||||
|
|
||||||
void CServer::saveToSettings(QSettings &settings) const
|
void CServer::saveToSettings(QSettings &settings) const
|
||||||
{
|
{
|
||||||
settings.setValue("id", id);
|
settings.setValue("id", id);
|
||||||
|
|
|
@ -19,6 +19,10 @@
|
||||||
|
|
||||||
#include "operation.h"
|
#include "operation.h"
|
||||||
|
|
||||||
|
class CServer;
|
||||||
|
|
||||||
|
typedef QVector<CServer> CServers;
|
||||||
|
|
||||||
class CServer
|
class CServer
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
@ -44,6 +48,8 @@ public:
|
||||||
QString comments;
|
QString comments;
|
||||||
|
|
||||||
void loadFromSettings(const QSettings &settings);
|
void loadFromSettings(const QSettings &settings);
|
||||||
|
void loadFromServers(const CServers &servers);
|
||||||
|
void loadFromServer(const CServer &server);
|
||||||
void saveToSettings(QSettings &settings) const;
|
void saveToSettings(QSettings &settings) const;
|
||||||
|
|
||||||
// helpers
|
// helpers
|
||||||
|
@ -55,6 +61,4 @@ public:
|
||||||
|
|
||||||
extern const CServer NoServer;
|
extern const CServer NoServer;
|
||||||
|
|
||||||
typedef QVector<CServer> CServers;
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in a new issue