aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--qt-ui/diveplanner.cpp41
-rw-r--r--qt-ui/diveplanner.h2
-rw-r--r--qt-ui/profile/profilewidget2.cpp24
-rw-r--r--qt-ui/profile/profilewidget2.h3
4 files changed, 34 insertions, 36 deletions
diff --git a/qt-ui/diveplanner.cpp b/qt-ui/diveplanner.cpp
index b7a3f0153..6ea88e1e3 100644
--- a/qt-ui/diveplanner.cpp
+++ b/qt-ui/diveplanner.cpp
@@ -480,36 +480,6 @@ void DivePlannerGraphics::mouseMoveEvent(QMouseEvent *event)
#endif
}
-void DivePlannerGraphics::moveActiveHandler(const QPointF &mappedPos, const int pos)
-{
-#if 0
- divedatapoint data = plannerModel->at(pos);
- int mintime = 0, maxtime = (timeLine->maximum() + 10) * 60;
- if (pos > 0)
- mintime = plannerModel->at(pos - 1).time;
- if (pos < plannerModel->size() - 1)
- maxtime = plannerModel->at(pos + 1).time;
-
- int minutes = rint(timeLine->valueAt(mappedPos));
- if (minutes * 60 <= mintime || minutes * 60 >= maxtime)
- return;
-
- int milimeters = rint(depthLine->valueAt(mappedPos) / M_OR_FT(1, 1)) * M_OR_FT(1, 1);
- double xpos = timeLine->posAtValue(minutes);
- double ypos = depthLine->posAtValue(milimeters);
-
- data.depth = milimeters;
- data.time = rint(timeLine->valueAt(mappedPos)) * 60;
-
- plannerModel->editStop(pos, data);
-
- activeDraggedHandler->setPos(QPointF(xpos, ypos));
- qDeleteAll(lines);
- lines.clear();
- drawProfile();
-#endif
-}
-
void DivePlannerGraphics::mousePressEvent(QMouseEvent *event)
{
if (event->modifiers()) {
@@ -586,12 +556,13 @@ void DiveHandler::changeGas()
plannerModel->setData(index, action->text());
}
-QVariant DiveHandler::itemChange(QGraphicsItem::GraphicsItemChange change, const QVariant &value)
+void DiveHandler::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
{
- if (change == ItemPositionHasChanged && scene()) {
- emit moved();
- }
- return QGraphicsItem::itemChange(change, value);
+ ProfileWidget2 *view = qobject_cast<ProfileWidget2*>(scene()->views().first());
+ if(view->isPointOutOfBoundaries(event->scenePos()))
+ return;
+ QGraphicsEllipseItem::mouseMoveEvent(event);
+ emit moved();
}
Button::Button(QObject *parent, QGraphicsItem *itemParent) : QObject(parent),
diff --git a/qt-ui/diveplanner.h b/qt-ui/diveplanner.h
index b68605537..a56d403fc 100644
--- a/qt-ui/diveplanner.h
+++ b/qt-ui/diveplanner.h
@@ -140,7 +140,7 @@ public:
protected:
void contextMenuEvent(QGraphicsSceneContextMenuEvent *event);
- virtual QVariant itemChange(GraphicsItemChange change, const QVariant &value);
+ void mouseMoveEvent(QGraphicsSceneMouseEvent *event);
signals:
void moved();
private:
diff --git a/qt-ui/profile/profilewidget2.cpp b/qt-ui/profile/profilewidget2.cpp
index 81ed98619..dd4ecca85 100644
--- a/qt-ui/profile/profilewidget2.cpp
+++ b/qt-ui/profile/profilewidget2.cpp
@@ -964,6 +964,7 @@ void ProfileWidget2::pointInserted(const QModelIndex &parent, int start, int end
scene()->addItem(item);
handles << item;
+ connect(item, SIGNAL(moved()), this, SLOT(recreatePlannedDive()));
QGraphicsSimpleTextItem *gasChooseBtn = new QGraphicsSimpleTextItem();
scene()->addItem(gasChooseBtn);
gasChooseBtn->setZValue(10);
@@ -1007,3 +1008,26 @@ void ProfileWidget2::repositionDiveHandlers()
last = i;
}
}
+
+void ProfileWidget2::recreatePlannedDive()
+{
+ DiveHandler *activeHandler = qobject_cast<DiveHandler*>(sender());
+ DivePlannerPointsModel *plannerModel = DivePlannerPointsModel::instance();
+ int index = handles.indexOf(activeHandler);
+
+ int mintime = 0, maxtime = (timeAxis->maximum() + 10) * 60;
+ if (index > 0)
+ mintime = plannerModel->at(index - 1).time;
+ if (index < plannerModel->size() - 1)
+ maxtime = plannerModel->at(index + 1).time;
+
+ int minutes = rint(timeAxis->valueAt(activeHandler->pos()) / 60);
+ if (minutes * 60 <= mintime || minutes * 60 >= maxtime)
+ return;
+
+ divedatapoint data = plannerModel->at(index);
+ data.depth = rint(profileYAxis->valueAt(activeHandler->pos()) / M_OR_FT(1, 1)) * M_OR_FT(1, 1);;
+ data.time = rint(timeAxis->valueAt(activeHandler->pos()));
+
+ plannerModel->editStop(index, data);
+}
diff --git a/qt-ui/profile/profilewidget2.h b/qt-ui/profile/profilewidget2.h
index 895b82c78..1c1258de5 100644
--- a/qt-ui/profile/profilewidget2.h
+++ b/qt-ui/profile/profilewidget2.h
@@ -91,6 +91,9 @@ slots: // Necessary to call from QAction's signals.
void pointsRemoved(const QModelIndex &, int start, int end);
void replot();
+ /* this is called for every move on the handlers. maybe we can speed up this a bit? */
+ void recreatePlannedDive();
+
protected:
virtual void resizeEvent(QResizeEvent *event);
virtual void wheelEvent(QWheelEvent *event);