summaryrefslogtreecommitdiff
path: root/src/diagramdocument.cpp
diff options
context:
space:
mode:
authorLukáš Lalinský <lalinsky@gmail.com>2008-12-30 10:26:14 +0100
committerLukáš Lalinský <lalinsky@gmail.com>2008-12-30 10:26:14 +0100
commit033bf7a0b5baa26af94ad006f6576d04c8609e9e (patch)
tree499e36f09515f2bc3f23cf09e2364666888002bb /src/diagramdocument.cpp
parent3a95c3cd621e3904d717b591aaa9f2c89959981e (diff)
downloaddbmodel-033bf7a0b5baa26af94ad006f6576d04c8609e9e.tar.xz
Implement orthogonal line drawing
Diffstat (limited to 'src/diagramdocument.cpp')
-rw-r--r--src/diagramdocument.cpp19
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;
}