From 560426bf82ef7cb163d8046b722c12b76604006c Mon Sep 17 00:00:00 2001 From: Tomaz Canabrava Date: Mon, 31 Aug 2015 21:11:28 -0300 Subject: Offer the option to merge dive sites. Almost finishing. :) Signed-off-by: Tomaz Canabrava Signed-off-by: Dirk Hohndel --- qt-ui/locationInformation.ui | 3 +++ qt-ui/locationinformation.cpp | 15 ++++++++++++++- qt-ui/locationinformation.h | 3 +++ 3 files changed, 20 insertions(+), 1 deletion(-) diff --git a/qt-ui/locationInformation.ui b/qt-ui/locationInformation.ui index e7ab45ce0..a2fd63576 100644 --- a/qt-ui/locationInformation.ui +++ b/qt-ui/locationInformation.ui @@ -98,6 +98,9 @@ 0 + + QAbstractItemView::MultiSelection + 0 diff --git a/qt-ui/locationinformation.cpp b/qt-ui/locationinformation.cpp index 616a7147e..b3acc6682 100644 --- a/qt-ui/locationinformation.cpp +++ b/qt-ui/locationinformation.cpp @@ -10,6 +10,7 @@ #include #include +#include LocationInformationWidget::LocationInformationWidget(QWidget *parent) : QGroupBox(parent), modified(false) { @@ -35,7 +36,7 @@ LocationInformationWidget::LocationInformationWidget(QWidget *parent) : QGroupBo filter_model->setFilterRow(filter_same_gps_cb); ui.diveSiteListView->setModel(filter_model); ui.diveSiteListView->setModelColumn(LocationInformationModel::NAME); - + ui.diveSiteListView->installEventFilter(this); #ifndef NO_MARBLE // Globe Management Code. connect(this, &LocationInformationWidget::requestCoordinates, @@ -49,6 +50,18 @@ LocationInformationWidget::LocationInformationWidget(QWidget *parent) : QGroupBo #endif } +bool LocationInformationWidget::eventFilter(QObject*, QEvent *ev) +{ + if( ev->type() == QEvent::ContextMenu ) { + if (ui.diveSiteListView->selectionModel()->selectedIndexes().count() >= 2) { + QContextMenuEvent *ctx = (QContextMenuEvent*) ev; + QMenu contextMenu; + contextMenu.addAction(tr("Merge dive Sites"), this, SLOT(merge_dive_sites())); + contextMenu.exec(ctx->globalPos()); + } + } +} + void LocationInformationWidget::updateLabels() { if (displayed_dive_site.name) diff --git a/qt-ui/locationinformation.h b/qt-ui/locationinformation.h index 445fd87d4..2442e16aa 100644 --- a/qt-ui/locationinformation.h +++ b/qt-ui/locationinformation.h @@ -9,6 +9,8 @@ class LocationInformationWidget : public QGroupBox { Q_OBJECT public: LocationInformationWidget(QWidget *parent = 0); + virtual bool eventFilter(QObject*, QEvent*); + protected: void showEvent(QShowEvent *); @@ -35,6 +37,7 @@ signals: void stopFilterDiveSite(); void requestCoordinates(); void endRequestCoordinates(); + private: Ui::LocationInformation ui; bool modified; -- cgit v1.2.3-70-g09d2