aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Tomaz Canabrava <tcanabrava@kde.org>2013-06-20 14:29:32 -0300
committerGravatar Tomaz Canabrava <tcanabrava@kde.org>2013-06-20 14:29:32 -0300
commit021a6a076e76e45bf5f6f8b976e2178a666ec1bd (patch)
tree0be9f2adb2702086ae7a6cd2f10a0a284b89e294
parent1fb023d3c67834df047c3bd97f7c701a92afbd97 (diff)
downloadsubsurface-021a6a076e76e45bf5f6f8b976e2178a666ec1bd.tar.gz
Created a class DiveHandle to make drag drop work.
Create d a class DiveHandle to make drag drop works, it has a from and to Lines, and it will move them around. Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
-rw-r--r--qt-ui/diveplanner.cpp19
-rw-r--r--qt-ui/diveplanner.h11
2 files changed, 23 insertions, 7 deletions
diff --git a/qt-ui/diveplanner.cpp b/qt-ui/diveplanner.cpp
index fc5b701a7..07f195120 100644
--- a/qt-ui/diveplanner.cpp
+++ b/qt-ui/diveplanner.cpp
@@ -33,23 +33,25 @@ void DivePlanner::mouseDoubleClickEvent(QMouseEvent* event)
return;
}
- QGraphicsEllipseItem *item = new QGraphicsEllipseItem(-5,-5,10,10);
+ DiveHandler *item = new DiveHandler ();
+ item->setRect(-5,-5,10,10);
item->setFlag(QGraphicsItem::ItemIgnoresTransformations);
-
-
item->setPos( mappedPos );
scene()->addItem(item);
handles << item;
if (lines.empty()){
QGraphicsLineItem *first = new QGraphicsLineItem(0,0, mappedPos.x(), mappedPos.y());
+ item->from = first;
lines.push_back(first);
create_deco_stop();
scene()->addItem(first);
}else{
clear_generated_deco();
- QGraphicsEllipseItem *prevHandle = handles.at( handles.count()-2);
+ DiveHandler *prevHandle = handles.at( handles.count()-2);
QGraphicsLineItem *line = new QGraphicsLineItem(prevHandle->x(), prevHandle->y(), item->x(), item->y());
+ prevHandle->to = line;
+ item->from = line;
lines.push_back(line);
scene()->addItem(line);
create_deco_stop();
@@ -68,7 +70,8 @@ void DivePlanner::clear_generated_deco()
void DivePlanner::create_deco_stop()
{
// this needs to create everything
- // for the calculated deco.
+ // for the calculated deco. it should return the *first*
+ // line that's calculated, so the
QGraphicsLineItem *item = new QGraphicsLineItem(handles.last()->x(), handles.last()->y(), 100, 0);
scene()->addItem(item);
lines << item;
@@ -118,3 +121,9 @@ bool DivePlanner::isPointOutOfBoundaries(QPointF point)
}
return false;
}
+
+
+
+DiveHandler::DiveHandler(): QGraphicsEllipseItem(), from(0), to(0)
+{
+}
diff --git a/qt-ui/diveplanner.h b/qt-ui/diveplanner.h
index 7dca3bb85..33f647fe6 100644
--- a/qt-ui/diveplanner.h
+++ b/qt-ui/diveplanner.h
@@ -4,6 +4,13 @@
#include <QGraphicsView>
#include <QGraphicsPathItem>
+class DiveHandler : public QGraphicsEllipseItem{
+public:
+ DiveHandler();
+
+ QGraphicsLineItem *from;
+ QGraphicsLineItem *to;
+};
class DivePlanner : public QGraphicsView {
Q_OBJECT
public:
@@ -16,11 +23,11 @@ protected:
void clear_generated_deco();
void create_deco_stop();
bool isPointOutOfBoundaries(QPointF point);
-
+
private:
DivePlanner(QWidget* parent = 0);
QList<QGraphicsLineItem*> lines;
- QList<QGraphicsEllipseItem*> handles;
+ QList<DiveHandler *> handles;
QGraphicsLineItem *verticalLine;
QGraphicsLineItem *horizontalLine;
};