diff --git a/sources/ElementsCollection/elementslocation.cpp b/sources/ElementsCollection/elementslocation.cpp index bec5d5ec5..0b27c4e2b 100644 --- a/sources/ElementsCollection/elementslocation.cpp +++ b/sources/ElementsCollection/elementslocation.cpp @@ -570,7 +570,6 @@ pugi::xml_document ElementsLocation::pugiXml() const { if (!m_project) { - QFile file (m_file_system_path); pugi::xml_document docu; if (docu.load_file(m_file_system_path.toStdString().c_str())) return docu; @@ -680,7 +679,8 @@ QUuid ElementsLocation::uuid() const QSettings set; if(set.value("use_pugixml").toBool()) { - pugi::xml_node uuid_node = pugiXml().document_element().child("uuid"); + auto document = pugiXml(); + auto uuid_node = document.document_element().child("uuid"); if (uuid_node.empty()) { return QUuid(); } @@ -765,8 +765,16 @@ DiagramContext ElementsLocation::elementInformations() const return context; } - QDomElement dom = this->xml().firstChildElement("elementInformations"); - context.fromXml(dom, "elementInformation"); + QSettings set; + if (set.value("use_pugixml").toBool()) + { + context.fromXml(pugiXml().document_element().child("elementInformations"), "elementInformation"); + } + else + { + QDomElement dom = this->xml().firstChildElement("elementInformations"); + context.fromXml(dom, "elementInformation"); + } return context; } diff --git a/sources/ElementsCollection/fileelementcollectionitem.cpp b/sources/ElementsCollection/fileelementcollectionitem.cpp index 95c2e8967..a28bc8f4a 100644 --- a/sources/ElementsCollection/fileelementcollectionitem.cpp +++ b/sources/ElementsCollection/fileelementcollectionitem.cpp @@ -120,20 +120,39 @@ QString FileElementCollectionItem::localName() else setText(QObject::tr("Collection inconnue")); } - else { + else + { + QSettings set; + if (set.value("use_pugixml").toBool()) + { + QString str(fileSystemPath() + "/qet_directory"); + pugi::xml_document docu; + if(docu.load_file(str.toStdString().c_str())) + { + if (QString(docu.document_element().name()) == "qet-directory") + { + NamesList nl; + nl.fromXml(docu.document_element()); + setText(nl.name()); + } + } + } + else + { //Open the qet_directory file, to get the traductions name of this dir - QFile dir_conf(fileSystemPath() + "/qet_directory"); + QFile dir_conf(fileSystemPath() + "/qet_directory"); - if (dir_conf.exists() && dir_conf.open(QIODevice::ReadOnly | QIODevice::Text)) { + if (dir_conf.exists() && dir_conf.open(QIODevice::ReadOnly | QIODevice::Text)) { //Get the content of the file - QDomDocument document; - if (document.setContent(&dir_conf)) { - QDomElement root = document.documentElement(); - if (root.tagName() == "qet-directory") { - NamesList nl; - nl.fromXml(root); - setText(nl.name()); + QDomDocument document; + if (document.setContent(&dir_conf)) { + QDomElement root = document.documentElement(); + if (root.tagName() == "qet-directory") { + NamesList nl; + nl.fromXml(root); + setText(nl.name()); + } } } } diff --git a/sources/diagramcontext.cpp b/sources/diagramcontext.cpp index 788aab01c..b2bc39cf2 100644 --- a/sources/diagramcontext.cpp +++ b/sources/diagramcontext.cpp @@ -154,6 +154,21 @@ void DiagramContext::fromXml(const QDomElement &e, const QString &tag_name) { } } +/** + * @brief DiagramContext::fromXml + * Read this context properties from the @dom_element, looking for tags named @tag_name + * @param dom_element : dom element to parse + * @param tag_name : tag name to find, by default "property" + */ +void DiagramContext::fromXml(const pugi::xml_node &dom_element, const QString &tag_name) +{ + for(auto node = dom_element.child(tag_name.toStdString().c_str()) ; node ; node = node.next_sibling(tag_name.toStdString().c_str())) + { + addValue(node.attribute("name").as_string(), QVariant(node.text().as_string())); + m_content_show.insert(node.attribute("name").as_string(), node.attribute("show").empty()? 1 : node.attribute("show").as_int()); + } +} + /** Export this context properties to \a settings by creating an array named \a array_name. diff --git a/sources/diagramcontext.h b/sources/diagramcontext.h index d60d7266b..b1ae60aa5 100644 --- a/sources/diagramcontext.h +++ b/sources/diagramcontext.h @@ -23,6 +23,8 @@ #include #include #include + +#include "pugixml.hpp" /** This class represents a diagram context, i.e. the data (a list of key/value pairs) of a diagram at a given time. It is notably used by titleblock templates @@ -74,6 +76,7 @@ class DiagramContext void toXml(QDomElement &, const QString & = "property") const; void fromXml(const QDomElement &, const QString & = "property"); + void fromXml(const pugi::xml_node &dom_element, const QString &tag_name = "property"); void toSettings(QSettings &, const QString &) const; void fromSettings(QSettings &, const QString &);