From 28e3413ff66552f392fecee25068d634cdfe59fc Mon Sep 17 00:00:00 2001 From: Linus Torvalds Date: Sat, 20 Oct 2018 14:12:15 -0400 Subject: 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 --- qt-models/divelocationmodel.cpp | 19 ++++++++----------- qt-models/divelocationmodel.h | 6 +++--- qt-models/gpslistmodel.cpp | 4 ++-- 3 files changed, 13 insertions(+), 16 deletions(-) (limited to 'qt-models') 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(); } -- cgit v1.2.3-70-g09d2