diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2018-10-20 14:12:15 -0400 |
---|---|---|
committer | Lubomir I. Ivanov <neolit123@gmail.com> | 2018-10-21 19:55:09 +0300 |
commit | 28e3413ff66552f392fecee25068d634cdfe59fc (patch) | |
tree | 5fe303d1e7dc1c371e13b534b85c232e29aea884 /qt-models | |
parent | c9869406301ff72f76b399097f0845fc1102ced1 (diff) | |
download | subsurface-28e3413ff66552f392fecee25068d634cdfe59fc.tar.gz |
Add 'location_t' data structure
Instead of having people treat latitude and longitude as separate
things, just add a 'location_t' data structure that contains both.
Almost all cases want to always act on them together.
This is really just prep-work for adding a few more locations that we
track: I want to add a entry/exit location to each dive (independent of
the dive site) because of how the Garmin Descent gives us the
information (and hopefully, some day, other dive computers too).
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'qt-models')
-rw-r--r-- | qt-models/divelocationmodel.cpp | 19 | ||||
-rw-r--r-- | qt-models/divelocationmodel.h | 6 | ||||
-rw-r--r-- | qt-models/gpslistmodel.cpp | 4 |
3 files changed, 13 insertions, 16 deletions
diff --git a/qt-models/divelocationmodel.cpp b/qt-models/divelocationmodel.cpp index ca803f1cf..5949628b5 100644 --- a/qt-models/divelocationmodel.cpp +++ b/qt-models/divelocationmodel.cpp @@ -43,8 +43,8 @@ QVariant LocationInformationModel::getDiveSiteData(const struct dive_site *ds, i switch(column) { case UUID: return ds->uuid; case NAME: return ds->name; - case LATITUDE: return ds->latitude.udeg; - case LONGITUDE: return ds->longitude.udeg; + case LATITUDE: return ds->location.lat.udeg; + case LONGITUDE: return ds->location.lon.udeg; case COORDS: return "TODO"; case DESCRIPTION: return ds->description; case NOTES: return ds->name; @@ -123,28 +123,25 @@ bool GPSLocationInformationModel::filterAcceptsRow(int sourceRow, const QModelIn return false; struct dive_site *ds = get_dive_site_by_uuid(uuid); - return ds && ds->latitude.udeg == latitude.udeg && ds->longitude.udeg == longitude.udeg; + return ds && same_location(&ds->location, &location); } GPSLocationInformationModel::GPSLocationInformationModel(QObject *parent) : QSortFilterProxyModel(parent), ignoreUuid(0), - latitude({ 0 }), - longitude({ 0 }) + location({{0},{0}}) { setSourceModel(LocationInformationModel::instance()); } -void GPSLocationInformationModel::set(uint32_t ignoreUuidIn, degrees_t latitudeIn, degrees_t longitudeIn) +void GPSLocationInformationModel::set(uint32_t ignoreUuidIn, const location_t &locationIn) { ignoreUuid = ignoreUuidIn; - latitude = latitudeIn; - longitude = longitudeIn; + location = locationIn; invalidate(); } -void GPSLocationInformationModel::setCoordinates(degrees_t latitudeIn, degrees_t longitudeIn) +void GPSLocationInformationModel::setCoordinates(const location_t &locationIn) { - latitude = latitudeIn; - longitude = longitudeIn; + location = locationIn; invalidate(); } diff --git a/qt-models/divelocationmodel.h b/qt-models/divelocationmodel.h index fe78854b9..14077609c 100644 --- a/qt-models/divelocationmodel.h +++ b/qt-models/divelocationmodel.h @@ -38,12 +38,12 @@ class GPSLocationInformationModel : public QSortFilterProxyModel { Q_OBJECT private: uint32_t ignoreUuid; - degrees_t latitude, longitude; + location_t location; bool filterAcceptsRow(int sourceRow, const QModelIndex &source_parent) const override; public: GPSLocationInformationModel(QObject *parent = nullptr); - void set(uint32_t ignoreUuid, degrees_t latitude, degrees_t longitude); - void setCoordinates(degrees_t latitude, degrees_t longitude); + void set(uint32_t ignoreUuid, const location_t &); + void setCoordinates(const location_t &); }; class GeoReferencingOptionsModel : public QStringListModel { diff --git a/qt-models/gpslistmodel.cpp b/qt-models/gpslistmodel.cpp index 4a4a8feac..8d874d67b 100644 --- a/qt-models/gpslistmodel.cpp +++ b/qt-models/gpslistmodel.cpp @@ -46,9 +46,9 @@ QVariant GpsListModel::data(const QModelIndex &index, int role) const else if (role == GpsNameRole) return gt.name; else if (role == GpsLatitudeRole) - return QString::number(gt.latitude.udeg / 1000000.0, 'f', 6); + return QString::number(gt.location.lat.udeg / 1000000.0, 'f', 6); else if (role == GpsLongitudeRole) - return QString::number(gt.longitude.udeg / 1000000.0, 'f', 6); + return QString::number(gt.location.lon.udeg / 1000000.0, 'f', 6); return QVariant(); } |