aboutsummaryrefslogtreecommitdiffstats
path: root/qt-ui
diff options
context:
space:
mode:
authorGravatar Tomaz Canabrava <tcanabrava@kde.org>2013-11-19 20:42:05 -0200
committerGravatar Dirk Hohndel <dirk@hohndel.org>2013-11-19 15:41:34 -0800
commit82ac9ef9c6062f06494a3725061ab7ae99c31e88 (patch)
tree23c46eacd48bfb0176d39574b4b70580bda5b0fb /qt-ui
parent25a52056c681f956d9c23bf1116f35997bcab3d3 (diff)
downloadsubsurface-82ac9ef9c6062f06494a3725061ab7ae99c31e88.tar.gz
Enable gas selection through a context menu
This patch re-enables gas selection through in the add dive profile. Good thing ( and I really didn't think of that before ) is that it is less than half of the code of the other implementation. :D Fixes #265 Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Diffstat (limited to 'qt-ui')
-rw-r--r--qt-ui/diveplanner.cpp23
-rw-r--r--qt-ui/diveplanner.h3
2 files changed, 26 insertions, 0 deletions
diff --git a/qt-ui/diveplanner.cpp b/qt-ui/diveplanner.cpp
index 21d9aa236..f0dad6ca4 100644
--- a/qt-ui/diveplanner.cpp
+++ b/qt-ui/diveplanner.cpp
@@ -675,9 +675,25 @@ DiveHandler::DiveHandler(): QGraphicsEllipseItem()
setZValue(2);
}
+int DiveHandler::parentIndex()
+{
+ DivePlannerGraphics *view = qobject_cast<DivePlannerGraphics*>(scene()->views().first());
+ return view->handles.indexOf(this);
+}
+
void DiveHandler::contextMenuEvent(QGraphicsSceneContextMenuEvent* event)
{
QMenu m;
+ GasSelectionModel *model = GasSelectionModel::instance();
+ model->repopulate();
+ int rowCount = model->rowCount();
+ for(int i = 0; i < rowCount; i++){
+ QAction *action = new QAction(&m);
+ action->setText( model->data(model->index(i, 0),Qt::DisplayRole).toString());
+ connect(action, SIGNAL(triggered(bool)), this, SLOT(changeGas()));
+ m.addAction(action);
+ }
+ m.addSeparator();
m.addAction(QObject::tr("Remove this Point"), this, SLOT(selfRemove()));
m.exec(event->screenPos());
}
@@ -689,6 +705,13 @@ void DiveHandler::selfRemove()
view->keyDeleteAction();
}
+void DiveHandler::changeGas()
+{
+ QAction *action = qobject_cast<QAction*>(sender());
+ QModelIndex index = plannerModel->index(parentIndex(), DivePlannerPointsModel::GAS);
+ plannerModel->setData(index, action->text());
+}
+
void DiveHandler::mousePressEvent(QGraphicsSceneMouseEvent* event)
{
if (event->button() != Qt::LeftButton)
diff --git a/qt-ui/diveplanner.h b/qt-ui/diveplanner.h
index dc050a04b..c7ebe4a3a 100644
--- a/qt-ui/diveplanner.h
+++ b/qt-ui/diveplanner.h
@@ -117,8 +117,11 @@ public:
protected:
void mousePressEvent(QGraphicsSceneMouseEvent* event);
void contextMenuEvent(QGraphicsSceneContextMenuEvent* event);
+private:
+ int parentIndex();
public slots:
void selfRemove();
+ void changeGas();
};
class Ruler : public QGraphicsLineItem{