summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStefan Suhren <suhren.stefan@fh-swf.de>2015-05-17 16:44:44 +0200
committerStefan Suhren <suhren.stefan@fh-swf.de>2015-05-17 16:44:44 +0200
commit31eb4d5361026dad3107dc647ac7c3ff63f50c7b (patch)
tree122b096b484f92d534260455df112ce9b9700207
parent1faecafbc6cc74daa8d0a781c0b54f2c778b04b0 (diff)
downloadGUI_SS2015-31eb4d5361026dad3107dc647ac7c3ff63f50c7b.tar.gz
GUI_SS2015-31eb4d5361026dad3107dc647ac7c3ff63f50c7b.zip
Make line movement work
-rw-r--r--interactioncanvas.cpp90
-rw-r--r--interactioncanvas.h7
2 files changed, 65 insertions, 32 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)
diff --git a/interactioncanvas.h b/interactioncanvas.h
index af5d9b6..e380d47 100644
--- a/interactioncanvas.h
+++ b/interactioncanvas.h
@@ -25,15 +25,14 @@ protected:
void keyReleaseEvent(QKeyEvent *keyEvent);
private:
+ void changeSelectedLine(Line *newSelectedLine);
QList<Line> m_Lines;
- Line *m_Line;
+ Line *m_NewLine;
+ Line *m_SelectedLine;
QPoint m_MousePressPoint;
QPoint m_MouseReleasePoint;
QPoint m_LastMousePosition;
- QPainter *normalPainter;
- QPainter *tempPainter;
-
// QWidget interface
protected:
void paintEvent(QPaintEvent *paintEvent);