From da6c2cb11eec8ff682d994d16544eb37c10af4a7 Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 10 Jun 2014 17:21:50 +0300 Subject: [PATCH 01/28] removed iml file from repo --- .../Osmand-ParkingPlugin.iml | 28 ------------------- 1 file changed, 28 deletions(-) delete mode 100644 plugins/Osmand-ParkingPlugin/Osmand-ParkingPlugin.iml diff --git a/plugins/Osmand-ParkingPlugin/Osmand-ParkingPlugin.iml b/plugins/Osmand-ParkingPlugin/Osmand-ParkingPlugin.iml deleted file mode 100644 index fcb91eb6fe..0000000000 --- a/plugins/Osmand-ParkingPlugin/Osmand-ParkingPlugin.iml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - From e361d160c9bdefa1a334748a1cc6b5f93df6006e Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 11 Jun 2014 20:06:46 +0300 Subject: [PATCH 02/28] Created route steps plugin. Registered route steps plugin in Osmand. Created dialog to set if point is alredy visited or not --- OsmAnd/res/values/strings.xml | 1 + OsmAnd/src/net/osmand/plus/OsmandPlugin.java | 10 +- .../plus/routesteps/RouteStepsLayer.java | 67 +++++ .../plus/routesteps/RouteStepsPlugin.java | 235 ++++++++++++++++++ plugins/Osmand-ParkingPlugin/.gitignore | 1 + plugins/Osmand-RouteSteps/.classpath | 9 + plugins/Osmand-RouteSteps/.gitignore | 5 + plugins/Osmand-RouteSteps/.project | 33 +++ plugins/Osmand-RouteSteps/AndroidManifest.xml | 26 ++ .../Osmand-RouteSteps/proguard-project.txt | 20 ++ plugins/Osmand-RouteSteps/project.properties | 14 ++ .../res/drawable-hdpi/ic_launcher.png | Bin 0 -> 9397 bytes .../res/drawable-hdpi/icon.png | Bin 0 -> 7287 bytes .../res/drawable-ldpi/ic_launcher.png | Bin 0 -> 2729 bytes .../res/drawable-ldpi/icon.png | Bin 0 -> 2683 bytes .../res/drawable-mdpi/ic_launcher.png | Bin 0 -> 5237 bytes .../res/drawable-mdpi/icon.png | Bin 0 -> 4055 bytes .../res/drawable-xhdpi/ic_launcher.png | Bin 0 -> 14383 bytes .../res/drawable-xhdpi/icon.png | Bin 0 -> 10436 bytes plugins/Osmand-RouteSteps/res/layout/main.xml | 13 + .../res/values-af/strings.xml | 7 + .../res/values-ar/strings.xml | 7 + .../res/values-bg/strings.xml | 8 + .../res/values-bs/strings.xml | 8 + .../res/values-ca/strings.xml | 7 + .../res/values-cs/strings.xml | 8 + .../res/values-cy/strings.xml | 3 + .../res/values-da/strings.xml | 7 + .../res/values-de/strings.xml | 7 + .../res/values-es/strings.xml | 7 + .../res/values-eu/strings.xml | 7 + .../res/values-fa/strings.xml | 7 + .../res/values-fi/strings.xml | 8 + .../res/values-fr/strings.xml | 7 + .../res/values-he/strings.xml | 8 + .../res/values-hi/strings.xml | 8 + .../res/values-hr/strings.xml | 8 + .../res/values-hu/strings.xml | 8 + .../res/values-hy/strings.xml | 8 + .../res/values-id/strings.xml | 8 + .../res/values-it/strings.xml | 7 + .../res/values-ja/strings.xml | 7 + .../res/values-ka/strings.xml | 8 + .../res/values-lt/strings.xml | 7 + .../res/values-lv/strings.xml | 8 + .../res/values-mn/strings.xml | 3 + .../res/values-mr/strings.xml | 8 + .../res/values-nb/strings.xml | 7 + .../res/values-nl/strings.xml | 7 + .../res/values-pl/strings.xml | 7 + .../res/values-pt/strings.xml | 7 + .../res/values-ro/strings.xml | 7 + .../res/values-ru/strings.xml | 8 + .../res/values-sc/strings.xml | 7 + .../res/values-sk/strings.xml | 8 + .../res/values-sl/strings.xml | 8 + .../res/values-sq/strings.xml | 7 + .../res/values-sr/strings.xml | 3 + .../res/values-sv/strings.xml | 8 + .../res/values-tl/strings.xml | 3 + .../res/values-tr/strings.xml | 5 + .../res/values-uk/strings.xml | 7 + .../res/values-zh-rCN/strings.xml | 7 + .../res/values-zh-rTW/strings.xml | 7 + .../Osmand-RouteSteps/res/values/strings.xml | 8 + .../routeStepsPlugin/RouteStepsActivity.java | 61 +++++ 66 files changed, 808 insertions(+), 2 deletions(-) create mode 100644 OsmAnd/src/net/osmand/plus/routesteps/RouteStepsLayer.java create mode 100644 OsmAnd/src/net/osmand/plus/routesteps/RouteStepsPlugin.java create mode 100644 plugins/Osmand-RouteSteps/.classpath create mode 100644 plugins/Osmand-RouteSteps/.gitignore create mode 100644 plugins/Osmand-RouteSteps/.project create mode 100644 plugins/Osmand-RouteSteps/AndroidManifest.xml create mode 100644 plugins/Osmand-RouteSteps/proguard-project.txt create mode 100644 plugins/Osmand-RouteSteps/project.properties create mode 100644 plugins/Osmand-RouteSteps/res/drawable-hdpi/ic_launcher.png create mode 100644 plugins/Osmand-RouteSteps/res/drawable-hdpi/icon.png create mode 100644 plugins/Osmand-RouteSteps/res/drawable-ldpi/ic_launcher.png create mode 100644 plugins/Osmand-RouteSteps/res/drawable-ldpi/icon.png create mode 100644 plugins/Osmand-RouteSteps/res/drawable-mdpi/ic_launcher.png create mode 100644 plugins/Osmand-RouteSteps/res/drawable-mdpi/icon.png create mode 100644 plugins/Osmand-RouteSteps/res/drawable-xhdpi/ic_launcher.png create mode 100644 plugins/Osmand-RouteSteps/res/drawable-xhdpi/icon.png create mode 100644 plugins/Osmand-RouteSteps/res/layout/main.xml create mode 100644 plugins/Osmand-RouteSteps/res/values-af/strings.xml create mode 100644 plugins/Osmand-RouteSteps/res/values-ar/strings.xml create mode 100644 plugins/Osmand-RouteSteps/res/values-bg/strings.xml create mode 100644 plugins/Osmand-RouteSteps/res/values-bs/strings.xml create mode 100644 plugins/Osmand-RouteSteps/res/values-ca/strings.xml create mode 100644 plugins/Osmand-RouteSteps/res/values-cs/strings.xml create mode 100644 plugins/Osmand-RouteSteps/res/values-cy/strings.xml create mode 100644 plugins/Osmand-RouteSteps/res/values-da/strings.xml create mode 100644 plugins/Osmand-RouteSteps/res/values-de/strings.xml create mode 100644 plugins/Osmand-RouteSteps/res/values-es/strings.xml create mode 100644 plugins/Osmand-RouteSteps/res/values-eu/strings.xml create mode 100644 plugins/Osmand-RouteSteps/res/values-fa/strings.xml create mode 100644 plugins/Osmand-RouteSteps/res/values-fi/strings.xml create mode 100644 plugins/Osmand-RouteSteps/res/values-fr/strings.xml create mode 100644 plugins/Osmand-RouteSteps/res/values-he/strings.xml create mode 100644 plugins/Osmand-RouteSteps/res/values-hi/strings.xml create mode 100644 plugins/Osmand-RouteSteps/res/values-hr/strings.xml create mode 100644 plugins/Osmand-RouteSteps/res/values-hu/strings.xml create mode 100644 plugins/Osmand-RouteSteps/res/values-hy/strings.xml create mode 100644 plugins/Osmand-RouteSteps/res/values-id/strings.xml create mode 100644 plugins/Osmand-RouteSteps/res/values-it/strings.xml create mode 100644 plugins/Osmand-RouteSteps/res/values-ja/strings.xml create mode 100644 plugins/Osmand-RouteSteps/res/values-ka/strings.xml create mode 100644 plugins/Osmand-RouteSteps/res/values-lt/strings.xml create mode 100644 plugins/Osmand-RouteSteps/res/values-lv/strings.xml create mode 100644 plugins/Osmand-RouteSteps/res/values-mn/strings.xml create mode 100644 plugins/Osmand-RouteSteps/res/values-mr/strings.xml create mode 100644 plugins/Osmand-RouteSteps/res/values-nb/strings.xml create mode 100644 plugins/Osmand-RouteSteps/res/values-nl/strings.xml create mode 100644 plugins/Osmand-RouteSteps/res/values-pl/strings.xml create mode 100644 plugins/Osmand-RouteSteps/res/values-pt/strings.xml create mode 100644 plugins/Osmand-RouteSteps/res/values-ro/strings.xml create mode 100644 plugins/Osmand-RouteSteps/res/values-ru/strings.xml create mode 100644 plugins/Osmand-RouteSteps/res/values-sc/strings.xml create mode 100644 plugins/Osmand-RouteSteps/res/values-sk/strings.xml create mode 100644 plugins/Osmand-RouteSteps/res/values-sl/strings.xml create mode 100644 plugins/Osmand-RouteSteps/res/values-sq/strings.xml create mode 100644 plugins/Osmand-RouteSteps/res/values-sr/strings.xml create mode 100644 plugins/Osmand-RouteSteps/res/values-sv/strings.xml create mode 100644 plugins/Osmand-RouteSteps/res/values-tl/strings.xml create mode 100644 plugins/Osmand-RouteSteps/res/values-tr/strings.xml create mode 100644 plugins/Osmand-RouteSteps/res/values-uk/strings.xml create mode 100644 plugins/Osmand-RouteSteps/res/values-zh-rCN/strings.xml create mode 100644 plugins/Osmand-RouteSteps/res/values-zh-rTW/strings.xml create mode 100644 plugins/Osmand-RouteSteps/res/values/strings.xml create mode 100644 plugins/Osmand-RouteSteps/src/net/osmand/routeStepsPlugin/RouteStepsActivity.java diff --git a/OsmAnd/res/values/strings.xml b/OsmAnd/res/values/strings.xml index 89de5354fe..f96b692e5a 100644 --- a/OsmAnd/res/values/strings.xml +++ b/OsmAnd/res/values/strings.xml @@ -934,6 +934,7 @@ Afghanistan, Albania, Algeria, Andorra, Angola, Anguilla, Antigua and Barbuda, A Parking Position Plugin Mark as a parking position Delete a parking marker + Show route points Public Identifiable Trackable diff --git a/OsmAnd/src/net/osmand/plus/OsmandPlugin.java b/OsmAnd/src/net/osmand/plus/OsmandPlugin.java index 754fe79ffa..43fee487d5 100644 --- a/OsmAnd/src/net/osmand/plus/OsmandPlugin.java +++ b/OsmAnd/src/net/osmand/plus/OsmandPlugin.java @@ -22,6 +22,7 @@ import net.osmand.plus.osmo.OsMoPlugin; import net.osmand.plus.osmodroid.OsMoDroidPlugin; import net.osmand.plus.parkingpoint.ParkingPositionPlugin; import net.osmand.plus.rastermaps.OsmandRasterMapsPlugin; +import net.osmand.plus.routesteps.RouteStepsPlugin; import net.osmand.plus.srtmplugin.SRTMPlugin; import net.osmand.plus.views.OsmandMapTileView; import org.apache.commons.logging.Log; @@ -41,10 +42,11 @@ public abstract class OsmandPlugin { private static final String PARKING_PLUGIN_COMPONENT = "net.osmand.parkingPlugin"; //$NON-NLS-1$ private static final String SRTM_PLUGIN_COMPONENT_PAID = "net.osmand.srtmPlugin.paid"; //$NON-NLS-1$ private static final String SRTM_PLUGIN_COMPONENT = "net.osmand.srtmPlugin"; //$NON-NLS-1$ - + private static final String OSMODROID_PLUGIN_COMPONENT = "com.OsMoDroid"; //$NON-NLS-1$ - + private static final String ROUTE_STEPS_PLUGIN_COMPONENT = "net.osmand.routeStepsPlugin"; //$NON-NLS-1$ + public abstract String getId(); public abstract String getDescription(); @@ -82,6 +84,10 @@ public abstract class OsmandPlugin { if(!f && Version.isParkingPluginInlined(app)) { installedPlugins.add(parking); } + + final RouteStepsPlugin routeSteps = new RouteStepsPlugin(app); + installPlugin(ROUTE_STEPS_PLUGIN_COMPONENT, RouteStepsPlugin.ID, app, routeSteps); + installPlugin(OSMODROID_PLUGIN_COMPONENT, OsMoDroidPlugin.ID, app, new OsMoDroidPlugin(app)); installedPlugins.add(new OsmEditingPlugin(app)); installedPlugins.add(new OsmandDevelopmentPlugin(app)); diff --git a/OsmAnd/src/net/osmand/plus/routesteps/RouteStepsLayer.java b/OsmAnd/src/net/osmand/plus/routesteps/RouteStepsLayer.java new file mode 100644 index 0000000000..c35697a71b --- /dev/null +++ b/OsmAnd/src/net/osmand/plus/routesteps/RouteStepsLayer.java @@ -0,0 +1,67 @@ +package net.osmand.plus.routesteps; + +import android.graphics.Canvas; +import android.graphics.PointF; +import net.osmand.data.LatLon; +import net.osmand.data.RotatedTileBox; +import net.osmand.plus.activities.MapActivity; +import net.osmand.plus.views.ContextMenuLayer; +import net.osmand.plus.views.OsmandMapLayer; +import net.osmand.plus.views.OsmandMapTileView; + +import java.util.List; + +/** + * Created by Barsik on 10.06.2014. + */ +public class RouteStepsLayer extends OsmandMapLayer implements ContextMenuLayer.IContextMenuProvider { + + private final MapActivity map; + private RouteStepsPlugin plugin; + + public RouteStepsLayer(MapActivity map, RouteStepsPlugin plugin){ + this.map = map; + this.plugin = plugin; + } + + + @Override + public void collectObjectsFromPoint(PointF point, RotatedTileBox tileBox, List o) { + + } + + @Override + public LatLon getObjectLocation(Object o) { + return null; + } + + @Override + public String getObjectDescription(Object o) { + return null; + } + + @Override + public String getObjectName(Object o) { + return null; + } + + @Override + public void initLayer(OsmandMapTileView view) { + + } + + @Override + public void onDraw(Canvas canvas, RotatedTileBox tileBox, DrawSettings settings) { + + } + + @Override + public void destroyLayer() { + + } + + @Override + public boolean drawInScreenPixels() { + return false; + } +} diff --git a/OsmAnd/src/net/osmand/plus/routesteps/RouteStepsPlugin.java b/OsmAnd/src/net/osmand/plus/routesteps/RouteStepsPlugin.java new file mode 100644 index 0000000000..0e1aebc241 --- /dev/null +++ b/OsmAnd/src/net/osmand/plus/routesteps/RouteStepsPlugin.java @@ -0,0 +1,235 @@ +package net.osmand.plus.routesteps; + +import android.app.AlertDialog; +import android.app.Dialog; +import android.content.DialogInterface; +import net.osmand.plus.*; +import net.osmand.plus.activities.MapActivity; + +import java.io.File; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +/** + * Created by Barsik on 10.06.2014. + */ +public class RouteStepsPlugin extends OsmandPlugin { + + public static final String ID = "osmand.route.stepsPlugin"; + + private static final String VISITED_KEY = "IsVisited"; + private static final String POINT_KEY = "Point"; + private static final String CURRENT_ROUTE_KEY = "CurrentRoute"; + private int routeKey; + + + private OsmandApplication app; + private GPXUtilities.GPXFile gpx; + private File file; + private GPXUtilities.Route currentRoute; + private GPXUtilities.WptPt currentPoint; + private int currentPointPos; + private RouteStepsLayer routeStepsLayer; + private List pointsList; + private List pointsStatus; + + + + public RouteStepsPlugin(OsmandApplication app){ + this.app = app; + this.file = new File("/storage/emulated/0/osmand/tracks/","504.gpx"); + gpx = GPXUtilities.loadGPXFile(app, file); + loadCurrentRoute(); + pointsList = currentRoute.points; + pointsStatus = new ArrayList(pointsList.size()); + getAllPointsStatus(); + } + + public void setGpxFile(GPXUtilities.GPXFile file){ this.gpx = file;} + + public void saveGPXFile(){ GPXUtilities.writeGpxFile(file,gpx,app); } + + public void setCurrentPoint(GPXUtilities.WptPt point){ + currentPoint = point; + int number = findPointPosition(point); + currentPointPos = number; + } + + public void setCurrentPoint(int number){ + currentPoint = pointsList.get(number); + currentPointPos = number; + } + + @Override + public String getId() { + return ID; + } + + @Override + public String getDescription() { + return "This plugin allows you to view key positions of your route..."; + } + + @Override + public String getName() { + return "Tour Point Plugin"; + } + + @Override + public boolean init(OsmandApplication app) { + return true; + } + + @Override + public void registerLayers(MapActivity activity) { + // remove old if existing after turn + if(routeStepsLayer != null) { + activity.getMapView().removeLayer(routeStepsLayer); + } + routeStepsLayer = new RouteStepsLayer(activity, this); + activity.getMapView().addLayer(routeStepsLayer, 5.5f); + //registerWidget(activity); + } + + public List getPoints() {return currentRoute.points;} + + public boolean getPointStatus(int numberOfPoint){ + Map map = gpx.getExtensionsToRead(); + + String mapKey = routeKey + POINT_KEY + numberOfPoint + VISITED_KEY; + if (map.containsKey(mapKey)){ + String value = map.get(mapKey); + return (value.equals("true")); + } + + return false; + } + + //saves point status value to gpx extention file + public void setPointStatus(int numberOfPoint, boolean status){ + Map map = gpx.getExtensionsToWrite(); + + String mapKey = routeKey + POINT_KEY + numberOfPoint + VISITED_KEY; + if (status){ + map.put(mapKey, "true"); + } else { + map.put(mapKey, "false"); + } + } + + public GPXUtilities.WptPt getNextPoint(){ + if (pointsList.size() > currentPointPos +1){ + return pointsList.get(currentPointPos+1); + } else{ + return null; + } + } + + private void loadCurrentRoute() { + if (gpx.routes.size() < 1){ + return; + } + + Map map = gpx.getExtensionsToRead(); + if (map.containsKey(CURRENT_ROUTE_KEY)){ + String routeName = map.get(CURRENT_ROUTE_KEY); + int i = 0; + for(GPXUtilities.Route route : gpx.routes){ + if (route.name.equals(routeName)){ + currentRoute = route; + routeKey = i; + return; + } + i++; + } + } + + routeKey = 0; + currentRoute = gpx.routes.get(0); + } + + @Override + public void registerMapContextMenuActions(final MapActivity mapActivity, + final double latitude, final double longitude, + ContextMenuAdapter adapter, Object selectedObj) { + + ContextMenuAdapter.OnContextMenuClick addListener = new ContextMenuAdapter.OnContextMenuClick() { + @Override + public void onContextMenuClick(int resId, int pos, + boolean isChecked, DialogInterface dialog) { + if (resId == R.string.context_menu_item_show_route_points) { + showStepsDialog(mapActivity); + } + } + }; + adapter.item(R.string.context_menu_item_show_route_points) + .icons( R.drawable.ic_action_parking_dark, R.drawable.ic_action_parking_light).listen(addListener).reg(); + + } + + private void getAllPointsStatus(){ + for(int i=0; i< pointsList.size(); i++){ + pointsStatus.add(getPointStatus(i)); + } + } + + private void showStepsDialog(MapActivity mapActivity){ + + List pointNames = new ArrayList(); + //this array need to collect user selection during dialogue + final List pointsIntermediateState = new ArrayList(pointsStatus); + for(GPXUtilities.WptPt point : pointsList){ + pointNames.add(point.name); + } + + AlertDialog.Builder builder = new AlertDialog.Builder(mapActivity); + builder.setTitle("All available points"); + builder.setMultiChoiceItems(pointNames.toArray(new String[pointNames.size()]), toPrimitiveArray(pointsIntermediateState), new DialogInterface.OnMultiChoiceClickListener() { + @Override + public void onClick(DialogInterface dialogInterface, int i, boolean isChecked) { + //saving user choice + pointsIntermediateState.set(i,isChecked); + } + }); + builder.setPositiveButton("OK", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialogInterface, int i) { + for (int j=0; j< pointsIntermediateState.size(); j++){ + boolean newValue = pointsIntermediateState.get(j); + //if values is the same - there's no need to save data + if (newValue != pointsStatus.get(j)){ + setPointStatus(j,newValue); + } + } + pointsStatus = new ArrayList(pointsIntermediateState); + } + }); + builder.setNegativeButton("Cancel", null); + + builder.show(); + + } + + private boolean[] toPrimitiveArray(final List booleanList) { + final boolean[] primitives = new boolean[booleanList.size()]; + int index = 0; + for (Boolean object : booleanList) { + primitives[index++] = object; + } + return primitives; + } + + + private int findPointPosition(GPXUtilities.WptPt point){ + int i = 0; + for (GPXUtilities.WptPt item : pointsList){ + if (item.equals(point)){ + return i; + } + i++; + } + return -1; + } + +} diff --git a/plugins/Osmand-ParkingPlugin/.gitignore b/plugins/Osmand-ParkingPlugin/.gitignore index 36986d81cf..5978954c17 100644 --- a/plugins/Osmand-ParkingPlugin/.gitignore +++ b/plugins/Osmand-ParkingPlugin/.gitignore @@ -2,3 +2,4 @@ bin gen raw obj +*.iml diff --git a/plugins/Osmand-RouteSteps/.classpath b/plugins/Osmand-RouteSteps/.classpath new file mode 100644 index 0000000000..7bc01d9a9c --- /dev/null +++ b/plugins/Osmand-RouteSteps/.classpath @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/plugins/Osmand-RouteSteps/.gitignore b/plugins/Osmand-RouteSteps/.gitignore new file mode 100644 index 0000000000..85bd1cacd6 --- /dev/null +++ b/plugins/Osmand-RouteSteps/.gitignore @@ -0,0 +1,5 @@ +bin +gen +raw +obj +*.iml \ No newline at end of file diff --git a/plugins/Osmand-RouteSteps/.project b/plugins/Osmand-RouteSteps/.project new file mode 100644 index 0000000000..1c708327e5 --- /dev/null +++ b/plugins/Osmand-RouteSteps/.project @@ -0,0 +1,33 @@ + + + Osmand-ParkingPlugin + + + + + + com.android.ide.eclipse.adt.ResourceManagerBuilder + + + + + com.android.ide.eclipse.adt.PreCompilerBuilder + + + + + org.eclipse.jdt.core.javabuilder + + + + + com.android.ide.eclipse.adt.ApkBuilder + + + + + + com.android.ide.eclipse.adt.AndroidNature + org.eclipse.jdt.core.javanature + + diff --git a/plugins/Osmand-RouteSteps/AndroidManifest.xml b/plugins/Osmand-RouteSteps/AndroidManifest.xml new file mode 100644 index 0000000000..4937306599 --- /dev/null +++ b/plugins/Osmand-RouteSteps/AndroidManifest.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/plugins/Osmand-RouteSteps/proguard-project.txt b/plugins/Osmand-RouteSteps/proguard-project.txt new file mode 100644 index 0000000000..f2fe1559a2 --- /dev/null +++ b/plugins/Osmand-RouteSteps/proguard-project.txt @@ -0,0 +1,20 @@ +# To enable ProGuard in your project, edit project.properties +# to define the proguard.config property as described in that file. +# +# Add project specific ProGuard rules here. +# By default, the flags in this file are appended to flags specified +# in ${sdk.dir}/tools/proguard/proguard-android.txt +# You can edit the include path and order by changing the ProGuard +# include property in project.properties. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# Add any project specific keep options here: + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} diff --git a/plugins/Osmand-RouteSteps/project.properties b/plugins/Osmand-RouteSteps/project.properties new file mode 100644 index 0000000000..4ab125693c --- /dev/null +++ b/plugins/Osmand-RouteSteps/project.properties @@ -0,0 +1,14 @@ +# This file is automatically generated by Android Tools. +# Do not modify this file -- YOUR CHANGES WILL BE ERASED! +# +# This file must be checked in Version Control Systems. +# +# To customize properties used by the Ant build system edit +# "ant.properties", and override values to adapt the script to your +# project structure. +# +# To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home): +#proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt + +# Project target. +target=android-19 diff --git a/plugins/Osmand-RouteSteps/res/drawable-hdpi/ic_launcher.png b/plugins/Osmand-RouteSteps/res/drawable-hdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..96a442e5b8e9394ccf50bab9988cb2316026245d GIT binary patch literal 9397 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 R1%Utn002ovPDHLkV1fm{4kiEq literal 0 HcmV?d00001 diff --git a/plugins/Osmand-RouteSteps/res/drawable-ldpi/ic_launcher.png b/plugins/Osmand-RouteSteps/res/drawable-ldpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..99238729d8753585237a65b91c7cde426c90baef GIT binary patch literal 2729 zcmV;a3Rd-rP)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L02dMf02dMgXP?qi00007bV*G`2ipt~ z7YY(F`_Sb8017EdL_t(o!?l=uuwPYm$3JVI^ZWho?|E--5|R`W6G$K=z*GYY6wr=V zEHLAs& zdz|M!d-acV?}e00xbt)P@m$z^s#fV*k#SgXB4;4pFT(w@xz)o_l~EwJ+$tL zNA}&l{N}CqzO8^B)M@;g^aHT<;0E84yNhu{N${eJ-?VeV-AUA6q$<9trt}a{U45TFsn9Sc6zfp($j8t2s@dE zQIjAUBn)CY?J)11fS?@`1`%Nx6NL#$Z0Usk7(Wr4STgIdiMw7!!ptNtBYrmL$nY(+rzsSZg&+Q(Pts z$DVsczi`HH^ri&>wJ9FAf9p&De1OdZH!;t<6V-n!4>5RGht>sq2l{?Fa6~?LaQm$9 z9qH`6yjb)4PhAIa?cbkttcHHF=ZgDOlWSCc`VaTB=hp)doVH}{g9J0z z{OG}rx?{_LG>2kT!Sf8oqKD@j#DD_oG}lq0#F53O8AgO^qo8w6oGP^*|D}1SXUk7K zb?V*KdY9iC3G_f;Tb_CB@TqH89N00=&{%tU%c0Z4WB~ApI*tQ-I@60@=bck#y}*T6 z_R1w!Pet&si6M<0X$&@1Z04|OhSLnh!5CX8&N-6E$;g1?;NIcJ!9M@ET6asjDj{j& zq&1Y$9Lh>#7>)s?>Lr;~P$jdD%&Hf*{8+t^cGKb)1Y-;$qr{4!>WIP!krE;qzA0ie zH@2QMam0}lG!0Rtu2d9Jhk!tC3eGyD1bu2t1_*& znD@VXDUHfZeztiTyAJ-0ENzq8EH4L{qM4F8hdRitic@fz!#TyN5{GdxF+&jQ7@$l6 zDL9*@Sw_A%6O4hL>RjG2?L1CC{!f_IyJ&pj%>v_aJj(1 zDV}G@zl}MeEcR)=MBzMj!s=}<^ zGdSzCOStu`m-76U#|fg&xSoPB<%f3P={hr%`p}{nf+USozR$hK7$G3*$9{2!b{no?XWStM8y#?82#n6GW?7)Zsa` zwL!I2XXA1vS#2G_6uFg)uUPcjE9|${UC9d@_w0xRuPYew-0*;GI=nx){rvMUu(54@ z+`1-W3}TdRyVvvF=0|BZ+svA_fYc`R9sDKlJoSV8^oiAcd+nE5_tZVqd%^b&f>BQz zGBTL-|M&8(H=O;xQ=e^A=e^iz^4+6@yKlSf%8Tv#hqkcmS4VRN-hS^#_`+wt2f#&F zoaoiN8`U^;=?_+H4ewj^5AQhK+SC`?KJ^PeVnke)?{!I}B<(sU&3He<>2?MWWu%2Z z{8ENr@N(U$qFI3=v-$PTS07#Z@0&k3QOG}i+j)HBi%%Z=`tcW^UCejx+4hFXpTF~> z6_NH`)m1V01y2Phns1H@BEv%=rBZ<`6)ly05y^ASTBkN~;?g=vr9P;=m7CX$|G)Zgm+aiXZ~uaNy+(I$oqD4|rBaJZ zrIPx7!4u>8HcdFJC#TdexmzBje$|6hQ{z`W;j zcxEL`omomE>(d+x8Qd8VhX=5+`P#GV58evMdoP*&lTI}9fl8%JsjEQ2FXPkIUzaTk zaNk#c^;wYqAW|>-DX%0C?1}#Zoic`Di%g1kcS7qn!=Ut&(rcy6c zEP5*Vl6GWL2O9olCKpP^6ib5fJT(SUCo~-tix$s^a?N*TuSl&?#P^M4X@Pb!L1}-x z&WA*#CC1=+BE_;txmKWDDTfD-_Gz_Ib&Z~KTI()QX%w`p;#2A}c%F3r-vD)*@$xL` zN{seU@}^QO)(>T_xfWpdaeovRE7^CZPMr}#|!d*|R6{H=+M{MV$Mp3LNPKT_t5 z(-+S5yz=?J*A+!U{KSTh8xFttSbqQdFU>bSjT8Q$)Ky#JnbOd}k;7ZR_W37=|NQzh jFn-Lp|K;W1YU6(Zg`N}+zmb=x00000NkvXXu0mjf_|!_9 literal 0 HcmV?d00001 diff --git a/plugins/Osmand-RouteSteps/res/drawable-ldpi/icon.png b/plugins/Osmand-RouteSteps/res/drawable-ldpi/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..c99e8a25f70d64ed2ba830c9deb80f940932e220 GIT binary patch literal 2683 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 literal 0 HcmV?d00001 diff --git a/plugins/Osmand-RouteSteps/res/drawable-mdpi/icon.png b/plugins/Osmand-RouteSteps/res/drawable-mdpi/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..15eeaf60c26c5f3fb4f9c8d515aa671f28636c09 GIT binary patch literal 4055 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 JPDHLkV1ij1!pZ;u literal 0 HcmV?d00001 diff --git a/plugins/Osmand-RouteSteps/res/drawable-xhdpi/ic_launcher.png b/plugins/Osmand-RouteSteps/res/drawable-xhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..71c6d760f05183ef8a47c614d8d13380c8528499 GIT binary patch literal 14383 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 literal 0 HcmV?d00001 diff --git a/plugins/Osmand-RouteSteps/res/drawable-xhdpi/icon.png b/plugins/Osmand-RouteSteps/res/drawable-xhdpi/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..8c9caab40cce7fcd6a0ffce41ca86b75c2b89def GIT binary patch literal 10436 zcmV;#C_C4QP)gG;y|(wvhS{^nv$N}2 z@9d06_O5qq%R#a%$qE!jQC4D<7$ruKAPIoTp^?!!R@J^=9njtAMj$~+wpBczU0qdO z|Nr~myYIdKe-$KxAmG#O9AcY!AgZ3Td8#h zxeWEQ{U*$zg-F#A3ga*@;OvA82TC8unGDcsBX-N$Dz-P)W`Xq#@OVWj!086OKEUNhILNmI!+34ngU~n zLJ_eZcBzXjWON(@PP5~ivVHp;sl}R0|J$H*{GX40zGlG|^+^zbbn00=n61V?$xQlUJo@?Cd0E59 zB>?I8Z?Malg@veYV;Z_^Vna9;;De|K%Y(@xoaI^Quu@QQ!=Z_1$*tvAPfD62iwJ z0Ga1mJgGG(zXqF?=tdp^-07mI#UHVNo47IX|5~{ZM=wpHSv!WO9$kLYlurx?xB9=!bJO$2@jUwqe*e9^^s=Dv}V9C#K*X+|4;<|Li^)eZv*L4jSr zIEF)fDIQ*ti>F91Y2A@Tq9lw%nFOGBI-QP1>3L`h+Ee#HCg}q5OcAbU;QNC&UF&1p z)5^cWf0+6<6ulSm!C!B{zCj7T^zPJ*>wI6yojWTZ_uxp!2%b6Bh4+T3{YA^kt105= zf4Remdu#&M{`dq!C3X1z8Vx>IGIOLyuh$z0b7v+255R!N3_|c#duISfa8}Z@Yc>en5}u(zIz;wAfHA6mIdAWwF~|D%FCDFC|os7M@lIU z?99d3$T05MJ&X%hpc0YFahi70j=V<7Sf-keb4%N_8fSJH|FwJM+hd)yAS$W2{3!bS- zd}D(R&s_E5aKA4-_!$Hs`B7KA?0RDit&U{cTv3#RN6L|OA65sei`B{Me&Jg1qZI%= z-NG81pH`<7Q0|x#|!K)B%*6JUD9D0JlGcdzWTYhRfk_pXWM8%#v~FaRhOGG>8WC zwBs$!&8F*;N4i;Ey>27!t<1*%xE#W%(J)pUWb>O3m`wm2WvR2YuY1jg!MQI5|=SFU*i}eh8cc74;qz>mnNI^Kt0+@i;RC44hTr!!5TH zemu6=RCw*0H?x*6Kmg#vm~v3R%;wpzV@{gtWOe`dO933U2l3Sk)r|{)r?{O7feQyQ zc&!xyp9f}J8I0D#NYvB*_kc+sNw7SD8yKve2L6rSRXFdgM?ro*mafc$(O{r3PKVC( z$Ke^fhFk7XL#E*1_j3pYc(~nR40I~6&qYxUS-_T>eEfF**o_OoH41}g5Df))Va5bj zntPug_2cWe<^ykc;rv*LFjXvq1yBadkrs5do`FoIg|%u0+D^TTl4?In!>>aopPFtQN^Mb+5WSOTlXEEbhYh4H~26c*Z`Gp|8^>lG~B&_P0(u5am5 zih6$?iUZT_2wa~4E**&P-n*g{|M`(77`4fo+~?-f-dn6QDnzF@lo8Xk0?4#Vf)@oq z+U9Ygta>GBei7=nJb;#iFJr0t8On6CB2iB)+`Nv>8&=|9FK>r0do@vLE z7yx{9E-5o0(sW#(t}qJX!(kElj?;$_^!uPSKQ4My5?9g&MSq{NRe z-Gi)>9cbFP4vh`Vk(*-_>tuz2KiuDix~)4Ql`BN8Dy!cBb@nnGd|3mpo5kD$&YT%d zj&5d)erAh;W*b?Qk>IB|eE+C@_IpP66LFkV08Cox3K#VOImG!UD(BvPNfbg>&#wTj z1{8KgXREFQ{ICK~Ub-9B>Sk0CK**&~-cBpI_MlOVt*vZmdTZ2{TrY=#1@s7_;|d1<_6n{CH@5@idOT^C}uC z>X{rKz#Grmapzyq@5Lbx38YdfN{JcYyACa98F1ouZrF=+BQE^9WdetLU9Y-LClj>mLj}x#N z!GHTzlq_k0l7fP~l4=Zf^CW~}Sc82SP!!=vpBoKETo=tqe(=F{2NA4JRyV7+43pGu zL|idCf$2;pH`d}Razz$cC;PA3WT!{v) zPn`JK(>{SRi-ErTKQaL{<;lc4S>3D+jXG|T1Ry%$aJ;Ce&Oi{S7DJJt2LTJBAg2AY z{9BM`H7DJ7jKCio>PLNZ2Jqi{1-6Q1P$)Igz+h%sZx*2Pxp3a@#>Fu|zOg1>)XbYM z0IK8BWjSJKz#m+;CjpG011HRMD)Vpcv!xm7nx6zRfm&JW?}fCvA$a}5lxftzLl?B1*n zRu`*NP1^rpP4*%VM{~&nkcQk4!h%>5d3|n6kl@Os1*PS+@q3L$!B408tQ1u&!Rjry zVVIJ!a4?u;HJM6fELr#nK}4oB~+DSWt2ps&RJ#26be;W^|3LsNk~c#e$ha&jGF+MuSeg-{i<3rp8CG zV*7*e2SU)wrU$NCPQ537)~{>A=DQxkF^YV8+bV;n)-)F67KHax!f zDqeoLQPhI3ymT6{mXZ2J?jia9{_Bf3d7|HuZv5<_)%a3#BX+%b2|be@$sIui@*Y7V7_`^^-rtnbkBub6aIW_;r^8hY7^Tq06NpNgrmYc;AqD#hWR^EbP z>UceIeqa9}&Ye4lrluyWUcFk>_T%roiu|%Fam14qw$F~SbF3X3cH9qJSvC5vwa)5@ zedL5k`a1BJcL(t;+a9PLW7uWn(KYN^_8azFb`N$hc2DKR1a<|EVNG#1WKv1yY1_r}0Z61BOfO1~8(CUk5IK^Y zSA^Ric|hFn@9!7E*X#9YCxB1xe+>m?HIOURqSc9wr2V{-DskLr+7j-^zGr_5kJAB7 z*33mv0lybR-EG)#s{|Fx6ex9vpgQpqe$l@JJpmiGJ#`#kSXGQ~Z>%Q1UWKla3B3B@ zRh;V{LeE(8(x_6i0gYvqcwo&Elv_=>FzmwPdoGei^@%foC9Z2|7Or7MNiI|hg*YlZ zUkjMG0EB2RkQk*&Viu4<@kw+fO+!WE(*NlOu3x`CI<|8LCl2f-@S~w-N_fbQ<&}~p zyt_wiOA$F@p7|y=;FWSM8>JP&-!4H}tyHW}tCiu7O%hnoyoO(&U5Sg@W%$ieKYnw% z2P|B0vB~BiEoigIx(C3<=Qfrg07s2o8!1`OI1imckff_00EpkU5o@l&`KHn9b zn5@M6lgn}5<-z&R5qzIL*rCYaQ&`_aoVave8*t&y&_UeFpTGvwD3)b;aMIo{I{q9> zK1K)n7heF8WGvYNAX)+9PY}%z1R}XwEKC&-D&$c32IBQ}UM7dT|8?Y-RubPUldLRl zgXx;WirS=M@@d-f!QOK%0{)VS=Ew010p|{=QB)H`ez_90eh&3RS8-?Gd7Parrocdh zVMQKV`O5S|%zQtV^6gm0wPPcH0ab!`@4pzgx+ZH0)Vc@SL@JnZKJ_A@znor=Dqyt}0;8!5q zn2S=+NeBg6V9*I6oS^NAzzbS!1juIxo#QMqUdLWY?ChK3@flyTNK-v=jU zd(0B-%F@VW3=4B&iCDBC(M-8%a}_)14T(=G7HjP&mi1ouI@ExV;(Vf=HO(>tUoHY1 zD-;dl%)2raR8MPu>N!nz8L|u}lmGOlWAS{KYkVVIS zSZJIH#~a9mnGh7H-+CWhPA7%I962A|Ota)?3L&Y{0czZoAA-ez&B~M41-?H9{#F9N zMjp*8A|)6QaCW~GwrVb_`7_UHv&xW7;B%o7)Oz<(TlByr2_eYOYuI!~pWct37o!H!gh>(r zMMEXVajaFIT`>5JcGhf_X9T~XDl_;REz|rQxIz;s@jMT`A!5aXBM_&b84ARw2qNZy zi2)9d=2Ge)O~L9W2!Kg77!2a##fzl|g z5TulK$Ida$XSCxEJK*xZgD-JcAS|^-=#W`tNJwsDy0)j#QClz@Rhvv=n^@ae8)FW8 z(FM?U_7r8k0o2vi!D_YQ#EBCyTP(P!Y>W&^WYU-fbDm)ZLoNs!6%5r{d?9NuRPd*D zTmcqp4)kEv76nSG6*HXb`Gbsh82AGE`rPnRq*YmIh@aDFODWpPfroRz?Ry7b=Pp5A zl^dDOV{Pz-XS92^_D7;52`q9wQJXk zWAVL~%^2gdk{r{l+RsnZl0Y;eQ0RwjHS#Ei|7zCD$ditdX;1%SasJ3aFIF|NjwWk< zh_w6sAqny;3H)N7z;~gwb&}dB#HS}?<3HjcTyz*B_G+KRu_5u8QU*zWHc)7wY>!lSfVg}0cMxoRBEtKA zAB?#axnxUH6ooDyCxEjBsG@JRal1oMtK}l~uyZoGR*cIzAq4*YzlY}3PaxFUA_H!H zQxNRz$xS{fTaQslQXY`_JvyMcPkRTNzWaTmWD7i=Flj!A>}&=NDalNmpYy`QPeP$oVQOR$p`c$pUQkc~e&y#dDKX5X89u#3PBL*nM^@mDXk#`B zb(sOmb3cIQ#Rm~?-w#7hn80UVJQOcHAEGvdq0$Bk{ORM_+3cMhVeymg8`b!Aw$|2A(p@-@kqB{M2a$CY_XedpeCZ&4#YVU(unj^MFE)T;`{O=*Z$l98v zn}2dS|JBh{k%yuOH#Y{AT8)XJUZQ}=D&VFqTX0x^r}##aBy&wiLFtmVs1VTY5Tg;H zt`O4fPMG$88LAf^1AqEOI?j}at%wL>d@u}6RuJl}pm;1+V&`N;{>sZQLH2)FLiWl- zKn3}z+I*32aBYI>awSDQ8B3bJuvg$5&}_$+ElqSxCf28rQ{-ipiTpo4?xZ|p{)w1; zzLE-)0K$9#ZYrEC1f4b)V*_2twUvujkhSh%T-kpbOSle5cp)+bA&m}2NTTxs(&(oU zojXn}Bn0LV!JKn}4w76ggbjKK!+qcn{R8m(zlF474FY*LHMt= zAOG;~8M(jHA921y!Z3Quetak*^*d3|B}p+tb+^D`F%c8V z;B|#D+V6v~sR_@u zKZ4S({|R-#n=lU?Ez*?ll4-%j_ZhK|c_AS#XQ3f1J^Kr!+X&=ElR zIF~&8uU0^=RRA_EuzU%DO!x8=r`XA|hN+Bu$I#em zx?oY1k|kzSh|XcS$Ai359)*QUjQ7v}RLpf*02j4@`0zBTAJ2r4oez80W#pCBV)KrB zuXd*>N{z0Pziq(-fVX^nZNfV~q*jxfD zlzd^7z;>|blt~fTr#Qxwynb~y0nE^TwyETJQMMj+n^r<+RMRb;uygImQ&te~>)>*P zFx2TmeucPR=Vn+yh)VK{R2=*WSwa{leF289UBr^=CAhZ!vp95Q2+jOS2mx+ZtxtO_ zCIkjpi0UJ2fZapjQ&Y7hfGpB-rs*t_Nt|$IYgE~AvWNX97}0jNY=#$-LB~9SPxzFm zWq1=y5nR3zWi|P69DL+=2K`r2psI$BGHmB0hrxE2IB|6oEMS^~61OSN4o)6IuAvCS zotLn2{Tl3>cogSaTxb+pMF$J%Ol^;Yjx@&;$F>PTNhlmimKZHbqwj)~NRn3oFrc{v zz!N5k66Z)~fQ{K{NTQM9l(ZBVOPjEDZIw6&8%~&*3X>4}_)92KFNMyK1II)d_8uO~ z)-1LKP>dGl)4xh+GB^aDLNT+c1XH7Z*s^&e-t>Br-}aBl7e*pcPA2U~$}uE=N)i@( zP0#ks66OiX`>8@mTr`mQeTHBd_*yyoWd^)u-HOedmQX^cN{azI*5kc^63uexb8@MP z>YHEz98nOL`CU#E+yFR57996xoH!2JHCLO!%rg*BM}}(W*Ul5VWts6%Ce%_ zHz8G_l4&RPSUMUKHwM1kh+k;7VBMw~SPFEr_TNkAy18>G(>9PL=&#=gWL$?TaH1cW zZJP-6LtsL%l!G50#M(_1868()+vskrkX?qr_?(-?`AX7ge2rEab?!#9^aJoL#0>Gt8lQoF(t<8Ye^|(10cmL{oik>eQcB<}v5zaq$=pV) zT3LdMCHeE}cWiU>6BzJxVg1d>1LmUzq7eMO;FTO~g*A{4_F?NS8}NZvi{G^vu~T;# zYBp@^3B}{bAsL0YGJ^u=I5VCNErqqF01b6ESZ(?R^*0r(#m@sM3gU!?z4L86(1$`p zHT0%jTsnOMcYnr$-l1w7`cQ*&gPpij)&^s?54?*6;SJB!d`V{N5oR-hbXJgJ0g@~^ zqyaxF{)~(~k|x0Th@#;91DZatG!oLPC=E3v)$6DMFAa2z26iMm16b ze;}BRqg)LR^K8kx4h=o_4Cm&|LnN*3D zIXj>TDbdr`f{K-1qMcOmfs02puvG`5=dw^-oQ1M-9lASnaQF{Sv|tI2dx?@JU8qt{ zph)3Dygs4$dc#fK9*I3%SQRF*-hw;(@1AM1*WpwCjn-G2$SBJb4_ZTKO#rtiaG>2DW;rGxLqDNT`shcFb+>m;oqCyME3Y_WQ}P$k4zjt zm21L}o!g<)slf%k*toF?#ibSE0s`8%NusnK=i41w=}wJeYZe7y)hJ9q4u9fN}&?ATFE37Z7_ck@uH z%c0AOydf*UAYWXK?RIIp;$wexW zV^iVhpyIR9b@?pO&LjcsonA~yB^=~&@jU{++AE&x>YBpvup3oX+2R8Z`*(9tYAVFZ z{>Th|q{!q77>q_y7`3%E2$XC>r>;Qc_SES^#`#@(8v@0f#B14aY$fH$Ehwh@KaJ6$ z{-pjygm52*dnsRW31S~uU()q)uHp;T!R^0ydbx~nGX%i?kp(0c8AUryC67TZ=+JrT zG->`A(T*n#_&KEcZt+}K*CfuIv7@;;56hP3;N4dQ0-th)+B1atbLE$zfgaadPN8DOFahjN0bjtS_bmjzD}K&slwC7s zC%%)^pO%&uy!6sb2nsUPHQkG$?yI5@Sf5zmQu~{(_(Ln;@;^XUAS4z3W>8SMa!s{SAYe`oYb&6#D6PmwyKuNe(*B z9YaOK0IVerbaYH2wsxCM>9!s%gspN)JeT-dmmtOSul+VepE)q+6=KJOk70bU8_tOl z@kJeT6*m96eDy}6qUDg=G>{i+v0qq*<*PP|=VI3}jb@W)w>=mEpMiep^%qdFY!%Vo z)5y_h;qJTd#>B(~jvhUVEJH4qZ@veE9hU&NMC@b464KC4u#v#um9$DPsbs)#Ue5<) zPA~;1WNO^C;y*$wF`@1BVU*SPP?9x?_un5tYwLJa^9lT8B`Bzz5YHuA1q1(`SG2TO zM4!)y57wC|I$=T>9q5FELQIKNK4&Sfs6?M_JDg?{oE8&$3$}~LV&?}tFH^?^0{^i% z_y=Blo~UpI^2(ONTvCH~c0U8RV*O5W3!)HMUs<2o()?KQ zhgQKAcsQ~uKU(~rsd#aYbuZ}eQ_NVJ=yJKzE=~NWr|-wt9{D*mydJG5-$B{34us_c zr1=igB0uiBtAsR8iOVOdkY6?eOL6i`ty!q~&Tbtv##P9%7GZLvAHJz!+_v-4I7n~4 z^lL0#fBXDKTSrFFviB)57pVWt+46P*cmi*{F#@~Yi-#Ys6hpYyPk(@QP0i3~r(aXa*1Z~RrD&tzqNJt)w=VlO1}CpTrOZa2 zsgfLRuDEZr7;iXvn_&S?r!%buw4V9{q`?r%>e}M~pE)yzf&wipW*yN^H3}+5(t`ii zO9o__)*vUpc;HdVOyXO4**iWh`9*WSgJ>}}yMH3oW zQveQ!WFq+a1im#5_;0?XC-B$CH9m3kd8S{A!2pcCu$Aq{9tvlmheOjDsz#eF77_S_ zeYOf(PvK@{#8oMR`$^nV1u$=s+ba4AVABlnFCDECHQ#6*hT9pA(f|+FR0s$Epo2nV z5nuV@>6(gy?o7HzqDJP%_j92m02z=mO;sqB_*2~GEdW!V3&Z_V_`E?8U@k00>j!x- zT8=?71}Bkk8? zPaE8486wQ&UsdV&8judd?HA3#@c>bg;jyH-wZ`W%Kp{e~#Pe z=;(!n{SKec=Z=QJL%qGdgVE!zAO7%%ZHT`+Ok9~8%REETV?uPFjZ!)Y^T2{F;E#QC zI2@h9U{C~*avl5RO5&%zq ziD$y|_SZo{pQMd6ahNh!F$QIz+U@p^7=WivojNNKU&{hK|NQe;PoF;RN&{djn4tvl z!U-TIzFIdGSUx^bJPq{C^8p_hZ<40EB00yI!RMZPZg36_ zUH~_NH@Ot^@#k#mgQcv7Pcm=*v2U~fL1&ijvuu72 uZTwhy^G{X)pKc%hCjAtGk9Yh30t^84=xnuG?ik + + + + + \ No newline at end of file diff --git a/plugins/Osmand-RouteSteps/res/values-af/strings.xml b/plugins/Osmand-RouteSteps/res/values-af/strings.xml new file mode 100644 index 0000000000..00f84ee5f0 --- /dev/null +++ b/plugins/Osmand-RouteSteps/res/values-af/strings.xml @@ -0,0 +1,7 @@ + +Nee + Ja + OsmAnd is nie geïnstalleer nie + OsmAnd Parkering + OsmAnd Parkering inlegmodule is geïnstalleer en aangeskakel in OsmAnd verstellings. + diff --git a/plugins/Osmand-RouteSteps/res/values-ar/strings.xml b/plugins/Osmand-RouteSteps/res/values-ar/strings.xml new file mode 100644 index 0000000000..66b615414f --- /dev/null +++ b/plugins/Osmand-RouteSteps/res/values-ar/strings.xml @@ -0,0 +1,7 @@ + +ليس + نعم + لم يتم تثبيت OsmAnd + وقوف السيارات + يتم تثبيت البرنامج المساعد OsmAnd وقوف السيارات وتمكينها في إعدادات OsmAnd + diff --git a/plugins/Osmand-RouteSteps/res/values-bg/strings.xml b/plugins/Osmand-RouteSteps/res/values-bg/strings.xml new file mode 100644 index 0000000000..60cea88590 --- /dev/null +++ b/plugins/Osmand-RouteSteps/res/values-bg/strings.xml @@ -0,0 +1,8 @@ + + + Не + Да + Приложението OsmAnd не е инсталирано + Добавка Parking за OsmAnd + Добавката Parking е инсталирана и включена в настройките на OsmAnd. + \ No newline at end of file diff --git a/plugins/Osmand-RouteSteps/res/values-bs/strings.xml b/plugins/Osmand-RouteSteps/res/values-bs/strings.xml new file mode 100644 index 0000000000..7ebdef8fd4 --- /dev/null +++ b/plugins/Osmand-RouteSteps/res/values-bs/strings.xml @@ -0,0 +1,8 @@ + + + Ne + Da + OsmAnd is not installed + OsmAnd Parking Plugin + OsmAnd Parking Plugin is installed and enabled in OsmAnd settings. + diff --git a/plugins/Osmand-RouteSteps/res/values-ca/strings.xml b/plugins/Osmand-RouteSteps/res/values-ca/strings.xml new file mode 100644 index 0000000000..c9bc1274ce --- /dev/null +++ b/plugins/Osmand-RouteSteps/res/values-ca/strings.xml @@ -0,0 +1,7 @@ + + +No +L\'OsmAnd no està instal·lat +OsmAnd Aparcament +El connector OsmAnd Aparcament està instal·lat i activat a la configuració de l\'OsmAnd. + diff --git a/plugins/Osmand-RouteSteps/res/values-cs/strings.xml b/plugins/Osmand-RouteSteps/res/values-cs/strings.xml new file mode 100644 index 0000000000..e3df9fb7f7 --- /dev/null +++ b/plugins/Osmand-RouteSteps/res/values-cs/strings.xml @@ -0,0 +1,8 @@ + + + Ne + Ano + OsmAnd není nainstalován + OsmAnd parkování + OsmAnd modul parkování je nainstalován a aktivován v nastavení OsmAnd. + \ No newline at end of file diff --git a/plugins/Osmand-RouteSteps/res/values-cy/strings.xml b/plugins/Osmand-RouteSteps/res/values-cy/strings.xml new file mode 100644 index 0000000000..81fcead2f0 --- /dev/null +++ b/plugins/Osmand-RouteSteps/res/values-cy/strings.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/plugins/Osmand-RouteSteps/res/values-da/strings.xml b/plugins/Osmand-RouteSteps/res/values-da/strings.xml new file mode 100644 index 0000000000..973e1604b5 --- /dev/null +++ b/plugins/Osmand-RouteSteps/res/values-da/strings.xml @@ -0,0 +1,7 @@ + +Nej + Ja + OsmAnd er ikke installeret + OsmAnd parkering + OsmAnd udvidelsen Parkering er installeret og aktiveret i OsmAnd indstillinger. + diff --git a/plugins/Osmand-RouteSteps/res/values-de/strings.xml b/plugins/Osmand-RouteSteps/res/values-de/strings.xml new file mode 100644 index 0000000000..f37e97c596 --- /dev/null +++ b/plugins/Osmand-RouteSteps/res/values-de/strings.xml @@ -0,0 +1,7 @@ + +Nein + Ja + OsmAnd ist nicht installiert + OsmAnd Parkplatz-Plugin + OsmAnd Parkplatz-Plugin wurde installiert und in den OsmAnd-Einstellungen aktiviert. + diff --git a/plugins/Osmand-RouteSteps/res/values-es/strings.xml b/plugins/Osmand-RouteSteps/res/values-es/strings.xml new file mode 100644 index 0000000000..cefb255837 --- /dev/null +++ b/plugins/Osmand-RouteSteps/res/values-es/strings.xml @@ -0,0 +1,7 @@ + +No + + OsmAnd no está instalado + Aparcamiento de OsmAnd + El Plugin Aparcamiento de OsmAnd está instalado y activado en la configuración de OsmAnd. + diff --git a/plugins/Osmand-RouteSteps/res/values-eu/strings.xml b/plugins/Osmand-RouteSteps/res/values-eu/strings.xml new file mode 100644 index 0000000000..d248d687b0 --- /dev/null +++ b/plugins/Osmand-RouteSteps/res/values-eu/strings.xml @@ -0,0 +1,7 @@ + +Ez + Bai + OsmAnd ez dago instalatuta + OsmAnd Parking Plugin + OsmAnd Parking Plugin instalatuta eta aktibatuta dago OsmAnd-en konfigurazioan. + diff --git a/plugins/Osmand-RouteSteps/res/values-fa/strings.xml b/plugins/Osmand-RouteSteps/res/values-fa/strings.xml new file mode 100644 index 0000000000..70e3a99dc6 --- /dev/null +++ b/plugins/Osmand-RouteSteps/res/values-fa/strings.xml @@ -0,0 +1,7 @@ + +بله + خیر + OsmAnd نصب نشده است + پارکینگ OsmAnd + افزونه پارکینگ OsmAnd نصب شده و در تنظیمات OsmAnd فعال شده است. + diff --git a/plugins/Osmand-RouteSteps/res/values-fi/strings.xml b/plugins/Osmand-RouteSteps/res/values-fi/strings.xml new file mode 100644 index 0000000000..b77225eed0 --- /dev/null +++ b/plugins/Osmand-RouteSteps/res/values-fi/strings.xml @@ -0,0 +1,8 @@ + + +Ei + Kyllä + OsmAnd ei ole asennettu + OsmAnd Parking + OsmAnd Parking lisäosa on asennettu ja aktivoitu OsmAnd:in asetuksista. + diff --git a/plugins/Osmand-RouteSteps/res/values-fr/strings.xml b/plugins/Osmand-RouteSteps/res/values-fr/strings.xml new file mode 100644 index 0000000000..9b7e9a2a5e --- /dev/null +++ b/plugins/Osmand-RouteSteps/res/values-fr/strings.xml @@ -0,0 +1,7 @@ + +Non + Oui + OsmAnd n\'est pas installé + Greffon Parking pour OsmAnd + Le greffon Parking est installé et activé dans les paramètres de OsmAnd. + diff --git a/plugins/Osmand-RouteSteps/res/values-he/strings.xml b/plugins/Osmand-RouteSteps/res/values-he/strings.xml new file mode 100644 index 0000000000..bd9bf023f8 --- /dev/null +++ b/plugins/Osmand-RouteSteps/res/values-he/strings.xml @@ -0,0 +1,8 @@ + + +לא + כן + התכנית OsmAnd אינה מותקנת + חנייה עם OsmAnd + תוסף החנייה של OsmAnd מותקן ומופעל בהגדרות של OsmAnd. + diff --git a/plugins/Osmand-RouteSteps/res/values-hi/strings.xml b/plugins/Osmand-RouteSteps/res/values-hi/strings.xml new file mode 100644 index 0000000000..c247215176 --- /dev/null +++ b/plugins/Osmand-RouteSteps/res/values-hi/strings.xml @@ -0,0 +1,8 @@ + + + नही + हा + OsmAnd is not installed + ओएसएमएएनडी पार्किंग प्लगिन + OsmAnd Parking Plugin is installed and enabled in OsmAnd settings. + diff --git a/plugins/Osmand-RouteSteps/res/values-hr/strings.xml b/plugins/Osmand-RouteSteps/res/values-hr/strings.xml new file mode 100644 index 0000000000..34253e4f3d --- /dev/null +++ b/plugins/Osmand-RouteSteps/res/values-hr/strings.xml @@ -0,0 +1,8 @@ + + +Ne + Da + OsmAnd nije instaliran + OsmAnd Parkiralište + OsmAnd dodatak za parkirališta je instaliran i omogućen u OsmAnd postavkama. + diff --git a/plugins/Osmand-RouteSteps/res/values-hu/strings.xml b/plugins/Osmand-RouteSteps/res/values-hu/strings.xml new file mode 100644 index 0000000000..126b300b69 --- /dev/null +++ b/plugins/Osmand-RouteSteps/res/values-hu/strings.xml @@ -0,0 +1,8 @@ + + + Nem + Igen + Az OsmAnd nincs feltelepítve + OsmAnd Parkolás + OsmAnd Parkolási Bővítmény feltelepítve és engedélyezve az OsmAnd beállításaiban. + \ No newline at end of file diff --git a/plugins/Osmand-RouteSteps/res/values-hy/strings.xml b/plugins/Osmand-RouteSteps/res/values-hy/strings.xml new file mode 100644 index 0000000000..5d916d6389 --- /dev/null +++ b/plugins/Osmand-RouteSteps/res/values-hy/strings.xml @@ -0,0 +1,8 @@ + + + No + Yes + OsmAnd is not installed + OsmAnd Parking Plugin + OsmAnd Parking Plugin is installed and enabled in OsmAnd settings. + \ No newline at end of file diff --git a/plugins/Osmand-RouteSteps/res/values-id/strings.xml b/plugins/Osmand-RouteSteps/res/values-id/strings.xml new file mode 100644 index 0000000000..5d916d6389 --- /dev/null +++ b/plugins/Osmand-RouteSteps/res/values-id/strings.xml @@ -0,0 +1,8 @@ + + + No + Yes + OsmAnd is not installed + OsmAnd Parking Plugin + OsmAnd Parking Plugin is installed and enabled in OsmAnd settings. + \ No newline at end of file diff --git a/plugins/Osmand-RouteSteps/res/values-it/strings.xml b/plugins/Osmand-RouteSteps/res/values-it/strings.xml new file mode 100644 index 0000000000..0bc0d6a835 --- /dev/null +++ b/plugins/Osmand-RouteSteps/res/values-it/strings.xml @@ -0,0 +1,7 @@ + +No + Si + OsmAnd non è installato + OsmAnd Parking + Il Plugin Parcheggio per OsmAnd è installato e abilitato nelle impostazioni di OsmAnd. + diff --git a/plugins/Osmand-RouteSteps/res/values-ja/strings.xml b/plugins/Osmand-RouteSteps/res/values-ja/strings.xml new file mode 100644 index 0000000000..603d75d5d5 --- /dev/null +++ b/plugins/Osmand-RouteSteps/res/values-ja/strings.xml @@ -0,0 +1,7 @@ + +いいえ + はい + OsmAndがインストールされていません + OsmAnd駐車場 + OsmAnd駐車場プラグインはインストールされており、設定は有効です。 + diff --git a/plugins/Osmand-RouteSteps/res/values-ka/strings.xml b/plugins/Osmand-RouteSteps/res/values-ka/strings.xml new file mode 100644 index 0000000000..0120525c58 --- /dev/null +++ b/plugins/Osmand-RouteSteps/res/values-ka/strings.xml @@ -0,0 +1,8 @@ + + + არა + დიახ + OsmAnd ჩადგმული არაა + OsmAnd პარკინგი + OsmAnd-ის პარკინგის დამატება ჩადგმულია და ჩართულია პარამეტრებში. + \ No newline at end of file diff --git a/plugins/Osmand-RouteSteps/res/values-lt/strings.xml b/plugins/Osmand-RouteSteps/res/values-lt/strings.xml new file mode 100644 index 0000000000..c7640f8192 --- /dev/null +++ b/plugins/Osmand-RouteSteps/res/values-lt/strings.xml @@ -0,0 +1,7 @@ + +Ne + Taip + OsmAnd programa neįdiegta + OsmAnd parkavimo įskiepis + OsmAnd Parkavimo įskiepis įdiegiamas ir aktyvuojamas OsmAnd nustatymuose. + diff --git a/plugins/Osmand-RouteSteps/res/values-lv/strings.xml b/plugins/Osmand-RouteSteps/res/values-lv/strings.xml new file mode 100644 index 0000000000..4341d84c65 --- /dev/null +++ b/plugins/Osmand-RouteSteps/res/values-lv/strings.xml @@ -0,0 +1,8 @@ + + + + + OsmAnd nav instalēts + OsmAnd Parkošanās + OsmAnd parkošanās spraudnis ir instalēts un iespējots OsmAnd uzstādījumos. + \ No newline at end of file diff --git a/plugins/Osmand-RouteSteps/res/values-mn/strings.xml b/plugins/Osmand-RouteSteps/res/values-mn/strings.xml new file mode 100644 index 0000000000..9c5ad89af1 --- /dev/null +++ b/plugins/Osmand-RouteSteps/res/values-mn/strings.xml @@ -0,0 +1,3 @@ + + + diff --git a/plugins/Osmand-RouteSteps/res/values-mr/strings.xml b/plugins/Osmand-RouteSteps/res/values-mr/strings.xml new file mode 100644 index 0000000000..bb2f935183 --- /dev/null +++ b/plugins/Osmand-RouteSteps/res/values-mr/strings.xml @@ -0,0 +1,8 @@ + + + नाही + हो + ओएसएमएएनडि इन्स्टॉल केलेले नाही + ओएसएमएएनडि पार्किंग + ओएसएमएएनडि पार्किंग प्लगिन इन्स्टॉल आणि चालू केले आहे. + \ No newline at end of file diff --git a/plugins/Osmand-RouteSteps/res/values-nb/strings.xml b/plugins/Osmand-RouteSteps/res/values-nb/strings.xml new file mode 100644 index 0000000000..d4623fe95f --- /dev/null +++ b/plugins/Osmand-RouteSteps/res/values-nb/strings.xml @@ -0,0 +1,7 @@ + +Ja + Nei + OsmAnd er ikke installert + OsmAnd - parkering + OsmAnd-pluginen er installert og aktivert i innstillingene for OsmAnd. + diff --git a/plugins/Osmand-RouteSteps/res/values-nl/strings.xml b/plugins/Osmand-RouteSteps/res/values-nl/strings.xml new file mode 100644 index 0000000000..7386549e61 --- /dev/null +++ b/plugins/Osmand-RouteSteps/res/values-nl/strings.xml @@ -0,0 +1,7 @@ + +Nee + Ja + OsmAnd is niet geïnstalleerd + OsmAnd parkeerplugin + OsmAnd parkeerplugin is geïnstalleerd en geactiveerd in de OsmAnd-instellingen. + diff --git a/plugins/Osmand-RouteSteps/res/values-pl/strings.xml b/plugins/Osmand-RouteSteps/res/values-pl/strings.xml new file mode 100644 index 0000000000..ae0f030549 --- /dev/null +++ b/plugins/Osmand-RouteSteps/res/values-pl/strings.xml @@ -0,0 +1,7 @@ + +Nie + Tak + Osmand nie jest zainstalowany + Wtyczka parkowania dla OsmAnd + Wtyczka parkowania jest zainstalowana i włączona w ustawieniach OsmAnd. + diff --git a/plugins/Osmand-RouteSteps/res/values-pt/strings.xml b/plugins/Osmand-RouteSteps/res/values-pt/strings.xml new file mode 100644 index 0000000000..9d28f8d8c6 --- /dev/null +++ b/plugins/Osmand-RouteSteps/res/values-pt/strings.xml @@ -0,0 +1,7 @@ + +Não + Sim + Osmand não está instalado + OsmAnd Parking Plugin + OsmAnd Parking Plugin está instalado e activado nas opções OsmAnd. + diff --git a/plugins/Osmand-RouteSteps/res/values-ro/strings.xml b/plugins/Osmand-RouteSteps/res/values-ro/strings.xml new file mode 100644 index 0000000000..5d0369ee36 --- /dev/null +++ b/plugins/Osmand-RouteSteps/res/values-ro/strings.xml @@ -0,0 +1,7 @@ + +Nu + Da + OsmAnd nu este instalat + OsmAnd Parking + Plugin-ul OsmAnd Parking este instalat și activat în setările OsmAnd. + diff --git a/plugins/Osmand-RouteSteps/res/values-ru/strings.xml b/plugins/Osmand-RouteSteps/res/values-ru/strings.xml new file mode 100644 index 0000000000..b70765b9e5 --- /dev/null +++ b/plugins/Osmand-RouteSteps/res/values-ru/strings.xml @@ -0,0 +1,8 @@ + + + Нет + Да + OsmAnd не установлен + Плагин парковки OsmAnd + Плагин парковки установлен и включен в настройках OsmAnd. + diff --git a/plugins/Osmand-RouteSteps/res/values-sc/strings.xml b/plugins/Osmand-RouteSteps/res/values-sc/strings.xml new file mode 100644 index 0000000000..058296440b --- /dev/null +++ b/plugins/Osmand-RouteSteps/res/values-sc/strings.xml @@ -0,0 +1,7 @@ + +Nono + Eja + OsmAnd no est installau + OsmAnd Parchezu + OsmAnd Parchezu est installau e insertau in sas impostaduras de OsmAnd. + diff --git a/plugins/Osmand-RouteSteps/res/values-sk/strings.xml b/plugins/Osmand-RouteSteps/res/values-sk/strings.xml new file mode 100644 index 0000000000..0b3b5ad7f5 --- /dev/null +++ b/plugins/Osmand-RouteSteps/res/values-sk/strings.xml @@ -0,0 +1,8 @@ + + + Nie + Áno + Aplikácia OsmAnd nie je nainštalovaná + OsmAnd parkovanie + Parkovací zásuvný modul pre OsmAnd je nainštalovaný a povolený v nastaveniach aplikácie OsmAnd. + \ No newline at end of file diff --git a/plugins/Osmand-RouteSteps/res/values-sl/strings.xml b/plugins/Osmand-RouteSteps/res/values-sl/strings.xml new file mode 100644 index 0000000000..d457d4abbb --- /dev/null +++ b/plugins/Osmand-RouteSteps/res/values-sl/strings.xml @@ -0,0 +1,8 @@ + + +Da + Ne + OsmAnd ni nameščen + OsmAnd parkiranje + Vtičnik OsmAnd parkiranje je nameščen in omogočen v OsmAnd nastavitvah. + diff --git a/plugins/Osmand-RouteSteps/res/values-sq/strings.xml b/plugins/Osmand-RouteSteps/res/values-sq/strings.xml new file mode 100644 index 0000000000..46ade86e72 --- /dev/null +++ b/plugins/Osmand-RouteSteps/res/values-sq/strings.xml @@ -0,0 +1,7 @@ + +Jo + Po + OsmAnd nuk është instaluar + OsmAnd Parkim + Plugini OsmAnd Parkim është instaluar dhe aktivizuar në OsmAnd settings. + diff --git a/plugins/Osmand-RouteSteps/res/values-sr/strings.xml b/plugins/Osmand-RouteSteps/res/values-sr/strings.xml new file mode 100644 index 0000000000..9c5ad89af1 --- /dev/null +++ b/plugins/Osmand-RouteSteps/res/values-sr/strings.xml @@ -0,0 +1,3 @@ + + + diff --git a/plugins/Osmand-RouteSteps/res/values-sv/strings.xml b/plugins/Osmand-RouteSteps/res/values-sv/strings.xml new file mode 100644 index 0000000000..669e231fa1 --- /dev/null +++ b/plugins/Osmand-RouteSteps/res/values-sv/strings.xml @@ -0,0 +1,8 @@ + + +Nej + Ja + OsmAnd är inte installerad + OsmAnd - parkering + OsmAnd-pluginen Parkering är installerad och aktiverad i inställningarna för OsmAnd. + diff --git a/plugins/Osmand-RouteSteps/res/values-tl/strings.xml b/plugins/Osmand-RouteSteps/res/values-tl/strings.xml new file mode 100644 index 0000000000..9c5ad89af1 --- /dev/null +++ b/plugins/Osmand-RouteSteps/res/values-tl/strings.xml @@ -0,0 +1,3 @@ + + + diff --git a/plugins/Osmand-RouteSteps/res/values-tr/strings.xml b/plugins/Osmand-RouteSteps/res/values-tr/strings.xml new file mode 100644 index 0000000000..01b39afda6 --- /dev/null +++ b/plugins/Osmand-RouteSteps/res/values-tr/strings.xml @@ -0,0 +1,5 @@ + + +Evet + Hayır + diff --git a/plugins/Osmand-RouteSteps/res/values-uk/strings.xml b/plugins/Osmand-RouteSteps/res/values-uk/strings.xml new file mode 100644 index 0000000000..a675bde927 --- /dev/null +++ b/plugins/Osmand-RouteSteps/res/values-uk/strings.xml @@ -0,0 +1,7 @@ + +Ні + Так + Osmand не встановлено + Паркування OsmAnd + Плагін Паркування OsmAnd встановлено та увімкнено у налаштуваннях OsmAnd. + diff --git a/plugins/Osmand-RouteSteps/res/values-zh-rCN/strings.xml b/plugins/Osmand-RouteSteps/res/values-zh-rCN/strings.xml new file mode 100644 index 0000000000..bc5d807565 --- /dev/null +++ b/plugins/Osmand-RouteSteps/res/values-zh-rCN/strings.xml @@ -0,0 +1,7 @@ + + + 没有 + OsmAnd 未安装 + OsmAnd 停车场 + OsmAnd 停车场插件已安装,并已在 OsmAnd 设置中启用。 + diff --git a/plugins/Osmand-RouteSteps/res/values-zh-rTW/strings.xml b/plugins/Osmand-RouteSteps/res/values-zh-rTW/strings.xml new file mode 100644 index 0000000000..1d42543909 --- /dev/null +++ b/plugins/Osmand-RouteSteps/res/values-zh-rTW/strings.xml @@ -0,0 +1,7 @@ + + + + OsmAnd 並未安裝 + OsmAnd 停車場外掛元件已安裝,並且已在 OsmAnd 設定裡啟用。 +OsmAnd 停車場 + diff --git a/plugins/Osmand-RouteSteps/res/values/strings.xml b/plugins/Osmand-RouteSteps/res/values/strings.xml new file mode 100644 index 0000000000..29cf78cf31 --- /dev/null +++ b/plugins/Osmand-RouteSteps/res/values/strings.xml @@ -0,0 +1,8 @@ + + + No + Yes + OsmAnd is not installed + OsmAnd Route steps + OsmAnd Route Steps Plugin is installed and enabled in OsmAnd settings. + \ No newline at end of file diff --git a/plugins/Osmand-RouteSteps/src/net/osmand/routeStepsPlugin/RouteStepsActivity.java b/plugins/Osmand-RouteSteps/src/net/osmand/routeStepsPlugin/RouteStepsActivity.java new file mode 100644 index 0000000000..df52d215a0 --- /dev/null +++ b/plugins/Osmand-RouteSteps/src/net/osmand/routeStepsPlugin/RouteStepsActivity.java @@ -0,0 +1,61 @@ +package net.osmand.routeStepsPlugin; + +import android.app.Activity; +import android.app.AlertDialog; +import android.content.ActivityNotFoundException; +import android.content.ComponentName; +import android.content.DialogInterface; +import android.content.Intent; +import android.content.pm.PackageManager; +import android.content.pm.ResolveInfo; +import android.net.Uri; +import android.os.Bundle; +import net.osmand.routeSteps.R; + +public class RouteStepsActivity extends Activity { + private static final String OSMAND_COMPONENT = "net.osmand"; //$NON-NLS-1$ + private static final String OSMAND_COMPONENT_PLUS = "net.osmand.plus"; //$NON-NLS-1$ + private static final String OSMAND_ACTIVITY = "net.osmand.plus.activities.MainMenuActivity"; //$NON-NLS-1$ + + /** Called when the activity is first created. */ + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.main); + + Intent intentPlus = new Intent(); + intentPlus.setComponent(new ComponentName(OSMAND_COMPONENT_PLUS, OSMAND_ACTIVITY)); + intentPlus.setFlags(Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED); + ResolveInfo resolved = getPackageManager().resolveActivity(intentPlus, PackageManager.MATCH_DEFAULT_ONLY); + if(resolved != null) { + stopService(intentPlus); + startActivity(intentPlus); + } else { + Intent intentNormal = new Intent(); + intentNormal.setFlags(Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED); + intentNormal.setComponent(new ComponentName(OSMAND_COMPONENT, OSMAND_ACTIVITY)); + resolved = getPackageManager().resolveActivity(intentNormal, PackageManager.MATCH_DEFAULT_ONLY); + if (resolved != null) { + stopService(intentNormal); + startActivity(intentNormal); + } else { + AlertDialog.Builder builder = new AlertDialog.Builder(this); + builder.setMessage(getString(R.string.osmand_app_not_found)); + builder.setPositiveButton(getString(R.string.default_buttons_yes), new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("market://search?q=pname:" + OSMAND_COMPONENT_PLUS)); + try { + stopService(intent); + startActivity(intent); + } catch (ActivityNotFoundException e) { + } + } + }); + builder.setNegativeButton(getString(R.string.default_buttons_no), null); + builder.show(); + } + } + } + +} \ No newline at end of file From ecc93fcf8ba8775f48e43101b2dcba4e28405ced Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 11 Jun 2014 20:28:24 +0300 Subject: [PATCH 03/28] added saving functionality for gpx file. --- OsmAnd/src/net/osmand/plus/routesteps/RouteStepsPlugin.java | 1 + 1 file changed, 1 insertion(+) diff --git a/OsmAnd/src/net/osmand/plus/routesteps/RouteStepsPlugin.java b/OsmAnd/src/net/osmand/plus/routesteps/RouteStepsPlugin.java index 0e1aebc241..78ec0cb1ae 100644 --- a/OsmAnd/src/net/osmand/plus/routesteps/RouteStepsPlugin.java +++ b/OsmAnd/src/net/osmand/plus/routesteps/RouteStepsPlugin.java @@ -203,6 +203,7 @@ public class RouteStepsPlugin extends OsmandPlugin { } } pointsStatus = new ArrayList(pointsIntermediateState); + saveGPXFile(); } }); builder.setNegativeButton("Cancel", null); From ad28ff8b10e892dfbed7e8743879d5b1e3e4e3b7 Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 10 Jun 2014 17:21:50 +0300 Subject: [PATCH 04/28] removed iml file from repo --- .../Osmand-ParkingPlugin.iml | 28 ------------------- 1 file changed, 28 deletions(-) delete mode 100644 plugins/Osmand-ParkingPlugin/Osmand-ParkingPlugin.iml diff --git a/plugins/Osmand-ParkingPlugin/Osmand-ParkingPlugin.iml b/plugins/Osmand-ParkingPlugin/Osmand-ParkingPlugin.iml deleted file mode 100644 index fcb91eb6fe..0000000000 --- a/plugins/Osmand-ParkingPlugin/Osmand-ParkingPlugin.iml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - From b890b7123957ad6041bb351a84f79a780d7b5238 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 11 Jun 2014 20:06:46 +0300 Subject: [PATCH 05/28] Created route steps plugin. Registered route steps plugin in Osmand. Created dialog to set if point is alredy visited or not --- OsmAnd/res/values/strings.xml | 1 + OsmAnd/src/net/osmand/plus/OsmandPlugin.java | 10 +- .../plus/routesteps/RouteStepsLayer.java | 67 +++++ .../plus/routesteps/RouteStepsPlugin.java | 235 ++++++++++++++++++ plugins/Osmand-ParkingPlugin/.gitignore | 1 + plugins/Osmand-RouteSteps/.classpath | 9 + plugins/Osmand-RouteSteps/.gitignore | 5 + plugins/Osmand-RouteSteps/.project | 33 +++ plugins/Osmand-RouteSteps/AndroidManifest.xml | 26 ++ .../Osmand-RouteSteps/proguard-project.txt | 20 ++ plugins/Osmand-RouteSteps/project.properties | 14 ++ .../res/drawable-hdpi/ic_launcher.png | Bin 0 -> 9397 bytes .../res/drawable-hdpi/icon.png | Bin 0 -> 7287 bytes .../res/drawable-ldpi/ic_launcher.png | Bin 0 -> 2729 bytes .../res/drawable-ldpi/icon.png | Bin 0 -> 2683 bytes .../res/drawable-mdpi/ic_launcher.png | Bin 0 -> 5237 bytes .../res/drawable-mdpi/icon.png | Bin 0 -> 4055 bytes .../res/drawable-xhdpi/ic_launcher.png | Bin 0 -> 14383 bytes .../res/drawable-xhdpi/icon.png | Bin 0 -> 10436 bytes plugins/Osmand-RouteSteps/res/layout/main.xml | 13 + .../res/values-af/strings.xml | 7 + .../res/values-ar/strings.xml | 7 + .../res/values-bg/strings.xml | 8 + .../res/values-bs/strings.xml | 8 + .../res/values-ca/strings.xml | 7 + .../res/values-cs/strings.xml | 8 + .../res/values-cy/strings.xml | 3 + .../res/values-da/strings.xml | 7 + .../res/values-de/strings.xml | 7 + .../res/values-es/strings.xml | 7 + .../res/values-eu/strings.xml | 7 + .../res/values-fa/strings.xml | 7 + .../res/values-fi/strings.xml | 8 + .../res/values-fr/strings.xml | 7 + .../res/values-he/strings.xml | 8 + .../res/values-hi/strings.xml | 8 + .../res/values-hr/strings.xml | 8 + .../res/values-hu/strings.xml | 8 + .../res/values-hy/strings.xml | 8 + .../res/values-id/strings.xml | 8 + .../res/values-it/strings.xml | 7 + .../res/values-ja/strings.xml | 7 + .../res/values-ka/strings.xml | 8 + .../res/values-lt/strings.xml | 7 + .../res/values-lv/strings.xml | 8 + .../res/values-mn/strings.xml | 3 + .../res/values-mr/strings.xml | 8 + .../res/values-nb/strings.xml | 7 + .../res/values-nl/strings.xml | 7 + .../res/values-pl/strings.xml | 7 + .../res/values-pt/strings.xml | 7 + .../res/values-ro/strings.xml | 7 + .../res/values-ru/strings.xml | 8 + .../res/values-sc/strings.xml | 7 + .../res/values-sk/strings.xml | 8 + .../res/values-sl/strings.xml | 8 + .../res/values-sq/strings.xml | 7 + .../res/values-sr/strings.xml | 3 + .../res/values-sv/strings.xml | 8 + .../res/values-tl/strings.xml | 3 + .../res/values-tr/strings.xml | 5 + .../res/values-uk/strings.xml | 7 + .../res/values-zh-rCN/strings.xml | 7 + .../res/values-zh-rTW/strings.xml | 7 + .../Osmand-RouteSteps/res/values/strings.xml | 8 + .../routeStepsPlugin/RouteStepsActivity.java | 61 +++++ 66 files changed, 808 insertions(+), 2 deletions(-) create mode 100644 OsmAnd/src/net/osmand/plus/routesteps/RouteStepsLayer.java create mode 100644 OsmAnd/src/net/osmand/plus/routesteps/RouteStepsPlugin.java create mode 100644 plugins/Osmand-RouteSteps/.classpath create mode 100644 plugins/Osmand-RouteSteps/.gitignore create mode 100644 plugins/Osmand-RouteSteps/.project create mode 100644 plugins/Osmand-RouteSteps/AndroidManifest.xml create mode 100644 plugins/Osmand-RouteSteps/proguard-project.txt create mode 100644 plugins/Osmand-RouteSteps/project.properties create mode 100644 plugins/Osmand-RouteSteps/res/drawable-hdpi/ic_launcher.png create mode 100644 plugins/Osmand-RouteSteps/res/drawable-hdpi/icon.png create mode 100644 plugins/Osmand-RouteSteps/res/drawable-ldpi/ic_launcher.png create mode 100644 plugins/Osmand-RouteSteps/res/drawable-ldpi/icon.png create mode 100644 plugins/Osmand-RouteSteps/res/drawable-mdpi/ic_launcher.png create mode 100644 plugins/Osmand-RouteSteps/res/drawable-mdpi/icon.png create mode 100644 plugins/Osmand-RouteSteps/res/drawable-xhdpi/ic_launcher.png create mode 100644 plugins/Osmand-RouteSteps/res/drawable-xhdpi/icon.png create mode 100644 plugins/Osmand-RouteSteps/res/layout/main.xml create mode 100644 plugins/Osmand-RouteSteps/res/values-af/strings.xml create mode 100644 plugins/Osmand-RouteSteps/res/values-ar/strings.xml create mode 100644 plugins/Osmand-RouteSteps/res/values-bg/strings.xml create mode 100644 plugins/Osmand-RouteSteps/res/values-bs/strings.xml create mode 100644 plugins/Osmand-RouteSteps/res/values-ca/strings.xml create mode 100644 plugins/Osmand-RouteSteps/res/values-cs/strings.xml create mode 100644 plugins/Osmand-RouteSteps/res/values-cy/strings.xml create mode 100644 plugins/Osmand-RouteSteps/res/values-da/strings.xml create mode 100644 plugins/Osmand-RouteSteps/res/values-de/strings.xml create mode 100644 plugins/Osmand-RouteSteps/res/values-es/strings.xml create mode 100644 plugins/Osmand-RouteSteps/res/values-eu/strings.xml create mode 100644 plugins/Osmand-RouteSteps/res/values-fa/strings.xml create mode 100644 plugins/Osmand-RouteSteps/res/values-fi/strings.xml create mode 100644 plugins/Osmand-RouteSteps/res/values-fr/strings.xml create mode 100644 plugins/Osmand-RouteSteps/res/values-he/strings.xml create mode 100644 plugins/Osmand-RouteSteps/res/values-hi/strings.xml create mode 100644 plugins/Osmand-RouteSteps/res/values-hr/strings.xml create mode 100644 plugins/Osmand-RouteSteps/res/values-hu/strings.xml create mode 100644 plugins/Osmand-RouteSteps/res/values-hy/strings.xml create mode 100644 plugins/Osmand-RouteSteps/res/values-id/strings.xml create mode 100644 plugins/Osmand-RouteSteps/res/values-it/strings.xml create mode 100644 plugins/Osmand-RouteSteps/res/values-ja/strings.xml create mode 100644 plugins/Osmand-RouteSteps/res/values-ka/strings.xml create mode 100644 plugins/Osmand-RouteSteps/res/values-lt/strings.xml create mode 100644 plugins/Osmand-RouteSteps/res/values-lv/strings.xml create mode 100644 plugins/Osmand-RouteSteps/res/values-mn/strings.xml create mode 100644 plugins/Osmand-RouteSteps/res/values-mr/strings.xml create mode 100644 plugins/Osmand-RouteSteps/res/values-nb/strings.xml create mode 100644 plugins/Osmand-RouteSteps/res/values-nl/strings.xml create mode 100644 plugins/Osmand-RouteSteps/res/values-pl/strings.xml create mode 100644 plugins/Osmand-RouteSteps/res/values-pt/strings.xml create mode 100644 plugins/Osmand-RouteSteps/res/values-ro/strings.xml create mode 100644 plugins/Osmand-RouteSteps/res/values-ru/strings.xml create mode 100644 plugins/Osmand-RouteSteps/res/values-sc/strings.xml create mode 100644 plugins/Osmand-RouteSteps/res/values-sk/strings.xml create mode 100644 plugins/Osmand-RouteSteps/res/values-sl/strings.xml create mode 100644 plugins/Osmand-RouteSteps/res/values-sq/strings.xml create mode 100644 plugins/Osmand-RouteSteps/res/values-sr/strings.xml create mode 100644 plugins/Osmand-RouteSteps/res/values-sv/strings.xml create mode 100644 plugins/Osmand-RouteSteps/res/values-tl/strings.xml create mode 100644 plugins/Osmand-RouteSteps/res/values-tr/strings.xml create mode 100644 plugins/Osmand-RouteSteps/res/values-uk/strings.xml create mode 100644 plugins/Osmand-RouteSteps/res/values-zh-rCN/strings.xml create mode 100644 plugins/Osmand-RouteSteps/res/values-zh-rTW/strings.xml create mode 100644 plugins/Osmand-RouteSteps/res/values/strings.xml create mode 100644 plugins/Osmand-RouteSteps/src/net/osmand/routeStepsPlugin/RouteStepsActivity.java diff --git a/OsmAnd/res/values/strings.xml b/OsmAnd/res/values/strings.xml index 24ff53c071..27e83e16a9 100644 --- a/OsmAnd/res/values/strings.xml +++ b/OsmAnd/res/values/strings.xml @@ -934,6 +934,7 @@ Afghanistan, Albania, Algeria, Andorra, Angola, Anguilla, Antigua and Barbuda, A Parking Position Plugin Mark as a parking position Delete a parking marker + Show route points Public Identifiable Trackable diff --git a/OsmAnd/src/net/osmand/plus/OsmandPlugin.java b/OsmAnd/src/net/osmand/plus/OsmandPlugin.java index 754fe79ffa..43fee487d5 100644 --- a/OsmAnd/src/net/osmand/plus/OsmandPlugin.java +++ b/OsmAnd/src/net/osmand/plus/OsmandPlugin.java @@ -22,6 +22,7 @@ import net.osmand.plus.osmo.OsMoPlugin; import net.osmand.plus.osmodroid.OsMoDroidPlugin; import net.osmand.plus.parkingpoint.ParkingPositionPlugin; import net.osmand.plus.rastermaps.OsmandRasterMapsPlugin; +import net.osmand.plus.routesteps.RouteStepsPlugin; import net.osmand.plus.srtmplugin.SRTMPlugin; import net.osmand.plus.views.OsmandMapTileView; import org.apache.commons.logging.Log; @@ -41,10 +42,11 @@ public abstract class OsmandPlugin { private static final String PARKING_PLUGIN_COMPONENT = "net.osmand.parkingPlugin"; //$NON-NLS-1$ private static final String SRTM_PLUGIN_COMPONENT_PAID = "net.osmand.srtmPlugin.paid"; //$NON-NLS-1$ private static final String SRTM_PLUGIN_COMPONENT = "net.osmand.srtmPlugin"; //$NON-NLS-1$ - + private static final String OSMODROID_PLUGIN_COMPONENT = "com.OsMoDroid"; //$NON-NLS-1$ - + private static final String ROUTE_STEPS_PLUGIN_COMPONENT = "net.osmand.routeStepsPlugin"; //$NON-NLS-1$ + public abstract String getId(); public abstract String getDescription(); @@ -82,6 +84,10 @@ public abstract class OsmandPlugin { if(!f && Version.isParkingPluginInlined(app)) { installedPlugins.add(parking); } + + final RouteStepsPlugin routeSteps = new RouteStepsPlugin(app); + installPlugin(ROUTE_STEPS_PLUGIN_COMPONENT, RouteStepsPlugin.ID, app, routeSteps); + installPlugin(OSMODROID_PLUGIN_COMPONENT, OsMoDroidPlugin.ID, app, new OsMoDroidPlugin(app)); installedPlugins.add(new OsmEditingPlugin(app)); installedPlugins.add(new OsmandDevelopmentPlugin(app)); diff --git a/OsmAnd/src/net/osmand/plus/routesteps/RouteStepsLayer.java b/OsmAnd/src/net/osmand/plus/routesteps/RouteStepsLayer.java new file mode 100644 index 0000000000..c35697a71b --- /dev/null +++ b/OsmAnd/src/net/osmand/plus/routesteps/RouteStepsLayer.java @@ -0,0 +1,67 @@ +package net.osmand.plus.routesteps; + +import android.graphics.Canvas; +import android.graphics.PointF; +import net.osmand.data.LatLon; +import net.osmand.data.RotatedTileBox; +import net.osmand.plus.activities.MapActivity; +import net.osmand.plus.views.ContextMenuLayer; +import net.osmand.plus.views.OsmandMapLayer; +import net.osmand.plus.views.OsmandMapTileView; + +import java.util.List; + +/** + * Created by Barsik on 10.06.2014. + */ +public class RouteStepsLayer extends OsmandMapLayer implements ContextMenuLayer.IContextMenuProvider { + + private final MapActivity map; + private RouteStepsPlugin plugin; + + public RouteStepsLayer(MapActivity map, RouteStepsPlugin plugin){ + this.map = map; + this.plugin = plugin; + } + + + @Override + public void collectObjectsFromPoint(PointF point, RotatedTileBox tileBox, List o) { + + } + + @Override + public LatLon getObjectLocation(Object o) { + return null; + } + + @Override + public String getObjectDescription(Object o) { + return null; + } + + @Override + public String getObjectName(Object o) { + return null; + } + + @Override + public void initLayer(OsmandMapTileView view) { + + } + + @Override + public void onDraw(Canvas canvas, RotatedTileBox tileBox, DrawSettings settings) { + + } + + @Override + public void destroyLayer() { + + } + + @Override + public boolean drawInScreenPixels() { + return false; + } +} diff --git a/OsmAnd/src/net/osmand/plus/routesteps/RouteStepsPlugin.java b/OsmAnd/src/net/osmand/plus/routesteps/RouteStepsPlugin.java new file mode 100644 index 0000000000..0e1aebc241 --- /dev/null +++ b/OsmAnd/src/net/osmand/plus/routesteps/RouteStepsPlugin.java @@ -0,0 +1,235 @@ +package net.osmand.plus.routesteps; + +import android.app.AlertDialog; +import android.app.Dialog; +import android.content.DialogInterface; +import net.osmand.plus.*; +import net.osmand.plus.activities.MapActivity; + +import java.io.File; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +/** + * Created by Barsik on 10.06.2014. + */ +public class RouteStepsPlugin extends OsmandPlugin { + + public static final String ID = "osmand.route.stepsPlugin"; + + private static final String VISITED_KEY = "IsVisited"; + private static final String POINT_KEY = "Point"; + private static final String CURRENT_ROUTE_KEY = "CurrentRoute"; + private int routeKey; + + + private OsmandApplication app; + private GPXUtilities.GPXFile gpx; + private File file; + private GPXUtilities.Route currentRoute; + private GPXUtilities.WptPt currentPoint; + private int currentPointPos; + private RouteStepsLayer routeStepsLayer; + private List pointsList; + private List pointsStatus; + + + + public RouteStepsPlugin(OsmandApplication app){ + this.app = app; + this.file = new File("/storage/emulated/0/osmand/tracks/","504.gpx"); + gpx = GPXUtilities.loadGPXFile(app, file); + loadCurrentRoute(); + pointsList = currentRoute.points; + pointsStatus = new ArrayList(pointsList.size()); + getAllPointsStatus(); + } + + public void setGpxFile(GPXUtilities.GPXFile file){ this.gpx = file;} + + public void saveGPXFile(){ GPXUtilities.writeGpxFile(file,gpx,app); } + + public void setCurrentPoint(GPXUtilities.WptPt point){ + currentPoint = point; + int number = findPointPosition(point); + currentPointPos = number; + } + + public void setCurrentPoint(int number){ + currentPoint = pointsList.get(number); + currentPointPos = number; + } + + @Override + public String getId() { + return ID; + } + + @Override + public String getDescription() { + return "This plugin allows you to view key positions of your route..."; + } + + @Override + public String getName() { + return "Tour Point Plugin"; + } + + @Override + public boolean init(OsmandApplication app) { + return true; + } + + @Override + public void registerLayers(MapActivity activity) { + // remove old if existing after turn + if(routeStepsLayer != null) { + activity.getMapView().removeLayer(routeStepsLayer); + } + routeStepsLayer = new RouteStepsLayer(activity, this); + activity.getMapView().addLayer(routeStepsLayer, 5.5f); + //registerWidget(activity); + } + + public List getPoints() {return currentRoute.points;} + + public boolean getPointStatus(int numberOfPoint){ + Map map = gpx.getExtensionsToRead(); + + String mapKey = routeKey + POINT_KEY + numberOfPoint + VISITED_KEY; + if (map.containsKey(mapKey)){ + String value = map.get(mapKey); + return (value.equals("true")); + } + + return false; + } + + //saves point status value to gpx extention file + public void setPointStatus(int numberOfPoint, boolean status){ + Map map = gpx.getExtensionsToWrite(); + + String mapKey = routeKey + POINT_KEY + numberOfPoint + VISITED_KEY; + if (status){ + map.put(mapKey, "true"); + } else { + map.put(mapKey, "false"); + } + } + + public GPXUtilities.WptPt getNextPoint(){ + if (pointsList.size() > currentPointPos +1){ + return pointsList.get(currentPointPos+1); + } else{ + return null; + } + } + + private void loadCurrentRoute() { + if (gpx.routes.size() < 1){ + return; + } + + Map map = gpx.getExtensionsToRead(); + if (map.containsKey(CURRENT_ROUTE_KEY)){ + String routeName = map.get(CURRENT_ROUTE_KEY); + int i = 0; + for(GPXUtilities.Route route : gpx.routes){ + if (route.name.equals(routeName)){ + currentRoute = route; + routeKey = i; + return; + } + i++; + } + } + + routeKey = 0; + currentRoute = gpx.routes.get(0); + } + + @Override + public void registerMapContextMenuActions(final MapActivity mapActivity, + final double latitude, final double longitude, + ContextMenuAdapter adapter, Object selectedObj) { + + ContextMenuAdapter.OnContextMenuClick addListener = new ContextMenuAdapter.OnContextMenuClick() { + @Override + public void onContextMenuClick(int resId, int pos, + boolean isChecked, DialogInterface dialog) { + if (resId == R.string.context_menu_item_show_route_points) { + showStepsDialog(mapActivity); + } + } + }; + adapter.item(R.string.context_menu_item_show_route_points) + .icons( R.drawable.ic_action_parking_dark, R.drawable.ic_action_parking_light).listen(addListener).reg(); + + } + + private void getAllPointsStatus(){ + for(int i=0; i< pointsList.size(); i++){ + pointsStatus.add(getPointStatus(i)); + } + } + + private void showStepsDialog(MapActivity mapActivity){ + + List pointNames = new ArrayList(); + //this array need to collect user selection during dialogue + final List pointsIntermediateState = new ArrayList(pointsStatus); + for(GPXUtilities.WptPt point : pointsList){ + pointNames.add(point.name); + } + + AlertDialog.Builder builder = new AlertDialog.Builder(mapActivity); + builder.setTitle("All available points"); + builder.setMultiChoiceItems(pointNames.toArray(new String[pointNames.size()]), toPrimitiveArray(pointsIntermediateState), new DialogInterface.OnMultiChoiceClickListener() { + @Override + public void onClick(DialogInterface dialogInterface, int i, boolean isChecked) { + //saving user choice + pointsIntermediateState.set(i,isChecked); + } + }); + builder.setPositiveButton("OK", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialogInterface, int i) { + for (int j=0; j< pointsIntermediateState.size(); j++){ + boolean newValue = pointsIntermediateState.get(j); + //if values is the same - there's no need to save data + if (newValue != pointsStatus.get(j)){ + setPointStatus(j,newValue); + } + } + pointsStatus = new ArrayList(pointsIntermediateState); + } + }); + builder.setNegativeButton("Cancel", null); + + builder.show(); + + } + + private boolean[] toPrimitiveArray(final List booleanList) { + final boolean[] primitives = new boolean[booleanList.size()]; + int index = 0; + for (Boolean object : booleanList) { + primitives[index++] = object; + } + return primitives; + } + + + private int findPointPosition(GPXUtilities.WptPt point){ + int i = 0; + for (GPXUtilities.WptPt item : pointsList){ + if (item.equals(point)){ + return i; + } + i++; + } + return -1; + } + +} diff --git a/plugins/Osmand-ParkingPlugin/.gitignore b/plugins/Osmand-ParkingPlugin/.gitignore index 36986d81cf..5978954c17 100644 --- a/plugins/Osmand-ParkingPlugin/.gitignore +++ b/plugins/Osmand-ParkingPlugin/.gitignore @@ -2,3 +2,4 @@ bin gen raw obj +*.iml diff --git a/plugins/Osmand-RouteSteps/.classpath b/plugins/Osmand-RouteSteps/.classpath new file mode 100644 index 0000000000..7bc01d9a9c --- /dev/null +++ b/plugins/Osmand-RouteSteps/.classpath @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/plugins/Osmand-RouteSteps/.gitignore b/plugins/Osmand-RouteSteps/.gitignore new file mode 100644 index 0000000000..85bd1cacd6 --- /dev/null +++ b/plugins/Osmand-RouteSteps/.gitignore @@ -0,0 +1,5 @@ +bin +gen +raw +obj +*.iml \ No newline at end of file diff --git a/plugins/Osmand-RouteSteps/.project b/plugins/Osmand-RouteSteps/.project new file mode 100644 index 0000000000..1c708327e5 --- /dev/null +++ b/plugins/Osmand-RouteSteps/.project @@ -0,0 +1,33 @@ + + + Osmand-ParkingPlugin + + + + + + com.android.ide.eclipse.adt.ResourceManagerBuilder + + + + + com.android.ide.eclipse.adt.PreCompilerBuilder + + + + + org.eclipse.jdt.core.javabuilder + + + + + com.android.ide.eclipse.adt.ApkBuilder + + + + + + com.android.ide.eclipse.adt.AndroidNature + org.eclipse.jdt.core.javanature + + diff --git a/plugins/Osmand-RouteSteps/AndroidManifest.xml b/plugins/Osmand-RouteSteps/AndroidManifest.xml new file mode 100644 index 0000000000..4937306599 --- /dev/null +++ b/plugins/Osmand-RouteSteps/AndroidManifest.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/plugins/Osmand-RouteSteps/proguard-project.txt b/plugins/Osmand-RouteSteps/proguard-project.txt new file mode 100644 index 0000000000..f2fe1559a2 --- /dev/null +++ b/plugins/Osmand-RouteSteps/proguard-project.txt @@ -0,0 +1,20 @@ +# To enable ProGuard in your project, edit project.properties +# to define the proguard.config property as described in that file. +# +# Add project specific ProGuard rules here. +# By default, the flags in this file are appended to flags specified +# in ${sdk.dir}/tools/proguard/proguard-android.txt +# You can edit the include path and order by changing the ProGuard +# include property in project.properties. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# Add any project specific keep options here: + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} diff --git a/plugins/Osmand-RouteSteps/project.properties b/plugins/Osmand-RouteSteps/project.properties new file mode 100644 index 0000000000..4ab125693c --- /dev/null +++ b/plugins/Osmand-RouteSteps/project.properties @@ -0,0 +1,14 @@ +# This file is automatically generated by Android Tools. +# Do not modify this file -- YOUR CHANGES WILL BE ERASED! +# +# This file must be checked in Version Control Systems. +# +# To customize properties used by the Ant build system edit +# "ant.properties", and override values to adapt the script to your +# project structure. +# +# To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home): +#proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt + +# Project target. +target=android-19 diff --git a/plugins/Osmand-RouteSteps/res/drawable-hdpi/ic_launcher.png b/plugins/Osmand-RouteSteps/res/drawable-hdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..96a442e5b8e9394ccf50bab9988cb2316026245d GIT binary patch literal 9397 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 R1%Utn002ovPDHLkV1fm{4kiEq literal 0 HcmV?d00001 diff --git a/plugins/Osmand-RouteSteps/res/drawable-ldpi/ic_launcher.png b/plugins/Osmand-RouteSteps/res/drawable-ldpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..99238729d8753585237a65b91c7cde426c90baef GIT binary patch literal 2729 zcmV;a3Rd-rP)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L02dMf02dMgXP?qi00007bV*G`2ipt~ z7YY(F`_Sb8017EdL_t(o!?l=uuwPYm$3JVI^ZWho?|E--5|R`W6G$K=z*GYY6wr=V zEHLAs& zdz|M!d-acV?}e00xbt)P@m$z^s#fV*k#SgXB4;4pFT(w@xz)o_l~EwJ+$tL zNA}&l{N}CqzO8^B)M@;g^aHT<;0E84yNhu{N${eJ-?VeV-AUA6q$<9trt}a{U45TFsn9Sc6zfp($j8t2s@dE zQIjAUBn)CY?J)11fS?@`1`%Nx6NL#$Z0Usk7(Wr4STgIdiMw7!!ptNtBYrmL$nY(+rzsSZg&+Q(Pts z$DVsczi`HH^ri&>wJ9FAf9p&De1OdZH!;t<6V-n!4>5RGht>sq2l{?Fa6~?LaQm$9 z9qH`6yjb)4PhAIa?cbkttcHHF=ZgDOlWSCc`VaTB=hp)doVH}{g9J0z z{OG}rx?{_LG>2kT!Sf8oqKD@j#DD_oG}lq0#F53O8AgO^qo8w6oGP^*|D}1SXUk7K zb?V*KdY9iC3G_f;Tb_CB@TqH89N00=&{%tU%c0Z4WB~ApI*tQ-I@60@=bck#y}*T6 z_R1w!Pet&si6M<0X$&@1Z04|OhSLnh!5CX8&N-6E$;g1?;NIcJ!9M@ET6asjDj{j& zq&1Y$9Lh>#7>)s?>Lr;~P$jdD%&Hf*{8+t^cGKb)1Y-;$qr{4!>WIP!krE;qzA0ie zH@2QMam0}lG!0Rtu2d9Jhk!tC3eGyD1bu2t1_*& znD@VXDUHfZeztiTyAJ-0ENzq8EH4L{qM4F8hdRitic@fz!#TyN5{GdxF+&jQ7@$l6 zDL9*@Sw_A%6O4hL>RjG2?L1CC{!f_IyJ&pj%>v_aJj(1 zDV}G@zl}MeEcR)=MBzMj!s=}<^ zGdSzCOStu`m-76U#|fg&xSoPB<%f3P={hr%`p}{nf+USozR$hK7$G3*$9{2!b{no?XWStM8y#?82#n6GW?7)Zsa` zwL!I2XXA1vS#2G_6uFg)uUPcjE9|${UC9d@_w0xRuPYew-0*;GI=nx){rvMUu(54@ z+`1-W3}TdRyVvvF=0|BZ+svA_fYc`R9sDKlJoSV8^oiAcd+nE5_tZVqd%^b&f>BQz zGBTL-|M&8(H=O;xQ=e^A=e^iz^4+6@yKlSf%8Tv#hqkcmS4VRN-hS^#_`+wt2f#&F zoaoiN8`U^;=?_+H4ewj^5AQhK+SC`?KJ^PeVnke)?{!I}B<(sU&3He<>2?MWWu%2Z z{8ENr@N(U$qFI3=v-$PTS07#Z@0&k3QOG}i+j)HBi%%Z=`tcW^UCejx+4hFXpTF~> z6_NH`)m1V01y2Phns1H@BEv%=rBZ<`6)ly05y^ASTBkN~;?g=vr9P;=m7CX$|G)Zgm+aiXZ~uaNy+(I$oqD4|rBaJZ zrIPx7!4u>8HcdFJC#TdexmzBje$|6hQ{z`W;j zcxEL`omomE>(d+x8Qd8VhX=5+`P#GV58evMdoP*&lTI}9fl8%JsjEQ2FXPkIUzaTk zaNk#c^;wYqAW|>-DX%0C?1}#Zoic`Di%g1kcS7qn!=Ut&(rcy6c zEP5*Vl6GWL2O9olCKpP^6ib5fJT(SUCo~-tix$s^a?N*TuSl&?#P^M4X@Pb!L1}-x z&WA*#CC1=+BE_;txmKWDDTfD-_Gz_Ib&Z~KTI()QX%w`p;#2A}c%F3r-vD)*@$xL` zN{seU@}^QO)(>T_xfWpdaeovRE7^CZPMr}#|!d*|R6{H=+M{MV$Mp3LNPKT_t5 z(-+S5yz=?J*A+!U{KSTh8xFttSbqQdFU>bSjT8Q$)Ky#JnbOd}k;7ZR_W37=|NQzh jFn-Lp|K;W1YU6(Zg`N}+zmb=x00000NkvXXu0mjf_|!_9 literal 0 HcmV?d00001 diff --git a/plugins/Osmand-RouteSteps/res/drawable-ldpi/icon.png b/plugins/Osmand-RouteSteps/res/drawable-ldpi/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..c99e8a25f70d64ed2ba830c9deb80f940932e220 GIT binary patch literal 2683 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 literal 0 HcmV?d00001 diff --git a/plugins/Osmand-RouteSteps/res/drawable-mdpi/icon.png b/plugins/Osmand-RouteSteps/res/drawable-mdpi/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..15eeaf60c26c5f3fb4f9c8d515aa671f28636c09 GIT binary patch literal 4055 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 JPDHLkV1ij1!pZ;u literal 0 HcmV?d00001 diff --git a/plugins/Osmand-RouteSteps/res/drawable-xhdpi/ic_launcher.png b/plugins/Osmand-RouteSteps/res/drawable-xhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..71c6d760f05183ef8a47c614d8d13380c8528499 GIT binary patch literal 14383 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 literal 0 HcmV?d00001 diff --git a/plugins/Osmand-RouteSteps/res/drawable-xhdpi/icon.png b/plugins/Osmand-RouteSteps/res/drawable-xhdpi/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..8c9caab40cce7fcd6a0ffce41ca86b75c2b89def GIT binary patch literal 10436 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 uZTwhy^G{X)pKc%hCjAtGk9Yh30t^84=xnuG?ik + + + + + \ No newline at end of file diff --git a/plugins/Osmand-RouteSteps/res/values-af/strings.xml b/plugins/Osmand-RouteSteps/res/values-af/strings.xml new file mode 100644 index 0000000000..00f84ee5f0 --- /dev/null +++ b/plugins/Osmand-RouteSteps/res/values-af/strings.xml @@ -0,0 +1,7 @@ + +Nee + Ja + OsmAnd is nie geïnstalleer nie + OsmAnd Parkering + OsmAnd Parkering inlegmodule is geïnstalleer en aangeskakel in OsmAnd verstellings. + diff --git a/plugins/Osmand-RouteSteps/res/values-ar/strings.xml b/plugins/Osmand-RouteSteps/res/values-ar/strings.xml new file mode 100644 index 0000000000..66b615414f --- /dev/null +++ b/plugins/Osmand-RouteSteps/res/values-ar/strings.xml @@ -0,0 +1,7 @@ + +ليس + نعم + لم يتم تثبيت OsmAnd + وقوف السيارات + يتم تثبيت البرنامج المساعد OsmAnd وقوف السيارات وتمكينها في إعدادات OsmAnd + diff --git a/plugins/Osmand-RouteSteps/res/values-bg/strings.xml b/plugins/Osmand-RouteSteps/res/values-bg/strings.xml new file mode 100644 index 0000000000..60cea88590 --- /dev/null +++ b/plugins/Osmand-RouteSteps/res/values-bg/strings.xml @@ -0,0 +1,8 @@ + + + Не + Да + Приложението OsmAnd не е инсталирано + Добавка Parking за OsmAnd + Добавката Parking е инсталирана и включена в настройките на OsmAnd. + \ No newline at end of file diff --git a/plugins/Osmand-RouteSteps/res/values-bs/strings.xml b/plugins/Osmand-RouteSteps/res/values-bs/strings.xml new file mode 100644 index 0000000000..7ebdef8fd4 --- /dev/null +++ b/plugins/Osmand-RouteSteps/res/values-bs/strings.xml @@ -0,0 +1,8 @@ + + + Ne + Da + OsmAnd is not installed + OsmAnd Parking Plugin + OsmAnd Parking Plugin is installed and enabled in OsmAnd settings. + diff --git a/plugins/Osmand-RouteSteps/res/values-ca/strings.xml b/plugins/Osmand-RouteSteps/res/values-ca/strings.xml new file mode 100644 index 0000000000..c9bc1274ce --- /dev/null +++ b/plugins/Osmand-RouteSteps/res/values-ca/strings.xml @@ -0,0 +1,7 @@ + + +No +L\'OsmAnd no està instal·lat +OsmAnd Aparcament +El connector OsmAnd Aparcament està instal·lat i activat a la configuració de l\'OsmAnd. + diff --git a/plugins/Osmand-RouteSteps/res/values-cs/strings.xml b/plugins/Osmand-RouteSteps/res/values-cs/strings.xml new file mode 100644 index 0000000000..e3df9fb7f7 --- /dev/null +++ b/plugins/Osmand-RouteSteps/res/values-cs/strings.xml @@ -0,0 +1,8 @@ + + + Ne + Ano + OsmAnd není nainstalován + OsmAnd parkování + OsmAnd modul parkování je nainstalován a aktivován v nastavení OsmAnd. + \ No newline at end of file diff --git a/plugins/Osmand-RouteSteps/res/values-cy/strings.xml b/plugins/Osmand-RouteSteps/res/values-cy/strings.xml new file mode 100644 index 0000000000..81fcead2f0 --- /dev/null +++ b/plugins/Osmand-RouteSteps/res/values-cy/strings.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/plugins/Osmand-RouteSteps/res/values-da/strings.xml b/plugins/Osmand-RouteSteps/res/values-da/strings.xml new file mode 100644 index 0000000000..973e1604b5 --- /dev/null +++ b/plugins/Osmand-RouteSteps/res/values-da/strings.xml @@ -0,0 +1,7 @@ + +Nej + Ja + OsmAnd er ikke installeret + OsmAnd parkering + OsmAnd udvidelsen Parkering er installeret og aktiveret i OsmAnd indstillinger. + diff --git a/plugins/Osmand-RouteSteps/res/values-de/strings.xml b/plugins/Osmand-RouteSteps/res/values-de/strings.xml new file mode 100644 index 0000000000..f37e97c596 --- /dev/null +++ b/plugins/Osmand-RouteSteps/res/values-de/strings.xml @@ -0,0 +1,7 @@ + +Nein + Ja + OsmAnd ist nicht installiert + OsmAnd Parkplatz-Plugin + OsmAnd Parkplatz-Plugin wurde installiert und in den OsmAnd-Einstellungen aktiviert. + diff --git a/plugins/Osmand-RouteSteps/res/values-es/strings.xml b/plugins/Osmand-RouteSteps/res/values-es/strings.xml new file mode 100644 index 0000000000..cefb255837 --- /dev/null +++ b/plugins/Osmand-RouteSteps/res/values-es/strings.xml @@ -0,0 +1,7 @@ + +No + + OsmAnd no está instalado + Aparcamiento de OsmAnd + El Plugin Aparcamiento de OsmAnd está instalado y activado en la configuración de OsmAnd. + diff --git a/plugins/Osmand-RouteSteps/res/values-eu/strings.xml b/plugins/Osmand-RouteSteps/res/values-eu/strings.xml new file mode 100644 index 0000000000..d248d687b0 --- /dev/null +++ b/plugins/Osmand-RouteSteps/res/values-eu/strings.xml @@ -0,0 +1,7 @@ + +Ez + Bai + OsmAnd ez dago instalatuta + OsmAnd Parking Plugin + OsmAnd Parking Plugin instalatuta eta aktibatuta dago OsmAnd-en konfigurazioan. + diff --git a/plugins/Osmand-RouteSteps/res/values-fa/strings.xml b/plugins/Osmand-RouteSteps/res/values-fa/strings.xml new file mode 100644 index 0000000000..70e3a99dc6 --- /dev/null +++ b/plugins/Osmand-RouteSteps/res/values-fa/strings.xml @@ -0,0 +1,7 @@ + +بله + خیر + OsmAnd نصب نشده است + پارکینگ OsmAnd + افزونه پارکینگ OsmAnd نصب شده و در تنظیمات OsmAnd فعال شده است. + diff --git a/plugins/Osmand-RouteSteps/res/values-fi/strings.xml b/plugins/Osmand-RouteSteps/res/values-fi/strings.xml new file mode 100644 index 0000000000..b77225eed0 --- /dev/null +++ b/plugins/Osmand-RouteSteps/res/values-fi/strings.xml @@ -0,0 +1,8 @@ + + +Ei + Kyllä + OsmAnd ei ole asennettu + OsmAnd Parking + OsmAnd Parking lisäosa on asennettu ja aktivoitu OsmAnd:in asetuksista. + diff --git a/plugins/Osmand-RouteSteps/res/values-fr/strings.xml b/plugins/Osmand-RouteSteps/res/values-fr/strings.xml new file mode 100644 index 0000000000..9b7e9a2a5e --- /dev/null +++ b/plugins/Osmand-RouteSteps/res/values-fr/strings.xml @@ -0,0 +1,7 @@ + +Non + Oui + OsmAnd n\'est pas installé + Greffon Parking pour OsmAnd + Le greffon Parking est installé et activé dans les paramètres de OsmAnd. + diff --git a/plugins/Osmand-RouteSteps/res/values-he/strings.xml b/plugins/Osmand-RouteSteps/res/values-he/strings.xml new file mode 100644 index 0000000000..bd9bf023f8 --- /dev/null +++ b/plugins/Osmand-RouteSteps/res/values-he/strings.xml @@ -0,0 +1,8 @@ + + +לא + כן + התכנית OsmAnd אינה מותקנת + חנייה עם OsmAnd + תוסף החנייה של OsmAnd מותקן ומופעל בהגדרות של OsmAnd. + diff --git a/plugins/Osmand-RouteSteps/res/values-hi/strings.xml b/plugins/Osmand-RouteSteps/res/values-hi/strings.xml new file mode 100644 index 0000000000..c247215176 --- /dev/null +++ b/plugins/Osmand-RouteSteps/res/values-hi/strings.xml @@ -0,0 +1,8 @@ + + + नही + हा + OsmAnd is not installed + ओएसएमएएनडी पार्किंग प्लगिन + OsmAnd Parking Plugin is installed and enabled in OsmAnd settings. + diff --git a/plugins/Osmand-RouteSteps/res/values-hr/strings.xml b/plugins/Osmand-RouteSteps/res/values-hr/strings.xml new file mode 100644 index 0000000000..34253e4f3d --- /dev/null +++ b/plugins/Osmand-RouteSteps/res/values-hr/strings.xml @@ -0,0 +1,8 @@ + + +Ne + Da + OsmAnd nije instaliran + OsmAnd Parkiralište + OsmAnd dodatak za parkirališta je instaliran i omogućen u OsmAnd postavkama. + diff --git a/plugins/Osmand-RouteSteps/res/values-hu/strings.xml b/plugins/Osmand-RouteSteps/res/values-hu/strings.xml new file mode 100644 index 0000000000..126b300b69 --- /dev/null +++ b/plugins/Osmand-RouteSteps/res/values-hu/strings.xml @@ -0,0 +1,8 @@ + + + Nem + Igen + Az OsmAnd nincs feltelepítve + OsmAnd Parkolás + OsmAnd Parkolási Bővítmény feltelepítve és engedélyezve az OsmAnd beállításaiban. + \ No newline at end of file diff --git a/plugins/Osmand-RouteSteps/res/values-hy/strings.xml b/plugins/Osmand-RouteSteps/res/values-hy/strings.xml new file mode 100644 index 0000000000..5d916d6389 --- /dev/null +++ b/plugins/Osmand-RouteSteps/res/values-hy/strings.xml @@ -0,0 +1,8 @@ + + + No + Yes + OsmAnd is not installed + OsmAnd Parking Plugin + OsmAnd Parking Plugin is installed and enabled in OsmAnd settings. + \ No newline at end of file diff --git a/plugins/Osmand-RouteSteps/res/values-id/strings.xml b/plugins/Osmand-RouteSteps/res/values-id/strings.xml new file mode 100644 index 0000000000..5d916d6389 --- /dev/null +++ b/plugins/Osmand-RouteSteps/res/values-id/strings.xml @@ -0,0 +1,8 @@ + + + No + Yes + OsmAnd is not installed + OsmAnd Parking Plugin + OsmAnd Parking Plugin is installed and enabled in OsmAnd settings. + \ No newline at end of file diff --git a/plugins/Osmand-RouteSteps/res/values-it/strings.xml b/plugins/Osmand-RouteSteps/res/values-it/strings.xml new file mode 100644 index 0000000000..0bc0d6a835 --- /dev/null +++ b/plugins/Osmand-RouteSteps/res/values-it/strings.xml @@ -0,0 +1,7 @@ + +No + Si + OsmAnd non è installato + OsmAnd Parking + Il Plugin Parcheggio per OsmAnd è installato e abilitato nelle impostazioni di OsmAnd. + diff --git a/plugins/Osmand-RouteSteps/res/values-ja/strings.xml b/plugins/Osmand-RouteSteps/res/values-ja/strings.xml new file mode 100644 index 0000000000..603d75d5d5 --- /dev/null +++ b/plugins/Osmand-RouteSteps/res/values-ja/strings.xml @@ -0,0 +1,7 @@ + +いいえ + はい + OsmAndがインストールされていません + OsmAnd駐車場 + OsmAnd駐車場プラグインはインストールされており、設定は有効です。 + diff --git a/plugins/Osmand-RouteSteps/res/values-ka/strings.xml b/plugins/Osmand-RouteSteps/res/values-ka/strings.xml new file mode 100644 index 0000000000..0120525c58 --- /dev/null +++ b/plugins/Osmand-RouteSteps/res/values-ka/strings.xml @@ -0,0 +1,8 @@ + + + არა + დიახ + OsmAnd ჩადგმული არაა + OsmAnd პარკინგი + OsmAnd-ის პარკინგის დამატება ჩადგმულია და ჩართულია პარამეტრებში. + \ No newline at end of file diff --git a/plugins/Osmand-RouteSteps/res/values-lt/strings.xml b/plugins/Osmand-RouteSteps/res/values-lt/strings.xml new file mode 100644 index 0000000000..c7640f8192 --- /dev/null +++ b/plugins/Osmand-RouteSteps/res/values-lt/strings.xml @@ -0,0 +1,7 @@ + +Ne + Taip + OsmAnd programa neįdiegta + OsmAnd parkavimo įskiepis + OsmAnd Parkavimo įskiepis įdiegiamas ir aktyvuojamas OsmAnd nustatymuose. + diff --git a/plugins/Osmand-RouteSteps/res/values-lv/strings.xml b/plugins/Osmand-RouteSteps/res/values-lv/strings.xml new file mode 100644 index 0000000000..4341d84c65 --- /dev/null +++ b/plugins/Osmand-RouteSteps/res/values-lv/strings.xml @@ -0,0 +1,8 @@ + + + + + OsmAnd nav instalēts + OsmAnd Parkošanās + OsmAnd parkošanās spraudnis ir instalēts un iespējots OsmAnd uzstādījumos. + \ No newline at end of file diff --git a/plugins/Osmand-RouteSteps/res/values-mn/strings.xml b/plugins/Osmand-RouteSteps/res/values-mn/strings.xml new file mode 100644 index 0000000000..9c5ad89af1 --- /dev/null +++ b/plugins/Osmand-RouteSteps/res/values-mn/strings.xml @@ -0,0 +1,3 @@ + + + diff --git a/plugins/Osmand-RouteSteps/res/values-mr/strings.xml b/plugins/Osmand-RouteSteps/res/values-mr/strings.xml new file mode 100644 index 0000000000..bb2f935183 --- /dev/null +++ b/plugins/Osmand-RouteSteps/res/values-mr/strings.xml @@ -0,0 +1,8 @@ + + + नाही + हो + ओएसएमएएनडि इन्स्टॉल केलेले नाही + ओएसएमएएनडि पार्किंग + ओएसएमएएनडि पार्किंग प्लगिन इन्स्टॉल आणि चालू केले आहे. + \ No newline at end of file diff --git a/plugins/Osmand-RouteSteps/res/values-nb/strings.xml b/plugins/Osmand-RouteSteps/res/values-nb/strings.xml new file mode 100644 index 0000000000..d4623fe95f --- /dev/null +++ b/plugins/Osmand-RouteSteps/res/values-nb/strings.xml @@ -0,0 +1,7 @@ + +Ja + Nei + OsmAnd er ikke installert + OsmAnd - parkering + OsmAnd-pluginen er installert og aktivert i innstillingene for OsmAnd. + diff --git a/plugins/Osmand-RouteSteps/res/values-nl/strings.xml b/plugins/Osmand-RouteSteps/res/values-nl/strings.xml new file mode 100644 index 0000000000..7386549e61 --- /dev/null +++ b/plugins/Osmand-RouteSteps/res/values-nl/strings.xml @@ -0,0 +1,7 @@ + +Nee + Ja + OsmAnd is niet geïnstalleerd + OsmAnd parkeerplugin + OsmAnd parkeerplugin is geïnstalleerd en geactiveerd in de OsmAnd-instellingen. + diff --git a/plugins/Osmand-RouteSteps/res/values-pl/strings.xml b/plugins/Osmand-RouteSteps/res/values-pl/strings.xml new file mode 100644 index 0000000000..ae0f030549 --- /dev/null +++ b/plugins/Osmand-RouteSteps/res/values-pl/strings.xml @@ -0,0 +1,7 @@ + +Nie + Tak + Osmand nie jest zainstalowany + Wtyczka parkowania dla OsmAnd + Wtyczka parkowania jest zainstalowana i włączona w ustawieniach OsmAnd. + diff --git a/plugins/Osmand-RouteSteps/res/values-pt/strings.xml b/plugins/Osmand-RouteSteps/res/values-pt/strings.xml new file mode 100644 index 0000000000..9d28f8d8c6 --- /dev/null +++ b/plugins/Osmand-RouteSteps/res/values-pt/strings.xml @@ -0,0 +1,7 @@ + +Não + Sim + Osmand não está instalado + OsmAnd Parking Plugin + OsmAnd Parking Plugin está instalado e activado nas opções OsmAnd. + diff --git a/plugins/Osmand-RouteSteps/res/values-ro/strings.xml b/plugins/Osmand-RouteSteps/res/values-ro/strings.xml new file mode 100644 index 0000000000..5d0369ee36 --- /dev/null +++ b/plugins/Osmand-RouteSteps/res/values-ro/strings.xml @@ -0,0 +1,7 @@ + +Nu + Da + OsmAnd nu este instalat + OsmAnd Parking + Plugin-ul OsmAnd Parking este instalat și activat în setările OsmAnd. + diff --git a/plugins/Osmand-RouteSteps/res/values-ru/strings.xml b/plugins/Osmand-RouteSteps/res/values-ru/strings.xml new file mode 100644 index 0000000000..b70765b9e5 --- /dev/null +++ b/plugins/Osmand-RouteSteps/res/values-ru/strings.xml @@ -0,0 +1,8 @@ + + + Нет + Да + OsmAnd не установлен + Плагин парковки OsmAnd + Плагин парковки установлен и включен в настройках OsmAnd. + diff --git a/plugins/Osmand-RouteSteps/res/values-sc/strings.xml b/plugins/Osmand-RouteSteps/res/values-sc/strings.xml new file mode 100644 index 0000000000..058296440b --- /dev/null +++ b/plugins/Osmand-RouteSteps/res/values-sc/strings.xml @@ -0,0 +1,7 @@ + +Nono + Eja + OsmAnd no est installau + OsmAnd Parchezu + OsmAnd Parchezu est installau e insertau in sas impostaduras de OsmAnd. + diff --git a/plugins/Osmand-RouteSteps/res/values-sk/strings.xml b/plugins/Osmand-RouteSteps/res/values-sk/strings.xml new file mode 100644 index 0000000000..0b3b5ad7f5 --- /dev/null +++ b/plugins/Osmand-RouteSteps/res/values-sk/strings.xml @@ -0,0 +1,8 @@ + + + Nie + Áno + Aplikácia OsmAnd nie je nainštalovaná + OsmAnd parkovanie + Parkovací zásuvný modul pre OsmAnd je nainštalovaný a povolený v nastaveniach aplikácie OsmAnd. + \ No newline at end of file diff --git a/plugins/Osmand-RouteSteps/res/values-sl/strings.xml b/plugins/Osmand-RouteSteps/res/values-sl/strings.xml new file mode 100644 index 0000000000..d457d4abbb --- /dev/null +++ b/plugins/Osmand-RouteSteps/res/values-sl/strings.xml @@ -0,0 +1,8 @@ + + +Da + Ne + OsmAnd ni nameščen + OsmAnd parkiranje + Vtičnik OsmAnd parkiranje je nameščen in omogočen v OsmAnd nastavitvah. + diff --git a/plugins/Osmand-RouteSteps/res/values-sq/strings.xml b/plugins/Osmand-RouteSteps/res/values-sq/strings.xml new file mode 100644 index 0000000000..46ade86e72 --- /dev/null +++ b/plugins/Osmand-RouteSteps/res/values-sq/strings.xml @@ -0,0 +1,7 @@ + +Jo + Po + OsmAnd nuk është instaluar + OsmAnd Parkim + Plugini OsmAnd Parkim është instaluar dhe aktivizuar në OsmAnd settings. + diff --git a/plugins/Osmand-RouteSteps/res/values-sr/strings.xml b/plugins/Osmand-RouteSteps/res/values-sr/strings.xml new file mode 100644 index 0000000000..9c5ad89af1 --- /dev/null +++ b/plugins/Osmand-RouteSteps/res/values-sr/strings.xml @@ -0,0 +1,3 @@ + + + diff --git a/plugins/Osmand-RouteSteps/res/values-sv/strings.xml b/plugins/Osmand-RouteSteps/res/values-sv/strings.xml new file mode 100644 index 0000000000..669e231fa1 --- /dev/null +++ b/plugins/Osmand-RouteSteps/res/values-sv/strings.xml @@ -0,0 +1,8 @@ + + +Nej + Ja + OsmAnd är inte installerad + OsmAnd - parkering + OsmAnd-pluginen Parkering är installerad och aktiverad i inställningarna för OsmAnd. + diff --git a/plugins/Osmand-RouteSteps/res/values-tl/strings.xml b/plugins/Osmand-RouteSteps/res/values-tl/strings.xml new file mode 100644 index 0000000000..9c5ad89af1 --- /dev/null +++ b/plugins/Osmand-RouteSteps/res/values-tl/strings.xml @@ -0,0 +1,3 @@ + + + diff --git a/plugins/Osmand-RouteSteps/res/values-tr/strings.xml b/plugins/Osmand-RouteSteps/res/values-tr/strings.xml new file mode 100644 index 0000000000..01b39afda6 --- /dev/null +++ b/plugins/Osmand-RouteSteps/res/values-tr/strings.xml @@ -0,0 +1,5 @@ + + +Evet + Hayır + diff --git a/plugins/Osmand-RouteSteps/res/values-uk/strings.xml b/plugins/Osmand-RouteSteps/res/values-uk/strings.xml new file mode 100644 index 0000000000..a675bde927 --- /dev/null +++ b/plugins/Osmand-RouteSteps/res/values-uk/strings.xml @@ -0,0 +1,7 @@ + +Ні + Так + Osmand не встановлено + Паркування OsmAnd + Плагін Паркування OsmAnd встановлено та увімкнено у налаштуваннях OsmAnd. + diff --git a/plugins/Osmand-RouteSteps/res/values-zh-rCN/strings.xml b/plugins/Osmand-RouteSteps/res/values-zh-rCN/strings.xml new file mode 100644 index 0000000000..bc5d807565 --- /dev/null +++ b/plugins/Osmand-RouteSteps/res/values-zh-rCN/strings.xml @@ -0,0 +1,7 @@ + + + 没有 + OsmAnd 未安装 + OsmAnd 停车场 + OsmAnd 停车场插件已安装,并已在 OsmAnd 设置中启用。 + diff --git a/plugins/Osmand-RouteSteps/res/values-zh-rTW/strings.xml b/plugins/Osmand-RouteSteps/res/values-zh-rTW/strings.xml new file mode 100644 index 0000000000..1d42543909 --- /dev/null +++ b/plugins/Osmand-RouteSteps/res/values-zh-rTW/strings.xml @@ -0,0 +1,7 @@ + + + + OsmAnd 並未安裝 + OsmAnd 停車場外掛元件已安裝,並且已在 OsmAnd 設定裡啟用。 +OsmAnd 停車場 + diff --git a/plugins/Osmand-RouteSteps/res/values/strings.xml b/plugins/Osmand-RouteSteps/res/values/strings.xml new file mode 100644 index 0000000000..29cf78cf31 --- /dev/null +++ b/plugins/Osmand-RouteSteps/res/values/strings.xml @@ -0,0 +1,8 @@ + + + No + Yes + OsmAnd is not installed + OsmAnd Route steps + OsmAnd Route Steps Plugin is installed and enabled in OsmAnd settings. + \ No newline at end of file diff --git a/plugins/Osmand-RouteSteps/src/net/osmand/routeStepsPlugin/RouteStepsActivity.java b/plugins/Osmand-RouteSteps/src/net/osmand/routeStepsPlugin/RouteStepsActivity.java new file mode 100644 index 0000000000..df52d215a0 --- /dev/null +++ b/plugins/Osmand-RouteSteps/src/net/osmand/routeStepsPlugin/RouteStepsActivity.java @@ -0,0 +1,61 @@ +package net.osmand.routeStepsPlugin; + +import android.app.Activity; +import android.app.AlertDialog; +import android.content.ActivityNotFoundException; +import android.content.ComponentName; +import android.content.DialogInterface; +import android.content.Intent; +import android.content.pm.PackageManager; +import android.content.pm.ResolveInfo; +import android.net.Uri; +import android.os.Bundle; +import net.osmand.routeSteps.R; + +public class RouteStepsActivity extends Activity { + private static final String OSMAND_COMPONENT = "net.osmand"; //$NON-NLS-1$ + private static final String OSMAND_COMPONENT_PLUS = "net.osmand.plus"; //$NON-NLS-1$ + private static final String OSMAND_ACTIVITY = "net.osmand.plus.activities.MainMenuActivity"; //$NON-NLS-1$ + + /** Called when the activity is first created. */ + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.main); + + Intent intentPlus = new Intent(); + intentPlus.setComponent(new ComponentName(OSMAND_COMPONENT_PLUS, OSMAND_ACTIVITY)); + intentPlus.setFlags(Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED); + ResolveInfo resolved = getPackageManager().resolveActivity(intentPlus, PackageManager.MATCH_DEFAULT_ONLY); + if(resolved != null) { + stopService(intentPlus); + startActivity(intentPlus); + } else { + Intent intentNormal = new Intent(); + intentNormal.setFlags(Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED); + intentNormal.setComponent(new ComponentName(OSMAND_COMPONENT, OSMAND_ACTIVITY)); + resolved = getPackageManager().resolveActivity(intentNormal, PackageManager.MATCH_DEFAULT_ONLY); + if (resolved != null) { + stopService(intentNormal); + startActivity(intentNormal); + } else { + AlertDialog.Builder builder = new AlertDialog.Builder(this); + builder.setMessage(getString(R.string.osmand_app_not_found)); + builder.setPositiveButton(getString(R.string.default_buttons_yes), new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("market://search?q=pname:" + OSMAND_COMPONENT_PLUS)); + try { + stopService(intent); + startActivity(intent); + } catch (ActivityNotFoundException e) { + } + } + }); + builder.setNegativeButton(getString(R.string.default_buttons_no), null); + builder.show(); + } + } + } + +} \ No newline at end of file From defb4d4ab262c10a055b2b4239e199da35b71a37 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 11 Jun 2014 20:28:24 +0300 Subject: [PATCH 06/28] added saving functionality for gpx file. --- OsmAnd/src/net/osmand/plus/routesteps/RouteStepsPlugin.java | 1 + 1 file changed, 1 insertion(+) diff --git a/OsmAnd/src/net/osmand/plus/routesteps/RouteStepsPlugin.java b/OsmAnd/src/net/osmand/plus/routesteps/RouteStepsPlugin.java index 0e1aebc241..78ec0cb1ae 100644 --- a/OsmAnd/src/net/osmand/plus/routesteps/RouteStepsPlugin.java +++ b/OsmAnd/src/net/osmand/plus/routesteps/RouteStepsPlugin.java @@ -203,6 +203,7 @@ public class RouteStepsPlugin extends OsmandPlugin { } } pointsStatus = new ArrayList(pointsIntermediateState); + saveGPXFile(); } }); builder.setNegativeButton("Cancel", null); From b475a6314fd22724630c5a96b57ac38bc7ff292a Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 11 Jun 2014 20:30:50 +0300 Subject: [PATCH 07/28] reformated code --- .../plus/routesteps/RouteStepsPlugin.java | 73 ++++++++++--------- 1 file changed, 39 insertions(+), 34 deletions(-) diff --git a/OsmAnd/src/net/osmand/plus/routesteps/RouteStepsPlugin.java b/OsmAnd/src/net/osmand/plus/routesteps/RouteStepsPlugin.java index 78ec0cb1ae..b564d4dcd8 100644 --- a/OsmAnd/src/net/osmand/plus/routesteps/RouteStepsPlugin.java +++ b/OsmAnd/src/net/osmand/plus/routesteps/RouteStepsPlugin.java @@ -35,10 +35,9 @@ public class RouteStepsPlugin extends OsmandPlugin { private List pointsStatus; - - public RouteStepsPlugin(OsmandApplication app){ + public RouteStepsPlugin(OsmandApplication app) { this.app = app; - this.file = new File("/storage/emulated/0/osmand/tracks/","504.gpx"); + this.file = new File("/storage/emulated/0/osmand/tracks/", "504.gpx"); gpx = GPXUtilities.loadGPXFile(app, file); loadCurrentRoute(); pointsList = currentRoute.points; @@ -46,17 +45,21 @@ public class RouteStepsPlugin extends OsmandPlugin { getAllPointsStatus(); } - public void setGpxFile(GPXUtilities.GPXFile file){ this.gpx = file;} + public void setGpxFile(GPXUtilities.GPXFile file) { + this.gpx = file; + } - public void saveGPXFile(){ GPXUtilities.writeGpxFile(file,gpx,app); } + public void saveGPXFile() { + GPXUtilities.writeGpxFile(file, gpx, app); + } - public void setCurrentPoint(GPXUtilities.WptPt point){ + public void setCurrentPoint(GPXUtilities.WptPt point) { currentPoint = point; int number = findPointPosition(point); currentPointPos = number; } - public void setCurrentPoint(int number){ + public void setCurrentPoint(int number) { currentPoint = pointsList.get(number); currentPointPos = number; } @@ -84,7 +87,7 @@ public class RouteStepsPlugin extends OsmandPlugin { @Override public void registerLayers(MapActivity activity) { // remove old if existing after turn - if(routeStepsLayer != null) { + if (routeStepsLayer != null) { activity.getMapView().removeLayer(routeStepsLayer); } routeStepsLayer = new RouteStepsLayer(activity, this); @@ -92,13 +95,15 @@ public class RouteStepsPlugin extends OsmandPlugin { //registerWidget(activity); } - public List getPoints() {return currentRoute.points;} + public List getPoints() { + return currentRoute.points; + } - public boolean getPointStatus(int numberOfPoint){ + public boolean getPointStatus(int numberOfPoint) { Map map = gpx.getExtensionsToRead(); String mapKey = routeKey + POINT_KEY + numberOfPoint + VISITED_KEY; - if (map.containsKey(mapKey)){ + if (map.containsKey(mapKey)) { String value = map.get(mapKey); return (value.equals("true")); } @@ -107,36 +112,36 @@ public class RouteStepsPlugin extends OsmandPlugin { } //saves point status value to gpx extention file - public void setPointStatus(int numberOfPoint, boolean status){ + public void setPointStatus(int numberOfPoint, boolean status) { Map map = gpx.getExtensionsToWrite(); String mapKey = routeKey + POINT_KEY + numberOfPoint + VISITED_KEY; - if (status){ + if (status) { map.put(mapKey, "true"); } else { map.put(mapKey, "false"); } } - public GPXUtilities.WptPt getNextPoint(){ - if (pointsList.size() > currentPointPos +1){ - return pointsList.get(currentPointPos+1); - } else{ + public GPXUtilities.WptPt getNextPoint() { + if (pointsList.size() > currentPointPos + 1) { + return pointsList.get(currentPointPos + 1); + } else { return null; } } private void loadCurrentRoute() { - if (gpx.routes.size() < 1){ + if (gpx.routes.size() < 1) { return; } - Map map = gpx.getExtensionsToRead(); - if (map.containsKey(CURRENT_ROUTE_KEY)){ + Map map = gpx.getExtensionsToRead(); + if (map.containsKey(CURRENT_ROUTE_KEY)) { String routeName = map.get(CURRENT_ROUTE_KEY); int i = 0; - for(GPXUtilities.Route route : gpx.routes){ - if (route.name.equals(routeName)){ + for (GPXUtilities.Route route : gpx.routes) { + if (route.name.equals(routeName)) { currentRoute = route; routeKey = i; return; @@ -164,22 +169,22 @@ public class RouteStepsPlugin extends OsmandPlugin { } }; adapter.item(R.string.context_menu_item_show_route_points) - .icons( R.drawable.ic_action_parking_dark, R.drawable.ic_action_parking_light).listen(addListener).reg(); + .icons(R.drawable.ic_action_parking_dark, R.drawable.ic_action_parking_light).listen(addListener).reg(); } - private void getAllPointsStatus(){ - for(int i=0; i< pointsList.size(); i++){ + private void getAllPointsStatus() { + for (int i = 0; i < pointsList.size(); i++) { pointsStatus.add(getPointStatus(i)); } } - private void showStepsDialog(MapActivity mapActivity){ + private void showStepsDialog(MapActivity mapActivity) { List pointNames = new ArrayList(); //this array need to collect user selection during dialogue final List pointsIntermediateState = new ArrayList(pointsStatus); - for(GPXUtilities.WptPt point : pointsList){ + for (GPXUtilities.WptPt point : pointsList) { pointNames.add(point.name); } @@ -189,17 +194,17 @@ public class RouteStepsPlugin extends OsmandPlugin { @Override public void onClick(DialogInterface dialogInterface, int i, boolean isChecked) { //saving user choice - pointsIntermediateState.set(i,isChecked); + pointsIntermediateState.set(i, isChecked); } }); builder.setPositiveButton("OK", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialogInterface, int i) { - for (int j=0; j< pointsIntermediateState.size(); j++){ + for (int j = 0; j < pointsIntermediateState.size(); j++) { boolean newValue = pointsIntermediateState.get(j); //if values is the same - there's no need to save data - if (newValue != pointsStatus.get(j)){ - setPointStatus(j,newValue); + if (newValue != pointsStatus.get(j)) { + setPointStatus(j, newValue); } } pointsStatus = new ArrayList(pointsIntermediateState); @@ -222,10 +227,10 @@ public class RouteStepsPlugin extends OsmandPlugin { } - private int findPointPosition(GPXUtilities.WptPt point){ + private int findPointPosition(GPXUtilities.WptPt point) { int i = 0; - for (GPXUtilities.WptPt item : pointsList){ - if (item.equals(point)){ + for (GPXUtilities.WptPt item : pointsList) { + if (item.equals(point)) { return i; } i++; From 974f79b1f911a35544afaa2635edb4084e4cf8bf Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 11 Jun 2014 20:34:00 +0300 Subject: [PATCH 08/28] removed unused file --- .../Osmand-RouteSteps/proguard-project.txt | 20 ------------------- 1 file changed, 20 deletions(-) delete mode 100644 plugins/Osmand-RouteSteps/proguard-project.txt diff --git a/plugins/Osmand-RouteSteps/proguard-project.txt b/plugins/Osmand-RouteSteps/proguard-project.txt deleted file mode 100644 index f2fe1559a2..0000000000 --- a/plugins/Osmand-RouteSteps/proguard-project.txt +++ /dev/null @@ -1,20 +0,0 @@ -# To enable ProGuard in your project, edit project.properties -# to define the proguard.config property as described in that file. -# -# Add project specific ProGuard rules here. -# By default, the flags in this file are appended to flags specified -# in ${sdk.dir}/tools/proguard/proguard-android.txt -# You can edit the include path and order by changing the ProGuard -# include property in project.properties. -# -# For more details, see -# http://developer.android.com/guide/developing/tools/proguard.html - -# Add any project specific keep options here: - -# If your project uses WebView with JS, uncomment the following -# and specify the fully qualified class name to the JavaScript interface -# class: -#-keepclassmembers class fqcn.of.javascript.interface.for.webview { -# public *; -#} From 3dc9077fd90242d635d1acfa13459d6ff349bd0c Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 12 Jun 2014 14:07:28 +0300 Subject: [PATCH 09/28] fixed issue with wrong tag --- .../plus/routesteps/RouteStepsPlugin.java | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/OsmAnd/src/net/osmand/plus/routesteps/RouteStepsPlugin.java b/OsmAnd/src/net/osmand/plus/routesteps/RouteStepsPlugin.java index 78ec0cb1ae..e859c433a7 100644 --- a/OsmAnd/src/net/osmand/plus/routesteps/RouteStepsPlugin.java +++ b/OsmAnd/src/net/osmand/plus/routesteps/RouteStepsPlugin.java @@ -21,7 +21,6 @@ public class RouteStepsPlugin extends OsmandPlugin { private static final String VISITED_KEY = "IsVisited"; private static final String POINT_KEY = "Point"; private static final String CURRENT_ROUTE_KEY = "CurrentRoute"; - private int routeKey; private OsmandApplication app; @@ -94,10 +93,11 @@ public class RouteStepsPlugin extends OsmandPlugin { public List getPoints() {return currentRoute.points;} - public boolean getPointStatus(int numberOfPoint){ - Map map = gpx.getExtensionsToRead(); - String mapKey = routeKey + POINT_KEY + numberOfPoint + VISITED_KEY; + public boolean getPointStatus(int numberOfPoint) { + Map map = currentRoute.getExtensionsToRead(); + + String mapKey = POINT_KEY + numberOfPoint + VISITED_KEY; if (map.containsKey(mapKey)){ String value = map.get(mapKey); return (value.equals("true")); @@ -107,10 +107,10 @@ public class RouteStepsPlugin extends OsmandPlugin { } //saves point status value to gpx extention file - public void setPointStatus(int numberOfPoint, boolean status){ - Map map = gpx.getExtensionsToWrite(); + public void setPointStatus(int numberOfPoint, boolean status) { + Map map = currentRoute.getExtensionsToWrite(); - String mapKey = routeKey + POINT_KEY + numberOfPoint + VISITED_KEY; + String mapKey = POINT_KEY + numberOfPoint + VISITED_KEY; if (status){ map.put(mapKey, "true"); } else { @@ -138,14 +138,11 @@ public class RouteStepsPlugin extends OsmandPlugin { for(GPXUtilities.Route route : gpx.routes){ if (route.name.equals(routeName)){ currentRoute = route; - routeKey = i; return; } i++; } } - - routeKey = 0; currentRoute = gpx.routes.get(0); } From 266716bb55de3a175242855d5af8ed84077ac2f6 Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 12 Jun 2014 14:25:43 +0300 Subject: [PATCH 10/28] deleted unused file --- .../Osmand-RouteSteps/proguard-project.txt | 20 ------------------- 1 file changed, 20 deletions(-) delete mode 100644 plugins/Osmand-RouteSteps/proguard-project.txt diff --git a/plugins/Osmand-RouteSteps/proguard-project.txt b/plugins/Osmand-RouteSteps/proguard-project.txt deleted file mode 100644 index f2fe1559a2..0000000000 --- a/plugins/Osmand-RouteSteps/proguard-project.txt +++ /dev/null @@ -1,20 +0,0 @@ -# To enable ProGuard in your project, edit project.properties -# to define the proguard.config property as described in that file. -# -# Add project specific ProGuard rules here. -# By default, the flags in this file are appended to flags specified -# in ${sdk.dir}/tools/proguard/proguard-android.txt -# You can edit the include path and order by changing the ProGuard -# include property in project.properties. -# -# For more details, see -# http://developer.android.com/guide/developing/tools/proguard.html - -# Add any project specific keep options here: - -# If your project uses WebView with JS, uncomment the following -# and specify the fully qualified class name to the JavaScript interface -# class: -#-keepclassmembers class fqcn.of.javascript.interface.for.webview { -# public *; -#} From a8f7c49d3a4a9188435365b15ab3b7156be071f2 Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 13 Jun 2014 17:56:54 +0300 Subject: [PATCH 11/28] added viget for route steps. Added activity which starts when click on widget. --- OsmAnd/AndroidManifest.xml | 3 +- OsmAnd/res/layout/route_point_info.xml | 37 +++ OsmAnd/res/layout/route_steps_main.xml | 27 ++ OsmAnd/res/values-ca/strings.xml | 4 +- OsmAnd/res/values/strings.xml | 2 + OsmAnd/src/net/osmand/plus/OsmandPlugin.java | 5 +- .../plus/routesteps/RouteStepsActivity.java | 314 ++++++++++++++++++ .../plus/routesteps/RouteStepsPlugin.java | 220 +++++------- .../views/mapwidgets/StackWidgetView.java | 2 +- 9 files changed, 465 insertions(+), 149 deletions(-) create mode 100644 OsmAnd/res/layout/route_point_info.xml create mode 100644 OsmAnd/res/layout/route_steps_main.xml create mode 100644 OsmAnd/src/net/osmand/plus/routesteps/RouteStepsActivity.java diff --git a/OsmAnd/AndroidManifest.xml b/OsmAnd/AndroidManifest.xml index 3cce6bdbdb..d9115c377e 100644 --- a/OsmAnd/AndroidManifest.xml +++ b/OsmAnd/AndroidManifest.xml @@ -114,7 +114,8 @@ - + + diff --git a/OsmAnd/res/layout/route_point_info.xml b/OsmAnd/res/layout/route_point_info.xml new file mode 100644 index 0000000000..82f7446a92 --- /dev/null +++ b/OsmAnd/res/layout/route_point_info.xml @@ -0,0 +1,37 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/OsmAnd/res/layout/route_steps_main.xml b/OsmAnd/res/layout/route_steps_main.xml new file mode 100644 index 0000000000..c75202ca3a --- /dev/null +++ b/OsmAnd/res/layout/route_steps_main.xml @@ -0,0 +1,27 @@ + + + + + + +