diff options
author | Tomaz Canabrava <tcanabrava@kde.org> | 2013-11-19 23:03:18 -0200 |
---|---|---|
committer | Dirk Hohndel <dirk@hohndel.org> | 2013-11-19 17:04:25 -0800 |
commit | 4c2e6c4658df4d52cf097a3d426a01aaae2b71db (patch) | |
tree | 606a9aa2160ecb49767792441f12ab6e69027c3b | |
parent | eb027f2a4b83ed8eb127f0c736021556aa3952a0 (diff) | |
download | subsurface-4c2e6c4658df4d52cf097a3d426a01aaae2b71db.tar.gz |
Adds half of the support for the menu on the profile.
This adds the menu, it just doesn't do anything, yet.
Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
-rw-r--r-- | qt-ui/profilegraphics.cpp | 75 | ||||
-rw-r--r-- | qt-ui/profilegraphics.h | 6 |
2 files changed, 80 insertions, 1 deletions
diff --git a/qt-ui/profilegraphics.cpp b/qt-ui/profilegraphics.cpp index e69c5c7e0..231d9f057 100644 --- a/qt-ui/profilegraphics.cpp +++ b/qt-ui/profilegraphics.cpp @@ -112,6 +112,81 @@ void ProfileGraphicsView::wheelEvent(QWheelEvent* event) toolTip->setPos(mapToScene(toolTipPos).x(), mapToScene(toolTipPos).y()); } +void ProfileGraphicsView::contextMenuEvent(QContextMenuEvent* event) +{ + if(selected_dive == -1) + return; + QMenu m; + QMenu *gasChange = m.addMenu("Add Gas Change"); + 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())); + action->setData(event->globalPos()); + gasChange->addAction(action); + } + QAction *action = m.addAction("Add Bookmark", this, SLOT(addBookmark())); + action->setData(event->globalPos()); + QList<QGraphicsItem*> itemsAtPos = scene()->items(mapToScene(mapFromGlobal(event->globalPos()))); + Q_FOREACH(QGraphicsItem *i, itemsAtPos){ + EventItem *item = dynamic_cast<EventItem*>(i); + if(!item) + continue; + QAction *action = new QAction(&m); + action->setText("Remove Event"); + action->setData(event->globalPos()); // so we know what to remove. + connect(action, SIGNAL(triggered(bool)), this, SLOT(removeEvent())); + m.addAction(action); + action = new QAction(&m); + action->setText("Hide events of that type"); + action->setData(event->globalPos()); + connect(action, SIGNAL(triggered(bool)), this, SLOT(hideEvents())); + m.addAction(action); + break; + } + m.exec(event->globalPos()); +} + +void ProfileGraphicsView::addBookmark() +{ + QAction *action = qobject_cast<QAction*>(sender()); + QPoint globalPos = action->data().toPoint(); + QPoint viewPos = mapFromGlobal(globalPos); + QPointF scenePos = mapToScene(viewPos); + qDebug() << "Add Bookmark"; +} + +void ProfileGraphicsView::changeGas() +{ + QAction *action = qobject_cast<QAction*>(sender()); + QPoint globalPos = action->data().toPoint(); + QPoint viewPos = mapFromGlobal(globalPos); + QPointF scenePos = mapToScene(viewPos); + QString gas = action->text(); + qDebug() << "Change Gas Event" << gas; +} + +void ProfileGraphicsView::hideEvents() +{ + QAction *action = qobject_cast<QAction*>(sender()); + QPoint globalPos = action->data().toPoint(); + QPoint viewPos = mapFromGlobal(globalPos); + QPointF scenePos = mapToScene(viewPos); + qDebug() << "Hide Event"; +} + +void ProfileGraphicsView::removeEvent() +{ + QAction *action = qobject_cast<QAction*>(sender()); + QPoint globalPos = action->data().toPoint(); + QPoint viewPos = mapFromGlobal(globalPos); + QPointF scenePos = mapToScene(viewPos); + qDebug() << "Remove Event"; +} + void ProfileGraphicsView::mouseMoveEvent(QMouseEvent* event) { if (!toolTip) diff --git a/qt-ui/profilegraphics.h b/qt-ui/profilegraphics.h index 28e7b9d60..5970ca829 100644 --- a/qt-ui/profilegraphics.h +++ b/qt-ui/profilegraphics.h @@ -142,13 +142,17 @@ protected: void mouseMoveEvent(QMouseEvent* event); void wheelEvent(QWheelEvent* event); void showEvent(QShowEvent* event); + void contextMenuEvent(QContextMenuEvent* event); public slots: void refresh(); void edit_dive_time(const QString& time); void on_rulerAction(); void on_scaleAction(); - + void changeGas(); + void hideEvents(); + void removeEvent(); + void addBookmark(); private: void plot_depth_profile(); QGraphicsItemGroup *plot_text(text_render_options_t *tro, const QPointF& pos, const QString &text, QGraphicsItem *parent = 0); |