Fixed formatting

This commit is contained in:
PaulStets 2018-06-26 09:22:36 +03:00
parent 0cdbff3454
commit cb9b2cad5e

View file

@ -4,6 +4,7 @@ package net.osmand.plus.wikivoyage;
import android.content.Intent;
import android.net.Uri;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.util.Log;
@ -41,6 +42,7 @@ public class WikivoyageWebViewClient extends WebViewClient {
private TravelArticle article;
private boolean nightMode;
private static final String GEO_PARAMS = "?lat=";
private static final String PREFIX_GEO = "geo:";
private static final String PAGE_PREFIX_HTTP = "http://";
private static final String PAGE_PREFIX_HTTPS = "https://";
@ -71,7 +73,10 @@ public class WikivoyageWebViewClient extends WebViewClient {
}
return true;
} else if (url.contains(WIKI_DOMAIN) && isWebPage && article != null) {
wikiArticleHelper.showWikiArticle(new LatLon(article.getLat(), article.getLon()), url);
LatLon articleCoordinates = parseCoordinates(url);
url = url.contains(GEO_PARAMS) ? url.substring(0, url.indexOf(GEO_PARAMS)) : url;
wikiArticleHelper.showWikiArticle(articleCoordinates == null ?
new LatLon(article.getLat(), article.getLon()) : articleCoordinates, url);
} else if (isWebPage) {
WikiArticleHelper.warnAboutExternalLoad(url, activity, nightMode);
} else if (url.startsWith(PREFIX_GEO)) {
@ -123,6 +128,27 @@ public class WikivoyageWebViewClient extends WebViewClient {
return true;
}
@Nullable
private LatLon parseCoordinates(@NonNull String url) {
if (url.contains(GEO_PARAMS)) {
String geoPart = url.substring(url.indexOf(GEO_PARAMS));
int firstValueStart = geoPart.indexOf("=");
int firstValueEnd = geoPart.indexOf("&");
int secondValueStart = geoPart.indexOf("=", firstValueEnd);
if (firstValueStart != -1 && firstValueEnd != -1 && secondValueStart != -1
&& firstValueEnd > firstValueStart) {
String lat = geoPart.substring(firstValueStart + 1, firstValueEnd);
String lon = geoPart.substring(secondValueStart + 1);
try {
return new LatLon(Double.parseDouble(lat), Double.parseDouble(lon));
} catch (NumberFormatException e) {
Log.w(TAG, e.getMessage(), e);
}
}
}
return null;
}
public void setArticle(@NonNull TravelArticle article) {
this.article = article;
}