Merge branch 'r1.9' of ssh://github.com/osmandapp/Osmand into r1.9

This commit is contained in:
Victor Shcherb 2015-01-15 02:46:11 +01:00
commit 741099b6ed
14 changed files with 165 additions and 98 deletions

View file

@ -247,4 +247,8 @@ public class TurnType {
public static boolean isRightTurn(int type) { public static boolean isRightTurn(int type) {
return type == TR || type == TSHR || type == TSLR || type == TU; return type == TR || type == TSHR || type == TSLR || type == TU;
} }
public static boolean isSlightTurn(int type) {
return type == TSLR || type == TSLL || type == KL || type == KR || type == C;
}
} }

View file

@ -1,6 +1,8 @@
package net.osmand.util; package net.osmand.util;
import java.net.URI; import java.net.URI;
import java.net.URLDecoder;
import java.net.URLEncoder;
import java.util.regex.Matcher; import java.util.regex.Matcher;
import java.util.regex.Pattern; import java.util.regex.Pattern;
@ -82,15 +84,15 @@ public class GeoPointParserUtil {
// google calendar // google calendar
// geo:0,0?q=760 West Genesee Street Syracuse NY 13204 // geo:0,0?q=760 West Genesee Street Syracuse NY 13204
String qstr = "q=760 West Genesee Street Syracuse NY 13204"; String qstr = "760 West Genesee Street Syracuse NY 13204";
url = "geo:0,0?" + qstr; url = "geo:0,0?q=" + qstr;
System.out.println("url: " + url); System.out.println("url: " + url);
actual = GeoPointParserUtil.parse("geo", url); actual = GeoPointParserUtil.parse("geo", url);
assertGeoPoint(actual, new GeoParsedPoint(qstr.replaceAll("\\s+", "+"))); assertGeoPoint(actual, new GeoParsedPoint(qstr));
// geo:0,0?z=11&q=1600+Amphitheatre+Parkway,+CA // geo:0,0?z=11&q=1600+Amphitheatre+Parkway,+CA
qstr = "q=1600+Amphitheatre+Parkway,+CA"; qstr = "1600 Amphitheatre Parkway, CA";
url = "geo:0,0?z=11&" + qstr; url = "geo:0,0?z=11&q=" + URLEncoder.encode(qstr);
System.out.println("url: " + url); System.out.println("url: " + url);
actual = GeoPointParserUtil.parse("geo", url); actual = GeoPointParserUtil.parse("geo", url);
assertGeoPoint(actual, new GeoParsedPoint(qstr)); assertGeoPoint(actual, new GeoParsedPoint(qstr));
@ -330,7 +332,7 @@ public class GeoPointParserUtil {
/** /**
* Parses geo and map intents: * Parses geo and map intents:
* *
* @param scheme * @param scheme
* The intent scheme * The intent scheme
* @param data * @param data
@ -450,48 +452,79 @@ public class GeoPointParserUtil {
return null; return null;
} }
if ("geo".equals(scheme) || "osmand.geo".equals(scheme)) { if ("geo".equals(scheme) || "osmand.geo".equals(scheme)) {
final String schemeSpecific = data.getSchemeSpecificPart(); String schemeSpecific = data.getSchemeSpecificPart();
if (schemeSpecific == null) { if (schemeSpecific == null) {
return null; return null;
} }
if (schemeSpecific.startsWith("0,0?")) {
// geo:0,0?q=34.99,-106.61(Treasure Island) String name = null;
// geo:0,0?z=11&q=34.99,-106.61(Treasure Island) final Pattern namePattern = Pattern.compile("[\\+\\s]*\\((.*)\\)[\\+\\s]*$");
String query = schemeSpecific.substring("0,0?".length()); final Matcher nameMatcher = namePattern.matcher(schemeSpecific);
final String pattern = "(?:z=(\\d{1,2}))?&?q=([+-]?\\d+(?:\\.\\d+)?),([+-]?\\d+(?:\\.\\d+)?)[\\+]?(?:\\((.+?)\\))?"; if (nameMatcher.find()) {
final Matcher matcher = Pattern.compile(pattern).matcher(query); name = URLDecoder.decode(nameMatcher.group(1));
if (matcher.matches()) { if (name != null) {
final String z = matcher.group(1); schemeSpecific = schemeSpecific.substring(0, nameMatcher.start());
final String name = matcher.group(4);
final int zoom = z != null ? Integer.parseInt(z) : GeoParsedPoint.NO_ZOOM;
final double lat = Double.parseDouble(matcher.group(2));
final double lon = Double.parseDouble(matcher.group(3));
return new GeoParsedPoint(lat, lon, zoom, name);
} else {
// geo:0,0?q=1600+Amphitheatre+Parkway%2C+CA
if (query.contains("z="))
query = query.substring(query.indexOf("&") + 1);
return new GeoParsedPoint(query);
}
} else {
// geo:47.6,-122.3
// geo:47.6,-122.3?z=11 (Treasure Island)
final String pattern = "([+-]?\\d+(?:\\.\\d+)?),([+-]?\\d+(?:\\.\\d+)?)(?:(?:\\?z=(\\d{1,2}))?|(?:\\?q=.*?)?)[\\+]?(?:\\((.*?)\\))?";
final Matcher matcher = Pattern.compile(pattern).matcher(schemeSpecific);
if (matcher.matches()) {
final double lat = Double.valueOf(matcher.group(1));
final double lon = Double.valueOf(matcher.group(2));
final String name = matcher.group(4);
int zoom = matcher.group(3) != null ? Integer.parseInt(matcher.group(3)) : GeoParsedPoint.NO_ZOOM;
if (zoom != GeoParsedPoint.NO_ZOOM) {
return new GeoParsedPoint(lat, lon, zoom, name);
} else {
return new GeoParsedPoint(lat, lon, name);
}
} else {
return null;
} }
} }
String positionPart;
String queryPart = "";
int queryStartIndex = schemeSpecific.indexOf('?');
if (queryStartIndex == -1) {
positionPart = schemeSpecific;
} else {
positionPart = schemeSpecific.substring(0, queryStartIndex);
if (queryStartIndex < schemeSpecific.length())
queryPart = schemeSpecific.substring(queryStartIndex + 1);
}
final Pattern positionPattern = Pattern.compile(
"([+-]?\\d+(?:\\.\\d+)?),([+-]?\\d+(?:\\.\\d+)?)");
final Matcher positionMatcher = positionPattern.matcher(positionPart);
if (!positionMatcher.find()) {
return null;
}
double lat = Double.valueOf(positionMatcher.group(1));
double lon = Double.valueOf(positionMatcher.group(2));
int zoom = GeoParsedPoint.NO_ZOOM;
String searchRequest = null;
for (String param : queryPart.split("&")) {
String paramName;
String paramValue = null;
int nameValueDelimititerIndex = param.indexOf('=');
if (nameValueDelimititerIndex == -1) {
paramName = param;
} else {
paramName = param.substring(0, nameValueDelimititerIndex);
if (nameValueDelimititerIndex < param.length())
paramValue = param.substring(nameValueDelimititerIndex + 1);
}
if ("z".equals(paramName) && paramValue != null) {
zoom = Integer.parseInt(paramValue);
} else if ("q".equals(paramName) && paramValue != null) {
searchRequest = URLDecoder.decode(paramValue);
}
}
if (searchRequest != null) {
final Matcher positionInSearchRequestMatcher =
positionPattern.matcher(searchRequest);
if (lat == 0.0 && lon == 0.0 && positionInSearchRequestMatcher.find()) {
lat = Double.valueOf(positionInSearchRequestMatcher.group(1));
lon = Double.valueOf(positionInSearchRequestMatcher.group(2));
}
}
if (lat == 0.0 && lon == 0.0 && searchRequest != null) {
return new GeoParsedPoint(searchRequest);
}
if (zoom != GeoParsedPoint.NO_ZOOM) {
return new GeoParsedPoint(lat, lon, zoom, name);
}
return new GeoParsedPoint(lat, lon, name);
} }
return null; return null;
} }

View file

@ -165,11 +165,16 @@
<activity android:name="net.osmand.plus.activities.search.GeoIntentActivity" android:label="@string/app_name"> <activity android:name="net.osmand.plus.activities.search.GeoIntentActivity" android:label="@string/app_name">
<intent-filter> <intent-filter>
<data android:scheme="geo" />
<data android:scheme="osmand.geo" /> <data android:scheme="osmand.geo" />
<action android:name="android.intent.action.VIEW" /> <action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.DEFAULT" />
</intent-filter> </intent-filter>
<intent-filter>
<data android:scheme="geo" />
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="android.intent.category.BROWSABLE"/>
</intent-filter>
<intent-filter> <intent-filter>
<data android:scheme="http" android:host="maps.google.com" /> <data android:scheme="http" android:host="maps.google.com" />
<data android:scheme="https" android:host="maps.google.com" /> <data android:scheme="https" android:host="maps.google.com" />

View file

@ -38,14 +38,14 @@
</target> </target>
<target name="fix_apostrophe_issues"> <target name="fix_apostrophe_issues">
<replace token="version='1.0'" value="version=&quot;1.0&quot;"> <replace token="version='1.0'" value="version=&quot;1.0&quot;" encoding="UTF-8">
<fileset dir="res" includes="**/strings.xml" /> <fileset dir="res" includes="**/strings.xml" />
</replace> </replace>
<replace token="encoding='utf-8'" value="encoding=&quot;utf-8&quot;"> <replace token="encoding='utf-8'" value="encoding=&quot;utf-8&quot;" encoding="UTF-8">
<fileset dir="res" includes="**/strings.xml" /> <fileset dir="res" includes="**/strings.xml" />
</replace> </replace>
<replaceregexp match="([^\\])'" replace="\1\\\\'" flags="-g" byline="off"> <replaceregexp match="([^\\])'" replace="\1\\\\'" flags="-g" byline="off" encoding="UTF-8">
<fileset dir="res" includes="**/strings.xml" /> <fileset dir="res" includes="**/strings.xml" />
</replaceregexp> </replaceregexp>
</target> </target>

View file

@ -16,6 +16,7 @@ import java.util.regex.Pattern;
import android.app.AlertDialog; import android.app.AlertDialog;
import android.content.ActivityNotFoundException; import android.content.ActivityNotFoundException;
import android.content.Context;
import android.content.DialogInterface; import android.content.DialogInterface;
import android.content.Intent; import android.content.Intent;
import android.net.Uri; import android.net.Uri;
@ -151,9 +152,6 @@ public class FavouritesDbHelper {
} }
FavoriteGroup group = getOrCreateGroup(p, 0); FavoriteGroup group = getOrCreateGroup(p, 0);
//making sure that dublicated names will not occur in favorites
checkDublicates(p);
if (!p.getName().equals("")) { if (!p.getName().equals("")) {
p.setVisible(group.visible); p.setVisible(group.visible);
p.setColor(group.color); p.setColor(group.color);
@ -167,45 +165,45 @@ public class FavouritesDbHelper {
return true; return true;
} }
private void checkDublicates(FavouritePoint p){ public static AlertDialog.Builder checkDublicates(FavouritePoint p, FavouritesDbHelper fdb, Context uiContext) {
boolean fl = true;
boolean emoticons = false; boolean emoticons = false;
String index = ""; String index = "";
int number = 0; int number = 0;
String name = checkEmoticons(p.getName()); String name = checkEmoticons(p.getName());
String category = checkEmoticons(p.getCategory()); String category = checkEmoticons(p.getCategory());
p.setCategory(category); p.setCategory(category);
if (name.length() != p.getName().length()){ if (name.length() != p.getName().length()) {
emoticons = true; emoticons = true;
} }
while (fl){ boolean fl = true;
while (fl) {
fl = false; fl = false;
for (FavouritePoint fp : cachedFavoritePoints){ for (FavouritePoint fp : fdb.getFavouritePoints()) {
if (fp.getName().equals(name)){ if (fp.getName().equals(name)) {
number++; number++;
index = " (" + number + ")"; index = " (" + number + ")";
name = p.getName() + index; name = p.getName() + index;
fl=true; fl = true;
break; break;
} }
} }
} }
if ((index.length() > 0 || emoticons)&& if ((index.length() > 0 || emoticons) ) {
context.getMapActivity() != null){ AlertDialog.Builder builder = new AlertDialog.Builder(uiContext);
AlertDialog.Builder builder = new AlertDialog.Builder(context.getMapActivity());
builder.setTitle(R.string.fav_point_dublicate); builder.setTitle(R.string.fav_point_dublicate);
if (emoticons){ if (emoticons) {
builder.setMessage(context.getString(R.string.fav_point_emoticons_message, name)); builder.setMessage(uiContext.getString(R.string.fav_point_emoticons_message, name));
} else { } else {
builder.setMessage(context.getString(R.string.fav_point_dublicate_message, name)); builder.setMessage(uiContext.getString(R.string.fav_point_dublicate_message, name));
} }
builder.setPositiveButton(R.string.default_buttons_ok, null); builder.setPositiveButton(R.string.default_buttons_ok, null);
p.setName(name); p.setName(name);
builder.show(); return builder;
} }
return null;
} }
public String checkEmoticons(String name){ public static String checkEmoticons(String name){
char[] chars = name.toCharArray(); char[] chars = name.toCharArray();
int index; int index;
char ch1; char ch1;
@ -317,7 +315,7 @@ public class FavouritesDbHelper {
return false; return false;
} }
private File getExternalFile() { public File getExternalFile() {
return new File(context.getAppPath(null), FILE_TO_SAVE); return new File(context.getAppPath(null), FILE_TO_SAVE);
} }

View file

@ -87,6 +87,7 @@ public class GPXUtilities {
public double lat; public double lat;
public double lon; public double lon;
public String name = null; public String name = null;
// previous undocumented feature 'category' ,now 'type'
public String category = null; public String category = null;
public String desc = null; public String desc = null;
// by default // by default
@ -754,7 +755,7 @@ public class GPXUtilities {
} }
writeNotNullText(serializer, "name", p.name); writeNotNullText(serializer, "name", p.name);
writeNotNullText(serializer, "desc", p.desc); writeNotNullText(serializer, "desc", p.desc);
writeNotNullText(serializer, "category", p.category); writeNotNullText(serializer, "type", p.category);
if (!Double.isNaN(p.hdop)) { if (!Double.isNaN(p.hdop)) {
writeNotNullText(serializer, "hdop", p.hdop + ""); writeNotNullText(serializer, "hdop", p.hdop + "");
} }
@ -917,6 +918,10 @@ public class GPXUtilities {
((WptPt) parse).desc = readText(parser, "desc"); ((WptPt) parse).desc = readText(parser, "desc");
} else if (tag.equals("category")) { } else if (tag.equals("category")) {
((WptPt) parse).category = readText(parser, "category"); ((WptPt) parse).category = readText(parser, "category");
} else if (tag.equals("type")) {
if(((WptPt) parse).category == null) {
((WptPt) parse).category = readText(parser, "type");
}
} else if (parser.getName().equals("ele")) { } else if (parser.getName().equals("ele")) {
String text = readText(parser, "ele"); String text = readText(parser, "ele");
if (text != null) { if (text != null) {

View file

@ -152,5 +152,14 @@ public class OsmAndAppCustomization {
public boolean showNavigationControls() { return true;} public boolean showNavigationControls() { return true;}
public boolean onlyTourDownload() { return false;} public boolean onlyTourDownload() {
return false;
}
public <T> void resumeActivity(Class<T> class1, T d) {
}
public <T> void pauseActivity(Class<T> class1) {
}
} }

View file

@ -117,9 +117,6 @@ public class OsmandApplication extends Application {
SQLiteAPI sqliteAPI; SQLiteAPI sqliteAPI;
BRouterServiceConnection bRouterServiceConnection; BRouterServiceConnection bRouterServiceConnection;
MapActivity mapActivity;
DownloadActivity downloadActivity;
@Override @Override
public void onCreate() { public void onCreate() {
@ -911,19 +908,5 @@ public class OsmandApplication extends Application {
} }
} }
public MapActivity getMapActivity() {
return mapActivity;
}
public void setMapActivity(MapActivity mapActivity) {
this.mapActivity = mapActivity;
}
public void setDownloadActivity(DownloadActivity downloadActivity) {
this.downloadActivity = downloadActivity;
}
public DownloadActivity getDownloadActivity() {
return downloadActivity;
}
} }

View file

@ -38,6 +38,7 @@ import android.content.DialogInterface;
import android.content.Intent; import android.content.Intent;
import android.content.res.Resources; import android.content.res.Resources;
import android.graphics.Typeface; import android.graphics.Typeface;
import android.net.Uri;
import android.os.AsyncTask; import android.os.AsyncTask;
import android.support.v4.app.FragmentActivity; import android.support.v4.app.FragmentActivity;
import android.text.Spannable; import android.text.Spannable;
@ -524,9 +525,11 @@ public class FavouritesTreeFragment extends OsmandExpandableListFragment {
hideProgressBar(); hideProgressBar();
final Intent sendIntent = new Intent(); final Intent sendIntent = new Intent();
sendIntent.setAction(Intent.ACTION_SEND); sendIntent.setAction(Intent.ACTION_SEND);
sendIntent.putExtra(Intent.EXTRA_TEXT, GPXUtilities.asString(gpxFile, getMyApplication())); sendIntent.putExtra(Intent.EXTRA_TEXT, "Favourites.gpx:\n\n\n"+GPXUtilities.asString(gpxFile, getMyApplication()));
sendIntent.putExtra(Intent.EXTRA_SUBJECT, getString(R.string.share_fav_subject)); sendIntent.putExtra(Intent.EXTRA_SUBJECT, getString(R.string.share_fav_subject));
sendIntent.setType("application/gpx+xml"); sendIntent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(helper.getExternalFile()));
// sendIntent.setType("application/gpx+xml");
sendIntent.setType("text/plain");
startActivity(sendIntent); startActivity(sendIntent);
} }
}; };

