summaryrefslogtreecommitdiff
path: root/src/gui/serverdialog.cpp
diff options
context:
space:
mode:
authorThorbjørn Lindeijer <bjorn@lindeijer.nl>2025-01-19 20:29:13 +0100
committerThorbjørn Lindeijer <bjorn@lindeijer.nl>2025-01-20 10:46:09 +0100
commitaa2613c7037bd12448d58714b4bb317ea939d892 (patch)
tree8fb57a581b439b08d95a85ad57c2b6d1d91e17c4 /src/gui/serverdialog.cpp
parentbbbc318634f3be2c4d755e71d99cdfba5c2b82f3 (diff)
downloadmana-aa2613c7037bd12448d58714b4bb317ea939d892.tar.gz
mana-aa2613c7037bd12448d58714b4bb317ea939d892.tar.bz2
mana-aa2613c7037bd12448d58714b4bb317ea939d892.tar.xz
mana-aa2613c7037bd12448d58714b4bb317ea939d892.zip
Wrapped xmlNodePtr access with a Node class
Slightly more ergonomic and this eliminates direct libxml2 usage from many places.
Diffstat (limited to 'src/gui/serverdialog.cpp')
-rw-r--r--src/gui/serverdialog.cpp42
1 files changed, 19 insertions, 23 deletions
diff --git a/src/gui/serverdialog.cpp b/src/gui/serverdialog.cpp
index d437baae..bb978a78 100644
--- a/src/gui/serverdialog.cpp
+++ b/src/gui/serverdialog.cpp
@@ -427,15 +427,15 @@ void ServerDialog::downloadServerList()
void ServerDialog::loadServers()
{
XML::Document doc(mDir + "/serverlist.xml", false);
- xmlNodePtr rootNode = doc.rootNode();
+ XML::Node rootNode = doc.rootNode();
- if (!rootNode || !xmlStrEqual(rootNode->name, BAD_CAST "serverlist"))
+ if (!rootNode || rootNode.name() != "serverlist")
{
logger->log("Error loading server list!");
return;
}
- int version = XML::getProperty(rootNode, "version", 0);
+ int version = rootNode.getProperty("version", 0);
if (version != 1)
{
logger->log("Error: unsupported online server list version: %d",
@@ -443,14 +443,14 @@ void ServerDialog::loadServers()
return;
}
- for (auto serverNode : XML::Children(rootNode))
+ for (auto serverNode : rootNode.children())
{
- if (!xmlStrEqual(serverNode->name, BAD_CAST "server"))
+ if (serverNode.name() != "server")
continue;
ServerInfo server;
- std::string type = XML::getProperty(serverNode, "type", "unknown");
+ std::string type = serverNode.getProperty("type", "unknown");
server.type = ServerInfo::parseType(type);
@@ -466,9 +466,9 @@ void ServerDialog::loadServers()
continue;
}
- server.name = XML::getProperty(serverNode, "name", std::string());
+ server.name = serverNode.getProperty("name", std::string());
- std::string version = XML::getProperty(serverNode, "minimumVersion",
+ std::string version = serverNode.getProperty("minimumVersion",
std::string());
bool meetsMinimumVersion = compareStrI(version, PACKAGE_VERSION) <= 0;
@@ -481,30 +481,26 @@ void ServerDialog::loadServers()
else
version = strprintf(_("requires v%s"), version.c_str());
- for (auto subNode : XML::Children(serverNode))
+ for (auto subNode : serverNode.children())
{
- if (xmlStrEqual(subNode->name, BAD_CAST "connection"))
+ if (subNode.name() == "connection")
{
- server.hostname = XML::getProperty(subNode, "hostname", std::string());
- server.port = XML::getProperty(subNode, "port", 0);
+ server.hostname = subNode.getProperty("hostname", std::string());
+ server.port = subNode.getProperty("port", 0);
if (server.port == 0)
{
// If no port is given, use the default for the given type
server.port = ServerInfo::defaultPortForServerType(server.type);
}
}
- else if (subNode->children && subNode->children->content)
+ else if (subNode.name() == "description")
{
- const char *text = (const char*) subNode->children->content;
-
- if (xmlStrEqual(subNode->name, BAD_CAST "description"))
- {
- server.description = text;
- }
- else if (xmlStrEqual(subNode->name, BAD_CAST "persistentIp"))
- {
- server.persistentIp = strcmp(text, "1") == 0 || strcmp(text, "true") == 0;
- }
+ server.description = subNode.textContent();
+ }
+ else if (subNode.name() == "persistentIp")
+ {
+ const auto text = subNode.textContent();
+ server.persistentIp = text == "1" || text == "true";
}
}