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