diff --git a/sources/properties/terminaldata.cpp b/sources/properties/terminaldata.cpp index 27bf607f2..ab72f9e62 100644 --- a/sources/properties/terminaldata.cpp +++ b/sources/properties/terminaldata.cpp @@ -3,16 +3,16 @@ #include TerminalData::TerminalData(): - PropertiesInterface() + PropertiesInterface() { - init(); + init(); } TerminalData::TerminalData(QGraphicsObject *parent): - PropertiesInterface(), - q(parent) + PropertiesInterface(), + q(parent) { - init(); + init(); } void TerminalData::init() { @@ -23,65 +23,114 @@ TerminalData::~TerminalData() } +/** + @brief TerminalData::setParent + @param parent +*/ void TerminalData::setParent(QGraphicsObject* parent) { - q = parent; + q = parent; } +/** + @brief TerminalData::toSettings + Save properties to setting file. + + QString is use for prefix a word befor the name of each paramètre + @param settings UNUSED +*/ void TerminalData::toSettings(QSettings &settings, const QString) const { Q_UNUSED(settings); } +/** + @brief TerminalData::fromSettings + load properties to setting file. + + QString is use for prefix a word befor the name of each paramètre + @param settings UNUSED +*/ void TerminalData::fromSettings(const QSettings &settings, const QString) { Q_UNUSED(settings); } +/** + @brief TerminalData::toXml + Save properties to xml element + write the name, number, position and orientation of the terminal + to xml_element + + @note This method is only called from the PartTerminal + and should never called from the Terminal class + @param xml_document + @return xml_element : DomElement with + the name, number, position and orientation of the terminal +*/ QDomElement TerminalData::toXml(QDomDocument &xml_document) const { - QDomElement xml_element = xml_document.createElement("terminal"); + QDomElement xml_element = xml_document.createElement("terminal"); - // ecrit la position de la borne - xml_element.setAttribute("x", QString("%1").arg(q->scenePos().x())); - xml_element.setAttribute("y", QString("%1").arg(q->scenePos().y())); + // write the position of the terminal + // ecrit la position de la borne + xml_element.setAttribute("x", QString("%1").arg(q->scenePos().x())); + xml_element.setAttribute("y", QString("%1").arg(q->scenePos().y())); + // Write name and number to XML + xml_element.setAttribute("uuid", m_uuid.toString()); + xml_element.setAttribute("name", m_name); - xml_element.setAttribute("uuid", m_uuid.toString()); - xml_element.setAttribute("name", m_name); + // write the orientation of the terminal + // ecrit l'orientation de la borne + xml_element.setAttribute("orientation", + Qet::orientationToString(m_orientation)); - // ecrit l'orientation de la borne - xml_element.setAttribute("orientation", Qet::orientationToString(m_orientation)); - // Write name and number to XML - - return(xml_element); + return(xml_element); } + +/** + @brief TerminalData::fromXml + load properties to xml element + + @note This method is only called from the PartTerminal + and should never called from the Terminal class + @param xml_element + @return true if succeeded / false if the attribute is not real +*/ bool TerminalData::fromXml (const QDomElement &xml_element) { - // lit la position de la borne - qreal term_x = 0.0, term_y = 0.0; - if (!QET::attributeIsAReal(xml_element, "x", &term_x)) - return false; + qreal term_x = 0.0; + qreal term_y = 0.0; - if (!QET::attributeIsAReal(xml_element, "y", &term_y)) - return false; + // reads the position of the terminal + // lit la position de la borne + if (!QET::attributeIsAReal(xml_element, "x", &term_x)) + return false; - m_pos = QPointF(term_x, term_y); + if (!QET::attributeIsAReal(xml_element, "y", &term_y)) + return false; - //emit posFromXML(QPointF(term_x, term_y)); + m_pos = QPointF(term_x, term_y); - QString uuid = xml_element.attribute("uuid"); - // update part and add uuid, which is used in the new version to connect terminals together - // if the attribute not exists, means, the element is created with an older version of qet. So use the legacy approach - // to identify terminals - if (!uuid.isEmpty()) - m_uuid = QUuid(uuid); + //emit posFromXML(QPointF(term_x, term_y)); - m_name = xml_element.attribute("name"); + QString uuid = xml_element.attribute("uuid"); + // update part and add uuid, which is used in the new version + // to connect terminals together + // if the attribute not exists, means, the element is created with an + // older version of qet. So use the legacy approach + // to identify terminals + if (!uuid.isEmpty()) + m_uuid = QUuid(uuid); - // lit l'orientation de la borne - m_orientation = Qet::orientationFromString(xml_element.attribute("orientation")); + m_name = xml_element.attribute("name"); - return true; + // read the orientation of the terminal + // lit l'orientation de la borne + m_orientation = Qet::orientationFromString( + xml_element.attribute("orientation")); + + return true; } diff --git a/sources/properties/terminaldata.h b/sources/properties/terminaldata.h index c31e73929..6a716764c 100644 --- a/sources/properties/terminaldata.h +++ b/sources/properties/terminaldata.h @@ -18,62 +18,70 @@ class QGraphicsObject; */ class TerminalData : public PropertiesInterface { -public: - TerminalData(); - TerminalData(QGraphicsObject* parent); - ~TerminalData(); + public: + TerminalData(); + TerminalData(QGraphicsObject* parent); + ~TerminalData(); - void init(); + void init(); - void setParent(QGraphicsObject* parent); + void setParent(QGraphicsObject* parent); + void toSettings(QSettings &settings, + const QString = QString()) const override; + void fromSettings(const QSettings &settings, + const QString = QString()) override; + QDomElement toXml(QDomDocument &xml_element) const override; + bool fromXml(const QDomElement &xml_element) override; - // Save/load properties to setting file. QString is use for prefix a word befor the name of each paramètre - void toSettings(QSettings &settings, const QString = QString()) const override; - void fromSettings(const QSettings &settings, const QString = QString()) override; - // Save/load properties to xml element - // This method is only called from the PartTerminal and should never called from the Terminal class - QDomElement toXml(QDomDocument &xml_element) const override; - bool fromXml(const QDomElement &xml_element) override; + // must be public, because this class is a private member + // of PartTerminal/Terminal and they must access this data + public: + /** + @brief m_orientation + Orientation of the terminal + */ + Qet::Orientation m_orientation; + /** + @brief second_point + Position of the second point of the terminal + in scene coordinates + */ + QPointF second_point; + /** + @brief m_uuid + Uuid of the terminal. - // must be public, because this class is a private member of PartTerminal/Terminal and they must - // access this data -public: - /*! - * \brief m_orientation - * Orientation of the terminal - */ - Qet::Orientation m_orientation; - /*! - * \brief second_point - * Position of the second point of the terminal in scene coordinates - */ - QPointF second_point; - /*! - * \brief m_uuid - * Uuid of the terminal. - * - * In elementscene.cpp an element gets a new uuid when saving the element. In the current state - * each connection is made by using the local position of the terminal and a dynamic id. In the new - * case, each terminal should have it's own uuid to identify it uniquely. When changing each time this - * uuid, the conductor after updating the part is anymore valid. So if in the loaded document a uuid exists, - * use this one and don't create a new one. - */ - QUuid m_uuid; - /*! - * \brief m_name - * Name of the element. It can be used to create wiring harness tables - */ - QString m_name; + In elementscene.cpp an element gets a new uuid when + saving the element. In the current state + each connection is made by using the local position + of the terminal and a dynamic id. In the new + case, each terminal should have it's own uuid to + identify it uniquely. When changing each time this + uuid, the conductor after updating the part is anymore + valid. So if in the loaded document a uuid exists, + use this one and don't create a new one. + */ + QUuid m_uuid; + /** + @brief m_name + Name of the element. + It can be used to create wiring harness tables + */ + QString m_name; - /*! - * \brief m_pos - * Position of the terminal. The second point is calculated from this position and the orientation - * Important: this variable is only updated during read from xml and not during mouse move! - * It is used to store the initial position so that PartTerminal and Terminal have access to it. - */ - QPointF m_pos; -private: - QGraphicsObject* q{nullptr}; + /** + @brief m_pos + Position of the terminal. The second point is calculated + from this position and the orientation + @note + Important: this variable is only updated during read + from xml and not during mouse move! + It is used to store the initial position so that + PartTerminal and Terminal have access to it. + */ + QPointF m_pos; + private: + QGraphicsObject* q{nullptr}; }; #endif // TERMINALDATA_H