mirror of
https://github.com/subsurface/subsurface.git
synced 2025-02-19 22:16:15 +00:00
Dive site: sort by distance to current dive
When presenting the list of dive sites on the dive-info tab, sort the dive sites by distance to the current dive. The idea is that when the user wants to select a dive site, close dive sites should be prioritized. The location of the dive is determined with the dive_get_gps_location() function introduced in the previous commit. This actual GPS data get precedence over the currently set dive site for that dive. On change of dive, the current location is updated in the DiveLocationFilterProxyModel so that a potentially expensive search for GPS data is not repeated for every comparison. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
This commit is contained in:
parent
bab7033ccb
commit
c7e1c40b0e
3 changed files with 26 additions and 8 deletions
|
@ -391,15 +391,14 @@ void MainTab::updateDateTime(struct dive *d)
|
|||
void MainTab::updateDiveSite(struct dive *d)
|
||||
{
|
||||
struct dive_site *ds = d->dive_site;
|
||||
ui.location->setCurrentDiveSite(d);
|
||||
if (ds) {
|
||||
ui.location->setCurrentDiveSite(ds);
|
||||
ui.locationTags->setText(constructLocationTags(&ds->taxonomy, true));
|
||||
|
||||
if (ui.locationTags->text().isEmpty() && has_location(&ds->location))
|
||||
ui.locationTags->setText(printGPSCoords(&ds->location));
|
||||
ui.editDiveSiteButton->setEnabled(true);
|
||||
} else {
|
||||
ui.location->clear();
|
||||
ui.locationTags->clear();
|
||||
ui.editDiveSiteButton->setEnabled(false);
|
||||
}
|
||||
|
@ -601,9 +600,7 @@ void MainTab::reload()
|
|||
|
||||
void MainTab::refreshDisplayedDiveSite()
|
||||
{
|
||||
struct dive_site *ds = get_dive_site_for_dive(current_dive);
|
||||
if (ds)
|
||||
ui.location->setCurrentDiveSite(ds);
|
||||
ui.location->setCurrentDiveSite(current_dive);
|
||||
}
|
||||
|
||||
void MainTab::acceptChanges()
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue