summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--qt-models/divelocationmodel.cpp9
-rw-r--r--qt-models/divelocationmodel.h2
-rw-r--r--qt-ui/locationinformation.cpp8
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<QSortFilterProxyModel*>(ui.diveSiteListView->model());
emit startFilterDiveSite(displayed_dive_site.uuid);
+ if (m)
+ m->invalidate();
}
emit requestCoordinates();