diff options
author | Thorbjørn Lindeijer <bjorn@lindeijer.nl> | 2025-01-19 20:29:13 +0100 |
---|---|---|
committer | Thorbjørn Lindeijer <bjorn@lindeijer.nl> | 2025-01-20 10:46:09 +0100 |
commit | aa2613c7037bd12448d58714b4bb317ea939d892 (patch) | |
tree | 8fb57a581b439b08d95a85ad57c2b6d1d91e17c4 /src/gui | |
parent | bbbc318634f3be2c4d755e71d99cdfba5c2b82f3 (diff) | |
download | mana-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.cpp | 42 | ||||
-rw-r--r-- | src/gui/skilldialog.cpp | 22 | ||||
-rw-r--r-- | src/gui/updaterwindow.cpp | 18 |
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); } |