From 033bf7a0b5baa26af94ad006f6576d04c8609e9e Mon Sep 17 00:00:00 2001 From: Lukáš Lalinský Date: Tue, 30 Dec 2008 10:26:14 +0100 Subject: Implement orthogonal line drawing --- src/diagramdocument.cpp | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) (limited to 'src/diagramdocument.cpp') diff --git a/src/diagramdocument.cpp b/src/diagramdocument.cpp index e5caf13..ea73abe 100644 --- a/src/diagramdocument.cpp +++ b/src/diagramdocument.cpp @@ -15,6 +15,7 @@ // 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. #include +#include "hub.h" #include "diagramdocument.h" #include "diagramobject.h" #include "diagramconnection.h" @@ -140,8 +141,16 @@ DiagramDocument::setMode(Mode mode) void DiagramDocument::updatePositions(DiagramObject *object) { - foreach (DiagramConnection *connection, findConnections(object)) + Connector *connector; + foreach (DiagramConnection *connection, findConnections(object)) { + connector = connection->connector(0); + if (connector->isConnected()) + connector->hub()->update(); + connector = connection->connector(1); + if (connector->isConnected()) + connector->hub()->update(); connection->updatePositions(); + } } template QList @@ -243,8 +252,10 @@ DiagramDocument::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) if (source && target && source != target) { DatabaseRelationship *relation = new DatabaseRelationship(); relation->createId(); - relation->setSource(source); - relation->setTarget(target); + relation->connector(0)->setHub(source->hub()); + relation->connector(1)->setHub(target->hub()); + source->hub()->update(); + target->hub()->update(); undoStack()->push(new AddItemCommand(this, relation)); } delete m_line; @@ -288,7 +299,7 @@ DiagramDocument::findConnections(DiagramObject *object) { QList result; foreach (DiagramConnection *connection, itemsByType()) - if (connection->source() == object || connection->target() == object) + if (connection->connector(0)->connectedObject() == object || connection->connector(1)->connectedObject() == object) result.append(connection); return result; } -- cgit v1.2.3-54-g00ecf