summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrei Karas <akaras@inbox.ru>2014-01-06 19:02:11 +0300
committerAndrei Karas <akaras@inbox.ru>2014-01-06 19:02:11 +0300
commit5007515135c05104a6b0e5b7991de310f53ce8ce (patch)
treecafecb9e445a5d1da67a47a8e1cc2de31c430e89
parentcc2142b0daaddbe76f4ba139c7d953f8beb0dd72 (diff)
downloadplus-5007515135c05104a6b0e5b7991de310f53ce8ce.tar.gz
plus-5007515135c05104a6b0e5b7991de310f53ce8ce.tar.bz2
plus-5007515135c05104a6b0e5b7991de310f53ce8ce.tar.xz
plus-5007515135c05104a6b0e5b7991de310f53ce8ce.zip
add support for include in units.xml.
-rw-r--r--src/units.cpp16
-rw-r--r--src/units.h2
2 files changed, 16 insertions, 2 deletions
diff --git a/src/units.cpp b/src/units.cpp
index f1ba1ba39..7593f564f 100644
--- a/src/units.cpp
+++ b/src/units.cpp
@@ -102,7 +102,12 @@ void Units::loadUnits()
units[UNIT_CURRENCY] = ud;
}
- XML::Document doc(paths.getStringValue("unitsFile"));
+ loadXmlFile(paths.getStringValue("unitsFile"));
+}
+
+void Units::loadXmlFile(const std::string &fileName)
+{
+ XML::Document doc(fileName);
const XmlNodePtr root = doc.rootNode();
if (!root || !xmlNameEqual(root, "units"))
@@ -114,7 +119,14 @@ void Units::loadUnits()
for_each_xml_child_node(node, root)
{
- if (xmlNameEqual(node, "unit"))
+ if (xmlNameEqual(node, "include"))
+ {
+ const std::string name = XML::getProperty(node, "name", "");
+ if (!name.empty())
+ loadXmlFile(name);
+ continue;
+ }
+ else if (xmlNameEqual(node, "unit"))
{
UnitDescription ud;
int level = 1;
diff --git a/src/units.h b/src/units.h
index 84ad177cd..18a3bd3a2 100644
--- a/src/units.h
+++ b/src/units.h
@@ -37,6 +37,8 @@ class Units final
*/
static void loadUnits();
+ static void loadXmlFile(const std::string &fileName);
+
/**
* Formats the given number in the correct currency format.
*/