Offer the option to merge dive sites.

Almost finishing. :)

Signed-off-by: Tomaz Canabrava <tomaz.canabrava@intel.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
Tomaz Canabrava 2015-08-31 21:11:28 -03:00 committed by Dirk Hohndel
parent b52b95f3ec
commit 560426bf82
3 changed files with 20 additions and 1 deletions

View file

@ -98,6 +98,9 @@
<verstretch>0</verstretch> <verstretch>0</verstretch>
</sizepolicy> </sizepolicy>
</property> </property>
<property name="selectionMode">
<enum>QAbstractItemView::MultiSelection</enum>
</property>
<property name="modelColumn"> <property name="modelColumn">
<number>0</number> <number>0</number>
</property> </property>

View file

@ -10,6 +10,7 @@
#include <QDebug> #include <QDebug>
#include <QShowEvent> #include <QShowEvent>
#include <QItemSelectionModel>
LocationInformationWidget::LocationInformationWidget(QWidget *parent) : QGroupBox(parent), modified(false) LocationInformationWidget::LocationInformationWidget(QWidget *parent) : QGroupBox(parent), modified(false)
{ {
@ -35,7 +36,7 @@ LocationInformationWidget::LocationInformationWidget(QWidget *parent) : QGroupBo
filter_model->setFilterRow(filter_same_gps_cb); filter_model->setFilterRow(filter_same_gps_cb);
ui.diveSiteListView->setModel(filter_model); ui.diveSiteListView->setModel(filter_model);
ui.diveSiteListView->setModelColumn(LocationInformationModel::NAME); ui.diveSiteListView->setModelColumn(LocationInformationModel::NAME);
ui.diveSiteListView->installEventFilter(this);
#ifndef NO_MARBLE #ifndef NO_MARBLE
// Globe Management Code. // Globe Management Code.
connect(this, &LocationInformationWidget::requestCoordinates, connect(this, &LocationInformationWidget::requestCoordinates,
@ -49,6 +50,18 @@ LocationInformationWidget::LocationInformationWidget(QWidget *parent) : QGroupBo
#endif #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() void LocationInformationWidget::updateLabels()
{ {
if (displayed_dive_site.name) if (displayed_dive_site.name)

View file

@ -9,6 +9,8 @@ class LocationInformationWidget : public QGroupBox {
Q_OBJECT Q_OBJECT
public: public:
LocationInformationWidget(QWidget *parent = 0); LocationInformationWidget(QWidget *parent = 0);
virtual bool eventFilter(QObject*, QEvent*);
protected: protected:
void showEvent(QShowEvent *); void showEvent(QShowEvent *);
@ -35,6 +37,7 @@ signals:
void stopFilterDiveSite(); void stopFilterDiveSite();
void requestCoordinates(); void requestCoordinates();
void endRequestCoordinates(); void endRequestCoordinates();
private: private:
Ui::LocationInformation ui; Ui::LocationInformation ui;
bool modified; bool modified;