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();
child = node->add_child ("Folder");
child->add_property ("relative", dir.first ? "true" : "false");
child->add_property ("path", dir.second);
child->set_property ("relative", dir.first);
child->set_property ("path", dir.second);
add_field (node, "label", include_label, label);
add_field (node, "session", include_session);
@ -99,7 +99,7 @@ ExportFilename::get_state ()
add_field (node, "date", include_date, enum_2_string (date_format));
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);
return *node;
@ -109,7 +109,6 @@ int
ExportFilename::set_state (const XMLNode & node)
{
XMLNode * child;
XMLProperty const * prop;
FieldPair pair;
child = node.child ("Folder");
@ -117,15 +116,14 @@ ExportFilename::set_state (const XMLNode & node)
folder = "";
if ((prop = child->property ("relative"))) {
if (string_is_affirmative (prop->value())) {
folder = session.session_directory().root_path();
}
bool is_relative;
if (child->get_property ("relative", is_relative) && is_relative) {
folder = session.session_directory ().root_path ();
}
if ((prop = child->property ("path"))) {
std::string tmp;
tmp = Glib::build_filename (folder, prop->value());
std::string tmp;
if (child->get_property ("path", tmp)) {
tmp = Glib::build_filename (folder, tmp);
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;
} else {
@ -167,8 +165,8 @@ ExportFilename::set_state (const XMLNode & node)
extra_node = session.instant_xml ("ExportRevision");
}
if (extra_node && (prop = extra_node->property ("revision"))) {
revision = atoi (prop->value());
if (extra_node) {
extra_node->get_property ("revision", revision);
}
return 0;
@ -365,10 +363,10 @@ ExportFilename::add_field (XMLNode * node, string const & name, bool enabled, st
return;
}
child->add_property ("name", name);
child->add_property ("enabled", enabled ? "true" : "false");
child->set_property ("name", name);
child->set_property ("enabled", enabled);
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();
for (XMLNodeList::iterator it = children.begin(); it != children.end(); ++it) {
XMLProperty const * prop = (*it)->property ("name");
if (prop && !prop->value().compare (name)) {
std::string str;
if ((*it)->get_property ("name", str) && name == str) {
prop = (*it)->property ("enabled");
if (prop && !prop->value().compare ("true")) {
pair.first = true;
} else {
pair.first = false;
}
prop = (*it)->property ("value");
if (prop) {
pair.second = prop->value();
}
(*it)->get_property ("enabled", pair.first);
(*it)->get_property ("value", pair.second);
return pair;
}