From 74d23ed83b0fe4a2270adc41b5a9bd20b7ca5d29 Mon Sep 17 00:00:00 2001 From: Dirk Hohndel Date: Thu, 6 Jun 2013 03:29:11 +0900 Subject: Add context menu to dive list So far we support "expand all" and "collapse" all. This still needs to be restricted to only be shown when in trip / tree mode. Signed-off-by: Dirk Hohndel --- qt-ui/divelistview.cpp | 16 ++++++++++++++++ qt-ui/divelistview.h | 1 + 2 files changed, 17 insertions(+) diff --git a/qt-ui/divelistview.cpp b/qt-ui/divelistview.cpp index 19d27a53e..d66313823 100644 --- a/qt-ui/divelistview.cpp +++ b/qt-ui/divelistview.cpp @@ -17,6 +17,7 @@ #include #include #include +#include DiveListView::DiveListView(QWidget *parent) : QTreeView(parent), mouseClickSelection(false), currentHeaderClicked(-1), searchBox(new QLineEdit(this)) @@ -270,3 +271,18 @@ void DiveListView::selectionChanged(const QItemSelection& selected, const QItemS // now that everything is up to date, update the widgets Q_EMIT currentDiveChanged(selected_dive); } + +void DiveListView::mousePressEvent(QMouseEvent *event) +{ + // all we care about is the unmodified right click + if ( ! (event->modifiers() == Qt::NoModifier && event->buttons() & Qt::RightButton)) { + event->ignore(); + QTreeView::mousePressEvent(event); + return; + } + QMenu popup(this); + popup.addAction(tr("expand all"), this, SLOT(expandAll())); + QAction *collapseAllAction = popup.addAction(tr("collapse all"), this, SLOT(collapseAll())); + if (popup.exec(event->globalPos()) == collapseAllAction) + selectDive(current_dive, true); +} diff --git a/qt-ui/divelistview.h b/qt-ui/divelistview.h index 630f74e7f..2bce35612 100644 --- a/qt-ui/divelistview.h +++ b/qt-ui/divelistview.h @@ -28,6 +28,7 @@ public: bool eventFilter(QObject* , QEvent* ); void unselectDives(); void selectDive(struct dive *, bool scrollto = false); + void mousePressEvent(QMouseEvent *event); public slots: void toggleColumnVisibilityByIndex(); -- cgit v1.2.3-70-g09d2