From 7c67e911ba4372ed8e8f45dedc714cb0da5fbc5f Mon Sep 17 00:00:00 2001 From: Dima-1 Date: Mon, 3 Feb 2020 15:35:10 +0200 Subject: [PATCH 01/46] Fix #6669 OSM Editing screen: show Save button above keyboard. --- OsmAnd/res/layout/fragment_edit_poi.xml | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/OsmAnd/res/layout/fragment_edit_poi.xml b/OsmAnd/res/layout/fragment_edit_poi.xml index 47907d2cbc..b9b3f0e2d8 100644 --- a/OsmAnd/res/layout/fragment_edit_poi.xml +++ b/OsmAnd/res/layout/fragment_edit_poi.xml @@ -19,7 +19,7 @@ app:contentInsetLeft="72dp" app:contentInsetStart="72dp"/> - @@ -64,7 +62,6 @@ + - - - + + + Date: Tue, 18 Feb 2020 17:18:45 +0200 Subject: [PATCH 02/46] Fix #7763 selected gpx file status --- .../net/osmand/plus/GpxSelectionHelper.java | 71 +++++++++++++++---- .../plus/myplaces/AvailableGPXFragment.java | 37 ++++++++-- 2 files changed, 89 insertions(+), 19 deletions(-) diff --git a/OsmAnd/src/net/osmand/plus/GpxSelectionHelper.java b/OsmAnd/src/net/osmand/plus/GpxSelectionHelper.java index 00a155c20f..3bef239a9d 100644 --- a/OsmAnd/src/net/osmand/plus/GpxSelectionHelper.java +++ b/OsmAnd/src/net/osmand/plus/GpxSelectionHelper.java @@ -440,10 +440,20 @@ public class GpxSelectionHelper { } } + private SelectedGpxFile getSelectedFileByLoadedFileName(String path) { + List newList = new ArrayList<>(selectedGPXFiles); + for (SelectedGpxFile s : newList) { + if (path.endsWith("/" + s.getLoadedName())) { + return s; + } + } + return null; + } + public SelectedGpxFile getSelectedFileByPath(String path) { List newList = new ArrayList<>(selectedGPXFiles); for (SelectedGpxFile s : newList) { - if (s.getGpxFile().path.equals(path)) { + if (s.getGpxFile() != null && s.getGpxFile().path.equals(path)) { return s; } } @@ -452,7 +462,10 @@ public class GpxSelectionHelper { public SelectedGpxFile getSelectedFileByName(String path) { for (SelectedGpxFile s : selectedGPXFiles) { - if (s.getGpxFile().path.endsWith("/" + path)) { + if (path.equals(s.getLoadedName())) { + return s; + } + if (s.getLoadedName().isEmpty() && s.getGpxFile().path.endsWith("/" + path)) { return s; } } @@ -591,10 +604,18 @@ public class GpxSelectionHelper { } } else { assert gpx != null; - sf = getSelectedFileByPath(gpx.path); + sf = getSelectedFileByLoadedFileName(gpx.path); + if (sf == null) { + sf = getSelectedFileByPath(gpx.path); + } displayed = sf != null; - if (show && sf == null) { - sf = new SelectedGpxFile(); + if (show) { + if (sf == null) { + sf = new SelectedGpxFile(); + List newSelectedGPXFiles = new ArrayList<>(selectedGPXFiles); + newSelectedGPXFiles.add(sf); + selectedGPXFiles = newSelectedGPXFiles; + } if (dataItem != null) { if (dataItem.getColor() != 0) { gpx.setColor(dataItem.getColor()); @@ -602,18 +623,23 @@ public class GpxSelectionHelper { sf.setJoinSegments(dataItem.isJoinSegments()); } sf.setGpxFile(gpx, app); + sf.setLoadedName(""); sf.notShowNavigationDialog = notShowNavigationDialog; sf.selectedByUser = selectedByUser; } } - if (displayed != show) { - List newSelectedGPXFiles = new ArrayList<>(selectedGPXFiles); - if (show) { - newSelectedGPXFiles.add(sf); - } else { - newSelectedGPXFiles.remove(sf); + if (sf != null && sf.getLoadedName().isEmpty()) { + if (displayed != show) { + List newSelectedGPXFiles = new ArrayList<>(selectedGPXFiles); + if (show) { + if (!newSelectedGPXFiles.contains(sf)) { + newSelectedGPXFiles.add(sf); + } + } else { + newSelectedGPXFiles.remove(sf); + } + selectedGPXFiles = newSelectedGPXFiles; } - selectedGPXFiles = newSelectedGPXFiles; } if (syncGroup) { syncGpxWithMarkers(gpx); @@ -624,6 +650,18 @@ public class GpxSelectionHelper { return sf; } + public void addRemoveSelected(boolean show, SelectedGpxFile sf) { + List newSelectedGPXFiles = new ArrayList<>(selectedGPXFiles); + if (show) { + if (!newSelectedGPXFiles.contains(sf)) { + newSelectedGPXFiles.add(sf); + } + } else { + newSelectedGPXFiles.remove(sf); + } + selectedGPXFiles = newSelectedGPXFiles; + } + public SelectedGpxFile selectGpxFile(GPXFile gpx, boolean show, boolean notShowNavigationDialog) { return selectGpxFile(gpx, show, notShowNavigationDialog, true, true, true); } @@ -689,6 +727,15 @@ public class GpxSelectionHelper { private boolean joinSegments; private boolean showCurrentTrack; private boolean splitProcessed = false; + private String loadedName = ""; + + public String getLoadedName() { + return loadedName; + } + + public void setLoadedName(String loadedName) { + this.loadedName = loadedName; + } public void setGpxFile(GPXFile gpxFile, OsmandApplication app) { this.gpxFile = gpxFile; diff --git a/OsmAnd/src/net/osmand/plus/myplaces/AvailableGPXFragment.java b/OsmAnd/src/net/osmand/plus/myplaces/AvailableGPXFragment.java index a5b0653c5b..43faa235ec 100644 --- a/OsmAnd/src/net/osmand/plus/myplaces/AvailableGPXFragment.java +++ b/OsmAnd/src/net/osmand/plus/myplaces/AvailableGPXFragment.java @@ -204,7 +204,9 @@ public class AvailableGPXFragment extends OsmandExpandableListFragment implement super.onPause(); updateEnable = false; if (operationTask != null) { - operationTask.cancel(true); + if (!(operationTask instanceof SelectGpxTask)) { + operationTask.cancel(true); + } } if (actionMode != null) { actionMode.finish(); @@ -615,6 +617,17 @@ public class AvailableGPXFragment extends OsmandExpandableListFragment implement private void runSelection(boolean showOnMap) { operationTask = new SelectGpxTask(showOnMap); originalSelectedItems.addAll(selectedItems); + for (GpxInfo gpxInfo : originalSelectedItems) { + if (!gpxInfo.currentlyRecordingTrack) { + final boolean visible = selectedItems.contains(gpxInfo); + SelectedGpxFile sf = selectedGpxHelper.getSelectedFileByName(gpxInfo.fileName); + if (sf == null) { + sf = new SelectedGpxFile(); + } + sf.setLoadedName(gpxInfo.fileName); + selectedGpxHelper.addRemoveSelected(visible, sf); + } + } operationTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, originalSelectedItems.toArray(new GpxInfo[originalSelectedItems.size()])); } @@ -678,7 +691,7 @@ public class AvailableGPXFragment extends OsmandExpandableListFragment implement AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); builder.setMessage(getString(R.string.local_index_action_do, actionButton.toLowerCase(), - selectedItems.size())); + String.valueOf(selectedItems.size()))); builder.setPositiveButton(actionButton, listener); builder.setNegativeButton(R.string.shared_string_cancel, null); builder.show(); @@ -1547,12 +1560,16 @@ public class AvailableGPXFragment extends OsmandExpandableListFragment implement @Override protected void onPreExecute() { - getActivity().setProgressBarIndeterminateVisibility(true); + if(getActivity()!=null){ + ((FavoritesActivity) getActivity()).setSupportProgressBarIndeterminateVisibility(true); + } } @Override protected void onPostExecute(String result) { - getActivity().setProgressBarIndeterminateVisibility(false); + if(getActivity()!=null) { + ((FavoritesActivity)getActivity()).setSupportProgressBarIndeterminateVisibility(false); + } Toast.makeText(getActivity(), result, Toast.LENGTH_LONG).show(); } } @@ -1593,12 +1610,16 @@ public class AvailableGPXFragment extends OsmandExpandableListFragment implement @Override protected void onPreExecute() { - getActivity().setProgressBarIndeterminateVisibility(true); + if (getActivity() != null) { + ((FavoritesActivity) getActivity()).setSupportProgressBarIndeterminateVisibility(true); + } } @Override protected void onPostExecute(String result) { - getActivity().setProgressBarIndeterminateVisibility(false); + if (getActivity() != null) { + ((FavoritesActivity) getActivity()).setSupportProgressBarIndeterminateVisibility(false); + } allGpxAdapter.refreshSelected(); allGpxAdapter.notifyDataSetChanged(); if (showOnMap && toShow != null) { @@ -1863,7 +1884,9 @@ public class AvailableGPXFragment extends OsmandExpandableListFragment implement SelectedGpxFile sgpx = getSelectedGpxFile(gpxInfo, app); GPXTrackAnalysis analysis = null; if (sgpx != null) { - analysis = sgpx.getTrackAnalysis(app); + if (sgpx.getLoadedName().isEmpty()) { + analysis = sgpx.getTrackAnalysis(app); + } } else if (gpxInfo.currentlyRecordingTrack) { analysis = app.getSavingTrackHelper().getCurrentTrack().getTrackAnalysis(app); } else if (gpxInfo.file != null) { From 2697095a9933f471bf63b76ecfac5ddd8b8e95b7 Mon Sep 17 00:00:00 2001 From: Dima-1 Date: Wed, 19 Feb 2020 12:40:44 +0200 Subject: [PATCH 03/46] Fix remarks remove loadingFileName --- .../net/osmand/plus/GpxSelectionHelper.java | 49 +++---------------- .../plus/myplaces/AvailableGPXFragment.java | 5 +- 2 files changed, 11 insertions(+), 43 deletions(-) diff --git a/OsmAnd/src/net/osmand/plus/GpxSelectionHelper.java b/OsmAnd/src/net/osmand/plus/GpxSelectionHelper.java index 3bef239a9d..31bec44718 100644 --- a/OsmAnd/src/net/osmand/plus/GpxSelectionHelper.java +++ b/OsmAnd/src/net/osmand/plus/GpxSelectionHelper.java @@ -440,16 +440,6 @@ public class GpxSelectionHelper { } } - private SelectedGpxFile getSelectedFileByLoadedFileName(String path) { - List newList = new ArrayList<>(selectedGPXFiles); - for (SelectedGpxFile s : newList) { - if (path.endsWith("/" + s.getLoadedName())) { - return s; - } - } - return null; - } - public SelectedGpxFile getSelectedFileByPath(String path) { List newList = new ArrayList<>(selectedGPXFiles); for (SelectedGpxFile s : newList) { @@ -462,10 +452,7 @@ public class GpxSelectionHelper { public SelectedGpxFile getSelectedFileByName(String path) { for (SelectedGpxFile s : selectedGPXFiles) { - if (path.equals(s.getLoadedName())) { - return s; - } - if (s.getLoadedName().isEmpty() && s.getGpxFile().path.endsWith("/" + path)) { + if (s.getGpxFile().path.endsWith("/" + path)) { return s; } } @@ -604,17 +591,11 @@ public class GpxSelectionHelper { } } else { assert gpx != null; - sf = getSelectedFileByLoadedFileName(gpx.path); - if (sf == null) { - sf = getSelectedFileByPath(gpx.path); - } + sf = getSelectedFileByPath(gpx.path); displayed = sf != null; if (show) { if (sf == null) { sf = new SelectedGpxFile(); - List newSelectedGPXFiles = new ArrayList<>(selectedGPXFiles); - newSelectedGPXFiles.add(sf); - selectedGPXFiles = newSelectedGPXFiles; } if (dataItem != null) { if (dataItem.getColor() != 0) { @@ -623,22 +604,13 @@ public class GpxSelectionHelper { sf.setJoinSegments(dataItem.isJoinSegments()); } sf.setGpxFile(gpx, app); - sf.setLoadedName(""); sf.notShowNavigationDialog = notShowNavigationDialog; sf.selectedByUser = selectedByUser; } } - if (sf != null && sf.getLoadedName().isEmpty()) { + if (sf != null && sf.isLoaded()) { if (displayed != show) { - List newSelectedGPXFiles = new ArrayList<>(selectedGPXFiles); - if (show) { - if (!newSelectedGPXFiles.contains(sf)) { - newSelectedGPXFiles.add(sf); - } - } else { - newSelectedGPXFiles.remove(sf); - } - selectedGPXFiles = newSelectedGPXFiles; + addRemoveSelected(show, sf); } } if (syncGroup) { @@ -727,15 +699,6 @@ public class GpxSelectionHelper { private boolean joinSegments; private boolean showCurrentTrack; private boolean splitProcessed = false; - private String loadedName = ""; - - public String getLoadedName() { - return loadedName; - } - - public void setLoadedName(String loadedName) { - this.loadedName = loadedName; - } public void setGpxFile(GPXFile gpxFile, OsmandApplication app) { this.gpxFile = gpxFile; @@ -745,6 +708,10 @@ public class GpxSelectionHelper { processPoints(app); } + public boolean isLoaded() { + return gpxFile.modifiedTime != 0 || gpxFile.showCurrentTrack; + } + public GPXTrackAnalysis getTrackAnalysis(OsmandApplication app) { if (modifiedTime != gpxFile.modifiedTime) { update(app); diff --git a/OsmAnd/src/net/osmand/plus/myplaces/AvailableGPXFragment.java b/OsmAnd/src/net/osmand/plus/myplaces/AvailableGPXFragment.java index 43faa235ec..74afe1ffc7 100644 --- a/OsmAnd/src/net/osmand/plus/myplaces/AvailableGPXFragment.java +++ b/OsmAnd/src/net/osmand/plus/myplaces/AvailableGPXFragment.java @@ -623,8 +623,9 @@ public class AvailableGPXFragment extends OsmandExpandableListFragment implement SelectedGpxFile sf = selectedGpxHelper.getSelectedFileByName(gpxInfo.fileName); if (sf == null) { sf = new SelectedGpxFile(); + sf.setGpxFile(new GPXFile(null), app); } - sf.setLoadedName(gpxInfo.fileName); + sf.getGpxFile().path = gpxInfo.file.getPath(); selectedGpxHelper.addRemoveSelected(visible, sf); } } @@ -1884,7 +1885,7 @@ public class AvailableGPXFragment extends OsmandExpandableListFragment implement SelectedGpxFile sgpx = getSelectedGpxFile(gpxInfo, app); GPXTrackAnalysis analysis = null; if (sgpx != null) { - if (sgpx.getLoadedName().isEmpty()) { + if (sgpx.isLoaded()) { analysis = sgpx.getTrackAnalysis(app); } } else if (gpxInfo.currentlyRecordingTrack) { From 0159bc77fa95313615435337965d6e4ee795e419 Mon Sep 17 00:00:00 2001 From: Dima-1 Date: Wed, 19 Feb 2020 15:01:52 +0200 Subject: [PATCH 04/46] Fix refactoring SelectGpxTask->GpxSelectionHelper --- .../net/osmand/plus/GpxSelectionHelper.java | 47 ++++++ .../plus/myplaces/AvailableGPXFragment.java | 148 ++++++++---------- 2 files changed, 113 insertions(+), 82 deletions(-) diff --git a/OsmAnd/src/net/osmand/plus/GpxSelectionHelper.java b/OsmAnd/src/net/osmand/plus/GpxSelectionHelper.java index 31bec44718..93eaf4fbb9 100644 --- a/OsmAnd/src/net/osmand/plus/GpxSelectionHelper.java +++ b/OsmAnd/src/net/osmand/plus/GpxSelectionHelper.java @@ -959,4 +959,51 @@ public class GpxSelectionHelper { return group != null && group.isGeneralTrack(); } } + + public interface SelectGpxTaskListener { + + void onProgressUpdate(GPXFile gpxFile); + + void onPreExecute(); + + void onPostExecute(); + + } + + public static class SelectGpxTask extends AsyncTask { + + private SelectGpxTaskListener gpxTaskListener; + + public SelectGpxTask(SelectGpxTaskListener gpxTaskListener) { + this.gpxTaskListener = gpxTaskListener; + } + + @Override + protected String doInBackground(GPXFile... params) { + for (GPXFile file : params) { + if (!file.showCurrentTrack) { + file = GPXUtilities.loadGPXFile(new File(file.path)); + } + publishProgress(file); + } + return ""; + } + + @Override + protected void onProgressUpdate(GPXFile... values) { + gpxTaskListener.onProgressUpdate(values[0]); + + } + + @Override + protected void onPreExecute() { + gpxTaskListener.onPreExecute(); + } + + @Override + protected void onPostExecute(String result) { + gpxTaskListener.onPostExecute(); + + } + } } diff --git a/OsmAnd/src/net/osmand/plus/myplaces/AvailableGPXFragment.java b/OsmAnd/src/net/osmand/plus/myplaces/AvailableGPXFragment.java index 74afe1ffc7..945d0c58fc 100644 --- a/OsmAnd/src/net/osmand/plus/myplaces/AvailableGPXFragment.java +++ b/OsmAnd/src/net/osmand/plus/myplaces/AvailableGPXFragment.java @@ -69,7 +69,6 @@ import net.osmand.plus.OsmandSettings; import net.osmand.plus.R; import net.osmand.plus.UiUtilities; import net.osmand.plus.activities.MapActivity; -import net.osmand.plus.activities.OsmandActionBarActivity; import net.osmand.plus.activities.OsmandBaseExpandableListAdapter; import net.osmand.plus.activities.SavingTrackHelper; import net.osmand.plus.activities.TrackActivity; @@ -87,7 +86,6 @@ import net.osmand.util.Algorithms; import java.io.File; import java.text.Collator; import java.text.DateFormat; -import java.text.MessageFormat; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; @@ -97,7 +95,6 @@ import java.util.HashSet; import java.util.LinkedHashMap; import java.util.LinkedHashSet; import java.util.List; -import java.util.Locale; import java.util.Map; import java.util.Set; import java.util.regex.Pattern; @@ -120,6 +117,7 @@ public class AvailableGPXFragment extends OsmandExpandableListFragment implement private GpxIndexesAdapter allGpxAdapter; private ContextMenuAdapter optionsMenuAdapter; private AsyncTask operationTask; + private AsyncTask selectGpxTask; private GpxSelectionHelper selectedGpxHelper; private OsmandApplication app; private boolean updateEnable; @@ -129,6 +127,7 @@ public class AvailableGPXFragment extends OsmandExpandableListFragment implement private View footerView; private boolean importing = false; private View emptyView; + private GpxSelectionHelper.SelectGpxTaskListener gpxTaskListener; @Override public void onAttach(Context activity) { @@ -204,9 +203,7 @@ public class AvailableGPXFragment extends OsmandExpandableListFragment implement super.onPause(); updateEnable = false; if (operationTask != null) { - if (!(operationTask instanceof SelectGpxTask)) { - operationTask.cancel(true); - } + operationTask.cancel(true); } if (actionMode != null) { actionMode.finish(); @@ -552,7 +549,9 @@ public class AvailableGPXFragment extends OsmandExpandableListFragment implement } public void showProgressBar() { - ((FavoritesActivity) getActivity()).setSupportProgressBarIndeterminateVisibility(true); + if (getActivity() != null) { + ((FavoritesActivity) getActivity()).setSupportProgressBarIndeterminateVisibility(true); + } } public void hideProgressBar() { @@ -583,8 +582,46 @@ public class AvailableGPXFragment extends OsmandExpandableListFragment implement showOnMapMode = true; selectedItems.clear(); selectedGroups.clear(); - final Set originalSelectedItems = allGpxAdapter.getSelectedGpx(); - selectedItems.addAll(originalSelectedItems); + final Set originalSelectedItems; + selectedItems.addAll(allGpxAdapter.getSelectedGpx()); + originalSelectedItems = new HashSet<>(); + for (GpxInfo gpxInfo : selectedItems) { + originalSelectedItems.add(gpxInfo.gpx); + } + gpxTaskListener = new GpxSelectionHelper.SelectGpxTaskListener() { + @Override + public void onProgressUpdate(GPXFile gpxFile) { + + final boolean visible = isContains(gpxFile); + selectedGpxHelper.selectGpxFile(gpxFile, visible, false); + allGpxAdapter.notifyDataSetInvalidated(); + } + + boolean isContains(GPXFile gpxFile) { + for (GpxInfo gpxInfo : selectedItems) { + if (gpxInfo.currentlyRecordingTrack && gpxFile.showCurrentTrack) { + return true; + } + if (gpxInfo.gpx.path.equals(gpxFile.path)) { + return true; + } + } + return false; + } + + @Override + public void onPreExecute() { + showProgressBar(); + } + + @Override + public void onPostExecute() { + hideProgressBar(); + allGpxAdapter.refreshSelected(); + allGpxAdapter.notifyDataSetChanged(); + } + }; + actionMode = getActionBarActivity().startSupportActionMode(new ActionMode.Callback() { @@ -607,29 +644,38 @@ public class AvailableGPXFragment extends OsmandExpandableListFragment implement @Override public boolean onActionItemClicked(ActionMode mode, MenuItem item) { - runSelection(false); + runSelection(); actionMode.finish(); allGpxAdapter.refreshSelected(); allGpxAdapter.notifyDataSetChanged(); return true; } - private void runSelection(boolean showOnMap) { - operationTask = new SelectGpxTask(showOnMap); - originalSelectedItems.addAll(selectedItems); - for (GpxInfo gpxInfo : originalSelectedItems) { + private void runSelection() { + selectGpxTask = new GpxSelectionHelper.SelectGpxTask(gpxTaskListener); + for (GpxInfo gpxInfo : selectedItems) { if (!gpxInfo.currentlyRecordingTrack) { final boolean visible = selectedItems.contains(gpxInfo); - SelectedGpxFile sf = selectedGpxHelper.getSelectedFileByName(gpxInfo.fileName); + SelectedGpxFile sf = selectedGpxHelper.getSelectedFileByName(gpxInfo.getFileName()); if (sf == null) { sf = new SelectedGpxFile(); sf.setGpxFile(new GPXFile(null), app); } sf.getGpxFile().path = gpxInfo.file.getPath(); selectedGpxHelper.addRemoveSelected(visible, sf); + originalSelectedItems.add(sf.getGpxFile()); + } else { + SelectedGpxFile sf = selectedGpxHelper.getSelectedCurrentRecordingTrack(); + if (sf == null) { + sf = new SelectedGpxFile(); + sf.setGpxFile(new GPXFile(null), app); + sf.getGpxFile().showCurrentTrack = true; + } + originalSelectedItems.add(sf.getGpxFile()); } } - operationTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, originalSelectedItems.toArray(new GpxInfo[originalSelectedItems.size()])); + selectGpxTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, + originalSelectedItems.toArray(new GPXFile[originalSelectedItems.size()])); } @Override @@ -897,7 +943,7 @@ public class AvailableGPXFragment extends OsmandExpandableListFragment implement @Override protected void onPreExecute() { - ((OsmandActionBarActivity) getActivity()).setSupportProgressBarIndeterminateVisibility(true); + showProgressBar(); listView.setEmptyView(null); allGpxAdapter.clear(); } @@ -929,9 +975,7 @@ public class AvailableGPXFragment extends OsmandExpandableListFragment implement protected void onPostExecute(List result) { this.result = result; allGpxAdapter.refreshSelected(); - if (getActivity() != null) { - ((OsmandActionBarActivity) getActivity()).setSupportProgressBarIndeterminateVisibility(false); - } + hideProgressBar(); listView.setEmptyView(emptyView); if (allGpxAdapter.getGroupCount() > 0 && allGpxAdapter.isShowingSelection()) { @@ -1561,76 +1605,16 @@ public class AvailableGPXFragment extends OsmandExpandableListFragment implement @Override protected void onPreExecute() { - if(getActivity()!=null){ - ((FavoritesActivity) getActivity()).setSupportProgressBarIndeterminateVisibility(true); - } + showProgressBar(); } @Override protected void onPostExecute(String result) { - if(getActivity()!=null) { - ((FavoritesActivity)getActivity()).setSupportProgressBarIndeterminateVisibility(false); - } + hideProgressBar(); Toast.makeText(getActivity(), result, Toast.LENGTH_LONG).show(); } } - public class SelectGpxTask extends AsyncTask { - - private boolean showOnMap; - private WptPt toShow; - - public SelectGpxTask(boolean showOnMap) { - this.showOnMap = showOnMap; - } - - @Override - protected String doInBackground(GpxInfo... params) { - for (GpxInfo info : params) { - if (!isCancelled()) { - if (!info.currentlyRecordingTrack) { - info.setGpx(GPXUtilities.loadGPXFile(info.file)); - } - publishProgress(info); - } - } - return ""; - } - - @Override - protected void onProgressUpdate(GpxInfo... values) { - for (GpxInfo g : values) { - final boolean visible = selectedItems.contains(g); - selectedGpxHelper.selectGpxFile(g.gpx, visible, false); - if (visible && toShow == null) { - toShow = g.gpx.findPointToShow(); - } - } - allGpxAdapter.notifyDataSetInvalidated(); - } - - @Override - protected void onPreExecute() { - if (getActivity() != null) { - ((FavoritesActivity) getActivity()).setSupportProgressBarIndeterminateVisibility(true); - } - } - - @Override - protected void onPostExecute(String result) { - if (getActivity() != null) { - ((FavoritesActivity) getActivity()).setSupportProgressBarIndeterminateVisibility(false); - } - allGpxAdapter.refreshSelected(); - allGpxAdapter.notifyDataSetChanged(); - if (showOnMap && toShow != null) { - getMyApplication().getSettings().setMapLocationToShow(toShow.lat, toShow.lon, - getMyApplication().getSettings().getLastKnownMapZoom()); - MapActivity.launchMapActivityMoveToTop(getActivity()); - } - } - } - private class SearchFilter extends Filter { @Override From ab8a90fac33d8f33845cb4f7075ed59d908b9ea3 Mon Sep 17 00:00:00 2001 From: Dima-1 Date: Wed, 19 Feb 2020 15:07:57 +0200 Subject: [PATCH 05/46] Fix refactoring SelectGpxTask->GpxSelectionHelper --- OsmAnd/src/net/osmand/plus/myplaces/AvailableGPXFragment.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OsmAnd/src/net/osmand/plus/myplaces/AvailableGPXFragment.java b/OsmAnd/src/net/osmand/plus/myplaces/AvailableGPXFragment.java index 80213355ca..945d0c58fc 100644 --- a/OsmAnd/src/net/osmand/plus/myplaces/AvailableGPXFragment.java +++ b/OsmAnd/src/net/osmand/plus/myplaces/AvailableGPXFragment.java @@ -202,7 +202,7 @@ public class AvailableGPXFragment extends OsmandExpandableListFragment implement public void onPause() { super.onPause(); updateEnable = false; - if (operationTask != null && !(operationTask instanceof SelectGpxTask)) { + if (operationTask != null) { operationTask.cancel(true); } if (actionMode != null) { From 93cfc83a4e7e4a10c698c1ec3a1d920010cb30d5 Mon Sep 17 00:00:00 2001 From: Dima-1 Date: Thu, 20 Feb 2020 17:04:53 +0200 Subject: [PATCH 06/46] Refactoring GpxSelectionHelper --- .../net/osmand/plus/GpxSelectionHelper.java | 50 ++++++++++++-- .../plus/myplaces/AvailableGPXFragment.java | 67 +++++-------------- 2 files changed, 58 insertions(+), 59 deletions(-) diff --git a/OsmAnd/src/net/osmand/plus/GpxSelectionHelper.java b/OsmAnd/src/net/osmand/plus/GpxSelectionHelper.java index 93eaf4fbb9..7fc6617ffb 100644 --- a/OsmAnd/src/net/osmand/plus/GpxSelectionHelper.java +++ b/OsmAnd/src/net/osmand/plus/GpxSelectionHelper.java @@ -35,9 +35,11 @@ import org.json.JSONObject; import java.io.File; import java.util.ArrayList; import java.util.Collection; +import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Map.Entry; +import java.util.Set; public class GpxSelectionHelper { @@ -443,7 +445,7 @@ public class GpxSelectionHelper { public SelectedGpxFile getSelectedFileByPath(String path) { List newList = new ArrayList<>(selectedGPXFiles); for (SelectedGpxFile s : newList) { - if (s.getGpxFile() != null && s.getGpxFile().path.equals(path)) { + if (s.getGpxFile().path.equals(path)) { return s; } } @@ -960,9 +962,42 @@ public class GpxSelectionHelper { } } + public void runSelection(Map selectedItems, SelectGpxTaskListener gpxTaskListener) { + final Set originalSelectedItems = new HashSet<>(); + AsyncTask selectGpxTask = new SelectGpxTask(gpxTaskListener); + for (String filePath : selectedItems.keySet()) { + if (!filePath.equals(CURRENT_TRACK)) { + boolean visible = false; + if (selectedItems.get(filePath) != null) { + visible = selectedItems.get(filePath); + } + SelectedGpxFile sf = getSelectedFileByPath(filePath); + if (sf == null) { + sf = new SelectedGpxFile(); + sf.setGpxFile(new GPXFile(null), app); + } + sf.getGpxFile().path = filePath; + addRemoveSelected(visible, sf); + if (visible) { + originalSelectedItems.add(sf.getGpxFile()); + } + } else { + SelectedGpxFile sf = getSelectedCurrentRecordingTrack(); + if (sf == null) { + sf = new SelectedGpxFile(); + sf.setGpxFile(new GPXFile(null), app); + sf.getGpxFile().showCurrentTrack = true; + } + originalSelectedItems.add(sf.getGpxFile()); + } + } + selectGpxTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, originalSelectedItems.toArray(new GPXFile[0])); + } + + public interface SelectGpxTaskListener { - void onProgressUpdate(GPXFile gpxFile); + void onProgressUpdate(); void onPreExecute(); @@ -970,11 +1005,11 @@ public class GpxSelectionHelper { } - public static class SelectGpxTask extends AsyncTask { + public class SelectGpxTask extends AsyncTask { private SelectGpxTaskListener gpxTaskListener; - public SelectGpxTask(SelectGpxTaskListener gpxTaskListener) { + SelectGpxTask(SelectGpxTaskListener gpxTaskListener) { this.gpxTaskListener = gpxTaskListener; } @@ -991,8 +1026,10 @@ public class GpxSelectionHelper { @Override protected void onProgressUpdate(GPXFile... values) { - gpxTaskListener.onProgressUpdate(values[0]); - + for (GPXFile gpxFile : values) { + selectGpxFile(gpxFile, true, false); + gpxTaskListener.onProgressUpdate(); + } } @Override @@ -1003,7 +1040,6 @@ public class GpxSelectionHelper { @Override protected void onPostExecute(String result) { gpxTaskListener.onPostExecute(); - } } } diff --git a/OsmAnd/src/net/osmand/plus/myplaces/AvailableGPXFragment.java b/OsmAnd/src/net/osmand/plus/myplaces/AvailableGPXFragment.java index 945d0c58fc..52d9bba95e 100644 --- a/OsmAnd/src/net/osmand/plus/myplaces/AvailableGPXFragment.java +++ b/OsmAnd/src/net/osmand/plus/myplaces/AvailableGPXFragment.java @@ -91,6 +91,7 @@ import java.util.Arrays; import java.util.Collections; import java.util.Comparator; import java.util.Date; +import java.util.HashMap; import java.util.HashSet; import java.util.LinkedHashMap; import java.util.LinkedHashSet; @@ -105,6 +106,7 @@ import static net.osmand.plus.myplaces.FavoritesActivity.TAB_ID; public class AvailableGPXFragment extends OsmandExpandableListFragment implements FavoritesFragmentStateHolder { + private static final String CURRENT_TRACK = "currentTrack"; public static final Pattern ILLEGAL_PATH_NAME_CHARACTERS = Pattern.compile("[?:\"*|<>]"); public static final int SEARCH_ID = -1; // public static final int ACTION_ID = 0; @@ -117,7 +119,6 @@ public class AvailableGPXFragment extends OsmandExpandableListFragment implement private GpxIndexesAdapter allGpxAdapter; private ContextMenuAdapter optionsMenuAdapter; private AsyncTask operationTask; - private AsyncTask selectGpxTask; private GpxSelectionHelper selectedGpxHelper; private OsmandApplication app; private boolean updateEnable; @@ -582,33 +583,14 @@ public class AvailableGPXFragment extends OsmandExpandableListFragment implement showOnMapMode = true; selectedItems.clear(); selectedGroups.clear(); - final Set originalSelectedItems; - selectedItems.addAll(allGpxAdapter.getSelectedGpx()); - originalSelectedItems = new HashSet<>(); - for (GpxInfo gpxInfo : selectedItems) { - originalSelectedItems.add(gpxInfo.gpx); - } + final Set originalSelectedItems = allGpxAdapter.getSelectedGpx(); + selectedItems.addAll(originalSelectedItems); gpxTaskListener = new GpxSelectionHelper.SelectGpxTaskListener() { @Override - public void onProgressUpdate(GPXFile gpxFile) { - - final boolean visible = isContains(gpxFile); - selectedGpxHelper.selectGpxFile(gpxFile, visible, false); + public void onProgressUpdate() { allGpxAdapter.notifyDataSetInvalidated(); } - boolean isContains(GPXFile gpxFile) { - for (GpxInfo gpxInfo : selectedItems) { - if (gpxInfo.currentlyRecordingTrack && gpxFile.showCurrentTrack) { - return true; - } - if (gpxInfo.gpx.path.equals(gpxFile.path)) { - return true; - } - } - return false; - } - @Override public void onPreExecute() { showProgressBar(); @@ -624,7 +606,6 @@ public class AvailableGPXFragment extends OsmandExpandableListFragment implement actionMode = getActionBarActivity().startSupportActionMode(new ActionMode.Callback() { - @Override public boolean onCreateActionMode(ActionMode mode, Menu menu) { enableSelectionMode(true); @@ -644,40 +625,22 @@ public class AvailableGPXFragment extends OsmandExpandableListFragment implement @Override public boolean onActionItemClicked(ActionMode mode, MenuItem item) { - runSelection(); + HashMap selectedItemsFileNames = new HashMap<>(); + originalSelectedItems.addAll(selectedItems); + for (GpxInfo gpxInfo : originalSelectedItems) { + if (gpxInfo.currentlyRecordingTrack) { + selectedItemsFileNames.put(CURRENT_TRACK, true); + } else { + selectedItemsFileNames.put(gpxInfo.file.getAbsolutePath(), selectedItems.contains(gpxInfo)); + } + } + selectedGpxHelper.runSelection(selectedItemsFileNames, gpxTaskListener); actionMode.finish(); allGpxAdapter.refreshSelected(); allGpxAdapter.notifyDataSetChanged(); return true; } - private void runSelection() { - selectGpxTask = new GpxSelectionHelper.SelectGpxTask(gpxTaskListener); - for (GpxInfo gpxInfo : selectedItems) { - if (!gpxInfo.currentlyRecordingTrack) { - final boolean visible = selectedItems.contains(gpxInfo); - SelectedGpxFile sf = selectedGpxHelper.getSelectedFileByName(gpxInfo.getFileName()); - if (sf == null) { - sf = new SelectedGpxFile(); - sf.setGpxFile(new GPXFile(null), app); - } - sf.getGpxFile().path = gpxInfo.file.getPath(); - selectedGpxHelper.addRemoveSelected(visible, sf); - originalSelectedItems.add(sf.getGpxFile()); - } else { - SelectedGpxFile sf = selectedGpxHelper.getSelectedCurrentRecordingTrack(); - if (sf == null) { - sf = new SelectedGpxFile(); - sf.setGpxFile(new GPXFile(null), app); - sf.getGpxFile().showCurrentTrack = true; - } - originalSelectedItems.add(sf.getGpxFile()); - } - } - selectGpxTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, - originalSelectedItems.toArray(new GPXFile[originalSelectedItems.size()])); - } - @Override public void onDestroyActionMode(ActionMode mode) { showOnMapMode = false; From 1d9d09e3774073b85a714d29ee347924fad7e858 Mon Sep 17 00:00:00 2001 From: Dima-1 Date: Fri, 21 Feb 2020 13:31:09 +0200 Subject: [PATCH 07/46] GpxSelectionHelper refactoring --- .../net/osmand/plus/GpxSelectionHelper.java | 105 ++++++++++-------- .../plus/myplaces/AvailableGPXFragment.java | 68 ++++++------ 2 files changed, 93 insertions(+), 80 deletions(-) diff --git a/OsmAnd/src/net/osmand/plus/GpxSelectionHelper.java b/OsmAnd/src/net/osmand/plus/GpxSelectionHelper.java index 7fc6617ffb..1500dde7fa 100644 --- a/OsmAnd/src/net/osmand/plus/GpxSelectionHelper.java +++ b/OsmAnd/src/net/osmand/plus/GpxSelectionHelper.java @@ -43,7 +43,7 @@ import java.util.Set; public class GpxSelectionHelper { - private static final String CURRENT_TRACK = "currentTrack"; + public static final String CURRENT_TRACK = "currentTrack"; private static final String FILE = "file"; private static final String BACKUP = "backup"; private static final String BACKUPMODIFIEDTIME = "backupTime"; @@ -56,6 +56,7 @@ public class GpxSelectionHelper { private Map selectedGpxFilesBackUp = new java.util.HashMap<>(); private SavingTrackHelper savingTrackHelper; private final static Log LOG = PlatformUtil.getLog(GpxSelectionHelper.class); + SelectGpxTask selectGpxTask; public GpxSelectionHelper(OsmandApplication osmandApplication, SavingTrackHelper trackHelper) { @@ -711,7 +712,7 @@ public class GpxSelectionHelper { } public boolean isLoaded() { - return gpxFile.modifiedTime != 0 || gpxFile.showCurrentTrack; + return gpxFile.modifiedTime != 0; } public GPXTrackAnalysis getTrackAnalysis(OsmandApplication app) { @@ -963,83 +964,91 @@ public class GpxSelectionHelper { } public void runSelection(Map selectedItems, SelectGpxTaskListener gpxTaskListener) { - final Set originalSelectedItems = new HashSet<>(); - AsyncTask selectGpxTask = new SelectGpxTask(gpxTaskListener); - for (String filePath : selectedItems.keySet()) { - if (!filePath.equals(CURRENT_TRACK)) { - boolean visible = false; - if (selectedItems.get(filePath) != null) { - visible = selectedItems.get(filePath); - } - SelectedGpxFile sf = getSelectedFileByPath(filePath); - if (sf == null) { - sf = new SelectedGpxFile(); - sf.setGpxFile(new GPXFile(null), app); - } - sf.getGpxFile().path = filePath; - addRemoveSelected(visible, sf); - if (visible) { - originalSelectedItems.add(sf.getGpxFile()); - } - } else { - SelectedGpxFile sf = getSelectedCurrentRecordingTrack(); - if (sf == null) { - sf = new SelectedGpxFile(); - sf.setGpxFile(new GPXFile(null), app); - sf.getGpxFile().showCurrentTrack = true; - } - originalSelectedItems.add(sf.getGpxFile()); - } + if (selectGpxTask != null && (selectGpxTask.getStatus() == AsyncTask.Status.RUNNING + || selectGpxTask.getStatus() == AsyncTask.Status.PENDING)) { + selectGpxTask.cancel(false); } - selectGpxTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, originalSelectedItems.toArray(new GPXFile[0])); + selectGpxTask = new SelectGpxTask(selectedItems, gpxTaskListener); + selectGpxTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); } - public interface SelectGpxTaskListener { - void onProgressUpdate(); + void gpxSelectionInProgress(); - void onPreExecute(); + void gpxSelectionStarted(); - void onPostExecute(); + void gpxSelectionFinished(); } - public class SelectGpxTask extends AsyncTask { + public class SelectGpxTask extends AsyncTask { + final Set originalSelectedItems = new HashSet<>(); private SelectGpxTaskListener gpxTaskListener; + Map selectedItems; - SelectGpxTask(SelectGpxTaskListener gpxTaskListener) { + SelectGpxTask(Map selectedItems, SelectGpxTaskListener gpxTaskListener) { this.gpxTaskListener = gpxTaskListener; + this.selectedItems = selectedItems; } @Override - protected String doInBackground(GPXFile... params) { - for (GPXFile file : params) { - if (!file.showCurrentTrack) { - file = GPXUtilities.loadGPXFile(new File(file.path)); + protected String doInBackground(Void... params) { + for (GPXFile gpxFile : originalSelectedItems) { + if (isCancelled()) { + break; } - publishProgress(file); + if (!gpxFile.showCurrentTrack) { + gpxFile = GPXUtilities.loadGPXFile(new File(gpxFile.path)); + } + selectGpxFile(gpxFile, true, false); + publishProgress(); } return ""; } @Override - protected void onProgressUpdate(GPXFile... values) { - for (GPXFile gpxFile : values) { - selectGpxFile(gpxFile, true, false); - gpxTaskListener.onProgressUpdate(); - } + protected void onProgressUpdate(Void... values) { + gpxTaskListener.gpxSelectionInProgress(); } @Override protected void onPreExecute() { - gpxTaskListener.onPreExecute(); + collectSelectedItems(); + gpxTaskListener.gpxSelectionStarted(); + } + + private void collectSelectedItems() { + for (String filePath : selectedItems.keySet()) { + SelectedGpxFile sf; + if (!filePath.equals(CURRENT_TRACK)) { + sf = getSelectedFileByPath(filePath); + if (sf == null) { + sf = new SelectedGpxFile(); + sf.setGpxFile(new GPXFile(null), app); + } + sf.getGpxFile().path = filePath; + } else { + sf = getSelectedCurrentRecordingTrack(); + if (sf == null) { + sf = savingTrackHelper.getCurrentTrack(); + } + } + boolean visible = false; + if (selectedItems.get(filePath) != null) { + visible = selectedItems.get(filePath); + } + if (visible) { + originalSelectedItems.add(sf.getGpxFile()); + } + addRemoveSelected(visible, sf); + } } @Override protected void onPostExecute(String result) { - gpxTaskListener.onPostExecute(); + gpxTaskListener.gpxSelectionFinished(); } } } diff --git a/OsmAnd/src/net/osmand/plus/myplaces/AvailableGPXFragment.java b/OsmAnd/src/net/osmand/plus/myplaces/AvailableGPXFragment.java index 52d9bba95e..7468f24e9c 100644 --- a/OsmAnd/src/net/osmand/plus/myplaces/AvailableGPXFragment.java +++ b/OsmAnd/src/net/osmand/plus/myplaces/AvailableGPXFragment.java @@ -100,13 +100,13 @@ import java.util.Map; import java.util.Set; import java.util.regex.Pattern; +import static net.osmand.plus.GpxSelectionHelper.CURRENT_TRACK; import static net.osmand.plus.myplaces.FavoritesActivity.GPX_TAB; import static net.osmand.plus.myplaces.FavoritesActivity.TAB_ID; public class AvailableGPXFragment extends OsmandExpandableListFragment implements FavoritesFragmentStateHolder { - private static final String CURRENT_TRACK = "currentTrack"; public static final Pattern ILLEGAL_PATH_NAME_CHARACTERS = Pattern.compile("[?:\"*|<>]"); public static final int SEARCH_ID = -1; // public static final int ACTION_ID = 0; @@ -130,6 +130,29 @@ public class AvailableGPXFragment extends OsmandExpandableListFragment implement private View emptyView; private GpxSelectionHelper.SelectGpxTaskListener gpxTaskListener; + @Override + public void onCreate(@Nullable Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + gpxTaskListener = new GpxSelectionHelper.SelectGpxTaskListener() { + @Override + public void gpxSelectionInProgress() { + allGpxAdapter.notifyDataSetInvalidated(); + } + + @Override + public void gpxSelectionStarted() { + showProgressBar(); + } + + @Override + public void gpxSelectionFinished() { + hideProgressBar(); + allGpxAdapter.refreshSelected(); + allGpxAdapter.notifyDataSetChanged(); + } + }; + } + @Override public void onAttach(Context activity) { super.onAttach(activity); @@ -585,24 +608,6 @@ public class AvailableGPXFragment extends OsmandExpandableListFragment implement selectedGroups.clear(); final Set originalSelectedItems = allGpxAdapter.getSelectedGpx(); selectedItems.addAll(originalSelectedItems); - gpxTaskListener = new GpxSelectionHelper.SelectGpxTaskListener() { - @Override - public void onProgressUpdate() { - allGpxAdapter.notifyDataSetInvalidated(); - } - - @Override - public void onPreExecute() { - showProgressBar(); - } - - @Override - public void onPostExecute() { - hideProgressBar(); - allGpxAdapter.refreshSelected(); - allGpxAdapter.notifyDataSetChanged(); - } - }; actionMode = getActionBarActivity().startSupportActionMode(new ActionMode.Callback() { @@ -625,16 +630,7 @@ public class AvailableGPXFragment extends OsmandExpandableListFragment implement @Override public boolean onActionItemClicked(ActionMode mode, MenuItem item) { - HashMap selectedItemsFileNames = new HashMap<>(); - originalSelectedItems.addAll(selectedItems); - for (GpxInfo gpxInfo : originalSelectedItems) { - if (gpxInfo.currentlyRecordingTrack) { - selectedItemsFileNames.put(CURRENT_TRACK, true); - } else { - selectedItemsFileNames.put(gpxInfo.file.getAbsolutePath(), selectedItems.contains(gpxInfo)); - } - } - selectedGpxHelper.runSelection(selectedItemsFileNames, gpxTaskListener); + runSelection(originalSelectedItems); actionMode.finish(); allGpxAdapter.refreshSelected(); allGpxAdapter.notifyDataSetChanged(); @@ -653,6 +649,16 @@ public class AvailableGPXFragment extends OsmandExpandableListFragment implement allGpxAdapter.notifyDataSetChanged(); } + public void runSelection(Set originalSelectedItems) { + HashMap selectedItemsFileNames = new HashMap<>(); + originalSelectedItems.addAll(selectedItems); + for (GpxInfo gpxInfo : originalSelectedItems) { + String path = gpxInfo.currentlyRecordingTrack ? CURRENT_TRACK : gpxInfo.file.getAbsolutePath(); + selectedItemsFileNames.put(path, selectedItems.contains(gpxInfo)); + } + selectedGpxHelper.runSelection(selectedItemsFileNames, gpxTaskListener); + } + public void openSelectionMode(final int actionResId, int darkIcon, int lightIcon, final DialogInterface.OnClickListener listener) { final int actionIconId = !isLightActionBar() ? darkIcon : lightIcon; @@ -1831,10 +1837,8 @@ public class AvailableGPXFragment extends OsmandExpandableListFragment implement private static GPXTrackAnalysis getGpxTrackAnalysis(GpxInfo gpxInfo, OsmandApplication app, @Nullable final GpxInfoViewCallback callback) { SelectedGpxFile sgpx = getSelectedGpxFile(gpxInfo, app); GPXTrackAnalysis analysis = null; - if (sgpx != null) { - if (sgpx.isLoaded()) { + if (sgpx != null && sgpx.isLoaded()) { analysis = sgpx.getTrackAnalysis(app); - } } else if (gpxInfo.currentlyRecordingTrack) { analysis = app.getSavingTrackHelper().getCurrentTrack().getTrackAnalysis(app); } else if (gpxInfo.file != null) { From 8e872492c77589883ff2b5280b75d5ca5f309c64 Mon Sep 17 00:00:00 2001 From: Dima-1 Date: Fri, 21 Feb 2020 14:23:56 +0200 Subject: [PATCH 08/46] Refactoring gpxTaskListener --- .../net/osmand/plus/GpxSelectionHelper.java | 32 ++++++++++++------- .../plus/myplaces/AvailableGPXFragment.java | 5 +-- 2 files changed, 23 insertions(+), 14 deletions(-) diff --git a/OsmAnd/src/net/osmand/plus/GpxSelectionHelper.java b/OsmAnd/src/net/osmand/plus/GpxSelectionHelper.java index 1500dde7fa..0da3176e26 100644 --- a/OsmAnd/src/net/osmand/plus/GpxSelectionHelper.java +++ b/OsmAnd/src/net/osmand/plus/GpxSelectionHelper.java @@ -56,8 +56,12 @@ public class GpxSelectionHelper { private Map selectedGpxFilesBackUp = new java.util.HashMap<>(); private SavingTrackHelper savingTrackHelper; private final static Log LOG = PlatformUtil.getLog(GpxSelectionHelper.class); - SelectGpxTask selectGpxTask; + private SelectGpxTask selectGpxTask; + private SelectGpxTaskListener gpxTaskListener; + public void setGpxTaskListener(SelectGpxTaskListener gpxTaskListener) { + this.gpxTaskListener = gpxTaskListener; + } public GpxSelectionHelper(OsmandApplication osmandApplication, SavingTrackHelper trackHelper) { this.app = osmandApplication; @@ -625,7 +629,7 @@ public class GpxSelectionHelper { return sf; } - public void addRemoveSelected(boolean show, SelectedGpxFile sf) { + private void addRemoveSelected(boolean show, SelectedGpxFile sf) { List newSelectedGPXFiles = new ArrayList<>(selectedGPXFiles); if (show) { if (!newSelectedGPXFiles.contains(sf)) { @@ -963,12 +967,12 @@ public class GpxSelectionHelper { } } - public void runSelection(Map selectedItems, SelectGpxTaskListener gpxTaskListener) { + public void runSelection(Map selectedItems) { if (selectGpxTask != null && (selectGpxTask.getStatus() == AsyncTask.Status.RUNNING || selectGpxTask.getStatus() == AsyncTask.Status.PENDING)) { selectGpxTask.cancel(false); } - selectGpxTask = new SelectGpxTask(selectedItems, gpxTaskListener); + selectGpxTask = new SelectGpxTask(selectedItems); selectGpxTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); } @@ -984,12 +988,10 @@ public class GpxSelectionHelper { public class SelectGpxTask extends AsyncTask { - final Set originalSelectedItems = new HashSet<>(); - private SelectGpxTaskListener gpxTaskListener; - Map selectedItems; + private Set originalSelectedItems = new HashSet<>(); + private Map selectedItems; - SelectGpxTask(Map selectedItems, SelectGpxTaskListener gpxTaskListener) { - this.gpxTaskListener = gpxTaskListener; + SelectGpxTask(Map selectedItems) { this.selectedItems = selectedItems; } @@ -1010,13 +1012,17 @@ public class GpxSelectionHelper { @Override protected void onProgressUpdate(Void... values) { - gpxTaskListener.gpxSelectionInProgress(); + if (gpxTaskListener != null) { + gpxTaskListener.gpxSelectionInProgress(); + } } @Override protected void onPreExecute() { collectSelectedItems(); - gpxTaskListener.gpxSelectionStarted(); + if (gpxTaskListener != null) { + gpxTaskListener.gpxSelectionStarted(); + } } private void collectSelectedItems() { @@ -1048,7 +1054,9 @@ public class GpxSelectionHelper { @Override protected void onPostExecute(String result) { - gpxTaskListener.gpxSelectionFinished(); + if (gpxTaskListener != null) { + gpxTaskListener.gpxSelectionFinished(); + } } } } diff --git a/OsmAnd/src/net/osmand/plus/myplaces/AvailableGPXFragment.java b/OsmAnd/src/net/osmand/plus/myplaces/AvailableGPXFragment.java index 7468f24e9c..f64e63d314 100644 --- a/OsmAnd/src/net/osmand/plus/myplaces/AvailableGPXFragment.java +++ b/OsmAnd/src/net/osmand/plus/myplaces/AvailableGPXFragment.java @@ -205,7 +205,7 @@ public class AvailableGPXFragment extends OsmandExpandableListFragment implement @Override public void onResume() { super.onResume(); - + selectedGpxHelper.setGpxTaskListener(gpxTaskListener); if (!importing) { if (asyncLoader == null || asyncLoader.getResult() == null) { asyncLoader = new LoadGpxTask(); @@ -225,6 +225,7 @@ public class AvailableGPXFragment extends OsmandExpandableListFragment implement @Override public void onPause() { super.onPause(); + selectedGpxHelper.setGpxTaskListener(null); updateEnable = false; if (operationTask != null) { operationTask.cancel(true); @@ -656,7 +657,7 @@ public class AvailableGPXFragment extends OsmandExpandableListFragment implement String path = gpxInfo.currentlyRecordingTrack ? CURRENT_TRACK : gpxInfo.file.getAbsolutePath(); selectedItemsFileNames.put(path, selectedItems.contains(gpxInfo)); } - selectedGpxHelper.runSelection(selectedItemsFileNames, gpxTaskListener); + selectedGpxHelper.runSelection(selectedItemsFileNames); } public void openSelectionMode(final int actionResId, int darkIcon, int lightIcon, From a58c0069a73800b5454f1c16e08130615206c510 Mon Sep 17 00:00:00 2001 From: Dima-1 Date: Fri, 21 Feb 2020 19:03:44 +0200 Subject: [PATCH 09/46] Refactoring SelectGpxTaskListener --- .../src/net/osmand/plus/GpxSelectionHelper.java | 17 +++++------------ .../plus/myplaces/AvailableGPXFragment.java | 4 +--- 2 files changed, 6 insertions(+), 15 deletions(-) diff --git a/OsmAnd/src/net/osmand/plus/GpxSelectionHelper.java b/OsmAnd/src/net/osmand/plus/GpxSelectionHelper.java index 0da3176e26..1c2f17ffe2 100644 --- a/OsmAnd/src/net/osmand/plus/GpxSelectionHelper.java +++ b/OsmAnd/src/net/osmand/plus/GpxSelectionHelper.java @@ -57,11 +57,6 @@ public class GpxSelectionHelper { private SavingTrackHelper savingTrackHelper; private final static Log LOG = PlatformUtil.getLog(GpxSelectionHelper.class); private SelectGpxTask selectGpxTask; - private SelectGpxTaskListener gpxTaskListener; - - public void setGpxTaskListener(SelectGpxTaskListener gpxTaskListener) { - this.gpxTaskListener = gpxTaskListener; - } public GpxSelectionHelper(OsmandApplication osmandApplication, SavingTrackHelper trackHelper) { this.app = osmandApplication; @@ -967,12 +962,12 @@ public class GpxSelectionHelper { } } - public void runSelection(Map selectedItems) { + public void runSelection(Map selectedItems, SelectGpxTaskListener gpxTaskListener) { if (selectGpxTask != null && (selectGpxTask.getStatus() == AsyncTask.Status.RUNNING || selectGpxTask.getStatus() == AsyncTask.Status.PENDING)) { selectGpxTask.cancel(false); } - selectGpxTask = new SelectGpxTask(selectedItems); + selectGpxTask = new SelectGpxTask(selectedItems, gpxTaskListener); selectGpxTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); } @@ -990,9 +985,11 @@ public class GpxSelectionHelper { private Set originalSelectedItems = new HashSet<>(); private Map selectedItems; + private SelectGpxTaskListener gpxTaskListener; - SelectGpxTask(Map selectedItems) { + SelectGpxTask(Map selectedItems, SelectGpxTaskListener gpxTaskListener) { this.selectedItems = selectedItems; + this.gpxTaskListener = gpxTaskListener; } @Override @@ -1012,17 +1009,13 @@ public class GpxSelectionHelper { @Override protected void onProgressUpdate(Void... values) { - if (gpxTaskListener != null) { gpxTaskListener.gpxSelectionInProgress(); - } } @Override protected void onPreExecute() { collectSelectedItems(); - if (gpxTaskListener != null) { gpxTaskListener.gpxSelectionStarted(); - } } private void collectSelectedItems() { diff --git a/OsmAnd/src/net/osmand/plus/myplaces/AvailableGPXFragment.java b/OsmAnd/src/net/osmand/plus/myplaces/AvailableGPXFragment.java index f64e63d314..94f20115e7 100644 --- a/OsmAnd/src/net/osmand/plus/myplaces/AvailableGPXFragment.java +++ b/OsmAnd/src/net/osmand/plus/myplaces/AvailableGPXFragment.java @@ -205,7 +205,6 @@ public class AvailableGPXFragment extends OsmandExpandableListFragment implement @Override public void onResume() { super.onResume(); - selectedGpxHelper.setGpxTaskListener(gpxTaskListener); if (!importing) { if (asyncLoader == null || asyncLoader.getResult() == null) { asyncLoader = new LoadGpxTask(); @@ -225,7 +224,6 @@ public class AvailableGPXFragment extends OsmandExpandableListFragment implement @Override public void onPause() { super.onPause(); - selectedGpxHelper.setGpxTaskListener(null); updateEnable = false; if (operationTask != null) { operationTask.cancel(true); @@ -657,7 +655,7 @@ public class AvailableGPXFragment extends OsmandExpandableListFragment implement String path = gpxInfo.currentlyRecordingTrack ? CURRENT_TRACK : gpxInfo.file.getAbsolutePath(); selectedItemsFileNames.put(path, selectedItems.contains(gpxInfo)); } - selectedGpxHelper.runSelection(selectedItemsFileNames); + selectedGpxHelper.runSelection(selectedItemsFileNames, gpxTaskListener); } public void openSelectionMode(final int actionResId, int darkIcon, int lightIcon, From 55363869c1ba7f8b728f6b4ae65e08763a00e8ad Mon Sep 17 00:00:00 2001 From: Dima-1 Date: Mon, 24 Feb 2020 18:14:42 +0200 Subject: [PATCH 10/46] Fix modified time -1 --- OsmAnd/src/net/osmand/plus/GpxSelectionHelper.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/OsmAnd/src/net/osmand/plus/GpxSelectionHelper.java b/OsmAnd/src/net/osmand/plus/GpxSelectionHelper.java index 1c2f17ffe2..32116d00ca 100644 --- a/OsmAnd/src/net/osmand/plus/GpxSelectionHelper.java +++ b/OsmAnd/src/net/osmand/plus/GpxSelectionHelper.java @@ -711,7 +711,7 @@ public class GpxSelectionHelper { } public boolean isLoaded() { - return gpxFile.modifiedTime != 0; + return gpxFile.modifiedTime != -1; } public GPXTrackAnalysis getTrackAnalysis(OsmandApplication app) { @@ -963,8 +963,7 @@ public class GpxSelectionHelper { } public void runSelection(Map selectedItems, SelectGpxTaskListener gpxTaskListener) { - if (selectGpxTask != null && (selectGpxTask.getStatus() == AsyncTask.Status.RUNNING - || selectGpxTask.getStatus() == AsyncTask.Status.PENDING)) { + if (selectGpxTask != null && (selectGpxTask.getStatus() == AsyncTask.Status.RUNNING)) { selectGpxTask.cancel(false); } selectGpxTask = new SelectGpxTask(selectedItems, gpxTaskListener); @@ -1039,6 +1038,9 @@ public class GpxSelectionHelper { visible = selectedItems.get(filePath); } if (visible) { + if (!sf.isShowCurrentTrack()) { + sf.getGpxFile().modifiedTime = -1; + } originalSelectedItems.add(sf.getGpxFile()); } addRemoveSelected(visible, sf); From f14b39e8ad23094d37a6c54fb5b404ff19a459f5 Mon Sep 17 00:00:00 2001 From: Dima-1 Date: Tue, 25 Feb 2020 11:44:45 +0200 Subject: [PATCH 11/46] Fix #6669 OSM Editing screen: show Save button above keyboard. --- OsmAnd/res/layout/fragment_edit_poi.xml | 16 +++--- .../plus/osmedit/EditPoiDialogFragment.java | 4 +- .../osmand/plus/osmedit/EditPoiViewPager.java | 52 +++++++++++++++++++ 3 files changed, 62 insertions(+), 10 deletions(-) create mode 100644 OsmAnd/src/net/osmand/plus/osmedit/EditPoiViewPager.java diff --git a/OsmAnd/res/layout/fragment_edit_poi.xml b/OsmAnd/res/layout/fragment_edit_poi.xml index b9b3f0e2d8..fdd799b7d5 100644 --- a/OsmAnd/res/layout/fragment_edit_poi.xml +++ b/OsmAnd/res/layout/fragment_edit_poi.xml @@ -19,10 +19,15 @@ app:contentInsetLeft="72dp" app:contentInsetStart="72dp"/> + + - - - - + height) height = h; + } + + if (height != 0) { + heightMeasureSpec = MeasureSpec.makeMeasureSpec(height, MeasureSpec.EXACTLY); + } + super.onMeasure(widthMeasureSpec, heightMeasureSpec); + setMeasuredDimension(getMeasuredWidth(), measureHeight(heightMeasureSpec, view)); + } + + private int measureHeight(int measureSpec, View view) { + int result = 0; + int specMode = MeasureSpec.getMode(measureSpec); + int specSize = MeasureSpec.getSize(measureSpec); + + if (specMode == MeasureSpec.EXACTLY) { + result = specSize; + } else { + if (view != null) { + result = view.getMeasuredHeight(); + } + if (specMode == MeasureSpec.AT_MOST) { + result = Math.min(result, specSize); + } + } + return result; + } +} From c02d1be6f6bec37b98e9ce0a5e384dc20a5d2351 Mon Sep 17 00:00:00 2001 From: Dima-1 Date: Tue, 25 Feb 2020 12:15:01 +0200 Subject: [PATCH 12/46] Fix formatting --- OsmAnd/res/layout/fragment_edit_poi.xml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/OsmAnd/res/layout/fragment_edit_poi.xml b/OsmAnd/res/layout/fragment_edit_poi.xml index 4ffd4fbb3e..6a6cd6d9ad 100644 --- a/OsmAnd/res/layout/fragment_edit_poi.xml +++ b/OsmAnd/res/layout/fragment_edit_poi.xml @@ -48,8 +48,8 @@ android:importantForAutofill="noExcludeDescendants" android:layout_marginLeft="@dimen/settings_divider_margin_start" android:layout_marginRight="@dimen/content_padding" - android:layout_marginStart="@dimen/settings_divider_margin_start" - android:layout_marginEnd="@dimen/content_padding"> + android:layout_marginStart="@dimen/settings_divider_margin_start" + android:layout_marginEnd="@dimen/content_padding"> + android:layout_marginStart="24dp"> + android:drawableEnd="@drawable/ic_action_arrow_drop_down" /> @@ -152,7 +152,7 @@ android:visibility="gone" app:textAllCapsCompat="true" tools:visibility="visible" - android:layout_marginStart="@dimen/showAllButtonMarginRight" /> + android:layout_marginStart="@dimen/showAllButtonMarginRight" /> Date: Tue, 25 Feb 2020 14:19:44 +0200 Subject: [PATCH 13/46] Fix #8513 General settings: icons color bug --- OsmAnd/src/net/osmand/plus/settings/BaseSettingsFragment.java | 2 +- .../src/net/osmand/plus/settings/GlobalSettingsFragment.java | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/OsmAnd/src/net/osmand/plus/settings/BaseSettingsFragment.java b/OsmAnd/src/net/osmand/plus/settings/BaseSettingsFragment.java index aa478a2705..d53fb66350 100644 --- a/OsmAnd/src/net/osmand/plus/settings/BaseSettingsFragment.java +++ b/OsmAnd/src/net/osmand/plus/settings/BaseSettingsFragment.java @@ -613,7 +613,7 @@ public abstract class BaseSettingsFragment extends PreferenceFragmentCompat impl @ColorRes protected int getActiveProfileColorRes() { - return getSelectedAppMode().getIconColorInfo().getColor(isNightMode()); + return isProfileDependent() ? getSelectedAppMode().getIconColorInfo().getColor(isNightMode()) : R.color.icon_color_active_light; } @ColorRes diff --git a/OsmAnd/src/net/osmand/plus/settings/GlobalSettingsFragment.java b/OsmAnd/src/net/osmand/plus/settings/GlobalSettingsFragment.java index 53901052e7..662274dde7 100644 --- a/OsmAnd/src/net/osmand/plus/settings/GlobalSettingsFragment.java +++ b/OsmAnd/src/net/osmand/plus/settings/GlobalSettingsFragment.java @@ -122,7 +122,8 @@ public class GlobalSettingsFragment extends BaseSettingsFragment implements Send } ListPreferenceEx defaultApplicationMode = (ListPreferenceEx) findPreference(settings.DEFAULT_APPLICATION_MODE.getId()); - defaultApplicationMode.setIcon(getActiveIcon(settings.DEFAULT_APPLICATION_MODE.get().getIconRes())); + defaultApplicationMode.setIcon(getIcon(settings.DEFAULT_APPLICATION_MODE.get().getIconRes(), + settings.getApplicationMode().getIconColorInfo().getColor(isNightMode()))); defaultApplicationMode.setEntries(entries); defaultApplicationMode.setEntryValues(entryValues); } From adf48301abf7c7433a36032ec97322bde7bb60aa Mon Sep 17 00:00:00 2001 From: nasr pen Date: Sat, 29 Feb 2020 16:38:51 +0000 Subject: [PATCH 14/46] Translated using Weblate (Arabic) Currently translated at 100.0% (3206 of 3206 strings) --- OsmAnd/res/values-ar/strings.xml | 115 ++++++++++++++++--------------- 1 file changed, 58 insertions(+), 57 deletions(-) diff --git a/OsmAnd/res/values-ar/strings.xml b/OsmAnd/res/values-ar/strings.xml index 713450fb51..9bc058d170 100644 --- a/OsmAnd/res/values-ar/strings.xml +++ b/OsmAnd/res/values-ar/strings.xml @@ -6,7 +6,7 @@ تسجيل الصوت استخدم مسجل النظام إعدادات الصوت / الفيديو - الكاميرا ليست متاحة + الكاميرا غير متاحة البحث عن المزيد من القرى/الرمز البريدي يرجى تمكين GPS استبدالها بهذه الوجهة @@ -48,7 +48,7 @@ بدء إضافة أوسماند المحلي للخطوط المحيطية قياس المسافة - الصوت تلاحظ + الملاحظة صوتية أجزاء الخطوط المحيطية (الكنتورية) الخطوط المحيطية @@ -125,9 +125,9 @@ إحداثيات بحث عن وسائل النقل العام البحث في المفضلة - ملاحة أوسماند غير متاحة مؤقتا. + الملاحة غير متاحة مؤقتاً. نقطة الانطلاق لم تحدد بعد. - الخرائط القياسية (ناقل) + خرائط التوجيه (المحملة) تحميل وإدارة الخرائط غير المتصلة المخزنة على جهازك. الملحقات خيارات المطور @@ -298,7 +298,7 @@ اختر مفضلة تعديلات OSM تغيير الفرز - جاري تسجيل الصوت/الفيديو. لوقفه اضغط على ودجة AV. + جار تسجيل صوت/فيديو. لوقفه اضغط على ودجة AV. افتح بمشغل خارجي خذ ملاحظة صوتية خذ ملاحظة فيديو @@ -386,7 +386,7 @@ المنعطف الثاني خريطة الطريق مصغرة تعيين الفاصل الزمني للتنبيه: - متابعة التوجيه السابق؟ (%1$sثانية) + متابعة التوجيه السابق؟ (%1$s ث) سيعاد احتساب المسار حالما يتم العثور على الموقع لقد أوقفت سيارتك عند حدد سرعة محاكاة المسار: @@ -432,7 +432,7 @@ بحث عن النقاط المهمة القيادة بيد اليسار حدد للبلدان التي فيها حركة المرور على اليسار. - الموقف غير معروف بعد. + الموقع لم يحدد. تعديل الشفافية (0 - شفاف ، 255 - معتم ) إلغاء التحميل؟ نشكرك على استخدام أوسماند. الكثير من مميزات هذا البرنامج بحاجة إلى بعض البيانات الإقليمية التي يمكنك تحميلها عبر \'إعدادات\'→ \'إدارة البيانات\'. بعد ذلك سوف تكون قادرا على عرض الخرائط، و تحديد العناوين ، والبحث عن النقاط المهمة ، والعثور على وسائل النقل العام . @@ -441,7 +441,7 @@ إلى مدى قريب \"١٠٠م\" بدون تكبير تلقائي إلى مدى متوسط \"٢٠٠م\" - خرائط متصلة بالإنترنت + خرائط الإنترنت تمكين ملحق خرائط الإنترنت من تحديد مصادر مختلفة من الخرائط خرائط من الإنترنت وتجانبية استخدام الخرائط من الإنترنت (تحميل وحفظ التجانبيات منها على بطاقة SD). @@ -509,7 +509,7 @@ بيانات الخطوط المحيطية من فضلك فكر في شراء ملحق الخطوط المحيطية من Google Play لدعم المزيد من التطوير. الخطوط المحيطية - جاري تشغيل صوت من التّسجيل المحدد. %1$s + جار تشغيل صوت من التّسجيل المحدد. %1$s برنامج ZXing للبحث عن الباركود غيرُ مثبّت. بحث في السّوق ؟ مستوى تكبير الخطوط المحيطية: الأيسر الخلفي @@ -669,7 +669,7 @@ غير محدد مركز الخريطة الحالي المنطلق: - بحث بالقرب من هنا + بحث بالجوار حفظ النقاط كمسار تم حفظ المسار بنجاح ك \'%1$s\'. اسم الملف: @@ -736,10 +736,10 @@ شفافية الخريطة ضبط شفافية الخريطة الأساسية. شفافية الخريطة - الخريطة السفلية… + الخريطة السفلية الخريطة السفلية اختيار الخريطة الأساسية التي تقوم عليه الخريطة - الخريطة العلوية… + الخريطة العلوية بدون الخريطة العلوية اختيار خريطة التراكب @@ -747,7 +747,7 @@ سيمارك متغير POI الخريطة مثبتة بالفعل. - اختر خرائط (التجانب) للتثبيت أو التحديث. + اختر خرائط : لا يوجد اتصال بالإنترنت. المزيد… مستوى التقريب الأدنى لاستخدام خرائط التوجيه. @@ -766,7 +766,7 @@ وحدات الطول ميل ، قدم ميل ، ياردة - كم ، متر + كم ، م ياردة قدم ميل ساعة @@ -801,16 +801,16 @@ يفهرس العنوان… يفهرس الخريطة… يفهرس POI… - جاري فهرسة وسائل النقل… + جار فهرسة وسائل النقل… حدث خطا - كلم + كم كم/س م مهمل خريطة تنسيق البيانات \'\' {0} \'\' غير معتمد أقرب POI تصفية مخصصة البحث عن الاسم في الإنترنت - جاري قراءة التجانبيات المخزنة مؤقتا… + جار قراءة التجانبات المخزنة مؤقتاً… الفهرس \"{0}\" كبير جدًّا على الذاكرة إصدار الخريطة غير مدعوم حدث خطأ غير متوقع أثناء ممارسة العمل {0}. @@ -836,11 +836,11 @@ اﻷوكرانية أميركا الشمالية - كندا أوروبا - إيطاليا - جاري نسخ ملفات أوسماند… + جار نسخ ملفات أوسماند… تفضيلات الملاحة قطع تشغيل الموسيقى عند ورود إعلان ما. إيقاف الموسيقى - جاري التحميل %1$s … + جار التحميل %1$s … " \n \nاضغط مطولا للرؤية على الخريطة" @@ -920,7 +920,7 @@ قواعد توجيه No v1.9 نحو الشمال المنزل - تنزيل بيانات A-GPS: %1$s + بيانات A-GPS المحملة: %1$s أوسماند يوفر تصفح الخريطة العالمية دون اتصال والتنقل دون اتصال. أهلا الطريق الحالي @@ -977,9 +977,9 @@ مصدر الخريطة… مصدر الخريطة عرض أسماء المفضلة - المسارات المسجلة… + المسارات المسجلة لغة الخريطة - تفاصيل + التفاصيل الوقت الحالي اتجاه الخريطة حسب اتجاه الحركة @@ -992,7 +992,7 @@ موقف مواقف صوت - المسار الجاري تسجيله + المسار الجار تسجيله تسجيل المسار اختر الفاصل الزمني لتسجيل المسار العام (مفعل عن طريق أداة تسجيل GPX على الخريطة). اختر الفاصل الزمني لتسجيل المسار أثناء الملاحة @@ -1030,7 +1030,7 @@ شارك ملاحظة "الموقع : N %1$s E %2$s" ملاحظات - خريطة متصلة بالإنترنت + خريطة إنترنت الطرق فقط ذاكرة الجهاز تعديل مجموعة @@ -1074,7 +1074,7 @@ تجنب الطرق… طرق السكك الحديدية خطوط الترام - طرق + الطرق وسائل المواصلات سمات أخرى للخريطة العناصر المتبقية @@ -1112,7 +1112,7 @@ الجولات الكل إحداثيات - استعراض الخريطة + استعراض سيارة دراجة مشي @@ -1265,7 +1265,7 @@ تحتاج إلى اتصال إنترنت لثبيت الملحق. صيغة خاطئة: %s حدد حجم صورة الكاميرا الداخلية - حجم صورة الكاميرا + حجم الصورة الإجراء {0} تم بنجاح. جار حفظ المسارات في الذاكرة… ابحث عن المزيد @@ -1274,7 +1274,7 @@ عرض الطريق عنوان خدمة الملاحة - جاري الرفع… + جار الرفع… مدينة: {0} نقل طرق @@ -1293,7 +1293,7 @@ تشغيل أوسماند في الخلفية مزود تحديد المواقع اختر مزود تحديد المواقع لاستخدامه في الخلفية: - ثانية + ث د GPS شبكة @@ -1335,13 +1335,13 @@ تحميل المناطق إنهاء البحث لا يوجد نتائج - جاري البحث… + جار البحث… بحث على الإنترنت بحث بدون اتصال اختر خدمة الملاحة عبر أو بدون ربط بالإنترنت. لا يمكن الوصول لمجلد البيانات على الذاكرة! حدد الوجهة أولاً - جاري تحميل قائمة المناطق المتاحة… + جار تحميل قائمة المناطق المتاحة… لم يتم تحميل قائمة المناطق من osmand.net. خطأ أثناء حفظ GPX. لا يمكن حساب الطريق. @@ -1742,7 +1742,7 @@ عرض عالي الجودة تعديل POI تفكيك ظغط الملف … - جاري البحث عن الإشارة … + جار البحث عن الإشارة … الدخول عبر الخريطة عرض عند البدء التأثير النسبي @@ -1888,7 +1888,7 @@ تقديم المسارات وفقاً لمقياس SAC. غطاء رمز التنزه تقديم المسارات وفقاً لآثار OSMC. - انقر فوق أي عنصر لمعرفة المزيد من التفاصيل، اضغط وواصل الضغط للتعطيل أو الحذف. البيانات الحالية على الجهاز (%1$s متاحة): + انقر فوق أي عنصر لمعرفة المزيد من التفاصيل، اضغط وواصل الضغط للتعطيل أو الحذف. البيانات الحالية على الجهاز (%1$s متاح): إعادة إعلان تعليمات الملاحة في فترات منتظمة. أخرى %1$s %2$s عنصر ؟ @@ -1896,12 +1896,12 @@ هذه الأداة المساعدة تفعل وظيفة تسجيل وحفظ المسارات الخاصة بك عبر الضغط على نافذة GPX على شاشة الخريطة، أو كذلك تسجيل كافة طرق الملاحة الخاص بك تلقائيا إلى ملف GPX. \n \nالمسارات المسجلة يمكن مشاركتها مع أصدقائك أو استخدامها كمساهمات ل OSM . الرياضيون يمكنهم استخدام المسارات المسجلة لمتابعة تدريباتهم. بعض تحليل المسار الابتدائية يمكن القيام بها مباشرة في التطبيق، مثل توقيت الدورات، ومتوسط السرعة...الخ، و يمكن أيضا تحليل المسارات باستعمال أدوات تحليل جانبية لاحقا. - أوسماند ليس لديه إذن لاستخدام ذاكرة اس دي + أوسماند ليس لديه إذن لاستخدام ذاكرة البطاقة هل تريد حقا حفظ POI بدون تحديد نوعه؟ هناك خيار جديد لتحكم بشكل مرن بالتطبيق عبر لوحة القياس أو القائمة الثابتة. اختيارك يمكن تغييره دائما في إعدادات لوحة القياس. ملاحة أوسماند دون نت ميزة تجريبية وهي لا تعمل لمسافات تزيد عن 20 كم. خدمة الملاحة حولت مؤقتا إلى CloudMade على الإنترنت. "إصدار {0} تثبيت بنجاح ({1})." - جاري تحميل الإصدار… + جار تحميل الإصدار… هل تريد تثبيت أوسماند - {0} من {1} {2} مب ؟ فشل في الحصول على قائمة إصدارات التطبيق عملية تحميل إصدارات التطبيق جارية … @@ -1926,7 +1926,7 @@ أدخل موضوع البحث لإيجاد POI شكراً Yandex على معلومات حركة المرور. حركة مرور Yandex - نقاط الاهتمام POI… + نقاط الاهتمام POI بحث عن نقاط الاهتمام استخدم كرة التتبع لتحريك الخريطة. استخدم كرة التعقب @@ -1939,7 +1939,7 @@ المسافة اللاحقة محطات توقف لتجاوز تم تحديث بيانات POI بنجاح ({0} تم تحميلها) - لا توجد بيانات POI حالياً متاحة في هذه المنطقة + لا توجد بيانات POI متاحة حالياً في هذه المنطقة تحديث POI غير متاح لمستويات الزوم الصغيرة المبنى: {0}، {1}، {2} التكبير الأقصى بالإنترنت @@ -1970,7 +1970,7 @@ الانتظار الأقصى للإصلاح إصدار غير معتمد من البيانات الصوتية البيانات الصوتية المحددة تالفة - بطاقة الذاكرة الرقمية غير متاحة. لن تكون قادرا على رؤية الخرائط أو العثور على الأشياء. + بطاقة الذاكرة غير متاحة. لن تكون قادرا على رؤية الخرائط أو العثور على أماكن. بطاقة الذاكرة في وضع القراءة فقط. يمكنك فقط مشاهدة الخريطة المحملة مسبقا ولا يمكنك التحميل من الإنترنت. انعطف يميناً بشكل حاد انعطف يساراً بشكل حاد @@ -1984,7 +1984,7 @@ إنشاء إحداثية POI عدد الصفوف في الدفعة %1$s سيتم حذف POI بمجرد إرسال التعديلات - جاري التحميل - %1$d ملف + جار التحميل - %1$d ملف يرجى تفعيل أداة المعالم البحرية %1$.1f من %2$.1f مب %.1f مب @@ -2017,7 +2017,7 @@ تحصل عليه ب %1$s الحصول على عدد غير محدود من تحميلات الخرائط والتحديثات في الشهر : أسبوعياً، يومياً أو كل ساعة. نسخة كاملة من تطبيق أوسماند مع تحميل غير محدود وتحديثات شهرية للخرائط . - ميل ، متر + ميل ، م تحميل رسوم الاشتراك ستفرض كل شهر. يمكنك إلغاء اشتراكك متى أردت عبر Google play. التبرع لمجتمع OSM @@ -2144,7 +2144,8 @@ مصدر الخريطة مصدر الخريطة إضافة مصدر خريطة - تم تغيير مصدر الخريطة إلى \"%s\". + مصدر الخريطة: +\n\"%s\" تغيير موقع الزر الضغط على زر الإجراء سيقوم بعرض أو إخفاء نقاطك المفضلة على الخريطة. دع الحقل فارغا إن كنت ترغب في استعمال العنوان أو اسم المكان. @@ -2993,15 +2994,15 @@ تضمين العنوان حفظ الوجهة لكل نقطة متابعة خلال التسجيل. يستخدم لتقدير وقت الوصول لنوع غير معروف من الطرق ولتقليل السرعة لجميع الطرق (قد يغير المسار) - نقل ملفات بيانات أوسماند إلى الوجهة الجديدة؟ + نقل البيانات إلى الموقع الجديد؟ \n%1$s > %2$s %1$s • %2$s - %1$s GB متاحة (من %2$s GB) + متاح GB%1$s (من GB%2$s) إدخال مسار المجلد المجلد… لصق مسار مجلد بيانات أوسماند - تغيير مجلد بيانات أوسماند؟ - الانتقال للوجهة الجديدة + تغيير مجلد البيانات ؟ + نقل للموقع الجديد تجنب بعض الطرق، أو بعض أنواع الطرق جنباً إلى جنب طريق تلفريك @@ -3011,16 +3012,16 @@ طبقات الخرائط تيرا بايت %1$s TB - قيقا بايت %1$s GB - %1$s MB ميقا بايت - %1$s kB كيلوا بايت + %1$s GB + %1$s MB + %1$s kB مجلد تخزين المسار المسارات يمكن أن تخزن في مجلد \'rec\' بشكل شهري أو مجلدات يومية. تسجيل المسارات إلى مجلد \'rec\' تسجل المسارات في المجلدات اليومية سجل المسارات في مجلدات واجعل مسمياتها حسب التاريخ مثل 2018-01-01. تم استخدام %1$s TB - تم استخدام %1$s GB + المستخدم %1$s GB تم استخدام %1$s MB تم استخدام %1$s kB الخطوط الكنتورية والتضاريس @@ -3118,15 +3119,15 @@ الإضافات المثبتة تكوين الملاحة ثيم التطبيق ، وحدات ، المنطقة - تكوين ملف التعريف + إعداد ملف التعريف تظهر التنبيهات في أسفل اليسار أثناء التنقل. تبديل الملف الشخصي اللغة والإخراج إعادة التعيين إلى الافتراضي إنشاء واستيراد وتحرير ملفات التعريف إدارة ملفات تعريف التطبيق … - فعالة للتطبيق بأكمله - إعدادات أوسماند + لكامل التطبيق + الإعدادات نسخة من ملف تعريف آخر قم بتشغيل الشاشة خريطة أثناء التنقل @@ -3146,7 +3147,7 @@ بشكل افتراضي قم بتنزيل خريطة مفصلة%s لعرض هذه المنطقة. تخزين داخلي ، مخفي عن المستخدم والتطبيقات الأخرى ، يمكن الوصول إليه حصريا من أوسماند. - تغيير مجلد تخزين البيانات + تغيير مجلد التخزين حديقة التضاريس زلاجة تزلج @@ -3253,7 +3254,7 @@ وضع المستخدم ، مشتق من:%s تزلج النوع:%s - ملف التعريف الأساسي + ملف تعريف أساسي حدد نوع الملاحة يرجى تحديد نوع الملاحة لملف التعريف الجديد أدخل اسم الملف الشخصي @@ -3282,7 +3283,7 @@ توجيه خاص توجيه جهة خارجية حدد ملفات التعريف لتكون مرئية في التطبيق. - تطبيق ملفات التعريف + ملفات تعريف التطبيق أضف عنصرًا واحدًا على الأقل إلى القائمة في إعدادات \"الإجراء السريع\" جبال الألب/التزلج علي المنحدرات التزلج على جبال الألب أو الانحدار. @@ -3319,8 +3320,8 @@ لوحة المفاتيح وندرلينك ببغاء - المسار: المسافة%s ، وقت جهاز التوجيه%s -\nالحساب:%.1f ثانية ،%d طرق ،%d تجانب) + "المسار: المسافة%s ، وقت التوجيه%s +\nالحساب:%.1f ث ،%d طرق ،%d تجانب)" الأوكيتانية ثم %1$s تطبيق فقط على \"%1$s\" From 2067fd10f3b4a10d84257ff2088c995ef5056377 Mon Sep 17 00:00:00 2001 From: jan madsen Date: Sun, 1 Mar 2020 12:52:42 +0000 Subject: [PATCH 15/46] Translated using Weblate (Danish) Currently translated at 89.0% (2854 of 3206 strings) --- OsmAnd/res/values-da/strings.xml | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/OsmAnd/res/values-da/strings.xml b/OsmAnd/res/values-da/strings.xml index 36c7120fff..90054422da 100644 --- a/OsmAnd/res/values-da/strings.xml +++ b/OsmAnd/res/values-da/strings.xml @@ -3500,4 +3500,17 @@ Repræsenterer område: %1$s x %2$s Medtag yderligere data Vælg yderligere data, der skal eksporteres sammen med profilen. Antarktis + Deaktiver genberegning + Brugerdefineret profil + Vinkel: %s° + Vinkel + Forbereder + IP typer + Intet valgt + Genveje + Profiler + Aktuelle poster erstattes med poster fra filen + Erstat alle + Behold begge + Renderingsstil \ No newline at end of file From a07f05f72d6d51d285c215a39c370a776bc66ae2 Mon Sep 17 00:00:00 2001 From: josep constanti Date: Sun, 1 Mar 2020 11:55:55 +0000 Subject: [PATCH 16/46] Translated using Weblate (Catalan) Currently translated at 89.7% (2877 of 3206 strings) --- OsmAnd/res/values-ca/strings.xml | 89 +++++++++++++++++--------------- 1 file changed, 47 insertions(+), 42 deletions(-) diff --git a/OsmAnd/res/values-ca/strings.xml b/OsmAnd/res/values-ca/strings.xml index ec64d2c1f5..cdd95c908a 100644 --- a/OsmAnd/res/values-ca/strings.xml +++ b/OsmAnd/res/values-ca/strings.xml @@ -15,16 +15,16 @@ Radars Notificacions de trànsit En espera del posicionament per tornar a calcular la ruta - El punt d\'inici és massa lluny de la carretera més propera. + El punt de sortida massa lluny de la carretera més propera. Indica el temps límit d\'aparcament - Tria el tipus d\'aparcament + Trieu el tipus de pàrquing Evita les carreteres no pavimentades Evita… Sense interrupció Configura la pantalla Brúixola Defineix el temps de despertament: - Evita vies de peatge + Sense vies de peatge Voleu continuar la navegació anterior que encara no havia finalitzat? (%1$s segons) Hores Minuts @@ -36,13 +36,13 @@ Públic Privat Configura la pantalla - Premeu la icona de bloqueig per desbloquejar la pantalla - Bloqueja la pantalla + Premeu la icona de bloqueig per desblocar + Bloca Proper gir Proper gir (petit) Segon gir proper - Bloqueja la pantalla - Desbloqueja la pantalla + Bloca + Desbloca La pantalla està bloquejada Memòria nativa total Avís @@ -70,17 +70,17 @@ Format Coordenades Cerca d\'adreces - Cerca de transport públic + Cerca transport públic Una manera de buscar Favorits Conducció per l\'esquerra Pels països on la gent condueix pel costat esquerre de la carretera. - Punt d\'inici no determinat encara - La posició encara no es coneix - Modifica l\'opacitat (0 - transparent, 255 - opac) + Encara no s\'ha determinat el punt de sortida. + La posició encara no es coneix. + Establiu l\'opacitat (0 - transparent, 255 - opac) Activa\n…el mode en segon pla Atura\n…el mode en segon pla La navegació fora de línia de l\'OsmAnd no està disponible temporalment. - Voleu cancel·lar la baixada del fitxer? + Voleu cancel·lar la baixada\? No s\'ha trobat res. Si no trobeu la vostra zona, la podeu fer vosaltres mateixos (consulteu https://osmand.net). Mapes de tessel·les en línia i cau Mapes estàndards (vectorials) @@ -88,7 +88,7 @@ Mapes en línia (tessel·les) Utilitza mapes en línia (les tessel·les es baixen i es desen a la tarja de memòria). Mapes en línia - Configureu les fonts de mapes de tessel·les en línia o desades a la memòria cau. + Seleccioneu les fonts de mapes de tessel·les en línia o a la memòria cau. "Aquest connector fa disponible directament des OsmAnd les característiques d\'accessibilitat del dispositiu. Us permet, per exemple, ajustar la velocitat de la veu en la síntesi TTS , configurar la pantalla de navegació, utilitzar un ratolí de bola per controla el zoom o la veu sintetitzada, anunciant automàticament la vostra posició." Gestor de connectors Cerca de PDI (punt d\'interès) @@ -111,21 +111,21 @@ Allunya Apropa nord - nord-nord-est + nord-nord est nord-est - est-nord-est + est-nord est est - est-sud-est + est-sud est sud-est - sud-sud-est + sud-sud est sud - sud-sud-oest - sud-oest - oest-sud-oest + sud-sud oest + sud oest + oest-sud oest oest - oest-nord-oest - nord-oest - nord-nord-oest + oest-nord oest + nord oest + nord-nord oest endavant endavant a la dreta a la dreta @@ -152,8 +152,8 @@ Baixeu i gestioneu mapes fora de línia emmagatzemats al vostre dispositiu. És probable que es mostrin els mapes de vectors més de pressa. Això pot no funcionar en alguns dispositius. Desenvolupament de l\'OsmAnd - Puja la modificació a OSM - Esborra els canvis + Puja l\'edició a OSM + Esborra l\'edició Penja-ho tot Mostra la traça actual Podeu baixar o actualitzar %1$s mapes. @@ -165,7 +165,7 @@ Àfrica Àsia Austràlia i Oceania - Indicadors de veu (enregistrats, funcionalitats limitades) + Indicacions de veu (enregistrades, funcionalitats limitades) Viquipèdia (fora de línia) Navegació Especifiqueu les opcions de navegació. @@ -180,19 +180,19 @@ Tema transparent Traieu el cotxe de l\'aparcament Optimitza el mapa per - Selecciona una veu i comprova les indicacions en funcionament + Seleccioneu una veu i comproveu les seves indicacions: Canvia el zoom del mapa seguint el desplaçament horitzontal del ratolí de bola. Utilitza el ratolí de bola per controlar el zoom - Es van penjar {0} PDI/notes - PDIs/Notes d\'OSM desades al dispositiu + Es van pujar {0} PDI/notes + PDIs/notes d\'OSM desades al dispositiu Mostra i gestiona els PDI/notes d\'OSM anotats a la base de dades del dispositiu. Informació de dia/nit Carrils Evita els ferris - S\'ha afegit una notificació a la vostra agenda perquè traieu el vostre cotxe. Hi seguirà fins que l\'elimineu manualment. + S\'ha afegit una notificació a la vostra agenda perquè traieu el vostre cotxe que es pot editar o treure allà mateix. Mantingueu-vos a l\'esquerra i continueu Mantingueu-vos a la dreta i continueu - Prova els indicadors de veu + Prova dels indicadors de veu Ajuda per a noves característiques No hi ha prou memòria de procés per mostrar l\'àrea seleccionada Especifiqueu l\'adreça de la pàgina web amb la sintaxi dels paràmetres: lat={0}, lon={1}, timestamp={2}, hdop={3}, altitude={4}, speed={5}, bearing={6}. @@ -201,7 +201,7 @@ Amèrica Central Amèrica del Sud Europa - Indicadors de veu (sintetitzats amb TTS, recomanat) + Indicacions de veu (TTS, recomanat) La llibreria nadiua no s\'admet en aquest dispositiu. S\'està inicialitzant la llibreria nativa… Opcions específiques de renderització dels vectors @@ -231,7 +231,7 @@ Atributs de renderització Estil del mapa Minimapa de ruta - Selecciona l\'acceleració de la ruta animada + Velocitat de simulació de la ruta: Seleccioneu el mitjà de transport Edició fora de línia Utilitza sempre l\'edició fora de línia. @@ -240,8 +240,8 @@ Els canvis realitzats en els PDI a l\'aplicació no afecten els fitxers de mapa baixats, els canvis es desen en un fitxer local. Memòria assignada %1$s MB (límit de l\'Android %2$s MB, Dalvik %3$s MB). Memòria assignada - Memòria nativa total assignada a l\'aplicació %1$s MB (Dalvik %2$s MB, altres %3$s MB). -Memòria proporcional %4$s MB (límit de l\'Android %5$s MB, Dalvik %6$s MB). + Memòria nativa total assignada a l\'aplicació %1$s MB (Dalvik %2$s MB, altres %3$s MB). +\nMemòria proporcional %4$s MB (límit de l\'Android %5$s MB, Dalvik %6$s MB). No s\'ha trobat cap mapa de vectors fora de línia per aquesta localització. Baixeu-ne un a Configuració (\'Gestió de fitxers de mapes\') o canvieu al connector \'Mapes en línia\'. Paràmetres globals de l\'aplicació És necessari per a les trameses a openstreetmap.org. @@ -413,7 +413,7 @@ Memòria proporcional %4$s MB (límit de l\'Android %5$s MB, Dalvik %6$s MB).Aquest connector mostra la configuració de característiques per al desenvolupament i depuració com la verificació o simulació de rutes, el rendiment del renderitzat o les indicacions de veu. Aquestes configuracions s\'adrecen a desenvolupadors i no són d\'utilitat per a un usuari normal. En consonància amb la configuració del sistema Android El nivell de zoom és - Trieu l\'estil per indicar direccions relatives mentre s\'està en moviment. + Trieu l\'estil per indicar direccions relatives mentre s\'està en moviment Mapes mundials i temàtics Viquipèdia mundial Configuració específica del perfil @@ -2872,7 +2872,7 @@ Abasta l\'àrea: %1$s x %2$s Renovació anual %1$.2f %2$s Cicle de pagament: - Les donacions ajuden a finançar la cartografia d\'OpenStreetMap. + Les donacions ajuden a finançar la cartografia d\'OSM. Per OsmAnd Subscripcions Només mostra imatges de 360º @@ -2924,7 +2924,7 @@ Abasta l\'àrea: %1$s x %2$s Tipus de carretera Sortida a Mostra/amaga traces GPX - Un commutador per mostrar o amagar les traces GPX seleccionades al mapa. + Un botó per mostrar o amagar les traces GPX seleccionades al mapa. Amaga les traces GPX Mostra les traces GPX Pugeu a la parada @@ -3092,7 +3092,7 @@ Abasta l\'àrea: %1$s x %2$s Seleccioneu el tipus de navegació Cotxe, camió, motocicleta Passejada, senderisme, cursa - Qualsevol transport públic + Tipus de transport públic Línia recta Navegació OsmAnd Perfil de navegació personalitzat @@ -3260,7 +3260,7 @@ Abasta l\'àrea: %1$s x %2$s Desplaça a la nova destinació Evita determinades rutes i tipus de carretera Emmagatzematge intern, amagat a l\'usuari i a les altres aplicacions i que només OsmAnd hi pot accedir - Canvia la carpeta d\'emmagatzematge de dades + Canvia la carpeta d\'emmagatzematge Pista de terra Trineu Costat a costat @@ -3353,7 +3353,7 @@ Abasta l\'àrea: %1$s x %2$s Connectors instal·lats Configura la navegació Tema de la aplicació, unitats, regió - Les alertes es mostren a la part inferior esquerra mentre es navega. + Les alertes es mostren abaix a l\'esquerra mentre es navega. Llengua i sortida Reinicia els valors per defecte Creació, importació i edició de perfils @@ -3366,7 +3366,7 @@ Abasta l\'àrea: %1$s x %2$s Mapa durant la navegació Pes, alçada, velocitat Paràmetres del vehicle - Els anuncis de veu només es produeixen en la navegació. + Els missatges de veu només es produeixen navegant. Instruccions de navegació i anuncis Anuncis de veu Alertes de pantalla @@ -3545,4 +3545,9 @@ Abasta l\'àrea: %1$s x %2$s \nSeleccioneu una opció. Alguns elements ja existeixen Seleccioneu les dades que voleu importar. + Ràtio + Vagó + Filtre de baixa velocitat que no deixa enregistrar punts per sota d\'una determinada velocitat. Així, les traces enregistrades no es veuen atapeïdes de punts al mapa. + Antàrtida + Estil de representació \ No newline at end of file From 3a8f299fe1d6d7d832ea7dfe50b4ab65e353d118 Mon Sep 17 00:00:00 2001 From: Marko Date: Sat, 29 Feb 2020 18:34:52 +0000 Subject: [PATCH 17/46] Translated using Weblate (Croatian) Currently translated at 28.3% (910 of 3206 strings) --- OsmAnd/res/values-hr/strings.xml | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/OsmAnd/res/values-hr/strings.xml b/OsmAnd/res/values-hr/strings.xml index 95395776cc..f388d5da82 100644 --- a/OsmAnd/res/values-hr/strings.xml +++ b/OsmAnd/res/values-hr/strings.xml @@ -1411,4 +1411,24 @@ Premjesti karte Nemoj premjestiti Tražim GPS + Izravno do točke + Navedite naziv profila + Otvaranje postavki + Dodatak onemogućen + izbornik + %1$s — %2$s — %3$s + Onemogući ponovni izračun + Prilagođeni profil + Kut: %s° + Kut + Priprema + Ništa nije odabrano + Brze akcije + Profili + Navedene %1$s, već postoje u OsmAnd. + Trenutne stavke bit će zamijenjene stavkama iz datoteke + Zamijeni sve + Zadrzi oboje + Neke stavke već postoje + Odaberite podatke koje želite uvesti. \ No newline at end of file From 81e8a57fe330f681006f4006c631ae4f685bbe60 Mon Sep 17 00:00:00 2001 From: Yaron Shahrabani Date: Sun, 1 Mar 2020 13:20:01 +0000 Subject: [PATCH 18/46] Translated using Weblate (Hebrew) Currently translated at 94.3% (3024 of 3206 strings) --- OsmAnd/res/values-he/strings.xml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/OsmAnd/res/values-he/strings.xml b/OsmAnd/res/values-he/strings.xml index 1f8a84b260..deb1f12168 100644 --- a/OsmAnd/res/values-he/strings.xml +++ b/OsmAnd/res/values-he/strings.xml @@ -3503,4 +3503,6 @@ לכלול נתונים נוספים ניתן לבחור נתונים נוספים לייצוא יחד עם הפרופיל. סגנון העיבוד + חלק מהפריטים קיימים + נא לבחור את הנתונים לייבוא. \ No newline at end of file From 07efd5ee25d5e5bb8625191393bc6db7092bbdcb Mon Sep 17 00:00:00 2001 From: Manuel Tassi Date: Sun, 1 Mar 2020 11:12:11 +0000 Subject: [PATCH 19/46] Translated using Weblate (Italian) Currently translated at 90.5% (2903 of 3206 strings) --- OsmAnd/res/values-it/strings.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/OsmAnd/res/values-it/strings.xml b/OsmAnd/res/values-it/strings.xml index 142e226f56..3aaad4cfaf 100644 --- a/OsmAnd/res/values-it/strings.xml +++ b/OsmAnd/res/values-it/strings.xml @@ -1313,7 +1313,7 @@ Memoria in proporzione %4$s MB (limite di Android %5$s MB, Dalvik %6$s MB).Accendi lo schermo (se spento) all\'approssimarsi di una svolta. %1$s necessita di questa autorizzazione per spegnere lo schermo per la funzionalità di risparmio energetico. Coordinate - Schermata iniziale + Casa Ci sono aggiornamenti per %1$s mappe Cerca Nessuna alternativa trovata @@ -2896,7 +2896,7 @@ Rappresenta l\'area: %1$s x %2$s Stai utilizzando la mappa {0} che è sviluppata da OsmAnd. Vuoi lanciare la versione completa di OsmAnd\? Lanciare OsmAnd\? Percorsi precedenti - Aggiungi home + Aggiungi casa Svolta per svolta Tipi di strade Mostra di più From 27221334843c89c05489b6020629d4a7a12ed945 Mon Sep 17 00:00:00 2001 From: Softmap Date: Mon, 2 Mar 2020 08:16:21 +0000 Subject: [PATCH 20/46] Translated using Weblate (Arabic) Currently translated at 100.0% (3206 of 3206 strings) --- OsmAnd/res/values-ar/strings.xml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/OsmAnd/res/values-ar/strings.xml b/OsmAnd/res/values-ar/strings.xml index 9bc058d170..5fcde19828 100644 --- a/OsmAnd/res/values-ar/strings.xml +++ b/OsmAnd/res/values-ar/strings.xml @@ -736,10 +736,10 @@ شفافية الخريطة ضبط شفافية الخريطة الأساسية. شفافية الخريطة - الخريطة السفلية + الخريطة السفلية… الخريطة السفلية اختيار الخريطة الأساسية التي تقوم عليه الخريطة - الخريطة العلوية + الخريطة العلوية… بدون الخريطة العلوية اختيار خريطة التراكب @@ -977,7 +977,7 @@ مصدر الخريطة… مصدر الخريطة عرض أسماء المفضلة - المسارات المسجلة + المسارات المسجلة… لغة الخريطة التفاصيل الوقت الحالي From d83efde4443bbf6d39fc46c4c6ef7a200104faa6 Mon Sep 17 00:00:00 2001 From: iman Date: Sun, 1 Mar 2020 15:36:08 +0000 Subject: [PATCH 21/46] Translated using Weblate (Persian) Currently translated at 99.7% (3198 of 3206 strings) --- OsmAnd/res/values-fa/strings.xml | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/OsmAnd/res/values-fa/strings.xml b/OsmAnd/res/values-fa/strings.xml index c22f2314b5..515a1f51dc 100644 --- a/OsmAnd/res/values-fa/strings.xml +++ b/OsmAnd/res/values-fa/strings.xml @@ -358,7 +358,7 @@ تنظیمات کلی برنامه نام کاربری OSM شما برای ارسال داده‌ها به سایت openstreetmap.org لازم است. - رمز عبور OSM شما + گذرواژهٔ OSM شما غرب-جنوب‌غرب غرب غرب-شمال‌غرب @@ -412,7 +412,7 @@ محرمانگی برچسب‌ها توضیحات - برای آپلودکردن فایل‌های GPX لطفاً نام کاربری و رمز عبور OSM خود را وارد کنید. + برای آپلودکردن فایل‌های GPX لطفاً نام کاربری و گذرواژهٔ OSM خود را وارد کنید. حمایت حمایت از قابلیت‌های جدید برای اینکه قابلیت‌های جدیدی را در برنامه ببینید کمک مالی کنید. @@ -716,7 +716,7 @@ داده‌ها وجود ندارد برعکس‌کردن جهت GPX از مقصد جاری استفاده کن - از سرتاسر رد عبور کن + گذر از همهٔ رد برای این محل نقشهٔ بُرداری آفلاین وجود دارد. \n \n\tفعال‌سازی: @@ -1051,7 +1051,7 @@ DDD MM.MMM DDD MM SS.S نقطه پیدا نشد، یا مکان از چند نقطه تشکیل شده است که فعلاً پشتیبانی نمی‌شود. - لطفاً نام کاربری و رمز عبورتان برای سایت OSM را در قسمت تنظیمات وارد کنید + لطفاً نام کاربری و گذرواژه‌تان برای سایت OSM را در قسمت تنظیمات وارد کنید پاک‌کردن مقصدهای میانی نگه‌داشتن مقصدهای میانی مقصدهای میانی را قبلاً چیده‌اید. @@ -1059,7 +1059,7 @@ مسیریابی از اینجا نقشه: به: - رمز عبور OSM (اختیاری) + گذرواژهٔ OSM (اختیاری) اعلام‌کردن… پیکربندی‌های مربوط به اعلام نام خیابان‌ها، هشدارهای ترافیکی (مانند توقف‌های اجباری، سرعتگیرها)، هشدار دوربین‌های کنترل سرعت و محدودیت‌های سرعت را انجام دهید. نام خیابان‌ها (موتور صوتی) @@ -1739,7 +1739,7 @@ نوار بالا گزارش کامل پیداکردن مجدد مسیر - نام کاربری و رمز عبورِ OSM + نام کاربری و گذرواژهٔ OSM کمک‌های مالی تعداد گیرندگان اصلاحات: %1$s، رتبه: %2$s، کل اصلاحات: %3$s @@ -2600,7 +2600,7 @@ درون‌برد فایل با لمس نقشه، دکمه‌ها و ابزارک‌ها را پنهان/آشکار کنید. حالت تمام‌صفحه - از این عبور کردم + از این گذشتم تغییر نام نشانه تعداد رقم‌های اعشاری راست @@ -2625,7 +2625,7 @@ مکان‌ها را به‌صورت کوتاه یا طولانی لمس کنید و سپس دکمهٔ پرچم را بزنید. گروه درون‌برد کنید گروه‌های نقاط برگزیده یا نقاط بین‌راهی را در قالب نشانه درون‌برد کنید. - نشانه‌هایی که به‌عنوان عبورکرده مشخص شده‌اند در این صفحه نشان داده می‌شوند. + نشانه‌هایی که به‌عنوان گذرانده مشخص شود در این صفحه نشان داده می‌شود. بیشتر در حال جست‌وجوی ردهای دارای نقطهٔ بین‌راهی اشیای OSM را بسازید یا ویرایش کنید @@ -2868,7 +2868,7 @@ جست‌وجوی خیابان ابتدا شهر/محل را انتخاب کنید بازیابی - نشانه‌هایی که در قالب گروهی از برگزیده‌ها یا نقاط بین‌راهی GPX وارد شده‌اند و از آن‌ها عبور کرده‌اید روی نقشه باقی می‌مانند. اگر گروه مربوط به آن‌ها را غیرفعال کنید، نشانه‌ها از روی نقشه محو می‌شوند. + نشانه‌هایی که در قالب گروهی از برگزیده‌ها یا نقاط بین‌راهی GPX وارد شده‌اند و از آن‌ها گذشته‌اید روی نقشه باقی می‌مانند. اگر گروه مربوط به آن‌ها را غیرفعال کنید، نشانه‌ها از روی نقشه محو می‌شوند. نشانه‌های پشت سر گذاشته را روی نقشه نگه دار نشانهٔ %s حذف شود؟ ویرایش نشانه From 759cc29c93fa36054510b530f7da33dc9f663a3f Mon Sep 17 00:00:00 2001 From: Ammuu5 Date: Sun, 1 Mar 2020 22:47:26 +0000 Subject: [PATCH 22/46] Translated using Weblate (Finnish) Currently translated at 65.8% (2112 of 3206 strings) --- OsmAnd/res/values-fi/strings.xml | 63 +++++++++++++++++++++++--------- 1 file changed, 45 insertions(+), 18 deletions(-) diff --git a/OsmAnd/res/values-fi/strings.xml b/OsmAnd/res/values-fi/strings.xml index a7a1a23115..c8df578184 100644 --- a/OsmAnd/res/values-fi/strings.xml +++ b/OsmAnd/res/values-fi/strings.xml @@ -826,7 +826,7 @@ Maailmanlaajuiset tiedot (välillä 70 astetta pohjoista ja 70 astetta eteläist Näytä sijainti aina keskellä Ääniohjausta ei ole saatavilla. Mene \\\'Asetukset\\\' → \\\'Yleiset asetukset\\\' → \'\\Ääniohjaus\\\' ja valitse tai lataa äänikehote. etsi - Etsi kaupunkia tai aluetta + Kaupunki tai alue Poistu %1$d. liittymästä Reitin laskenta Sinulla ei ole vielä yhtään GPX-tiedostoa @@ -979,7 +979,7 @@ Maailmanlaajuiset tiedot (välillä 70 astetta pohjoista ja 70 astetta eteläist Sovelluksella on nyt lupa kirjoittaa ulkoiselle tallennusvälineelle. Uudelleenkäynnistys vaaditaan. Yläpalkki Koko raportti - "OpenStreetMap-käyttäjätunnus ja -salasana" + OSM-käyttäjänimi ja -salasana OSM Live -tilaus Tukialue Kuukausikustannus @@ -1850,8 +1850,7 @@ Jos pidät OsmAndista ja OSMsta ja haluat tukea niitä, on tämä täydellinen t Asenna lisää… Käytä rasterikarttoja kaikkeen, joka ylittää tämän tason. Pienin vektorien zoomaustaso - - Online OSM karttaluokittelu kuvilla. + Online OSM karttaluokittelu kuvilla. Ei voitu suorittaa offline-hakua. Järjestelmä Sovelluksen näyttökieli (käytetään, kun OsmAnd käynnistetään uudelleen). @@ -1955,8 +1954,8 @@ Jos pidät OsmAndista ja OSMsta ja haluat tukea niitä, on tämä täydellinen t Koordinaattien muoto Käytä järjestelmän näppäimistöä Nopea koordinaattien syöttö - Vältä jääteitä, kahlaamoja - Vältä jääteitä ja kahlaamoja. + Ei jääteitä tai kahlaamoja + Välttää jääteitä ja kahlaamoja. Käytä sijaintia Lisää sijaintisi täydellisen reittisuunnitelmasi lähtöpisteeksi. Sijaintini @@ -1972,7 +1971,7 @@ Jos pidät OsmAndista ja OSMsta ja haluat tukea niitä, on tämä täydellinen t Poista karttamarkkereista laskeva nouseva - Päiväys lisätty + Lisätty Järjestysperuste: Kaikki karttamarkkerit siirretty historiaan Karttamarkkeri siirretty historiaan @@ -2018,7 +2017,7 @@ Jos pidät OsmAndista ja OSMsta ja haluat tukea niitä, on tämä täydellinen t Asenna Online-kuvat Lisää kuviin - Tästä sijainnista ei ole kuvia. + Täällä ei ole kuvia. Mapillary Käynnistä haku uudelleen Mitään ei löytynyt @@ -2108,7 +2107,7 @@ Jos pidät OsmAndista ja OSMsta ja haluat tukea niitä, on tämä täydellinen t Lisää välipysähdys Lisää ensimmäisen pysähdys Näytä suljetut huomautukset - Näytä/Piilota OSM-huomautukset kartalla. + Näytä/piilota OSM-huomautukset kartalla. GPX - soveltuu vietäväksi JOSM:iin tai muihin OSM-editoreihin. OSC - soveltuu vietäväksi OpenStreetMappiin. GPX-tiedosto @@ -2118,7 +2117,7 @@ Jos pidät OsmAndista ja OSMsta ja haluat tukea niitä, on tämä täydellinen t Kaikki data OSM-huomautukset Aukeaa huomenna kello - Ilman nimiä + Ilman nimeä Täällä on: pysäköity Noudettava ennen @@ -2193,7 +2192,7 @@ Jos pidät OsmAndista ja OSMsta ja haluat tukea niitä, on tämä täydellinen t Reitti laskettu Edestakainen matka Sinun täytyy lisätä ainakin yksi markkeri käyttääksesti tätä toimintoa. - Huomautusta ei voitu muokata + Huomautusta ei voitu muokata. Valitse koordinaattien syöttömuoto. Voit aina vaihtaa sen tökkäämällä asetuksia. Näytä suuntaviivat Näytä ohitetut @@ -2236,7 +2235,7 @@ Jos pidät OsmAndista ja OSMsta ja haluat tukea niitä, on tämä täydellinen t Tämän toimintonappulan koskettaminen ottaa käyttöön/poistaa käytöstä nopeuteesi perustuvan kartan automaattisen tarkennuksen. "Ota kartan automaattinen tarkennus käyttöön " "Poista kartan automaattinen tarkennus käytöstä " - Lisää määränpää + Aseta määränpää Korvaa määränpää Lisää ensimmäinen välietappi Näpäyttämällä tätä toimintonäppäintä lisäät karttamarkerin sijaintiin ruudun keskellä. @@ -2332,10 +2331,10 @@ Jos pidät OsmAndista ja OSMsta ja haluat tukea niitä, on tämä täydellinen t Näytä/piilota rinnevarjostus Vie profiili OsmAnd profiili: %1$s - Profiili \'%1$s\' on jo olemassa. Korvataanko\? - Profiilin tuonti + \'%1$s\' on jo olemassa. Korvataanko\? + Tuo profiili %1$s tuontivirhe: %2$s - %1$s tuotu onnistuneesti. + %1$s tuotu. Valkoinen Vaihda %1$s ja %2$s Lähtöpiste @@ -2421,7 +2420,7 @@ Jos pidät OsmAndista ja OSMsta ja haluat tukea niitä, on tämä täydellinen t Uudistuu kuukausittain Uusitaan vuosittain Maksuaika: - Lahjoitukset auttavat rahoittamaan OpenStreetMap-kartografiaa. + Lahjoitukset auttavat rahoittamaan OSM-kartografiaa. Käynnistä Vuorokaudenaika milliradiaanit @@ -2444,7 +2443,7 @@ Jos pidät OsmAndista ja OSMsta ja haluat tukea niitä, on tämä täydellinen t Auto, kuorma-auto, moottoripyörä Maastopyörä, mopo, hevonen Kävely, vaellus, juokseminen - Kaikki julkisen liikenteen tyypit + Julkisen liikenteen tyypit Laiva, soutu, purjehdus Lentokone, riippuliito Suora viiva @@ -2469,7 +2468,7 @@ Jos pidät OsmAndista ja OSMsta ja haluat tukea niitä, on tämä täydellinen t Leveysraja Voit käyttää tätä muutosta kaikkiin profiileihin tai vain valittuna olevaan profiiliin. Profiilia ei voitu viedä. - Jos haluat tuoda profiilin, valitse sen tiedosto laitteella ja avaa se OsmAnd-sovelluksella. + Lisää profiili avaamalla sen tiedosto OsmAnd-sovelluksella. Näytä ja hallitse OSM KP:ta/laitteesi tietokannassa olevia huomautuksia. mph Kirjoita löytääksesi KP:n @@ -2501,4 +2500,32 @@ Jos pidät OsmAndista ja OSMsta ja haluat tukea niitä, on tämä täydellinen t Uusi laajennus lisätty Yhdistä segmentit Lisää GPX-tiedostoon + %1$s / kuukausi + %1$.2f %2$s / kuukausi + Kuukausi + Kuukaudet + Kolme kuukautta + Ilmainen + Paksu + Kuvake, väri ja nimi + Valitse kuvake, väri ja nimi + Käyttäjänimi ja salasana + Saatavilla + Näytä vain yöllä + %1$s/%2$s + Auringonlasku klo %1$s + Auringonnousu klo %1$s + Tyhjennä tallennetut tiedot + Kopioi koordinaatit + Avaa asetukset + Valikko + Reititys + Kulma: %s° + Kulma + Valmistellaan + KP-tyypit + Pikatoiminnot + Profiilit + Korvaa kaikki + Pidä molemmat \ No newline at end of file From b56a6a9342cc91f43511d1d99af5e32dd950d665 Mon Sep 17 00:00:00 2001 From: ace shadow Date: Sat, 29 Feb 2020 17:05:42 +0000 Subject: [PATCH 23/46] Translated using Weblate (Slovak) Currently translated at 100.0% (3206 of 3206 strings) --- OsmAnd/res/values-sk/strings.xml | 96 ++++++++++++++++---------------- 1 file changed, 48 insertions(+), 48 deletions(-) diff --git a/OsmAnd/res/values-sk/strings.xml b/OsmAnd/res/values-sk/strings.xml index 52a9a5adad..cd0c7d5de6 100644 --- a/OsmAnd/res/values-sk/strings.xml +++ b/OsmAnd/res/values-sk/strings.xml @@ -34,11 +34,11 @@ Pokročilý režim… Prichytiť pozíciu k cestám počas navigácie. Prichytiť k ceste - Diaľniciam + Žiadne diaľnice Konfigurovať obrazovku Jazdné pruhy - Nespevneným cestám - Trajektom + Žiadne nespevnené cesty + Žiadne trajekty Vyhnúť sa… Zobraziť varovania… Nastaviť dopravné varovania (rýchlostné obmedzenia, značky stop, spomaľovače, tunely), rýchlostné radary a jazdné pruhy. @@ -52,7 +52,7 @@ Názov ulice Konfigurácia Kde som - Zámok obrazovky + Zámok Kompas Znovunastaviť štandardné Parkovanie @@ -65,7 +65,7 @@ Nasled. odbočka (malá) Druhá nasled. odbočka Navigačná mini mapa - Zamknúť obrazovku + Zámok Obrazovka je uzamknutá Nastaviť prebúdzací interval: Povoľte zásuvný modul \"Online mapy\", aby bolo možné vybrať rozličné mapové zdroje @@ -109,21 +109,21 @@ Priblížiť Priblíženie je severne - severo-severo-východne - severo-východne - východo-severo-východne + severoseverovýchodne + severovýchodne + východoseverovýchodne východne - východo-juho-východne - juho-východne - juho-juho-východne + východojuhovýchodne + juhovýchodne + juhojuhovýchodne južne - juho-juho-západne - juho-západne - západo-juho-západne + juhojuhozápadne + juhozápadne + západojuhozápadne západne - západo-severo-západne - severo-západne - severo-severo-západne + západoseverozápadne + severozápadne + severoseverozápadne dopredu dopredu vpravo doprava @@ -157,7 +157,7 @@ Odosielanie… {0} POI/poznámok bolo nahratých Nahrať všetko - Nahrať úpravu na OSM + Nahrať úpravu do OSM Vymazať úpravu Asynchrónne upravovanie OSM: OSM POI/poznámky uložené v zariadení @@ -215,11 +215,11 @@ Veľkomesto Vypnúť simuláciu Začať simuláciu - Súbor nemôže byť premenovaný. + Nepodarilo sa premenovať súbor. Súbor s týmto názvom už existuje. GPX trasa - Boli nájdené nejaké kategórie POI vyhovujúce požiadavke: - Miestne údaje na hľadanie POI nie sú dostupné. + Boli nájdené viaceré súvisiace kategórie POI. + Stiahnite offline údaje pre hľadanie POI. Hľadať podľa názvu Súbor POI údajov "%1$s" je zbytočný a môže byť vymazaný. Miestny súbor na udržiavanie POI zmien sa nenašiel a nemôže byť vytvorený. @@ -297,7 +297,7 @@ Priehľadnosť prekrývacej mapy Upraviť priehľadnosť základnej mapy. Priehľadnosť mapy - Upravte priehľadnosť (0 - priehľadný, 255 - nepriehľadný) + Zadajte priehľadnosť (0 - priehľadný, 255 - nepriehľadný) Podkladová mapa… Podkladová mapa Vybrať podkladovú mapu @@ -384,7 +384,7 @@ Nainštalovať verziu Aplikácia pre stav GPS nie je nainštalovaná. Nájsť ju v obchode? Hlasové navigovanie nie je dostupné, prosím choďte do \'Nastavenia\' → \'Navigačné nastavenia\', zvoľte profil → \'Hlasové povely\' a zvoľte alebo stiahnite balík hlasových povelov. - Hlasové údaje nie sú určené + Zvoľte balík hlasových údajov Denný režim Nočný režim Východ/Západ slnka @@ -404,7 +404,7 @@ Zapnite pre výpočet najrýchlejšej trasy alebo vypnite pre ekonomickú trasu. Pri priblížení {0} sa stiahne {1} dlaždíc ({2} Mb ) Stiahnuť mapu - Vybrať max. priblíženie viditeľnej oblasti na načítanie + Maximálne priblíženie na prednačítanie Táto mapa sa nedá stiahnuť Postupné vykresľovanie Použiť postupné vykresľovanie namiesto celoobrazového. @@ -421,7 +421,7 @@ sem zadajte čo chcete nájsť Mapa s vysokým rozlíšením Nerozťahovať (a nerozmazať) mapové dlaždice na obrazovkách s vysokou hustotou bodov. - Umiestnenie zatiaľ nenájdené + Umiestnenie zatiaľ nenájdené. Hľadať hromadnú dopravu Hľadá sa preprava (bez cieľa): Hľadá sa preprava ({0} ako cieľ): @@ -487,7 +487,7 @@ Inicializácia hlasových údajov… Nepodporovaná verzia hlasových údajov Vybrané hlasové údaje sú poškodené - Aktuálne hlasové údaje nie sú dostupné + Zvolený balík hlasových údajov nie je dostupný Pamäťová karta nie je prístupná. \nNebudete môcť vidieť mapu alebo niečo nájsť. Pamäťová karta je iba na čítanie. @@ -568,7 +568,7 @@ Zobraziť trasu Spustiť pokyny Výber režimu dopravy (voliteľné): - Prosím, najskôr zvoľte cieľ + Prosím najprv zadajte cieľ Pokyny Otváracie hodiny Otvára sa zmenový súbor… @@ -588,9 +588,9 @@ Nepodarilo sa vypočítať trasu. Vypočítaná trasa je prázdna. Vypočítaná nová cesta, vzdialenosť - Dorazili ste do cieľa + Dorazili ste do cieľa. Neplatné súradnice - Ísť späť na OsmAnd mapu + Ísť späť na mapu Načítavajú sa údaje… Načítavajú sa miestne údaje… Predošlé spustenie aplikácie malo kritickú chybu. Záznamový súbor je v {0}. Prosím, nahláste problém a priložte záznamový súbor. @@ -602,7 +602,7 @@ Určiť nastavenia Openstreetmap.org (OSM) potrebné pre prispievanie do OSM. Vybrať jazyk, stiahnutie/znovu načítanie údajov. Údaje - OSM upravovanie + Upravovanie OpenStreetMap Priblíženie mapy podľa vašej rýchlosti (keď je mapa synchronizovaná s aktuálnou polohou). Automatické priblíženie mapy Ďalšie nastavenia @@ -659,7 +659,7 @@ Zemepisná šírka a dĺžka vo vybranom formáte (D - stupne, M - minúty, S - sekundy) Zem. šírka Zem. dĺžka - Zvoľte adresu + Adresa Oblasť Mesto Ulica @@ -698,17 +698,17 @@ Uložiť Filter Uložiť ako - Vymazať vybraný filter? - Filter %1$s bol zmazaný - Filter %1$s bol vytvorený + Vymazať tento filter\? + Filter \'%1$s\' bol zmazaný + Filter \'%1$s\' bol vytvorený Východzí bod nebol zatiaľ zistený. Zrušiť sťahovanie\? Základná potrebná pre základné funkcie aplikácie bola zaradená na stiahnutie. Názov Kategória - DDD.DD - DDD MM.MM - DDD MM SS.SS + DDD.DDDDD + DDD MM.MMM + DDD MM SS.S OsmAnd offline navigácia je dočasne nedostupná. Ľavostranná premávka Pre krajiny, kde sa jazdí po ľavej strane cesty. @@ -756,14 +756,14 @@ Parkovacie miesto Označiť ako parkovacie miesto Odstrániť parkovaciu značku - Počiatočný bod je príliš ďaleko od najbližšej cesty. + Východzí bod je príliš ďaleko od najbližšej cesty. Zdieľané umiestnenie Pridelená pamäť %1$s MB (Android limit %2$s MB, Dalvik %3$s MB). Pridelená pamäť Celková natívna pamäť pridelená aplikácii %1$s MB (Dalvik %2$s MB, iné %3$s MB). \n Proporčná pamäť %4$s MB (Limit Androidu %5$s MB, Dalvik %6$s MB). Celková natívna pamäť - Vybrať zrýchlenie animovania trasy + Rýchlosť animovania trasy: Hodín Minút Automobil je zaparkovaný na @@ -775,16 +775,16 @@ Dopravné varovania Žiadne spoplatnené cesty Stlačte ikonu zámku na odomknutie - Odomknúť obrazovku + Odomknúť e-mail Vytvoriť POI filter - Výber režimu prepravy + Režim prepravy: Východ slnka: %1$s \nZápad slnka: %2$s Info o dni/noci Atribúty vykresľovania Štýl vykresľovania - OsmAnd je open source navigácia s offline aj online mapami + Mobilné zobrazovanie celosvetových máp a navigácia pre offline aj online mapy OSM OsmAnd je open source navigácia s offline aj online mapami Zobraziť od úrovne priblíženia (vyžaduje dátový súbor vrstevníc): OsmAnd (OSM Automatizované navigačné pokyny) @@ -879,7 +879,7 @@ Zaznamenať zvukovú poznámku Zaznamenať video poznámku Vrstva s poznámkami - Nahrávanie nemôže byť prehrané + Nepodarilo sa prehrať nahrávku. Odstrániť záznam Prehrať Záznam %1$s %2$s %3$s @@ -920,7 +920,7 @@ Uprednostniť diaľnice. označené neoznačené - Vybrať pri požiadaní + Pri požiadaní\? Čas príchodu Výpočet presnej trasy bez závad. Zatiaľ však obmedzený na menšiu vzdialenosť a je pomalší. Informácie o GPS @@ -934,7 +934,7 @@ Upravte vzhľad aplikácie. Téma aplikácie Voľby zjednodušeného prístupu - Vybrať adresu + Zadať adresu Vybrať Obľúbený bod OSM úpravy Nie je pripojenie na Wi-Fi. Použiť aktuálne pripojenie na Internet pre sťahovanie? @@ -961,7 +961,7 @@ Hľadať ulicu v susednom meste Nepodarilo sa zálohovať zmeny OSM. Zálohovať ako OSM zmenu - Najskôr vyberte mesto alebo ulicu + Najskôr zadajte mesto alebo ulicu Zmenový súbor pre OSM bol vygenerovaný %1$s Určiť ako cieľ Cieľ %1$s @@ -1077,7 +1077,7 @@ Hmotnostný limit Zadajte hmotnosť vozidla, ktorá musí byť povolená na cestách. Vybrať GPX… - Vybrať cieľ + Zadať cieľ Predvoľby trasy Informácie trasy Pridať ako ďalší cieľ @@ -2892,7 +2892,7 @@ Zodpovedá oblasti: %1$s x %2$s Pridať Domov Pridať Prácu Práca - Najprv pridajte cieľ + Prosím najprv zadajte cieľ Vymeniť Zobraziť viac Zobrazené stopy From dbc41b5c057334ac5eb7ef8157cb85199e84e744 Mon Sep 17 00:00:00 2001 From: Jeff Huang Date: Sun, 1 Mar 2020 04:23:12 +0000 Subject: [PATCH 24/46] Translated using Weblate (Chinese (Traditional)) Currently translated at 100.0% (3206 of 3206 strings) --- OsmAnd/res/values-zh-rTW/strings.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/OsmAnd/res/values-zh-rTW/strings.xml b/OsmAnd/res/values-zh-rTW/strings.xml index aa64c993cc..ae44b9b2be 100644 --- a/OsmAnd/res/values-zh-rTW/strings.xml +++ b/OsmAnd/res/values-zh-rTW/strings.xml @@ -3553,4 +3553,5 @@ \n選取動作。 一些項目已存在 選取要匯入的資料。 + 算繪樣式 \ No newline at end of file From 451b60ddab2e231b26bf888965250f14df48d8d5 Mon Sep 17 00:00:00 2001 From: jan madsen Date: Sun, 1 Mar 2020 12:44:26 +0000 Subject: [PATCH 25/46] Translated using Weblate (Danish) Currently translated at 99.6% (3759 of 3772 strings) --- OsmAnd/res/values-da/phrases.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/OsmAnd/res/values-da/phrases.xml b/OsmAnd/res/values-da/phrases.xml index b99dc924c5..0aad9dd01a 100644 --- a/OsmAnd/res/values-da/phrases.xml +++ b/OsmAnd/res/values-da/phrases.xml @@ -3799,4 +3799,5 @@ Bowlingcenter Piste-referencenummer Jagtbase + Scuba dykkercenter \ No newline at end of file From 7a362721afb4cfb6028979c6ce23a64a2cb959de Mon Sep 17 00:00:00 2001 From: Ammuu5 Date: Sun, 1 Mar 2020 22:44:55 +0000 Subject: [PATCH 26/46] Translated using Weblate (Finnish) Currently translated at 29.7% (1122 of 3772 strings) --- OsmAnd/res/values-fi/phrases.xml | 45 ++++++++++++++++++++++++++++++-- 1 file changed, 43 insertions(+), 2 deletions(-) diff --git a/OsmAnd/res/values-fi/phrases.xml b/OsmAnd/res/values-fi/phrases.xml index 11338dc6d4..df99b023e9 100644 --- a/OsmAnd/res/values-fi/phrases.xml +++ b/OsmAnd/res/values-fi/phrases.xml @@ -468,7 +468,7 @@ HiFi-kauppa Metsästystarvikkeet Soitinliike - Luomuruokaa + Luomutuotteita Ulkoilukauppa Lemmikkieläinkauppa Pölynimurikauppa @@ -1082,9 +1082,50 @@ Vaara: miinakenttä Vaara: saastuminen Ajoneuvo pääsy: salliva - + Salliva Salliva Salliva Joki + Roskakori + Lentopallo + Puu + Luonnonsuojelualue + Oliivi + Omena + Palmuöljy + Appelsiini + Manteli + Banaani + kookospähkinä + Kirsikka + Luumu + Persikka + Tee + Kiivi + Mango + Kumi + Kahvi + Granaattiomena + kansainvälinen nimi + Kansallinen nimi + Alueellinen nimi + Paikallinen nimi + Vanha nimi + Vaihtoehtoinen nimi + Mineraali + Panimon nimi + Pesukone: ei + Virallinen nimi + Räjähdysaika (UTC) + Talon nimi + Terveyspalvelu: rokotus: kyllä + Terveyspalvelu: rokotus: ei + Terveyspalvelu: tuki: kyllä + Terveyspalvelu: tuki: ei + Perhe + URL + Tyyppi + Tila + Muta \ No newline at end of file From a4605dbf4f92f0ed37f5c82dfea32b94a71b5691 Mon Sep 17 00:00:00 2001 From: ace shadow Date: Sun, 1 Mar 2020 10:37:39 +0000 Subject: [PATCH 27/46] Translated using Weblate (Slovak) Currently translated at 93.5% (3530 of 3772 strings) --- OsmAnd/res/values-sk/phrases.xml | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/OsmAnd/res/values-sk/phrases.xml b/OsmAnd/res/values-sk/phrases.xml index e3993693d0..81a30ff0fb 100644 --- a/OsmAnd/res/values-sk/phrases.xml +++ b/OsmAnd/res/values-sk/phrases.xml @@ -3542,4 +3542,14 @@ Bowlingové centrum Číslo zjazdovky Výška poplatku + Horúci prameň + Hammam + Termálny + Rieka + Jazero + Kúpeľ pre nohy + Áno + Nie + Poľovnícka základňa + Potápačské centrum \ No newline at end of file From cf5d45d46ee89dcdfc93dccfe4669d4ea137ab13 Mon Sep 17 00:00:00 2001 From: jan madsen Date: Sun, 1 Mar 2020 12:44:50 +0000 Subject: [PATCH 28/46] Translated using Weblate (Danish) Currently translated at 98.5% (263 of 267 strings) Translation: OsmAnd/Telegram Translate-URL: https://hosted.weblate.org/projects/osmand/telegram/da/ --- OsmAnd-telegram/res/values-da/strings.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/OsmAnd-telegram/res/values-da/strings.xml b/OsmAnd-telegram/res/values-da/strings.xml index af5f48e160..a6a4a396dc 100644 --- a/OsmAnd-telegram/res/values-da/strings.xml +++ b/OsmAnd-telegram/res/values-da/strings.xml @@ -268,4 +268,5 @@ Sidste opdatering fra Telegram: %1$s siden Sidste svar: %1$s siden %1$s siden + ERR \ No newline at end of file From c0472b7b7996f469e8f76aeb0998dd3bfe9b666f Mon Sep 17 00:00:00 2001 From: josep constanti Date: Sun, 1 Mar 2020 11:55:28 +0000 Subject: [PATCH 29/46] Translated using Weblate (Catalan) Currently translated at 100.0% (267 of 267 strings) Translation: OsmAnd/Telegram Translate-URL: https://hosted.weblate.org/projects/osmand/telegram/ca/ --- OsmAnd-telegram/res/values-ca/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OsmAnd-telegram/res/values-ca/strings.xml b/OsmAnd-telegram/res/values-ca/strings.xml index 3659310ef1..08e19f2b0a 100644 --- a/OsmAnd-telegram/res/values-ca/strings.xml +++ b/OsmAnd-telegram/res/values-ca/strings.xml @@ -241,7 +241,7 @@ Velocitat mínima de registre Filtre: no s\'enregistra per sota de la velocitat seleccionada Configuració GPX - No hem recopilat dades per al dia seleccionat + No hem recopilat dades del dia seleccionat No hi ha dades Finalitza Comença From 9ebc9187cb6266659a11297a6090105acaed4101 Mon Sep 17 00:00:00 2001 From: nasr pen Date: Sat, 29 Feb 2020 17:55:54 +0000 Subject: [PATCH 30/46] Translated using Weblate (Arabic) Currently translated at 99.6% (266 of 267 strings) Translation: OsmAnd/Telegram Translate-URL: https://hosted.weblate.org/projects/osmand/telegram/ar/ --- OsmAnd-telegram/res/values-ar/strings.xml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/OsmAnd-telegram/res/values-ar/strings.xml b/OsmAnd-telegram/res/values-ar/strings.xml index 66ee21d97e..a96d61b24c 100644 --- a/OsmAnd-telegram/res/values-ar/strings.xml +++ b/OsmAnd-telegram/res/values-ar/strings.xml @@ -13,7 +13,7 @@ حالة وضع السكون ميل بحري ميل بحري في الساعة (عقدة) - كم ، متر + كم ، م نهاية الرسائل المحفوظة تحديث @@ -43,7 +43,7 @@ ياردة قدم ميل - كلم + كم م ميل بحري د/م @@ -58,7 +58,7 @@ ميل ، قدم ميل ، ياردة ميل بحري - ميل ، متر + ميل ، م بحث الارتفاع تفعيل From 0546198c3e8115507b0be6006060e4e5e77c544c Mon Sep 17 00:00:00 2001 From: Ammuu5 Date: Sun, 1 Mar 2020 23:26:25 +0000 Subject: [PATCH 31/46] Translated using Weblate (Finnish) Currently translated at 1.1% (3 of 267 strings) Translation: OsmAnd/Telegram Translate-URL: https://hosted.weblate.org/projects/osmand/telegram/fi/ --- OsmAnd-telegram/res/values-fi/strings.xml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/OsmAnd-telegram/res/values-fi/strings.xml b/OsmAnd-telegram/res/values-fi/strings.xml index a6b3daec93..0347295cb7 100644 --- a/OsmAnd-telegram/res/values-fi/strings.xml +++ b/OsmAnd-telegram/res/values-fi/strings.xml @@ -1,2 +1,6 @@ - \ No newline at end of file + + Pois käytöstä + Tallenna + Lisää laite + \ No newline at end of file From acd5fda0dcd326d51c1e6390535fdf7e83e1b1e0 Mon Sep 17 00:00:00 2001 From: xmd5a Date: Mon, 2 Mar 2020 12:13:12 +0300 Subject: [PATCH 32/46] Fix ru string --- OsmAnd/res/values-ru/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OsmAnd/res/values-ru/strings.xml b/OsmAnd/res/values-ru/strings.xml index 08991ed6fc..d81e2d307a 100644 --- a/OsmAnd/res/values-ru/strings.xml +++ b/OsmAnd/res/values-ru/strings.xml @@ -3435,7 +3435,7 @@ Очистить записанные данные • Профили: теперь вы можете изменить порядок, установить значок для карты, изменить все настройки для базовых профилей и вернуть их к настройкам по умолчанию \n -\n• Добавлен номер выхода в навигации +\n• Добавлен номер съезда в навигации \n \n• Переработаны настройки плагина \n From 6f91ec72a42d707dd8dd96cd7559edd7294759f7 Mon Sep 17 00:00:00 2001 From: Dmitry Date: Mon, 2 Mar 2020 13:00:40 +0200 Subject: [PATCH 33/46] Add recources for Speed Camera dialogs --- OsmAnd/res/drawable/ic_speed_camera_disabled.xml | 12 ++++++++++++ OsmAnd/res/drawable/img_speed_camera_warning.xml | 15 +++++++++++++++ 2 files changed, 27 insertions(+) create mode 100644 OsmAnd/res/drawable/ic_speed_camera_disabled.xml create mode 100644 OsmAnd/res/drawable/img_speed_camera_warning.xml diff --git a/OsmAnd/res/drawable/ic_speed_camera_disabled.xml b/OsmAnd/res/drawable/ic_speed_camera_disabled.xml new file mode 100644 index 0000000000..1b72498755 --- /dev/null +++ b/OsmAnd/res/drawable/ic_speed_camera_disabled.xml @@ -0,0 +1,12 @@ + + + + + + + + + + diff --git a/OsmAnd/res/drawable/img_speed_camera_warning.xml b/OsmAnd/res/drawable/img_speed_camera_warning.xml new file mode 100644 index 0000000000..aa5fb3bb5d --- /dev/null +++ b/OsmAnd/res/drawable/img_speed_camera_warning.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + From 574297d70b48f9072fa3d7453aa892779b4cc305 Mon Sep 17 00:00:00 2001 From: Dima-1 Date: Mon, 2 Mar 2020 15:33:30 +0200 Subject: [PATCH 34/46] Fix #8556 regression:GPX waypoint dialog does not show Save button --- .../mapcontextmenu/editors/PointEditorFragment.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/OsmAnd/src/net/osmand/plus/mapcontextmenu/editors/PointEditorFragment.java b/OsmAnd/src/net/osmand/plus/mapcontextmenu/editors/PointEditorFragment.java index 649f6d8787..b3b3e5d27f 100644 --- a/OsmAnd/src/net/osmand/plus/mapcontextmenu/editors/PointEditorFragment.java +++ b/OsmAnd/src/net/osmand/plus/mapcontextmenu/editors/PointEditorFragment.java @@ -166,11 +166,6 @@ public abstract class PointEditorFragment extends BaseOsmAndFragment { categoryEdit.setHint(R.string.access_hint_enter_category); descriptionEdit.setHint(R.string.access_hint_enter_description); } - - if (Build.VERSION.SDK_INT >= 21) { - AndroidUtils.addStatusBarPadding21v(app, view); - } - return view; } @@ -238,6 +233,11 @@ public abstract class PointEditorFragment extends BaseOsmAndFragment { return R.color.status_bar_color_light; } + @Override + protected boolean isFullScreenAllowed() { + return false; + } + private void hideKeyboard() { FragmentActivity activity = getActivity(); if (activity != null) { From 2bc1b518068391e8dfb67f5d6829762a62acdc03 Mon Sep 17 00:00:00 2001 From: Vitaliy Date: Mon, 2 Mar 2020 15:38:56 +0200 Subject: [PATCH 35/46] Fix possible npe --- .../java/net/osmand/router/RoutingConfiguration.java | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/OsmAnd-java/src/main/java/net/osmand/router/RoutingConfiguration.java b/OsmAnd-java/src/main/java/net/osmand/router/RoutingConfiguration.java index fb3432d4aa..14f26123a5 100644 --- a/OsmAnd-java/src/main/java/net/osmand/router/RoutingConfiguration.java +++ b/OsmAnd-java/src/main/java/net/osmand/router/RoutingConfiguration.java @@ -236,9 +236,9 @@ public class RoutingConfiguration { String id = parser.getAttributeValue("", "id"); String type = parser.getAttributeValue("", "type"); boolean defaultValue = Boolean.parseBoolean(parser.getAttributeValue("", "default")); - if (type.equalsIgnoreCase("boolean")) { + if ("boolean".equalsIgnoreCase(type)) { currentRouter.registerBooleanParameter(id, Algorithms.isEmpty(group) ? null : group, name, description, defaultValue); - } else if(type.equalsIgnoreCase("numeric")) { + } else if ("numeric".equalsIgnoreCase(type)) { String values = parser.getAttributeValue("", "values"); String valueDescriptions = parser.getAttributeValue("", "valueDescriptions"); String[] strValues = values.split(","); @@ -292,7 +292,7 @@ public class RoutingConfiguration { for (int i = 0; i < stack.size(); i++) { addSubclause(stack.get(i), ctx); } - } else if(stack.size() > 0 && stack.peek().tagName.equals("select")) { + } else if (stack.size() > 0 && "select".equals(stack.peek().tagName)) { addSubclause(rr, ctx); } stack.push(rr); @@ -312,11 +312,11 @@ public class RoutingConfiguration { if (!Algorithms.isEmpty(rr.t)) { ctx.getLastRule().registerAndTagValueCondition(rr.t, Algorithms.isEmpty(rr.v) ? null : rr.v, not); } - if (rr.tagName.equals("gt")) { + if ("gt".equals(rr.tagName)) { ctx.getLastRule().registerGreatCondition(rr.value1, rr.value2, rr.type); - } else if (rr.tagName.equals("le")) { + } else if ("le".equals(rr.tagName)) { ctx.getLastRule().registerLessCondition(rr.value1, rr.value2, rr.type); - } else if (rr.tagName.equals("eq")) { + } else if ("eq".equals(rr.tagName)) { ctx.getLastRule().registerEqualCondition(rr.value1, rr.value2, rr.type); } } From 145faf5168f28c377e0ca18203ba89c34d998404 Mon Sep 17 00:00:00 2001 From: Vitaliy Date: Mon, 2 Mar 2020 15:39:58 +0200 Subject: [PATCH 36/46] Add import rendering files --- .../main/java/net/osmand/IndexConstants.java | 2 +- OsmAnd/res/values/strings.xml | 1 + .../src/net/osmand/plus/AppInitializer.java | 2 +- .../net/osmand/plus/OsmandApplication.java | 6 +- .../net/osmand/plus/helpers/ImportHelper.java | 133 +++++++++++++++++- .../osmand/plus/render/RendererRegistry.java | 4 +- 6 files changed, 137 insertions(+), 11 deletions(-) diff --git a/OsmAnd-java/src/main/java/net/osmand/IndexConstants.java b/OsmAnd-java/src/main/java/net/osmand/IndexConstants.java index 26a4e252ed..78216f3616 100644 --- a/OsmAnd-java/src/main/java/net/osmand/IndexConstants.java +++ b/OsmAnd-java/src/main/java/net/osmand/IndexConstants.java @@ -42,7 +42,7 @@ public class IndexConstants { public static final String OSMAND_SETTINGS_FILE_EXT = ".osf"; - public static final String ROUTING_FILE_EXT = ".xml"; + public static final String ROUTING_AND_RENDERING_FILE_EXT = ".xml"; public static final String RENDERER_INDEX_EXT = ".render.xml"; //$NON-NLS-1$ diff --git a/OsmAnd/res/values/strings.xml b/OsmAnd/res/values/strings.xml index 6984349329..f9d10b1567 100644 --- a/OsmAnd/res/values/strings.xml +++ b/OsmAnd/res/values/strings.xml @@ -11,6 +11,7 @@ Thx - Hardy --> + Import rendering file Custom profile Angle: %s° Angle diff --git a/OsmAnd/src/net/osmand/plus/AppInitializer.java b/OsmAnd/src/net/osmand/plus/AppInitializer.java index ad022d3051..9d609b2bb7 100644 --- a/OsmAnd/src/net/osmand/plus/AppInitializer.java +++ b/OsmAnd/src/net/osmand/plus/AppInitializer.java @@ -617,7 +617,7 @@ public class AppInitializer implements IProgress { File[] fl = routingFolder.listFiles(); if (fl != null && fl.length > 0) { for (File f : fl) { - if (f.isFile() && f.getName().endsWith(IndexConstants.ROUTING_FILE_EXT) && f.canRead()) { + if (f.isFile() && f.getName().endsWith(IndexConstants.ROUTING_AND_RENDERING_FILE_EXT) && f.canRead()) { try { String fileName = f.getName(); RoutingConfiguration.Builder builder = new RoutingConfiguration.Builder(defaultAttributes); diff --git a/OsmAnd/src/net/osmand/plus/OsmandApplication.java b/OsmAnd/src/net/osmand/plus/OsmandApplication.java index b71dec40ec..361f05dc7f 100644 --- a/OsmAnd/src/net/osmand/plus/OsmandApplication.java +++ b/OsmAnd/src/net/osmand/plus/OsmandApplication.java @@ -90,7 +90,7 @@ import java.util.concurrent.ConcurrentHashMap; import btools.routingapp.BRouterServiceConnection; import btools.routingapp.IBRouterService; -import static net.osmand.IndexConstants.ROUTING_FILE_EXT; +import static net.osmand.IndexConstants.ROUTING_AND_RENDERING_FILE_EXT; public class OsmandApplication extends MultiDexApplication { public static final String EXCEPTION_PATH = "exception.log"; @@ -840,9 +840,9 @@ public class OsmandApplication extends MultiDexApplication { RoutingConfiguration.Builder builder = null; String routingProfileKey = mode.getRoutingProfile(); if (!Algorithms.isEmpty(routingProfileKey)) { - int index = routingProfileKey.indexOf(ROUTING_FILE_EXT); + int index = routingProfileKey.indexOf(ROUTING_AND_RENDERING_FILE_EXT); if (index != -1) { - String configKey = routingProfileKey.substring(0, index + ROUTING_FILE_EXT.length()); + String configKey = routingProfileKey.substring(0, index + ROUTING_AND_RENDERING_FILE_EXT.length()); builder = customRoutingConfigs.get(configKey); } } diff --git a/OsmAnd/src/net/osmand/plus/helpers/ImportHelper.java b/OsmAnd/src/net/osmand/plus/helpers/ImportHelper.java index d599458d78..9cb66f91d9 100644 --- a/OsmAnd/src/net/osmand/plus/helpers/ImportHelper.java +++ b/OsmAnd/src/net/osmand/plus/helpers/ImportHelper.java @@ -6,6 +6,7 @@ import android.app.ProgressDialog; import android.content.DialogInterface; import android.content.Intent; import android.database.Cursor; +import android.graphics.drawable.Drawable; import android.net.Uri; import android.os.AsyncTask; import android.os.Build; @@ -19,7 +20,13 @@ import android.support.v4.app.FragmentManager; import android.support.v7.app.AlertDialog; import android.support.v7.app.AppCompatActivity; import android.text.style.ForegroundColorSpan; +import android.util.TypedValue; +import android.view.LayoutInflater; import android.view.View; +import android.view.ViewGroup; +import android.widget.ArrayAdapter; +import android.widget.ImageView; +import android.widget.TextView; import android.widget.Toast; import net.osmand.AndroidUtils; @@ -41,6 +48,7 @@ import net.osmand.plus.OsmandPlugin; import net.osmand.plus.R; import net.osmand.plus.SettingsHelper; import net.osmand.plus.SettingsHelper.SettingsImportListener; +import net.osmand.plus.UiUtilities; import net.osmand.plus.activities.ActivityResultListener; import net.osmand.plus.activities.MapActivity; import net.osmand.plus.activities.TrackActivity; @@ -76,7 +84,7 @@ import java.util.zip.ZipInputStream; import static android.app.Activity.RESULT_OK; import static net.osmand.IndexConstants.OSMAND_SETTINGS_FILE_EXT; -import static net.osmand.IndexConstants.ROUTING_FILE_EXT; +import static net.osmand.IndexConstants.ROUTING_AND_RENDERING_FILE_EXT; import static net.osmand.plus.AppInitializer.loadRoutingFiles; import static net.osmand.plus.myplaces.FavoritesActivity.FAV_TAB; import static net.osmand.plus.myplaces.FavoritesActivity.GPX_TAB; @@ -99,7 +107,7 @@ public class ImportHelper { public enum ImportType { SETTINGS(IndexConstants.OSMAND_SETTINGS_FILE_EXT), - ROUTING(ROUTING_FILE_EXT); + ROUTING(ROUTING_AND_RENDERING_FILE_EXT); ImportType(String extension) { this.extension = extension; @@ -184,8 +192,8 @@ public class ImportHelper { handleSqliteTileImport(intentUri, fileName); } else if (fileName != null && fileName.endsWith(OSMAND_SETTINGS_FILE_EXT)) { handleOsmAndSettingsImport(intentUri, fileName, extras, true, null); - } else if (fileName != null && fileName.endsWith(ROUTING_FILE_EXT)) { - handleRoutingFileImport(intentUri, fileName, null); + } else if (fileName != null && fileName.endsWith(ROUTING_AND_RENDERING_FILE_EXT)) { + handleXmlFileImport(intentUri, fileName); } else { handleFavouritesImport(intentUri, fileName, saveFile, useImportDir, false); } @@ -818,6 +826,123 @@ public class ImportHelper { return !activity.isFinishing(); } + private void handleXmlFileImport(final Uri intentUri, final String fileName) { + AlertDialog.Builder builder = new AlertDialog.Builder(activity); + + final boolean nightMode; + if (activity instanceof MapActivity) { + nightMode = app.getDaynightHelper().isNightModeForMapControls(); + } else { + nightMode = !app.getSettings().isLightContent(); + } + final LayoutInflater themedInflater = UiUtilities.getInflater(activity, nightMode); + + View dialogTitle = themedInflater.inflate(R.layout.bottom_sheet_item_simple, null); + dialogTitle.findViewById(R.id.icon).setVisibility(View.GONE); + TextView tvTitle = dialogTitle.findViewById(R.id.title); + tvTitle.setText(R.string.import_from_file); + int textSize = (int) app.getResources().getDimension(R.dimen.dialog_header_text_size); + tvTitle.setTextSize(TypedValue.COMPLEX_UNIT_PX, textSize); + builder.setCustomTitle(dialogTitle); + + String[] strings = new String[2]; + strings[0] = app.getString(R.string.import_routing_file); + strings[1] = app.getString(R.string.import_rendering_file); + + final int[] icons = new int[2]; + icons[0] = R.drawable.ic_action_gdirections_dark; + icons[1] = R.drawable.ic_map; + + ArrayAdapter singleChoiceAdapter = new ArrayAdapter(activity, R.layout.bottom_sheet_item_simple, R.id.title, strings) { + @NonNull + @Override + public View getView(int position, View convertView, @NonNull ViewGroup parent) { + View v = convertView; + if (v == null) { + v = themedInflater.inflate(R.layout.bottom_sheet_item_simple, parent, false); + } + int activeColor = nightMode ? R.color.active_color_primary_dark : R.color.active_color_primary_light; + Drawable icon = app.getUIUtilities().getIcon(icons[position], activeColor); + ((TextView) v.findViewById(R.id.title)).setText(getItem(position)); + ((ImageView) v.findViewById(R.id.icon)).setImageDrawable(icon); + return v; + } + }; + + builder.setAdapter(singleChoiceAdapter, new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + if (which == 0) { + handleRoutingFileImport(intentUri, fileName, null); + } else { + handleRenderingFileImport(intentUri, fileName); + } + } + }); + + builder.setNegativeButton(R.string.shared_string_cancel, null); + AlertDialog dialog = builder.create(); + dialog.getListView().setDividerHeight(0); + dialog.show(); + } + + @SuppressLint("StaticFieldLeak") + private void handleRenderingFileImport(final Uri intentUri, final String fileName) { + final AsyncTask renderingImportTask = new AsyncTask() { + + String mFileName; + ProgressDialog progress; + + @Override + protected void onPreExecute() { + progress = ProgressDialog.show(activity, app.getString(R.string.loading_smth, ""), app.getString(R.string.loading_data)); + mFileName = fileName; + } + + @Override + protected String doInBackground(Void... voids) { + File renderingDir = app.getAppPath(IndexConstants.RENDERERS_DIR); + if (!renderingDir.exists()) { + renderingDir.mkdirs(); + } + File dest = new File(renderingDir, mFileName); + while (dest.exists()) { + mFileName = AndroidUtils.createNewFileName(mFileName); + dest = new File(renderingDir, mFileName); + } + return copyFile(app, dest, intentUri, true); + } + + @Override + protected void onPostExecute(String error) { + File renderingDir = app.getAppPath(IndexConstants.RENDERERS_DIR); + File file = new File(renderingDir, mFileName); + if (error == null && file.exists()) { + app.getRendererRegistry().updateExternalRenderers(); + } else { + app.showShortToastMessage(app.getString(R.string.file_import_error, mFileName, error)); + } + if (isActivityNotDestroyed(activity)) { + progress.dismiss(); + } + } + }; + if (app.isApplicationInitializing()) { + app.getAppInitializer().addListener(new AppInitializer.AppInitializeListener() { + @Override + public void onProgress(AppInitializer init, AppInitializer.InitEvents event) { + } + + @Override + public void onFinish(AppInitializer init) { + renderingImportTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); + } + }); + } else { + renderingImportTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); + } + } + private void handleResult(final GPXFile result, final String name, final boolean save, final boolean useImportDir, boolean forceImportFavourites) { if (result != null) { diff --git a/OsmAnd/src/net/osmand/plus/render/RendererRegistry.java b/OsmAnd/src/net/osmand/plus/render/RendererRegistry.java index a5bfc2d7bc..ca8cb00d11 100644 --- a/OsmAnd/src/net/osmand/plus/render/RendererRegistry.java +++ b/OsmAnd/src/net/osmand/plus/render/RendererRegistry.java @@ -257,9 +257,9 @@ public class RendererRegistry { File[] lf = file.listFiles(); if (lf != null) { for (File f : lf) { - if (f != null && f.getName().endsWith(IndexConstants.RENDERER_INDEX_EXT)) { + if (f != null && f.getName().endsWith(IndexConstants.ROUTING_AND_RENDERING_FILE_EXT)) { if(!internalRenderers.containsValue(f.getName())) { - String name = f.getName().substring(0, f.getName().length() - IndexConstants.RENDERER_INDEX_EXT.length()); + String name = f.getName().substring(0, f.getName().length() - IndexConstants.ROUTING_AND_RENDERING_FILE_EXT.length()); externalRenderers.put(name.replace('_', ' ').replace('-', ' '), f); } } From 364b6e42b55fa1b7fa58adf0ce55a6616d3981f1 Mon Sep 17 00:00:00 2001 From: max-klaus Date: Mon, 2 Mar 2020 17:29:08 +0300 Subject: [PATCH 37/46] Fix quick action string --- OsmAnd/src/net/osmand/plus/quickaction/QuickAction.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/OsmAnd/src/net/osmand/plus/quickaction/QuickAction.java b/OsmAnd/src/net/osmand/plus/quickaction/QuickAction.java index f1245dafb4..03dd53a420 100644 --- a/OsmAnd/src/net/osmand/plus/quickaction/QuickAction.java +++ b/OsmAnd/src/net/osmand/plus/quickaction/QuickAction.java @@ -35,7 +35,7 @@ public class QuickAction { this.id = System.currentTimeMillis(); } - protected QuickAction(int type, int nameRes) { + protected QuickAction(int type, @StringRes int nameRes) { this.id = System.currentTimeMillis(); this.nameRes = nameRes; this.type = type; @@ -89,7 +89,7 @@ public class QuickAction { } public String getName(Context context) { - return name == null || name.isEmpty() ? nameRes > 0 ? context.getString(nameRes) : "" : name; + return name == null || name.isEmpty() ? context.getString(nameRes) : name; } public HashMap getParams() { From b192fc7cd96e4df75d292a0b1a61374591448da3 Mon Sep 17 00:00:00 2001 From: max-klaus Date: Mon, 2 Mar 2020 17:34:00 +0300 Subject: [PATCH 38/46] Fix quick action string 2 --- OsmAnd/src/net/osmand/plus/quickaction/QuickAction.java | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/OsmAnd/src/net/osmand/plus/quickaction/QuickAction.java b/OsmAnd/src/net/osmand/plus/quickaction/QuickAction.java index 03dd53a420..44408fae9e 100644 --- a/OsmAnd/src/net/osmand/plus/quickaction/QuickAction.java +++ b/OsmAnd/src/net/osmand/plus/quickaction/QuickAction.java @@ -10,6 +10,7 @@ import android.widget.EditText; import net.osmand.plus.OsmandApplication; import net.osmand.plus.activities.MapActivity; +import net.osmand.util.Algorithms; import java.util.HashMap; import java.util.List; @@ -24,7 +25,7 @@ public class QuickAction { protected int type; protected long id; - private @StringRes int nameRes; + private @StringRes Integer nameRes; private @DrawableRes int iconRes; private boolean isActionEditable; @@ -89,7 +90,11 @@ public class QuickAction { } public String getName(Context context) { - return name == null || name.isEmpty() ? context.getString(nameRes) : name; + if (Algorithms.isEmpty(name)) { + return nameRes != null ? context.getString(nameRes) : ""; + } else { + return name; + } } public HashMap getParams() { From db71be8f9e1cd8fbac2a8854288ff92517c623b4 Mon Sep 17 00:00:00 2001 From: jan madsen Date: Mon, 2 Mar 2020 17:32:03 +0000 Subject: [PATCH 39/46] Translated using Weblate (Danish) Currently translated at 89.0% (2854 of 3206 strings) --- OsmAnd/res/values-da/strings.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/OsmAnd/res/values-da/strings.xml b/OsmAnd/res/values-da/strings.xml index 90054422da..af7830d80e 100644 --- a/OsmAnd/res/values-da/strings.xml +++ b/OsmAnd/res/values-da/strings.xml @@ -3513,4 +3513,5 @@ Repræsenterer område: %1$s x %2$s Erstat alle Behold begge Renderingsstil + Den geografiske hensigt \'%s\' kunne ikke fortolkes. \ No newline at end of file From 8d69526cc6f81bf17469f4fe40140187a581947e Mon Sep 17 00:00:00 2001 From: Softmap Date: Mon, 2 Mar 2020 08:16:48 +0000 Subject: [PATCH 40/46] Translated using Weblate (Arabic) Currently translated at 100.0% (3206 of 3206 strings) --- OsmAnd/res/values-ar/strings.xml | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/OsmAnd/res/values-ar/strings.xml b/OsmAnd/res/values-ar/strings.xml index 5fcde19828..6ffcaeddc9 100644 --- a/OsmAnd/res/values-ar/strings.xml +++ b/OsmAnd/res/values-ar/strings.xml @@ -509,7 +509,8 @@ بيانات الخطوط المحيطية من فضلك فكر في شراء ملحق الخطوط المحيطية من Google Play لدعم المزيد من التطوير. الخطوط المحيطية - جار تشغيل صوت من التّسجيل المحدد. %1$s + جار تشغيل صوت من التّسجيل المحدد. +\n%1$s برنامج ZXing للبحث عن الباركود غيرُ مثبّت. بحث في السّوق ؟ مستوى تكبير الخطوط المحيطية: الأيسر الخلفي @@ -747,7 +748,7 @@ سيمارك متغير POI الخريطة مثبتة بالفعل. - اختر خرائط : + اختر خرائط (جزء محدد) للتثبيت أو التحديث. لا يوجد اتصال بالإنترنت. المزيد… مستوى التقريب الأدنى لاستخدام خرائط التوجيه. @@ -1926,7 +1927,7 @@ أدخل موضوع البحث لإيجاد POI شكراً Yandex على معلومات حركة المرور. حركة مرور Yandex - نقاط الاهتمام POI + نقاط الاهتمام POI… بحث عن نقاط الاهتمام استخدم كرة التتبع لتحريك الخريطة. استخدم كرة التعقب @@ -1970,7 +1971,8 @@ الانتظار الأقصى للإصلاح إصدار غير معتمد من البيانات الصوتية البيانات الصوتية المحددة تالفة - بطاقة الذاكرة غير متاحة. لن تكون قادرا على رؤية الخرائط أو العثور على أماكن. + بطاقة الذاكرة غير متاحة. +\nلن تكون قادرا على رؤية الخرائط أو العثور على أماكن. بطاقة الذاكرة في وضع القراءة فقط. يمكنك فقط مشاهدة الخريطة المحملة مسبقا ولا يمكنك التحميل من الإنترنت. انعطف يميناً بشكل حاد انعطف يساراً بشكل حاد @@ -2144,8 +2146,7 @@ مصدر الخريطة مصدر الخريطة إضافة مصدر خريطة - مصدر الخريطة: -\n\"%s\" + مصدر الخريطة تغير الى \"%s\". تغيير موقع الزر الضغط على زر الإجراء سيقوم بعرض أو إخفاء نقاطك المفضلة على الخريطة. دع الحقل فارغا إن كنت ترغب في استعمال العنوان أو اسم المكان. @@ -3102,7 +3103,7 @@ يستخدم أوسماند تنسيق UTM وهو مشابه ولكن غير مطابق لتنسيق UTM الناتو. مثال معيار الإحداثيات - فتح رمز الموقع + رمز موقع مفتوح سيتم تطبيق التنسيق المحدد في كل أنحاء التطبيق. يتم تحديد هذا الاعداد بشكل افتراضي لملفات التعريف: %s تغيير الإعدادات @@ -3320,8 +3321,8 @@ لوحة المفاتيح وندرلينك ببغاء - "المسار: المسافة%s ، وقت التوجيه%s -\nالحساب:%.1f ث ،%d طرق ،%d تجانب)" + المسار: المسافة%s، وقت التوجيه %s. +\nالحساب: %.1f ث، %d طريق، %d تجانب) الأوكيتانية ثم %1$s تطبيق فقط على \"%1$s\" From 2f8c20a91bc0bde2fd76faba92efb2022b370ac7 Mon Sep 17 00:00:00 2001 From: nasr pen Date: Mon, 2 Mar 2020 17:59:59 +0000 Subject: [PATCH 41/46] Translated using Weblate (Arabic) Currently translated at 100.0% (3206 of 3206 strings) --- OsmAnd/res/values-ar/strings.xml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/OsmAnd/res/values-ar/strings.xml b/OsmAnd/res/values-ar/strings.xml index 6ffcaeddc9..4f1f51a680 100644 --- a/OsmAnd/res/values-ar/strings.xml +++ b/OsmAnd/res/values-ar/strings.xml @@ -278,7 +278,7 @@ قابل للتحميل: %1$s أقصى تكبير: %1$s أدنى تكبير: %1$s - تعريف/تعديل… + تعريف/تعديل ضبط إعدادات نطق أسماء الشوارع، وتحذيرات المرور (توقيفات الإجبارية، ومطبات السرعة)، و تحذيرات كاميرات السرعة، و السرعة القصوى. نطق أسماء الشوارع ( نطق آلي TTS ) السرعة القصوى @@ -2506,7 +2506,7 @@ سيتم إزالة المجموعة بعد إعادة تشغيل التطبيق. العلامات نمط الإحداثيات - استخدم لوحة مفاتيح النظام + لوحة مفاتيح النظام اختر نسق إدخال الأحداثيات. يمكنك دائماً تغييره بالنقر على خيارات. إدخال إحداثيات سريع تجنب طرق الثلوج والطين @@ -2601,7 +2601,7 @@ غ ج ش - الاسم الاختياري للنقطة + اسم النقطة الطرق القريبة التي في الداخل أدخل اسم الملف. خطأ أثناء استرجاع الخريطة From c833293e956e528d86df8d08295e36ae7aa1ab7f Mon Sep 17 00:00:00 2001 From: Softmap Date: Mon, 2 Mar 2020 08:25:06 +0000 Subject: [PATCH 42/46] Translated using Weblate (Arabic) Currently translated at 43.0% (1625 of 3772 strings) --- OsmAnd/res/values-ar/phrases.xml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/OsmAnd/res/values-ar/phrases.xml b/OsmAnd/res/values-ar/phrases.xml index 0486a9f665..fcc592f8be 100644 --- a/OsmAnd/res/values-ar/phrases.xml +++ b/OsmAnd/res/values-ar/phrases.xml @@ -1623,4 +1623,12 @@ عبّارة مصدر الطاقة: الكتلة الحيوية موقع Reddit + اصطف واركب + فئة الصعوبة + تسلق الصخور + نعم + منفذ للحافلة + مدخل دراجات نارية + مدخل معاقين + سحب نقدي \ No newline at end of file From 04781b48438504e0f5314533a1c34e414e857330 Mon Sep 17 00:00:00 2001 From: Ahmad Alfrhood Date: Mon, 2 Mar 2020 14:30:33 +0000 Subject: [PATCH 43/46] Translated using Weblate (Arabic) Currently translated at 100.0% (267 of 267 strings) Translation: OsmAnd/Telegram Translate-URL: https://hosted.weblate.org/projects/osmand/telegram/ar/ --- OsmAnd-telegram/res/values-ar/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OsmAnd-telegram/res/values-ar/strings.xml b/OsmAnd-telegram/res/values-ar/strings.xml index a96d61b24c..11a6505fcb 100644 --- a/OsmAnd-telegram/res/values-ar/strings.xml +++ b/OsmAnd-telegram/res/values-ar/strings.xml @@ -252,7 +252,7 @@ الحد الأدنى لسرعة التسجيل عامل التصفية: لا تسجيل أقل من السرعة المحددة إعدادات GPX - ليس لدينا بيانات تم جمعها لليوم المحدد + ليس لدينا بيانات مجمعة لليوم المحدد لا توجد بيانات تحديد وقت للعرض تاريخ البدء — تاريخ الانتهاء From bd880f088e1e7cb3e7ec0e85e76f37ae7c7d4bed Mon Sep 17 00:00:00 2001 From: xmd5a Date: Wed, 4 Mar 2020 11:04:06 +0300 Subject: [PATCH 44/46] Add phrases --- OsmAnd/res/values/phrases.xml | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/OsmAnd/res/values/phrases.xml b/OsmAnd/res/values/phrases.xml index d245fcaa83..1d48f8e1d2 100644 --- a/OsmAnd/res/values/phrases.xml +++ b/OsmAnd/res/values/phrases.xml @@ -131,6 +131,8 @@ Open air Type Status + SMS + Video Store @@ -4191,4 +4193,11 @@ Scuba diving centre - + Yes + No + Booth + Booth type + Yes + No + + \ No newline at end of file From f648eaa7b6d0eecaa7b8c5261c3973cfe36c673c Mon Sep 17 00:00:00 2001 From: xmd5a Date: Wed, 4 Mar 2020 11:20:41 +0300 Subject: [PATCH 45/46] Add phrases --- OsmAnd/res/values/phrases.xml | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/OsmAnd/res/values/phrases.xml b/OsmAnd/res/values/phrases.xml index 1d48f8e1d2..c1278ad3c6 100644 --- a/OsmAnd/res/values/phrases.xml +++ b/OsmAnd/res/values/phrases.xml @@ -878,8 +878,8 @@ Internet access: service Internet access: yes Internet access: no - Internet access - fee charged - Internet access - no fee + Internet access: fee charged + Internet access: no fee Monastery @@ -4200,4 +4200,10 @@ Yes No + Signal to find the pole + Only when walking is allowed + Contrasted + Primitive + Incorrect + \ No newline at end of file From 30d9e5ea55032cedaa3a57365c4daae0c65981eb Mon Sep 17 00:00:00 2001 From: xmd5a Date: Wed, 4 Mar 2020 11:26:40 +0300 Subject: [PATCH 46/46] Fix --- OsmAnd/res/values/phrases.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OsmAnd/res/values/phrases.xml b/OsmAnd/res/values/phrases.xml index c1278ad3c6..9377fa8e94 100644 --- a/OsmAnd/res/values/phrases.xml +++ b/OsmAnd/res/values/phrases.xml @@ -132,7 +132,7 @@ Type Status SMS - Video + Video Store