From 2181731c7bc4e6fdd5e2fe4d6c1b78b20f66356c Mon Sep 17 00:00:00 2001 From: Vitaliy Date: Thu, 23 Jul 2020 11:55:34 +0300 Subject: [PATCH 01/53] Start navigation on track from context menu --- OsmAnd/res/values/strings.xml | 1 + .../OptionsBottomSheetDialogFragment.java | 2 +- .../osmand/plus/views/MapControlsLayer.java | 69 ++++++++++--------- 3 files changed, 40 insertions(+), 32 deletions(-) diff --git a/OsmAnd/res/values/strings.xml b/OsmAnd/res/values/strings.xml index 1de9329e5e..c6f2ab1728 100644 --- a/OsmAnd/res/values/strings.xml +++ b/OsmAnd/res/values/strings.xml @@ -11,6 +11,7 @@ Thx - Hardy --> + Overwrite GPX Solid Direction arrows Custom diff --git a/OsmAnd/src/net/osmand/plus/measurementtool/OptionsBottomSheetDialogFragment.java b/OsmAnd/src/net/osmand/plus/measurementtool/OptionsBottomSheetDialogFragment.java index 9c6168767c..91a20db1e4 100644 --- a/OsmAnd/src/net/osmand/plus/measurementtool/OptionsBottomSheetDialogFragment.java +++ b/OsmAnd/src/net/osmand/plus/measurementtool/OptionsBottomSheetDialogFragment.java @@ -95,7 +95,7 @@ public class OptionsBottomSheetDialogFragment extends MenuBottomSheetDialogFragm BaseBottomSheetItem saveAsNewSegmentItem = new SimpleBottomSheetItem.Builder() .setIcon(getContentIcon(R.drawable.ic_action_polygom_dark)) - .setTitle("Overwrite GPX") + .setTitle(getString(R.string.overwrite_gpx)) .setLayoutId(R.layout.bottom_sheet_item_simple) .setOnClickListener(new View.OnClickListener() { @Override diff --git a/OsmAnd/src/net/osmand/plus/views/MapControlsLayer.java b/OsmAnd/src/net/osmand/plus/views/MapControlsLayer.java index b70510a835..e685bec671 100644 --- a/OsmAnd/src/net/osmand/plus/views/MapControlsLayer.java +++ b/OsmAnd/src/net/osmand/plus/views/MapControlsLayer.java @@ -32,6 +32,7 @@ import androidx.core.view.ViewPropertyAnimatorListener; import com.google.android.material.slider.Slider; import net.osmand.AndroidUtils; +import net.osmand.GPXUtilities.GPXFile; import net.osmand.Location; import net.osmand.core.android.MapRendererContext; import net.osmand.data.LatLon; @@ -52,6 +53,7 @@ import net.osmand.plus.dashboard.DashboardOnMap.DashboardType; import net.osmand.plus.dialogs.DirectionsDialogs; import net.osmand.plus.helpers.AndroidUiHelper; import net.osmand.plus.mapcontextmenu.MapContextMenu; +import net.osmand.plus.mapcontextmenu.controllers.SelectedGpxMenuController.SelectedGpxPoint; import net.osmand.plus.rastermaps.OsmandRasterMapsPlugin; import net.osmand.plus.routepreparationmenu.MapRouteInfoMenu; import net.osmand.plus.routepreparationmenu.MapRouteInfoMenu.PointType; @@ -440,7 +442,7 @@ public class MapControlsLayer extends OsmandMapLayer { public void navigateButton() { if (!OsmAndLocationProvider.isLocationPermissionAvailable(mapActivity)) { ActivityCompat.requestPermissions(mapActivity, - new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, + new String[] {Manifest.permission.ACCESS_FINE_LOCATION}, REQUEST_LOCATION_FOR_NAVIGATION_FAB_PERMISSION); } else { final MapContextMenu menu = mapActivity.getContextMenu(); @@ -449,43 +451,48 @@ public class MapControlsLayer extends OsmandMapLayer { menu.hide(); final TargetPointsHelper targets = mapActivity.getMyApplication().getTargetPointsHelper(); RoutingHelper routingHelper = mapActivity.getMyApplication().getRoutingHelper(); - if (routingHelper.isFollowingMode() || routingHelper.isRoutePlanningMode()) { - DirectionsDialogs.addWaypointDialogAndLaunchMap(mapActivity, latLon.getLatitude(), - latLon.getLongitude(), pointDescription); - } else if (targets.getIntermediatePoints().isEmpty()) { - startRoutePlanningWithDestination(latLon, pointDescription, targets); + + Object object = menu.getObject(); + if (object instanceof SelectedGpxPoint) { + GPXFile gpxFile = ((SelectedGpxPoint) object).getSelectedGpxFile().getGpxFile(); + mapActivity.getMapActions().enterRoutePlanningModeGivenGpx(gpxFile, null, null, true, true, MenuState.HEADER_ONLY); + routingHelper.recalculateRouteDueToSettingsChange(); menu.close(); } else { - AlertDialog.Builder bld = new AlertDialog.Builder(mapActivity); - bld.setTitle(R.string.new_directions_point_dialog); - final int[] defaultVls = new int[]{0}; - bld.setSingleChoiceItems(new String[]{ - mapActivity.getString(R.string.clear_intermediate_points), - mapActivity.getString(R.string.keep_intermediate_points) - }, 0, new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - defaultVls[0] = which; - } - }); - bld.setPositiveButton(R.string.shared_string_ok, new DialogInterface.OnClickListener() { + if (routingHelper.isFollowingMode() || routingHelper.isRoutePlanningMode()) { + DirectionsDialogs.addWaypointDialogAndLaunchMap(mapActivity, latLon.getLatitude(), + latLon.getLongitude(), pointDescription); + } else if (targets.getIntermediatePoints().isEmpty()) { + startRoutePlanningWithDestination(latLon, pointDescription, targets); + menu.close(); + } else { + AlertDialog.Builder bld = new AlertDialog.Builder(mapActivity); + bld.setTitle(R.string.new_directions_point_dialog); + final int[] defaultVls = new int[] {0}; + bld.setSingleChoiceItems(new String[] { + mapActivity.getString(R.string.clear_intermediate_points), + mapActivity.getString(R.string.keep_intermediate_points) + }, 0, new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + defaultVls[0] = which; + } + }); + bld.setPositiveButton(R.string.shared_string_ok, new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - if (defaultVls[0] == 0) { - targets.removeAllWayPoints(false, true); - targets.navigateToPoint(latLon, true, -1, pointDescription); - mapActivity.getMapActions().enterRoutePlanningModeGivenGpx(null, null, null, true, true, MenuState.HEADER_ONLY); - menu.close(); - } else { + @Override + public void onClick(DialogInterface dialog, int which) { + if (defaultVls[0] == 0) { + targets.removeAllWayPoints(false, true); + } targets.navigateToPoint(latLon, true, -1, pointDescription); mapActivity.getMapActions().enterRoutePlanningModeGivenGpx(null, null, null, true, true, MenuState.HEADER_ONLY); menu.close(); } - } - }); - bld.setNegativeButton(R.string.shared_string_cancel, null); - bld.show(); + }); + bld.setNegativeButton(R.string.shared_string_cancel, null); + bld.show(); + } } } } From bbb557b67defe904fd72ab03d8bed7c80615040f Mon Sep 17 00:00:00 2001 From: Vitaliy Date: Thu, 23 Jul 2020 16:08:34 +0300 Subject: [PATCH 02/53] Share gpx file from context menu --- .../SelectedGpxMenuController.java | 49 +++++++++++ .../plus/myplaces/SaveCurrentTrackTask.java | 70 ++++++++++++++++ .../plus/myplaces/SaveGpxAsyncTask.java | 49 ----------- .../plus/myplaces/TrackPointFragment.java | 84 +++++-------------- .../osmand/plus/views/MapControlsLayer.java | 2 +- 5 files changed, 141 insertions(+), 113 deletions(-) create mode 100644 OsmAnd/src/net/osmand/plus/myplaces/SaveCurrentTrackTask.java delete mode 100644 OsmAnd/src/net/osmand/plus/myplaces/SaveGpxAsyncTask.java diff --git a/OsmAnd/src/net/osmand/plus/mapcontextmenu/controllers/SelectedGpxMenuController.java b/OsmAnd/src/net/osmand/plus/mapcontextmenu/controllers/SelectedGpxMenuController.java index b31f24be46..7cb90af938 100644 --- a/OsmAnd/src/net/osmand/plus/mapcontextmenu/controllers/SelectedGpxMenuController.java +++ b/OsmAnd/src/net/osmand/plus/mapcontextmenu/controllers/SelectedGpxMenuController.java @@ -1,15 +1,19 @@ package net.osmand.plus.mapcontextmenu.controllers; import android.app.ProgressDialog; +import android.content.Context; import android.content.Intent; import android.graphics.drawable.Drawable; +import android.net.Uri; import android.os.AsyncTask; import androidx.annotation.NonNull; import net.osmand.AndroidUtils; import net.osmand.GPXUtilities; +import net.osmand.GPXUtilities.GPXFile; import net.osmand.GPXUtilities.WptPt; +import net.osmand.data.LatLon; import net.osmand.data.PointDescription; import net.osmand.plus.GpxSelectionHelper; import net.osmand.plus.GpxSelectionHelper.SelectedGpxFile; @@ -20,7 +24,10 @@ import net.osmand.plus.activities.TrackActivity; import net.osmand.plus.helpers.GpxUiHelper; import net.osmand.plus.mapcontextmenu.MenuController; import net.osmand.plus.mapcontextmenu.builders.SelectedGpxMenuBuilder; +import net.osmand.plus.myplaces.SaveCurrentTrackTask; import net.osmand.plus.settings.backend.OsmandSettings; +import net.osmand.plus.track.SaveGpxAsyncTask.SaveGpxListener; +import net.osmand.util.Algorithms; import java.io.File; import java.lang.ref.WeakReference; @@ -191,6 +198,48 @@ public class SelectedGpxMenuController extends MenuController { return getIcon(R.drawable.ic_action_polygom_dark, color); } + @Override + public void share(LatLon latLon, String title, String address) { + MapActivity mapActivity = getMapActivity(); + if (mapActivity != null && selectedGpxPoint != null) { + final GPXFile gpxFile = selectedGpxPoint.getSelectedGpxFile().getGpxFile(); + if (gpxFile != null) { + if (Algorithms.isEmpty(gpxFile.path)) { + SaveGpxListener saveGpxListener = new SaveGpxListener() { + @Override + public void gpxSavingStarted() { + + } + + @Override + public void gpxSavingFinished(Exception errorMessage) { + MapActivity mapActivity = getMapActivity(); + if (mapActivity != null) { + shareGpx(mapActivity, gpxFile.path); + } + } + }; + new SaveCurrentTrackTask(mapActivity.getMyApplication(), gpxFile, saveGpxListener).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); + } else { + shareGpx(mapActivity, gpxFile.path); + } + } + } else { + super.share(latLon, title, ""); + } + } + + private void shareGpx(@NonNull Context context, @NonNull String path) { + final Uri fileUri = AndroidUtils.getUriForFile(context, new File(path)); + final Intent sendIntent = new Intent(Intent.ACTION_SEND); + sendIntent.putExtra(Intent.EXTRA_STREAM, fileUri); + sendIntent.setType("application/gpx+xml"); + sendIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); + if (AndroidUtils.isIntentSafe(context, sendIntent)) { + context.startActivity(sendIntent); + } + } + public static class SelectedGpxPoint { private final WptPt selectedPoint; diff --git a/OsmAnd/src/net/osmand/plus/myplaces/SaveCurrentTrackTask.java b/OsmAnd/src/net/osmand/plus/myplaces/SaveCurrentTrackTask.java new file mode 100644 index 0000000000..84959d17f7 --- /dev/null +++ b/OsmAnd/src/net/osmand/plus/myplaces/SaveCurrentTrackTask.java @@ -0,0 +1,70 @@ +package net.osmand.plus.myplaces; + +import android.os.AsyncTask; + +import androidx.annotation.NonNull; + +import net.osmand.GPXUtilities; +import net.osmand.GPXUtilities.GPXFile; +import net.osmand.IndexConstants; +import net.osmand.plus.OsmandApplication; +import net.osmand.plus.activities.SavingTrackHelper; +import net.osmand.plus.track.SaveGpxAsyncTask.SaveGpxListener; + +import java.io.File; +import java.util.Map; + +public class SaveCurrentTrackTask extends AsyncTask { + + private final OsmandApplication app; + private final GPXFile gpx; + + private final SaveGpxListener saveGpxListener; + + public SaveCurrentTrackTask(@NonNull OsmandApplication app, @NonNull GPXFile gpx, @NonNull SaveGpxListener listener) { + this.app = app; + this.gpx = gpx; + saveGpxListener = listener; + } + + @Override + protected void onPreExecute() { + if (saveGpxListener != null) { + saveGpxListener.gpxSavingStarted(); + } + } + + @Override + protected Boolean doInBackground(Void... params) { + SavingTrackHelper savingTrackHelper = app.getSavingTrackHelper(); + Map files = savingTrackHelper.collectRecordedData(); + File dir; + boolean shouldClearPath = false; + if (gpx.path.isEmpty()) { + dir = app.getCacheDir(); + shouldClearPath = true; + } else { + dir = app.getAppCustomization().getTracksDir(); + } + if (!dir.exists()) { + dir.mkdir(); + } + for (final String f : files.keySet()) { + File fout = new File(dir, f + IndexConstants.GPX_FILE_EXT); + GPXUtilities.writeGpxFile(fout, gpx); + } + return shouldClearPath; + } + + @Override + protected void onPostExecute(Boolean shouldClearPath) { + if (gpx != null) { + if (saveGpxListener != null) { + saveGpxListener.gpxSavingFinished(null); + } + if (shouldClearPath) { + gpx.path = ""; + } + } + } +} \ No newline at end of file diff --git a/OsmAnd/src/net/osmand/plus/myplaces/SaveGpxAsyncTask.java b/OsmAnd/src/net/osmand/plus/myplaces/SaveGpxAsyncTask.java deleted file mode 100644 index a3e2ab051d..0000000000 --- a/OsmAnd/src/net/osmand/plus/myplaces/SaveGpxAsyncTask.java +++ /dev/null @@ -1,49 +0,0 @@ -package net.osmand.plus.myplaces; - -import android.os.AsyncTask; - -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; - -import net.osmand.GPXUtilities; -import net.osmand.GPXUtilities.GPXFile; - -import java.io.File; - -public class SaveGpxAsyncTask extends AsyncTask { - - private final GPXFile gpx; - private final SaveGpxListener saveGpxListener; - - public SaveGpxAsyncTask(@NonNull GPXFile gpx, - @Nullable SaveGpxListener saveGpxListener) { - this.gpx = gpx; - this.saveGpxListener = saveGpxListener; - } - - @Override - protected void onPreExecute() { - if (saveGpxListener != null) { - saveGpxListener.gpxSavingStarted(); - } - } - - @Override - protected Exception doInBackground(Void... params) { - return GPXUtilities.writeGpxFile(new File(gpx.path), gpx); - } - - @Override - protected void onPostExecute(Exception errorMessage) { - if (saveGpxListener != null) { - saveGpxListener.gpxSavingFinished(errorMessage); - } - } - - public interface SaveGpxListener { - - void gpxSavingStarted(); - - void gpxSavingFinished(Exception errorMessage); - } -} \ No newline at end of file diff --git a/OsmAnd/src/net/osmand/plus/myplaces/TrackPointFragment.java b/OsmAnd/src/net/osmand/plus/myplaces/TrackPointFragment.java index 5f206edabb..5cbd84e9b3 100644 --- a/OsmAnd/src/net/osmand/plus/myplaces/TrackPointFragment.java +++ b/OsmAnd/src/net/osmand/plus/myplaces/TrackPointFragment.java @@ -46,7 +46,6 @@ import net.osmand.Collator; import net.osmand.GPXUtilities; import net.osmand.GPXUtilities.GPXFile; import net.osmand.GPXUtilities.WptPt; -import net.osmand.IndexConstants; import net.osmand.OsmAndCollator; import net.osmand.data.FavouritePoint; import net.osmand.data.LatLon; @@ -59,7 +58,6 @@ import net.osmand.plus.GpxSelectionHelper.GpxDisplayItemType; import net.osmand.plus.MapMarkersHelper; import net.osmand.plus.MapMarkersHelper.MapMarkersGroup; import net.osmand.plus.OsmandApplication; -import net.osmand.plus.settings.backend.OsmandSettings; import net.osmand.plus.R; import net.osmand.plus.UiUtilities; import net.osmand.plus.activities.MapActivity; @@ -67,10 +65,12 @@ import net.osmand.plus.activities.OsmandActionBarActivity; import net.osmand.plus.activities.OsmandBaseExpandableListAdapter; import net.osmand.plus.activities.SavingTrackHelper; import net.osmand.plus.activities.TrackActivity; -import net.osmand.plus.base.PointImageDrawable; import net.osmand.plus.base.OsmandExpandableListFragment; +import net.osmand.plus.base.PointImageDrawable; import net.osmand.plus.mapmarkers.CoordinateInputDialogFragment; import net.osmand.plus.myplaces.TrackBitmapDrawer.TrackBitmapDrawerListener; +import net.osmand.plus.settings.backend.OsmandSettings; +import net.osmand.plus.track.SaveGpxAsyncTask.SaveGpxListener; import net.osmand.plus.widgets.TextViewEx; import net.osmand.util.Algorithms; @@ -303,10 +303,24 @@ public class TrackPointFragment extends OsmandExpandableListFragment implements } private void shareItems() { - GPXFile gpxFile = getGpx(); - if (gpxFile != null) { - if (gpxFile.path.isEmpty() && getTrackActivity() != null) { - new SaveAndShareTask(this, gpxFile).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); + final GPXFile gpxFile = getGpx(); + if (gpxFile != null && getTrackActivity() != null) { + if (Algorithms.isEmpty(gpxFile.path)) { + SaveGpxListener saveGpxListener = new SaveGpxListener() { + @Override + public void gpxSavingStarted() { + showProgressBar(); + } + + @Override + public void gpxSavingFinished(Exception errorMessage) { + if (isResumed()) { + hideProgressBar(); + shareGpx(gpxFile.path); + } + } + }; + new SaveCurrentTrackTask(app, gpxFile, saveGpxListener).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); } else { shareGpx(gpxFile.path); } @@ -1235,62 +1249,6 @@ public class TrackPointFragment extends OsmandExpandableListFragment implements } } - public static class SaveAndShareTask extends AsyncTask { - private final GPXFile gpx; - private final OsmandApplication app; - private final WeakReference fragmentRef; - - SaveAndShareTask(@NonNull TrackPointFragment fragment, @NonNull GPXFile gpx) { - this.gpx = gpx; - fragmentRef = new WeakReference<>(fragment); - app = fragment.getMyApplication(); - } - - @Override - protected void onPreExecute() { - TrackPointFragment fragment = fragmentRef.get(); - if (fragment != null) { - fragment.showProgressBar(); - } - } - - @Override - protected Boolean doInBackground(Void... params) { - SavingTrackHelper savingTrackHelper = app.getSavingTrackHelper(); - Map files = savingTrackHelper.collectRecordedData(); - File dir; - boolean shouldClearPath = false; - if (gpx.path.isEmpty()) { - dir = app.getCacheDir(); - shouldClearPath = true; - } else { - dir = app.getAppCustomization().getTracksDir(); - } - if (!dir.exists()) { - dir.mkdir(); - } - for (final String f : files.keySet()) { - File fout = new File(dir, f + IndexConstants.GPX_FILE_EXT); - GPXUtilities.writeGpxFile(fout, gpx); - } - return shouldClearPath; - } - - @Override - protected void onPostExecute(Boolean shouldClearPath) { - TrackPointFragment fragment = fragmentRef.get(); - if (gpx != null) { - if (fragment != null && fragment.isResumed()) { - fragment.hideProgressBar(); - fragment.shareGpx(gpx.path); - } - if (shouldClearPath) { - gpx.path = ""; - } - } - } - } - private static class DeletePointsTask extends AsyncTask { private OsmandApplication app; diff --git a/OsmAnd/src/net/osmand/plus/views/MapControlsLayer.java b/OsmAnd/src/net/osmand/plus/views/MapControlsLayer.java index e685bec671..7ba473c4ee 100644 --- a/OsmAnd/src/net/osmand/plus/views/MapControlsLayer.java +++ b/OsmAnd/src/net/osmand/plus/views/MapControlsLayer.java @@ -453,7 +453,7 @@ public class MapControlsLayer extends OsmandMapLayer { RoutingHelper routingHelper = mapActivity.getMyApplication().getRoutingHelper(); Object object = menu.getObject(); - if (object instanceof SelectedGpxPoint) { + if (object instanceof SelectedGpxPoint && !((SelectedGpxPoint) object).getSelectedGpxFile().isShowCurrentTrack()) { GPXFile gpxFile = ((SelectedGpxPoint) object).getSelectedGpxFile().getGpxFile(); mapActivity.getMapActions().enterRoutePlanningModeGivenGpx(gpxFile, null, null, true, true, MenuState.HEADER_ONLY); routingHelper.recalculateRouteDueToSettingsChange(); From 29c2187e4b763725b4fe015d3356f01f92097407 Mon Sep 17 00:00:00 2001 From: Vitaliy Date: Fri, 24 Jul 2020 12:57:43 +0300 Subject: [PATCH 03/53] Change string resource --- OsmAnd/res/values/strings.xml | 2 +- .../plus/measurementtool/OptionsBottomSheetDialogFragment.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/OsmAnd/res/values/strings.xml b/OsmAnd/res/values/strings.xml index c6f2ab1728..3f2510be35 100644 --- a/OsmAnd/res/values/strings.xml +++ b/OsmAnd/res/values/strings.xml @@ -11,7 +11,7 @@ Thx - Hardy --> - Overwrite GPX + Overwrite track Solid Direction arrows Custom diff --git a/OsmAnd/src/net/osmand/plus/measurementtool/OptionsBottomSheetDialogFragment.java b/OsmAnd/src/net/osmand/plus/measurementtool/OptionsBottomSheetDialogFragment.java index 91a20db1e4..264e958d50 100644 --- a/OsmAnd/src/net/osmand/plus/measurementtool/OptionsBottomSheetDialogFragment.java +++ b/OsmAnd/src/net/osmand/plus/measurementtool/OptionsBottomSheetDialogFragment.java @@ -95,7 +95,7 @@ public class OptionsBottomSheetDialogFragment extends MenuBottomSheetDialogFragm BaseBottomSheetItem saveAsNewSegmentItem = new SimpleBottomSheetItem.Builder() .setIcon(getContentIcon(R.drawable.ic_action_polygom_dark)) - .setTitle(getString(R.string.overwrite_gpx)) + .setTitle(getString(R.string.overwrite_track)) .setLayoutId(R.layout.bottom_sheet_item_simple) .setOnClickListener(new View.OnClickListener() { @Override From 99e57faad7808cd57a1ce54235768d5d31c5e8d8 Mon Sep 17 00:00:00 2001 From: Vitaliy Date: Fri, 24 Jul 2020 20:09:08 +0300 Subject: [PATCH 04/53] Fix min and max speed for different app mode and router --- .../osmand/plus/activities/SettingsNavigationActivity.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/OsmAnd/src/net/osmand/plus/activities/SettingsNavigationActivity.java b/OsmAnd/src/net/osmand/plus/activities/SettingsNavigationActivity.java index b3db4562d8..1686d0fb56 100644 --- a/OsmAnd/src/net/osmand/plus/activities/SettingsNavigationActivity.java +++ b/OsmAnd/src/net/osmand/plus/activities/SettingsNavigationActivity.java @@ -767,8 +767,8 @@ public class SettingsNavigationActivity extends SettingsBaseActivity { minValue[0] = Math.round(Math.min(minSpeedValue, settingsDefaultSpeed) * ratio[0]); maxValue[0] = Math.round(Math.max(maxSpeedValue, settingsDefaultSpeed) * ratio[0]); - min = Math.round(Math.min(router.getMinSpeed(), settingsDefaultSpeed) * ratio[0] / 2f); - max = Math.round(Math.max(router.getMaxSpeed(), settingsDefaultSpeed) * ratio[0] * 1.5f); + min = Math.round(Math.min(minValue[0], router.getMinSpeed() * ratio[0] / 2f)); + max = Math.round(Math.max(maxValue[0], router.getMaxSpeed() * ratio[0] * 1.5f)); } boolean nightMode = !app.getSettings().isLightContentForMode(mode); From 744b36b87c78e5d02681ff2b3b9719a767ab1766 Mon Sep 17 00:00:00 2001 From: Nazar-Kutz Date: Sat, 25 Jul 2020 18:01:09 +0300 Subject: [PATCH 05/53] Fix #6589 (Changing POI category on an existing object has no impact.(try to change the category by tapping on label icon)) --- .../net/osmand/plus/osmedit/EditPoiDialogFragment.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/OsmAnd/src/net/osmand/plus/osmedit/EditPoiDialogFragment.java b/OsmAnd/src/net/osmand/plus/osmedit/EditPoiDialogFragment.java index 932ef59db5..f31cf04c51 100644 --- a/OsmAnd/src/net/osmand/plus/osmedit/EditPoiDialogFragment.java +++ b/OsmAnd/src/net/osmand/plus/osmedit/EditPoiDialogFragment.java @@ -112,6 +112,7 @@ public class EditPoiDialogFragment extends BaseOsmAndDialogFragment { private EditPoiData editPoiData; private EditPoiViewPager viewPager; private AutoCompleteTextView poiTypeEditText; + private boolean poiCategoryChanged; private OnSaveButtonClickListener onSaveButtonClickListener; private OpenstreetmapUtil mOpenstreetmapUtil; @@ -298,7 +299,11 @@ public class EditPoiDialogFragment extends BaseOsmAndDialogFragment { @Override public void afterTextChanged(Editable s) { if (!getEditPoiData().isInEdit()) { - getEditPoiData().updateTypeTag(s.toString(), true); + if (!poiCategoryChanged) { + getEditPoiData().updateTypeTag(s.toString(), true); + } else { + poiCategoryChanged = false; + } if (!getMyApplication().isApplicationInitializing()) { PoiCategory category = editPoiData.getPoiCategory(); if (category != null) { @@ -643,6 +648,7 @@ public class EditPoiDialogFragment extends BaseOsmAndDialogFragment { } public void setPoiCategory(PoiCategory type) { + poiCategoryChanged = true; editPoiData.updateType(type); poiTypeEditText.setText(editPoiData.getPoiTypeString()); setAdapterForPoiTypeEditText(); From 4f80d6c61d70b0c9706b5342c8bcad56309a4c6e Mon Sep 17 00:00:00 2001 From: simon Date: Sun, 26 Jul 2020 11:52:31 +0300 Subject: [PATCH 06/53] issue 5374 show the date parked fix --- .../parkingpoint/ParkingPositionPlugin.java | 20 +++++++++---------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/OsmAnd/src/net/osmand/plus/parkingpoint/ParkingPositionPlugin.java b/OsmAnd/src/net/osmand/plus/parkingpoint/ParkingPositionPlugin.java index 1b51b80e19..a6ea74f36d 100644 --- a/OsmAnd/src/net/osmand/plus/parkingpoint/ParkingPositionPlugin.java +++ b/OsmAnd/src/net/osmand/plus/parkingpoint/ParkingPositionPlugin.java @@ -21,30 +21,33 @@ import net.osmand.data.FavouritePoint; import net.osmand.data.FavouritePoint.SpecialPointType; import net.osmand.data.LatLon; import net.osmand.data.PointDescription; -import net.osmand.plus.settings.backend.ApplicationMode; import net.osmand.plus.ContextMenuAdapter; import net.osmand.plus.ContextMenuAdapter.ItemClickListener; import net.osmand.plus.ContextMenuItem; import net.osmand.plus.OsmAndFormatter; import net.osmand.plus.OsmandApplication; import net.osmand.plus.OsmandPlugin; -import net.osmand.plus.settings.backend.OsmandSettings; -import net.osmand.plus.settings.backend.OsmandSettings.CommonPreference; import net.osmand.plus.R; import net.osmand.plus.UiUtilities; import net.osmand.plus.activities.MapActivity; import net.osmand.plus.dashboard.tools.DashFragmentData; import net.osmand.plus.mapcontextmenu.MapContextMenu; import net.osmand.plus.quickaction.QuickActionType; +import net.osmand.plus.settings.backend.ApplicationMode; +import net.osmand.plus.settings.backend.OsmandSettings; +import net.osmand.plus.settings.backend.OsmandSettings.CommonPreference; import net.osmand.plus.views.AnimateDraggingMapThread; import net.osmand.plus.views.MapInfoLayer; import net.osmand.plus.views.OsmandMapLayer.DrawSettings; import net.osmand.plus.views.OsmandMapTileView; import net.osmand.plus.views.mapwidgets.TextInfoWidget; +import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; +import java.util.Date; import java.util.List; +import java.util.Locale; import static net.osmand.aidlapi.OsmAndCustomizationConstants.MAP_CONTEXT_MENU_MARK_AS_PARKING_LOC; @@ -523,18 +526,13 @@ public class ParkingPositionPlugin extends OsmandPlugin { } String getFormattedTime(long timeInMillis) { - StringBuilder timeStringBuilder = new StringBuilder(); Time time = new Time(); time.set(timeInMillis); - timeStringBuilder.append(time.hour); - timeStringBuilder.append(":"); - int minute = time.minute; - timeStringBuilder.append(minute < 10 ? "0" + minute : minute); + SimpleDateFormat sdf = new SimpleDateFormat("HH:mm dd.MM.yyyy", Locale.getDefault()); if (!DateFormat.is24HourFormat(app)) { - timeStringBuilder.append(time.hour >= 12 ? app.getString(R.string.osmand_parking_pm) : app - .getString(R.string.osmand_parking_am)); + sdf = new SimpleDateFormat("hh:mm a dd.MM.yyyy", Locale.getDefault()); } - return timeStringBuilder.toString(); + return sdf.format(new Date(time.toMillis(false))); } String getFormattedTimeInterval(long timeInMillis, Activity ctx) { From 4c91c957212c74ecbe99a2dae3297ab2db9ed921 Mon Sep 17 00:00:00 2001 From: Victor Shcherb Date: Mon, 27 Jul 2020 12:09:37 +0200 Subject: [PATCH 07/53] Add information about header section size --- .../main/java/net/osmand/binary/BinaryMapIndexReader.java | 8 ++++++++ .../net/osmand/binary/BinaryMapRouteReaderAdapter.java | 7 ++++++- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/OsmAnd-java/src/main/java/net/osmand/binary/BinaryMapIndexReader.java b/OsmAnd-java/src/main/java/net/osmand/binary/BinaryMapIndexReader.java index c8f84796b9..f9015ec48d 100644 --- a/OsmAnd-java/src/main/java/net/osmand/binary/BinaryMapIndexReader.java +++ b/OsmAnd-java/src/main/java/net/osmand/binary/BinaryMapIndexReader.java @@ -696,6 +696,7 @@ public class BinaryMapIndexReader { private void readMapIndex(MapIndex index, boolean onlyInitEncodingRules) throws IOException { int defaultId = 1; int oldLimit; + int encodingRulesSize = 0; while (true) { int t = codedIS.readTag(); int tag = WireFormat.getTagFieldNumber(t); @@ -712,10 +713,14 @@ public class BinaryMapIndexReader { break; case OsmandOdb.OsmAndMapIndex.RULES_FIELD_NUMBER : if (onlyInitEncodingRules) { + if(encodingRulesSize == 0) { + encodingRulesSize = codedIS.getTotalBytesRead(); + } int len = codedIS.readInt32(); oldLimit = codedIS.pushLimit(len); readMapEncodingRule(index, defaultId++); codedIS.popLimit(oldLimit); + index.encodingRulesSizeBytes = (codedIS.getTotalBytesRead() - encodingRulesSize); } else { skipUnknownField(t); } @@ -1829,10 +1834,13 @@ public class BinaryMapIndexReader { public int onewayReverseAttribute = -1; public TIntHashSet positiveLayers = new TIntHashSet(2); public TIntHashSet negativeLayers = new TIntHashSet(2); + public int encodingRulesSizeBytes; // to speed up comparision private MapIndex referenceMapIndex; + + public Integer getRule(String t, String v) { Map m = encodingRules.get(t); if (m != null) { diff --git a/OsmAnd-java/src/main/java/net/osmand/binary/BinaryMapRouteReaderAdapter.java b/OsmAnd-java/src/main/java/net/osmand/binary/BinaryMapRouteReaderAdapter.java index c98ec6396f..8431df7244 100644 --- a/OsmAnd-java/src/main/java/net/osmand/binary/BinaryMapRouteReaderAdapter.java +++ b/OsmAnd-java/src/main/java/net/osmand/binary/BinaryMapRouteReaderAdapter.java @@ -292,6 +292,7 @@ public class BinaryMapRouteReaderAdapter { public static class RouteRegion extends BinaryIndexPart { public int regionsRead; public List routeEncodingRules = new ArrayList(); + public int routeEncodingRulesBytes = 0; public Map decodingRules = null; List subregions = new ArrayList(); List basesubregions = new ArrayList(); @@ -614,6 +615,7 @@ public class BinaryMapRouteReaderAdapter { protected void readRouteIndex(RouteRegion region) throws IOException { int routeEncodingRule = 1; + int routeEncodingRulesSize = 0; while(true){ int t = codedIS.readTag(); int tag = WireFormat.getTagFieldNumber(t); @@ -626,10 +628,13 @@ public class BinaryMapRouteReaderAdapter { break; case OsmandOdb.OsmAndRoutingIndex.RULES_FIELD_NUMBER: { int len = codedIS.readInt32(); + if(routeEncodingRulesSize == 0) { + routeEncodingRulesSize = codedIS.getTotalBytesRead(); + } int oldLimit = codedIS.pushLimit(len); readRouteEncodingRule(region, routeEncodingRule++); - codedIS.skipRawBytes(codedIS.getBytesUntilLimit()); codedIS.popLimit(oldLimit); + region.routeEncodingRulesBytes = codedIS.getTotalBytesRead() - routeEncodingRulesSize; } break; case OsmandOdb.OsmAndRoutingIndex.ROOTBOXES_FIELD_NUMBER : case OsmandOdb.OsmAndRoutingIndex.BASEMAPBOXES_FIELD_NUMBER :{ From 14b3bcead730b19e547bda683b029489809a3ec7 Mon Sep 17 00:00:00 2001 From: max-klaus Date: Mon, 27 Jul 2020 14:14:28 +0300 Subject: [PATCH 08/53] Hide route calculated toast after recalc --- OsmAnd/src/net/osmand/plus/routing/RoutingHelper.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/OsmAnd/src/net/osmand/plus/routing/RoutingHelper.java b/OsmAnd/src/net/osmand/plus/routing/RoutingHelper.java index 78524a4d74..7d1c9696d2 100644 --- a/OsmAnd/src/net/osmand/plus/routing/RoutingHelper.java +++ b/OsmAnd/src/net/osmand/plus/routing/RoutingHelper.java @@ -857,10 +857,9 @@ public class RoutingHelper { l.newRouteIsCalculated(newRoute, showToast); } } - if (showToast.value && OsmandPlugin.isDevelopment()) { + if (showToast.value && newRoute && OsmandPlugin.isDevelopment()) { String msg = app.getString(R.string.new_route_calculated_dist_dbg, OsmAndFormatter.getFormattedDistance(res.getWholeDistance(), app), - ((int)res.getRoutingTime()) + " sec", res.getCalculateTime(), res.getVisitedSegments(), res.getLoadedTiles()); app.showToastMessage(msg); From e2af067edb9da2dc446f7d3edc6f5a467a16f5e8 Mon Sep 17 00:00:00 2001 From: max-klaus Date: Mon, 27 Jul 2020 14:14:52 +0300 Subject: [PATCH 09/53] Code cleanup --- .../osmand/plus/base/BottomSheetDialogFragment.java | 6 +++--- .../net/osmand/plus/measurementtool/NewGpxData.java | 13 +++++++------ 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/OsmAnd/src/net/osmand/plus/base/BottomSheetDialogFragment.java b/OsmAnd/src/net/osmand/plus/base/BottomSheetDialogFragment.java index adc82783a6..c33b183b65 100644 --- a/OsmAnd/src/net/osmand/plus/base/BottomSheetDialogFragment.java +++ b/OsmAnd/src/net/osmand/plus/base/BottomSheetDialogFragment.java @@ -48,7 +48,7 @@ public abstract class BottomSheetDialogFragment extends DialogFragment { public abstract View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState); @Override - public void onAttach(Context context) { + public void onAttach(@NonNull Context context) { super.onAttach(context); if (context instanceof OnDialogFragmentResultListener) { dialogFragmentResultListener = (OnDialogFragmentResultListener) context; @@ -82,10 +82,10 @@ public abstract class BottomSheetDialogFragment extends DialogFragment { } @Nullable - protected Drawable getIcon(@DrawableRes int drawableRes, @ColorRes int color) { + protected Drawable getIcon(@DrawableRes int drawableRes, @ColorRes int colorRes) { OsmandApplication app = getMyApplication(); if (app != null) { - return app.getUIUtilities().getIcon(drawableRes, color); + return app.getUIUtilities().getIcon(drawableRes, colorRes); } else { return null; } diff --git a/OsmAnd/src/net/osmand/plus/measurementtool/NewGpxData.java b/OsmAnd/src/net/osmand/plus/measurementtool/NewGpxData.java index 9da060fdee..e5325da933 100644 --- a/OsmAnd/src/net/osmand/plus/measurementtool/NewGpxData.java +++ b/OsmAnd/src/net/osmand/plus/measurementtool/NewGpxData.java @@ -1,7 +1,8 @@ package net.osmand.plus.measurementtool; +import net.osmand.GPXUtilities.GPXFile; +import net.osmand.GPXUtilities.TrkSegment; import net.osmand.data.QuadRect; -import net.osmand.GPXUtilities; public class NewGpxData { @@ -12,19 +13,19 @@ public class NewGpxData { OVERWRITE_SEGMENT } - private GPXUtilities.GPXFile gpxFile; - private GPXUtilities.TrkSegment trkSegment; + private GPXFile gpxFile; + private TrkSegment trkSegment; private QuadRect rect; private ActionType actionType; - public NewGpxData(GPXUtilities.GPXFile gpxFile, QuadRect rect, ActionType actionType, GPXUtilities.TrkSegment trkSegment) { + public NewGpxData(GPXFile gpxFile, QuadRect rect, ActionType actionType, TrkSegment trkSegment) { this.gpxFile = gpxFile; this.rect = rect; this.actionType = actionType; this.trkSegment = trkSegment; } - public GPXUtilities.GPXFile getGpxFile() { + public GPXFile getGpxFile() { return gpxFile; } @@ -36,7 +37,7 @@ public class NewGpxData { return actionType; } - public GPXUtilities.TrkSegment getTrkSegment() { + public TrkSegment getTrkSegment() { return trkSegment; } } From 6acb295ebb7b30637d9aea618f31bba39caa3813 Mon Sep 17 00:00:00 2001 From: Dima-1 Date: Mon, 27 Jul 2020 14:22:40 +0300 Subject: [PATCH 10/53] Fix icon --- .../plus/osmedit/ExportOptionsBottomSheetDialogFragment.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OsmAnd/src/net/osmand/plus/osmedit/ExportOptionsBottomSheetDialogFragment.java b/OsmAnd/src/net/osmand/plus/osmedit/ExportOptionsBottomSheetDialogFragment.java index 93345a81c7..0b1086bfc5 100644 --- a/OsmAnd/src/net/osmand/plus/osmedit/ExportOptionsBottomSheetDialogFragment.java +++ b/OsmAnd/src/net/osmand/plus/osmedit/ExportOptionsBottomSheetDialogFragment.java @@ -58,7 +58,7 @@ public class ExportOptionsBottomSheetDialogFragment extends MenuBottomSheetDialo BaseBottomSheetItem osmNotesItem = new BottomSheetItemWithDescription.Builder() .setDescription(String.valueOf(osmNotesCount)) - .setIcon(getContentIcon(R.drawable.ic_action_osm_note_add)) + .setIcon(getContentIcon(R.drawable.ic_action_osm_note)) .setTitle(getString(R.string.osm_notes)) .setLayoutId(R.layout.bottom_sheet_item_with_right_descr) .setDisabled(!(osmNotesCount > 0)) From 4b5bf454713381d1ca9a6bc60f6133f8cd5e54c9 Mon Sep 17 00:00:00 2001 From: Victor Shcherb Date: Tue, 28 Jul 2020 01:31:23 +0200 Subject: [PATCH 11/53] Initial refactoring for route-road, route-bicycle, etc --- .../net/osmand/osm/MapRenderingTypes.java | 104 ++++++++++++------ 1 file changed, 68 insertions(+), 36 deletions(-) diff --git a/OsmAnd-java/src/main/java/net/osmand/osm/MapRenderingTypes.java b/OsmAnd-java/src/main/java/net/osmand/osm/MapRenderingTypes.java index 22121c301d..e5b5a72ae9 100644 --- a/OsmAnd-java/src/main/java/net/osmand/osm/MapRenderingTypes.java +++ b/OsmAnd-java/src/main/java/net/osmand/osm/MapRenderingTypes.java @@ -13,6 +13,7 @@ import java.util.Map; import java.util.Map.Entry; import net.osmand.PlatformUtil; +import net.osmand.osm.MapRenderingTypes.MapRulType; import net.osmand.util.Algorithms; import org.apache.commons.logging.Log; @@ -153,6 +154,14 @@ public abstract class MapRenderingTypes { return a; } + protected MapRulType checkOrCreateTextRule(String targetTag) { + MapRulType mt = types.get(constructRuleKey(targetTag, null)); + if (mt == null) { + mt = registerRuleType(MapRulType.createText(targetTag)); + } + return mt; + } + protected MapRulType getRuleType(String tag, String val, boolean poi, boolean map) { Map types = getEncodingRuleTypes(); tag = lc(tag); @@ -171,7 +180,6 @@ public abstract class MapRenderingTypes { rType.map = parent.map; rType.poi = parent.poi; rType.onlyPoint = parent.onlyPoint; - rType.namePrefix = parent.namePrefix; rType = registerRuleType(rType); } return rType; @@ -264,38 +272,71 @@ public abstract class MapRenderingTypes { rtype.category = parentCategory == null ? null : parentCategory.category; rtype.onlyPoint = Boolean.parseBoolean(parser.getAttributeValue("", "point")); //$NON-NLS-1$ rtype.relation = Boolean.parseBoolean(parser.getAttributeValue("", "relation")); //$NON-NLS-1$ - rtype.relationGroup = Boolean.parseBoolean(parser.getAttributeValue("", "relationGroup")); //$NON-NLS-1$ - if (rtype.isMain()) { - rtype.namePrefix = parser.getAttributeValue("", "namePrefix"); //$NON-NLS-1$ - if (rtype.namePrefix == null) { - rtype.namePrefix = ""; + if (rtype.isMain()) { + if (rtype.relation) { + MapRulType mrt = MapRulType.createMainEntity(tag + "_" + value, null); + mrt.order = rtype.order; + mrt.category = rtype.category; + mrt.poi = rtype.poi; + mrt.map = rtype.map; + registerMapRule(parser, mrt); } - - String v = parser.getAttributeValue("", "nameTags"); - if (v != null) { - String[] names = v.split(","); - rtype.names = new MapRulType[names.length * (langs.length + 1)]; - int j = 0; - for (int i = 0; i < names.length; i++) { - String tagName = names[i]; - if (rtype.namePrefix.length() > 0) { - tagName = rtype.namePrefix + tagName; - } - MapRulType mt = MapRulType.createText(tagName); - mt = registerRuleType(mt); - rtype.names[j++] = mt; - for(String lng : langs) { - mt = MapRulType.createText(tagName + ":" + lng); - mt = registerRuleType(mt); - rtype.names[j++] = mt; - } + String nmts = parser.getAttributeValue("", "nameTags"); + if(nmts != null) { + String namePrefix = parser.getAttributeValue("", "namePrefix"); //$NON-NLS-1$ + if (namePrefix == null) { + namePrefix = ""; } + rtype.relationNames = new LinkedHashMap(); + putNameTags(nmts, rtype.relationNames, namePrefix); + } + String rnmts = parser.getAttributeValue("", "relationGroupNameTags"); + if (rnmts != null) { + String relationGroupNamePrefix = parser.getAttributeValue("", "relationGroupNamePrefix"); //$NON-NLS-1$ + if (relationGroupNamePrefix == null) { + relationGroupNamePrefix = ""; + } + rtype.relationGroupNameTags = new LinkedHashMap(); + putNameTags(rnmts, rtype.relationGroupNameTags, relationGroupNamePrefix); } } return rtype; } + private void putNameTags(String namesList, Map names, String namePrefix) { + if (namesList != null) { + String[] nameSplit = namesList.split(","); + for (int i = 0; i < nameSplit.length; i++) { + String tagName = nameSplit[i]; + String tagTargetName = tagName; + if (namePrefix.length() > 0) { + tagTargetName = namePrefix + tagName; + } + names.put(tagName, tagTargetName); + for (String lng : langs) { + names.put(tagName + ":" + lng, tagTargetName + ":" + lng); + } + } + } + } + + protected void registerMapRule(XmlPullParser parser, MapRulType rtype) { + String val = parser.getAttributeValue("", "minzoom"); //$NON-NLS-1$ + if (rtype.isMain()) { + rtype.minzoom = 15; + } + if (val != null) { + rtype.minzoom = Integer.parseInt(val); + } + val = parser.getAttributeValue("", "maxzoom"); //$NON-NLS-1$ + rtype.maxzoom = 31; + if (val != null) { + rtype.maxzoom = Integer.parseInt(val); + } + registerRuleType(rtype); + } + protected MapRulType registerRuleType(MapRulType rt) { String tag = rt.tagValuePattern.tag; String val = rt.tagValuePattern.value; @@ -422,7 +463,8 @@ public abstract class MapRenderingTypes { } public static class MapRulType { - protected MapRulType[] names; + protected Map relationNames; + protected Map relationGroupNameTags; protected TagValuePattern tagValuePattern; protected boolean additional; protected boolean additionalText; @@ -431,7 +473,6 @@ public abstract class MapRenderingTypes { protected String category = null; protected boolean relation; - protected boolean relationGroup; // creation of only section protected boolean map = true; protected boolean poi = true; @@ -440,7 +481,6 @@ public abstract class MapRenderingTypes { protected int minzoom; protected int maxzoom; protected boolean onlyPoint; - protected String namePrefix =""; // inner id @@ -549,14 +589,6 @@ public abstract class MapRenderingTypes { return onlyPoint; } - public boolean isRelation() { - return relation; - } - - public boolean isRelationGroup() { - return relationGroup; - } - public int getFreq() { return freq; From 17e1af1e512307f07bc9de0d3de38b53d17794bd Mon Sep 17 00:00:00 2001 From: Victor Shcherb Date: Tue, 28 Jul 2020 13:44:29 +0200 Subject: [PATCH 12/53] Fix sorting for tags --- .../net/osmand/osm/MapRenderingTypes.java | 56 +++++++++++++++++++ 1 file changed, 56 insertions(+) diff --git a/OsmAnd-java/src/main/java/net/osmand/osm/MapRenderingTypes.java b/OsmAnd-java/src/main/java/net/osmand/osm/MapRenderingTypes.java index e5b5a72ae9..c6c90a1b25 100644 --- a/OsmAnd-java/src/main/java/net/osmand/osm/MapRenderingTypes.java +++ b/OsmAnd-java/src/main/java/net/osmand/osm/MapRenderingTypes.java @@ -4,6 +4,7 @@ import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; +import java.util.Arrays; import java.util.Collection; import java.util.Collections; import java.util.HashMap; @@ -162,6 +163,14 @@ public abstract class MapRenderingTypes { return mt; } + protected MapRulType checkOrCreateAdditional(String tag, String value) { + MapRulType mt = types.get(constructRuleKey(tag, value)); + if (mt == null) { + mt = registerRuleType(MapRulType.createAdditional(tag, value)); + } + return mt; + } + protected MapRulType getRuleType(String tag, String val, boolean poi, boolean map) { Map types = getEncodingRuleTypes(); tag = lc(tag); @@ -281,6 +290,48 @@ public abstract class MapRenderingTypes { mrt.map = rtype.map; registerMapRule(parser, mrt); } + + String groupSort = parser.getAttributeValue("", "relationGroupSort"); + if (groupSort != null) { + rtype.relationSortTags = new LinkedHashMap>(); + String[] ls = groupSort.split(";"); + for(String l : ls) { + int sp = l.indexOf('='); + String key = l; + String[] values = new String[0]; + if(sp >= 0) { + key = l.substring(0, sp); + values = l.substring(sp +1).split(","); + } + rtype.relationSortTags.put(key, Arrays.asList(values)); + } + } + + String additionalTags = parser.getAttributeValue("", "additionalTags"); + String additionalPrefix = parser.getAttributeValue("", "additionalPrefix"); + if (additionalTags != null) { + rtype.additionalTags = new LinkedHashMap(); + for(String tg : additionalTags.split(",")) { + String targetTag = tg; + if(!Algorithms.isEmpty(additionalPrefix)) { + targetTag = additionalPrefix + tg; + } + rtype.additionalTags.put(tg, targetTag); + } + } + String relationGroupAdditionalTags = parser.getAttributeValue("", "relationGroupAdditionalTags"); + String relationAdditionalPrefix = parser.getAttributeValue("", "relationGroupAdditionalPrefix"); + if (relationGroupAdditionalTags != null) { + rtype.relationGroupAdditionalTags = new LinkedHashMap(); + for(String tg : relationGroupAdditionalTags.split(",")) { + String targetTag = tg; + if(!Algorithms.isEmpty(relationAdditionalPrefix)) { + targetTag = relationAdditionalPrefix + tg; + } + rtype.relationGroupAdditionalTags.put(tg, targetTag); + } + } + String nmts = parser.getAttributeValue("", "nameTags"); if(nmts != null) { String namePrefix = parser.getAttributeValue("", "namePrefix"); //$NON-NLS-1$ @@ -463,8 +514,13 @@ public abstract class MapRenderingTypes { } public static class MapRulType { + // relation part protected Map relationNames; + protected Map additionalTags; protected Map relationGroupNameTags; + protected Map relationGroupAdditionalTags; + protected Map> relationSortTags; + protected TagValuePattern tagValuePattern; protected boolean additional; protected boolean additionalText; From f449ae598bffa97435eb5796546b3fac9279bfe5 Mon Sep 17 00:00:00 2001 From: Vitaliy Date: Tue, 28 Jul 2020 14:52:36 +0300 Subject: [PATCH 13/53] Current location move graph to one-fourth of the visible range --- .../plus/mapcontextmenu/other/TrackDetailsMenu.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/OsmAnd/src/net/osmand/plus/mapcontextmenu/other/TrackDetailsMenu.java b/OsmAnd/src/net/osmand/plus/mapcontextmenu/other/TrackDetailsMenu.java index 4de36e90c3..98a022061d 100644 --- a/OsmAnd/src/net/osmand/plus/mapcontextmenu/other/TrackDetailsMenu.java +++ b/OsmAnd/src/net/osmand/plus/mapcontextmenu/other/TrackDetailsMenu.java @@ -148,7 +148,13 @@ public class TrackDetailsMenu { LatLon latLon = tb.getLatLonFromPixel(mx, my); gpxItem.locationOnMap = GPXLayer.createProjectionPoint(points.first, points.second, latLon); float pos = (float) (gpxItem.locationOnMap.distance / ((OrderedLineDataSet) ds.get(0)).getDivX()); - float nextVisibleX = chart.getLowestVisibleX() + (pos - gpxItem.chartHighlightPos); + float lowestVisibleX = chart.getLowestVisibleX(); + float highestVisibleX = chart.getHighestVisibleX(); + float nextVisibleX = lowestVisibleX + (pos - gpxItem.chartHighlightPos); + float oneFourthDiff = (highestVisibleX - lowestVisibleX) / 4f; + if (pos - oneFourthDiff > 0) { + nextVisibleX = pos - oneFourthDiff; + } gpxItem.chartHighlightPos = pos; chart.moveViewToX(nextVisibleX); From 74125e9925c75c7b288a2e3f2bb9a88b54fdadad Mon Sep 17 00:00:00 2001 From: Vitaliy Date: Tue, 28 Jul 2020 15:17:55 +0300 Subject: [PATCH 14/53] Remove unnecessary subtraction --- .../net/osmand/plus/mapcontextmenu/other/TrackDetailsMenu.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OsmAnd/src/net/osmand/plus/mapcontextmenu/other/TrackDetailsMenu.java b/OsmAnd/src/net/osmand/plus/mapcontextmenu/other/TrackDetailsMenu.java index 98a022061d..dd8e64825c 100644 --- a/OsmAnd/src/net/osmand/plus/mapcontextmenu/other/TrackDetailsMenu.java +++ b/OsmAnd/src/net/osmand/plus/mapcontextmenu/other/TrackDetailsMenu.java @@ -152,7 +152,7 @@ public class TrackDetailsMenu { float highestVisibleX = chart.getHighestVisibleX(); float nextVisibleX = lowestVisibleX + (pos - gpxItem.chartHighlightPos); float oneFourthDiff = (highestVisibleX - lowestVisibleX) / 4f; - if (pos - oneFourthDiff > 0) { + if (pos > oneFourthDiff) { nextVisibleX = pos - oneFourthDiff; } gpxItem.chartHighlightPos = pos; From e38d970bd7a1093d1e0c47c2b8f5cad9c6110cc1 Mon Sep 17 00:00:00 2001 From: sonora Date: Tue, 28 Jul 2020 22:12:09 +0200 Subject: [PATCH 15/53] String change 'speed bump' replacing 'traffic calming' --- OsmAnd/res/values/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OsmAnd/res/values/strings.xml b/OsmAnd/res/values/strings.xml index 6ca8722b5e..528d75d7cc 100644 --- a/OsmAnd/res/values/strings.xml +++ b/OsmAnd/res/values/strings.xml @@ -2161,7 +2161,7 @@ Border control Toll booth Stop sign - Traffic calming + Speed bump Speed camera Traffic warning Favorites nearby From 3c948b5a298c19e6c7980920a201e1d27df2b773 Mon Sep 17 00:00:00 2001 From: Tymofij Lytvynenko Date: Wed, 29 Jul 2020 09:03:50 +0000 Subject: [PATCH 16/53] Translated using Weblate (Ukrainian) Currently translated at 100.0% (3438 of 3438 strings) --- OsmAnd/res/values-uk/strings.xml | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/OsmAnd/res/values-uk/strings.xml b/OsmAnd/res/values-uk/strings.xml index 41f145794f..9f82a1c742 100644 --- a/OsmAnd/res/values-uk/strings.xml +++ b/OsmAnd/res/values-uk/strings.xml @@ -30,7 +30,7 @@ Основна мапа, необхідна для забезпечення основних можливостей, знаходиться у черзі завантаження. Нічого не знайдено. Якщо Ви не знайшли свій регіон, Ви можете створити його самостійно (див. https://osmand.net). Мережеві та кешовані растрові мапи - Стандартні мапи (векторні) + Звичайні мапи (векторні) Завантаження, перегляд подробиць та керування локальними мапами. Увімкніть втулок \'Мережеві мапи\', щоб вибирати різні джерела мап Мережеві мапи (растрові) @@ -167,7 +167,7 @@ Налаштуйте відображення та загальні параметри застосунку. Загальні налаштування Ім\'я користувача OSM - Потрібно для подань на openstreetmap.org. + Потрібно для входу на openstreetmap.org. Пароль Фоновий режим OsmAnd працює у фоновому режимі з вимкненим екраном. @@ -917,7 +917,7 @@ OsmAnd Мапи і Навігація OsmAnd+ Мапи і Навігація Шар рельєфа місцевості - Стандартна мапа + Звичайна мапа OsmAnd (OSM Automated Navigation Directions) \n \n OsmAnd — навігаційне програмне забезпечення з відкритим кодом з доступом до різноманітних картографічних даних від OSM. Всі землеписні дані (векторні та растрові) можуть бути збережені на карті пам’яті телефону для подальшого автономного користування. Також пропонується функція маршрутизації в автономному режимі та в мережевому режимі, включно з покроковими голосовими підказками. @@ -1818,7 +1818,7 @@ Виберіть дороги, які потрібно уникнути під час навігації. Звук POI буде вилучено після того, як Ви вивантажите Ваші зміни - Мапа виключно доріг не потрібна, оскільки у вас є стандартна (повна) мапа. Все одно завантажити? + Мапа виключно доріг не потрібна, оскільки у вас є звичайна (повна) мапа. Усе одно завантажити\? OsmAnd не має дозволу на використання карти пам\'яті Останнє оновлення: %s Остання зміна мапи: %s @@ -2189,13 +2189,13 @@ Відкритий код розташування (OLC) Нова аудіонотатка Нова відеонотатка - Нова світлино-нотатка + Нова фотонотатка Найменування Кнопка для додавання позначки мапи посередині екрану. Натискання на цю кнопку додасть маршрутну точку GPX посередині екрану. Натискання цієї кнопки додає аудіонотатку посередині екрану. Натискання цієї кнопки додає відеонотатку посередині екрану. - Натискання цієї кнопки додає світлинонотатку посередині екрану. + Натискання цієї кнопки додає фотонотатку посередині екрану. Натискання цієї кнопки додає OSM-нотатку посередині екрану. Натискання цієї кнопки додає POI посередині екрану. Перемикач, щоб вимкнути або увімкнути голосові підказки під час навігації. @@ -2610,7 +2610,7 @@ Натискання на позначку на мапі перемістить її на перше місце в списку задіяних позначок, не відкриваючи контекстне меню. Задіювання одним натисненням Робіть нотатки! - Додайте аудіо, відео або світлино-нотатку в будь-яку точку на мапі, використовуючи віджет або контекстне меню. + Додайте аудіо, відео або фотонотатку в будь-яку точку на мапі, використовуючи віджет або контекстне меню. Примітки за датою За датою За типом @@ -2778,13 +2778,13 @@ Лише через WiFi Вибрати щоденник подорожей Щоденник подорожей - Сторінка доступна лише в мережі. Відкрити у веббраузері\? + Сторінка доступна лише в мережі. Відкрити в браузері\? Кеш зображень Вилучити історію пошуку Завантаження зображень Туристичні путівники Вікімандри - Стаття вилучена + Статтю видалено Пошук: країна, місто, регіон Читати Збережені статті @@ -3229,7 +3229,7 @@ %1$s • Заощадити %2$s Налаштування для профілю: Приклад - UTM Стандарт + Стандарт UTM Змінити налаштування Відхилити зміну Застосувати тільки до: %1$s @@ -3436,7 +3436,7 @@ Ви можете знайти всі записи в %1$s або в теці OsmAnd за допомогою файлового провідника. Ваші нотатки OSM знаходяться в %1$s. Відеонотатки - Світлинонотатки + Фотонотатки Перерахунок маршруту Оголошення Ім\'я користувача і пароль @@ -3815,4 +3815,5 @@ Інвалідне крісло попереду у мапу Закрита нотатка OSM + Своє \ No newline at end of file From a0e7940d5f6fd688992a31872253a89cbf5dabcb Mon Sep 17 00:00:00 2001 From: Andriy Golovin Date: Wed, 29 Jul 2020 08:38:18 +0000 Subject: [PATCH 17/53] Translated using Weblate (Ukrainian) Currently translated at 100.0% (3438 of 3438 strings) --- OsmAnd/res/values-uk/strings.xml | 34 +++++++++++++++++++++++--------- 1 file changed, 25 insertions(+), 9 deletions(-) diff --git a/OsmAnd/res/values-uk/strings.xml b/OsmAnd/res/values-uk/strings.xml index 9f82a1c742..f8de41a03b 100644 --- a/OsmAnd/res/values-uk/strings.xml +++ b/OsmAnd/res/values-uk/strings.xml @@ -1025,7 +1025,7 @@ Збільшення глибини різкості Фокус встановлюється на нескінченність Відтворювати звук затвору камери - Програвання звуку затвора камери. + Відтворення звуку затвора камери. Всі локальні дані зі старого встановленого застосунку будуть підтримуватися новим, але Закладки потрібно експортувати зі старого застосунку та імпортувати в новий. Обмеження швидкості Камери детектування швидкості @@ -1273,7 +1273,7 @@ Дрібніше Місце призначення Голосові підказки призупиняють відтворення музики. - Призупинити музику + Призупиняти музику Поділитись маршрутом за допомоги файлу GPX Маршрут наданий через OsmAnd Оголошення про прибуття @@ -1602,7 +1602,7 @@ Завантажити додаткові дані з Вікіпедії (%1$s Мб)\? Служба визначення місцезнаходження вимкнена. Увімкнути? Запобігти самостійному логуваню - Логування GPX буде призупинено коли застосунок буде закрито (через недавні додатки). (Фоновий індикатор OsmAnd зникне з панелі сповіщень Android\'а) + Запис GPX буде зупинено після припинення роботи застосунку через меню з переліком нещодавно запущених застосунків. (Індикатор, який інформує про роботу OsmAnd в фоні зникне з панелі сповіщень в Android) Імпортувати до OsmAnd Читати повну статтю (мережево) Вікіпедія @@ -2463,7 +2463,7 @@ Мін/макс Напівпрозорий рожевий Призупинити/відновити навігацію - Кнопка для призупинення чм відновлення навігації. + Кнопка для призупинення чи відновлення навігації. Показати діалог завершення навігації Почати/зупинити навігацію Натисніть цю кнопку, щоб почати або закінчити навігацію. @@ -3757,7 +3757,7 @@ \nОдин тиждень - 10 080 хвилин. \nОдин місяць - 43 829 хвилин. Виберіть спосіб зберігання завантажених плиток. - Усталений час очікування екрану + Типовий час до вимкнення екрану Ви можете експортувати або імпортувати швидкі дії з профілями застосунку. Видалити все\? Ви дійсно бажаєте безповоротно видалити %d швидких дій\? @@ -3771,15 +3771,15 @@ Вкажіть висоту автомобіля, для великих транспортних засобів можуть застосовуватися обмеження на деяких маршрутах. Вимкнено. Потребує \'Тримати екран увімкненим\' у розділі \'Час очікування після пробудження\'. Додати мережеве джерело - Застосування цих змін очистить кешовані дані для цього джерела плиток + Застосування цих змін очистить дані, збережені з цього джерела тайлів Встановити висоту судна Ви можете встановити висоту судна, щоб уникнути низьких мостів. Майте на увазі, якщо міст рухомий, використовуватиметься його висота у відкритому стані. Встановіть висоту судна, щоб уникнути низьких мостів. Майте на увазі, якщо міст рухомий, використовуватиметься його висота у відкритому стані. Встановіть ширину судна, щоб уникнути вузьких мостів Увімкнути/вимкнути Mapillary Вимкнути Mapillary - Увімкнення шару Mapillary - Перемикач увімкнення або вимкнення шару Mapillary на мапі. + Показати шар Mapillary + Перемикач показує/приховує шар Mapillary на мапі. Видалити камери контролю швидкості Законодавство POI камер контролю швидкості @@ -3795,7 +3795,7 @@ Попередження про камери контролю швидкості в деяких країнах заборонено законом. Орієнтація %1$s видалено - Потрібен перезапуск для повного видалення даних камер контролю швидкості. + Для вилучення даних про камери контролю швидкості потрібен перезапуск. Видалити та перезапустити Вкажіть довжину транспортного засобу для розрахунку маршрутів. Обмеження довжини @@ -3816,4 +3816,20 @@ у мапу Закрита нотатка OSM Своє + Додана точка не буде показуватись на мапі, вся обрана група є прихованою, ви можете побачити її в \"%s\". + Зазначте робочі дні, щоб продовжити + Маршрут між точками + Планування маршруту + Додати до треку + Показувати старт та фініш + Встановити ширину + Оберіть інтервал показу міток часу або відстані для показу поверх треку. + Оберіть власний варіант поділу: за часом, чи відстанню. + Стрілки напрямку + Суцільний + В останнє змінено + Імпортувати трек + Переглянути наявний трек + Створити новий маршрут + Оберіть файл з треком для перегляду. \ No newline at end of file From a74cff832e84d450603360339036c4f84bee13d1 Mon Sep 17 00:00:00 2001 From: ihor_ck Date: Tue, 28 Jul 2020 18:28:28 +0000 Subject: [PATCH 18/53] Translated using Weblate (Ukrainian) Currently translated at 100.0% (3438 of 3438 strings) --- OsmAnd/res/values-uk/strings.xml | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/OsmAnd/res/values-uk/strings.xml b/OsmAnd/res/values-uk/strings.xml index f8de41a03b..d425f11f8a 100644 --- a/OsmAnd/res/values-uk/strings.xml +++ b/OsmAnd/res/values-uk/strings.xml @@ -270,7 +270,9 @@ Зворотній напрямок GPX Використовувати поточний пункт призначення Пройдіть по усьому треку - Для цього регіону доступні оффлайн векторні мапи\n\t\n\tДля їх використання виберіть пункт меню \'Налаштування Мапи\' → \'Джерело мапи…\' → \'Локальні векторні мапи\'. + Для цього регіону доступні автономні векторні мапи +\n\t +\n\tДля користування ними виберіть пункт меню \'Налаштування Мапи\' → \'Джерело мапи…\' → \'Локальні векторні мапи\'. Вивід голосових вказівок Виберіть канал для голосових вказівок. Голосовий канал (перервати звук з динаміків автомобіля) @@ -1145,7 +1147,8 @@ Відрізок %1$s точок Точка %1$s - %1$s ↵\nМаршрутних точок %2$s + %1$s↵ +\nМаршрутних точок %2$s %1$s \nТочок %1$s @@ -3236,7 +3239,7 @@ Застосувати до всіх профілів Початкове повідомлення Аналітика - Одиниця вимірювання та формати + Одиниці виміру й формати Зовнішній вигляд Вигляд мапи Вигляд мапи @@ -3570,7 +3573,7 @@ \nЦе може зайняти деякий час. Елементи додано Імпорт завершено - Усі дані з %1$s імпортовано, ви можете користуватися іншими кнопками, щоби відкрити потрібну частину програми для керування нею. + Усі дані з %1$s імпортовано, ви можете користуватися іншими кнопками, щоб відкрити потрібну частину програми для керування нею. Маршрут буде перераховано, якщо відстань від маршруту до поточного місця розташування перевищує вибране значення. Виберіть відстань, після якого маршрут буде перераховано. Перерахунок маршруту у випадку відхилення @@ -3614,9 +3617,9 @@ Мова Усі мови Для перегляду POI Вікіпедії на мапі потрібні додаткові мапи. - Встановлення кількості елементів меню \"Скринька\", \"Налаштувати мапу\" та \"Контекстне меню\". -\n -\nВимкніть непотрібні втулки, щоби приховати всі їхні елементи керування %1$s. + Встановлення кількості елементів меню \"Скринька\", \"Налаштувати мапу\" та \"Контекстне меню\". +\n +\nВимкніть непотрібні втулки, щоб приховати всі їхні елементи керування %1$s. Елементи скриньки, контекстне меню Налаштування інтерфейсу Скринька @@ -3832,4 +3835,5 @@ Переглянути наявний трек Створити новий маршрут Оберіть файл з треком для перегляду. + Готово \ No newline at end of file From 92e93332bb641b1402484f000cedd0c715755cb2 Mon Sep 17 00:00:00 2001 From: ssantos Date: Tue, 28 Jul 2020 14:38:29 +0000 Subject: [PATCH 19/53] Translated using Weblate (Portuguese) Currently translated at 100.0% (3438 of 3438 strings) --- OsmAnd/res/values-pt/strings.xml | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/OsmAnd/res/values-pt/strings.xml b/OsmAnd/res/values-pt/strings.xml index db7fad15b5..2994d515d2 100644 --- a/OsmAnd/res/values-pt/strings.xml +++ b/OsmAnd/res/values-pt/strings.xml @@ -917,13 +917,11 @@ Curvas de nível Foto %1$s de %2$s Capture uma foto - Este suplemento disponibiliza \'Curvas de Nível\' e \'Sombras de relevo\', que podem ser aplicadas nos mapas standard do OsmAnd. -\nEstas funcionalidades podem ser apreciadas por atletas, caminhantes, e qualquer pessoa interessada na informação de relevo de uma paisagem. -\n + Este suplemento disponibiliza \'Curvas de Nível\' e \'Sombras de relevo\', que podem ser aplicadas nos mapas padrão do OsmAnd. +\nEstas funcionalidades podem ser apreciadas por atletas, caminhantes e qualquer pessoa interessada na informação de relevo de uma paisagem. \n -\nOs dados globais (entre as latitudes 70° norte e 70° sul) são baseados nas medições do SRTM (Shuttle Radar Topography Mission) e do ASTER (Advanced Spaceborn Thermal Emission and Reflection Radiometer), um instrumento de imagens no \'Terra\', o satélite principal do Sistema de Observação da Terra da NASA. O ASTER é um esforço conjunto da NASA, do Ministério da Economia, Comércio e Indústria do Japão e do Sistema Espacial Japonês (J-spacesystems). - Este suplemento disponibiliza \'Curvas de Nível\' e \'Sombras de relevo\', que podem ser aplicadas nos mapas padrão do OsmAnd. -\nEstas funcionalidades podem ser apreciadas por atletas, caminhantes, e qualquer pessoa interessada na informação de relevo de uma paisagem. +\n Os dados globais (entre as latitudes 70° norte e 70° sul) são baseados nas medições do SRTM (Shuttle Radar Topography Mission) e do ASTER (Advanced Spaceborn Thermal Emission and Reflection Radiometer), um instrumento de imagens no \'Terra\', o satélite principal do Sistema de Observação da Terra da NASA. O ASTER é um esforço conjunto da NASA, do Ministério da Economia, Comércio e Indústria do Japão e do Sistema Espacial Japonês (J-spacesystems). + Este suplemento disponibiliza \'Curvas de Nível\' e \'Sombras de relevo\', que podem ser aplicadas nos mapas padrão do OsmAnd. Estas funcionalidades podem ser apreciadas por atletas, caminhantes, e qualquer pessoa interessada na informação de relevo de uma paisagem. \n \nOs dados globais (entre as latitudes 70° norte e 70° sul) são baseados nas medições do SRTM (Shuttle Radar Topography Mission) e do ASTER (Advanced Spaceborn Thermal Emission and Reflection Radiometer), um instrumento de imagens no \'Terra\', o satélite principal do Sistema de Observação da Terra da NASA. O ASTER é um esforço conjunto da NASA, do Ministério da Economia, Comércio e Indústria do Japão e do Sistema Espacial Japonês (J-spacesystems). Curvas de nível @@ -2633,13 +2631,14 @@ \nOsmAnd+ é a versão paga da aplicação. Ao comprá-lo, está a apoiar o projeto, a financiar o desenvolvimento de novas funcionalidades e a receber as últimas atualizações. \n \nAlgumas das características principais: - Navegação + Navegação \n• Funciona on-line (rápido) ou off-line (sem custos de roaming quando estiver no estrangeiro) \n• Orientação por voz passo a passo (vozes gravadas e sintetizadas) \n• Orientação de trajetos opcionais, visualização do nome da rua e tempo estimado de chegada \n• Suporta pontos intermediários do seu itinerário \n• Correção automática da rota sempre que sair da rota -\n• Procure lugares por endereço, pelo tipo (por exemplo: restaurante, hotel, posto de gasolina, museu...) ou por coordenadas geográficas +\n• Procure lugares por endereço, pelo tipo (por exemplo: restaurante, hotel, posto de gasolina, museu...) ou por coordenadas geográficas +\n Visualização de mapa \n • Veja a sua posição e orientação. \n • Oriente opcionalmente o ecrã de acordo com a bússola ou a direção do seu movimento. @@ -3840,4 +3839,10 @@ Personalizado Setas de direção Sólido + Última edição + Importar trilho + Abrir trilho existente + Selecione um ficheiro de trilho para abrir. + Criar rota + Pronto \ No newline at end of file From 4522eb9b58a6ba8c88faa5c588627ae087b21b6c Mon Sep 17 00:00:00 2001 From: Ldm Public Date: Mon, 27 Jul 2020 18:55:51 +0000 Subject: [PATCH 20/53] Translated using Weblate (French) Currently translated at 100.0% (3438 of 3438 strings) --- OsmAnd/res/values-fr/strings.xml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/OsmAnd/res/values-fr/strings.xml b/OsmAnd/res/values-fr/strings.xml index 68a92d07e8..e11944f900 100644 --- a/OsmAnd/res/values-fr/strings.xml +++ b/OsmAnd/res/values-fr/strings.xml @@ -3814,4 +3814,10 @@ Afficher les icônes de départ et d\'arrivée Sélectionner la largeur Flèches de direction + Dernière modification + Importer une trace + Ouvrir une trace existante + Créer un nouvel itinéraire + Sélectionnez un fichier de trace à ouvrir. + Terminé \ No newline at end of file From 2326272051346170485d7d9c6cd1da73a6a3c17b Mon Sep 17 00:00:00 2001 From: Oliver Date: Wed, 29 Jul 2020 08:00:03 +0000 Subject: [PATCH 21/53] Translated using Weblate (German) Currently translated at 100.0% (3438 of 3438 strings) --- OsmAnd/res/values-de/strings.xml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/OsmAnd/res/values-de/strings.xml b/OsmAnd/res/values-de/strings.xml index f54da11034..c6aa61825e 100644 --- a/OsmAnd/res/values-de/strings.xml +++ b/OsmAnd/res/values-de/strings.xml @@ -3839,4 +3839,10 @@ Benutzerdefiniert Richtungspfeile Ausgefüllt + Zuletzt bearbeitet + Track importieren + Vorhandenen Track öffnen + Neue Route erstellen + Wählen Sie eine Trackdatei zum Öffnen aus. + Fertig \ No newline at end of file From e3eef4d0d1694cdc05ef821398010ff7406b69da Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?O=C4=9Fuz=20Ersen?= Date: Mon, 27 Jul 2020 08:57:46 +0000 Subject: [PATCH 22/53] Translated using Weblate (Turkish) Currently translated at 100.0% (3438 of 3438 strings) --- OsmAnd/res/values-tr/strings.xml | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/OsmAnd/res/values-tr/strings.xml b/OsmAnd/res/values-tr/strings.xml index 711551c34e..7e5f2ae3a6 100644 --- a/OsmAnd/res/values-tr/strings.xml +++ b/OsmAnd/res/values-tr/strings.xml @@ -1632,9 +1632,12 @@ Bölüm %1$s nokta Nokta%1$s - %1$s\nRota%2$s işaret - %1$s\nPoints - %1$s\nParça%2$s + %1$s +\nGüzergah noktaları %2$s + %1$s +\nNoktalar + %1$s +\nYol %2$s Boş GPX dosyası Ekran rengi Günler @@ -3787,4 +3790,10 @@ Özel Yön okları Koyu + Son düzenleme + Yolu içe aktar + Mevcut yolu aç + Yeni güzergah oluştur + Açmak için bir yol dosyası seçin. + Bitti \ No newline at end of file From af245bb822d4d3770c19f1fae98d8c9790459bae Mon Sep 17 00:00:00 2001 From: Andriy Grin Date: Wed, 29 Jul 2020 09:08:51 +0000 Subject: [PATCH 23/53] Translated using Weblate (Ukrainian) Currently translated at 100.0% (3438 of 3438 strings) --- OsmAnd/res/values-uk/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OsmAnd/res/values-uk/strings.xml b/OsmAnd/res/values-uk/strings.xml index d425f11f8a..1145952caa 100644 --- a/OsmAnd/res/values-uk/strings.xml +++ b/OsmAnd/res/values-uk/strings.xml @@ -2781,7 +2781,7 @@ Лише через WiFi Вибрати щоденник подорожей Щоденник подорожей - Сторінка доступна лише в мережі. Відкрити в браузері\? + Сторінка доступна лише в мережі. Відкрити у браузері\? Кеш зображень Вилучити історію пошуку Завантаження зображень From e32b9c9b484f4245c7585f8fb66ecaf1488c9587 Mon Sep 17 00:00:00 2001 From: ace shadow Date: Mon, 27 Jul 2020 19:29:04 +0000 Subject: [PATCH 24/53] Translated using Weblate (Slovak) Currently translated at 100.0% (3438 of 3438 strings) --- OsmAnd/res/values-sk/strings.xml | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/OsmAnd/res/values-sk/strings.xml b/OsmAnd/res/values-sk/strings.xml index 1c81c4d8ce..be5ff4790f 100644 --- a/OsmAnd/res/values-sk/strings.xml +++ b/OsmAnd/res/values-sk/strings.xml @@ -286,7 +286,9 @@ Obrátiť GPX smerovanie Použiť aktuálny cieľový bod Prejsť pozdĺž celej trasy - Pre túto oblasť je dostupná offline vektorová mapa.\n\t\n\tNa jej použitie aktivujte Menu → Zobrazenie → Zdroj mapy… → Vektorové OSM mapy. + Pre túto oblasť je dostupná offline vektorová mapa. +\n\t +\n\tNa jej použitie aktivujte \'Menu\' → \'Zobrazenie\' → \'Zdroj mapy…\' → \'Vektorové OSM mapy\'. Výstup hlasových pokynov Vybrať reproduktor pre hlasové pokyny. Zvuk telefónneho hovoru (preruší Bluetooth stereo v aute) @@ -3830,4 +3832,10 @@ Vlastné Smerové šípky Plné + Naposledy upravené + Importovať stopu + Otvoriť existujúcu stopu + Vytvoriť novú trasu + Zvoľte súbor so stopou na otvorenie. + Hotovo \ No newline at end of file From 77f304de6b8ed79dba07153c8b5a70d135e407f2 Mon Sep 17 00:00:00 2001 From: D M Date: Mon, 27 Jul 2020 09:53:45 +0000 Subject: [PATCH 25/53] Translated using Weblate (Serbian) Currently translated at 100.0% (3438 of 3438 strings) --- OsmAnd/res/values-sr/strings.xml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/OsmAnd/res/values-sr/strings.xml b/OsmAnd/res/values-sr/strings.xml index 8d723fb154..844ff1686b 100644 --- a/OsmAnd/res/values-sr/strings.xml +++ b/OsmAnd/res/values-sr/strings.xml @@ -3829,4 +3829,10 @@ Чврст Додата тачка неће бити видљива на мапи, пошто је одабрана група сакривена, можете је пронаћи у „%s“. Прикажи почетно крајне иконе + Последње измењена + Увези путању + Отвори постојећу путању + Креирај нову руту + Изаберите фајл путање за отварање. + Завршено \ No newline at end of file From b1725e7eb921eede4ac8cb46e87e482dd8b51932 Mon Sep 17 00:00:00 2001 From: Yaron Shahrabani Date: Mon, 27 Jul 2020 05:36:33 +0000 Subject: [PATCH 26/53] Translated using Weblate (Hebrew) Currently translated at 100.0% (3438 of 3438 strings) --- OsmAnd/res/values-iw/strings.xml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/OsmAnd/res/values-iw/strings.xml b/OsmAnd/res/values-iw/strings.xml index 6249b4e58d..6c32a1020f 100644 --- a/OsmAnd/res/values-iw/strings.xml +++ b/OsmAnd/res/values-iw/strings.xml @@ -3840,4 +3840,10 @@ התאמה אישית חצי כיוון אחיד + עריכה אחרונה + ייבוא מסלול + פתיחת מסלול קיים + יצירת מסלול חדש + נא לבחור קובץ מסלול לפתיחה. + בוצע \ No newline at end of file From cfcda9bbe1f7cfa8bfa3e3cb8b01c60f594b2c2b Mon Sep 17 00:00:00 2001 From: WaldiS Date: Mon, 27 Jul 2020 16:22:49 +0000 Subject: [PATCH 27/53] Translated using Weblate (Polish) Currently translated at 99.6% (3427 of 3438 strings) --- OsmAnd/res/values-pl/strings.xml | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/OsmAnd/res/values-pl/strings.xml b/OsmAnd/res/values-pl/strings.xml index fc1d70f6fd..eef7882af8 100644 --- a/OsmAnd/res/values-pl/strings.xml +++ b/OsmAnd/res/values-pl/strings.xml @@ -3832,4 +3832,16 @@ Wybierz szerokość Wybierz żądaną opcję podziału: według czasu lub odległości. Stałe + OsmAnd GPX nie jest dobrze uformowany, prosimy o kontakt z zespołem wsparcia technicznego w celu dalszego zbadania sprawy. + Wybierz limit czasu ekranu po przebudzeniu. (\"%1$s\" nie powoduje przekroczenia limitu czasu). + Pokaż ikony rozpoczęcia i zakończenia + Wybierz przedział czasowy, w którym będą wyświetlane znaki z dystansem lub czasem na torze. + Niestandardowy + Strzałki kierunkowe + Ostatnio edytowane + Importuj ścieżkę + Otwórz istniejącą ścieżkę + Utwórz nową trasę + Wybierz plik ścieżki do otwarcia. + Wykonane \ No newline at end of file From 73accdf10d9c4128b9a35beb5b98737a61c564e6 Mon Sep 17 00:00:00 2001 From: Ajeje Brazorf Date: Mon, 27 Jul 2020 13:25:43 +0000 Subject: [PATCH 28/53] Translated using Weblate (Sardinian) Currently translated at 99.6% (3426 of 3438 strings) --- OsmAnd/res/values-sc/strings.xml | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/OsmAnd/res/values-sc/strings.xml b/OsmAnd/res/values-sc/strings.xml index 87523247bf..c758a23f9c 100644 --- a/OsmAnd/res/values-sc/strings.xml +++ b/OsmAnd/res/values-sc/strings.xml @@ -3828,4 +3828,16 @@ Annanghe a una rasta Personalizadu Fritzas de diretzione + Su puntu annànghidu no at a èssere visìbile in sa mapa, ca su grupu ischertadu est cuadu. Lu podes agatare in \"%s\". + Ammustra sas iconas de incumintzu e acabu + Ischerta sa largària + Ischerta s\'intervallu in ue sos sinnos cun distàntzia o oràriu in sa mapa ant a èssere ammustrados. + Ischerta s\'optzione de partzidura chi cheres: pro tempus o pro distàntzia. + Sòlidu + Ùrtima modìfica + Aberi una rasta chi esistit giai + Importa una rasta + Crea un\'àndala noa + Ischerta unu documentu de rasta de abèrrere. + Fatu \ No newline at end of file From 3501e2e37383dea0eb800e893b0bc8f6f75c3804 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kristjan=20R=C3=A4ts?= Date: Tue, 28 Jul 2020 08:42:55 +0000 Subject: [PATCH 29/53] Translated using Weblate (Estonian) Currently translated at 100.0% (3812 of 3812 strings) --- OsmAnd/res/values-et/phrases.xml | 30 ++++++++++++++++++++++-------- 1 file changed, 22 insertions(+), 8 deletions(-) diff --git a/OsmAnd/res/values-et/phrases.xml b/OsmAnd/res/values-et/phrases.xml index 3351abbc5a..658605c00c 100644 --- a/OsmAnd/res/values-et/phrases.xml +++ b/OsmAnd/res/values-et/phrases.xml @@ -326,7 +326,7 @@ Rehvid Sõiduki tehnoülevaatus Autopesula - Bensiinijaam; Bensiinijaam; Tankla; Bensiinijaam + Tankla; Bensiinijaam Sõiduki kaldtee Suruõhk Parkimine @@ -634,7 +634,7 @@ Parvlaev 91UL kütus 100LL kütus - AdBlue kütus + Diiselväljalaske vedelik (AdBlue) Kütus: puit Kütus: puusüsi Kütus: kivisüsi @@ -678,7 +678,7 @@ Traavivõistlused Uisutamine Jäävaru - Korfbal + Korfball Orienteerumine Mõlatennis Paraliuglemine @@ -1311,7 +1311,7 @@ Tehisjõul Pump puudub Mineraal - Vee omadus: muda + Muda Väävelhape Veepunkt Liigid @@ -1354,7 +1354,7 @@ Jah Ilma kombatava sillutiseta Jah - Ei + Heli: ei Ainult kui kõndimine on lubatud Raskeveokite teemaks Päästejaam @@ -1639,7 +1639,7 @@ Elektrisõidukite remont Mootorrataste remont Jah - Iseteenindust ei ole + Ei Jah Mitteautomaatne Täisteenus @@ -1663,7 +1663,7 @@ Mähkmevahetuslaud Mähkmevahetuslaud puudub Mähkmevahetustuba - Autopesu: ei + Ei Parkimisaja piir Parkimispiletid Sigaretid @@ -1709,7 +1709,7 @@ Koshinto Sinine tahvel Jizo - Ristikujuline + Risti kuju Sõiduk Obelisk Pealdis @@ -3800,4 +3800,18 @@ Veetase: üleujutatud Veetase: kaetud Veetase: veega kaetud + Linnaosa + Vald + Annetuskast + Teeviit + Jah + Jah + Vibreerimine: ei + Pumba olek: kiir puudub + Imatav + Hüdrant + Pinnavesi + Toru + Värin + Surve \ No newline at end of file From 1998bcc033b41dc35888728bb07e7e5fc393853f Mon Sep 17 00:00:00 2001 From: Eduardo Addad de Oliveira Date: Tue, 28 Jul 2020 21:10:32 +0000 Subject: [PATCH 30/53] Translated using Weblate (Portuguese (Brazil)) Currently translated at 100.0% (3438 of 3438 strings) --- OsmAnd/res/values-pt-rBR/strings.xml | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/OsmAnd/res/values-pt-rBR/strings.xml b/OsmAnd/res/values-pt-rBR/strings.xml index 013cf289b6..d853e11bc6 100644 --- a/OsmAnd/res/values-pt-rBR/strings.xml +++ b/OsmAnd/res/values-pt-rBR/strings.xml @@ -428,7 +428,8 @@ Tempo em movimento: %1$s %1$s pontos Ponto %1$s - %1$s ↵\nPontos de Rota %2$s + %1$s↵ +\nPontos de Rota %2$s %1$s↵\nPontos %1$s \nTrilha %2$s @@ -607,8 +608,8 @@ \n - Sem acesso offline a POIs da Wikipedia \n \n OsmAnd está sendo desenvolvido ativamente e o nosso projeto e seu progresso contínuo depende de contribuições financeiras para o desenvolvimento e teste de novas funcionalidades. Por favor, considere adquirir OsmAnd+, ou financiar novas funcionalidades específicas ou fazer uma doação geral em https://osmand.net. - Nascer do Sol: %1$s -Pôr do Sol: %2$s + Nascer do sol: %1$s +\nPôr do sol: %2$s Sem estradas não pavimentadas Ativar\n modo segundo plano Radares @@ -3819,4 +3820,10 @@ Pôr do Sol: %2$s Personalizados Setas de direção Sólido + Última edição + Importar trilha + Abrir trilha existente + Criar nova rota + Selecione um arquivo de faixa para abrir. + Concluído \ No newline at end of file From e80dec6374071d41ac2c54d559c8b3cfce4dd542 Mon Sep 17 00:00:00 2001 From: Jeff Huang Date: Mon, 27 Jul 2020 05:30:32 +0000 Subject: [PATCH 31/53] Translated using Weblate (Chinese (Traditional)) Currently translated at 100.0% (3438 of 3438 strings) --- OsmAnd/res/values-zh-rTW/strings.xml | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/OsmAnd/res/values-zh-rTW/strings.xml b/OsmAnd/res/values-zh-rTW/strings.xml index aa1224c044..aa684d69a9 100644 --- a/OsmAnd/res/values-zh-rTW/strings.xml +++ b/OsmAnd/res/values-zh-rTW/strings.xml @@ -434,7 +434,9 @@ 反轉 GPX 方向 使用目前的目的地 沿著整條軌跡往前 - 指定以離線向量地圖顯示\n\t\n\t啟用方式\'選單\' -> \'組態地圖\' -> \'地圖來源…\' -> \'離線向量圖\'。 + 此位置目前有向量地圖可以使用。 +\n\t +\n\t想要使用,請從「選單」→「設定地圖」→「地圖來源……」→「離線向量地圖」。 語音導航輸出 選取要播放語音導航的揚聲器。 通話音訊(會中斷汽車藍牙音效) @@ -3827,4 +3829,10 @@ 自訂 方向箭頭 密實 + 最後編輯 + 匯入軌跡 + 開啟既有的軌跡 + 建立新路線 + 選取要開啟的軌跡檔。 + 完成 \ No newline at end of file From dc850e52f0f7aca34e58bbff2d113f1db556c1c3 Mon Sep 17 00:00:00 2001 From: ihor_ck Date: Tue, 28 Jul 2020 18:20:44 +0000 Subject: [PATCH 32/53] Translated using Weblate (Ukrainian) Currently translated at 100.0% (267 of 267 strings) Translation: OsmAnd/Telegram Translate-URL: https://hosted.weblate.org/projects/osmand/telegram/uk/ --- OsmAnd-telegram/res/values-uk/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OsmAnd-telegram/res/values-uk/strings.xml b/OsmAnd-telegram/res/values-uk/strings.xml index 28e088080f..1ff2bebb09 100644 --- a/OsmAnd-telegram/res/values-uk/strings.xml +++ b/OsmAnd-telegram/res/values-uk/strings.xml @@ -251,7 +251,7 @@ Збережені повідомлення Оберіть часовий пояс щоб відобразити повідомлення у вашому розташуванні. Часовий пояс - Одиниця вимірювання та формати + Одиниці виміру й формати Одиниці вимірювання довжини Змінити одиницю вимірювання відстані. Визначити одиницю швидкості. From 174a940d599dd73db8be6aa2e55141277cf619a7 Mon Sep 17 00:00:00 2001 From: max-klaus Date: Wed, 29 Jul 2020 13:18:53 +0300 Subject: [PATCH 33/53] Fix gpx routing --- .../plus/activities/MapActivityActions.java | 9 +--- .../cards/TracksCard.java | 1 - .../plus/routing/RouteCalculationResult.java | 31 ----------- .../osmand/plus/routing/RouteProvider.java | 52 +++++++------------ 4 files changed, 20 insertions(+), 73 deletions(-) diff --git a/OsmAnd/src/net/osmand/plus/activities/MapActivityActions.java b/OsmAnd/src/net/osmand/plus/activities/MapActivityActions.java index 273d69d831..360c13e781 100644 --- a/OsmAnd/src/net/osmand/plus/activities/MapActivityActions.java +++ b/OsmAnd/src/net/osmand/plus/activities/MapActivityActions.java @@ -517,15 +517,10 @@ public class MapActivityActions implements DialogProvider { mapActivity.getRoutingHelper().setGpxParams(params); settings.FOLLOW_THE_GPX_ROUTE.set(result.path); if (!ps.isEmpty()) { - Location startLoc = ps.get(0); - Location finishLoc = ps.get(ps.size() - 1); TargetPointsHelper tg = mapActivity.getMyApplication().getTargetPointsHelper(); + tg.clearStartPoint(false); + Location finishLoc = ps.get(ps.size() - 1); tg.navigateToPoint(new LatLon(finishLoc.getLatitude(), finishLoc.getLongitude()), false, -1); - if (startLoc != finishLoc) { - tg.setStartPoint(new LatLon(startLoc.getLatitude(), startLoc.getLongitude()), false, null); - } else { - tg.clearStartPoint(false); - } } } } diff --git a/OsmAnd/src/net/osmand/plus/routepreparationmenu/cards/TracksCard.java b/OsmAnd/src/net/osmand/plus/routepreparationmenu/cards/TracksCard.java index b04cfb77aa..78bd52085e 100644 --- a/OsmAnd/src/net/osmand/plus/routepreparationmenu/cards/TracksCard.java +++ b/OsmAnd/src/net/osmand/plus/routepreparationmenu/cards/TracksCard.java @@ -117,7 +117,6 @@ public class TracksCard extends BaseCard { public void onClick(View v) { mapActivity.getMapActions().setGPXRouteParams(item.file); app.getTargetPointsHelper().updateRouteAndRefresh(true); - app.getRoutingHelper().recalculateRouteDueToSettingsChange(); } }); tracks.addView(v); diff --git a/OsmAnd/src/net/osmand/plus/routing/RouteCalculationResult.java b/OsmAnd/src/net/osmand/plus/routing/RouteCalculationResult.java index a458b281e9..9af8b04641 100644 --- a/OsmAnd/src/net/osmand/plus/routing/RouteCalculationResult.java +++ b/OsmAnd/src/net/osmand/plus/routing/RouteCalculationResult.java @@ -302,37 +302,6 @@ public class RouteCalculationResult { return list; } - public List getRoute(int startIndex) { - if (segments.size() == 0) { - return null; - } - List list = new ArrayList(); - int skippedPoints = 0; - for (int i = 1; i <= startIndex; i++) { - RouteSegmentResult seg = segments.get(i - 1); - if (seg != segments.get(i)) { - skippedPoints += Math.abs(seg.getEndPointIndex() - seg.getStartPointIndex()); - } - } - list.add(segments.get(startIndex++)); - for (int i = startIndex; i < segments.size(); i++) { - if (segments.get(i - 1) != segments.get(i)) { - list.add(segments.get(i)); - } - } - if (!list.isEmpty()) { - RouteSegmentResult seg = list.get(0); - if (seg.isForwardDirection()) { - int index = seg.getStartPointIndex() + startIndex - skippedPoints; - seg.setStartPointIndex(index); - } else { - int index = seg.getEndPointIndex() + startIndex - skippedPoints; - seg.setEndPointIndex(index); - } - } - return list; - } - /** * PREPARATION */ diff --git a/OsmAnd/src/net/osmand/plus/routing/RouteProvider.java b/OsmAnd/src/net/osmand/plus/routing/RouteProvider.java index 66985df348..bcad053301 100644 --- a/OsmAnd/src/net/osmand/plus/routing/RouteProvider.java +++ b/OsmAnd/src/net/osmand/plus/routing/RouteProvider.java @@ -309,7 +309,7 @@ public class RouteProvider { return loc; } - public RouteCalculationResult calculateRouteImpl(RouteCalculationParams params){ + public RouteCalculationResult calculateRouteImpl(RouteCalculationParams params) { long time = System.currentTimeMillis(); if (params.start != null && params.end != null) { if(log.isInfoEnabled()){ @@ -369,25 +369,31 @@ public class RouteProvider { private RouteCalculationResult calculateGpxRoute(RouteCalculationParams routeParams) throws IOException { // get the closest point to start and to end GPXRouteParams gpxParams = routeParams.gpxRoute; + boolean calcWholeRoute = routeParams.gpxRoute.passWholeRoute && (routeParams.previousToRecalculate == null || !routeParams.onlyStartPointChanged); + boolean calculateOsmAndRouteParts = gpxParams.calculateOsmAndRouteParts; List gpxRouteResult = routeParams.gpxRoute.route; if (!Algorithms.isEmpty(gpxRouteResult)) { - boolean calculateOsmAndRouteParts = gpxParams.calculateOsmAndRouteParts; - if (routeParams.gpxRoute.passWholeRoute && !calculateOsmAndRouteParts) { + if (calcWholeRoute && !calculateOsmAndRouteParts) { return new RouteCalculationResult(gpxRouteResult, routeParams.start, routeParams.end, routeParams.intermediates, routeParams.ctx, routeParams.leftSide, null, null, routeParams.mode, true); } RouteCalculationResult result = new RouteCalculationResult(gpxRouteResult, routeParams.start, routeParams.end, - routeParams.intermediates, routeParams.ctx, routeParams.leftSide, null, null, routeParams.mode, false); + routeParams.intermediates, routeParams.ctx, routeParams.leftSide, null, null, routeParams.mode, false); List gpxRouteLocations = result.getImmutableAllLocations(); - int gpxNextIndex = routeParams.gpxRoute.passWholeRoute ? 0 : findStartIndexFromRoute(gpxRouteLocations, routeParams.start, calculateOsmAndRouteParts); - Location gpxNextLocation; + int gpxNextIndex = calcWholeRoute ? 0 : findStartIndexFromRoute(gpxRouteLocations, routeParams.start, calculateOsmAndRouteParts); + Location gpxNextLocation = null; List firstSegmentRoute = null; List gpxRoute; if (gpxNextIndex > 0) { gpxNextLocation = gpxRouteLocations.get(gpxNextIndex); - gpxRoute = result.getRoute(gpxNextIndex); + gpxRoute = result.getOriginalRoute(gpxNextIndex); + if (gpxRoute.size() > 0) { + gpxRoute.remove(0); + } } else { - gpxNextLocation = gpxRouteLocations.get(0); + if (!gpxRouteLocations.isEmpty()) { + gpxNextLocation = gpxRouteLocations.get(0); + } gpxRoute = result.getOriginalRoute(); } if (calculateOsmAndRouteParts @@ -405,43 +411,21 @@ public class RouteProvider { routeParams.intermediates, routeParams.ctx, routeParams.leftSide, null, null, routeParams.mode, true); } - if(routeParams.gpxRoute.useIntermediatePointsRTE){ + if (routeParams.gpxRoute.useIntermediatePointsRTE) { return calculateOsmAndRouteWithIntermediatePoints(routeParams, gpxParams.points); } + List gpxRoute ; int[] startI = new int[]{0}; - int[] endI = new int[]{gpxParams.points.size()}; - if (routeParams.gpxRoute.passWholeRoute) { + int[] endI = new int[]{gpxParams.points.size()}; + if (calcWholeRoute) { gpxRoute = gpxParams.points; - if (routeParams.previousToRecalculate != null && routeParams.onlyStartPointChanged) { - List routeLocations = routeParams.previousToRecalculate.getRouteLocations(); - if (routeLocations != null && routeLocations.size() >= 1) { - gpxRoute = new ArrayList<>(); - Location trackStart = routeLocations.get(0); - Location realStart = routeParams.start; - //insert gpxRouteResult segment from current location to next gpxRouteResult location if user deviated from gpxRouteResult - if (realStart != null && trackStart != null - && realStart.distanceTo(trackStart) > MIN_DISTANCE_FOR_INSERTING_ROUTE_SEGMENT - && !gpxParams.calculateOsmAndRouteParts) { - LatLon nextRouteLocation = new LatLon(trackStart.getLatitude(), trackStart.getLongitude()); - RouteCalculationResult newRes = findOfflineRouteSegment(routeParams, realStart, nextRouteLocation); - if (newRes != null && newRes.isCalculated()) { - gpxRoute.addAll(0, newRes.getImmutableAllLocations()); - } else { - gpxRoute.add(0, realStart); - } - } - gpxRoute.addAll(new ArrayList<>(routeLocations)); - endI = new int[]{gpxRoute.size()}; - } - } } else { gpxRoute = findStartAndEndLocationsFromRoute(gpxParams.points, routeParams.start, routeParams.end, startI, endI); } final List inputDirections = gpxParams.directions; List gpxDirections = calcDirections(startI, endI, inputDirections); - boolean calculateOsmAndRouteParts = gpxParams.calculateOsmAndRouteParts; insertInitialSegment(routeParams, gpxRoute, gpxDirections, calculateOsmAndRouteParts); insertFinalSegment(routeParams, gpxRoute, gpxDirections, calculateOsmAndRouteParts); From ea08f604b6840d41d2127972dcde541a6b79b595 Mon Sep 17 00:00:00 2001 From: Victor Shcherb Date: Wed, 29 Jul 2020 14:36:24 +0200 Subject: [PATCH 34/53] Fix sorting for tags --- .../net/osmand/osm/MapRenderingTypes.java | 28 ++++++++++--------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/OsmAnd-java/src/main/java/net/osmand/osm/MapRenderingTypes.java b/OsmAnd-java/src/main/java/net/osmand/osm/MapRenderingTypes.java index c6c90a1b25..68b74ebbfe 100644 --- a/OsmAnd-java/src/main/java/net/osmand/osm/MapRenderingTypes.java +++ b/OsmAnd-java/src/main/java/net/osmand/osm/MapRenderingTypes.java @@ -14,7 +14,6 @@ import java.util.Map; import java.util.Map.Entry; import net.osmand.PlatformUtil; -import net.osmand.osm.MapRenderingTypes.MapRulType; import net.osmand.util.Algorithms; import org.apache.commons.logging.Log; @@ -163,6 +162,16 @@ public abstract class MapRenderingTypes { return mt; } + protected MapRulType checkOrMainRule(String tag, String value, int minzoom) { + MapRulType mt = types.get(constructRuleKey(tag, value)); + if (mt == null) { + mt = registerRuleType(MapRulType.createMainEntity(tag, value)); + mt.minzoom = minzoom; + mt.maxzoom = 21; + } + return mt; + } + protected MapRulType checkOrCreateAdditional(String tag, String value) { MapRulType mt = types.get(constructRuleKey(tag, value)); if (mt == null) { @@ -319,16 +328,12 @@ public abstract class MapRenderingTypes { rtype.additionalTags.put(tg, targetTag); } } + rtype.relationGroupPrefix = parser.getAttributeValue("", "relationGroupPrefix"); //$NON-NLS-1$ String relationGroupAdditionalTags = parser.getAttributeValue("", "relationGroupAdditionalTags"); - String relationAdditionalPrefix = parser.getAttributeValue("", "relationGroupAdditionalPrefix"); if (relationGroupAdditionalTags != null) { rtype.relationGroupAdditionalTags = new LinkedHashMap(); for(String tg : relationGroupAdditionalTags.split(",")) { - String targetTag = tg; - if(!Algorithms.isEmpty(relationAdditionalPrefix)) { - targetTag = relationAdditionalPrefix + tg; - } - rtype.relationGroupAdditionalTags.put(tg, targetTag); + rtype.relationGroupAdditionalTags.put(tg, tg); } } @@ -343,12 +348,8 @@ public abstract class MapRenderingTypes { } String rnmts = parser.getAttributeValue("", "relationGroupNameTags"); if (rnmts != null) { - String relationGroupNamePrefix = parser.getAttributeValue("", "relationGroupNamePrefix"); //$NON-NLS-1$ - if (relationGroupNamePrefix == null) { - relationGroupNamePrefix = ""; - } rtype.relationGroupNameTags = new LinkedHashMap(); - putNameTags(rnmts, rtype.relationGroupNameTags, relationGroupNamePrefix); + putNameTags(rnmts, rtype.relationGroupNameTags, ""); } } return rtype; @@ -517,9 +518,10 @@ public abstract class MapRenderingTypes { // relation part protected Map relationNames; protected Map additionalTags; + protected Map> relationSortTags; + protected String relationGroupPrefix; protected Map relationGroupNameTags; protected Map relationGroupAdditionalTags; - protected Map> relationSortTags; protected TagValuePattern tagValuePattern; protected boolean additional; From b2335175cf4b16480e73b295f0b435b495cd019c Mon Sep 17 00:00:00 2001 From: Nazar-Kutz Date: Wed, 29 Jul 2020 16:20:29 +0300 Subject: [PATCH 35/53] Fix Changing POI category on an existing object has no impact --- OsmAnd/src/net/osmand/plus/osmedit/EditPoiData.java | 2 ++ .../net/osmand/plus/osmedit/EditPoiDialogFragment.java | 8 +------- 2 files changed, 3 insertions(+), 7 deletions(-) diff --git a/OsmAnd/src/net/osmand/plus/osmedit/EditPoiData.java b/OsmAnd/src/net/osmand/plus/osmedit/EditPoiData.java index e081c60c59..27a25bfc1c 100644 --- a/OsmAnd/src/net/osmand/plus/osmedit/EditPoiData.java +++ b/OsmAnd/src/net/osmand/plus/osmedit/EditPoiData.java @@ -51,6 +51,8 @@ public class EditPoiData { category = type; tagValues.put(POI_TYPE_TAG, ""); changedTags.add(POI_TYPE_TAG); + removeCurrentTypeTag(); + currentPoiType=null; } } diff --git a/OsmAnd/src/net/osmand/plus/osmedit/EditPoiDialogFragment.java b/OsmAnd/src/net/osmand/plus/osmedit/EditPoiDialogFragment.java index f31cf04c51..932ef59db5 100644 --- a/OsmAnd/src/net/osmand/plus/osmedit/EditPoiDialogFragment.java +++ b/OsmAnd/src/net/osmand/plus/osmedit/EditPoiDialogFragment.java @@ -112,7 +112,6 @@ public class EditPoiDialogFragment extends BaseOsmAndDialogFragment { private EditPoiData editPoiData; private EditPoiViewPager viewPager; private AutoCompleteTextView poiTypeEditText; - private boolean poiCategoryChanged; private OnSaveButtonClickListener onSaveButtonClickListener; private OpenstreetmapUtil mOpenstreetmapUtil; @@ -299,11 +298,7 @@ public class EditPoiDialogFragment extends BaseOsmAndDialogFragment { @Override public void afterTextChanged(Editable s) { if (!getEditPoiData().isInEdit()) { - if (!poiCategoryChanged) { - getEditPoiData().updateTypeTag(s.toString(), true); - } else { - poiCategoryChanged = false; - } + getEditPoiData().updateTypeTag(s.toString(), true); if (!getMyApplication().isApplicationInitializing()) { PoiCategory category = editPoiData.getPoiCategory(); if (category != null) { @@ -648,7 +643,6 @@ public class EditPoiDialogFragment extends BaseOsmAndDialogFragment { } public void setPoiCategory(PoiCategory type) { - poiCategoryChanged = true; editPoiData.updateType(type); poiTypeEditText.setText(editPoiData.getPoiTypeString()); setAdapterForPoiTypeEditText(); From 8f8c3e368528ee2cd13db262f75afdc7f39e0ad6 Mon Sep 17 00:00:00 2001 From: solokot Date: Wed, 29 Jul 2020 09:40:07 +0000 Subject: [PATCH 36/53] Translated using Weblate (Russian) Currently translated at 100.0% (3438 of 3438 strings) --- 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 644216cf35..9a6458cfc1 100644 --- a/OsmAnd/res/values-ru/strings.xml +++ b/OsmAnd/res/values-ru/strings.xml @@ -2366,7 +2366,7 @@ Редактировать линию Добавить точку перед Добавить точку после - Опции + Функции OsmAnd соединит точки с маршрутом для выбранного профиля. Сохранить точки, как точки маршрута или как линию. Выберите профиль навигации From bde3fdf4f2d670cd10718212ffa125d2bc63167e Mon Sep 17 00:00:00 2001 From: Dmitriy Prodchenko Date: Wed, 29 Jul 2020 14:41:57 +0000 Subject: [PATCH 37/53] Translated using Weblate (Russian) Currently translated at 100.0% (3438 of 3438 strings) --- 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 9a6458cfc1..644216cf35 100644 --- a/OsmAnd/res/values-ru/strings.xml +++ b/OsmAnd/res/values-ru/strings.xml @@ -2366,7 +2366,7 @@ Редактировать линию Добавить точку перед Добавить точку после - Функции + Опции OsmAnd соединит точки с маршрутом для выбранного профиля. Сохранить точки, как точки маршрута или как линию. Выберите профиль навигации From 8bbb4e71cbee20983d8bf5e7f596c5efeb83702a Mon Sep 17 00:00:00 2001 From: Andriy Grin Date: Wed, 29 Jul 2020 10:31:44 +0000 Subject: [PATCH 38/53] Translated using Weblate (Ukrainian) Currently translated at 100.0% (3438 of 3438 strings) --- OsmAnd/res/values-uk/strings.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/OsmAnd/res/values-uk/strings.xml b/OsmAnd/res/values-uk/strings.xml index 1145952caa..c3ebe8ca75 100644 --- a/OsmAnd/res/values-uk/strings.xml +++ b/OsmAnd/res/values-uk/strings.xml @@ -177,7 +177,7 @@ Прозора тема Вбудована бібліотека не підтримується на цьому пристрої. Ініціалізація рідної бібліотеки… - Самоосереднення мапи + Автоцентрування мапи Час, через який мапа повернеться до поточної позиції. Автоцентрування мапи тільки під час навігації Повертати мапу в поточну позицію тільки при навігації за маршрутом. @@ -3781,7 +3781,7 @@ Встановіть ширину судна, щоб уникнути вузьких мостів Увімкнути/вимкнути Mapillary Вимкнути Mapillary - Показати шар Mapillary + Показати Mapillary Перемикач показує/приховує шар Mapillary на мапі. Видалити камери контролю швидкості Законодавство From 102cb57df19ddd701cf508fb32e7fd30fb962ff8 Mon Sep 17 00:00:00 2001 From: Tymofij Lytvynenko Date: Wed, 29 Jul 2020 09:51:50 +0000 Subject: [PATCH 39/53] Translated using Weblate (Ukrainian) Currently translated at 100.0% (3438 of 3438 strings) --- OsmAnd/res/values-uk/strings.xml | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/OsmAnd/res/values-uk/strings.xml b/OsmAnd/res/values-uk/strings.xml index c3ebe8ca75..4a7474c5b9 100644 --- a/OsmAnd/res/values-uk/strings.xml +++ b/OsmAnd/res/values-uk/strings.xml @@ -800,10 +800,10 @@ Використовувати системний записувач Використовувати системний застосунок для світлин. недоступно - Стоп + Зупинити Почати Звуко/відео-нотатки - Плагін OsmAnd для показу горизонталей в автономному режимі + Втулок OsmAnd для показу горизонталей в автономному режимі Використовувати програму Камера Налаштування аудіо/відео запису. Налаштування аудіо/відео @@ -1372,7 +1372,7 @@ Прикордонний контроль Збирання плати за проїзд Знак СТОП - Зниження швидкості + Штучна дорожня нерівність Камера контролю швидкості Попередження на дорозі Натисніть на будь-який наявний елемент для перегляду додаткових відомостей, довго утримуйте, щоб знедіяти або вилучити. Наявні дані на пристрої (%1$s вільно): @@ -1702,7 +1702,7 @@ Зупинити симуляцію Вашої позиції. Пошук адреси Місця - Плагіни + Втулки Уник. приміських поїздів Уникати приміських поїздів Небезпека @@ -2244,7 +2244,7 @@ Відсортоване за відстанню Пошук у закладках Для того, щоб відобразити затінення рельєфу, потрібно завантажити спеціальну мапу для цієї області. - Щоб побачити рельєф місцевості на мапі, вам потрібно придбати та встановити плагін \'Горизонталі\' (\'Contour Lines\'). + Щоб побачити рельєф місцевості на мапі, вам потрібно придбати та встановити втулок \'Горизонталі\' (\'Contour Lines\'). Приховати від рівня масштабування Завантажте мапу \'Горизонталі\' (\'Contour Line\') для використання у цій області. Втулок @@ -3277,7 +3277,7 @@ Впливає на весь застосунок Навігаційні вказівки та оголошення Буфер logcat - Налаштування плагіна + Налаштування втулка Усталено Розраховує час прибуття для невідомих типів доріг і обмежує швидкість для всіх доріг (може вплинути на маршрутизацію) Завантажте докладну мапу %s, щоб переглянути цю область. @@ -3524,7 +3524,7 @@ Впорядкувати за категоріями Укажіть назву профілю Відкрити налаштування - Плагін вимкнено + Втулок вимкнено Цей втулок є окремою програмою, якщо ви не плануєте користуватися ним надалі, його потрібно буде видалити окремо. \n \nВін залишиться на пристрої після видалення OsmAnd. @@ -3628,7 +3628,7 @@ Дільник Елементи нижче цієї точки розділені дільником. Приховано - Ці елементи приховані з меню, але встановлені параметри або плагіни продовжать роботу. + Ці елементи приховані з меню, але встановлені параметри або втулки продовжать роботу. Приховування налаштувань призведе до скидання до їхнього початкового стану. Має лише 4 кнопки. Основні дії @@ -3816,7 +3816,7 @@ легкий мотоцикл Інвалідне крісло Інвалідне крісло попереду - у мапу + Картинг Закрита нотатка OSM Своє Додана точка не буде показуватись на мапі, вся обрана група є прихованою, ви можете побачити її в \"%s\". From 21ce496a02091ab6dab6f527b21e0d5dcd0aacd3 Mon Sep 17 00:00:00 2001 From: Martu Date: Wed, 29 Jul 2020 10:26:01 +0000 Subject: [PATCH 40/53] Translated using Weblate (Spanish) Currently translated at 94.3% (3243 of 3438 strings) --- OsmAnd/res/values-es/strings.xml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/OsmAnd/res/values-es/strings.xml b/OsmAnd/res/values-es/strings.xml index 212a456e53..fad71be324 100644 --- a/OsmAnd/res/values-es/strings.xml +++ b/OsmAnd/res/values-es/strings.xml @@ -3815,4 +3815,7 @@ Por favor, proporcione un nombre para el punto El punto de destino actual de la ruta será borrado. Si se trata del destino, la navegación se detendrá. Descargar mapas de Wikipedia + Abrir la pista existente + Crea una nueva ruta + Planea una ruta \ No newline at end of file From 0e4d1f288bd45e161965e3a0039e9df9a2ad65a0 Mon Sep 17 00:00:00 2001 From: D M Date: Wed, 29 Jul 2020 10:17:00 +0000 Subject: [PATCH 41/53] Translated using Weblate (Serbian) Currently translated at 100.0% (3438 of 3438 strings) --- OsmAnd/res/values-sr/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OsmAnd/res/values-sr/strings.xml b/OsmAnd/res/values-sr/strings.xml index 844ff1686b..78c2cc5853 100644 --- a/OsmAnd/res/values-sr/strings.xml +++ b/OsmAnd/res/values-sr/strings.xml @@ -684,7 +684,7 @@ Није означено h min - Смиривање саобраћаја + Лежећи полицајац Упозорења о гужвама у саобраћају Позадинске услуге OsmAnd-а су и даље покренуте. Прекинути и њих? Прекинути позадински режим GPS-а? From 7542eac77cca6c27283b2ec9ca47259cb04b3a1c Mon Sep 17 00:00:00 2001 From: Yaron Shahrabani Date: Wed, 29 Jul 2020 12:04:12 +0000 Subject: [PATCH 42/53] Translated using Weblate (Hebrew) Currently translated at 100.0% (3438 of 3438 strings) --- OsmAnd/res/values-iw/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OsmAnd/res/values-iw/strings.xml b/OsmAnd/res/values-iw/strings.xml index 6c32a1020f..2daaed73c7 100644 --- a/OsmAnd/res/values-iw/strings.xml +++ b/OsmAnd/res/values-iw/strings.xml @@ -1515,7 +1515,7 @@ ביקורת גבולות עמדת תשלום סימן עצור - מיתון תנועה + פסי האטה מצלמת מהירות אזהרת תנועה מועדפים בסביבה From fa17939ceb3c1812a8353a5d7665576512f4145f Mon Sep 17 00:00:00 2001 From: Ahmad Alfrhood Date: Wed, 29 Jul 2020 09:38:41 +0000 Subject: [PATCH 43/53] Translated using Weblate (Arabic) Currently translated at 100.0% (3438 of 3438 strings) --- OsmAnd/res/values-ar/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OsmAnd/res/values-ar/strings.xml b/OsmAnd/res/values-ar/strings.xml index 56c85c305b..881455e2d9 100644 --- a/OsmAnd/res/values-ar/strings.xml +++ b/OsmAnd/res/values-ar/strings.xml @@ -1185,7 +1185,7 @@ حدد حد السرعة المسموح به لتلقي تنبيه صوتي إذا ما تجاوزته. مراقبة الحدود كشك الرسوم - تخفيف الازدحام + مطب كاميرا مراقبة السرعة تنبيه مروري نقاط الاهتمام المجاورة From 1114a91be74abb5da733d1e8ebfad09f4040370a Mon Sep 17 00:00:00 2001 From: Victor Shcherb Date: Wed, 29 Jul 2020 18:29:25 +0200 Subject: [PATCH 44/53] introduce new methods --- .../net/osmand/osm/MapRenderingTypes.java | 43 +++++++++++++++---- 1 file changed, 34 insertions(+), 9 deletions(-) diff --git a/OsmAnd-java/src/main/java/net/osmand/osm/MapRenderingTypes.java b/OsmAnd-java/src/main/java/net/osmand/osm/MapRenderingTypes.java index 68b74ebbfe..a27cba56ec 100644 --- a/OsmAnd-java/src/main/java/net/osmand/osm/MapRenderingTypes.java +++ b/OsmAnd-java/src/main/java/net/osmand/osm/MapRenderingTypes.java @@ -154,10 +154,11 @@ public abstract class MapRenderingTypes { return a; } - protected MapRulType checkOrCreateTextRule(String targetTag) { + protected MapRulType checkOrCreateTextRule(String targetTag, MapRulType ref) { MapRulType mt = types.get(constructRuleKey(targetTag, null)); if (mt == null) { - mt = registerRuleType(MapRulType.createText(targetTag)); + MapRulType ct = MapRulType.createText(targetTag, ref); + mt = registerRuleType(ct); } return mt; } @@ -172,10 +173,11 @@ public abstract class MapRenderingTypes { return mt; } - protected MapRulType checkOrCreateAdditional(String tag, String value) { + protected MapRulType checkOrCreateAdditional(String tag, String value, MapRulType ref) { MapRulType mt = types.get(constructRuleKey(tag, value)); if (mt == null) { - mt = registerRuleType(MapRulType.createAdditional(tag, value)); + MapRulType ct = MapRulType.createAdditional(tag, value, ref); + mt = registerRuleType(ct); } return mt; } @@ -550,6 +552,16 @@ public abstract class MapRenderingTypes { private MapRulType(){ } + + private void copyMetadata(MapRulType ref) { + minzoom = ref.minzoom; + maxzoom = ref.maxzoom; + order = ref.order; + category = ref.category; + onlyPoint = ref.onlyPoint; + } + + public boolean isPOI(){ return poi; } @@ -569,24 +581,37 @@ public abstract class MapRenderingTypes { return rt; } - public static MapRulType createText(String tag) { + public static MapRulType createText(String tag, MapRulType ref) { MapRulType rt = new MapRulType(); - rt.additionalText = true; rt.minzoom = 2; rt.maxzoom = 31; - rt.tagValuePattern = new TagValuePattern(tag, null); + if (ref != null) { + rt.copyMetadata(ref); + } + rt.additionalText = true; + rt.tagValuePattern = new TagValuePattern(tag, null); return rt; } - public static MapRulType createAdditional(String tag, String value) { + public static MapRulType createAdditional(String tag, String value, MapRulType ref) { MapRulType rt = new MapRulType(); - rt.additional = true; rt.minzoom = 2; rt.maxzoom = 31; + if (ref != null) { + rt.copyMetadata(ref); + } + rt.additional = true; rt.tagValuePattern = new TagValuePattern(tag, value); return rt; } + public static MapRulType createText(String tag) { + return createText(tag, null); + } + + public static MapRulType createAdditional(String tag, String value) { + return createAdditional(tag, value, null); + } public String getTag() { return tagValuePattern.tag; From 884e9135dffc08d4f51a96635e6b5fd32b9d7051 Mon Sep 17 00:00:00 2001 From: Nazar-Kutz Date: Thu, 30 Jul 2020 08:59:22 +0300 Subject: [PATCH 45/53] Fix "Any edits of the group name don't affect for a future group" --- OsmAnd/src/net/osmand/data/FavouritePoint.java | 7 ++++++- .../src/net/osmand/plus/myplaces/TrackPointFragment.java | 3 ++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/OsmAnd/src/net/osmand/data/FavouritePoint.java b/OsmAnd/src/net/osmand/data/FavouritePoint.java index 052949a28f..72cde20159 100644 --- a/OsmAnd/src/net/osmand/data/FavouritePoint.java +++ b/OsmAnd/src/net/osmand/data/FavouritePoint.java @@ -371,8 +371,13 @@ public class FavouritePoint implements Serializable, LocationPoint { } public static FavouritePoint fromWpt(@NonNull WptPt pt, @NonNull Context ctx) { + return fromWpt(pt, ctx, null); + } + + public static FavouritePoint fromWpt(@NonNull WptPt pt, @NonNull Context ctx, String category) { String name = pt.name; - String categoryName = pt.category != null ? pt.category : ""; + String categoryName = category != null ? category : + (pt.category != null ? pt.category : ""); if (name == null) { name = ""; } diff --git a/OsmAnd/src/net/osmand/plus/myplaces/TrackPointFragment.java b/OsmAnd/src/net/osmand/plus/myplaces/TrackPointFragment.java index 5f206edabb..d6d91b5042 100644 --- a/OsmAnd/src/net/osmand/plus/myplaces/TrackPointFragment.java +++ b/OsmAnd/src/net/osmand/plus/myplaces/TrackPointFragment.java @@ -622,7 +622,8 @@ public class TrackPointFragment extends OsmandExpandableListFragment implements FavouritesDbHelper fdb = app.getFavorites(); for (GpxDisplayItem i : getSelectedItems()) { if (i.locationStart != null) { - FavouritePoint fp = FavouritePoint.fromWpt(i.locationStart, app); + FavouritePoint fp = FavouritePoint.fromWpt( + i.locationStart, app, editText.getText().toString()); if (!Algorithms.isEmpty(i.description)) { fp.setDescription(i.description); } From 35e3fd7217fcc04c250bfd6e094a15d6c683bb93 Mon Sep 17 00:00:00 2001 From: Matas Alius Date: Wed, 29 Jul 2020 20:22:59 +0000 Subject: [PATCH 46/53] Translated using Weblate (Lithuanian) Currently translated at 63.0% (2168 of 3438 strings) --- OsmAnd/res/values-lt/strings.xml | 118 ++++++++++++++++++++++++++++--- 1 file changed, 108 insertions(+), 10 deletions(-) diff --git a/OsmAnd/res/values-lt/strings.xml b/OsmAnd/res/values-lt/strings.xml index 1e8c0895ce..ef952e3795 100644 --- a/OsmAnd/res/values-lt/strings.xml +++ b/OsmAnd/res/values-lt/strings.xml @@ -2557,17 +2557,17 @@ Tai yra puikus būdas paremti OsmAnd ir OSM, jei jie jums patinka. Sutaupyk %1$s %1$.2f %2$s Pirmiausiai parinkite miestą - Vengti tramvajų + Be tramvajų Vengti tramvajų - Vengti autobusų + Be autobusų Vengti autobusų ir troleibusų - Vengti dalinimosi taksi + Be dalinimosi taksi Vengti dalinimosi taksi - Vengti traukinių + Be traukinių Vengti traukinių - Vengti metro + Be metro Vengti metro ir lengvojo geležinkelio - Vengti keltų + Be keltų Vengti keltų • Rodyti laiką tarp persėdimų viešajame transporte \n @@ -2656,7 +2656,7 @@ Tai yra puikus būdas paremti OsmAnd ir OSM, jei jie jums patinka. Pėsčiomis Kelias Kemperis - Rodyti mažos taršos zonas. Tai neturi įtakos maršrutizavimui. + Rodyti mažos taršos zonas. Tai neturi įtakos maršruto generavimui. Rodyti mažos taršos zonas Įvertinti laikinus apribojimus Numatytasis @@ -2680,18 +2680,116 @@ Tai yra puikus būdas paremti OsmAnd ir OSM, jei jie jums patinka. Nutraukti prenumeratą Pavyzdys "UTM Standartas" - Pakeisti numatytuosius nustatymus + Pakeisti nustatymą Kalba ir išvestis Atstatyti numatytąsias reikšmes Kurti, importuoti, redaguoti profilius - „OsmAnd“ nustatymai + OsmAnd nustatymai Kopijuoti iš kito profilio Įjungti ekraną Kita - Svoris, aukštis, greitis + Svoris, aukštis, ilgis ir greitis Transporto priemonės parametrai Navigacijos instrukcijos ir pranešimai Balso pranešimai Ekrano įspėjimai Maršruto parametrai + Jus galite redaguoti bet kokį straipsnį Wikivoyage sistemoje. Pasidalink žiniomis, patirtimi, talentu ir savo dėmesiu su kitais. + Šie elementai yra paslėpti nuo meniu, bet juos reprezentuojantis nustatymai ar papildai veiks toliau. + Maršrutai į pačius įdomiausius objektus planetoje, panaudojant OsmAnd nereikalingas interneto ryšis. + Ekstremalus + Ekspertas + Pažengęs + Vidutinis + Lengvas + Šiaurėtiškas + Slidžių turas + Ryšys + Rogės + Aplankas… + Statistika + Švelnus + Lygumas + Paviršius + Papūga + Klaviatūra + Niekas + Bekelė + Paspirtukas + NSO + Avarija + Piktograma + Rogės + Geokodinimas + Slidinėti + Slidinėjimas + Slidinėjimas + Sraigtasparnis + Arklys + Metro + Taksi + Leisti + Įvertinti + Paslauga + Suplotas + Žvyras + Posūkis-po-posūkio + Pakeisti + Perkėlimai + Paleisti + Prenumerata + Juodas + Ne + Turinys + Viduje + Atkurti + Ieškoti gatvės + Matuoti atstumą + Rodyti/paslėpti viešąjį transportą + Paslėpti viešąjį transportą + Rodyti viešąjį transportą + Pridėti profilį + Nepalaikomas tipas + Įjungimo/išjungimo mygtukas + Palikti ekraną įjungta + Palikti ekraną išjungta + Vienas nuotraukos failas per skiltį + SQLiteDB failas + Ar ištrinti viską\? + Palikti aktyvų + Išinstaliuoti + Naktinis žemėlapis + metrai + Rodyti Mapillary + Ilgio limitas + Guolis + %1$s ištrinta + Perkrovimas reikalingas kad būtų galima ištrinti greičio kamerų duomenis. + Išinstaliuoti ir perkrauti + Šis įrenginys neturi greičio kamerų. + dailiojo čiuožimo pačiūžos + Ištrinti sekančio atvykimo tašką + Leisti kontroliuoti žemėlapio mastelį naudojant įrenginio garsumo mygtukus. + Garsumo mygtukai mastelio keitimui + Prašome taškui suteikti pavadinimą + Atsisiųsti Vikipedijos žemėlapius + Enduro motociklas + Motorinis paspirtukas + Vežimėlis + Uždarytas OSM Note + Jums reikia nustatyti darbo dienas kad galėtumėte tęsti + Maršrutas tarp taškų + Planuoti maršrutą + Pridėti į maršrutą + Rodyti starto finišo piktogramas + Pasirinkti plotį + Pasirinktinis + Krypčių rodyklės + Solidus + Paskutinį kartą redaguota + Importuoti trasą + Atidaryti egzistuojančia trasą + Sukurti naują maršrutą + Pasirinkite trasos failą kurį norite atidaryti + Padaryta \ No newline at end of file From 79b243fb8ff117fe4fc052d0b933e1a215eb8f48 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?O=C4=9Fuz=20Ersen?= Date: Wed, 29 Jul 2020 17:05:23 +0000 Subject: [PATCH 47/53] Translated using Weblate (Turkish) Currently translated at 100.0% (3438 of 3438 strings) --- OsmAnd/res/values-tr/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OsmAnd/res/values-tr/strings.xml b/OsmAnd/res/values-tr/strings.xml index 7e5f2ae3a6..460f321ae1 100644 --- a/OsmAnd/res/values-tr/strings.xml +++ b/OsmAnd/res/values-tr/strings.xml @@ -1764,7 +1764,7 @@ Sık Kullanılan, yinelemeyi önlemek için %1$s olarak yeniden adlandırıldı. Sınır denetimi Gişe - Trafik-hızı-yavaşlatıcı-düzenek + Hız tümseği GPS arka plan modunu durdur? Dur (Haritadaki GPX kayıt widget\'ı aracılığıyla etkinleştirilen) genel rota kaydı için kayıt aralığını belirtin. From 68d9ce8ecdf182ffb664079753d8704526d61760 Mon Sep 17 00:00:00 2001 From: ihor_ck Date: Wed, 29 Jul 2020 22:33:18 +0000 Subject: [PATCH 48/53] Translated using Weblate (Ukrainian) Currently translated at 100.0% (3438 of 3438 strings) --- OsmAnd/res/values-uk/strings.xml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/OsmAnd/res/values-uk/strings.xml b/OsmAnd/res/values-uk/strings.xml index 4a7474c5b9..7f83659cd2 100644 --- a/OsmAnd/res/values-uk/strings.xml +++ b/OsmAnd/res/values-uk/strings.xml @@ -158,7 +158,7 @@ Файл з раніше імпортованими Закладками вже існує. Замінити його? Налаштування профілю Усталений профіль - Вид мапи й налаштування навігації зберігаються для кожного окремого профілю. Встановіть Ваш типовий профіль. + Вид мапи й налаштування навігації зберігаються для кожного окремого профілю. Встановіть ваш типовий профіль. Навігація Визначити налаштування навігації. Загальні налаштування @@ -1821,7 +1821,7 @@ Виберіть дороги, які потрібно уникнути під час навігації. Звук POI буде вилучено після того, як Ви вивантажите Ваші зміни - Мапа виключно доріг не потрібна, оскільки у вас є звичайна (повна) мапа. Усе одно завантажити\? + Мапа виключно доріг не потрібна, оскільки у вас є звичайна (повна) мапа. Все одно завантажити\? OsmAnd не має дозволу на використання карти пам\'яті Останнє оновлення: %s Остання зміна мапи: %s @@ -3811,23 +3811,23 @@ Вкажіть назву пункту Поточну точку призначення на маршруті буде видалено. Якщо це буде місце призначення, навігація припиниться. Завантажити мапи Вікіпедії - Отримайте відомості про визначні місця у Вікіпедії. Це ваш кишеньковий посібник без мережі - просто ввімкніть втулок \"Вікіпедія\" і насолоджуйтесь статтями про об\'єкти навколо вас. + Отримайте відомості про визначні місця у Вікіпедії. Це ваш автономний кишеньковий посібник - просто ввімкніть втулок \"Вікіпедія\" і насолоджуйтеся статтями про об\'єкти навколо вас. Моторолер легкий мотоцикл Інвалідне крісло Інвалідне крісло попереду Картинг Закрита нотатка OSM - Своє - Додана точка не буде показуватись на мапі, вся обрана група є прихованою, ви можете побачити її в \"%s\". + Власне + Додану точку не буде показано на мапі, вся вибрана група є прихованою, ви можете побачити її в \"%s\". Зазначте робочі дні, щоб продовжити Маршрут між точками Планування маршруту Додати до треку Показувати старт та фініш Встановити ширину - Оберіть інтервал показу міток часу або відстані для показу поверх треку. - Оберіть власний варіант поділу: за часом, чи відстанню. + Виберіть інтервал показу міток часу або відстані для показу поверх треку. + Виберіть власний варіант поділу: за часом чи відстанню. Стрілки напрямку Суцільний В останнє змінено From 768d9c9c52cbfccecf77f2e35228a3126ec18157 Mon Sep 17 00:00:00 2001 From: ihor_ck Date: Wed, 29 Jul 2020 22:43:07 +0000 Subject: [PATCH 49/53] Translated using Weblate (Ukrainian) Currently translated at 100.0% (3812 of 3812 strings) --- OsmAnd/res/values-uk/phrases.xml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/OsmAnd/res/values-uk/phrases.xml b/OsmAnd/res/values-uk/phrases.xml index 3c309cdf27..f4bfb6bed9 100644 --- a/OsmAnd/res/values-uk/phrases.xml +++ b/OsmAnd/res/values-uk/phrases.xml @@ -1384,7 +1384,7 @@ Хворі Мінеральні Діти та підлітки - Характеристика води: брудна + Брудна Філармонія Сірчана Музичний @@ -2429,7 +2429,7 @@ Дорожнє дзеркало Міжнародна Оплата через Яндекс.Гроші не приймається - У вигляді хреста + Хрестоподібна Прокат Розведення відкритого вогню дозволено Пристрій @@ -2732,7 +2732,7 @@ Доставка DVD-диск Поверхня: бруківка - Паливо AdBlue + Рідина для очищення вихлопу дизелів Тайський Вид вибуху: атмосферний, скидання з літака Послуги надаються немовлятам: так From 6fd6dd792abc51da32adc5fd81dbb20ee6dc92b5 Mon Sep 17 00:00:00 2001 From: Eduardo Addad de Oliveira Date: Wed, 29 Jul 2020 19:22:45 +0000 Subject: [PATCH 50/53] Translated using Weblate (Portuguese (Brazil)) Currently translated at 100.0% (3438 of 3438 strings) --- OsmAnd/res/values-pt-rBR/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OsmAnd/res/values-pt-rBR/strings.xml b/OsmAnd/res/values-pt-rBR/strings.xml index d853e11bc6..27021aa6e9 100644 --- a/OsmAnd/res/values-pt-rBR/strings.xml +++ b/OsmAnd/res/values-pt-rBR/strings.xml @@ -299,7 +299,7 @@ Alfândega Pedágio Placa de pare - Moderador de tráfego + Lombada Aviso de tráfego POIs próximos Moderadores de tráfego From 48f85c69c3a271a01a6a9cef5ecf882c03809255 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Priit=20J=C3=B5er=C3=BC=C3=BCt?= Date: Wed, 29 Jul 2020 22:06:56 +0000 Subject: [PATCH 51/53] Translated using Weblate (Estonian) Currently translated at 90.1% (3098 of 3438 strings) --- OsmAnd/res/values-et/strings.xml | 57 +++++++++++++++++++++++++++++--- 1 file changed, 52 insertions(+), 5 deletions(-) diff --git a/OsmAnd/res/values-et/strings.xml b/OsmAnd/res/values-et/strings.xml index 8b422cc796..b13ac9510c 100644 --- a/OsmAnd/res/values-et/strings.xml +++ b/OsmAnd/res/values-et/strings.xml @@ -903,7 +903,7 @@ Kaart navigeerimise ajal Kaart navigeerimise ajal Muu - Kaal, kõrgus, kiirus + Kaal, kõrgus, pikkus, kiirus Sõiduki parameetrid Häälteated toimuvad ainult navigeerimise ajal. Navigeerimisjuhised ja teated @@ -1124,7 +1124,7 @@ Haiti Galiitsia Eesti - Cebuano + Sebu Sul on vana ja kokkusobimatu Vikipeedia andmestik. Arhiveerida see\? Laadida täiendavaid andmeid Vikipeediast (%1$s MB)\? Asukohateenus on välja lülitatud. Lülitada sisse\? @@ -1457,7 +1457,7 @@ Portugali Rumeenia Vene - Sardiinia + Sardi Serbia (kirillitsa) Slovaki Sloveenia @@ -2399,7 +2399,7 @@ Praegu avatud Postiindeks Kategooriad - Sorbia (ülem) + Ülemsorbi jagatud OsmAnd kaudu Kuva %1$s kaardil Otsi %1$s kauguses @@ -2439,7 +2439,7 @@ Tellimus võimaldab uuendused igas tunnis, päevas või nädalas ja piiramatu kogu maailma kaartide alla laadimise. Miilid/jalad Austraalia - Kabyle + Kabiili Filtrid Rakenda filtrid Salvesta filter @@ -3478,4 +3478,51 @@ Ei saanud lugeda %1$s. Ei saanud kirjutada %1$s. Ei saanud importida %1$s. + Kõik Vikipeedia artiklid ei pruugi olla saadaval sinu valitud keeles. + Kantoni + Lõunamini + Joruba + Varai + Usbeki + Urdu + Tatari + Tadžiki + Šoti + Sitsiilia + Pandžabi + Nepali + Napoli + Kirgiisi + Birma + Mongoli + Minangkabau + Malagassi + Kasahhi + Jaava + Gudžarati + Tšuvaši + Tšetšeeni + Baieri + Baškiiri + Aragoni + Lombardi + Kohandatud värv + Jätkamiseks pead valima tööpäevad + Teekond punktide vahel + Kavanda teekonda + Lisa rajale + Näita alguse ja lõpu ikoone + Vali laius + Kohandatud + Suunanooled + Viimati muudetud + Impordi rada + Ava olemasolev rada + Vali avatav rajafail. + Loo uus marsruut + Valmis + Keeled + Keel + Kõik keeled + Antarktis \ No newline at end of file From 179dc30e0e64cdb58f964e9c19de2b93f61512c0 Mon Sep 17 00:00:00 2001 From: Matas Alius Date: Wed, 29 Jul 2020 20:01:26 +0000 Subject: [PATCH 52/53] Translated using Weblate (Lithuanian) Currently translated at 10.5% (404 of 3812 strings) --- OsmAnd/res/values-lt/phrases.xml | 822 ++++++++++++++++--------------- 1 file changed, 414 insertions(+), 408 deletions(-) diff --git a/OsmAnd/res/values-lt/phrases.xml b/OsmAnd/res/values-lt/phrases.xml index caf31f7a1c..cfb73ccf2b 100644 --- a/OsmAnd/res/values-lt/phrases.xml +++ b/OsmAnd/res/values-lt/phrases.xml @@ -1,409 +1,415 @@ -Parduotuvė - Maisto parduotuvė ir supermarketas - Pagalbos tarnybos - Transportas - Kelio kliūtis - Degalinė - Asmeninis transportas - Viešasis transportas - Oro transportas - Vandens transportas - Dviračių transportas - Lynų keltuvai - Pėsčiųjų žygių/dviračių maršrutų mazgai - Pėsčiųjų žygių maršrutai - Eismo valdymas - Dribtinės kilmės - Transporto konstrukcija - Vandens tiekimas - Elektros energija - Komunikacija - Šiukšlių šalinimas - Žemėtvarka - Švietimas - Administraciniai objektai - Sveikatos paslaugos - Biuras - Sportas - Turizmas - Lankytini objektai - Nakvynė - Interneto prieiga - Laisvalaikis - Klubas - Maistas - Kavinė ir restoranas - Paslaugos - Rankdarbiai - Finansai - Gamta - Laivyba - Kariniai objektai - Vikipedija - Nustatyta naudotojo - - Paleontologinis objektas - - Kepykla - Alkoholio parduotuvė - Sūrio parduotuvė - Šokolado parduotuvė - Kavos parduotuvė - Parduotuvėlė - Prekybos centras - Gėrimų parduotuvė - Mėsos turgus - Gurmaniško maisto parduotuvė - Ūkininko parduotuvė - Daržovių parduotuvė - Jūros gėrybių parduotuvė - Konditerija - Ledainė - Prekybos centras - Arbatos parduotuvė - Pastos parduotuvė - Knygynas - Dviračių parduotuvė - Antikvariatas - Meno dirbinių parduotuvė - Prekės kūdikiams - Vonios kambario įranga - Fotoaparatai ir objektyvai - Kilimų parduotuvė - Rūbų parduotuvė - Rūbai vaikams - Batų parduotuvė - Kompiuterių parduotuvė - Užuolaidų parduotuvė - Nardymo įranga - Durys - Seks parduotuvė - Gėlių parduotuvė - Rėmelių parduotuvė - Baldų parduotuvė - Sodo baldų parduotuvė - Suskystintų dujų parduotuvė - Konditerija - Pieno parduotuvė - Prekybos automatas - Vyno parduotuvė - Anime parduotuvė - Krepšių parduotuvė - Patalynės parduotuvė - Butikas - Labdaros parduotuvė - Vaistinė - Žvakių parduotuvė - Kopijavimas - Audinių parduotuvė -Statybinių prekių parduotuvė - Rūbų parduotuvė - Žvejybos reikmenys - Laisvo kritimo skrydžio prekės - Šildymo prekės - Sodo prekės - Parduotuvė - Dovanų parduotuvė - Stiklo parduotuvė - Įrankių parduotuvė - Klausos aparatai - Žolelių parduotuvė - Garso aparatūros parduotuvė - Namų apyvokos daiktai - Mokėjimo tipas - Kuro kortelės - Degalų tipas - Kuro tipas (avia) - Interneto prieigos tipas - Tipas - Dviračių aptarnavimas - Tipas - Tipas - Vandens šaltinis - Mokėjimo tipas - Tipas - Paslauga - Savitarna - Automatizuotas - Tipas - Metro stotis - Krovinys - Tipas - Šildymas - Siurblys - Tipas - Tipas - Tipas - Sostinė - Specializacija - Tipas - Religija - Tipas - Turinys - Papildomai - Skautų stovykla - Tipas - Trasos sudėtingumas - Žanras - Mokamas - Rūkymas - Pristatymas - Išsinešti - Kokteiliai - Paslauga - Tipas - Tipas - Laužavietė - Sezoniškumas - Paviršius - Nudizmas - -Juvelyrinė parduotuvė - Kioskas - Papildomas - Pardavimų tipas - Vieta - Garsas - Taktilinė danga - Bekontaktis - Dengtas - Dviračių transportas - Žymėjimas - Išdavimas - Sąvybės - Žvaigždučių kiekis - Tikyba - Užmiestis - Trasų tvarkymas - Sėdimos vietos lauke - Klientų aptarnavimas automobiliuose - Klientų aptarnavimas automobiliuose - Smulki alaus darykla - Priimamos šiukšlės - Vandens sąvybės - Medžioklės įranga - Vidaus dekoro parduotuvė - Virtuvės baldai - Odos parduotuvė - Medicinos priemonės - Masažo tipas - Skalbyklė - Valgiai - Tipas - Tikslinė grupė - Dulkių siurblys - Sporto prekės - Biuro prekės - Turgus - Pirotechnika - Ginklai - Gaisrinė - Gesintuvas - Smėlio dėžė - Brasta - Vartai - Miesto siena - Pasienio kontrolė - Padangos - Automobilių plovykla - Degalinė - Dyzelinas - Biodyzelinas - Suskystintos dujos - Gamtinės dujos - Etanolis - Metanolis - E10 - E20 - E85 - Biodujos - Suskystintas vandenilis - Elektra - Įkrovimo stotelė - Oro pompa - Garažai - - Visuomeninio transporto stotelė - Autobusų stotelė - Troleibusų stotelė - Autobuso stotelė - Tramvajaus stotelė - Viešojo transporto stotis - Autobusų stotis - Geležinkelio stotis - Geležinkelio platforma - Įėjimas į metro - Taip - Oro uostas - Pakilimo juosta - Oro uosto terminalas - Kelto prieplauka - Švyturys - - Dviračių nuoma - Tunelis - Tiltas - - Greičio kamera - Poilsio zona - - Šulinys - Valymo įrenginiai - Vandens bokštas - Damba - Vandens malūnas - Bangolaužis - Pastotė - Transformatorius - Elektrinė - Generatorius - - Stulpas - - Paštas - Pašto dėžutė - Telefonas - Foto studija - -Spaudos kioskas - Bilietai - Rūkalai - Muzikos parduotuvė - Muzikos instrumentai - Žaislų parduotuvė - Universalinė parduotuvė - Automobilių dalys - Policija - Apžvalgos bokštas - Konteineris - Stiklas - Popierius - Rūbai - Skardinės - Stikliniai buteliai - Plastikas - Metalo laužas - Baterijos - Plastikiniai buteliai - Plastikinė tara - Laikraščiai - Žurnalai - Pakavimo popierius - Mediena - Knygos - Apavas - Aliuminis - Metalas - Variklio alyva - Plastikiniai maišeliai - Pavojingos atliekos - Mobilūs telefonai - Gyvsidabris - Kompiuteriai - Padangos - Televizoriai, monitoriai - Kompaktinės plokštelės - Buteliai - Dažai - Vaistai - Kompostas - Poliesteris - Šaldytuvai ir šaldikliai - Baldai - Sauskelnės - Akumuliatoriai - Automobiliai - Dviračiai - - Branduolinės atliekos - Šiukšlių dėžė - - Gyvenamasis rajonas - Karjeras - Sodas - Sodai - Pieva - Kanalas - Observatorija - Bokštas - Radaras - Kranas - Statybvietė - Vėjo malūnas - Koledžas - Vairavimo mokykla - Vaikų darželis - Mokykla - Universitetas - - Teismo rūmai - Kalėjimas - Valstybinė įmonė - Prokuratūra - Migracijos tarnyba - Mokesčių inspekcija - Muitinė - Šalis - Miestas - Taip - Miestelis - Kaimas - Vienkiemis - Ūkis - - - Vaistinė - Ligoninė - Gydytojai - Sanatorija - Kraujo bankas - Prichoterapeutas - Logopedas - Pediatras - - Nekilnojamo turto agentūra - Visuomeninė organizacija - Dieta - Medicininė specializacija - Palapinės - Automobilių priekabos - Elektros energijos šaltinis - Medicininė sistema - Namų aplankymas - Mokėjimo tipas (transportas) - Suspaustas oras - Charakteristika - Valgykla - Tipas - Paslaugos - Motociklo tipas - -Avarinė infrastruktūra - Mobilių telefonų parduotuvė - Motociklų parduotuvė - Optika - Ekologiški maisto produktai - Aktyvaus poilsio prekių parduotuvė - Dažų parduotuvė - Gyvūnų parduotuvė - Foto parduotuvė - Radijo technikos parduotuvė - Naudotų daiktų parduotuvė - Nardymo prekių parduotuvė - Laivų aptrūpinimo agentas - Stalo įrankių parduotuvė - Turgelis - Padangų parduotuvė - Tikslas - Nuomojamos valtys - Eksploatacinė būklė - Vandens tiekimo tipas - Vandens valymas - Dulkių siurblių parduotuvė - Video parduotuvė - Elektronikos parduotuvė - Automobilių pardavėjas - Kosmetika - Laikrodžių parduotuvė - \ No newline at end of file + + Parduotuvė + Maisto parduotuvė ir supermarketas + Pagalbos tarnybos + Transportas + Kelio kliūtis + Degalinė + Asmeninis transportas + Viešasis transportas + Oro transportas + Vandens transportas + Dviračių transportas + Lynų keltuvai + Pėsčiųjų žygių/dviračių maršrutų mazgai + Pėsčiųjų žygių maršrutai + Eismo valdymas + Dribtinės kilmės + Transporto konstrukcija + Vandens tiekimas + Elektros energija + Komunikacija + Šiukšlių šalinimas + Žemėtvarka + Švietimas + Administraciniai objektai + Sveikatos paslaugos + Biuras + Sportas + Turizmas + Lankytini objektai + Nakvynė + Interneto prieiga + Laisvalaikis + Klubas + Maistas + Kavinė ir restoranas + Paslaugos + Rankdarbiai + Finansai + Gamta + Laivyba + Kariniai objektai + Vikipedija + Nustatyta naudotojo + Paleontologinis objektas + Kepykla + Alkoholio parduotuvė + Sūrio parduotuvė + Šokolado parduotuvė + Kavos parduotuvė + Parduotuvėlė + Prekybos centras + Gėrimų parduotuvė + Mėsos turgus + Gurmaniško maisto parduotuvė + Ūkininko parduotuvė + Daržovių parduotuvė + Jūros gėrybių parduotuvė + Konditerija + Ledainė + Prekybos centras + Arbatos parduotuvė + Pastos parduotuvė + Knygynas + Dviračių parduotuvė + Antikvariatas + Meno dirbinių parduotuvė + Prekės kūdikiams + Vonios kambario įranga + Fotoaparatai ir objektyvai + Kilimų parduotuvė + Rūbų parduotuvė + Rūbai vaikams + Batų parduotuvė + Kompiuterių parduotuvė + Užuolaidų parduotuvė + Nardymo įranga + Durys + Seks parduotuvė + Gėlių parduotuvė + Rėmelių parduotuvė + Baldų parduotuvė + Sodo baldų parduotuvė + Suskystintų dujų parduotuvė + Konditerija + Pieno parduotuvė + Prekybos automatas + Vyno parduotuvė + Anime parduotuvė + Krepšių parduotuvė + Patalynės parduotuvė + Butikas + Labdaros parduotuvė + Vaistinė + Žvakių parduotuvė + Kopijavimas + Audinių parduotuvė + Statybinių prekių parduotuvė + Rūbų parduotuvė + Žvejybos reikmenys + Laisvo kritimo skrydžio prekės + Šildymo prekės + Sodo prekės + Parduotuvė + Dovanų parduotuvė + Stiklo parduotuvė + Įrankių parduotuvė + Klausos aparatai + Žolelių parduotuvė + Garso aparatūros parduotuvė + Namų apyvokos daiktai + Mokėjimo tipas + Kuro kortelės + Degalų tipas + Kuro tipas (avia) + Interneto prieigos tipas + Tipas + Dviračių aptarnavimas + Tipas + Tipas + Vandens šaltinis + Mokėjimo tipas + Tipas + Paslauga + Savitarna + Automatizuotas + Tipas + Metro stotis + Krovinys + Tipas + Šildymas + Siurblys + Tipas + Tipas + Tipas + Sostinė + Specializacija + Tipas + Religija + Tipas + Turinys + Papildomai + Skautų stovykla + Tipas + Trasos sudėtingumas + Žanras + Mokamas + Rūkymas + Pristatymas + Išsinešti + Kokteiliai + Paslauga + Tipas + Tipas + Laužavietė + Sezoniškumas + Paviršius + Nudizmas + Juvelyrinė parduotuvė + Kioskas + Papildomas + Pardavimų tipas + Vieta + Garsas + Taktilinė danga + Bekontaktis + Dengtas + Dviračių transportas + Žymėjimas + Išdavimas + Sąvybės + Žvaigždučių kiekis + Tikyba + Užmiestis + Trasų tvarkymas + Sėdimos vietos lauke + Klientų aptarnavimas automobiliuose + Klientų aptarnavimas automobiliuose + Smulki alaus darykla + Priimamos šiukšlės + Vandens sąvybės + Medžioklės įranga + Vidaus dekoro parduotuvė + Virtuvės baldai + Odos parduotuvė + Medicinos priemonės + Masažo tipas + Skalbyklė + Valgiai + Tipas + Tikslinė grupė + Dulkių siurblys + Sporto prekės + Biuro prekės + Turgus + Pirotechnika + Ginklai + Gaisrinė + Gesintuvas + Smėlio dėžė + Brasta + Vartai + Miesto siena + Pasienio kontrolė + Padangos + Automobilių plovykla + Degalinė;Degalinė;Degalinė;Degalinė + Dyzelinas + Biodyzelinas + Suskystintos dujos + Gamtinės dujos + Etanolis + Metanolis + E10 + E20 + E85 + Biodujos + Suskystintas vandenilis + Elektra + Įkrovimo stotelė + Oro pompa + Garažai + Visuomeninio transporto stotelė + Autobusų stotelė + Troleibusų stotelė + Autobuso stotelė + Tramvajaus stotelė + Viešojo transporto stotis + Autobusų stotis + Geležinkelio stotis + Geležinkelio platforma + Įėjimas į metro + Taip + Oro uostas + Pakilimo juosta + Oro uosto terminalas + Kelto prieplauka + Švyturys + Dviračių nuoma + Tunelis + Tiltas + Greičio kamera + Poilsio zona + Šulinys + Valymo įrenginiai + Vandens bokštas + Damba + Vandens malūnas + Bangolaužis + Pastotė + Transformatorius + Elektrinė + Generatorius + + Stulpas + Paštas + Pašto dėžutė + Telefonas + Foto studija + Spaudos kioskas + Bilietai + Rūkalai + Muzikos parduotuvė + Muzikos instrumentai + Žaislų parduotuvė + Universalinė parduotuvė + Automobilių dalys + Policija + Apžvalgos bokštas + Konteineris + Stiklas + Popierius + Rūbai + Skardinės + Stikliniai buteliai + Plastikas + Metalo laužas + Baterijos + Plastikiniai buteliai + Plastikinė tara + Laikraščiai + Žurnalai + Pakavimo popierius + Mediena + Knygos + Apavas + Aliuminis + Metalas + Variklio alyva + Plastikiniai maišeliai + Pavojingos atliekos + Mobilūs telefonai + Gyvsidabris + Kompiuteriai + Padangos + Televizoriai, monitoriai + Kompaktinės plokštelės + Buteliai + Dažai + Vaistai + Kompostas + Poliesteris + Šaldytuvai ir šaldikliai + Baldai + Sauskelnės + Akumuliatoriai + Automobiliai + Dviračiai + Branduolinės atliekos + Šiukšlių dėžė + Gyvenamasis rajonas + Karjeras + Sodas + Sodai + Pieva + Kanalas + Observatorija + Bokštas + Radaras + Kranas + Statybvietė + Vėjo malūnas + Koledžas + Vairavimo mokykla + Vaikų darželis + Mokykla + Universitetas + Teismo rūmai + Kalėjimas + Valstybinė įmonė + Prokuratūra + Migracijos tarnyba + Mokesčių inspekcija + Muitinė + Šalis + Miestas + Taip + Miestelis + Kaimas + Vienkiemis + Ūkis + Vaistinė + Ligoninė + Gydytojai + Sanatorija + Kraujo bankas + Prichoterapeutas + Logopedas + Pediatras + Nekilnojamo turto agentūra + Visuomeninė organizacija + Dieta + Medicininė specializacija + Palapinės + Automobilių priekabos + Elektros energijos šaltinis + Medicininė sistema + Namų aplankymas + Mokėjimo tipas (transportas) + Suspaustas oras + Charakteristika + Valgykla + Tipas + Paslaugos + Motociklo tipas + Avarinė infrastruktūra + Mobilių telefonų parduotuvė + Motociklų parduotuvė + Optika + Ekologiški maisto produktai + Aktyvaus poilsio prekių parduotuvė + Dažų parduotuvė + Gyvūnų parduotuvė + Foto parduotuvė + Radijo technikos parduotuvė + Naudotų daiktų parduotuvė + Nardymo prekių parduotuvė + Laivų aptrūpinimo agentas + Stalo įrankių parduotuvė + Turgelis + Padangų parduotuvė + Tikslas + Nuomojamos valtys + Eksploatacinė būklė + Vandens tiekimo tipas + Vandens valymas + Dulkių siurblių parduotuvė + Video parduotuvė + Elektronikos parduotuvė + Automobilių pardavėjas + Kosmetika + Laikrodžių parduotuvė + Sodininkas + Elektrikas + Bitininkas + Taip + Ne + Statusas + Tipas + Tipas + Rodyklė + Vibracija + Slėgis + Vaizdo medžiaga + SMS + Privažiavimas autobusu + Privažiavimas sniego motociklu + Taip + Autoservisas + Denotacija + Knygos + Tipas + Gyvūnai priimami + \ No newline at end of file From 0d6f4a178dc3ac2be1312223bc47726593d4ffbb Mon Sep 17 00:00:00 2001 From: Jeff Huang Date: Thu, 30 Jul 2020 02:24:35 +0000 Subject: [PATCH 53/53] Translated using Weblate (Chinese (Traditional)) Currently translated at 100.0% (3438 of 3438 strings) --- OsmAnd/res/values-zh-rTW/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OsmAnd/res/values-zh-rTW/strings.xml b/OsmAnd/res/values-zh-rTW/strings.xml index aa684d69a9..c261ef837c 100644 --- a/OsmAnd/res/values-zh-rTW/strings.xml +++ b/OsmAnd/res/values-zh-rTW/strings.xml @@ -1287,7 +1287,7 @@ 邊境管制 收費站 停車標誌 - 交通寧靜區 + 減速丘 測速照相 交通流量警示 輕點任何現有的項目,查看更詳細的資訊,長按則停用或刪除。裝置上目前的資料有 (%1$s 可用):