mirror of
https://github.com/subsurface/subsurface.git
synced 2025-02-19 22:16:15 +00:00
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>
This commit is contained in:
parent
c986940630
commit
28e3413ff6
40 changed files with 251 additions and 264 deletions
|
@ -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();
|
||||
}
|
||||
|
|
|
@ -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 {
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue