Fix issue that conductors where connected wrong. This was, because instead of reusing the id's stored in the Terminal, new id's where created

This commit is contained in:
Martin Marmsoler 2020-10-08 19:05:30 +02:00
parent 52f886e34b
commit 0cc6558281
4 changed files with 8 additions and 20 deletions

View File

@ -750,12 +750,11 @@ QDomDocument Diagram::toXml(bool whole_content) {
} }
// table de correspondance entre les adresses des bornes et leurs ids // table de correspondance entre les adresses des bornes et leurs ids
QHash<Terminal *, int> table_adr_id;
if (!list_elements.isEmpty()) { if (!list_elements.isEmpty()) {
auto dom_elements = document.createElement("elements"); auto dom_elements = document.createElement("elements");
for (auto elmt : list_elements) { for (auto elmt : list_elements) {
dom_elements.appendChild(elmt->toXml(document, table_adr_id)); dom_elements.appendChild(elmt->toXml(document));
} }
dom_root.appendChild(dom_elements); dom_root.appendChild(dom_elements);
} }
@ -763,7 +762,6 @@ QDomDocument Diagram::toXml(bool whole_content) {
if (!list_conductors.isEmpty()) { if (!list_conductors.isEmpty()) {
auto dom_conductors = document.createElement("conductors"); auto dom_conductors = document.createElement("conductors");
for (auto cond : list_conductors) { for (auto cond : list_conductors) {
//dom_conductors.appendChild(cond->toXml(document, table_adr_id));
dom_conductors.appendChild(cond->toXml(document)); dom_conductors.appendChild(cond->toXml(document));
} }
dom_root.appendChild(dom_conductors); dom_root.appendChild(dom_conductors);

View File

@ -108,8 +108,7 @@ QDomDocument ExportElementTextPattern::xmlConf() const
root.setAttribute("name", m_name); root.setAttribute("name", m_name);
doc.appendChild(root); doc.appendChild(root);
QHash<Terminal *, int> H; QDomElement elmt = m_element->toXml(doc);
QDomElement elmt = m_element->toXml(doc, H);
QDomElement texts = elmt.firstChildElement("dynamic_texts"); QDomElement texts = elmt.firstChildElement("dynamic_texts");
QDomElement groups = elmt.firstChildElement("texts_groups"); QDomElement groups = elmt.firstChildElement("texts_groups");

View File

@ -1023,7 +1023,7 @@ bool Element::fromXml(QDomElement &e, QHash<int, Terminal *> &table_id_adr, bool
methode methode
@return L'element XML representant cet element electrique @return L'element XML representant cet element electrique
*/ */
QDomElement Element::toXml(QDomDocument &document, QHash<Terminal *, int> &table_adr_id) const QDomElement Element::toXml(QDomDocument &document) const
{ {
QDomElement element = document.createElement("element"); QDomElement element = document.createElement("element");
@ -1050,25 +1050,16 @@ QDomElement Element::toXml(QDomDocument &document, QHash<Terminal *, int> &table
element.setAttribute("z", QString::number(this->zValue())); element.setAttribute("z", QString::number(this->zValue()));
element.setAttribute("orientation", QString::number(orientation())); element.setAttribute("orientation", QString::number(orientation()));
/* recupere le premier id a utiliser pour les bornes de cet element */
int id_terminal = 0;
if (!table_adr_id.isEmpty()) {
// trouve le plus grand id
int max_id_t = -1;
foreach (int id_t, table_adr_id.values()) {
if (id_t > max_id_t) max_id_t = id_t;
}
id_terminal = max_id_t + 1;
}
// enregistrement des bornes de l'appareil // enregistrement des bornes de l'appareil
QDomElement xml_terminals = document.createElement("terminals"); QDomElement xml_terminals = document.createElement("terminals");
// pour chaque enfant de l'element // pour chaque enfant de l'element
foreach(Terminal *t, terminals()) { foreach(Terminal *t, terminals()) {
// alors on enregistre la borne // alors on enregistre la borne
QDomElement terminal = t -> toXml(document); QDomElement terminal = t -> toXml(document);
terminal.setAttribute("id", id_terminal); // for backward compatibility if (t->ID() > 0) {
table_adr_id.insert(t, id_terminal ++); // for backward compatibility
terminal.setAttribute("id", t->ID()); // for backward compatibility
}
xml_terminals.appendChild(terminal); xml_terminals.appendChild(terminal);
} }
element.appendChild(xml_terminals); element.appendChild(xml_terminals);

View File

@ -113,7 +113,7 @@ class Element : public QetGraphicsItem // TODO: derive from propertiesInterface!
void editProperty() override; void editProperty() override;
static bool valideXml(QDomElement &); static bool valideXml(QDomElement &);
virtual bool fromXml(QDomElement &, QHash<int, Terminal *> &, bool = false); virtual bool fromXml(QDomElement &, QHash<int, Terminal *> &, bool = false);
virtual QDomElement toXml(QDomDocument &, QHash<Terminal *, int> &) const; virtual QDomElement toXml(QDomDocument &) const;
QUuid uuid() const; QUuid uuid() const;
int orientation() const; int orientation() const;