mirror of
https://github.com/subsurface/subsurface.git
synced 2025-02-19 22:16:15 +00:00
Simplify the geo reverse lookup function
We never actually create a list of dive sites for which we call the reverse lookup service, it's always just displayed_dive_site. So make this all much simpler and just go straight for that. This commit removes a loop, but doesn't change the indentation of the code inside the loop to make it easier to see what was changed. That whitespace change will be in my next commit. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
parent
ff26ffe0d0
commit
09b02aae4e
2 changed files with 5 additions and 39 deletions
|
|
@ -19,14 +19,6 @@
|
||||||
#include <QEventLoop>
|
#include <QEventLoop>
|
||||||
#include <QTimer>
|
#include <QTimer>
|
||||||
|
|
||||||
struct GeoLookupInfo {
|
|
||||||
degrees_t lat;
|
|
||||||
degrees_t lon;
|
|
||||||
uint32_t uuid;
|
|
||||||
};
|
|
||||||
|
|
||||||
QVector<GeoLookupInfo> geo_lookup_data;
|
|
||||||
|
|
||||||
ReverseGeoLookupThread* ReverseGeoLookupThread::instance() {
|
ReverseGeoLookupThread* ReverseGeoLookupThread::instance() {
|
||||||
static ReverseGeoLookupThread* self = new ReverseGeoLookupThread();
|
static ReverseGeoLookupThread* self = new ReverseGeoLookupThread();
|
||||||
return self;
|
return self;
|
||||||
|
|
@ -37,8 +29,6 @@ ReverseGeoLookupThread::ReverseGeoLookupThread(QObject *obj) : QThread(obj)
|
||||||
}
|
}
|
||||||
|
|
||||||
void ReverseGeoLookupThread::run() {
|
void ReverseGeoLookupThread::run() {
|
||||||
if (geo_lookup_data.isEmpty())
|
|
||||||
return;
|
|
||||||
|
|
||||||
QNetworkRequest request;
|
QNetworkRequest request;
|
||||||
QNetworkAccessManager *rgl = new QNetworkAccessManager();
|
QNetworkAccessManager *rgl = new QNetworkAccessManager();
|
||||||
|
|
@ -53,11 +43,10 @@ void ReverseGeoLookupThread::run() {
|
||||||
request.setRawHeader("User-Agent", getUserAgent().toUtf8());
|
request.setRawHeader("User-Agent", getUserAgent().toUtf8());
|
||||||
connect(&timer, SIGNAL(timeout()), &loop, SLOT(quit()));
|
connect(&timer, SIGNAL(timeout()), &loop, SLOT(quit()));
|
||||||
|
|
||||||
Q_FOREACH (const GeoLookupInfo& info, geo_lookup_data ) {
|
struct dive_site *ds = &displayed_dive_site;
|
||||||
struct dive_site *ds = info.uuid ? get_dive_site_by_uuid(info.uuid) : &displayed_dive_site;
|
|
||||||
|
|
||||||
// first check the findNearbyPlaces API from geonames - that should give us country, state, city
|
// first check the findNearbyPlaces API from geonames - that should give us country, state, city
|
||||||
request.setUrl(geonamesURL.arg(uiLanguage(NULL)).arg(info.lat.udeg / 1000000.0).arg(info.lon.udeg / 1000000.0));
|
request.setUrl(geonamesURL.arg(uiLanguage(NULL)).arg(ds->latitude.udeg / 1000000.0).arg(ds->longitude.udeg / 1000000.0));
|
||||||
|
|
||||||
QNetworkReply *reply = rgl->get(request);
|
QNetworkReply *reply = rgl->get(request);
|
||||||
timer.setSingleShot(true);
|
timer.setSingleShot(true);
|
||||||
|
|
@ -134,7 +123,7 @@ void ReverseGeoLookupThread::run() {
|
||||||
reply->abort();
|
reply->abort();
|
||||||
}
|
}
|
||||||
// next check the oceans API to figure out the body of water
|
// next check the oceans API to figure out the body of water
|
||||||
request.setUrl(geonamesOceanURL.arg(uiLanguage(NULL)).arg(info.lat.udeg / 1000000.0).arg(info.lon.udeg / 1000000.0));
|
request.setUrl(geonamesOceanURL.arg(uiLanguage(NULL)).arg(ds->latitude.udeg / 1000000.0).arg(ds->longitude.udeg / 1000000.0));
|
||||||
reply = rgl->get(request);
|
reply = rgl->get(request);
|
||||||
connect(reply, SIGNAL(finished()), &loop, SLOT(quit()));
|
connect(reply, SIGNAL(finished()), &loop, SLOT(quit()));
|
||||||
timer.start(5000); // 5 secs. timeout
|
timer.start(5000); // 5 secs. timeout
|
||||||
|
|
@ -182,29 +171,6 @@ void ReverseGeoLookupThread::run() {
|
||||||
|
|
||||||
clear_reply:
|
clear_reply:
|
||||||
reply->deleteLater();
|
reply->deleteLater();
|
||||||
}
|
|
||||||
rgl->deleteLater();
|
rgl->deleteLater();
|
||||||
}
|
}
|
||||||
|
|
||||||
void ReverseGeoLookupThread::lookup(dive_site *ds)
|
|
||||||
{
|
|
||||||
if (!ds)
|
|
||||||
return;
|
|
||||||
GeoLookupInfo info;
|
|
||||||
info.lat = ds->latitude;
|
|
||||||
info.lon = ds->longitude;
|
|
||||||
info.uuid = ds->uuid;
|
|
||||||
|
|
||||||
geo_lookup_data.clear();
|
|
||||||
geo_lookup_data.append(info);
|
|
||||||
run();
|
|
||||||
}
|
|
||||||
|
|
||||||
extern "C" void add_geo_information_for_lookup(degrees_t latitude, degrees_t longitude, uint32_t uuid) {
|
|
||||||
GeoLookupInfo info;
|
|
||||||
info.lat = latitude;
|
|
||||||
info.lon = longitude;
|
|
||||||
info.uuid = uuid;
|
|
||||||
|
|
||||||
geo_lookup_data.append(info);
|
|
||||||
}
|
|
||||||
|
|
|
||||||
|
|
@ -292,7 +292,7 @@ void LocationInformationWidget::resetPallete()
|
||||||
void LocationInformationWidget::reverseGeocode()
|
void LocationInformationWidget::reverseGeocode()
|
||||||
{
|
{
|
||||||
ReverseGeoLookupThread *geoLookup = ReverseGeoLookupThread::instance();
|
ReverseGeoLookupThread *geoLookup = ReverseGeoLookupThread::instance();
|
||||||
geoLookup->lookup(&displayed_dive_site);
|
geoLookup->run();
|
||||||
updateLabels();
|
updateLabels();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue