Fixed: When incrementing version of ini file, check servers by ID not by index
This commit is contained in:
parent
48a3439dec
commit
ed7ecba122
3 changed files with 53 additions and 7 deletions
|
@ -114,16 +114,26 @@ bool CConfigFile::load(const QString &filename)
|
|||
settings.endGroup();
|
||||
|
||||
// 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];
|
||||
|
||||
settings.beginGroup(QString("server_%1").arg(i));
|
||||
if (useDefaultValues)
|
||||
{
|
||||
// search server with same ID and use these values
|
||||
server.loadFromServers(defaultServers);
|
||||
}
|
||||
else
|
||||
{
|
||||
server.loadFromSettings(settings);
|
||||
}
|
||||
|
||||
settings.endGroup();
|
||||
}
|
||||
|
||||
|
|
|
@ -52,6 +52,38 @@ void CServer::loadFromSettings(const QSettings &settings)
|
|||
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
|
||||
{
|
||||
settings.setValue("id", id);
|
||||
|
|
|
@ -19,6 +19,10 @@
|
|||
|
||||
#include "operation.h"
|
||||
|
||||
class CServer;
|
||||
|
||||
typedef QVector<CServer> CServers;
|
||||
|
||||
class CServer
|
||||
{
|
||||
public:
|
||||
|
@ -44,6 +48,8 @@ public:
|
|||
QString comments;
|
||||
|
||||
void loadFromSettings(const QSettings &settings);
|
||||
void loadFromServers(const CServers &servers);
|
||||
void loadFromServer(const CServer &server);
|
||||
void saveToSettings(QSettings &settings) const;
|
||||
|
||||
// helpers
|
||||
|
@ -55,6 +61,4 @@ public:
|
|||
|
||||
extern const CServer NoServer;
|
||||
|
||||
typedef QVector<CServer> CServers;
|
||||
|
||||
#endif
|
||||
|
|
Loading…
Reference in a new issue