View file

@ -346,7 +346,6 @@ public class MapActivity extends AccessibleActivity implements
} }
settings.MAP_ACTIVITY_ENABLED.set(true); settings.MAP_ACTIVITY_ENABLED.set(true);
app.setMapActivity(this);
checkExternalStorage(); checkExternalStorage();
showAndHideMapPosition(); showAndHideMapPosition();
@ -420,6 +419,7 @@ public class MapActivity extends AccessibleActivity implements
if(glSurfaceView != null) { if(glSurfaceView != null) {
glSurfaceView.onResume(); glSurfaceView.onResume();
} }
getMyApplication().getAppCustomization().resumeActivity(MapActivity.class, this);
} }
@ -623,7 +623,7 @@ public class MapActivity extends AccessibleActivity implements
settings.setLastKnownMapZoom(mapView.getZoom()); settings.setLastKnownMapZoom(mapView.getZoom());
settings.MAP_ACTIVITY_ENABLED.set(false); settings.MAP_ACTIVITY_ENABLED.set(false);
app.setMapActivity(null); getMyApplication().getAppCustomization().pauseActivity(MapActivity.class);
app.getResourceManager().interruptRendering(); app.getResourceManager().interruptRendering();
app.getResourceManager().setBusyIndicator(null); app.getResourceManager().setBusyIndicator(null);
OsmandPlugin.onMapActivityPause(this); OsmandPlugin.onMapActivityPause(this);

