summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Tomaz Canabrava <tcanabrava@kde.org>2013-11-19 23:03:18 -0200
committerGravatar Dirk Hohndel <dirk@hohndel.org>2013-11-19 17:04:25 -0800
commit4c2e6c4658df4d52cf097a3d426a01aaae2b71db (patch)
tree606a9aa2160ecb49767792441f12ab6e69027c3b
parenteb027f2a4b83ed8eb127f0c736021556aa3952a0 (diff)
downloadsubsurface-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.cpp75
-rw-r--r--qt-ui/profilegraphics.h6
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);