From a23319480753bb3c9699d387e7ce5dfbe1fc58a1 Mon Sep 17 00:00:00 2001 From: Victor Shcherb Date: Thu, 2 Apr 2015 01:39:23 +0200 Subject: [PATCH] Save points as route points for distance measurement (if there is only 1 path) --- OsmAnd/res/values/strings.xml | 1 - .../DistanceCalculatorPlugin.java | 35 +++++++++++++------ 2 files changed, 24 insertions(+), 12 deletions(-) diff --git a/OsmAnd/res/values/strings.xml b/OsmAnd/res/values/strings.xml index bf66a5dec6..a67e0bc5c9 100644 --- a/OsmAnd/res/values/strings.xml +++ b/OsmAnd/res/values/strings.xml @@ -782,7 +782,6 @@ Finish editing Begin a new subtrack Clear all points - Save as GPX Open existing GPX Please wait until current task is finished Reduces noise in compass readings but adds inertia diff --git a/OsmAnd/src/net/osmand/plus/distancecalculator/DistanceCalculatorPlugin.java b/OsmAnd/src/net/osmand/plus/distancecalculator/DistanceCalculatorPlugin.java index a724df3cd9..9f95fa3805 100644 --- a/OsmAnd/src/net/osmand/plus/distancecalculator/DistanceCalculatorPlugin.java +++ b/OsmAnd/src/net/osmand/plus/distancecalculator/DistanceCalculatorPlugin.java @@ -154,7 +154,7 @@ public class DistanceCalculatorPlugin extends OsmandPlugin { if(measurementPoints.size() > 0) { list.add(R.string.distance_measurement_finish_subtrack); list.add(R.string.distance_measurement_clear_route); - list.add(R.string.distance_measurement_save_gpx); + list.add(R.string.shared_string_save_as_gpx); } list.add(R.string.distance_measurement_load_gpx); String[] items = new String[list.size()]; @@ -177,7 +177,7 @@ public class DistanceCalculatorPlugin extends OsmandPlugin { distanceMeasurementMode = 0; measurementPoints.clear(); calculateDistance(); - } else if (id == R.string.distance_measurement_save_gpx) { + } else if (id == R.string.shared_string_save_as_gpx) { saveGpx(activity); } else if (id == R.string.distance_measurement_load_gpx) { loadGpx(activity); @@ -234,13 +234,26 @@ public class DistanceCalculatorPlugin extends OsmandPlugin { final File dir = app.getAppPath(IndexConstants.GPX_INDEX_DIR); LinearLayout ll = new LinearLayout(activity); ll.setOrientation(LinearLayout.VERTICAL); - ll.setPadding(5, 5, 5, 5); + ll.setPadding(7, 7, 7, 7); final TextView tv = new TextView(activity); tv.setText(""); + tv.setTextColor(Color.RED); ll.addView(tv); final EditText editText = new EditText(activity); editText.setHint(R.string.gpx_file_name); + if(originalGPX != null && originalGPX.path != null){ + String p = originalGPX.path; + int li = p.lastIndexOf('/'); + if(li >= 0) { + p = p.substring(li + 1); + } + int pi = p.lastIndexOf('.'); + if(pi >= 0) { + p = p.substring(0, pi); + } + editText.setText(p); + } editText.addTextChangedListener(new TextWatcher() { @Override @@ -291,27 +304,27 @@ public class DistanceCalculatorPlugin extends OsmandPlugin { protected String doInBackground(Void... params) { toSave = new File(app.getAppPath(IndexConstants.GPX_INDEX_DIR), fileNameSave); GPXFile gpx; - boolean saveTrackToRte = false; - if(originalGPX != null) { + boolean saveTrackToRte = measurementPoints.size() <= 1; + if (originalGPX != null) { gpx = originalGPX; saveTrackToRte = originalGPX.routes.size() > 0 && originalGPX.tracks.size() == 0; gpx.tracks.clear(); gpx.routes.clear(); gpx.points.clear(); } else { - gpx = new GPXFile(); + gpx = new GPXFile(); } - for(int i = 0; i lt = measurementPoints.get(i); - if(lt.size() == 1) { + if (lt.size() == 1) { gpx.points.add(lt.getFirst()); - } else if(lt.size() > 1) { - if(saveTrackToRte) { + } else if (lt.size() > 1) { + if (saveTrackToRte) { Route rt = new Route(); gpx.routes.add(rt); rt.points.addAll(lt); } else { - if(gpx.tracks.size() == 0) { + if (gpx.tracks.size() == 0) { gpx.tracks.add(new Track()); } Track ts = gpx.tracks.get(gpx.tracks.size() - 1);