mirror of
https://github.com/subsurface/subsurface.git
synced 2025-02-19 22:16:15 +00:00
Dive site: add proximity field to dive site list
Merging dive sites is currently only possible if dive sites are at the exact same position. Introduce a field where the user can enter a distance up to which all dive sites should be listed. These can then be merged. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
This commit is contained in:
parent
22fe0c14e8
commit
8287d86d2b
5 changed files with 63 additions and 5 deletions
|
@ -302,15 +302,17 @@ GeoReferencingOptionsModel::GeoReferencingOptionsModel(QObject *parent) : QStrin
|
|||
bool GPSLocationInformationModel::filterAcceptsRow(int sourceRow, const QModelIndex &parent) const
|
||||
{
|
||||
struct dive_site *ds = sourceModel()->index(sourceRow, LocationInformationModel::DIVESITE, parent).data().value<dive_site *>();
|
||||
if (ds == ignoreDs || ds == RECENTLY_ADDED_DIVESITE)
|
||||
if (!ds || ds == ignoreDs || ds == RECENTLY_ADDED_DIVESITE)
|
||||
return false;
|
||||
|
||||
return ds && same_location(&ds->location, &location);
|
||||
return distance <= 0 ? same_location(&ds->location, &location)
|
||||
: (int64_t)get_distance(&ds->location, &location) * 1000 <= distance; // We need 64 bit to represent distances in mm
|
||||
}
|
||||
|
||||
GPSLocationInformationModel::GPSLocationInformationModel(QObject *parent) : QSortFilterProxyModel(parent),
|
||||
ignoreDs(nullptr),
|
||||
location({{0},{0}})
|
||||
location({{0},{0}}),
|
||||
distance(0)
|
||||
{
|
||||
setSourceModel(LocationInformationModel::instance());
|
||||
}
|
||||
|
@ -327,3 +329,9 @@ void GPSLocationInformationModel::setCoordinates(const location_t &locationIn)
|
|||
location = locationIn;
|
||||
invalidate();
|
||||
}
|
||||
|
||||
void GPSLocationInformationModel::setDistance(int64_t dist)
|
||||
{
|
||||
distance = dist;
|
||||
invalidate();
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue