From a3d6098c8ce7bee6841872153a85b573d583430d Mon Sep 17 00:00:00 2001 From: Tomaz Canabrava Date: Mon, 31 Aug 2015 20:59:13 -0300 Subject: Display dive sites with same gps as the current So we can merge them later - currently we are showing only the ID, ugly - fixing next. Signed-off-by: Tomaz Canabrava Signed-off-by: Dirk Hohndel --- qt-models/divelocationmodel.cpp | 9 +++++++-- qt-models/divelocationmodel.h | 2 +- qt-ui/locationinformation.cpp | 8 ++++++++ 3 files changed, 16 insertions(+), 3 deletions(-) diff --git a/qt-models/divelocationmodel.cpp b/qt-models/divelocationmodel.cpp index abdf69f91..ff733f5ad 100644 --- a/qt-models/divelocationmodel.cpp +++ b/qt-models/divelocationmodel.cpp @@ -188,8 +188,13 @@ bool filter_same_gps_cb (QAbstractItemModel *model, int sourceRow, const QModelI { int ref_lat = displayed_dive_site.latitude.udeg; int ref_lon = displayed_dive_site.longitude.udeg; - QModelIndex curr = model->index(sourceRow, LocationInformationModel::UUID, parent.isValid() ? parent : QModelIndex()); + QSortFilterProxyModel *self = (QSortFilterProxyModel*) model; + + int ds_uuid = self->sourceModel()->index(sourceRow, LocationInformationModel::UUID, parent).data().toInt(); + struct dive_site *ds = get_dive_site_by_uuid(ds_uuid); + + if (!ds) + return false; - struct dive_site *ds = get_dive_site_by_uuid(curr.data().toInt()); return (ds->latitude.udeg == ref_lat && ds->longitude.udeg == ref_lon); } \ No newline at end of file diff --git a/qt-models/divelocationmodel.h b/qt-models/divelocationmodel.h index f40bbd1de..83bc97e67 100644 --- a/qt-models/divelocationmodel.h +++ b/qt-models/divelocationmodel.h @@ -11,7 +11,7 @@ class QLineEdit; #define RECENTLY_ADDED_DIVESITE 1 -bool filter_same_gps_cb (int sourceRow, const QModelIndex& parent); +bool filter_same_gps_cb (QAbstractItemModel *m, int sourceRow, const QModelIndex& parent); class LocationInformationModel : public QAbstractTableModel { Q_OBJECT diff --git a/qt-ui/locationinformation.cpp b/qt-ui/locationinformation.cpp index 6006b18e5..4a4fff088 100644 --- a/qt-ui/locationinformation.cpp +++ b/qt-ui/locationinformation.cpp @@ -30,6 +30,11 @@ LocationInformationWidget::LocationInformationWidget(QWidget *parent) : QGroupBo connect(this, SIGNAL(stopFilterDiveSite()), MultiFilterSortModel::instance(), SLOT(stopFilterDiveSite())); connect(ui.geoCodeButton, SIGNAL(clicked()), this, SLOT(reverseGeocode())); + SsrfSortFilterProxyModel *filter_model = new SsrfSortFilterProxyModel(this); + filter_model->setSourceModel(LocationInformationModel::instance()); + filter_model->setFilterRow(filter_same_gps_cb); + ui.diveSiteListView->setModel(filter_model); + #ifndef NO_MARBLE // Globe Management Code. connect(this, &LocationInformationWidget::requestCoordinates, @@ -133,7 +138,10 @@ void LocationInformationWidget::showEvent(QShowEvent *ev) { if (displayed_dive_site.uuid) { updateLabels(); + QSortFilterProxyModel *m = qobject_cast(ui.diveSiteListView->model()); emit startFilterDiveSite(displayed_dive_site.uuid); + if (m) + m->invalidate(); } emit requestCoordinates(); -- cgit v1.2.3-70-g09d2