summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLukáš Lalinský <lalinsky@gmail.com>2009-01-04 13:28:12 +0100
committerLukáš Lalinský <lalinsky@gmail.com>2009-01-04 13:28:12 +0100
commitfe60af400f8bb9e969abf6c9a877ed256df8cd23 (patch)
tree8f450ae8587af7c0999acdac68fa23870c187adc
parente96f9e73864f3d6b7fdc3262ba6851c416bc32a4 (diff)
downloaddbmodel-fe60af400f8bb9e969abf6c9a877ed256df8cd23.tar.gz
dbmodel-fe60af400f8bb9e969abf6c9a877ed256df8cd23.tar.bz2
Unify the way of storing positions in the exported XML
-rw-r--r--src/diagramitem.cpp14
-rw-r--r--src/domutils.h23
-rw-r--r--src/line.cpp10
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");