13
0

Use XMLNode::get/set_property in ARDOUR::ExportFilename class

Serious improvement in code readability in ExportFilename::get_field
This commit is contained in:
Tim Mayberry 2016-08-28 09:51:00 +10:00
parent 8f488515e6
commit 589f564ed8

View File

@ -87,8 +87,8 @@ ExportFilename::get_state ()
FieldPair dir = analyse_folder(); FieldPair dir = analyse_folder();
child = node->add_child ("Folder"); child = node->add_child ("Folder");
child->add_property ("relative", dir.first ? "true" : "false"); child->set_property ("relative", dir.first);
child->add_property ("path", dir.second); child->set_property ("path", dir.second);
add_field (node, "label", include_label, label); add_field (node, "label", include_label, label);
add_field (node, "session", include_session); add_field (node, "session", include_session);
@ -99,7 +99,7 @@ ExportFilename::get_state ()
add_field (node, "date", include_date, enum_2_string (date_format)); add_field (node, "date", include_date, enum_2_string (date_format));
XMLNode * extra_node = new XMLNode ("ExportRevision"); XMLNode * extra_node = new XMLNode ("ExportRevision");
extra_node->add_property ("revision", to_string (revision, std::dec)); extra_node->set_property ("revision", revision);
session.add_extra_xml (*extra_node); session.add_extra_xml (*extra_node);
return *node; return *node;
@ -109,7 +109,6 @@ int
ExportFilename::set_state (const XMLNode & node) ExportFilename::set_state (const XMLNode & node)
{ {
XMLNode * child; XMLNode * child;
XMLProperty const * prop;
FieldPair pair; FieldPair pair;
child = node.child ("Folder"); child = node.child ("Folder");
@ -117,15 +116,14 @@ ExportFilename::set_state (const XMLNode & node)
folder = ""; folder = "";
if ((prop = child->property ("relative"))) { bool is_relative;
if (string_is_affirmative (prop->value())) { if (child->get_property ("relative", is_relative) && is_relative) {
folder = session.session_directory().root_path(); folder = session.session_directory ().root_path ();
}
} }
if ((prop = child->property ("path"))) { std::string tmp;
std::string tmp; if (child->get_property ("path", tmp)) {
tmp = Glib::build_filename (folder, prop->value()); tmp = Glib::build_filename (folder, tmp);
if (!Glib::file_test (tmp, Glib::FILE_TEST_EXISTS)) { if (!Glib::file_test (tmp, Glib::FILE_TEST_EXISTS)) {
warning << string_compose (_("Existing export folder for this session (%1) does not exist - ignored"), tmp) << endmsg; warning << string_compose (_("Existing export folder for this session (%1) does not exist - ignored"), tmp) << endmsg;
} else { } else {
@ -167,8 +165,8 @@ ExportFilename::set_state (const XMLNode & node)
extra_node = session.instant_xml ("ExportRevision"); extra_node = session.instant_xml ("ExportRevision");
} }
if (extra_node && (prop = extra_node->property ("revision"))) { if (extra_node) {
revision = atoi (prop->value()); extra_node->get_property ("revision", revision);
} }
return 0; return 0;
@ -365,10 +363,10 @@ ExportFilename::add_field (XMLNode * node, string const & name, bool enabled, st
return; return;
} }
child->add_property ("name", name); child->set_property ("name", name);
child->add_property ("enabled", enabled ? "true" : "false"); child->set_property ("enabled", enabled);
if (!value.empty()) { if (!value.empty()) {
child->add_property ("value", value); child->set_property ("value", value);
} }
} }
@ -381,20 +379,11 @@ ExportFilename::get_field (XMLNode const & node, string const & name)
XMLNodeList children = node.children(); XMLNodeList children = node.children();
for (XMLNodeList::iterator it = children.begin(); it != children.end(); ++it) { for (XMLNodeList::iterator it = children.begin(); it != children.end(); ++it) {
XMLProperty const * prop = (*it)->property ("name"); std::string str;
if (prop && !prop->value().compare (name)) { if ((*it)->get_property ("name", str) && name == str) {
prop = (*it)->property ("enabled"); (*it)->get_property ("enabled", pair.first);
if (prop && !prop->value().compare ("true")) { (*it)->get_property ("value", pair.second);
pair.first = true;
} else {
pair.first = false;
}
prop = (*it)->property ("value");
if (prop) {
pair.second = prop->value();
}
return pair; return pair;
} }