diff options
author | Lukáš Lalinský <lalinsky@gmail.com> | 2008-12-30 10:26:14 +0100 |
---|---|---|
committer | Lukáš Lalinský <lalinsky@gmail.com> | 2008-12-30 10:26:14 +0100 |
commit | 033bf7a0b5baa26af94ad006f6576d04c8609e9e (patch) | |
tree | 499e36f09515f2bc3f23cf09e2364666888002bb /src/diagramdocument.cpp | |
parent | 3a95c3cd621e3904d717b591aaa9f2c89959981e (diff) | |
download | dbmodel-033bf7a0b5baa26af94ad006f6576d04c8609e9e.tar.xz |
Implement orthogonal line drawing
Diffstat (limited to 'src/diagramdocument.cpp')
-rw-r--r-- | src/diagramdocument.cpp | 19 |
1 files changed, 15 insertions, 4 deletions
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 <cmath> +#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 <class T> QList<T *> @@ -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<DiagramConnection *> result; foreach (DiagramConnection *connection, itemsByType<DiagramConnection>()) - if (connection->source() == object || connection->target() == object) + if (connection->connector(0)->connectedObject() == object || connection->connector(1)->connectedObject() == object) result.append(connection); return result; } |