diff --git a/sources/diagram.cpp b/sources/diagram.cpp index b5a66740b..e09ce7336 100644 --- a/sources/diagram.cpp +++ b/sources/diagram.cpp @@ -480,20 +480,19 @@ QDomDocument Diagram::toXml(bool whole_content) { //Folio Sequential Variables if (!m_elmt_unitfolio_max.isEmpty() || !m_elmt_tenfolio_max.isEmpty() || !m_elmt_hundredfolio_max.isEmpty()) { QDomElement folioContainedAutonum = document.createElement("elementautonumfoliosequentials"); - QHash::iterator i; if (!m_elmt_unitfolio_max.isEmpty()) { QDomElement elmtfolioseq = document.createElement("elementunitfolioseq"); - elementFolioSequentialsToXml(&m_elmt_unitfolio_max, &elmtfolioseq, "sequf_"); - folioContainedAutonum.appendChild(elmtfolioseq); + elementFolioSequentialsToXml(&m_elmt_unitfolio_max, &elmtfolioseq, "sequf_", "unitfolioseq", &document); + folioContainedAutonum.appendChild(elmtfolioseq); } if (!m_elmt_tenfolio_max.isEmpty()) { QDomElement elmtfolioseq = document.createElement("elementtenfolioseq"); - elementFolioSequentialsToXml(&m_elmt_tenfolio_max, &elmtfolioseq, "seqtf_"); + elementFolioSequentialsToXml(&m_elmt_tenfolio_max, &elmtfolioseq, "seqtf_", "tenfolioseq", &document); folioContainedAutonum.appendChild(elmtfolioseq); } if (!m_elmt_hundredfolio_max.isEmpty()) { QDomElement elmtfolioseq = document.createElement("elementhundredfolioseq"); - elementFolioSequentialsToXml(&m_elmt_hundredfolio_max, &elmtfolioseq, "seqhf_"); + elementFolioSequentialsToXml(&m_elmt_hundredfolio_max, &elmtfolioseq, "seqhf_", "hundredfolioseq", &document); folioContainedAutonum.appendChild(elmtfolioseq); } racine.appendChild(folioContainedAutonum); @@ -601,13 +600,15 @@ QDomDocument Diagram::toXml(bool whole_content) { + * @param hash to retrieve content with content + * @param sequential type + */ -void Diagram::elementFolioSequentialsToXml(QHash *hash, QDomElement *domElement, QString seq_type) { +void Diagram::elementFolioSequentialsToXml(QHash *hash, QDomElement *domElement, QString seq_type, QString type, QDomDocument *doc) { QHash::iterator i; for (i = hash->begin(); i != hash->end(); i++) { - domElement->setAttribute("title", i.key()); + QDomElement folioseq = doc->createElement(type); + folioseq.setAttribute("title", i.key()); for (int j = 0; j < i.value().size(); j++) { - domElement->setAttribute(seq_type + QString::number(j+1), i.value().at(j)); + folioseq.setAttribute(seq_type + QString::number(j+1), i.value().at(j)); } + domElement->appendChild(folioseq); } } @@ -701,9 +702,9 @@ bool Diagram::fromXml(QDomElement &document, QPointF position, bool consider_inf // Load Freeze New Element m_freeze_new_elements_ = root.attribute("freezeNewElement").toInt(); - elementFolioSequentialsFromXml(root, &m_elmt_unitfolio_max, "elementunitfolioseq","sequf_"); - elementFolioSequentialsFromXml(root, &m_elmt_tenfolio_max, "elementtenfolioseq","seqtf_"); - elementFolioSequentialsFromXml(root, &m_elmt_hundredfolio_max, "elementhundredfolioseq","seqhf_"); + elementFolioSequentialsFromXml(root, &m_elmt_unitfolio_max, "elementunitfolioseq","sequf_","unitfolioseq"); + elementFolioSequentialsFromXml(root, &m_elmt_tenfolio_max, "elementtenfolioseq","seqtf_", "tenfolioseq"); + elementFolioSequentialsFromXml(root, &m_elmt_hundredfolio_max, "elementhundredfolioseq","seqhf_", "hundredfolioseq"); } // if child haven't got a child, loading is finish (diagram is empty) @@ -884,17 +885,20 @@ bool Diagram::fromXml(QDomElement &document, QPointF position, bool consider_inf * @param hash to be loaded with content * @param folioSeq type * @param seq type + * @param type of sequential */ -void Diagram::elementFolioSequentialsFromXml(const QDomElement &root, QHash* hash, QString folioSeq, QString seq) { +void Diagram::elementFolioSequentialsFromXml(const QDomElement &root, QHash* hash, QString folioSeq, QString seq, QString type) { foreach (QDomElement folioSeqAutoNum, QET::findInDomElement(root, "elementautonumfoliosequentials", folioSeq)) { - QString title = folioSeqAutoNum.attribute("title"); - QStringList unit; - int i = 1; - while (folioSeqAutoNum.hasAttribute(seq + QString::number(i))) { - unit << folioSeqAutoNum.attribute(seq + QString::number(i)); - i++; + for(QDomElement folioseq = folioSeqAutoNum.firstChildElement(type); !folioseq.isNull(); folioseq = folioseq.nextSiblingElement(type)) { + QString title = folioseq.attribute("title"); + QStringList list; + int i = 1; + while (folioseq.hasAttribute(seq + QString::number(i))) { + list << folioseq.attribute(seq + QString::number(i)); + i++; + } + hash->insert(title,list); } - hash->insert(title,unit); } } diff --git a/sources/diagram.h b/sources/diagram.h index a554a50f0..628a34668 100644 --- a/sources/diagram.h +++ b/sources/diagram.h @@ -158,8 +158,8 @@ class Diagram : public QGraphicsScene void write(const QDomElement &); bool wasWritten() const; QDomElement writeXml(QDomDocument &) const; - void elementFolioSequentialsToXml(QHash*, QDomElement *, QString); - void elementFolioSequentialsFromXml(const QDomElement&, QHash*, QString, QString); + void elementFolioSequentialsToXml(QHash*, QDomElement *, QString, QString, QDomDocument *); + void elementFolioSequentialsFromXml(const QDomElement&, QHash*, QString, QString, QString); // methods related to graphics items addition/removal on the diagram void initElementsLinks(); diff --git a/sources/projectview.cpp b/sources/projectview.cpp index a79fca98a..f323595cf 100644 --- a/sources/projectview.cpp +++ b/sources/projectview.cpp @@ -897,6 +897,8 @@ void ProjectView::loadDiagrams() { addDiagram(sv); } + this->currentDiagram()->diagram()->loadElmtFolioSeq(); + // If project have the folios list, move it at the beginning of the project if (m_project -> getFolioSheetsQuantity()) { for (int i = 0; i < m_project->getFolioSheetsQuantity(); i++) diff --git a/sources/ui/autonumberingdockwidget.cpp b/sources/ui/autonumberingdockwidget.cpp index e10b2e4e1..815437ae8 100644 --- a/sources/ui/autonumberingdockwidget.cpp +++ b/sources/ui/autonumberingdockwidget.cpp @@ -154,7 +154,7 @@ void AutoNumberingDockWidget::setActive() { //Element QString element_formula = project_->elementAutoNumFormula(); - QString active_element_autonum = project_->elementAutoNumHash().key(element_formula); + QString active_element_autonum = project_->elementCurrentAutoNum(); int el_index = ui->m_element_cb->findText(active_element_autonum); ui->m_element_cb->setCurrentIndex(el_index);