summaryrefslogtreecommitdiffstats
path: root/desktop-widgets/locationinformation.cpp
diff options
context:
space:
mode:
authorGravatar Michael Werle <micha@michaelwerle.com>2020-09-03 12:04:05 +0900
committerGravatar bstoeger <32835590+bstoeger@users.noreply.github.com>2020-09-05 17:34:15 +0200
commitd404aa767feb24b19da50ba833723b3dd0cfb271 (patch)
treea6c3e4a0338854679e2c8f2e79bcac89e1244a76 /desktop-widgets/locationinformation.cpp
parent4f3b26f9b6296273e37ec317bc68f32f94f546dc (diff)
downloadsubsurface-d404aa767feb24b19da50ba833723b3dd0cfb271.tar.gz
[Bug #2934] Geo Lookup - support for remote dive sites
Some remote dive sites have no populated places (towns, cities) nearby. For such sites, we now fall back to looking up unpopulated place names, such as the reef or island name. Also some code refactorisation: the actual network access is now encapsulated in its own function removing some duplicated code handling in the reverseGeoLookup function and making it more readable. Furthermore, reverseGeoLookup() was completely refactored as most of its functionality was due to legacy requirements; the current code-base only calls this function from a single location and only with an empty taxonomy_data object. This makes the function more focussed and much simpler and more readable. Finally, a resource leak in reverseGeocde introduced in 4f3b26f9b6296273e37ec317bc68f32f94f546dc was fixed. Signed-off-by: Michael Werle <micha@michaelwerle.com>
Diffstat (limited to 'desktop-widgets/locationinformation.cpp')
-rw-r--r--desktop-widgets/locationinformation.cpp8
1 files changed, 5 insertions, 3 deletions
diff --git a/desktop-widgets/locationinformation.cpp b/desktop-widgets/locationinformation.cpp
index 01a1a4390..780390198 100644
--- a/desktop-widgets/locationinformation.cpp
+++ b/desktop-widgets/locationinformation.cpp
@@ -317,10 +317,12 @@ void LocationInformationWidget::reverseGeocode()
location_t location = parseGpsText(ui.diveSiteCoordinates->text());
if (!ds || !has_location(&location))
return;
- taxonomy_data taxonomy = { 0, 0 };
- reverseGeoLookup(location.lat, location.lon, &taxonomy);
- if (ds != diveSite)
+ taxonomy_data taxonomy = reverseGeoLookup(location.lat, location.lon);
+ if (ds != diveSite) {
+ free_taxonomy(&taxonomy);
return;
+ }
+ // This call transfers ownership of the taxonomy memory into an EditDiveSiteTaxonomy object
Command::editDiveSiteTaxonomy(ds, taxonomy);
}