From fe60af400f8bb9e969abf6c9a877ed256df8cd23 Mon Sep 17 00:00:00 2001 From: Lukáš Lalinský Date: Sun, 4 Jan 2009 13:28:12 +0100 Subject: Unify the way of storing positions in the exported XML --- src/diagramitem.cpp | 14 +++----------- src/domutils.h | 23 +++++++++++++++++++++++ src/line.cpp | 10 ++-------- 3 files changed, 28 insertions(+), 19 deletions(-) diff --git a/src/diagramitem.cpp b/src/diagramitem.cpp index 1d32ff3..a85f4ff 100644 --- a/src/diagramitem.cpp +++ b/src/diagramitem.cpp @@ -20,6 +20,7 @@ #include "diagramdocument.h" #include "diagramitem.h" #include "diagramitemfactory.h" +#include "domutils.h" DiagramItem::DiagramItem(DiagramItem *parent) : QGraphicsItem(parent) @@ -36,13 +37,7 @@ void DiagramItem::loadFromXml(QDomElement element, DiagramDocument *) { setId(element.attribute("id", QUuid())); - QDomElement positionElement = element.firstChildElement("position"); - if (!positionElement.isNull()) { - QPointF pos; - pos.setX(positionElement.attribute("x", "0").toDouble()); - pos.setY(positionElement.attribute("y", "0").toDouble()); - setPos(pos); - } + setPos(readPointElement(element, "position")); } void @@ -50,10 +45,7 @@ DiagramItem::saveToXml(QDomDocument doc, QDomElement element) { element.setAttribute("type", typeName()); element.setAttribute("id", id()); - QDomElement positionElement = doc.createElement("position"); - positionElement.setAttribute("x", pos().x()); - positionElement.setAttribute("y", pos().y()); - element.appendChild(positionElement); + appendPointElement(doc, element, "position", pos()); } QMimeData * diff --git a/src/domutils.h b/src/domutils.h index 4b7c0ed..06b2cf4 100644 --- a/src/domutils.h +++ b/src/domutils.h @@ -118,4 +118,27 @@ readFloatElement(QDomElement &parent, const QString &name, qreal defaultValue = return defaultValue; } +inline void +appendPointElement(QDomDocument &doc, QDomElement &parent, const QString &name, QPointF value) +{ + if (!value.isNull()) { + QDomElement element = doc.createElement(name); + appendFloatElement(doc, element, "x", value.x()); + appendFloatElement(doc, element, "y", value.y()); + parent.appendChild(element); + } +} + +inline QPointF +readPointElement(QDomElement &parent, const QString &name) +{ + QDomElement element = parent.firstChildElement(name); + if (!element.isNull()) { + qreal x = readFloatElement(element, "x"); + qreal y = readFloatElement(element, "y"); + return QPointF(x, y); + } + return QPointF(); +} + #endif diff --git a/src/line.cpp b/src/line.cpp index 21c1d7a..1691820 100644 --- a/src/line.cpp +++ b/src/line.cpp @@ -59,10 +59,7 @@ Line::loadFromXml(QDomElement element, DiagramDocument *document) Connector *connector = m_connectors[i++]; qreal angle = readFloatElement(connectorElement, "angle"); connector->setAngle(angle); - QDomElement positionElement = connectorElement.firstChildElement("position"); - qreal x = readFloatElement(positionElement, "x"); - qreal y = readFloatElement(positionElement, "y"); - connector->setPos(QPointF(x, y)); + connector->setPos(readPointElement(connectorElement, "position")); QDomElement hubElement = connectorElement.firstChildElement("hub"); QString ownerId = hubElement.attribute("owner"); if (document && !ownerId.isEmpty()) { @@ -85,10 +82,7 @@ Line::saveToXml(QDomDocument doc, QDomElement element) Connector *connector = m_connectors[i]; QDomElement connectorElement = doc.createElement("connector"); connectorListElement.appendChild(connectorElement); - QDomElement positionElement = doc.createElement("position"); - connectorElement.appendChild(positionElement); - appendFloatElement(doc, positionElement, "x", connector->pos().x()); - appendFloatElement(doc, positionElement, "y", connector->pos().y()); + appendPointElement(doc, connectorElement, "position", connector->pos()); appendFloatElement(doc, connectorElement, "angle", connector->angle()); if (connector->hub()) { QDomElement hubElement = doc.createElement("hub"); -- cgit v1.2.3-54-g00ecf