summaryrefslogtreecommitdiff
path: root/src/gui
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
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')
-rw-r--r--src/gui/serverdialog.cpp42
-rw-r--r--src/gui/skilldialog.cpp22
-rw-r--r--src/gui/updaterwindow.cpp18
3 files changed, 39 insertions, 43 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";
}
}
diff --git a/src/gui/skilldialog.cpp b/src/gui/skilldialog.cpp
index 5b1676e2..5b85252d 100644
--- a/src/gui/skilldialog.cpp
+++ b/src/gui/skilldialog.cpp
@@ -313,7 +313,7 @@ void SkillDialog::loadSkills()
clearSkills();
XML::Document doc(SKILLS_FILE);
- xmlNodePtr root = doc.rootNode();
+ XML::Node root = doc.rootNode();
int setCount = 0;
std::string setName;
@@ -321,7 +321,7 @@ void SkillDialog::loadSkills()
SkillListBox *listbox;
SkillTab *tab;
- if (!root || !xmlStrEqual(root->name, BAD_CAST "skills"))
+ if (!root || root.name() != "skills")
{
logger->log("Error loading skills file: %s", SKILLS_FILE);
@@ -357,23 +357,23 @@ void SkillDialog::loadSkills()
return;
}
- for (auto set : XML::Children(root))
+ for (auto set : root.children())
{
- if (xmlStrEqual(set->name, BAD_CAST "set") ||
- xmlStrEqual(set->name, BAD_CAST "skill-set"))
+ if (set.name() == "set" ||
+ set.name() == "skill-set")
{
setCount++;
- setName = XML::getProperty(set, "name", strprintf(_("Skill Set %d"), setCount));
+ setName = set.getProperty("name", strprintf(_("Skill Set %d"), setCount));
auto *model = new SkillModel();
- for (auto node : XML::Children(set))
+ for (auto node : set.children())
{
- if (xmlStrEqual(node->name, BAD_CAST "skill"))
+ if (node.name() == "skill")
{
- int id = atoi(XML::getProperty(node, "id", "-1").c_str());
- std::string name = XML::getProperty(node, "name", strprintf(_("Skill %d"), id));
- std::string icon = XML::getProperty(node, "icon", "");
+ int id = atoi(node.getProperty("id", "-1").c_str());
+ std::string name = node.getProperty("name", strprintf(_("Skill %d"), id));
+ std::string icon = node.getProperty("icon", "");
auto *skill = new SkillInfo;
skill->id = id;
diff --git a/src/gui/updaterwindow.cpp b/src/gui/updaterwindow.cpp
index 353e2b35..a92911b4 100644
--- a/src/gui/updaterwindow.cpp
+++ b/src/gui/updaterwindow.cpp
@@ -56,26 +56,26 @@ std::vector<UpdateFile> loadXMLFile(const std::string &fileName)
{
std::vector<UpdateFile> files;
XML::Document doc(fileName, false);
- xmlNodePtr rootNode = doc.rootNode();
+ XML::Node rootNode = doc.rootNode();
- if (!rootNode || !xmlStrEqual(rootNode->name, BAD_CAST "updates"))
+ if (!rootNode || rootNode.name() != "updates")
{
logger->log("Error loading update file: %s", fileName.c_str());
return files;
}
- for (auto fileNode : XML::Children(rootNode))
+ for (auto fileNode : rootNode.children())
{
// Ignore all tags except for the "update" tags
- if (!xmlStrEqual(fileNode->name, BAD_CAST "update"))
+ if (fileNode.name() != "update")
continue;
UpdateFile file;
- file.name = XML::getProperty(fileNode, "file", std::string());
- file.hash = XML::getProperty(fileNode, "hash", std::string());
- file.type = XML::getProperty(fileNode, "type", "data");
- file.desc = XML::getProperty(fileNode, "description", std::string());
- file.required = XML::getProperty(fileNode, "required", "yes") == "yes";
+ file.name = fileNode.getProperty("file", std::string());
+ file.hash = fileNode.getProperty("hash", std::string());
+ file.type = fileNode.getProperty("type", "data");
+ file.desc = fileNode.getProperty("description", std::string());
+ file.required = fileNode.getProperty("required", "yes") == "yes";
files.push_back(file);
}