diff options
| author | Stefan Suhren <suhren.stefan@fh-swf.de> | 2015-05-17 16:44:44 +0200 |
|---|---|---|
| committer | Stefan Suhren <suhren.stefan@fh-swf.de> | 2015-05-17 16:44:44 +0200 |
| commit | 31eb4d5361026dad3107dc647ac7c3ff63f50c7b (patch) | |
| tree | 122b096b484f92d534260455df112ce9b9700207 /interactioncanvas.cpp | |
| parent | 1faecafbc6cc74daa8d0a781c0b54f2c778b04b0 (diff) | |
| download | GUI_SS2015-31eb4d5361026dad3107dc647ac7c3ff63f50c7b.tar.gz GUI_SS2015-31eb4d5361026dad3107dc647ac7c3ff63f50c7b.zip | |
Make line movement work
Diffstat (limited to 'interactioncanvas.cpp')
| -rw-r--r-- | interactioncanvas.cpp | 90 |
1 files changed, 62 insertions, 28 deletions
diff --git a/interactioncanvas.cpp b/interactioncanvas.cpp index 2c2b81b..7bd8de8 100644 --- a/interactioncanvas.cpp +++ b/interactioncanvas.cpp @@ -4,27 +4,33 @@ InteractionCanvas::InteractionCanvas() { setFocusPolicy(Qt::StrongFocus); setMouseTracking(true); - m_Line = NULL; + m_NewLine = NULL; + m_SelectedLine = NULL; } InteractionCanvas::~InteractionCanvas() { - delete tempPainter; - tempPainter = NULL; - delete normalPainter; - normalPainter = NULL; + } void InteractionCanvas::mouseMoveEvent(QMouseEvent *mouseEvent) { qDebug() << "InteractionCanvas:" << mouseEvent->pos(); - m_LastMousePosition = mouseEvent->pos(); - if (m_Line) + if (mouseEvent->buttons() == Qt::LeftButton) { - m_Line->setP2(m_LastMousePosition); + if(m_SelectedLine) + { + m_SelectedLine->setP1(m_SelectedLine->p1()+(mouseEvent->pos()-m_LastMousePosition)); + m_SelectedLine->setP2(m_SelectedLine->p2()+(mouseEvent->pos()-m_LastMousePosition)); + } + if(m_NewLine) + { + m_NewLine->setP2(mouseEvent->pos()); + } update(); } + m_LastMousePosition = mouseEvent->pos(); } @@ -34,26 +40,34 @@ void InteractionCanvas::mousePressEvent(QMouseEvent *mouseEvent) if (mouseEvent->button() == Qt::LeftButton) { - if (m_Line) + if(!m_SelectedLine) { - delete m_Line; - m_Line = NULL; - } + if (m_NewLine) + { + delete m_NewLine; + m_NewLine = NULL; + } - m_Line = new Line(); - m_MousePressPoint = mouseEvent->pos(); - m_LastMousePosition = m_MousePressPoint; - m_Line->setP1(m_MousePressPoint); - m_Line->setP2(m_LastMousePosition); + m_NewLine = new Line(); + m_MousePressPoint = mouseEvent->pos(); + m_LastMousePosition = m_MousePressPoint; + m_NewLine->setP1(m_MousePressPoint); + m_NewLine->setP2(m_LastMousePosition); + } } if (mouseEvent->button() == Qt::RightButton) { - for(int i = 0; i < m_Lines.size(); i++) + changeSelectedLine(NULL); + for(int i = 0; i < m_Lines.size() && !m_SelectedLine; i++) { - m_Lines[i].setSelected(m_Lines[i].isHit(mouseEvent->pos())); + if(m_Lines[i].isHit(mouseEvent->pos())) + { + changeSelectedLine(&(m_Lines[i])); + } } } + update(); } void InteractionCanvas::mouseReleaseEvent(QMouseEvent *mouseEvent) @@ -62,12 +76,14 @@ void InteractionCanvas::mouseReleaseEvent(QMouseEvent *mouseEvent) if (mouseEvent->button() == Qt::LeftButton) { - - m_MouseReleasePoint = mouseEvent->pos(); - m_Line->setP2(m_MouseReleasePoint); - m_Line->setSelected(false); - m_Lines.append(*m_Line); - m_Line = NULL; + if(m_NewLine) + { + m_MouseReleasePoint = mouseEvent->pos(); + m_NewLine->setP2(m_MouseReleasePoint); + m_NewLine->setSelected(false); + m_Lines.append(*m_NewLine); + m_NewLine = NULL; + } } update(); @@ -88,18 +104,36 @@ void InteractionCanvas::keyPressEvent(QKeyEvent *keyEvent) void InteractionCanvas::keyReleaseEvent(QKeyEvent *keyEvent) { qDebug() << "InteractionCanvas: Key: released:" << keyEvent->key() << "(" << - keyEvent->text() << ")" << (keyEvent->isAutoRepeat() ? "druck" : ""); + keyEvent->text() << ")" << (keyEvent->isAutoRepeat() ? "druck" : ""); } +/** + * @brief InteractionCanvas::changeSelectedLine + * @param newSelectedLine + * The new selected line or null to simply deselect. + */ +void InteractionCanvas::changeSelectedLine(Line *newSelectedLine) +{ + if(m_SelectedLine) + { + m_SelectedLine->setSelected(false); + m_SelectedLine = NULL; + } + if(newSelectedLine) + { + m_SelectedLine = newSelectedLine; + m_SelectedLine->setSelected(true); + } +} void InteractionCanvas::paintEvent(QPaintEvent *paintEvent) { // Setup the Painters QPainter painter(this); - if (m_Line) + if (m_NewLine) { - m_Line->draw(&painter); + m_NewLine->draw(&painter); } foreach (Line line, m_Lines) |
