summaryrefslogtreecommitdiffstats
path: root/qt-models/divelocationmodel.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'qt-models/divelocationmodel.cpp')
-rw-r--r--qt-models/divelocationmodel.cpp38
1 files changed, 26 insertions, 12 deletions
diff --git a/qt-models/divelocationmodel.cpp b/qt-models/divelocationmodel.cpp
index 4411f5d98..ca803f1cf 100644
--- a/qt-models/divelocationmodel.cpp
+++ b/qt-models/divelocationmodel.cpp
@@ -116,21 +116,35 @@ GeoReferencingOptionsModel::GeoReferencingOptionsModel(QObject *parent) : QStrin
setStringList(list);
}
-bool filter_same_gps_cb (QAbstractItemModel *model, int sourceRow, const QModelIndex& parent)
+bool GPSLocationInformationModel::filterAcceptsRow(int sourceRow, const QModelIndex &parent) const
{
- int ref_lat = displayed_dive_site.latitude.udeg;
- int ref_lon = displayed_dive_site.longitude.udeg;
- uint32_t ref_uuid = displayed_dive_site.uuid;
- QSortFilterProxyModel *self = (QSortFilterProxyModel*) model;
+ uint32_t uuid = sourceModel()->index(sourceRow, LocationInformationModel::UUID, parent).data().toUInt();
+ if (uuid == ignoreUuid || uuid == RECENTLY_ADDED_DIVESITE)
+ return false;
+ struct dive_site *ds = get_dive_site_by_uuid(uuid);
- uint32_t ds_uuid = self->sourceModel()->index(sourceRow, LocationInformationModel::UUID, parent).data().toUInt();
- struct dive_site *ds = get_dive_site_by_uuid(ds_uuid);
+ return ds && ds->latitude.udeg == latitude.udeg && ds->longitude.udeg == longitude.udeg;
+}
- if (!ds)
- return false;
+GPSLocationInformationModel::GPSLocationInformationModel(QObject *parent) : QSortFilterProxyModel(parent),
+ ignoreUuid(0),
+ latitude({ 0 }),
+ longitude({ 0 })
+{
+ setSourceModel(LocationInformationModel::instance());
+}
- if (ds->latitude.udeg == 0 || ds->longitude.udeg == 0)
- return false;
+void GPSLocationInformationModel::set(uint32_t ignoreUuidIn, degrees_t latitudeIn, degrees_t longitudeIn)
+{
+ ignoreUuid = ignoreUuidIn;
+ latitude = latitudeIn;
+ longitude = longitudeIn;
+ invalidate();
+}
- return ds->latitude.udeg == ref_lat && ds->longitude.udeg == ref_lon && ds->uuid != ref_uuid;
+void GPSLocationInformationModel::setCoordinates(degrees_t latitudeIn, degrees_t longitudeIn)
+{
+ latitude = latitudeIn;
+ longitude = longitudeIn;
+ invalidate();
}