View file

@ -12,17 +12,17 @@ import net.osmand.AndroidUtils;
import net.osmand.access.AccessibleToast; import net.osmand.access.AccessibleToast;
import net.osmand.data.FavouritePoint; import net.osmand.data.FavouritePoint;
import net.osmand.plus.FavouritesDbHelper; import net.osmand.plus.FavouritesDbHelper;
import net.osmand.plus.FavouritesDbHelper.FavoriteGroup;
import net.osmand.plus.OsmAndFormatter; import net.osmand.plus.OsmAndFormatter;
import net.osmand.plus.OsmandApplication; import net.osmand.plus.OsmandApplication;
import net.osmand.plus.R; import net.osmand.plus.R;
import net.osmand.plus.FavouritesDbHelper.FavoriteGroup;
import net.osmand.plus.activities.MapActivity; import net.osmand.plus.activities.MapActivity;
import net.osmand.plus.base.FavoriteImageDrawable; import net.osmand.plus.base.FavoriteImageDrawable;
import net.osmand.util.MapUtils; import net.osmand.util.MapUtils;
import android.app.Activity; import android.app.Activity;
import android.app.AlertDialog; import android.app.AlertDialog;
import android.app.Dialog;
import android.app.AlertDialog.Builder; import android.app.AlertDialog.Builder;
import android.app.Dialog;
import android.content.DialogInterface; import android.content.DialogInterface;
import android.content.res.Resources; import android.content.res.Resources;
import android.os.Build; import android.os.Build;
@ -202,13 +202,27 @@ public class FavoriteDialogs {
builder.setPositiveButton(R.string.default_buttons_add, new DialogInterface.OnClickListener() { builder.setPositiveButton(R.string.default_buttons_add, new DialogInterface.OnClickListener() {
@Override @Override
public void onClick(DialogInterface dialog, int which) { public void onClick(DialogInterface dialog, int which) {
FavouritePoint point = (FavouritePoint) args.getSerializable(KEY_FAVORITE); final FavouritePoint point = (FavouritePoint) args.getSerializable(KEY_FAVORITE);
OsmandApplication app = (OsmandApplication) activity.getApplication(); OsmandApplication app = (OsmandApplication) activity.getApplication();
String categoryStr = cat.getText().toString().trim(); String categoryStr = cat.getText().toString().trim();
final FavouritesDbHelper helper = app.getFavorites(); final FavouritesDbHelper helper = app.getFavorites();
app.getSettings().LAST_FAV_CATEGORY_ENTERED.set(categoryStr); app.getSettings().LAST_FAV_CATEGORY_ENTERED.set(categoryStr);
point.setName(editText.getText().toString().trim()); point.setName(editText.getText().toString().trim());
point.setCategory(categoryStr); point.setCategory(categoryStr);
Builder bld = FavouritesDbHelper.checkDublicates(point, helper, activity);
if(bld != null) {
bld.setPositiveButton(R.string.default_buttons_ok, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
addFavorite(activity, point, helper);
}
});
} else {
addFavorite(activity, point, helper);
}
}
protected void addFavorite(final Activity activity, FavouritePoint point, final FavouritesDbHelper helper) {
boolean added = helper.addFavourite(point); boolean added = helper.addFavourite(point);
if (added) { if (added) {
AccessibleToast.makeText(activity, MessageFormat.format( AccessibleToast.makeText(activity, MessageFormat.format(

View file

@ -217,8 +217,7 @@ public class DownloadActivity extends SherlockFragmentActivity {
@Override @Override
protected void onResume() { protected void onResume() {
super.onResume(); super.onResume();
getMyApplication().setDownloadActivity(this); getMyApplication().getAppCustomization().resumeActivity(DownloadActivity.class, this);
BasicProgressAsyncTask<?, ?, ?> t = downloadListIndexThread.getCurrentRunningTask();
} }
@ -289,7 +288,7 @@ public class DownloadActivity extends SherlockFragmentActivity {
@Override @Override
public void onPause() { public void onPause() {
super.onPause(); super.onPause();
(getMyApplication()).setDownloadActivity(null); getMyApplication().getAppCustomization().pauseActivity(DownloadActivity.class);
} }
protected void downloadFilesCheckFreeVersion() { protected void downloadFilesCheckFreeVersion() {

View file

@ -65,7 +65,8 @@ public class GpxImportHelper {
if (fileName != null && fileName.endsWith(KML_SUFFIX)) { if (fileName != null && fileName.endsWith(KML_SUFFIX)) {
handleKmlImport(intentUri, fileName, saveFile); handleKmlImport(intentUri, fileName, saveFile);
} else if (fileName != null && fileName.endsWith("favourites.gpx")) { } else if (fileName != null && (fileName.contains("favourite")||
fileName.contains("favorite"))) {
handleFavouritesImport(intentUri, fileName, saveFile); handleFavouritesImport(intentUri, fileName, saveFile);
} else { } else {
handleGpxImport(intentUri, fileName, saveFile); handleGpxImport(intentUri, fileName, saveFile);

View file

@ -5,6 +5,7 @@ import java.io.IOException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.Date; import java.util.Date;
import java.util.HashMap;
import java.util.HashSet; import java.util.HashSet;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@ -84,6 +85,7 @@ public class SherpafyCustomization extends OsmAndAppCustomization {
public static final String TOUR_SERVER = "download.osmand.net"; public static final String TOUR_SERVER = "download.osmand.net";
private static final String SAVE_GPX_FOLDER = "save_gpx_folder"; private static final String SAVE_GPX_FOLDER = "save_gpx_folder";
private Object originalGlobal; private Object originalGlobal;
private Map<Class<Object>, Object> activities = new HashMap<Class<Object>, Object>();
@Override @Override
public void setup(OsmandApplication app) { public void setup(OsmandApplication app) {
@ -230,7 +232,7 @@ public class SherpafyCustomization extends OsmAndAppCustomization {
} }
this.tourPresent = tourPresent; this.tourPresent = tourPresent;
if(!suggestToDownloadMap.isEmpty()) { if(!suggestToDownloadMap.isEmpty()) {
final DownloadActivity da = app.getDownloadActivity(); final DownloadActivity da = (DownloadActivity) activities.get(DownloadActivity.class);
if (da != null) { if (da != null) {
app.runInUIThread(new Runnable() { app.runInUIThread(new Runnable() {
@ -687,7 +689,7 @@ public class SherpafyCustomization extends OsmAndAppCustomization {
} }
public boolean onDestinationReached() { public boolean onDestinationReached() {
final MapActivity map = app.getMapActivity(); final MapActivity map = (MapActivity) activities.get(MapActivity.class);
if(map != null && getSelectedStage() != null) { if(map != null && getSelectedStage() != null) {
app.runInUIThread(new Runnable() { app.runInUIThread(new Runnable() {
@ -700,6 +702,17 @@ public class SherpafyCustomization extends OsmAndAppCustomization {
return true; return true;
} }
@Override
public <T> void pauseActivity(Class<T> class1) {
super.pauseActivity(class1);
}
@Override
@SuppressWarnings("unchecked")
public <T> void resumeActivity(Class<T> class1, T d) {
activities.put((Class<Object>) class1, d);
}
public void runStage(Activity a, TourInformation tour, StageInformation stage, boolean startOver) { public void runStage(Activity a, TourInformation tour, StageInformation stage, boolean startOver) {
WptPt point = null; WptPt point = null;
GPXFile gpx = null; GPXFile gpx = null;