From 053c4701ffadf02b7c4b822f4959e518fbe9afe0 Mon Sep 17 00:00:00 2001 From: Vitaliy Date: Tue, 1 Sep 2020 02:06:22 +0300 Subject: [PATCH 01/56] UI fixes first part --- OsmAnd/res/layout/track_appearance.xml | 2 +- OsmAnd/res/layout/track_width_card.xml | 3 +- .../plus/track/TrackAppearanceFragment.java | 48 +++++++++++-------- .../osmand/plus/track/TrackColoringCard.java | 1 + .../osmand/plus/views/layers/GPXLayer.java | 4 +- 5 files changed, 35 insertions(+), 23 deletions(-) diff --git a/OsmAnd/res/layout/track_appearance.xml b/OsmAnd/res/layout/track_appearance.xml index 089e1f174d..0be92d2bb0 100644 --- a/OsmAnd/res/layout/track_appearance.xml +++ b/OsmAnd/res/layout/track_appearance.xml @@ -37,7 +37,7 @@ android:layout_height="wrap_content"> + android:orientation="vertical" + android:paddingBottom="@dimen/content_padding"> 0 && bottomContainer.getForeground() == null) { bottomContainer.setForeground(shadowIcon); } + updateButtonsShadow(); } }); } + private void updateButtonsShadow() { + boolean scrollToBottomAvailable = getBottomScrollView().canScrollVertically(1); + AndroidUiHelper.updateVisibility(buttonsShadow, scrollToBottomAvailable); + } + + private void updateColorItems() { + updateAppearanceIcon(); + if (trackWidthCard != null) { + trackWidthCard.updateItems(); + } + } + private void saveTrackInfo() { GPXFile gpxFile = selectedGpxFile.getGpxFile(); @@ -537,19 +559,7 @@ public class TrackAppearanceFragment extends ContextMenuScrollFragment implement } private void saveGpx(final GPXFile gpxFile) { - new SaveGpxAsyncTask(gpxFile, new SaveGpxAsyncTask.SaveGpxListener() { - @Override - public void gpxSavingStarted() { - - } - - @Override - public void gpxSavingFinished(Exception errorMessage) { - if (errorMessage == null) { - app.showShortToastMessage(R.string.shared_string_track_is_saved, Algorithms.getFileWithoutDirs(gpxFile.path)); - } - } - }).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); + new SaveGpxAsyncTask(gpxFile, null).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); } private void setupCards() { diff --git a/OsmAnd/src/net/osmand/plus/track/TrackColoringCard.java b/OsmAnd/src/net/osmand/plus/track/TrackColoringCard.java index ff21fa3f18..79a7107ca8 100644 --- a/OsmAnd/src/net/osmand/plus/track/TrackColoringCard.java +++ b/OsmAnd/src/net/osmand/plus/track/TrackColoringCard.java @@ -281,6 +281,7 @@ public class TrackColoringCard extends BaseCard implements ColorPickerListener { public void onColorSelected(int prevColor, int newColor) { if (prevColor == INVALID_VALUE && customColors.size() < 6) { customColors.add(newColor); + trackDrawInfo.setColor(newColor); } else if (!Algorithms.isEmpty(customColors)) { int index = customColors.indexOf(prevColor); if (index != INVALID_VALUE) { diff --git a/OsmAnd/src/net/osmand/plus/views/layers/GPXLayer.java b/OsmAnd/src/net/osmand/plus/views/layers/GPXLayer.java index 2f7cf6cb5f..59a249000a 100644 --- a/OsmAnd/src/net/osmand/plus/views/layers/GPXLayer.java +++ b/OsmAnd/src/net/osmand/plus/views/layers/GPXLayer.java @@ -887,12 +887,12 @@ public class GPXLayer extends OsmandMapLayer implements IContextMenuProvider, IM @Override public boolean disableSingleTap() { - return false; + return isInTrackAppearanceMode(); } @Override public boolean disableLongPressOnMap() { - return false; + return isInTrackAppearanceMode(); } @Override From ee6e283d03ea0f8d5261ee1b4e9eb386ac6707a2 Mon Sep 17 00:00:00 2001 From: Vitaliy Date: Tue, 1 Sep 2020 12:38:53 +0300 Subject: [PATCH 02/56] Track appearance UI fixes second part --- OsmAnd/src/net/osmand/plus/UiUtilities.java | 8 +++++-- .../plus/track/CustomColorBottomSheet.java | 8 +++++-- .../plus/track/TrackAppearanceFragment.java | 22 +++++++++++++++++-- .../osmand/plus/track/TrackColoringCard.java | 15 +++++++++++-- .../osmand/plus/views/layers/GPXLayer.java | 12 ++++++---- 5 files changed, 53 insertions(+), 12 deletions(-) diff --git a/OsmAnd/src/net/osmand/plus/UiUtilities.java b/OsmAnd/src/net/osmand/plus/UiUtilities.java index 24ffd9c6f7..8dc59eccc9 100644 --- a/OsmAnd/src/net/osmand/plus/UiUtilities.java +++ b/OsmAnd/src/net/osmand/plus/UiUtilities.java @@ -230,8 +230,12 @@ public class UiUtilities { } @ColorInt - public static int mixTwoColors(@ColorInt int color1, @ColorInt int color2, float amount ) - { + public static int removeAlpha(@ColorInt int color) { + return Color.rgb(Color.red(color), Color.green(color), Color.blue(color)); + } + + @ColorInt + public static int mixTwoColors(@ColorInt int color1, @ColorInt int color2, float amount) { final byte ALPHA_CHANNEL = 24; final byte RED_CHANNEL = 16; final byte GREEN_CHANNEL = 8; diff --git a/OsmAnd/src/net/osmand/plus/track/CustomColorBottomSheet.java b/OsmAnd/src/net/osmand/plus/track/CustomColorBottomSheet.java index a5db15c147..dad9831f9c 100644 --- a/OsmAnd/src/net/osmand/plus/track/CustomColorBottomSheet.java +++ b/OsmAnd/src/net/osmand/plus/track/CustomColorBottomSheet.java @@ -58,8 +58,12 @@ public class CustomColorBottomSheet extends MenuBottomSheetDialogFragment implem } else { Bundle args = getArguments(); if (args != null) { - prevColor = args.getInt(PREV_SELECTED_COLOR); - newColor = prevColor != -1 ? prevColor : Color.RED; + if (args.containsKey(PREV_SELECTED_COLOR)) { + prevColor = args.getInt(PREV_SELECTED_COLOR); + } else { + prevColor = Color.RED; + } + newColor = prevColor; } } diff --git a/OsmAnd/src/net/osmand/plus/track/TrackAppearanceFragment.java b/OsmAnd/src/net/osmand/plus/track/TrackAppearanceFragment.java index aa8a1ac395..c0d6b42741 100644 --- a/OsmAnd/src/net/osmand/plus/track/TrackAppearanceFragment.java +++ b/OsmAnd/src/net/osmand/plus/track/TrackAppearanceFragment.java @@ -390,13 +390,21 @@ public class TrackAppearanceFragment extends ContextMenuScrollFragment implement int strokeColor = UiUtilities.getColorWithAlpha(Color.BLACK, 0.7f); Drawable strokeIcon = app.getUIUtilities().getPaintedIcon(strokeIconId, strokeColor); + Drawable transparencyIcon = getTransparencyIcon(app, widthAttr, color); if (showArrows) { int arrowsIconId = getArrowsIconId(widthAttr); int contrastColor = UiUtilities.getContrastColor(app, color, false); Drawable arrows = app.getUIUtilities().getPaintedIcon(arrowsIconId, contrastColor); - return UiUtilities.getLayeredIcon(widthIcon, strokeIcon, arrows); + return UiUtilities.getLayeredIcon(transparencyIcon, widthIcon, strokeIcon, arrows); } - return UiUtilities.getLayeredIcon(widthIcon, strokeIcon); + return UiUtilities.getLayeredIcon(transparencyIcon, widthIcon, strokeIcon); + } + + private Drawable getTransparencyIcon(OsmandApplication app, String widthAttr, @ColorInt int color) { + int transparencyIconId = getTransparencyIconId(widthAttr); + int colorWithoutAlpha = UiUtilities.removeAlpha(color); + int transparencyColor = UiUtilities.getColorWithAlpha(colorWithoutAlpha, 0.8f); + return app.getUIUtilities().getPaintedIcon(transparencyIconId, transparencyColor); } private void updateCardsLayout() { @@ -638,6 +646,16 @@ public class TrackAppearanceFragment extends ContextMenuScrollFragment implement } } + public static int getTransparencyIconId(String widthAttr) { + if (TRACK_WIDTH_BOLD.equals(widthAttr)) { + return R.drawable.ic_action_track_line_bold_transparency; + } else if (TRACK_WIDTH_MEDIUM.equals(widthAttr)) { + return R.drawable.ic_action_track_line_medium_transparency; + } else { + return R.drawable.ic_action_track_line_thin_transparency; + } + } + public static int getWidthIconId(String widthAttr) { if (TRACK_WIDTH_BOLD.equals(widthAttr)) { return R.drawable.ic_action_track_line_bold_color; diff --git a/OsmAnd/src/net/osmand/plus/track/TrackColoringCard.java b/OsmAnd/src/net/osmand/plus/track/TrackColoringCard.java index 79a7107ca8..5883c0dd73 100644 --- a/OsmAnd/src/net/osmand/plus/track/TrackColoringCard.java +++ b/OsmAnd/src/net/osmand/plus/track/TrackColoringCard.java @@ -26,6 +26,7 @@ import net.osmand.PlatformUtil; import net.osmand.plus.GPXDatabase; import net.osmand.plus.GPXDatabase.GpxDataItem; import net.osmand.plus.GpxSelectionHelper.SelectedGpxFile; +import net.osmand.plus.OsmandApplication; import net.osmand.plus.R; import net.osmand.plus.UiUtilities; import net.osmand.plus.activities.MapActivity; @@ -143,7 +144,11 @@ public class TrackColoringCard extends BaseCard implements ColorPickerListener { private View createColorItemView(@ColorInt final int color, final FlowLayout rootView, boolean customColor) { View colorItemView = createCircleView(rootView); ImageView backgroundCircle = colorItemView.findViewById(R.id.background); - backgroundCircle.setImageDrawable(UiUtilities.tintDrawable(AppCompatResources.getDrawable(app, R.drawable.bg_point_circle), color)); + + Drawable transparencyIcon = getTransparencyIcon(app, color); + Drawable colorIcon = app.getUIUtilities().getPaintedIcon(R.drawable.bg_point_circle, color); + Drawable layeredIcon = UiUtilities.getLayeredIcon(transparencyIcon, colorIcon); + backgroundCircle.setImageDrawable(layeredIcon); backgroundCircle.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { @@ -173,6 +178,12 @@ public class TrackColoringCard extends BaseCard implements ColorPickerListener { return colorItemView; } + private Drawable getTransparencyIcon(OsmandApplication app, @ColorInt int color) { + int colorWithoutAlpha = UiUtilities.removeAlpha(color); + int transparencyColor = UiUtilities.getColorWithAlpha(colorWithoutAlpha, 0.8f); + return app.getUIUtilities().getPaintedIcon(R.drawable.ic_bg_transparency, transparencyColor); + } + private View createAddCustomColorItemView(FlowLayout rootView) { View colorItemView = createCircleView(rootView); ImageView backgroundCircle = colorItemView.findViewById(R.id.background); @@ -183,7 +194,7 @@ public class TrackColoringCard extends BaseCard implements ColorPickerListener { ImageView icon = colorItemView.findViewById(R.id.icon); icon.setVisibility(View.VISIBLE); int activeColorResId = nightMode ? R.color.icon_color_active_dark : R.color.icon_color_active_light; - icon.setImageDrawable(app.getUIUtilities().getIcon(R.drawable.ic_action_add, activeColorResId)); + icon.setImageDrawable(app.getUIUtilities().getIcon(R.drawable.ic_action_plus, activeColorResId)); backgroundCircle.setImageDrawable(backgroundIcon); backgroundCircle.setOnClickListener(new View.OnClickListener() { diff --git a/OsmAnd/src/net/osmand/plus/views/layers/GPXLayer.java b/OsmAnd/src/net/osmand/plus/views/layers/GPXLayer.java index 59a249000a..1b5052f800 100644 --- a/OsmAnd/src/net/osmand/plus/views/layers/GPXLayer.java +++ b/OsmAnd/src/net/osmand/plus/views/layers/GPXLayer.java @@ -456,12 +456,16 @@ public class GPXLayer extends OsmandMapLayer implements IContextMenuProvider, IM int endX = (int) tileBox.getPixXFromLatLon(end.lat, end.lon); int endY = (int) tileBox.getPixYFromLatLon(end.lat, end.lon); - QuadRect startRect = calculateRect(startX, startY, startPointIcon.getIntrinsicWidth(), startPointIcon.getIntrinsicHeight()); - QuadRect endRect = calculateRect(endX, endY, finishPointIcon.getIntrinsicWidth(), finishPointIcon.getIntrinsicHeight()); + int iconSize = AndroidUtils.dpToPx(view.getContext(), 14); + QuadRect startRectWithoutShadow = calculateRect(startX, startY, iconSize, iconSize); + QuadRect endRectWithoutShadow = calculateRect(endX, endY, iconSize, iconSize); - if (QuadRect.intersects(startRect, endRect)) { - drawPoint(canvas, startRect, startAndFinishIcon); + if (QuadRect.intersects(startRectWithoutShadow, endRectWithoutShadow)) { + QuadRect startAndFinishRect = calculateRect(startX, startY, startAndFinishIcon.getIntrinsicWidth(), startAndFinishIcon.getIntrinsicHeight()); + drawPoint(canvas, startAndFinishRect, startAndFinishIcon); } else { + QuadRect startRect = calculateRect(startX, startY, startPointIcon.getIntrinsicWidth(), startPointIcon.getIntrinsicHeight()); + QuadRect endRect = calculateRect(endX, endY, finishPointIcon.getIntrinsicWidth(), finishPointIcon.getIntrinsicHeight()); drawPoint(canvas, startRect, startPointIcon); drawPoint(canvas, endRect, finishPointIcon); } From 6029bb4fea370bea0e3b7b649fd851aedfeb289d Mon Sep 17 00:00:00 2001 From: Vitaliy Date: Tue, 1 Sep 2020 14:11:00 +0300 Subject: [PATCH 03/56] Fix custom color editing --- .../plus/track/CustomColorBottomSheet.java | 19 +++++---- .../plus/track/TrackAppearanceFragment.java | 9 +---- .../osmand/plus/track/TrackColoringCard.java | 40 +++---------------- 3 files changed, 18 insertions(+), 50 deletions(-) diff --git a/OsmAnd/src/net/osmand/plus/track/CustomColorBottomSheet.java b/OsmAnd/src/net/osmand/plus/track/CustomColorBottomSheet.java index dad9831f9c..a2015693a0 100644 --- a/OsmAnd/src/net/osmand/plus/track/CustomColorBottomSheet.java +++ b/OsmAnd/src/net/osmand/plus/track/CustomColorBottomSheet.java @@ -11,6 +11,7 @@ import android.widget.EditText; import androidx.annotation.ColorInt; import androidx.annotation.NonNull; +import androidx.annotation.Nullable; import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentManager; @@ -46,7 +47,7 @@ public class CustomColorBottomSheet extends MenuBottomSheetDialogFragment implem private boolean fromEditText; @ColorInt - private int prevColor; + private Integer prevColor; @ColorInt private int newColor; @@ -60,10 +61,10 @@ public class CustomColorBottomSheet extends MenuBottomSheetDialogFragment implem if (args != null) { if (args.containsKey(PREV_SELECTED_COLOR)) { prevColor = args.getInt(PREV_SELECTED_COLOR); + newColor = prevColor; } else { - prevColor = Color.RED; + newColor = Color.RED; } - newColor = prevColor; } } @@ -78,7 +79,9 @@ public class CustomColorBottomSheet extends MenuBottomSheetDialogFragment implem @Override public void onSaveInstanceState(Bundle outState) { outState.putInt(NEW_SELECTED_COLOR, newColor); - outState.putInt(PREV_SELECTED_COLOR, prevColor); + if (prevColor != null) { + outState.putInt(PREV_SELECTED_COLOR, prevColor); + } super.onSaveInstanceState(outState); } @@ -161,11 +164,13 @@ public class CustomColorBottomSheet extends MenuBottomSheetDialogFragment implem dismiss(); } - public static void showInstance(@NonNull FragmentManager fragmentManager, Fragment target, int prevColor) { + public static void showInstance(@NonNull FragmentManager fragmentManager, Fragment target, @Nullable Integer prevColor) { try { if (!fragmentManager.isStateSaved() && fragmentManager.findFragmentByTag(CustomColorBottomSheet.TAG) == null) { Bundle args = new Bundle(); - args.putInt(PREV_SELECTED_COLOR, prevColor); + if (prevColor != null) { + args.putInt(PREV_SELECTED_COLOR, prevColor); + } CustomColorBottomSheet customColorBottomSheet = new CustomColorBottomSheet(); customColorBottomSheet.setArguments(args); @@ -179,7 +184,7 @@ public class CustomColorBottomSheet extends MenuBottomSheetDialogFragment implem public interface ColorPickerListener { - void onColorSelected(@ColorInt int prevColor, @ColorInt int newColor); + void onColorSelected(@ColorInt Integer prevColor, @ColorInt int newColor); } } \ No newline at end of file diff --git a/OsmAnd/src/net/osmand/plus/track/TrackAppearanceFragment.java b/OsmAnd/src/net/osmand/plus/track/TrackAppearanceFragment.java index c0d6b42741..4c6b80e539 100644 --- a/OsmAnd/src/net/osmand/plus/track/TrackAppearanceFragment.java +++ b/OsmAnd/src/net/osmand/plus/track/TrackAppearanceFragment.java @@ -180,13 +180,6 @@ public class TrackAppearanceFragment extends ContextMenuScrollFragment implement trackIcon = view.findViewById(R.id.track_icon); buttonsShadow = view.findViewById(R.id.buttons_shadow); - view.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - openMenuHeaderOnly(); - } - }); - if (isPortrait()) { updateCardsLayout(); } @@ -341,7 +334,7 @@ public class TrackAppearanceFragment extends ContextMenuScrollFragment implement } @Override - public void onColorSelected(int prevColor, int newColor) { + public void onColorSelected(Integer prevColor, int newColor) { trackColoringCard.onColorSelected(prevColor, newColor); updateColorItems(); } diff --git a/OsmAnd/src/net/osmand/plus/track/TrackColoringCard.java b/OsmAnd/src/net/osmand/plus/track/TrackColoringCard.java index 5883c0dd73..75029746db 100644 --- a/OsmAnd/src/net/osmand/plus/track/TrackColoringCard.java +++ b/OsmAnd/src/net/osmand/plus/track/TrackColoringCard.java @@ -23,9 +23,6 @@ import com.google.android.material.internal.FlowLayout; import net.osmand.AndroidUtils; import net.osmand.PlatformUtil; -import net.osmand.plus.GPXDatabase; -import net.osmand.plus.GPXDatabase.GpxDataItem; -import net.osmand.plus.GpxSelectionHelper.SelectedGpxFile; import net.osmand.plus.OsmandApplication; import net.osmand.plus.R; import net.osmand.plus.UiUtilities; @@ -46,9 +43,8 @@ import static net.osmand.plus.dialogs.GpxAppearanceAdapter.getAppearanceItems; public class TrackColoringCard extends BaseCard implements ColorPickerListener { - public static final int INVALID_VALUE = -1; - - private final static String SOLID_COLOR = "solid_color"; + private static final int INVALID_VALUE = -1; + private static final String SOLID_COLOR = "solid_color"; private static final Log log = PlatformUtil.getLog(TrackColoringCard.class); private TrackDrawInfo trackDrawInfo; @@ -202,7 +198,7 @@ public class TrackColoringCard extends BaseCard implements ColorPickerListener { public void onClick(View v) { MapActivity mapActivity = getMapActivity(); if (mapActivity != null) { - CustomColorBottomSheet.showInstance(mapActivity.getSupportFragmentManager(), target, TrackColoringCard.INVALID_VALUE); + CustomColorBottomSheet.showInstance(mapActivity.getSupportFragmentManager(), target, null); } } }); @@ -289,8 +285,8 @@ public class TrackColoringCard extends BaseCard implements ColorPickerListener { } @Override - public void onColorSelected(int prevColor, int newColor) { - if (prevColor == INVALID_VALUE && customColors.size() < 6) { + public void onColorSelected(Integer prevColor, int newColor) { + if (prevColor == null && customColors.size() < 6) { customColors.add(newColor); trackDrawInfo.setColor(newColor); } else if (!Algorithms.isEmpty(customColors)) { @@ -299,35 +295,9 @@ public class TrackColoringCard extends BaseCard implements ColorPickerListener { customColors.set(index, newColor); } } - saveCustomColors(); - saveCustomColorsToTracks(prevColor, newColor); updateContent(); } - private void saveCustomColorsToTracks(int prevColor, int newColor) { - List gpxDataItems = app.getGpxDbHelper().getItems(); - for (GPXDatabase.GpxDataItem dataItem : gpxDataItems) { - if (prevColor == dataItem.getColor()) { - app.getGpxDbHelper().updateColor(dataItem, newColor); - } - } - List files = app.getSelectedGpxHelper().getSelectedGPXFiles(); - for (SelectedGpxFile selectedGpxFile : files) { - if (prevColor == selectedGpxFile.getGpxFile().getColor(0)) { - selectedGpxFile.getGpxFile().setColor(newColor); - } - } - } - - private void saveCustomColors() { - List colorNames = new ArrayList<>(); - for (Integer color : customColors) { - String colorHex = Algorithms.colorToString(color); - colorNames.add(colorHex); - } - app.getSettings().CUSTOM_TRACK_COLORS.setStringsList(colorNames); - } - private class TrackColoringAdapter extends RecyclerView.Adapter { private List items; From 0a48fc586e39970972d20729082aefb479e09811 Mon Sep 17 00:00:00 2001 From: Nazar-Kutz Date: Mon, 14 Sep 2020 17:42:29 +0300 Subject: [PATCH 04/56] Ui fixes third part --- OsmAnd/src/net/osmand/AndroidUtils.java | 23 ++++++++++ .../osmand/plus/base/ContextMenuFragment.java | 38 ++++++++++++++-- .../plus/base/OnNeedScrollUiAdapter.java | 5 +++ .../plus/base/OnVisibilityChangeListener.java | 5 +++ .../plus/track/TrackAppearanceFragment.java | 43 +++++++++++++++++-- .../net/osmand/plus/track/TrackWidthCard.java | 31 +++++++++++-- 6 files changed, 135 insertions(+), 10 deletions(-) create mode 100644 OsmAnd/src/net/osmand/plus/base/OnNeedScrollUiAdapter.java create mode 100644 OsmAnd/src/net/osmand/plus/base/OnVisibilityChangeListener.java diff --git a/OsmAnd/src/net/osmand/AndroidUtils.java b/OsmAnd/src/net/osmand/AndroidUtils.java index 3dea16fb15..87ade44343 100644 --- a/OsmAnd/src/net/osmand/AndroidUtils.java +++ b/OsmAnd/src/net/osmand/AndroidUtils.java @@ -63,6 +63,7 @@ import androidx.core.view.ViewCompat; import net.osmand.plus.OsmandApplication; import net.osmand.plus.R; +import net.osmand.plus.base.OnVisibilityChangeListener; import net.osmand.util.Algorithms; import java.io.File; @@ -602,6 +603,12 @@ public class AndroidUtils { return coordinates; } + public static boolean isPointInsideView(@NonNull View view, float x, float y) { + boolean matchVertical = y >= view.getY() && y <= view.getY() + view.getHeight(); + boolean mathHorizontal = x >= view.getX() && x <= view.getX() + view.getWidth(); + return matchVertical && mathHorizontal; + } + public static void enterToFullScreen(Activity activity, View view) { if (Build.VERSION.SDK_INT >= 21) { requestLayout(view); @@ -889,4 +896,20 @@ public class AndroidUtils { } return builder; } + + public static void addVisibilityChangeListener(final @NonNull View parent, + final @NonNull View v, + final @NonNull OnVisibilityChangeListener listener) { + parent.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { + int visibility = v.getVisibility(); + + @Override + public void onGlobalLayout() { + if (visibility != v.getVisibility()) { + visibility = v.getVisibility(); + listener.onVisibilityChange(visibility); + } + } + }); + } } \ No newline at end of file diff --git a/OsmAnd/src/net/osmand/plus/base/ContextMenuFragment.java b/OsmAnd/src/net/osmand/plus/base/ContextMenuFragment.java index 57928eac50..32c746d323 100644 --- a/OsmAnd/src/net/osmand/plus/base/ContextMenuFragment.java +++ b/OsmAnd/src/net/osmand/plus/base/ContextMenuFragment.java @@ -24,6 +24,7 @@ import android.view.animation.DecelerateInterpolator; import android.widget.FrameLayout; import android.widget.LinearLayout; import android.widget.OverScroller; +import android.widget.ScrollView; import android.widget.Toast; import androidx.annotation.IdRes; @@ -49,7 +50,7 @@ import net.osmand.plus.views.controls.HorizontalSwipeConfirm; import static net.osmand.plus.mapcontextmenu.MapContextMenuFragment.CURRENT_Y_UNDEFINED; -public abstract class ContextMenuFragment extends BaseOsmAndFragment { +public abstract class ContextMenuFragment extends BaseOsmAndFragment implements OnNeedScrollUiAdapter { public static class MenuState { public static final int HEADER_ONLY = 1; @@ -67,7 +68,7 @@ public abstract class ContextMenuFragment extends BaseOsmAndFragment { private OnLayoutChangeListener containerLayoutListener; private View topShadow; private ViewGroup topView; - private View bottomScrollView; + private ScrollView bottomScrollView; private LinearLayout cardsContainer; private FrameLayout bottomContainer; @@ -247,7 +248,7 @@ public abstract class ContextMenuFragment extends BaseOsmAndFragment { return bottomContainer; } - public View getBottomScrollView() { + public ScrollView getBottomScrollView() { return bottomScrollView; } @@ -318,6 +319,8 @@ public abstract class ContextMenuFragment extends BaseOsmAndFragment { final GestureDetector swipeDetector = new GestureDetector(app, new HorizontalSwipeConfirm(true)); final OnTouchListener slideTouchListener = new OnTouchListener() { + private static final int SHORT_CLICK_DURATION_TOP_LIMIT = 500; + private float dy; private float dyMain; private float mDownY; @@ -329,6 +332,9 @@ public abstract class ContextMenuFragment extends BaseOsmAndFragment { private boolean slidingUp; private boolean slidingDown; + private boolean isHolding; + + private long downMotionEventTimeMs; { OsmandApplication app = requireMyApplication(); @@ -352,6 +358,10 @@ public abstract class ContextMenuFragment extends BaseOsmAndFragment { switch (event.getAction()) { case MotionEvent.ACTION_DOWN: + if (!isHolding) { + isHolding = true; + downMotionEventTimeMs = event.getDownTime(); + } mDownY = event.getRawY(); dy = event.getY(); dyMain = getViewY(); @@ -388,6 +398,7 @@ public abstract class ContextMenuFragment extends BaseOsmAndFragment { break; case MotionEvent.ACTION_UP: + isHolding = false; if (moving) { moving = false; int currentY = getViewY(); @@ -412,6 +423,8 @@ public abstract class ContextMenuFragment extends BaseOsmAndFragment { } changeMenuState(currentY, slidingUp, slidingDown, true); + } else if (isShortClick(event.getEventTime())) { + onShortClick(v, event); } recycleVelocityTracker(); break; @@ -445,6 +458,11 @@ public abstract class ContextMenuFragment extends BaseOsmAndFragment { velocityTracker = null; } } + + private boolean isShortClick(long upActionTime) { + long holdingDuration = upActionTime - downMotionEventTimeMs; + return holdingDuration <= SHORT_CLICK_DURATION_TOP_LIMIT; + } }; if (mainView instanceof InterceptorLinearLayout) { @@ -467,6 +485,8 @@ public abstract class ContextMenuFragment extends BaseOsmAndFragment { return view; } + protected void onShortClick(View v, MotionEvent event) { } + public float getToolbarAlpha(int y) { float a = 0; if (portrait) { @@ -1047,4 +1067,16 @@ public abstract class ContextMenuFragment extends BaseOsmAndFragment { return false; } } + + @Override + public void onNeedVerticalScroll(String tag, int y) { } + + public void verticalScrollToYPosition(final int y) { + bottomScrollView.post(new Runnable() { + @Override + public void run() { + bottomScrollView.smoothScrollTo(0, y); + } + }); + } } diff --git a/OsmAnd/src/net/osmand/plus/base/OnNeedScrollUiAdapter.java b/OsmAnd/src/net/osmand/plus/base/OnNeedScrollUiAdapter.java new file mode 100644 index 0000000000..4363139e1f --- /dev/null +++ b/OsmAnd/src/net/osmand/plus/base/OnNeedScrollUiAdapter.java @@ -0,0 +1,5 @@ +package net.osmand.plus.base; + +public interface OnNeedScrollUiAdapter { + void onNeedVerticalScroll(String tag, int yPosition); +} diff --git a/OsmAnd/src/net/osmand/plus/base/OnVisibilityChangeListener.java b/OsmAnd/src/net/osmand/plus/base/OnVisibilityChangeListener.java new file mode 100644 index 0000000000..58a2da55de --- /dev/null +++ b/OsmAnd/src/net/osmand/plus/base/OnVisibilityChangeListener.java @@ -0,0 +1,5 @@ +package net.osmand.plus.base; + +public interface OnVisibilityChangeListener { + void onVisibilityChange(int visibility); +} diff --git a/OsmAnd/src/net/osmand/plus/track/TrackAppearanceFragment.java b/OsmAnd/src/net/osmand/plus/track/TrackAppearanceFragment.java index 4c6b80e539..53cbb17515 100644 --- a/OsmAnd/src/net/osmand/plus/track/TrackAppearanceFragment.java +++ b/OsmAnd/src/net/osmand/plus/track/TrackAppearanceFragment.java @@ -7,6 +7,7 @@ import android.os.Build; import android.os.Bundle; import android.view.Gravity; import android.view.LayoutInflater; +import android.view.MotionEvent; import android.view.View; import android.view.ViewGroup; import android.view.ViewTreeObserver; @@ -80,6 +81,8 @@ public class TrackAppearanceFragment extends ContextMenuScrollFragment implement private ImageView trackIcon; private View buttonsShadow; + private View routeMenuTopShadowAll; + private View controlButtons; @Override public int getMainLayoutId() { @@ -179,6 +182,8 @@ public class TrackAppearanceFragment extends ContextMenuScrollFragment implement if (view != null) { trackIcon = view.findViewById(R.id.track_icon); buttonsShadow = view.findViewById(R.id.buttons_shadow); + controlButtons = view.findViewById(R.id.control_buttons); + routeMenuTopShadowAll = view.findViewById(R.id.route_menu_top_shadow_all); if (isPortrait()) { updateCardsLayout(); @@ -191,7 +196,7 @@ public class TrackAppearanceFragment extends ContextMenuScrollFragment implement int widthNoShadow = getLandscapeNoShadowWidth(); FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(widthNoShadow, ViewGroup.LayoutParams.WRAP_CONTENT); params.gravity = Gravity.BOTTOM | Gravity.START; - view.findViewById(R.id.control_buttons).setLayoutParams(params); + controlButtons.setLayoutParams(params); } enterTrackAppearanceMode(); runLayoutListener(); @@ -201,8 +206,8 @@ public class TrackAppearanceFragment extends ContextMenuScrollFragment implement @Override protected void calculateLayout(View view, boolean initLayout) { - menuTitleHeight = view.findViewById(R.id.route_menu_top_shadow_all).getHeight() - + view.findViewById(R.id.control_buttons).getHeight() - buttonsShadow.getHeight(); + menuTitleHeight = routeMenuTopShadowAll.getHeight() + + controlButtons.getHeight() - buttonsShadow.getHeight(); super.calculateLayout(view, initLayout); } @@ -353,6 +358,14 @@ public class TrackAppearanceFragment extends ContextMenuScrollFragment implement trackIcon.setImageDrawable(icon); } + @Override + protected void onShortClick(View v, MotionEvent event) { + if (routeMenuTopShadowAll != null && + AndroidUtils.isPointInsideView(routeMenuTopShadowAll, event.getX(), event.getY())) { + adjustMapPosition(getViewY()); + } + } + private void adjustMapPosition(int y) { MapActivity mapActivity = getMapActivity(); if (mapActivity != null && mapActivity.getMapView() != null) { @@ -583,7 +596,7 @@ public class TrackAppearanceFragment extends ContextMenuScrollFragment implement trackColoringCard.setListener(this); cardsContainer.addView(trackColoringCard.build(mapActivity)); - trackWidthCard = new TrackWidthCard(mapActivity, trackDrawInfo); + trackWidthCard = new TrackWidthCard(mapActivity, trackDrawInfo, this); trackWidthCard.setListener(this); cardsContainer.addView(trackWidthCard.build(mapActivity)); } @@ -626,6 +639,28 @@ public class TrackAppearanceFragment extends ContextMenuScrollFragment implement } } + @Override + public void onNeedVerticalScroll(@NonNull String tag, int y) { + if (tag.equals(TrackWidthCard.TAG)) { + View trackWidthCardView = trackWidthCard.getView(); + if (trackWidthCardView == null) return; + + int currentScrollYPosition = getBottomScrollView().getScrollY(); + int dialogHeight = getInnerScrollableHeight(); + int resultYPosition = trackWidthCardView.getTop() + y; + if (resultYPosition > (currentScrollYPosition + dialogHeight)) { + verticalScrollToYPosition(resultYPosition - dialogHeight); + } + } + } + + public int getInnerScrollableHeight() { + int totalScreenHeight = getViewHeight() - getMenuStatePosY(getCurrentMenuState()); + int frameTotalHeight = routeMenuTopShadowAll.getHeight() + + controlButtons.getHeight() + buttonsShadow.getHeight(); + return totalScreenHeight - frameTotalHeight; + } + public static boolean showInstance(@NonNull MapActivity mapActivity, TrackAppearanceFragment fragment) { try { mapActivity.getSupportFragmentManager() diff --git a/OsmAnd/src/net/osmand/plus/track/TrackWidthCard.java b/OsmAnd/src/net/osmand/plus/track/TrackWidthCard.java index 81208971bb..faf616b010 100644 --- a/OsmAnd/src/net/osmand/plus/track/TrackWidthCard.java +++ b/OsmAnd/src/net/osmand/plus/track/TrackWidthCard.java @@ -19,6 +19,8 @@ import net.osmand.AndroidUtils; import net.osmand.plus.R; import net.osmand.plus.UiUtilities; import net.osmand.plus.activities.MapActivity; +import net.osmand.plus.base.OnNeedScrollUiAdapter; +import net.osmand.plus.base.OnVisibilityChangeListener; import net.osmand.plus.dialogs.GpxAppearanceAdapter; import net.osmand.plus.dialogs.GpxAppearanceAdapter.AppearanceListItem; import net.osmand.plus.dialogs.GpxAppearanceAdapter.GpxAppearanceAdapterType; @@ -29,21 +31,26 @@ import net.osmand.util.Algorithms; import java.util.List; public class TrackWidthCard extends BaseCard { + public final static String TAG = TrackWidthCard.class.getName(); private final static String CUSTOM_WIDTH = "custom_width"; private final static int CUSTOM_WIDTH_MIN = 1; private final static int CUSTOM_WIDTH_MAX = 24; private TrackDrawInfo trackDrawInfo; + private OnNeedScrollUiAdapter onNeedScrollUiAdapter; private AppearanceListItem selectedItem; private List appearanceItems; private GpxWidthAdapter widthAdapter; + private View sliderContainer; - public TrackWidthCard(MapActivity mapActivity, TrackDrawInfo trackDrawInfo) { + public TrackWidthCard(MapActivity mapActivity, TrackDrawInfo trackDrawInfo, + OnNeedScrollUiAdapter onNeedScrollUiAdapter) { super(mapActivity); this.trackDrawInfo = trackDrawInfo; + this.onNeedScrollUiAdapter = onNeedScrollUiAdapter; appearanceItems = getWidthAppearanceItems(); } @@ -110,6 +117,7 @@ public class TrackWidthCard extends BaseCard { } private void updateCustomWidthSlider() { + sliderContainer = view.findViewById(R.id.slider_container); if (CUSTOM_WIDTH.equals(getSelectedItem().getAttrName())) { Slider widthSlider = view.findViewById(R.id.width_slider); @@ -143,9 +151,19 @@ public class TrackWidthCard extends BaseCard { } }); UiUtilities.setupSlider(widthSlider, nightMode, null); - AndroidUiHelper.updateVisibility(view.findViewById(R.id.slider_container), true); + AndroidUtils.addVisibilityChangeListener(view, sliderContainer, + new OnVisibilityChangeListener() { + @Override + public void onVisibilityChange(int visibility) { + if (visibility == View.VISIBLE) { + onNeedScrollUiAdapter.onNeedVerticalScroll(TAG, sliderContainer.getBottom()); + } + } + } + ); + AndroidUiHelper.updateVisibility(sliderContainer, true); } else { - AndroidUiHelper.updateVisibility(view.findViewById(R.id.slider_container), false); + AndroidUiHelper.updateVisibility(sliderContainer, false); } } @@ -203,6 +221,13 @@ public class TrackWidthCard extends BaseCard { if (listener != null) { listener.onCardPressed(TrackWidthCard.this); } + + if (CUSTOM_WIDTH.equals(selectedItem.getAttrName()) + && sliderContainer != null + && onNeedScrollUiAdapter != null + && sliderContainer.getVisibility() == View.VISIBLE) { + onNeedScrollUiAdapter.onNeedVerticalScroll(TAG, sliderContainer.getBottom()); + } } }); } From 083929512d53bc354585b29737035e75b7e56edd Mon Sep 17 00:00:00 2001 From: Nazar-Kutz Date: Tue, 15 Sep 2020 11:11:34 +0300 Subject: [PATCH 05/56] Change text field style for decrease height --- OsmAnd/res/layout/custom_color_picker.xml | 3 +-- OsmAnd/res/values/styles.xml | 15 +++++++++++++++ 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/OsmAnd/res/layout/custom_color_picker.xml b/OsmAnd/res/layout/custom_color_picker.xml index db6c3a254c..9e6c1bb9b1 100644 --- a/OsmAnd/res/layout/custom_color_picker.xml +++ b/OsmAnd/res/layout/custom_color_picker.xml @@ -34,12 +34,11 @@ ?android:textColorSecondary + + + + + + + From ce4fcc0ebec662f81944bdbbf291e96cb9159ad5 Mon Sep 17 00:00:00 2001 From: sergosm Date: Tue, 15 Sep 2020 17:19:04 +0300 Subject: [PATCH 06/56] Edit_favorite_screen --- .../res/layout/point_editor_fragment_new.xml | 69 ++++++++++++++----- .../FavouritePointMenuController.java | 12 ++-- .../FavoritePointEditorFragmentNew.java | 8 +-- .../editors/PointEditorFragmentNew.java | 51 ++++++++++++-- 4 files changed, 108 insertions(+), 32 deletions(-) diff --git a/OsmAnd/res/layout/point_editor_fragment_new.xml b/OsmAnd/res/layout/point_editor_fragment_new.xml index e39a1dbf44..a3a8000b0a 100644 --- a/OsmAnd/res/layout/point_editor_fragment_new.xml +++ b/OsmAnd/res/layout/point_editor_fragment_new.xml @@ -142,29 +142,62 @@ android:paddingEnd="@dimen/content_padding_small" android:paddingRight="@dimen/content_padding_small" android:textSize="@dimen/default_list_text_size" + android:gravity="left" tools:text="@string/lorem_ipsum" /> - + + + + + + + + + Date: Tue, 15 Sep 2020 20:24:22 +0300 Subject: [PATCH 07/56] Drawer: show navigation type for profiles --- OsmAnd/src/net/osmand/plus/activities/MapActivityActions.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OsmAnd/src/net/osmand/plus/activities/MapActivityActions.java b/OsmAnd/src/net/osmand/plus/activities/MapActivityActions.java index 8e444b7d88..fe3c067e9e 100644 --- a/OsmAnd/src/net/osmand/plus/activities/MapActivityActions.java +++ b/OsmAnd/src/net/osmand/plus/activities/MapActivityActions.java @@ -1046,7 +1046,7 @@ public class MapActivityActions implements DialogProvider { String modeDescription; if (currentMode.isCustomProfile()) { modeDescription = String.format(app.getString(R.string.profile_type_descr_string), - Algorithms.capitalizeFirstLetterAndLowercase(currentMode.getParent().toHumanString())); + Algorithms.capitalizeFirstLetterAndLowercase(currentMode.getRoutingProfile())); } else { modeDescription = getString(R.string.profile_type_base_string); } From 546ed7b4bcdef9975cd92b878d419dc1004552ea Mon Sep 17 00:00:00 2001 From: ssantos Date: Tue, 15 Sep 2020 16:52:03 +0000 Subject: [PATCH 08/56] Translated using Weblate (Portuguese) Currently translated at 100.0% (3484 of 3484 strings) --- OsmAnd/res/values-pt/strings.xml | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/OsmAnd/res/values-pt/strings.xml b/OsmAnd/res/values-pt/strings.xml index 9b348c9bbe..49f1d72d9e 100644 --- a/OsmAnd/res/values-pt/strings.xml +++ b/OsmAnd/res/values-pt/strings.xml @@ -3829,7 +3829,7 @@ Rota inversa O trilho inteiro será recalculado a usar o perfil selecionado. Somente o próximo segmento será recalculado a usar o perfil selecionado. - Selecione como ligar pontos, com uma linha reta ou calcule uma rota entre eles com o perfil selecionado. + Selecione como ligar pontos, por uma linha reta ou a calcular uma rota entre eles como especificado abaixo. Trilho inteiro Próximo segmento Em seguida, encaixe a sua pista na estrada mais próxima permitida com um dos seus perfis de navegação para usar esta opção. @@ -3840,7 +3840,7 @@ Escolha o ficheiro de trilha a seguir Escolha o ficheiro de trilho a seguir ou importe um do seu aparelho. Selecionar outra trilha - Navegue de minha localização até a trilha + Navegue de minha posição até ao trilho Ponto da trilha para navegar Início da pista Ponto próximo @@ -3888,19 +3888,19 @@ Nome do ficheiro %s ficheiros de faixa selecionados Vai pausar o registo de faixas quando a aplicação for morta (através de aplicações recentes). (indicação de fundo de OsmAnd desaparece da barra de notificação do Android.) - - O modo Rota do Plano Atualizado permite usar diferentes tipos de navegação para cada segmento e anexa qualquer pista às estradas + - Função atualizada de Planear uma rota: permite utilizar diferentes tipos de navegação por segmento e a inclusão de faixas \n -\n - Novas opções de aparência para pistas: selecionar cor, espessura, rodar nas setas de direcção e marcas de início/fim +\n - Novo menu Aparência para trilhos: selecionar cor, espessura, setas de direção de visualização, ícones de início/fim \n -\n - Melhoria da visibilidade dos nós da bicicleta +\n - Melhoria da visibilidade dos nós da bicicleta. \n -\n - Menu de contexto para faixas com informações básicas +\n - Os trilhos agora podem ser tocados, ter menu de contexto com informações básicas. \n \n - Algoritmos de pesquisa melhorados \n -\n - Opções de faixa de acompanhamento melhoradas na navegação +\n - Opções de seguir faixas melhoradas na navegação \n -\n - Problemas fixos com as configurações de importação/exportação de perfis +\n - Problemas com as configurações de importação/exportação de perfis resolvidos \n \n \ No newline at end of file From 3e5248c4949f5807c305322719df0e33b9001e7f Mon Sep 17 00:00:00 2001 From: Ldm Public Date: Tue, 15 Sep 2020 11:39:05 +0000 Subject: [PATCH 09/56] Translated using Weblate (French) Currently translated at 99.9% (3483 of 3484 strings) --- OsmAnd/res/values-fr/strings.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/OsmAnd/res/values-fr/strings.xml b/OsmAnd/res/values-fr/strings.xml index bd4408d069..b116563f71 100644 --- a/OsmAnd/res/values-fr/strings.xml +++ b/OsmAnd/res/values-fr/strings.xml @@ -3801,7 +3801,7 @@ Sélectionnez un fichier de trace à ouvrir. Terminé Remplacer la trace - Sélectionnez comment relier les points : par une ligne droite ou en calculant un itinéraire avec le profil sélectionné. + Sélectionnez comment relier les points : par une ligne droite ou en calculant un itinéraire reliant les points comme indiqué ci-dessous. Toute la trace sera recalculée en utilisant le profil sélectionné. Seul le prochain segment sera recalculé en utilisant le profil sélectionné. Ensuite, sélectionnez le profil de navigation pour détecter les routes autorisées et le seuil de distance afin de déplacer votre trace. @@ -3836,7 +3836,7 @@ Suivre la trace Sélectionner un fichier de trace à suivre Sélectionner une autre trace - Naviguez de ma position vers la trace + Naviguer de ma position vers la trace Point le plus proche Supprimer l\'adresse Ajouter une adresse From 6c1cf4bf36c7567583200a6152d1a355c505eb46 Mon Sep 17 00:00:00 2001 From: Deelite <556xxy@gmail.com> Date: Wed, 16 Sep 2020 02:02:14 +0000 Subject: [PATCH 10/56] Translated using Weblate (Russian) Currently translated at 99.8% (3478 of 3484 strings) --- OsmAnd/res/values-ru/strings.xml | 80 ++++++++++++++++---------------- 1 file changed, 40 insertions(+), 40 deletions(-) diff --git a/OsmAnd/res/values-ru/strings.xml b/OsmAnd/res/values-ru/strings.xml index 61a1b00868..ea571d0bac 100644 --- a/OsmAnd/res/values-ru/strings.xml +++ b/OsmAnd/res/values-ru/strings.xml @@ -73,8 +73,8 @@ Поиск почтового индекса Записать аудио Записать видео - Сделать фото - Добавить заметку OSM + Фотозаметка + Заметка OSM Функции парковки Благодарим вас за покупку платной версии OsmAnd. Не показывать сообщения при запуске @@ -181,7 +181,7 @@ Толщина горизонталей Толщина горизонталей Воду - Скрыть воду + Водные объекты Старый поиск Показывать старый поиск Добавить старый поиск в меню. @@ -194,7 +194,7 @@ Построение маршрута У вас пока нет файлов треков Вы также можете добавить файлы треков в папку - Добавь ещё… + Добавить… Внешний вид Включить быструю запись Отображение системного уведомления, позволяющего начать запись поездки. @@ -233,7 +233,7 @@ Сохранить фильтр Удалить фильтр Новый фильтр - Изменить позицию + Изменение позиции Текущий путь Навигация OsmAnd Live Уровень заряда батареи @@ -244,7 +244,7 @@ Режим карты Тонко Средне - Толстый + Жирно Выберите маркеры Верхняя панель Правок: %1$s, ранг: %2$s, всего правок: %3$s @@ -317,8 +317,8 @@ Открыть внешний проигрыватель Удалить эту запись? недоступно - Создать аудиозаметку - Создать видеозаметку + Аудиозаметка + Видеозаметка Слой аудиозаписей Запись не может быть воспроизведена. Удалить запись @@ -466,7 +466,7 @@ Неопределённо Текущий центр карты Начало: - Искать рядом + Поиск рядом Маршрут успешно сохранён в «%1$s». Имя файла: Файл с таким именем уже существует. @@ -518,9 +518,9 @@ Обратное направление GPX Использовать текущий пункт назначения Пройти весь путь - Для этого региона доступны локальные векторные карты. -\n\t -\n\tДля их использования выберите в «Меню» → «Настройки карты» → «Источник карты…» → «Векторные карты». + Для этого региона есть локальные векторные карты. +\n\t +\n\tМеню → Настройки карты → Источник карты → Векторные карты. Голосовые инструкции Выберите канал вывода голосовых подсказок. Канал голосовых звонков (прерывает автомобильную Bluetooth стереосистему) @@ -531,14 +531,14 @@ Прозрачность наложения Отрегулируйте прозрачность основной карты. Прозрачность основной карты - Карта подложки… + Карта подложки Карта подложки Выберите карту подложки - Карта наложения… + Карта наложения Карта наложения Выберите слой наложения поверх основной карты Карта уже установлена, настройки будут обновлены. - Выберите (тайловые) карты для установки или обновления. + Выберите тайловые карты для установки или обновления. Для данной операции требуется подключение к интернету, но оно недоступно. Загрузить ещё… Минимальный масштаб для использования векторных карт. @@ -689,7 +689,7 @@ Маршрут Заметки OSM (онлайн) POI… - Источник карты… + Источник карты Слои Искать POI Использовать трекбол для перемещения по карте. @@ -738,7 +738,7 @@ Загрузить детальные карты регионов Поиск сигнала… Искать вокруг текущего центра карты - Искать рядом + Поиск рядом По умолчанию Портрет Ландшафт @@ -819,7 +819,7 @@ POI Не удалось сохранить файл GPX. Не удалось рассчитать маршрут. - Не удалось рассчитать маршрут. + Не удалось рассчитать маршрут Невозможно построить маршрут. Проложен новый маршрут, расстояние Вы прибыли. @@ -864,7 +864,7 @@ 3D вид Показать последние использованные POI на карте. Показывать POI - Выберите источник онлайн или кешированных тайлов карты. + Выберите ресурс с картами онлайн или в кеше. Растровые карты Источник карты Использовать интернет @@ -1258,7 +1258,7 @@ Отменить маршрут Очистить пункт назначения Искать улицу в ближайших населённых пунктах - Сортировать от двери до двери + В порядке следования домов Доступно %1$d файлов для скачивания осталось %1$d файлов Подождите, пока завершится текущая операция @@ -1267,7 +1267,7 @@ Имя файла GPX Файл GPX сохранён в {0} Инструмент расчёта дистанции и планирования - Оптимальный порядок точек по пути к месту назначения. + Оптимальный порядок точек маршрута по пути к месту назначения. Не удалось выполнить резервное копирование изменений OSM. Резервное копирование как правка OSM высота @@ -1304,7 +1304,7 @@ К: Через: От: - У вас уже установлены промежуточные пункты. + Промежуточные пункты уже заданы. Названия улиц (TTS) Объявлять… Настройки озвучивания названий улиц, предупреждений о дорожном движении (принудительные остановки, искусственные неровности), камер контроля скорости и ограничений скорости. @@ -2110,7 +2110,7 @@ Запись удалена элементы удалены Автообновления - Выберите или скачайте голосовые оповещения для вашего языка. + Выберите или скачайте голосовые подсказки для вашего языка. Полный отчёт Пересчёт маршрута Имя пользователя и пароль OSM @@ -2216,7 +2216,7 @@ Скачать {0} файл(ов)\? \nИспользуется {3} МБ временного хранилища и {1} МБ постоянного. (Из {2} МБ) Найти моё местоположение - Прокладывайте маршруты и открывайте новые для себя места без подключения к интернету + Стройте маршруты и открывайте новые места без подключения к интернету Разрешить доступ к местоположению Дать разрешение Хранилище данных OsmAnd (для карт, файлов треков и пр.): %1$s. @@ -2235,7 +2235,7 @@ Получить Получайте неограниченное количество загрузок карт, вдобавок к еженедельным, ежедневным и даже почасовым обновлениям. Неограниченный доступ к картам, обновлениям и плагину «Википедия». - Выберите голосовое сопровождение + Голосовое сопровождение Абонентская плата взимается за выбранный период. Отменить подписку можно в Google Play в любой момент. Пожертвование для сообщества OSM Часть вашего пожертвования будет отправлена участникам OSM. Стоимость подписки при этом остаётся прежней. @@ -2296,7 +2296,7 @@ Фото с улиц онлайн для каждого. Открывайте места, взаимодействуйте, запечатлейте весь мир. Mapillary Уличные фотографии для всех. Открывайте для себя места, сотрудничайте, снимайте мир. - Название содержит слишком много заглавных букв. Вы хотите продолжить? + В названии слишком много заглавных букв. Продолжить\? Кнопка приостановки и возобновления навигации. Показывать диалог завершения навигации Запуск/остановка навигации @@ -2320,12 +2320,12 @@ Макс/Мин Мин/Макс Пауза/возобновление навигации - Перезагрузка тайлов для отображения актуальных данных. + Перезагрузить тайлы для актуализации данных. Введите имя пользователя Сбросить До От - Перезагрузить + Обновить Фильтровать фотографии по отправителю, дате или типу. Фильтры применяются только для больших масштабов. Не удалось импортировать файл. Убедитесь, что OsmAnd имеет разрешение на его чтение. Откорректированное расстояние @@ -2447,7 +2447,7 @@ Неправильный формат Введите новое имя Назад - Внешний вид на карте + Вид на карте Выберите категорию избранных для добавления к маркерам. Категория избранных Добавить группу @@ -2669,8 +2669,8 @@ Место без названия Текущий Добавляет промежуточную остановку - Добавляет первую остановку - Перемещает пункт назначения и создаёт промежуточную точку + Добавляет начальную остановку + Добавляет в конец точку в качестве нового пункта назначения Показать закрытые заметки Показать/скрыть заметки OSM на карте. GPX — подходит для экспорта в JOSM и другие OSM редакторы. @@ -2701,10 +2701,10 @@ З Ю С - Необязательное имя точки + Имя точки (необязательно) Спортивные сплавы Сначала дальние - Удалённость (сначала ближние) + Сначала ближние Группа удалена Очистить все промежуточные точки Использовать двузначную долготу @@ -3721,7 +3721,7 @@ Держать экран отключённым Держать экран включённым Файл SQLiteDB - Укажите имя источника онлайн-карты. + Название ресурса с онлайн-картами. Введите или вставьте URL онлайн-источника. Время устаревания Проекция Меркатора @@ -3786,13 +3786,13 @@ Предельная длина В этом устройстве нет камер контроля скорости. Роликовые коньки - Управляйте уровнем масштабирования карты с помощью кнопок громкости на устройстве. + Изменение масштаба карты кнопками громкости. Масштабирование кнопками громкости Укажите длину автомобиля, для длинных транспортных средств могут применяться ограничения на маршруте. - Удалить ближайшую точку назначения + Удалить следующий пункт Задайте название точки Следующая точка маршрута будет удалена. Если это конечный пункт, навигация завершится. - Получите информацию о достопримечательностях из Википедии. Это ваш карманный автономный путеводитель - просто включите плагин Википедии и наслаждайтесь статьями об объектах вокруг вас. + Информация о достопримечательностях из Википедии. Ваш карманный офлайн-путеводитель — просто включите плагин Википедии и читайте об объектах вокруг вас. Скачать карты Википедии Эндуро мотоцикл Мотороллер @@ -3824,8 +3824,8 @@ Предельная дистанция Сохранить как новый трек Обратный маршрут - Весь трек будет перестроен с использованием выбранного профиля. - Только следующий сегмент будет перестроен с использованием выбранного профиля. + Профиль будет примёнен ко всему маршруту. + Профиль будет применён только к следующему сегменту. Следующий сегмент Весь трек Для использования данной возможности OsmAnd необходимо привязать ваш трек по дорогам. @@ -3883,7 +3883,7 @@ Открыть сохранённый трек Остановка записи GPX при принудительном закрытии (через последние приложения). (Из панели уведомлений Android исчезнет значок фонового режима.) сохранен - Добавьте как минимум две точки. + Добавьте хотя бы две точки. ПОВТОРИТЬ • Обновленный режим планирования маршрута позволяет использовать разные типы навигации для каждого сегмента и прикрепляет любой трек к дорогам \n From 2b6ecdc2ffbe339aafbc9d9cc371838bc3ba6304 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?O=C4=9Fuz=20Ersen?= Date: Tue, 15 Sep 2020 14:31:50 +0000 Subject: [PATCH 11/56] Translated using Weblate (Turkish) Currently translated at 99.5% (3469 of 3484 strings) --- OsmAnd/res/values-tr/strings.xml | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/OsmAnd/res/values-tr/strings.xml b/OsmAnd/res/values-tr/strings.xml index fd9beef585..1498c8591c 100644 --- a/OsmAnd/res/values-tr/strings.xml +++ b/OsmAnd/res/values-tr/strings.xml @@ -3783,7 +3783,7 @@ Ters güzergah Tüm yol, seçilen profil kullanılarak yeniden hesaplanacaktır. Sadece sonraki bölüm, seçilen profil kullanılarak yeniden hesaplanacaktır. - Düz bir çizgi ile noktaları nasıl birleştireceğinizi veya seçili profille aralarında nasıl güzergah hesaplayacağınızı seçin. + Düz bir çizgi ile noktaları nasıl birleştireceğinizi veya aşağıda belirtildiği gibi aralarında nasıl güzergah hesaplayacağınızı seçin. Tüm yol Sonraki bölüm Eşik mesafesi @@ -3814,4 +3814,17 @@ Genel yol kaydı için kayıt aralığını seçin (haritadaki seyahat kayıt widget\'ı aracılığıyla etkin). Seyahat kaydetmeyi duraklat Seyahat kaydetmeyi devam ettir + En yakın nokta + Adres sil + Adres ekle + Adres girin + Sadece güzergah hattı kaydedilecek, ara noktalar silinecektir. + Dosya adı + Sistem öntanımlı değeri + Sonraki tüm bölümler + Önceki bölüm + Önceki tüm bölümler + Sadece seçili bölüm, seçilen profil kullanılarak yeniden hesaplanacaktır. + Sonraki tüm bölümler, seçilen profil kullanılarak yeniden hesaplanacaktır. + Önceki tüm bölümler, seçilen profil kullanılarak yeniden hesaplanacaktır. \ No newline at end of file From a5912b75a3898609b206565dc78fe509b8e10f7b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Babos=20G=C3=A1bor?= Date: Tue, 15 Sep 2020 20:29:28 +0000 Subject: [PATCH 12/56] Translated using Weblate (Hungarian) Currently translated at 99.9% (3483 of 3484 strings) --- OsmAnd/res/values-hu/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OsmAnd/res/values-hu/strings.xml b/OsmAnd/res/values-hu/strings.xml index bf5f700fa4..4c6a6e4877 100644 --- a/OsmAnd/res/values-hu/strings.xml +++ b/OsmAnd/res/values-hu/strings.xml @@ -3834,7 +3834,7 @@ Egyszerűsített nyomvonal Kész elmentve - Jelölje ki, hogyan legyenek összekötve a pontok: egyenes vonallal vagy a kiválasztott profilnak megfelelően kiszámított útvonallal. + Jelölje ki, hogyan legyenek összekötve a pontok: egyenes vonallal vagy az alábbiak szerint kiszámított útvonallal. Teljes nyomvonal Megjegyzés: Ha a GPS közvetlenül a felvétel előtt ki volt kapcsolva, akkor rosszabb lehet az első mért pont pontossága. A kódban ezért szeretnénk majd talán várni egy-két másodpercet egy pont rögzítése előtt (vagy a 3 egymást követő pont közül a legjobbat rögzíteni vagy valami hasonló), de ezt még nem programoztuk le. Cím törlése From fd3d3f65c247814fd861fcaa81410200929c6cae Mon Sep 17 00:00:00 2001 From: ihor_ck Date: Tue, 15 Sep 2020 12:25:04 +0000 Subject: [PATCH 13/56] Translated using Weblate (Ukrainian) Currently translated at 100.0% (3484 of 3484 strings) --- OsmAnd/res/values-uk/strings.xml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/OsmAnd/res/values-uk/strings.xml b/OsmAnd/res/values-uk/strings.xml index 1b1ca18e75..678d5dfc72 100644 --- a/OsmAnd/res/values-uk/strings.xml +++ b/OsmAnd/res/values-uk/strings.xml @@ -3828,7 +3828,7 @@ Зберегти як новий трек Весь трек буде перераховано за допомогою вибраного профілю. Лише наступний сегмент буде перераховано за допомогою обраного профілю. - Виберіть спосіб з\'єднання точок: прямою лінією чи розраховувати маршрут між ними за допомогою вибраного профілю. + Виберіть спосіб з\'єднання точок: прямою лінією чи обчислити маршрут між ними за, як зазначено далі. Зображення вулиць Ви дійсно бажаєте відхилити всі зміни у запланованому маршруті, закривши його\? Для зворотного напрямку @@ -3881,13 +3881,13 @@ Буде збережено лише лінію маршруту, а проміжні точки буде видалено. Назва файлу Повторити - • Оновлений режим планування маршруту дозволяє застосувати різні типи переходів для кожного сегмента і прив\'язує будь-який трек до доріг + • Оновлено функції планування маршруту: дозволено застосувати різні типи переходів для кожного сегмента і прив\'язати будь-який трек до доріг \n -\n• Нові параметри вигляду треків: вибір кольору, товщина стрілки напрямку та позначки початку/завершення +\n• Нове меню вигляду треків: вибір кольору, товщина, вигляд стрілки напрямку, піктограми початку/завершення \n \n• Покращено оглядовість велосипедних вузлів \n -\n• Контекстне меню для треків з основною інформацією +\n• На треки тепер можна натискати, є контекстне меню з основною інформацією. \n \n• Вдосконалено алгоритми пошуку \n From 0cd2f655ae1beb34c18943cb077da9798c91b523 Mon Sep 17 00:00:00 2001 From: ace shadow Date: Tue, 15 Sep 2020 20:47:00 +0000 Subject: [PATCH 14/56] Translated using Weblate (Slovak) Currently translated at 100.0% (3484 of 3484 strings) --- OsmAnd/res/values-sk/strings.xml | 35 ++++++++++++++++++++++---------- 1 file changed, 24 insertions(+), 11 deletions(-) diff --git a/OsmAnd/res/values-sk/strings.xml b/OsmAnd/res/values-sk/strings.xml index cc7c2f013a..454bf3203b 100644 --- a/OsmAnd/res/values-sk/strings.xml +++ b/OsmAnd/res/values-sk/strings.xml @@ -3780,17 +3780,17 @@ Prepínač pre zobrazenie alebo skrytie vrstvy Mapillary na mape. Smerovanie %1$s vymazané - Pre úplné odstránenie údajov o rýchlostných radaroch je potrebný reštart. + Reštartovať aplikáciu pre úplné odstránenie údajov o rýchlostných radaroch. Odinštalovať a reštartovať Odinštalovať Zadajte aká dĺžka vozidla musí byť povolená na trase. Limit dĺžky Toto zariadenie neobsahuje rýchlostné radary. Kolieskové korčule - Umožní ovládať priblíženie mapy tlačidlami hlasitosti zariadenia. + Ovládať priblíženie mapy tlačidlami hlasitosti zariadenia. Tlačidlá hlasitosti na približovanie Zadajte dĺžku vášho vozidla, pretože na trase môžu byť obmedzenia pre dlhé vozidlá. - Vymazať ďalší cieľový bod + Vymazať najbližší cieľový bod Prosím zadajte názov pre bod Aktuálny cieľový bod na trase bude vymazaný. Ak je to posledný cieľ, navigácia sa zastaví. Stiahnuť mapy Wikipédia @@ -3800,8 +3800,8 @@ Invalidný vozík Invalidný vozík dopredu Motokára - Zatvorená OSM poznámka - Pre pokračovanie musíte zadať pracovné dni + OSM poznámka zatvorená + Zadať pracovné dni pre pokračovanie Trasa medzi bodmi Naplánovať trasu Pridať do stopy @@ -3824,23 +3824,21 @@ Otočiť trasu Celá stopa bude prepočítaná pomocou zvoleného profilu. Len nasledujúci úsek bude prepočítaný pomocou zvoleného profilu. - Zvoľte ako spojiť body, priamou čiarou alebo vypočítať trasu medzi nimi pomocou zvoleného profilu. + Zvoľte ako spojiť body, priamou čiarou alebo vypočítať trasu medzi nimi ako je určené ďalej. Celá stopa Ďalší úsek - Pre použitie tejto možnosti musí OsmAnd prichytiť vašu stopu na cesty v mape. -\n -\n V ďalšom kroku budete musieť zvoliť navigačný profil pre detekciu povolených ciest a hraničnú vzdialenosť pre aproximovanie vašej stopy cestami. + Ďalej, pre použitie tejto možnosti pripojte vašu stopu k najbližšej povolenej ceste s niektorým vaším navigačným profilom. Hraničná vzdialenosť Navigačný profil Zvoľte súbor stopy, pre ktorú bude pridaný nový úsek. Snímky z úrovne ulice - Naozaj chcete zatvoriť plánovanie trasy bez uloženia\? Všetky zmeny sa stratia. + Naozaj chcete zahodiť všetky zmeny v plánovanej trasy jej zatvorením\? V prípade opačného smeru Trasa zo stopy Pridať prechodný bod stopy Nasledovať stopu Zvoľte súbor stopy pre nasledovanie - Zvoľte súbor stopy pre nasledovanie, alebo nejaký importujte. + Zvoľte súbor stopy pre nasledovanie alebo nejaký importujte z vášho zariadenia. Zvoliť inú stopu Navigovať z mojej polohy k stope Bod stopy pre navigovanie @@ -3886,4 +3884,19 @@ Pokračovať v nahrávaní výletu Prosím pridajte aspoň dva body. Vykonať znova + • Vylepšená funkcia plánovania trasy: umožňuje použiť rôzne typy navigácie pre úseky trasy a začlenenie stôp +\n +\n • Nové menu pre vzhľad stôp: zvoľte farbu, hrúbku, smerové šípky, ikony štartu a cieľa +\n +\n • Zlepšená viditeľnosť bodov pre bicykle. +\n +\n • Stopy je teraz možné aktivovať, pre kontextové menu sú základnými údajmi. +\n +\n • Zlepšený algoritmus vyhľadávania +\n +\n • Zlepšené možnosti nasledovania stopy v navigácii +\n +\n • Opravené problému s importom a exportom nastavení profilov +\n +\n \ No newline at end of file From fd000b9554022a70150d894dcf3f128eb30d66e3 Mon Sep 17 00:00:00 2001 From: Softmap Date: Tue, 15 Sep 2020 23:39:06 +0000 Subject: [PATCH 15/56] Translated using Weblate (Arabic) Currently translated at 100.0% (3484 of 3484 strings) --- OsmAnd/res/values-ar/strings.xml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/OsmAnd/res/values-ar/strings.xml b/OsmAnd/res/values-ar/strings.xml index 57b4c76c7d..b64a6f63a3 100644 --- a/OsmAnd/res/values-ar/strings.xml +++ b/OsmAnd/res/values-ar/strings.xml @@ -3815,7 +3815,7 @@ عكس الطريق سيتم إعادة حساب المقطع التالي فقط باستخدام ملف التعريف المحدد. سيتم إعادة حساب المقطع التالي فقط باستخدام ملف التعريف المحدد. - حدد كيفية توصيل النقاط، بخط مستقيم، أو حساب مسار بينها مع ملف التعريف المحدد. + حدد كيفية توصيل النقاط، بخط مستقيم، أو حساب مسار بينها على النحو المحدد أدناه. مسار كامل المقطع التالي بعد ذلك ، ألقط مسارك بأقرب طريق مسموح به باستخدام أحد ملفات تعريف التنقل الخاصة بك لاستخدام هذا الخيار. @@ -3873,17 +3873,17 @@ اسم الملف الرجاء إضافة نقطتين على الأقل. إعادة - • وضع مخطط المسار المحدث يسمح باستخدام أنواع الملاحة المختلفة لكل جزء ويربط أي مسار بالطرق + • ميزة تخطيط المسار المحدثة: تسمح باستخدام أنواع الملاحة المختلفة لكل جزء وكذا اظافة طرق \n -\n• خيارات المظهر الجديدة للمسارات: تحديد اللون، السماكة ستقوم بتفعيل أسهم التوجيه و علامات البداية والنهاية +\n• قائمة مظهر جديدة للمسارات: تحديد اللون، السماكة، اظهار أسهم التوجيه، أيقونات الانطلاق والنهاية \n \n• تحسين رؤية عقد الدراجات \n -\n• قائمة السياق للمسارات بمعلومات أساسية +\n• المسارات قابلة للنقر عليها الان وقائمة سياق بمعلومات أساسية \n -\n• تحسين خوارزميات البحث +\n• خوارزميات بحث محسنة \n -\n• تم تحسين خيارات متابعة المسار أثناء الملاحة +\n• تم تحسين خيارات متابعة المسار خلال الملاحة \n \n• تم إصلاح المشكلات المتعلقة باستيراد/تصدير إعدادات الملف الشخصي \n From f630d57b605e8f508c943d3f4357483ed1ba31d1 Mon Sep 17 00:00:00 2001 From: iman Date: Tue, 15 Sep 2020 14:26:12 +0000 Subject: [PATCH 16/56] Translated using Weblate (Persian) Currently translated at 97.3% (3392 of 3484 strings) --- OsmAnd/res/values-fa/strings.xml | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/OsmAnd/res/values-fa/strings.xml b/OsmAnd/res/values-fa/strings.xml index 4cc7cc83c8..dec0c68cd6 100644 --- a/OsmAnd/res/values-fa/strings.xml +++ b/OsmAnd/res/values-fa/strings.xml @@ -3843,23 +3843,23 @@ یک فایل رد انتخاب کنید تا باز شود. تمام بَرنویسی رد - آهنگ ذخیره شده را باز کنید - ذخیره شده - لطفا حداقل دو امتیاز اضافه کنید. - آماده - "به روز شده برنامه یک عملکرد مسیر: اجازه می دهد تا از انواع مختلف پیمایش در هر بخش و گنجاندن مسیرها استفاده کنید + بازکردن رد ذخیره‌شده + ذخیره شد + لطفاً حداقل دو نقطه اضافه کنید. + ازنو + • قابلیت «طرح‌ریزی مسیر» روزآمد شد: امکان استفاده از شیوهٔ ناوبری متفاوت برای هر پاره از مسیر و در کار آوردن ردها اضافه شده است. \n -\n • منوی New Appearance برای آهنگ ها، رنگ ، ضخامت ، فلش جهت نمایش ، نمادهای شروع / پایان استفاده می شوئ +\n• منوی جدید «ظاهر» برای ردها: رنگ و ضخامت را مشخص کنید، فلش‌های جهت‌نما و نمادهای آغاز/پایان را نمایش دهید. \n -\n • بهبود دید نود های دوچرخه. +\n• پدیداری گره‌های شبکهٔ دوچرخه بهبود یافته است. \n -\n • آهنگ ها اکنون قابل لمس هستند ، دارای منوی زمینه با اطلاعات اولیه هستند. +\n• اکنون می‌توان ردها را لمس کرد و منوی زمینه با اطلاعات پایه را مشاهده کرد. \n -\n • بهبود الگوریتم های جستجو +\n• الگوریتم «جستجو» بهبود یافته است. \n -\n • گزینه های ردیابی را در پیمایش بهبود بخشید +\n• گزینه‌های «دنبال‌کردن رد» در ناوبری بهبود یافته است. \n -\n • مشکلات مربوط به واردات / صادرات تنظیمات نمایه برطرف شده است +\n• مشکلاتی مربوط به درون‌برد/برون‌برد تنظیمات پروفایل برطرف شده است. \n -\n" +\n \ No newline at end of file From 8e698a288e978ef089e0b58ef2ba9f5044300321 Mon Sep 17 00:00:00 2001 From: Ajeje Brazorf Date: Tue, 15 Sep 2020 14:00:50 +0000 Subject: [PATCH 17/56] Translated using Weblate (Sardinian) Currently translated at 99.7% (3474 of 3484 strings) --- OsmAnd/res/values-sc/strings.xml | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/OsmAnd/res/values-sc/strings.xml b/OsmAnd/res/values-sc/strings.xml index facff58683..4036899b1a 100644 --- a/OsmAnd/res/values-sc/strings.xml +++ b/OsmAnd/res/values-sc/strings.xml @@ -3783,27 +3783,27 @@ Disinstalla Orientamentu %1$s iscantzelladu - Depes torrare a allùghere pro iscantzellare de su totu sos datos de sos autovelox. + Torra a allùghere s\'aplicatzione pro iscantzellare totu sos datos de sos autovelox. Disinstalla e torra a allùghere Dillinda sa longària de su veìculu permìtida in sas àndalas. Lìmite de longària Custu dispositivu non tenet autovelox. Pàtinos in lìnia - Abìlita pro controllare su livellu de ismanniamentu cun sos butones de su volume de su dispositivu. + Controlla su livellu de ismanniamentu de sa mapa cun sos butones de su volume de su dispositivu. Butones de su volume pro s\'ismanniamentu Inserta sa longària de su veìculu tuo. Bi diant pòdere èssere unas cantas restritziones de sas àndalas pro sos veìculos longos. - Iscantzella su puntu de destinatzione imbeniente + Iscantzella su puntu de destinatzione prus a curtzu Fruni unu nùmene pro su puntu Su puntu de destinatzione atuale in s\'àndala at a èssere iscantzelladu. Si at a èssere sa destinatzione, sa navigatzione s\'at a firmare. Iscàrriga sas mapas de Wikipedia - Otene informatziones a pitzu de puntos de interesse dae Wikipedia. Est sa ghia non in lìnia tua de mantènnere in butzaca - abìlita s\'estensione Wikipedia e ispassia·ti cun sos artìculos a pitzu de sos ogetos a fùrriu de tie. + Otene informatziones a pitzu de puntos de interesse dae Wikipedia. Est sa ghia non in lìnia tua de mantènnere in butzaca - allughe s\'estensione Wikipedia e ispassia·ti cun sos artìculos a pitzu de sos ogetos a fùrriu de tie. Moto enduro Motorinu Cadira a rodas cara a in antis Cadira a rodas Go-kart Nota de OSM serrada - Depes impostare sas dies de traballu pro sighire + Imposta sas dies de traballu pro sighire Àndala intre puntos Pranìfica un\'àndala Annanghe a una rasta @@ -3826,7 +3826,7 @@ Fùrria s\'àndala Sa rasta intrea at a èssere torrada a calculare impreende su profilu ischertadu. Petzi su segmentu imbeniente at a èssere torradu a calculare impreende su profilu ischertadu. - Ischerta comente connètere sos puntos: cun una lìnia reta o calculende un\'àndala intre issos cun su profilu ischertadu. + Ischerta comente connètere sos puntos: cun una lìnia reta o calculende un\'àndala intre issos comente dislindadu inoghe in suta. Rasta intrea Segmentu imbeniente Pro impreare custa optzione OsmAnd tenet bisòngiu de alliniare sa rasta tua a sos caminos de sa mapa. @@ -3836,7 +3836,7 @@ Profilu de navigatzione Ischerta unu documentu de rasta in ue annànghere su segmentu nou. Fotografias a livellu de sas carreras - Ses seguru de chèrrere serrare sa pianificatzione de s\'àndala chene sarvare\? As a pèrdere totu sas modìficas. + Ses seguru de chèrrere serrare sa pianificatzione de s\'àndala e pèrdere totu sas modìficas\? In casu de diretzione furriada Rastas Càrriga sa rasta in unu documentu GPX @@ -3859,7 +3859,7 @@ Àndala de una rasta Sighi sa rasta Issèbera su documentu de sa rasta de sighire - Issèbera su documentu de sa rasta de sighire, o importa·nde unu. + Issèbera su documentu de sa rasta de sighire o importa·lu dae su dispositivu tuo. Ischerta un\'àtera rasta Nàviga dae sa positzione mea a sa rasta Puntu de sa rasta de navigare From 5c978babf2d29e77080f6457c8870bec41d80b88 Mon Sep 17 00:00:00 2001 From: ihor_ck Date: Tue, 15 Sep 2020 12:15:48 +0000 Subject: [PATCH 18/56] Translated using Weblate (Ukrainian) Currently translated at 100.0% (3823 of 3823 strings) --- OsmAnd/res/values-uk/phrases.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/OsmAnd/res/values-uk/phrases.xml b/OsmAnd/res/values-uk/phrases.xml index 086eba5d78..1bcbb91957 100644 --- a/OsmAnd/res/values-uk/phrases.xml +++ b/OsmAnd/res/values-uk/phrases.xml @@ -3830,4 +3830,5 @@ Дошка відправлень Поповнення питної води Невеликі електроприлади + Вулик \ No newline at end of file From 17951876c7f823fd156609e45cb473efa6d249c6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Priit=20J=C3=B5er=C3=BC=C3=BCt?= Date: Tue, 15 Sep 2020 15:55:40 +0000 Subject: [PATCH 19/56] Translated using Weblate (Estonian) Currently translated at 100.0% (3823 of 3823 strings) --- OsmAnd/res/values-et/phrases.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/OsmAnd/res/values-et/phrases.xml b/OsmAnd/res/values-et/phrases.xml index 5ea981e678..226d25f3ad 100644 --- a/OsmAnd/res/values-et/phrases.xml +++ b/OsmAnd/res/values-et/phrases.xml @@ -3824,4 +3824,5 @@ Väljuvate reiside tabloo Joogivee täitmine Väikesed elektriseadmed + Mesitaru \ No newline at end of file From 3ca9513d4ae8217f47d2a787ea5ddab7242f6d0e Mon Sep 17 00:00:00 2001 From: Franco Date: Tue, 15 Sep 2020 17:52:26 +0000 Subject: [PATCH 20/56] Translated using Weblate (Spanish (Argentina)) Currently translated at 100.0% (3484 of 3484 strings) --- OsmAnd/res/values-es-rAR/strings.xml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/OsmAnd/res/values-es-rAR/strings.xml b/OsmAnd/res/values-es-rAR/strings.xml index 4eed292de2..6b55481e6e 100644 --- a/OsmAnd/res/values-es-rAR/strings.xml +++ b/OsmAnd/res/values-es-rAR/strings.xml @@ -3829,7 +3829,7 @@ Ruta inversa Recalcular sólo el siguiente segmento usando el perfil elegido. Recalcular toda la traza usando el perfil elegido. - Marca cómo conectar los puntos, con una línea recta o calcular una ruta entre ellos con el perfil elegido. + Marca cómo conectar los puntos, con una línea recta o calcular una ruta entre ellos como se detalla a continuación. Traza completa Siguiente segmento A continuación, ajusta la traza al camino permitido más cercano con un perfil de navegación. @@ -3889,13 +3889,13 @@ %s archivo(s) de trazas marcado(s) Añade al menos dos puntos. Rehacer - • Se ha actualizado el modo «Planificar ruta»: ahora permite usar diferentes tipos de navegación para cada segmento y adjunta cualquier traza a los caminos + • Se ha actualizado la función «Planificar ruta»: permite utilizar diferentes tipos de navegación por segmento y la inclusión de trazas \n -\n • Nuevas opciones en el aspecto de las trazas: elegir el color, cambiar el grosor de las flechas de dirección y las marcas de inicio/fin. +\n • Nuevo menú con el aspecto de las trazas: elegir el color, el grosor, mostrar las flechas de dirección y los iconos de inicio/fin. \n -\n • Mejoras en la visibilidad de los nodos de bicicleta +\n • Mejoras en la visibilidad de los nodos de bicicleta. \n -\n • Menú contextual con información básica para las trazas +\n • Las trazas ahora se pueden pulsar, contiene un menú contextual con información básica. \n \n • Algoritmos de búsqueda mejorados \n From 30a61cd6a7403d9ecf0b71e97ac9156928be79bb Mon Sep 17 00:00:00 2001 From: Franco Date: Tue, 15 Sep 2020 17:53:13 +0000 Subject: [PATCH 21/56] Translated using Weblate (Spanish (Argentina)) Currently translated at 100.0% (3823 of 3823 strings) --- OsmAnd/res/values-es-rAR/phrases.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/OsmAnd/res/values-es-rAR/phrases.xml b/OsmAnd/res/values-es-rAR/phrases.xml index cfe9475d1e..e1839d42f2 100644 --- a/OsmAnd/res/values-es-rAR/phrases.xml +++ b/OsmAnd/res/values-es-rAR/phrases.xml @@ -3849,4 +3849,5 @@ Tablero de partidas Recarga de agua potable Pequeños electrodomésticos + Panal de abejas \ No newline at end of file From 36ef16b28a2d9b99ed1a2fd2faeada725a0bf4cb Mon Sep 17 00:00:00 2001 From: Eduardo Addad de Oliveira Date: Tue, 15 Sep 2020 22:06:47 +0000 Subject: [PATCH 22/56] Translated using Weblate (Portuguese (Brazil)) Currently translated at 100.0% (3484 of 3484 strings) --- OsmAnd/res/values-pt-rBR/strings.xml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/OsmAnd/res/values-pt-rBR/strings.xml b/OsmAnd/res/values-pt-rBR/strings.xml index ea83d5b1b6..1182d20a65 100644 --- a/OsmAnd/res/values-pt-rBR/strings.xml +++ b/OsmAnd/res/values-pt-rBR/strings.xml @@ -3819,7 +3819,7 @@ Rota reversa A trilha inteira será recalculada usando o perfil selecionado. Apenas o próximo segmento será recalculado usando o perfil selecionado. - Selecione como conectar pontos, com uma linha reta, ou calcular uma rota entre eles com o perfil selecionado. + Selecione como conectar pontos, por uma linha reta, ou calcular uma rota entre eles conforme especificado abaixo. Trilha inteira Próximo segmento Para usar esta opção, OsmAnd precisa ajustar sua trilha para as estradas do mapa. @@ -3849,7 +3849,7 @@ Escolha o arquivo de trilha a seguir Escolha o arquivo de trilha a seguir ou importe-o de seu dispositivo. Selecionar outra trilha - Navegue de minha localização até a trilha + Navegue da minha posição até a trilha Ponto da trilha para navegar Início da pista Ponto próximo @@ -3881,13 +3881,13 @@ está salvo Adicione pelo menos dois pontos. Refazer - "• O modo de rota de plano atualizado permite o uso de diferentes tipos de navegação para cada segmento e anexa qualquer trilha às estradas + "• Função de planejamento de rota atualizada: permite o uso de diferentes tipos de navegação por segmento e a inclusão de trilhas \n -\n • Novas opções de aparência para trilhas: selecione a cor, a espessura, ative as setas de direção e as marcas de início/fim +\n • Novo menu de aparência para trilhas: selecione cor, espessura, setas de direção de exibição, ícones de início / término \n -\n • Melhor visibilidade dos nós da bicicleta +\n • Melhor visibilidade dos nós da bicicleta. \n -\n • Menu de contexto para trilhas com informações básicas +\n • As trilhas agora podem ser tocadas, têm menu de contexto com informações básicas. \n \n • Algoritmos de pesquisa aprimorados \n From 697f96e7b7b5c63a6945253d42c29c1f25ef2874 Mon Sep 17 00:00:00 2001 From: Eduardo Addad de Oliveira Date: Tue, 15 Sep 2020 22:08:09 +0000 Subject: [PATCH 23/56] Translated using Weblate (Portuguese (Brazil)) Currently translated at 100.0% (3823 of 3823 strings) --- OsmAnd/res/values-pt-rBR/phrases.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/OsmAnd/res/values-pt-rBR/phrases.xml b/OsmAnd/res/values-pt-rBR/phrases.xml index 27475442c8..c6eea35aa5 100644 --- a/OsmAnd/res/values-pt-rBR/phrases.xml +++ b/OsmAnd/res/values-pt-rBR/phrases.xml @@ -3842,4 +3842,5 @@ Quadro de partidas Recarga de água potável Pequenos aparelhos elétricos + Colmeia \ No newline at end of file From ea819ddb1c7169943e3602154de21550a3d6b301 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Priit=20J=C3=B5er=C3=BC=C3=BCt?= Date: Tue, 15 Sep 2020 15:51:23 +0000 Subject: [PATCH 24/56] Translated using Weblate (Estonian) Currently translated at 98.4% (3429 of 3484 strings) --- OsmAnd/res/values-et/strings.xml | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/OsmAnd/res/values-et/strings.xml b/OsmAnd/res/values-et/strings.xml index b8c7fbfd34..2c829dcfd0 100644 --- a/OsmAnd/res/values-et/strings.xml +++ b/OsmAnd/res/values-et/strings.xml @@ -166,7 +166,7 @@ Näita OSM märkmed Peida OSM Notes Täname sind tagasiside eest - Punkti või teed ei leitud. + Sõlme või teed ei leidunud. Otsingutulemused puuduvad\? \nJaga tagasisidet Laienda otsingu raadiust kuni %1$s @@ -3738,4 +3738,19 @@ Kiirtegevusi saad eksportida või importida koos rakenduse profiilidega. Kas sa oled kindel, et soovid pöördumatult kustutada %d kiirtegevust\? Vali kas soovid ühendada punkte sirge joonega või arvutada nendevahelist teekonda vastavalt oma valitud profiilile. + • Uuendatud teekonnaplaneerija: võimaldab kasutada igal segmendil erinevat liikumisviisi ning radade kaasamist +\n +\n • Uus radade kujunduse seadistamise menüü: valida saad värve, joone paksust, suunanoolte kuvamist ning alguse ja lõpu ikoone +\n +\n • Rattasõlmede parandatud nähtavus +\n +\n • Radasid saad nüüd puudutada, misjärel kuvatakse põhiteabega kontekstimenüü +\n +\n • Parandatud on otsingualgoritme +\n +\n • Parandatud raja jälgimise valikud navigeerimisel +\n +\n • Parandatud on profiili seadistuste impordi ja ekspordiga seotud vead +\n +\n \ No newline at end of file From 68598ced91231d845fc1140b8fb5a7e02b6c7513 Mon Sep 17 00:00:00 2001 From: ssantos Date: Tue, 15 Sep 2020 16:44:44 +0000 Subject: [PATCH 25/56] Translated using Weblate (Portuguese) Currently translated at 100.0% (3823 of 3823 strings) --- OsmAnd/res/values-pt/phrases.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/OsmAnd/res/values-pt/phrases.xml b/OsmAnd/res/values-pt/phrases.xml index 744b9de0ca..0eb960c2f2 100644 --- a/OsmAnd/res/values-pt/phrases.xml +++ b/OsmAnd/res/values-pt/phrases.xml @@ -3827,4 +3827,5 @@ Quadro de partidas Reabastecimento de água potável Pequenos aparelhos elétricos + Colmeia \ No newline at end of file From 196fb9cb1f360b9a5fcb0e059b5cbcbaa9096301 Mon Sep 17 00:00:00 2001 From: Mitsuha Miamizu Date: Tue, 15 Sep 2020 12:28:13 +0000 Subject: [PATCH 26/56] Translated using Weblate (Persian) Currently translated at 29.2% (78 of 267 strings) Translation: OsmAnd/Telegram Translate-URL: https://hosted.weblate.org/projects/osmand/telegram/fa/ --- OsmAnd-telegram/res/values-fa/strings.xml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/OsmAnd-telegram/res/values-fa/strings.xml b/OsmAnd-telegram/res/values-fa/strings.xml index 824443b2c5..af2e8f441c 100644 --- a/OsmAnd-telegram/res/values-fa/strings.xml +++ b/OsmAnd-telegram/res/values-fa/strings.xml @@ -73,4 +73,9 @@ یکاهای طول را تغییر دهید. یکاهای طول ظاهر + آخرین پاسخ:٪ 1 $ s پیش + آخرین به روزرسانی از تلگرام:٪ 1 $ s پیش + آخرین پاسخ: %1$s + آخرین به روز رسانی در تلگرام:%1$s + اشتباه بودن \ No newline at end of file From 16cffe3bc6b0f04e7fffbacdeeae86686d4c29be Mon Sep 17 00:00:00 2001 From: xmd5a Date: Wed, 16 Sep 2020 10:14:07 +0300 Subject: [PATCH 27/56] Add phrase --- OsmAnd/res/values/phrases.xml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/OsmAnd/res/values/phrases.xml b/OsmAnd/res/values/phrases.xml index cd482756ec..3f4394578a 100644 --- a/OsmAnd/res/values/phrases.xml +++ b/OsmAnd/res/values/phrases.xml @@ -4255,4 +4255,7 @@ Beehive + Nut store + + From 137faffe3b09f2bd76f0b5d5c36ee8288cf4f22e Mon Sep 17 00:00:00 2001 From: sergosm Date: Wed, 16 Sep 2020 10:55:15 +0300 Subject: [PATCH 28/56] Type_for_not_selected_profile --- OsmAnd/src/net/osmand/plus/activities/MapActivityActions.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OsmAnd/src/net/osmand/plus/activities/MapActivityActions.java b/OsmAnd/src/net/osmand/plus/activities/MapActivityActions.java index fe3c067e9e..83a470b903 100644 --- a/OsmAnd/src/net/osmand/plus/activities/MapActivityActions.java +++ b/OsmAnd/src/net/osmand/plus/activities/MapActivityActions.java @@ -735,7 +735,7 @@ public class MapActivityActions implements DialogProvider { for (final ApplicationMode appMode : activeModes) { if (appMode.isCustomProfile()) { modeDescription = String.format(app.getString(R.string.profile_type_descr_string), - Algorithms.capitalizeFirstLetterAndLowercase(appMode.getParent().toHumanString())); + Algorithms.capitalizeFirstLetterAndLowercase(appMode.getRoutingProfile())); } else { modeDescription = getString(R.string.profile_type_base_string); } From d61d76f558032f7f62191d4e0c697cd30a9ea9c7 Mon Sep 17 00:00:00 2001 From: Hinagiku Zeppeki Date: Wed, 16 Sep 2020 08:08:25 +0000 Subject: [PATCH 29/56] Translated using Weblate (Japanese) Currently translated at 98.1% (3420 of 3484 strings) --- OsmAnd/res/values-ja/strings.xml | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/OsmAnd/res/values-ja/strings.xml b/OsmAnd/res/values-ja/strings.xml index 843dada170..636fc3995b 100644 --- a/OsmAnd/res/values-ja/strings.xml +++ b/OsmAnd/res/values-ja/strings.xml @@ -472,7 +472,7 @@ POIの更新は利用できません POI 変更 他のタグは全て保存されました コミット - 削除する + 削除 フィルタ 名前をつけて保存 選択したフィルタを削除しますか? @@ -3820,7 +3820,7 @@ POIの更新は利用できません 長さ制限 ベアリング %1$sを削除しました - スピードカメラのデータを完全に削除するには、再起動が必要です。 + アプリを再起動し、すべてのスピードカメラデータを削除します。 アンインストールして再起動 このアプリには、スピードカメラに関する情報はありません。 インラインスケート @@ -3835,7 +3835,7 @@ POIの更新は利用できません 経路 経路 経路 - GPX + REC GPXファイルへの経路ログ ルート経路 経路ファイルを追加 @@ -3875,13 +3875,13 @@ POIの更新は利用できません 保存した経路を開く 少なくとも2つの地点を追加してください。 繰り返し - • アップデートで追加されたルート計画モードは、セグメントごとに異なるナビゲーションタイプを使用でき、おおまかな指定を実際の道路に沿って反映可能に。 + • ルート計画機能を更新 : セグメントごとに異なるナビゲーションタイプを使用し、経路として反映することが可能に \n -\n• 経路の新しい外観オプション : 色、厚さを選択し、方向矢印のオン、マークの開始/終了など +\n• 経路の新しい外観オプション : 色、太さ、表示方向矢印、開始/終了アイコン選択 \n -\n• 自転車ノードの可視性の向上 +\n• 自転車ノードの視認性を向上 \n -\n• 基本情報を含む経路のコンテキストメニュー追加 +\n• 経路のタップで、基本情報を含むコンテキストメニューの表示 \n \n• 検索アルゴリズムの改善 \n @@ -3890,4 +3890,10 @@ POIの更新は利用できません \n• プロファイル設定のインポート/エクスポートに関する問題を修正 \n \n + 簡略化された経路 + ルートライン(経路)のみが保存され、経由地点は削除されます。 + %s個の経路ファイルが選択されました + ファイル名 + (最近使用したアプリを介して) OsmAndを終了すると、GPXの記録が一時停止されます(バックグラウンドサービスインジケーターがAndroid通知バーから消えます。) + 一般的な経路記録の記録間隔を定義します(マップ画面の\'GPX\'ボタンを使用) \ No newline at end of file From 4a7f50b44e769967d77352ac3f4a8b03254712c8 Mon Sep 17 00:00:00 2001 From: Deelite <556xxy@gmail.com> Date: Wed, 16 Sep 2020 07:56:54 +0000 Subject: [PATCH 30/56] Translated using Weblate (Russian) Currently translated at 99.8% (3478 of 3484 strings) --- OsmAnd/res/values-ru/strings.xml | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/OsmAnd/res/values-ru/strings.xml b/OsmAnd/res/values-ru/strings.xml index ea571d0bac..bfceebc942 100644 --- a/OsmAnd/res/values-ru/strings.xml +++ b/OsmAnd/res/values-ru/strings.xml @@ -73,8 +73,8 @@ Поиск почтового индекса Записать аудио Записать видео - Фотозаметка - Заметка OSM + Сделать фото + Добавить заметку OSM Функции парковки Благодарим вас за покупку платной версии OsmAnd. Не показывать сообщения при запуске @@ -233,11 +233,11 @@ Сохранить фильтр Удалить фильтр Новый фильтр - Изменение позиции + Изменить положение Текущий путь Навигация OsmAnd Live Уровень заряда батареи - Переместите карту, чтобы изменить положение маркера + Двигайте карту, чтобы изменить позицию маркера Магнитный пеленг Курсовой угол @@ -317,8 +317,8 @@ Открыть внешний проигрыватель Удалить эту запись? недоступно - Аудиозаметка - Видеозаметка + Записать аудио + Записать видео Слой аудиозаписей Запись не может быть воспроизведена. Удалить запись @@ -466,7 +466,7 @@ Неопределённо Текущий центр карты Начало: - Поиск рядом + Искать рядом Маршрут успешно сохранён в «%1$s». Имя файла: Файл с таким именем уже существует. @@ -738,7 +738,7 @@ Загрузить детальные карты регионов Поиск сигнала… Искать вокруг текущего центра карты - Поиск рядом + Искать рядом По умолчанию Портрет Ландшафт @@ -2170,7 +2170,7 @@ Не пересчитывать маршрут при обратном направлении движения Предотвращает автоматический пересчёт маршрута при обратном направлении движения. Пункт назначения не задан - Звуковая индикация направления + Озвучивать направление Индицировать звуком направление на целевую точку. Тактильная индикация направления Индицировать вибрацией направление на целевую точку. @@ -3846,7 +3846,7 @@ Добавить файлы треков Импортируйте или запишите файлы треков Добавить путевую точку - Добавить к маршруту + Добавить точку к треку Запись поездки Сохранить как файл трека Следовать по маршруту From f4e82e6cac2a973cac4ead81a3a56ce4d5fe4f81 Mon Sep 17 00:00:00 2001 From: Zmicer Turok Date: Wed, 16 Sep 2020 05:34:47 +0000 Subject: [PATCH 31/56] Translated using Weblate (Belarusian) Currently translated at 99.9% (3483 of 3484 strings) --- OsmAnd/res/values-be/strings.xml | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/OsmAnd/res/values-be/strings.xml b/OsmAnd/res/values-be/strings.xml index 47399cfdf0..c80bd4dfe0 100644 --- a/OsmAnd/res/values-be/strings.xml +++ b/OsmAnd/res/values-be/strings.xml @@ -3609,7 +3609,7 @@ Ліміт даўжыні Арыентацыя Выдалена: %1$s - Перазапуск патрабуецца для поўнага выдалення даных камер кантролю хуткасці. + Перазапусціце праграму для поўнага выдалення даных камер кантролю хуткасці. Кіраванне ўзроўнем маштабавання мапы пры дапамозе кнопак рэгулявання гучнасці. Інфармацыя пра славутасці з Вікіпедыі. Гэта ваш кішэнны даведнік - уключыце ўбудову вікіпедыі і чытайце артыкулы пра аб’екты вакол вас. Матацыкл Эндура @@ -3699,22 +3699,20 @@ Зваротны маршрут Увесь след будзе пералічаны з выкарыстаннем абранага профілю. Толькі наступны сегмент будзе пералічаны паводле абранага профілю. - Абярыце спосаб злучэння пунктаў. Варыянты: прамая лінія; разлік маршруту паводле абранага профілю. + Абярыце спосаб злучэння пунктаў. Варыянты: прамая лінія; разлік маршруту як вызначана ніжэй. Увесь след Наступны сегмент - Для выкарыстання гэтага параметру OsmAnd пракладзе ваш след па дарогах. -\n -\n Пасля вам патрэбна абраць профіль навігацыі для вызначэння маршруту з улікам параметраў і абмежаванняў гэтага профілю. + Пасля вам патрэбна абраць профіль навігацыі для вызначэння маршруту з улікам параметраў і абмежаванняў гэтага профілю. Максімальная дыстанцыя Профіль навігацыі Абраць файл следу, да якога будзе дададзены новы сегмент. Выявы на ўзроўні вуліц - Сапраўды закрыць план маршруту без захавання\? Усе змены страцяцца. + Усе змены страцяцца. Закрыць план маршруту\? У выпадку адваротнага кірунку Маршрут следу Кіравацца следу Абярыце файл следу - Абярыце альбо імпартуйце файл следу. + Абярыце альбо імпартуйце файл следу са сваёй прылады. Абраць іншы след Перайдзіце ад маёй пазіцыі да следу Пункт следу для навігацыі From 6022680ec60b1124f70fedf57a9f55c7ece2fecf Mon Sep 17 00:00:00 2001 From: Zmicer Turok Date: Wed, 16 Sep 2020 05:31:28 +0000 Subject: [PATCH 32/56] Translated using Weblate (Belarusian) Currently translated at 100.0% (3823 of 3823 strings) --- OsmAnd/res/values-be/phrases.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/OsmAnd/res/values-be/phrases.xml b/OsmAnd/res/values-be/phrases.xml index c1811632b4..b801ecedb5 100644 --- a/OsmAnd/res/values-be/phrases.xml +++ b/OsmAnd/res/values-be/phrases.xml @@ -3842,4 +3842,5 @@ Рэальны час Затрымка Маленькія электрапрыборы + Вулей \ No newline at end of file From 0db1f3e755077dd9acc14198d1fcdcba4fb65eec Mon Sep 17 00:00:00 2001 From: Jeff Huang Date: Wed, 16 Sep 2020 06:31:32 +0000 Subject: [PATCH 33/56] Translated using Weblate (Chinese (Traditional)) Currently translated at 100.0% (3484 of 3484 strings) --- OsmAnd/res/values-zh-rTW/strings.xml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/OsmAnd/res/values-zh-rTW/strings.xml b/OsmAnd/res/values-zh-rTW/strings.xml index 6bed71474e..33b644b362 100644 --- a/OsmAnd/res/values-zh-rTW/strings.xml +++ b/OsmAnd/res/values-zh-rTW/strings.xml @@ -3821,7 +3821,7 @@ 反向路線 整個軌跡都會使用選定的設定檔重新計算。 僅下一個片段會使用選定的設定檔重新計算。 - 選取如何連接點,用直線或以選定的設定檔計算其間的路徑。 + 選取如何連接點,透過直線或以下面選定的方法計算其間的路徑。 整個軌道 下一段 接下來,使用您其中一個導航設定檔來將路線貼齊到最近可用的道路上以使用此選項。 @@ -3881,13 +3881,13 @@ 已儲存 請至少新增兩個點。 重做 - • 更新的規劃路線模式允許對不同路段使用不同的導航類型,並可將任何軌跡附加到道路上 + • 更新「規劃路線」功能:允許每個路段使用不同的導航類型並包含軌跡 \n -\n • 新的軌跡外觀選項:選取顏色、厚度、開啟方向箭頭與開始/結束標記 +\n • 新的軌跡外觀選項:選取顏色、厚度、開啟方向箭頭與開始/結束圖示 \n \n • 改善自行車節點的能見度 \n -\n • 有基本資訊的軌跡情境選單 +\n • 軌跡現在是可點擊的,且有包含基本資訊的內容選單 \n \n • 改進了搜尋演算法 \n From 1e278be5c69fbe2b1f5b4cc2f13342d7cea8d548 Mon Sep 17 00:00:00 2001 From: Jeff Huang Date: Wed, 16 Sep 2020 06:33:04 +0000 Subject: [PATCH 34/56] Translated using Weblate (Chinese (Traditional)) Currently translated at 100.0% (3823 of 3823 strings) --- OsmAnd/res/values-zh-rTW/phrases.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/OsmAnd/res/values-zh-rTW/phrases.xml b/OsmAnd/res/values-zh-rTW/phrases.xml index c078b2c6e7..352282d071 100644 --- a/OsmAnd/res/values-zh-rTW/phrases.xml +++ b/OsmAnd/res/values-zh-rTW/phrases.xml @@ -3841,4 +3841,5 @@ 時刻表 飲用水補充 小電器 + 蜂箱 \ No newline at end of file From a11dd191ae81183c4749308992b8daae5127a55d Mon Sep 17 00:00:00 2001 From: max-klaus Date: Wed, 16 Sep 2020 12:12:20 +0300 Subject: [PATCH 35/56] Fix latLon formatting in search --- .../net/osmand/search/core/SearchCoreFactory.java | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/OsmAnd-java/src/main/java/net/osmand/search/core/SearchCoreFactory.java b/OsmAnd-java/src/main/java/net/osmand/search/core/SearchCoreFactory.java index a4916d4187..360fafbdf9 100644 --- a/OsmAnd-java/src/main/java/net/osmand/search/core/SearchCoreFactory.java +++ b/OsmAnd-java/src/main/java/net/osmand/search/core/SearchCoreFactory.java @@ -33,6 +33,7 @@ import net.osmand.util.LocationParser.ParsedOpenLocationCode; import net.osmand.util.MapUtils; import java.io.IOException; +import java.text.DecimalFormat; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; @@ -1407,6 +1408,7 @@ public class SearchCoreFactory { private LatLon olcPhraseLocation; private ParsedOpenLocationCode cachedParsedCode; private final List citySubTypes = Arrays.asList("city", "town", "village"); + private final DecimalFormat latLonFormatter = new DecimalFormat("#.0####"); public SearchLocationAndUrlAPI() { super(ObjectType.LOCATION, ObjectType.PARTIAL_LOCATION); @@ -1498,7 +1500,7 @@ public class SearchCoreFactory { sp.priority = SEARCH_LOCATION_PRIORITY; sp.object = sp.location = ll; - sp.localeName = ((float) sp.location.getLatitude()) + ", "; + sp.localeName = formatLatLon(sp.location.getLatitude()) + ", "; sp.objectType = ObjectType.PARTIAL_LOCATION; resultMatcher.publish(sp); } @@ -1510,7 +1512,7 @@ public class SearchCoreFactory { SearchResult sp = new SearchResult(phrase); sp.priority = SEARCH_LOCATION_PRIORITY; sp.object = sp.location = l; - sp.localeName = ((float) sp.location.getLatitude()) + ", " + ((float) sp.location.getLongitude()); + sp.localeName = formatLatLon(sp.location.getLatitude()) + ", " + formatLatLon(sp.location.getLongitude()); sp.objectType = ObjectType.LOCATION; sp.wordsSpan = lw; resultMatcher.publish(sp); @@ -1525,7 +1527,7 @@ public class SearchCoreFactory { sp.object = pnt; sp.wordsSpan = text; sp.location = new LatLon(pnt.getLatitude(), pnt.getLongitude()); - sp.localeName = ((float)pnt.getLatitude()) +", " + ((float) pnt.getLongitude()); + sp.localeName = formatLatLon(pnt.getLatitude()) +", " + formatLatLon(pnt.getLongitude()); if (pnt.getZoom() > 0) { sp.preferredZoom = pnt.getZoom(); } @@ -1555,6 +1557,10 @@ public class SearchCoreFactory { } return cachedParsedCode == null ? SEARCH_LOCATION_PRIORITY : SEARCH_MAX_PRIORITY; } + + private String formatLatLon(double latLon) { + return latLonFormatter.format(latLon); + } } private static String stripBraces(String localeName) { From 8403fbf0623a852396f17ebce42ec73239f61345 Mon Sep 17 00:00:00 2001 From: simon Date: Wed, 16 Sep 2020 12:29:38 +0300 Subject: [PATCH 36/56] executor pla a route bug fix --- .../main/java/net/osmand/router/RoutePlannerFrontEnd.java | 5 ++++- OsmAnd/src/net/osmand/plus/routing/GpxApproximator.java | 7 ++++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/OsmAnd-java/src/main/java/net/osmand/router/RoutePlannerFrontEnd.java b/OsmAnd-java/src/main/java/net/osmand/router/RoutePlannerFrontEnd.java index 5aefb2ac44..663c9ea384 100644 --- a/OsmAnd-java/src/main/java/net/osmand/router/RoutePlannerFrontEnd.java +++ b/OsmAnd-java/src/main/java/net/osmand/router/RoutePlannerFrontEnd.java @@ -243,6 +243,9 @@ public class RoutePlannerFrontEnd { start = gpxPoints.get(0); } while (start != null && !gctx.ctx.calculationProgress.isCancelled) { + if (Thread.currentThread().isInterrupted()) { + return null; + } double routeDist = gctx.MAXIMUM_STEP_APPROXIMATION; GpxPoint next = findNextGpxPointWithin(gctx, gpxPoints, start, routeDist); boolean routeFound = false; @@ -256,7 +259,7 @@ public class RoutePlannerFrontEnd { if (routeFound) { // route is found - cut the end of the route and move to next iteration // start.stepBackRoute = new ArrayList(); -// boolean stepBack = true; +// boolean stepBack = true; boolean stepBack = stepBackAndFindPrevPointInRoute(gctx, gpxPoints, start, next); if (!stepBack) { // not supported case (workaround increase MAXIMUM_STEP_APPROXIMATION) diff --git a/OsmAnd/src/net/osmand/plus/routing/GpxApproximator.java b/OsmAnd/src/net/osmand/plus/routing/GpxApproximator.java index 7e6b089620..61d8408fe6 100644 --- a/OsmAnd/src/net/osmand/plus/routing/GpxApproximator.java +++ b/OsmAnd/src/net/osmand/plus/routing/GpxApproximator.java @@ -22,6 +22,7 @@ import org.apache.commons.logging.Log; import java.io.IOException; import java.util.ArrayList; import java.util.List; +import java.util.concurrent.Future; import java.util.concurrent.LinkedBlockingQueue; import java.util.concurrent.ThreadPoolExecutor; import java.util.concurrent.TimeUnit; @@ -44,6 +45,7 @@ public class GpxApproximator { private ThreadPoolExecutor singleThreadedExecutor; private GpxApproximationProgressCallback approximationProgress; + private Future currentApproximationTask; public interface GpxApproximationProgressCallback { @@ -152,7 +154,10 @@ public class GpxApproximator { this.gctx = gctx; startProgress(); updateProgress(gctx); - singleThreadedExecutor.submit(new Runnable() { + if (currentApproximationTask != null) { + currentApproximationTask.cancel(true); + } + currentApproximationTask = singleThreadedExecutor.submit(new Runnable() { @Override public void run() { try { From f03f30469f4ef318903f7efc92b74431aed81113 Mon Sep 17 00:00:00 2001 From: Vitaliy Date: Wed, 16 Sep 2020 13:18:56 +0300 Subject: [PATCH 37/56] Remove unnecessary changes --- OsmAnd/res/layout/custom_color_picker.xml | 9 ++- OsmAnd/res/values/styles.xml | 15 ----- OsmAnd/src/net/osmand/AndroidUtils.java | 23 -------- .../osmand/plus/base/ContextMenuFragment.java | 58 ++++++++----------- .../plus/base/OnNeedScrollUiAdapter.java | 5 -- .../plus/base/OnVisibilityChangeListener.java | 5 -- .../plus/track/CustomColorBottomSheet.java | 4 +- .../plus/track/TrackAppearanceFragment.java | 44 +++++++------- .../osmand/plus/track/TrackColoringCard.java | 41 +++++++++++-- .../net/osmand/plus/track/TrackWidthCard.java | 34 ++++------- 10 files changed, 102 insertions(+), 136 deletions(-) delete mode 100644 OsmAnd/src/net/osmand/plus/base/OnNeedScrollUiAdapter.java delete mode 100644 OsmAnd/src/net/osmand/plus/base/OnVisibilityChangeListener.java diff --git a/OsmAnd/res/layout/custom_color_picker.xml b/OsmAnd/res/layout/custom_color_picker.xml index 9e6c1bb9b1..f2133e410b 100644 --- a/OsmAnd/res/layout/custom_color_picker.xml +++ b/OsmAnd/res/layout/custom_color_picker.xml @@ -34,20 +34,23 @@ ?android:textColorSecondary - - - - - - - diff --git a/OsmAnd/src/net/osmand/AndroidUtils.java b/OsmAnd/src/net/osmand/AndroidUtils.java index 87ade44343..3dea16fb15 100644 --- a/OsmAnd/src/net/osmand/AndroidUtils.java +++ b/OsmAnd/src/net/osmand/AndroidUtils.java @@ -63,7 +63,6 @@ import androidx.core.view.ViewCompat; import net.osmand.plus.OsmandApplication; import net.osmand.plus.R; -import net.osmand.plus.base.OnVisibilityChangeListener; import net.osmand.util.Algorithms; import java.io.File; @@ -603,12 +602,6 @@ public class AndroidUtils { return coordinates; } - public static boolean isPointInsideView(@NonNull View view, float x, float y) { - boolean matchVertical = y >= view.getY() && y <= view.getY() + view.getHeight(); - boolean mathHorizontal = x >= view.getX() && x <= view.getX() + view.getWidth(); - return matchVertical && mathHorizontal; - } - public static void enterToFullScreen(Activity activity, View view) { if (Build.VERSION.SDK_INT >= 21) { requestLayout(view); @@ -896,20 +889,4 @@ public class AndroidUtils { } return builder; } - - public static void addVisibilityChangeListener(final @NonNull View parent, - final @NonNull View v, - final @NonNull OnVisibilityChangeListener listener) { - parent.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { - int visibility = v.getVisibility(); - - @Override - public void onGlobalLayout() { - if (visibility != v.getVisibility()) { - visibility = v.getVisibility(); - listener.onVisibilityChange(visibility); - } - } - }); - } } \ No newline at end of file diff --git a/OsmAnd/src/net/osmand/plus/base/ContextMenuFragment.java b/OsmAnd/src/net/osmand/plus/base/ContextMenuFragment.java index b59e20202a..e1436bb400 100644 --- a/OsmAnd/src/net/osmand/plus/base/ContextMenuFragment.java +++ b/OsmAnd/src/net/osmand/plus/base/ContextMenuFragment.java @@ -24,7 +24,6 @@ import android.view.animation.DecelerateInterpolator; import android.widget.FrameLayout; import android.widget.LinearLayout; import android.widget.OverScroller; -import android.widget.ScrollView; import android.widget.Toast; import androidx.annotation.IdRes; @@ -47,10 +46,11 @@ import net.osmand.plus.activities.MapActivity; import net.osmand.plus.helpers.AndroidUiHelper; import net.osmand.plus.mapcontextmenu.InterceptorLinearLayout; import net.osmand.plus.views.controls.HorizontalSwipeConfirm; +import net.osmand.plus.views.controls.SingleTapConfirm; import static net.osmand.plus.mapcontextmenu.MapContextMenuFragment.CURRENT_Y_UNDEFINED; -public abstract class ContextMenuFragment extends BaseOsmAndFragment implements OnNeedScrollUiAdapter { +public abstract class ContextMenuFragment extends BaseOsmAndFragment { public static class MenuState { public static final int HEADER_ONLY = 1; @@ -68,7 +68,7 @@ public abstract class ContextMenuFragment extends BaseOsmAndFragment implements private OnLayoutChangeListener containerLayoutListener; private View topShadow; private ViewGroup topView; - private ScrollView bottomScrollView; + private View bottomScrollView; private LinearLayout cardsContainer; private FrameLayout bottomContainer; @@ -248,7 +248,7 @@ public abstract class ContextMenuFragment extends BaseOsmAndFragment implements return bottomContainer; } - public ScrollView getBottomScrollView() { + public View getBottomScrollView() { return bottomScrollView; } @@ -316,11 +316,10 @@ public abstract class ContextMenuFragment extends BaseOsmAndFragment implements processScreenHeight(container); minHalfY = getMinHalfY(mapActivity); - final GestureDetector swipeDetector = new GestureDetector(app, new HorizontalSwipeConfirm(true)); + final GestureDetector singleTapDetector = new GestureDetector(view.getContext(), new SingleTapConfirm()); + final GestureDetector swipeDetector = new GestureDetector(view.getContext(), new HorizontalSwipeConfirm(true)); final OnTouchListener slideTouchListener = new OnTouchListener() { - private static final int SHORT_CLICK_DURATION_TOP_LIMIT = 500; - private float dy; private float dyMain; private float mDownY; @@ -332,9 +331,8 @@ public abstract class ContextMenuFragment extends BaseOsmAndFragment implements private boolean slidingUp; private boolean slidingDown; - private boolean isHolding; - private long downMotionEventTimeMs; + private boolean hasMoved; { OsmandApplication app = requireMyApplication(); @@ -346,7 +344,15 @@ public abstract class ContextMenuFragment extends BaseOsmAndFragment implements @Override public boolean onTouch(View v, MotionEvent event) { + if (!hasMoved && getHeaderViewHeight() > 0 && event.getY() <= getHeaderViewHeight()) { + if (singleTapDetector.onTouchEvent(event)) { + moving = false; + onHeaderClick(); + recycleVelocityTracker(); + return true; + } + } if (!portrait) { if (swipeDetector.onTouchEvent(event)) { dismiss(); @@ -358,10 +364,7 @@ public abstract class ContextMenuFragment extends BaseOsmAndFragment implements switch (event.getAction()) { case MotionEvent.ACTION_DOWN: - if (!isHolding) { - isHolding = true; - downMotionEventTimeMs = event.getDownTime(); - } + hasMoved = false; mDownY = event.getRawY(); dy = event.getY(); dyMain = getViewY(); @@ -375,6 +378,7 @@ public abstract class ContextMenuFragment extends BaseOsmAndFragment implements moving = true; } if (moving) { + hasMoved = true; float y = event.getY(); float newY = getViewY() + (y - dy); if (!portrait && newY > topScreenPosY) { @@ -398,9 +402,9 @@ public abstract class ContextMenuFragment extends BaseOsmAndFragment implements break; case MotionEvent.ACTION_UP: - isHolding = false; if (moving) { moving = false; + hasMoved = false; int currentY = getViewY(); int fullScreenTopPosY = getMenuStatePosY(MenuState.FULL_SCREEN); final VelocityTracker velocityTracker = this.velocityTracker; @@ -423,13 +427,12 @@ public abstract class ContextMenuFragment extends BaseOsmAndFragment implements } changeMenuState(currentY, slidingUp, slidingDown, true); - } else if (isShortClick(event.getEventTime())) { - onShortClick(v, event); } recycleVelocityTracker(); break; case MotionEvent.ACTION_CANCEL: moving = false; + hasMoved = false; recycleVelocityTracker(); break; @@ -458,11 +461,6 @@ public abstract class ContextMenuFragment extends BaseOsmAndFragment implements velocityTracker = null; } } - - private boolean isShortClick(long upActionTime) { - long holdingDuration = upActionTime - downMotionEventTimeMs; - return holdingDuration <= SHORT_CLICK_DURATION_TOP_LIMIT; - } }; if (mainView instanceof InterceptorLinearLayout) { @@ -485,8 +483,6 @@ public abstract class ContextMenuFragment extends BaseOsmAndFragment implements return view; } - protected void onShortClick(View v, MotionEvent event) { } - public float getToolbarAlpha(int y) { float a = 0; if (portrait) { @@ -923,6 +919,10 @@ public abstract class ContextMenuFragment extends BaseOsmAndFragment implements runLayoutListener(); } + protected void onHeaderClick() { + + } + @TargetApi(Build.VERSION_CODES.JELLY_BEAN) protected void runLayoutListener() { if (view != null) { @@ -1071,16 +1071,4 @@ public abstract class ContextMenuFragment extends BaseOsmAndFragment implements return false; } } - - @Override - public void onNeedVerticalScroll(String tag, int y) { } - - public void verticalScrollToYPosition(final int y) { - bottomScrollView.post(new Runnable() { - @Override - public void run() { - bottomScrollView.smoothScrollTo(0, y); - } - }); - } } diff --git a/OsmAnd/src/net/osmand/plus/base/OnNeedScrollUiAdapter.java b/OsmAnd/src/net/osmand/plus/base/OnNeedScrollUiAdapter.java deleted file mode 100644 index 4363139e1f..0000000000 --- a/OsmAnd/src/net/osmand/plus/base/OnNeedScrollUiAdapter.java +++ /dev/null @@ -1,5 +0,0 @@ -package net.osmand.plus.base; - -public interface OnNeedScrollUiAdapter { - void onNeedVerticalScroll(String tag, int yPosition); -} diff --git a/OsmAnd/src/net/osmand/plus/base/OnVisibilityChangeListener.java b/OsmAnd/src/net/osmand/plus/base/OnVisibilityChangeListener.java deleted file mode 100644 index 58a2da55de..0000000000 --- a/OsmAnd/src/net/osmand/plus/base/OnVisibilityChangeListener.java +++ /dev/null @@ -1,5 +0,0 @@ -package net.osmand.plus.base; - -public interface OnVisibilityChangeListener { - void onVisibilityChange(int visibility); -} diff --git a/OsmAnd/src/net/osmand/plus/track/CustomColorBottomSheet.java b/OsmAnd/src/net/osmand/plus/track/CustomColorBottomSheet.java index a2015693a0..b5ef5e1961 100644 --- a/OsmAnd/src/net/osmand/plus/track/CustomColorBottomSheet.java +++ b/OsmAnd/src/net/osmand/plus/track/CustomColorBottomSheet.java @@ -55,7 +55,9 @@ public class CustomColorBottomSheet extends MenuBottomSheetDialogFragment implem public void createMenuItems(Bundle savedInstanceState) { if (savedInstanceState != null) { newColor = savedInstanceState.getInt(NEW_SELECTED_COLOR); - prevColor = savedInstanceState.getInt(PREV_SELECTED_COLOR); + if (savedInstanceState.containsKey(PREV_SELECTED_COLOR)) { + prevColor = savedInstanceState.getInt(PREV_SELECTED_COLOR); + } } else { Bundle args = getArguments(); if (args != null) { diff --git a/OsmAnd/src/net/osmand/plus/track/TrackAppearanceFragment.java b/OsmAnd/src/net/osmand/plus/track/TrackAppearanceFragment.java index 03e3a21419..53d49bd2a7 100644 --- a/OsmAnd/src/net/osmand/plus/track/TrackAppearanceFragment.java +++ b/OsmAnd/src/net/osmand/plus/track/TrackAppearanceFragment.java @@ -7,13 +7,13 @@ import android.os.Build; import android.os.Bundle; import android.view.Gravity; import android.view.LayoutInflater; -import android.view.MotionEvent; import android.view.View; import android.view.ViewGroup; import android.view.ViewTreeObserver; import android.widget.FrameLayout; import android.widget.ImageView; import android.widget.LinearLayout; +import android.widget.ScrollView; import androidx.activity.OnBackPressedCallback; import androidx.annotation.ColorInt; @@ -369,11 +369,8 @@ public class TrackAppearanceFragment extends ContextMenuScrollFragment implement } @Override - protected void onShortClick(View v, MotionEvent event) { - if (routeMenuTopShadowAll != null && - AndroidUtils.isPointInsideView(routeMenuTopShadowAll, event.getX(), event.getY())) { - adjustMapPosition(getViewY()); - } + protected void onHeaderClick() { + adjustMapPosition(getViewY()); } private void adjustMapPosition(int y) { @@ -606,7 +603,21 @@ public class TrackAppearanceFragment extends ContextMenuScrollFragment implement trackColoringCard.setListener(this); cardsContainer.addView(trackColoringCard.build(mapActivity)); - trackWidthCard = new TrackWidthCard(mapActivity, trackDrawInfo, this); + trackWidthCard = new TrackWidthCard(mapActivity, trackDrawInfo, new OnNeedScrollListener() { + + @Override + public void onVerticalScrollNeeded(int y) { + View view = trackWidthCard.getView(); + if (view != null) { + int resultYPosition = view.getTop() + y; + int dialogHeight = getInnerScrollableHeight(); + ScrollView scrollView = (ScrollView) getBottomScrollView(); + if (resultYPosition > (scrollView.getScrollY() + dialogHeight)) { + scrollView.smoothScrollTo(0, resultYPosition - dialogHeight); + } + } + } + }); trackWidthCard.setListener(this); cardsContainer.addView(trackWidthCard.build(mapActivity)); } @@ -649,21 +660,6 @@ public class TrackAppearanceFragment extends ContextMenuScrollFragment implement } } - @Override - public void onNeedVerticalScroll(@NonNull String tag, int y) { - if (tag.equals(TrackWidthCard.TAG)) { - View trackWidthCardView = trackWidthCard.getView(); - if (trackWidthCardView == null) return; - - int currentScrollYPosition = getBottomScrollView().getScrollY(); - int dialogHeight = getInnerScrollableHeight(); - int resultYPosition = trackWidthCardView.getTop() + y; - if (resultYPosition > (currentScrollYPosition + dialogHeight)) { - verticalScrollToYPosition(resultYPosition - dialogHeight); - } - } - } - public int getInnerScrollableHeight() { int totalScreenHeight = getViewHeight() - getMenuStatePosY(getCurrentMenuState()); int frameTotalHeight = routeMenuTopShadowAll.getHeight() @@ -723,4 +719,8 @@ public class TrackAppearanceFragment extends ContextMenuScrollFragment implement return R.drawable.ic_action_track_line_thin_direction; } } + + public interface OnNeedScrollListener { + void onVerticalScrollNeeded(int y); + } } \ No newline at end of file diff --git a/OsmAnd/src/net/osmand/plus/track/TrackColoringCard.java b/OsmAnd/src/net/osmand/plus/track/TrackColoringCard.java index 5f598a5cde..e8ab755507 100644 --- a/OsmAnd/src/net/osmand/plus/track/TrackColoringCard.java +++ b/OsmAnd/src/net/osmand/plus/track/TrackColoringCard.java @@ -23,6 +23,8 @@ import com.google.android.material.internal.FlowLayout; import net.osmand.AndroidUtils; import net.osmand.PlatformUtil; +import net.osmand.plus.GPXDatabase.GpxDataItem; +import net.osmand.plus.GpxSelectionHelper.SelectedGpxFile; import net.osmand.plus.OsmandApplication; import net.osmand.plus.R; import net.osmand.plus.UiUtilities; @@ -294,16 +296,45 @@ public class TrackColoringCard extends BaseCard implements ColorPickerListener { @Override public void onColorSelected(Integer prevColor, int newColor) { - if (prevColor == null && customColors.size() < 6) { - customColors.add(newColor); - trackDrawInfo.setColor(newColor); - } else if (!Algorithms.isEmpty(customColors)) { + if (prevColor != null) { int index = customColors.indexOf(prevColor); if (index != INVALID_VALUE) { customColors.set(index, newColor); + saveCustomColorsToTracks(prevColor, newColor); + } + if (trackDrawInfo.getColor() == prevColor) { + trackDrawInfo.setColor(newColor); + } + } else if (customColors.size() < 6) { + customColors.add(newColor); + trackDrawInfo.setColor(newColor); + } + saveCustomColors(); + updateContent(); + } + + private void saveCustomColorsToTracks(int prevColor, int newColor) { + List gpxDataItems = app.getGpxDbHelper().getItems(); + for (GpxDataItem dataItem : gpxDataItems) { + if (prevColor == dataItem.getColor()) { + app.getGpxDbHelper().updateColor(dataItem, newColor); } } - updateContent(); + List files = app.getSelectedGpxHelper().getSelectedGPXFiles(); + for (SelectedGpxFile selectedGpxFile : files) { + if (prevColor == selectedGpxFile.getGpxFile().getColor(0)) { + selectedGpxFile.getGpxFile().setColor(newColor); + } + } + } + + private void saveCustomColors() { + List colorNames = new ArrayList<>(); + for (Integer color : customColors) { + String colorHex = Algorithms.colorToString(color); + colorNames.add(colorHex); + } + app.getSettings().CUSTOM_TRACK_COLORS.setStringsList(colorNames); } private class TrackColoringAdapter extends RecyclerView.Adapter { diff --git a/OsmAnd/src/net/osmand/plus/track/TrackWidthCard.java b/OsmAnd/src/net/osmand/plus/track/TrackWidthCard.java index 22651ea04c..2a8f34c024 100644 --- a/OsmAnd/src/net/osmand/plus/track/TrackWidthCard.java +++ b/OsmAnd/src/net/osmand/plus/track/TrackWidthCard.java @@ -14,32 +14,31 @@ import androidx.core.content.ContextCompat; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.github.ksoichiro.android.observablescrollview.ScrollUtils; import com.google.android.material.slider.Slider; import net.osmand.AndroidUtils; import net.osmand.plus.R; import net.osmand.plus.UiUtilities; import net.osmand.plus.activities.MapActivity; -import net.osmand.plus.base.OnNeedScrollUiAdapter; -import net.osmand.plus.base.OnVisibilityChangeListener; import net.osmand.plus.dialogs.GpxAppearanceAdapter; import net.osmand.plus.dialogs.GpxAppearanceAdapter.AppearanceListItem; import net.osmand.plus.dialogs.GpxAppearanceAdapter.GpxAppearanceAdapterType; import net.osmand.plus.helpers.AndroidUiHelper; import net.osmand.plus.routepreparationmenu.cards.BaseCard; +import net.osmand.plus.track.TrackAppearanceFragment.OnNeedScrollListener; import net.osmand.util.Algorithms; import java.util.List; public class TrackWidthCard extends BaseCard { - public final static String TAG = TrackWidthCard.class.getName(); private final static String CUSTOM_WIDTH = "custom_width"; private final static int CUSTOM_WIDTH_MIN = 1; private final static int CUSTOM_WIDTH_MAX = 24; private TrackDrawInfo trackDrawInfo; - private OnNeedScrollUiAdapter onNeedScrollUiAdapter; + private OnNeedScrollListener onNeedScrollListener; private AppearanceListItem selectedItem; private List appearanceItems; @@ -48,10 +47,10 @@ public class TrackWidthCard extends BaseCard { private View sliderContainer; public TrackWidthCard(MapActivity mapActivity, TrackDrawInfo trackDrawInfo, - OnNeedScrollUiAdapter onNeedScrollUiAdapter) { + OnNeedScrollListener onNeedScrollListener) { super(mapActivity); this.trackDrawInfo = trackDrawInfo; - this.onNeedScrollUiAdapter = onNeedScrollUiAdapter; + this.onNeedScrollListener = onNeedScrollListener; appearanceItems = getWidthAppearanceItems(); } @@ -157,16 +156,14 @@ public class TrackWidthCard extends BaseCard { } }); UiUtilities.setupSlider(widthSlider, nightMode, null); - AndroidUtils.addVisibilityChangeListener(view, sliderContainer, - new OnVisibilityChangeListener() { - @Override - public void onVisibilityChange(int visibility) { - if (visibility == View.VISIBLE) { - onNeedScrollUiAdapter.onNeedVerticalScroll(TAG, sliderContainer.getBottom()); - } - } + ScrollUtils.addOnGlobalLayoutListener(sliderContainer, new Runnable() { + @Override + public void run() { + if (sliderContainer.getVisibility() == View.VISIBLE) { + onNeedScrollListener.onVerticalScrollNeeded(sliderContainer.getBottom()); } - ); + } + }); AndroidUiHelper.updateVisibility(sliderContainer, true); } else { AndroidUiHelper.updateVisibility(sliderContainer, false); @@ -227,13 +224,6 @@ public class TrackWidthCard extends BaseCard { if (listener != null) { listener.onCardPressed(TrackWidthCard.this); } - - if (CUSTOM_WIDTH.equals(selectedItem.getAttrName()) - && sliderContainer != null - && onNeedScrollUiAdapter != null - && sliderContainer.getVisibility() == View.VISIBLE) { - onNeedScrollUiAdapter.onNeedVerticalScroll(TAG, sliderContainer.getBottom()); - } } }); } From 79d70c9b3485bac02b4f45fabfd268212a59e3d1 Mon Sep 17 00:00:00 2001 From: Vitaliy Date: Wed, 16 Sep 2020 14:26:24 +0300 Subject: [PATCH 38/56] Fix translation for navigation type --- .../plus/activities/MapActivityActions.java | 28 +++++++++++++++---- 1 file changed, 23 insertions(+), 5 deletions(-) diff --git a/OsmAnd/src/net/osmand/plus/activities/MapActivityActions.java b/OsmAnd/src/net/osmand/plus/activities/MapActivityActions.java index 83a470b903..ea597558e1 100644 --- a/OsmAnd/src/net/osmand/plus/activities/MapActivityActions.java +++ b/OsmAnd/src/net/osmand/plus/activities/MapActivityActions.java @@ -61,6 +61,7 @@ import net.osmand.plus.mapmarkers.MarkersPlanRouteContext; import net.osmand.plus.measurementtool.MeasurementToolFragment; import net.osmand.plus.measurementtool.StartPlanRouteBottomSheet; import net.osmand.plus.monitoring.OsmandMonitoringPlugin; +import net.osmand.plus.profiles.RoutingProfileDataObject; import net.osmand.plus.routepreparationmenu.MapRouteInfoMenu; import net.osmand.plus.routepreparationmenu.WaypointsFragment; import net.osmand.plus.routing.RouteProvider.GPXRouteParamsBuilder; @@ -86,6 +87,7 @@ import java.text.MessageFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; +import java.util.Map; import static net.osmand.IndexConstants.GPX_FILE_EXT; import static net.osmand.aidlapi.OsmAndCustomizationConstants.DRAWER_CONFIGURE_MAP_ID; @@ -115,6 +117,7 @@ import static net.osmand.aidlapi.OsmAndCustomizationConstants.MAP_CONTEXT_MENU_S import static net.osmand.plus.ContextMenuAdapter.PROFILES_CHOSEN_PROFILE_TAG; import static net.osmand.plus.ContextMenuAdapter.PROFILES_CONTROL_BUTTON_TAG; import static net.osmand.plus.ContextMenuAdapter.PROFILES_NORMAL_PROFILE_TAG; +import static net.osmand.plus.settings.fragments.NavigationFragment.getRoutingProfiles; public class MapActivityActions implements DialogProvider { @@ -731,11 +734,11 @@ public class MapActivityActions implements DialogProvider { ApplicationMode currentMode = app.getSettings().APPLICATION_MODE.get(); String modeDescription; - + + Map profilesObjects = getRoutingProfiles(app); for (final ApplicationMode appMode : activeModes) { if (appMode.isCustomProfile()) { - modeDescription = String.format(app.getString(R.string.profile_type_descr_string), - Algorithms.capitalizeFirstLetterAndLowercase(appMode.getRoutingProfile())); + modeDescription = getCustomProfileDescription(app, appMode, profilesObjects); } else { modeDescription = getString(R.string.profile_type_base_string); } @@ -1045,8 +1048,8 @@ public class MapActivityActions implements DialogProvider { ApplicationMode currentMode = app.getSettings().APPLICATION_MODE.get(); String modeDescription; if (currentMode.isCustomProfile()) { - modeDescription = String.format(app.getString(R.string.profile_type_descr_string), - Algorithms.capitalizeFirstLetterAndLowercase(currentMode.getRoutingProfile())); + Map profilesObjects = getRoutingProfiles(app); + modeDescription = getCustomProfileDescription(app, currentMode, profilesObjects); } else { modeDescription = getString(R.string.profile_type_base_string); } @@ -1081,6 +1084,21 @@ public class MapActivityActions implements DialogProvider { .createItem()); } + private String getCustomProfileDescription(OsmandApplication app, ApplicationMode mode, + Map profilesObjects){ + String description = getString(R.string.profile_type_custom_string); + + String routingProfileKey = mode.getRoutingProfile(); + if (!Algorithms.isEmpty(routingProfileKey)) { + RoutingProfileDataObject profileDataObject = profilesObjects.get(routingProfileKey); + if (profileDataObject != null) { + description = String.format(app.getString(R.string.profile_type_descr_string), + Algorithms.capitalizeFirstLetterAndLowercase(profileDataObject.getName())); + } + } + return description; + } + public void openIntermediatePointsDialog() { mapActivity.hideContextAndRouteInfoMenues(); WaypointsFragment.showInstance(mapActivity.getSupportFragmentManager()); From d30532aac8074cd98e05eb61da2c1cad5386bd77 Mon Sep 17 00:00:00 2001 From: Vitaliy Date: Wed, 16 Sep 2020 16:36:47 +0300 Subject: [PATCH 39/56] Small fixes for description icon --- .../res/layout/point_editor_fragment_new.xml | 27 +++--- .../FavoritePointEditorFragmentNew.java | 8 +- .../editors/PointEditorFragmentNew.java | 88 +++++++++---------- 3 files changed, 61 insertions(+), 62 deletions(-) diff --git a/OsmAnd/res/layout/point_editor_fragment_new.xml b/OsmAnd/res/layout/point_editor_fragment_new.xml index 6e00c48bfd..21c6396c53 100644 --- a/OsmAnd/res/layout/point_editor_fragment_new.xml +++ b/OsmAnd/res/layout/point_editor_fragment_new.xml @@ -135,6 +135,7 @@ android:id="@+id/address_edit" android:layout_width="match_parent" android:layout_height="wrap_content" + android:gravity="start" android:maxLines="4" android:minHeight="@dimen/favorites_list_item_height" android:paddingStart="@dimen/content_padding_small" @@ -142,7 +143,6 @@ android:paddingEnd="@dimen/content_padding_small" android:paddingRight="@dimen/content_padding_small" android:textSize="@dimen/default_list_text_size" - android:gravity="left" tools:text="@string/lorem_ipsum" /> @@ -158,36 +158,37 @@ android:id="@+id/address_button" android:layout_width="0dp" android:layout_height="wrap_content" - android:minHeight="@dimen/setting_list_item_small_height" - android:layout_weight="1" android:layout_marginStart="@dimen/content_padding_half" android:layout_marginLeft="@dimen/content_padding_half" android:layout_marginEnd="@dimen/content_padding" android:layout_marginRight="@dimen/content_padding" - android:paddingTop="@dimen/content_padding_half" - android:paddingBottom="@dimen/content_padding_half" + android:layout_weight="1" android:drawablePadding="8dp" android:duplicateParentState="true" android:gravity="center_vertical" + android:minHeight="@dimen/setting_list_item_small_height" android:paddingStart="@dimen/content_padding_half" android:paddingLeft="@dimen/content_padding_half" + android:paddingTop="@dimen/content_padding_half" android:paddingEnd="@dimen/content_padding_half" android:paddingRight="@dimen/content_padding_half" + android:paddingBottom="@dimen/content_padding_half" android:text="@string/add_address" android:textSize="@dimen/default_desc_text_size" osmand:typeface="@string/font_roboto_medium" tools:text="@string/add_address" /> - diff --git a/OsmAnd/src/net/osmand/plus/mapcontextmenu/editors/FavoritePointEditorFragmentNew.java b/OsmAnd/src/net/osmand/plus/mapcontextmenu/editors/FavoritePointEditorFragmentNew.java index cd1910f929..9bfe58324a 100644 --- a/OsmAnd/src/net/osmand/plus/mapcontextmenu/editors/FavoritePointEditorFragmentNew.java +++ b/OsmAnd/src/net/osmand/plus/mapcontextmenu/editors/FavoritePointEditorFragmentNew.java @@ -243,8 +243,8 @@ public class FavoritePointEditorFragmentNew extends PointEditorFragmentNew { if (favorite != null) { final FavouritePoint point = new FavouritePoint(favorite.getLatitude(), favorite.getLongitude(), getNameTextValue(), getCategoryTextValue()); - point.setDescription(isDescriptionAvailable()?getDescriptionTextValue():null); - point.setAddress(isAddressAvailable()?getAddressTextValue():null); + point.setDescription(isDescriptionAvailable() ? getDescriptionTextValue() : null); + point.setAddress(isAddressAvailable() ? getAddressTextValue() : null); point.setColor(color); point.setBackgroundType(backgroundType); point.setIconId(iconId); @@ -259,8 +259,8 @@ public class FavoritePointEditorFragmentNew extends PointEditorFragmentNew { if (favorite != null) { final FavouritePoint point = new FavouritePoint(favorite.getLatitude(), favorite.getLongitude(), getNameTextValue(), getCategoryTextValue()); - point.setDescription(isDescriptionAvailable()?getDescriptionTextValue():null); - point.setAddress(isAddressAvailable()?getAddressTextValue():null); + point.setDescription(isDescriptionAvailable() ? getDescriptionTextValue() : null); + point.setAddress(isAddressAvailable() ? getAddressTextValue() : null); point.setColor(color); point.setBackgroundType(backgroundType); point.setIconId(iconId); diff --git a/OsmAnd/src/net/osmand/plus/mapcontextmenu/editors/PointEditorFragmentNew.java b/OsmAnd/src/net/osmand/plus/mapcontextmenu/editors/PointEditorFragmentNew.java index 9856f907e1..3214817780 100644 --- a/OsmAnd/src/net/osmand/plus/mapcontextmenu/editors/PointEditorFragmentNew.java +++ b/OsmAnd/src/net/osmand/plus/mapcontextmenu/editors/PointEditorFragmentNew.java @@ -27,6 +27,7 @@ import android.widget.TextView; import androidx.activity.OnBackPressedCallback; import androidx.annotation.ColorInt; +import androidx.annotation.ColorRes; import androidx.annotation.DrawableRes; import androidx.annotation.NonNull; import androidx.annotation.Nullable; @@ -39,7 +40,6 @@ import androidx.fragment.app.FragmentActivity; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; -import com.google.android.material.textfield.TextInputEditText; import com.google.android.material.textfield.TextInputLayout; import net.osmand.AndroidUtils; @@ -81,6 +81,7 @@ public abstract class PointEditorFragmentNew extends BaseOsmAndFragment { private TextView addDelDescription; private TextView addAddressBtn; private TextView addToHiddenGroupInfo; + private ImageView deleteAddressIcon; private boolean cancelled; private boolean nightMode; @DrawableRes @@ -167,7 +168,7 @@ public abstract class PointEditorFragmentNew extends BaseOsmAndFragment { } }); - final int activeColorResId = nightMode ? R.color.active_color_primary_dark : R.color.active_color_primary_light; + final int activeColorResId = getActiveColorRes(); ImageView toolbarAction = (ImageView) view.findViewById(R.id.toolbar_action); view.findViewById(R.id.background_layout).setBackgroundResource(nightMode ? R.color.app_bar_color_dark : R.color.list_background_color_light); @@ -247,78 +248,69 @@ public abstract class PointEditorFragmentNew extends BaseOsmAndFragment { if (getDescriptionInitValue() != null) { descriptionEdit.setText(getDescriptionInitValue()); } - if (getAddressInitValue() != null){ - addressEdit.setText(getAddressInitValue()); - addressEdit.setSelection(addressEdit.getText().length()); - } descriptionCaption = view.findViewById(R.id.description); addressCaption = view.findViewById(R.id.address); addDelDescription = (TextView) view.findViewById(R.id.description_button); addAddressBtn = view.findViewById(R.id.address_button); + deleteAddressIcon = view.findViewById(R.id.delete_address_icon); + deleteAddressIcon.setImageDrawable(app.getUIUtilities().getIcon(R.drawable.ic_action_trash_basket_16, activeColorResId)); + addDelDescription.setTextColor(getResources().getColor(activeColorResId)); addAddressBtn.setTextColor(getResources().getColor(activeColorResId)); - addAddressBtn.setCompoundDrawablesWithIntrinsicBounds( - app.getUIUtilities().getIcon(R.drawable.ic_action_location_16, - activeColorResId),null,null,null); - selectIconDescription(activeColorResId); + Drawable addressIcon = app.getUIUtilities().getIcon(R.drawable.ic_action_location_16, activeColorResId); + addAddressBtn.setCompoundDrawablesWithIntrinsicBounds(addressIcon, null, null, null); addDelDescription.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (descriptionCaption.getVisibility() != View.VISIBLE) { descriptionCaption.setVisibility(View.VISIBLE); addDelDescription.setText(view.getResources().getString(R.string.delete_description)); - addDelDescription.setCompoundDrawablesWithIntrinsicBounds( - app.getUIUtilities().getIcon(R.drawable.ic_action_trash_basket_16, - activeColorResId),null,null,null); View descriptionEdit = view.findViewById(R.id.description_edit); descriptionEdit.requestFocus(); AndroidUtils.softKeyboardDelayed(getActivity(), descriptionEdit); } else { descriptionCaption.setVisibility(View.GONE); addDelDescription.setText(view.getResources().getString(R.string.add_description)); - addDelDescription.setCompoundDrawablesWithIntrinsicBounds( - app.getUIUtilities().getIcon(R.drawable.ic_action_description_16, - activeColorResId),null,null,null); AndroidUtils.hideSoftKeyboard(requireActivity(), descriptionEdit); descriptionEdit.clearFocus(); } + updateDescriptionIcon(); } }); AndroidUiHelper.updateVisibility(addressCaption, false); - if(!Algorithms.isEmpty(getAddressInitValue())){ - addAddressBtn.setText(getAddressInitValue()); + + String addressInitValue = getAddressInitValue(); + if (!Algorithms.isEmpty(addressInitValue)) { + addressEdit.setText(addressInitValue); + addAddressBtn.setText(addressInitValue); + addressEdit.setSelection(addressInitValue.length()); + AndroidUiHelper.updateVisibility(deleteAddressIcon, true); } else { addAddressBtn.setText(getString(R.string.add_address)); - }; - final ImageView deleteAddressIcon = (ImageView) view.findViewById(R.id.delete_address_icon); - deleteAddressIcon.setImageDrawable(app.getUIUtilities().getIcon(R.drawable.ic_action_trash_basket_16, activeColorResId)); - if(!Algorithms.isEmpty(getAddressInitValue())){ - deleteAddressIcon.setVisibility(View.VISIBLE); - } else { - deleteAddressIcon.setVisibility(View.GONE); + AndroidUiHelper.updateVisibility(deleteAddressIcon, false); } + deleteAddressIcon.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { - addressCaption.setVisibility(View.GONE); - addAddressBtn.setText(view.getResources().getString(R.string.add_address)); addressEdit.setText(""); - deleteAddressIcon.setVisibility(View.GONE); + addAddressBtn.setText(view.getResources().getString(R.string.add_address)); + AndroidUiHelper.updateVisibility(addressCaption, false); + AndroidUiHelper.updateVisibility(deleteAddressIcon, false); } }); + + final View addressRow = view.findViewById(R.id.address_row); addAddressBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (addressCaption.getVisibility() != View.VISIBLE) { addressCaption.setVisibility(View.VISIBLE); - TextInputEditText addressEdit = view.findViewById(R.id.address_edit); - View row = view.findViewById(R.id.address_row); - row.setVisibility(View.GONE); - addAddressBtn.setText(getString(R.string.add_address)); addressEdit.requestFocus(); addressEdit.setSelection(addressEdit.getText().length()); - AndroidUtils.softKeyboardDelayed(requireActivity(),addressEdit); + AndroidUtils.softKeyboardDelayed(requireActivity(), addressEdit); + AndroidUiHelper.updateVisibility(addressRow, false); } else { addressCaption.setVisibility(View.GONE); addAddressBtn.setText(getAddressTextValue()); @@ -393,19 +385,17 @@ public abstract class PointEditorFragmentNew extends BaseOsmAndFragment { return view; } - - private void selectIconDescription(int activeColorResId) { - if (descriptionCaption.getVisibility() != View.VISIBLE) { - addDelDescription.setCompoundDrawablesWithIntrinsicBounds( - app.getUIUtilities().getIcon(R.drawable.ic_action_description_16, activeColorResId),null,null,null); + private void updateDescriptionIcon() { + int iconId; + if (descriptionCaption.getVisibility() == View.VISIBLE) { + iconId = R.drawable.ic_action_trash_basket_16; } else { - addDelDescription.setCompoundDrawablesWithIntrinsicBounds( - app.getUIUtilities().getIcon(R.drawable.ic_action_trash_basket_16, - activeColorResId),null,null,null); + iconId = R.drawable.ic_action_description_16; } + Drawable icon = app.getUIUtilities().getIcon(iconId, getActiveColorRes()); + addDelDescription.setCompoundDrawablesWithIntrinsicBounds(icon, null, null, null); } - private void checkEmptyName(Editable name, TextInputLayout nameCaption, View saveButton) { if (name.toString().trim().isEmpty()) { nameCaption.setError(app.getString(R.string.please_provide_point_name_error)); @@ -443,14 +433,22 @@ public abstract class PointEditorFragmentNew extends BaseOsmAndFragment { descriptionCaption.setVisibility(View.GONE); addDelDescription.setText(app.getString(R.string.add_description)); } - + updateDescriptionIcon(); } - boolean isAddressAvailable(){ + + boolean isAddressAvailable() { return addressCaption.getVisibility() == View.VISIBLE; } - boolean isDescriptionAvailable(){ + + boolean isDescriptionAvailable() { return descriptionCaption.getVisibility() == View.VISIBLE; } + + @ColorRes + private int getActiveColorRes() { + return nightMode ? R.color.active_color_primary_dark : R.color.active_color_primary_light; + } + private void createGroupSelector() { groupListAdapter = new GroupAdapter(); groupRecyclerView = view.findViewById(R.id.group_recycler_view); From b94be6c3448622b876abe84234eef3fa0e044a3e Mon Sep 17 00:00:00 2001 From: Vitaliy Date: Wed, 16 Sep 2020 18:03:57 +0300 Subject: [PATCH 40/56] Update material library --- OsmAnd/build.gradle | 2 +- OsmAnd/src/net/osmand/plus/UiUtilities.java | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/OsmAnd/build.gradle b/OsmAnd/build.gradle index e33b1ca75f..80c70c84b4 100644 --- a/OsmAnd/build.gradle +++ b/OsmAnd/build.gradle @@ -524,7 +524,7 @@ dependencies { implementation 'androidx.gridlayout:gridlayout:1.0.0' implementation 'androidx.cardview:cardview:1.0.0' implementation 'androidx.appcompat:appcompat:1.1.0' - implementation 'com.google.android.material:material:1.2.0-beta01' + implementation 'com.google.android.material:material:1.2.1' implementation 'androidx.browser:browser:1.0.0' implementation 'androidx.preference:preference:1.1.0' implementation fileTree(include: ['gnu-trove-osmand.jar', 'icu4j-49_1_patched.jar'], dir: 'libs') diff --git a/OsmAnd/src/net/osmand/plus/UiUtilities.java b/OsmAnd/src/net/osmand/plus/UiUtilities.java index 8dc59eccc9..a435bd975e 100644 --- a/OsmAnd/src/net/osmand/plus/UiUtilities.java +++ b/OsmAnd/src/net/osmand/plus/UiUtilities.java @@ -42,6 +42,7 @@ import androidx.core.graphics.drawable.DrawableCompat; import androidx.core.view.ViewCompat; import androidx.core.widget.TintableCompoundButton; +import com.google.android.material.slider.LabelFormatter; import com.google.android.material.slider.RangeSlider; import com.google.android.material.slider.Slider; import com.google.android.material.snackbar.BaseTransientBottomBar; @@ -610,7 +611,7 @@ public class UiUtilities { slider.setTrackHeight(ctx.getResources().getDimensionPixelSize(R.dimen.slider_track_height)); // label behavior - slider.setLabelBehavior(Slider.LABEL_GONE); + slider.setLabelBehavior(LabelFormatter.LABEL_GONE); } public static void setupSlider(RangeSlider slider, boolean nightMode, @@ -650,7 +651,7 @@ public class UiUtilities { slider.setTrackHeight(ctx.getResources().getDimensionPixelSize(R.dimen.slider_track_height)); // label behavior - slider.setLabelBehavior(Slider.LABEL_GONE); + slider.setLabelBehavior(LabelFormatter.LABEL_GONE); } public static void setupDialogButton(boolean nightMode, View buttonView, DialogButtonType buttonType, @StringRes int buttonTextId) { From 3a05ad3228732e27794091378ad6d1820736b4e0 Mon Sep 17 00:00:00 2001 From: Hinagiku Zeppeki Date: Wed, 16 Sep 2020 09:31:08 +0000 Subject: [PATCH 41/56] Translated using Weblate (Japanese) Currently translated at 98.6% (3437 of 3484 strings) --- OsmAnd/res/values-ja/strings.xml | 45 ++++++++++++++++---------------- 1 file changed, 23 insertions(+), 22 deletions(-) diff --git a/OsmAnd/res/values-ja/strings.xml b/OsmAnd/res/values-ja/strings.xml index 636fc3995b..7193842fe5 100644 --- a/OsmAnd/res/values-ja/strings.xml +++ b/OsmAnd/res/values-ja/strings.xml @@ -50,9 +50,9 @@ マイル/ヤード キロメートル/メートル ヤード - フィート + ft mph - マイル + mi 次の方法で位置を共有 位置 : %1$s\n%2$s 位置を見るには @@ -2068,7 +2068,7 @@ POIの更新は利用できません 中国語 (香港) オーストラリア フォルダ内に経路データが存在しません - 以下フォルダーにトラックを追加することが可能です + フォルダに経路を追加することも可能です 経路を追加 表示形式 最大速度 @@ -2412,10 +2412,10 @@ POIの更新は利用できません この近辺の写真はありません。 近隣の写真(要オンライン) 情報共有のための路上写真です(要オンライン)。新たな場所の発見に、協力しあい、この世界を写真で保存しましょう。 - Mapillaryにて写真の有効領域を広げましょう - Mapillaryをインストールして、このマップの場所に写真を追加します。 + Mapillaryにて写真によるレポートを強化しましょう + Mapillaryをインストールすれば、このマップの場所にストリート写真を追加できます。 Mapillaryを開く - ストリート写真(Mapillary) + Mapillary Mapillaryウィジェット Mapillary画像 Mapillaryを利用し、あなたが撮影した路上写真を共有します。 @@ -2611,7 +2611,7 @@ POIの更新は利用できません シンプルな運転用スタイルです。おだやかな夜間モード、等高線、対照的なオレンジ色スタイルの道路表示で、セカンダリマップオブジェクトは若干暗くしてあります。 ハイキング、トレッキング、ネイチャーサイクリング向けです。屋外で視認しやすい配色になっています。対照的な道路と自然物、さまざまなルートタイプ、高度な等高線オプション、詳細の追加などがなされています。 路面の素材や質を表示するオプションを使えば、各道路の状態も把握できます。夜間モードはありません。 昔のデフォルトであった『Mapnik』スタイルです。Mapnikそのものではありませんが似た配色になります。 - 地点/座標の編集 + 地点/座標の編集 座標の追加 経路として保存 %1$sヶ所の座標を追加しました。ファイル名を付けて\"保存\"をタップしてください。 @@ -2745,7 +2745,7 @@ POIの更新は利用できません 最後の中間経由地点として追加 最初の中間経由地点として追加 閉じたメモの表示 - マップ上にあるOSMメモの表示/非表示を切り替えます。 + マップ上にあるOSMメモの表示/非表示を切り替えます。 GPX - JOSMまたは他のOSMエディタへ適したエクスポート形式です。 OSC - OSMの利用に適したエクスポート形式です。 GPXファイル @@ -2855,10 +2855,10 @@ POIの更新は利用できません 入れ替え 詳細を見る マップ上の経路 - GPX経路の表示/非表示 - マップ上にある選択したGPX経路の表示/非表示を切り替えるボタンです。 - GPX経路の非表示 - GPX経路の表示 + GPX経路の表示/非表示 + マップ上にある選択したGPX経路の表示/非表示を切り替えるボタンです。 + 経路の非表示 + 経路の表示 最初に目的地を設定して下さい 前回のルート 立方メートル @@ -3338,14 +3338,14 @@ POIの更新は利用できません 停留所標識 オック語 OSMの編集 - マップ上の等高線の表示/非表示を切り替えられるボタンです。 + マップ上の等高線の表示/非表示を切り替えられるボタンです。 等高線を表示 等高線を非表示 - 等高線を表示/非表示 - マップ上の陰影起伏図の表示/非表示を切り替えられるボタンです。 + 等高線を表示/非表示 + マップ上の陰影起伏図の表示/非表示を切り替えられるボタンです。 陰影起伏図を表示 陰影起伏図を非表示 - 陰影起伏図の表示/非表示 + 陰影起伏図の表示/非表示 テキスト読み上げエンジンを起動できません。 プロファイルのエクスポート OsmAndプロファイル:%1$s @@ -3455,7 +3455,7 @@ POIの更新は利用できません カメラシャッター音 認証に成功しました カテゴリーの並べ替え - リストの並び順を変更したり、不要なカテゴリを非表示にします。プロファイルデータのインポート/エクスポートも可能です。 + リストの並び順を変更したり、不要なカテゴリを非表示にします。プロファイルデータのインポート/エクスポートも可能です。 一つあるいは複数のカテゴリーを選択して、新しいカスタムカテゴリーを追加できます。 利用可 カスタムカテゴリーを追加 @@ -3718,7 +3718,7 @@ POIの更新は利用できません 電源ボタン 端末の音量ボタンでマップのズームレベルを変更できるようにします。 音量ボタンでズーム - 出発・目的地アイコンを表示 + 出発地点と目的地アイコンを表示 幅の選択 距離または時間のマーカーが経路に表示される間隔を選択します。 時間または距離で、必要な分割オプションを選択します。 @@ -3735,7 +3735,7 @@ POIの更新は利用できません ルート反転 選択したプロファイルを使用して、次のセグメントのみ再計算します。 選択したプロファイルを使用して、経路全体が再計算されます。 - 直線で地点間をつなげる方法をとるか、選択したプロファイルで地点間のルートを計算します。 + 地点間を直線で結ぶ方法、または地点だけを指定しその後ルートを計算する方法のどちらかを選択します。 全経路 次のセグメント このオプションを使用するには、OsmAndで経路をマップ上の道路にスナップする必要があります。 @@ -3824,7 +3824,7 @@ POIの更新は利用できません アンインストールして再起動 このアプリには、スピードカメラに関する情報はありません。 インラインスケート - 次の目的地を削除 + 最も近い目的地を削除 地点の名前を入力してください ルート上の現在の目的地点が削除されます。目的地に着いた場合はナビは停止します。 Wikipediaマップのダウンロード @@ -3840,8 +3840,8 @@ POIの更新は利用できません ルート経路 経路ファイルを追加 経路ファイルを記録、またはインポートします - 経路経由地点を追加 - 経路経由地点を追加 + 経路・経由地点を追加 + 経路・経由地点を追加 道路に貼り付ける 旅程の記録 経路ファイルとして保存 @@ -3896,4 +3896,5 @@ POIの更新は利用できません ファイル名 (最近使用したアプリを介して) OsmAndを終了すると、GPXの記録が一時停止されます(バックグラウンドサービスインジケーターがAndroid通知バーから消えます。) 一般的な経路記録の記録間隔を定義します(マップ画面の\'GPX\'ボタンを使用) + 保存されました \ No newline at end of file From b6753504a5ea0c1eea52f1bf052fbd6e1cd6fe2d Mon Sep 17 00:00:00 2001 From: Deelite <556xxy@gmail.com> Date: Wed, 16 Sep 2020 15:21:35 +0000 Subject: [PATCH 42/56] Translated using Weblate (Russian) Currently translated at 99.9% (3483 of 3484 strings) --- OsmAnd/res/values-ru/strings.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/OsmAnd/res/values-ru/strings.xml b/OsmAnd/res/values-ru/strings.xml index bfceebc942..2edc91e6b2 100644 --- a/OsmAnd/res/values-ru/strings.xml +++ b/OsmAnd/res/values-ru/strings.xml @@ -1502,7 +1502,7 @@ Строения Текст Леса и кустарники - Более подробно + Повышенная детализация Менее подробно Качество дорог Тип дорожного покрытия @@ -3845,7 +3845,7 @@ Маршрут трека Добавить файлы треков Импортируйте или запишите файлы треков - Добавить путевую точку + Добавить точку Добавить точку к треку Запись поездки Сохранить как файл трека From c8b619b4a3c31cdb8ebac31bca9f006539dea32e Mon Sep 17 00:00:00 2001 From: Nikita Epifanov Date: Wed, 16 Sep 2020 09:51:43 +0000 Subject: [PATCH 43/56] Translated using Weblate (Russian) Currently translated at 99.9% (3483 of 3484 strings) --- OsmAnd/res/values-ru/strings.xml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/OsmAnd/res/values-ru/strings.xml b/OsmAnd/res/values-ru/strings.xml index 2edc91e6b2..55ff01a9a1 100644 --- a/OsmAnd/res/values-ru/strings.xml +++ b/OsmAnd/res/values-ru/strings.xml @@ -518,9 +518,9 @@ Обратное направление GPX Использовать текущий пункт назначения Пройти весь путь - Для этого региона есть локальные векторные карты. -\n\t -\n\tМеню → Настройки карты → Источник карты → Векторные карты. + Для этого региона доступны локальные векторные карты. +\n\t +\n\tДля их использования выберите в \"Меню\" → \"Настройка карты\" → \"Источник карты…\" → \"Векторные карты\". Голосовые инструкции Выберите канал вывода голосовых подсказок. Канал голосовых звонков (прерывает автомобильную Bluetooth стереосистему) @@ -864,7 +864,7 @@ 3D вид Показать последние использованные POI на карте. Показывать POI - Выберите ресурс с картами онлайн или в кеше. + Выберите источник онлайн или кешированных тайлов карты Растровые карты Источник карты Использовать интернет @@ -3721,7 +3721,7 @@ Держать экран отключённым Держать экран включённым Файл SQLiteDB - Название ресурса с онлайн-картами. + Укажите название источника онлайн-карты. Введите или вставьте URL онлайн-источника. Время устаревания Проекция Меркатора @@ -3831,7 +3831,7 @@ Для использования данной возможности OsmAnd необходимо привязать ваш трек по дорогам. \n \nНа следующем шаге необходимо выбрать профиль навигации для определения разрешенных дорог и пороговое расстояние, чтобы приблизительно привязать маршрут к дорогам. - Выберите способ соединения точек: прямой линией или прокладкой маршрута с выбранным профилем. + Выберите способ соединения точек прямой линией или рассчитайте маршрут между ними, как указано ниже. При обратном направлении Все изменения будут утеряны. Закрыть план маршрута\? Съёмка уличного уровня From a93682b39e7da5e130d98d4025b205a2723e43b3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Babos=20G=C3=A1bor?= Date: Wed, 16 Sep 2020 08:11:18 +0000 Subject: [PATCH 44/56] Translated using Weblate (Hungarian) Currently translated at 100.0% (3484 of 3484 strings) --- OsmAnd/res/values-hu/strings.xml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/OsmAnd/res/values-hu/strings.xml b/OsmAnd/res/values-hu/strings.xml index 4c6a6e4877..3133035da6 100644 --- a/OsmAnd/res/values-hu/strings.xml +++ b/OsmAnd/res/values-hu/strings.xml @@ -3878,13 +3878,13 @@ Jelölje ki azt a nyomvonalfájlt, amelyhez az új szakasz hozzáadódjék. Nyomvonalak Mégis - • A Tervezett útvonal mód frissítésével különböző navigációtípusok is használathatók az egyes szakaszokhoz, és bármilyen nyomvonal az utakhoz köthető + • Frissített útvonaltervezési funkció: szakaszonként különböző navigációtípusok használhatók és nyomvonalak is beilleszthetők \n -\n • Új megjelenési lehetőségek a nyomvonalakhoz: válassza ki a színt, a vastagságot, kapcsolja be az iránynyilakat és a kezdő / befejező jeleket +\n • Új megjelenési menü a nyomvonalakhoz: válassza ki a színt, a vastagságot, kapcsolja be az iránynyilakat és a kiindulás / célpont ikonjait \n -\n • A kerékpáros csomópontok jobb láthatósága +\n • Kerékpáros csomópontok jobb láthatósága \n -\n • Helyi menü a nyomvonalak az alapvető adataival +\n • Nyomvonalra koppintással megnyíló helyi menü a nyomvonalak az alapvető adataival \n \n • Továbbfejlesztett keresési algoritmusok \n From d3bb110a04d84762a6119446e529fe40c360ea19 Mon Sep 17 00:00:00 2001 From: nasr pen Date: Wed, 16 Sep 2020 13:24:28 +0000 Subject: [PATCH 45/56] Translated using Weblate (Arabic) Currently translated at 100.0% (3484 of 3484 strings) --- OsmAnd/res/values-ar/strings.xml | 52 ++++++++++++++++---------------- 1 file changed, 26 insertions(+), 26 deletions(-) diff --git a/OsmAnd/res/values-ar/strings.xml b/OsmAnd/res/values-ar/strings.xml index b64a6f63a3..480c480efe 100644 --- a/OsmAnd/res/values-ar/strings.xml +++ b/OsmAnd/res/values-ar/strings.xml @@ -3134,7 +3134,7 @@ الإضافات المثبتة تكوين الملاحة ثيم التطبيق ، وحدات ، المنطقة - تكوين ملف التعريف + إعداد الوضع تظهر التنبيهات في أسفل اليسار أثناء التنقل. تبديل الوضع اللغة والإخراج @@ -3291,7 +3291,7 @@ وضع المستخدم ، مشتق من:%s تزلج النوع:%s - ملف التعريف الأساسي + وضع أساسي حدد نوع الملاحة يرجى تحديد نوع الملاحة للوضع الجديد أدخل اسم الوضع @@ -3381,7 +3381,7 @@ لا يمكنك حذف أوضاع أوسماند الافتراضية ، ولكن يمكنك تعطيلها في الشاشة السابقة ، أو نقلها إلى الأسفل. تحرير الأوضاع يؤثر نوع التنقل على قواعد حسابات المسار. - مظهر الملف الشخصي + مظهر الوضع اختر الايقونة واللون والاسم تحرير قائمة الأوضاع الملف الشخصي المحدد @@ -3532,7 +3532,7 @@ حدد البيانات التي سيتم استيرادها. أسلوب التقديم استيراد ملف الrendering - ستتم استعادة كافة إعدادات ملف التعريف إلى حالتها الأصلية بعد إنشاء/استيراد هذا الملف الشخصي. + ستتم استعادة كافة إعدادات الوضع إلى حالتها الأصلية بعد إنشاء/استيراد هذا الوضع. استعادة جميع إعدادات الملف الشخصي؟ حفظ ملف تعريف جديد لا يمكن عمل نسخة احتياطية من الملف الشخصي. @@ -3652,28 +3652,28 @@ مسطرة البوصلة قياس المسافة السفر (Wikivoyage و Wikipedia) - علامات الخريطة + العلامات المفضلة اشتراك أوسماند لايف مشتريات أوسماند دليل رموز الخريطة. الملفات الشخصية للملاحة - • خرائط جديدة للمنحدرات غير المتصلة بالإنترنت -\n -\n • التخصيص الكامل للمفضلات ونقاط الطرق GPX - الألوان المخصصة والأيقونات والأشكال -\n -\n • تخصيص ترتيب العناصر في قائمة السياق ، تكوين الخريطة ، درج -\n -\n • ويكيبيديا كطبقة منفصلة في تكوين الخريطة ، حدد اللغات المطلوبة فقط -\n -\n • إنشاء مرشح / خرائط POI الخاصة بك مع مرونة تامة -\n -\n • تمت إضافة خيارات لاستعادة إعدادات ملفات التعريف المخصصة -\n -\n • مسارات GPX كاملة من الممرات دعم حركة المرور وتعليمات كاملة -\n -\n • إصلاح أحجام واجهة المستخدم على الأجهزة اللوحية -\n + • خرائط جديدة للمنحدرات غير المتصلة بالإنترنت +\n +\n • التخصيص الكامل للمفضلات ونقاط الطرق GPX - الألوان المخصصة والأيقونات والأشكال +\n +\n • تخصيص ترتيب العناصر في قائمة السياق ، تكوين الخريطة ، درج +\n +\n • ويكيبيديا كطبقة منفصلة في تكوين الخريطة ، حدد اللغات المطلوبة فقط +\n +\n • إنشاء مرشح / خرائط POI الخاصة بك مع مرونة تامة +\n +\n • تمت إضافة خيارات لاستعادة إعدادات الأوضاع المخصصة +\n +\n • مسارات GPX كاملة من الممرات دعم حركة المرور وتعليمات كاملة +\n +\n • إصلاح أحجام واجهة المستخدم على الأجهزة اللوحية +\n \n • إصلاح الخلل مع RTL \n \n @@ -3691,7 +3691,7 @@ سيتم تبديل زر الإجراء التسجيل بين التشكيلات الجانبية المحددة. إضافة ملف تعريف تغيير ملف تعريف التطبيق - لم يتم العثور على ملفات التعريف المحددة لهذا الإجراء. + لم يتم العثور على الأوضاع المحددة لهذا الإجراء. خريطة عامة للعالم (تفصيلية) نوع غير معتمد لم يتم تكوين OsmAnd GPX بشكل جيد ، يرجى الاتصال بفريق الدعم لمزيد من التحقيقات. @@ -3813,8 +3813,8 @@ حدد ملف المسار الذي سيتم إضافة مقطع جديد إليه. حفظ كمسار جديد عكس الطريق - سيتم إعادة حساب المقطع التالي فقط باستخدام ملف التعريف المحدد. - سيتم إعادة حساب المقطع التالي فقط باستخدام ملف التعريف المحدد. + سيتم إعادة حساب المقطع التالي فقط باستخدام الوضع المحدد. + سيتم إعادة حساب المقطع التالي فقط باستخدام الوضع المحدد. حدد كيفية توصيل النقاط، بخط مستقيم، أو حساب مسار بينها على النحو المحدد أدناه. مسار كامل المقطع التالي @@ -3863,7 +3863,7 @@ جميع الأجزاء اللاحقة المقطع السابق جميع المقاطع السابقة - سيتم إعادة حساب المقطع المحدد فقط باستخدام ملف التعريف المحدد. + سيتم إعادة حساب المقطع المحدد فقط باستخدام الوضع المحدد. سيتم إعادة حساب كافة الشرائح اللاحقة باستخدام ملف التعريف المحدد. سيتم إعادة حساب كافة الشرائح السابقة باستخدام ملف التعريف المحدد. فتح المسار المحفوظ @@ -3885,7 +3885,7 @@ \n \n• تم تحسين خيارات متابعة المسار خلال الملاحة \n -\n• تم إصلاح المشكلات المتعلقة باستيراد/تصدير إعدادات الملف الشخصي +\n• تم إصلاح المشكلات المتعلقة باستيراد/تصدير الأوضاع الشخصية \n \n \ No newline at end of file From 58b2a74159c6afd19f6465f03a9d9e7569f58cea Mon Sep 17 00:00:00 2001 From: iman Date: Wed, 16 Sep 2020 12:01:20 +0000 Subject: [PATCH 46/56] Translated using Weblate (Persian) Currently translated at 97.8% (3410 of 3484 strings) --- OsmAnd/res/values-fa/strings.xml | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/OsmAnd/res/values-fa/strings.xml b/OsmAnd/res/values-fa/strings.xml index dec0c68cd6..e8c4cbb15c 100644 --- a/OsmAnd/res/values-fa/strings.xml +++ b/OsmAnd/res/values-fa/strings.xml @@ -1080,7 +1080,7 @@ انتخاب از موارد موجود… تعریف/ویرایش… منطقهٔ رانندگی - مرکاتور بیضوی + فراتابی مرکاتور بیضوی نشانی اینترنتی ذره‌بین نقشه نقشهٔ جهانی پایه @@ -1411,7 +1411,7 @@ کنترل مرزی عوارضی علامت ایست - سرعتگیر + آرام‌سازی ترافیک دوربین سرعت هشدار ترافیکی فعال‌کردن پروکسی HTTP @@ -1645,7 +1645,7 @@ برای دانلود نقشه‌ها لازم است. در حال جست‌وجوی مکان… فضای خالی - ذخیره‌گاه اطلاعات OsmAnd (برای نقشه‌ها، فایل‌های GPX و...): %1$s. + ذخیره‌گاه دادهٔ OsmAnd (برای نقشه‌ها، فایل‌های رد و...): %1$s. اجازهٔ دسترسی اجازهٔ دسترسی به موقعیتتان را بدهید مسیریابی و کشف جاهای تازه بدون اتصال به اینترنت @@ -2374,8 +2374,8 @@ ذخیرهٔ ردهای ضبط‌شده در پوشه‌های ماهانه ردهای ضبط‌شده در زیرپوشه‌های ماهانه ذخیره می‌شود (مثلاً ‎۲۰۱۸-۰۱). زوم نمایش: %1$s - هنوز فایل GPXای ندارید - همچنین می‌توانید فایل‌های GPX را در این پوشه قرار دهید + هنوز فایل رد (track) ندارید + همچنین می‌توانید فایل‌های رد را در این پوشه قرار دهید استفاده از تقسیمگر ضبط‌کننده ایجاد یادداشت OSM یادداشت OSM بازگشوده @@ -2919,10 +2919,10 @@ نوع جاده‌ها ایستگاه پیاده‌شدن ایستگاه سوارشدن - آشکار/پنهان کردن ردهای GPX - دکمه‌ای برای آشکار/پنهان کردن ردهای GPX انتخابی بر روی نقشه. - پنهان‌کردن ردهای GPX - آشکارکردن ردهای GPX + آشکار/پنهان کردن ردها + دکمه‌ای برای آشکار/پنهان کردن ردهای انتخابی بر روی نقشه. + پنهان‌کردن ردها + آشکارکردن ردها • طراحی جدید برای صفحهٔ «مسیریابی»: اضافه‌شدن دکمه‌های خانه و محل کار برای انتخاب مقصد، میانبر «مسیر قبلی»، لیست نشانه‌ها و ردهای GPX فعال، سابقهٔ جست‌وجو \n \n • اطلاعات بیشتر در قسمت «جزئیات مسیر»: نوع جاده‌ها، سطح، شیب، همواری @@ -3771,7 +3771,7 @@ \nیک هفته ۱۰ ۰۸۰ دقیقه است. \nیک ماه ۴۳ ۸۲۹ دقیقه است. شیوهٔ ذخیره‌سازی کاشی‌های دانلودشده را انتخاب کنید. - زمان خاموشی پیشفرض صفحه + زمان پیشفرض خاموشی صفحه می‌توانید کنش‌های فوری را همراه با پروفایل‌های برنامه برون‌برد یا درون‌برد کنید. همه حذف شود؟ آیا %d کنش فوری را حذف می‌کنید؟ (برگشت‌ناپذیر است) @@ -3804,7 +3804,7 @@ حذف نصب سویه ‏%1$s حذف شد - برای اینکه دادهٔ دوربین سرعت کاملاً حذف شود، یک بار برنامه را ببندید و باز کنید. + برای اینکه دادهٔ دوربین سرعت کاملاً حذف شود، برنامه را ببندید و باز کنید. نقاط توجه دوربین سرعت قانونِ برخی کشورها استفاده از نرم‌افزارهای هشداردهندهٔ دوربین سرعت را ممنوع کرده است. \n @@ -3814,16 +3814,16 @@ \n \nبا انتخاب %2$s تا زمانی که OsmAnd را دوباره نصب کنید، تمام دادهٔ مربوط به دوربین‌های سرعت (هشدارها، اعلان‌ها، نقاط توجه) حذف می‌شود. قانونِ برخی از کشورها استفاده از هشداردهندهٔ دوربین سرعت را ممنوع کرده است. - با این گزینه می‌توانید با استفاده از دکمه‌های کم/زیاد صدای دستگاه سطح زوم را کنترل کنید. + با استفاده از دکمه‌های کم/زیاد صدای دستگاه، سطح زوم را کنترل کنید. زوم با دکمه‌های صدا طول مجاز طول مجاز خودرو در مسیرها را مشخص کنید. این دستگاه دوربین‌های سرعت را ندارد. فعال بماند - حذف مقصد بعدی + حذف نزدیک‌ترین مقصد لطفاً نام نقطه را بنویسید دانلود نقشه‌های ویکی‌پدیا - از ویکی‌پدیا دربارهٔ نقاط توجه اطلاعات کسب کنید. یک راهنمای آفلاین جیبی. کافی است افزونهٔ ویکی‌پدیا را فعال کنید و از مقاله‌ها دربارهٔ چیزهای دوروبرتان لذت ببرید. + از ویکی‌پدیا دربارهٔ نقاط توجه اطلاعات کسب کنید؛ مانند یک راهنمای آفلاین جیبی. کافی است افزونهٔ ویکی‌پدیا را فعال کنید و از مقاله‌های مربوط به چیزهای دوروبرتان لذت ببرید. صندلی چرخ‌دار یادداشت اُاِس‌اِمی بسته نقطهٔ اضافه‌شده روی نقشه دیده نمی‌شود، زیرا گروه انتخاب‌شده پنهان است. آن را در «%s» پیدا می‌کنید. From e33d49409c8051c9b69bbd769cc677c321bb6a08 Mon Sep 17 00:00:00 2001 From: Ajeje Brazorf Date: Wed, 16 Sep 2020 16:31:01 +0000 Subject: [PATCH 47/56] Translated using Weblate (Sardinian) Currently translated at 99.7% (3475 of 3484 strings) --- OsmAnd/res/values-sc/strings.xml | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/OsmAnd/res/values-sc/strings.xml b/OsmAnd/res/values-sc/strings.xml index 4036899b1a..8dba26d6c3 100644 --- a/OsmAnd/res/values-sc/strings.xml +++ b/OsmAnd/res/values-sc/strings.xml @@ -3887,4 +3887,19 @@ est sarvadu Pro praghere annanghe a su mancu duos puntos. Torra a fàghere + • Funtzionalidade de pranificatione de un\'àndala agiornada: permitit de impreare castas diferentes de navigatzione pro segmentu e s\'inclusione de rastas +\n +\n • New Appearance menu for tracks: select color, thickness, display direction arrows, start/finish icons +\n +\n • Visibilidade megiorada de sos nodos pro sas bitzicletas. +\n +\n • Como podes incarcare in sas rastas, e faghende gasi as a abèrrere unu menù de cuntestu cun informatziones de base. +\n +\n • Algoritmu de chirca megioradu +\n +\n • Optziones pro sighire una rasta durante sa navigatzione megioradas +\n +\n • Problemas cun s\'importatzione e s\'esportatzione de sas impostatziones de sos profilos risoltos +\n +\n \ No newline at end of file From a7fc59d176f3b59d5fb173d3d550832caa7e19e0 Mon Sep 17 00:00:00 2001 From: ihor_ck Date: Wed, 16 Sep 2020 13:56:27 +0000 Subject: [PATCH 48/56] Translated using Weblate (Ukrainian) Currently translated at 100.0% (3824 of 3824 strings) --- OsmAnd/res/values-uk/phrases.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/OsmAnd/res/values-uk/phrases.xml b/OsmAnd/res/values-uk/phrases.xml index 1bcbb91957..79fb238aee 100644 --- a/OsmAnd/res/values-uk/phrases.xml +++ b/OsmAnd/res/values-uk/phrases.xml @@ -3831,4 +3831,5 @@ Поповнення питної води Невеликі електроприлади Вулик + Насіннєвий магазин \ No newline at end of file From efba6e140af9804ce172acab36c6f2a378c97821 Mon Sep 17 00:00:00 2001 From: Ajeje Brazorf Date: Wed, 16 Sep 2020 16:52:57 +0000 Subject: [PATCH 49/56] Translated using Weblate (Sardinian) Currently translated at 99.4% (3804 of 3824 strings) --- OsmAnd/res/values-sc/phrases.xml | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/OsmAnd/res/values-sc/phrases.xml b/OsmAnd/res/values-sc/phrases.xml index 9c5f4c8384..df52122c1e 100644 --- a/OsmAnd/res/values-sc/phrases.xml +++ b/OsmAnd/res/values-sc/phrases.xml @@ -3811,9 +3811,9 @@ Raportu cun su livellu de s\'abba: in foras de su livellu mèdiu de s\'abba Raportu cun su livellu de s\'abba: in suta de su livellu mèdiu de s\'abba Tapadura - Ricàrica de s\'abba potàbile: eja - Ricàrica de s\'abba potàbile: nono - Retza de ricàrica de s\'abba potàbile + Eja + Ricàrriga de abba potàbile: nono + Retza de ricàrriga de abba potàbile Sutzione Presurizada Abba suta de terra @@ -3830,4 +3830,14 @@ Unidade amministrativa (Borough) Ascensore Fritza: nono + Butega de pilarda (nughes e àteru) + Moju + Oràriu + Tempus reale + Ritardu + Eja + Tabella de sas tzucadas: nono + Eletrodomèsticos minores + Tabellone de sas tzucadas + Ricàrriga de abba potàbile \ No newline at end of file From 70cc3ddc58d5015f760acdac23428c5a86e3707c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Babos=20G=C3=A1bor?= Date: Wed, 16 Sep 2020 08:16:56 +0000 Subject: [PATCH 50/56] Translated using Weblate (Hungarian) Currently translated at 99.9% (3821 of 3824 strings) --- OsmAnd/res/values-hu/phrases.xml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/OsmAnd/res/values-hu/phrases.xml b/OsmAnd/res/values-hu/phrases.xml index 891959e0b0..4e0cce87d3 100644 --- a/OsmAnd/res/values-hu/phrases.xml +++ b/OsmAnd/res/values-hu/phrases.xml @@ -3833,4 +3833,6 @@ Kis elektronikus készülékek Indulásiidő-kijelző Ivóvíz-utántöltés + Mag- és aszaltgyümölcsbolt + Méhkaptár \ No newline at end of file From f62c7c733190c9198338a9a82156b39b690b862f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Priit=20J=C3=B5er=C3=BC=C3=BCt?= Date: Wed, 16 Sep 2020 16:02:58 +0000 Subject: [PATCH 51/56] Translated using Weblate (Estonian) Currently translated at 100.0% (3824 of 3824 strings) --- OsmAnd/res/values-et/phrases.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/OsmAnd/res/values-et/phrases.xml b/OsmAnd/res/values-et/phrases.xml index 226d25f3ad..dc8cbbac79 100644 --- a/OsmAnd/res/values-et/phrases.xml +++ b/OsmAnd/res/values-et/phrases.xml @@ -3825,4 +3825,5 @@ Joogivee täitmine Väikesed elektriseadmed Mesitaru + Pähklipood \ No newline at end of file From 59be8e4447154854980f4e1a681d4c36fc1f8447 Mon Sep 17 00:00:00 2001 From: Eduardo Addad de Oliveira Date: Wed, 16 Sep 2020 14:40:29 +0000 Subject: [PATCH 52/56] Translated using Weblate (Portuguese (Brazil)) Currently translated at 100.0% (3824 of 3824 strings) --- OsmAnd/res/values-pt-rBR/phrases.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/OsmAnd/res/values-pt-rBR/phrases.xml b/OsmAnd/res/values-pt-rBR/phrases.xml index c6eea35aa5..dd7c249f87 100644 --- a/OsmAnd/res/values-pt-rBR/phrases.xml +++ b/OsmAnd/res/values-pt-rBR/phrases.xml @@ -3843,4 +3843,5 @@ Recarga de água potável Pequenos aparelhos elétricos Colmeia + Loja de nozes \ No newline at end of file From fb1689e767daa39078f1c15d8aa9630085453ef1 Mon Sep 17 00:00:00 2001 From: iman Date: Wed, 16 Sep 2020 12:17:31 +0000 Subject: [PATCH 53/56] Translated using Weblate (Persian) Currently translated at 29.2% (78 of 267 strings) Translation: OsmAnd/Telegram Translate-URL: https://hosted.weblate.org/projects/osmand/telegram/fa/ --- OsmAnd-telegram/res/values-fa/strings.xml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/OsmAnd-telegram/res/values-fa/strings.xml b/OsmAnd-telegram/res/values-fa/strings.xml index af2e8f441c..113a944e7c 100644 --- a/OsmAnd-telegram/res/values-fa/strings.xml +++ b/OsmAnd-telegram/res/values-fa/strings.xml @@ -73,9 +73,9 @@ یکاهای طول را تغییر دهید. یکاهای طول ظاهر - آخرین پاسخ:٪ 1 $ s پیش - آخرین به روزرسانی از تلگرام:٪ 1 $ s پیش + آخرین پاسخ: %1$s پیش + آخرین به‌روزرسانی تلگرام: %1$s پیش آخرین پاسخ: %1$s - آخرین به روز رسانی در تلگرام:%1$s - اشتباه بودن + آخرین به‌روزرسانی تلگرام: %1$s + خطا \ No newline at end of file From c5b976d6b217a83de26d89598fb81877ca8589d9 Mon Sep 17 00:00:00 2001 From: Hinagiku Zeppeki Date: Wed, 16 Sep 2020 09:31:08 +0000 Subject: [PATCH 54/56] Translated using Weblate (Japanese) Currently translated at 90.2% (241 of 267 strings) Translation: OsmAnd/Telegram Translate-URL: https://hosted.weblate.org/projects/osmand/telegram/ja/ --- OsmAnd-telegram/res/values-ja/strings.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/OsmAnd-telegram/res/values-ja/strings.xml b/OsmAnd-telegram/res/values-ja/strings.xml index 71c5af7daf..1829c1fcc9 100644 --- a/OsmAnd-telegram/res/values-ja/strings.xml +++ b/OsmAnd-telegram/res/values-ja/strings.xml @@ -219,8 +219,8 @@ 国際形式でTelegramを利用する端末の電話番号を入力してください(日本の場合+81を先頭につけて電話番号最初の0を除いた番号を入力) ようこそ ヤード - フィート - マイル + ft + mi km m 海里 From 9409c779586e0d0e12ebac5b6b8ddfa88ff8ee57 Mon Sep 17 00:00:00 2001 From: Nikita Epifanov Date: Wed, 16 Sep 2020 09:52:49 +0000 Subject: [PATCH 55/56] Translated using Weblate (Russian) Currently translated at 100.0% (3824 of 3824 strings) --- OsmAnd/res/values-ru/phrases.xml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/OsmAnd/res/values-ru/phrases.xml b/OsmAnd/res/values-ru/phrases.xml index 2f7dba711d..f67e31fb94 100644 --- a/OsmAnd/res/values-ru/phrases.xml +++ b/OsmAnd/res/values-ru/phrases.xml @@ -3830,4 +3830,6 @@ Задержка Расписание Малые электроприборы + Магазин орехов + Улей \ No newline at end of file From c48822279a2ca5a113b4bc3a87d404072030cc07 Mon Sep 17 00:00:00 2001 From: Yaron Shahrabani Date: Wed, 16 Sep 2020 17:25:45 +0000 Subject: [PATCH 56/56] Translated using Weblate (Hebrew) Currently translated at 99.9% (3483 of 3484 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 1e25024941..2971332a22 100644 --- a/OsmAnd/res/values-iw/strings.xml +++ b/OsmAnd/res/values-iw/strings.xml @@ -3837,7 +3837,7 @@ נא לבחור קובץ מסלול שבו יתווסף המקטע החדש. כל המסלול יחושב מחדש באמצעות הפרופיל הנבחר. רק המקטע הבא יחושב מחודש באמצעות הפרופיל הנבחר. - נא לבחור כיצד לחבר נקודות, בקו ישר, או לחבר מסלול ביניהן עם הפרופיל הנבחר. + נא לבחור כיצד לחבר נקודות, בקו ישר, או לחבר מסלול ביניהן כפי שצוין להלן. כדי להשתמש באפשרות זו על OsmAnd להצמיד את המסלול שלך לדרכים שעל המפה. \n \n בשלב הבא יהיה עליך לבחור בפרופיל ניווט כדי לזהות את הדרכים המורשות ואת סף המרחק כדי להעריך את המסלול שלך ביחס לדרכים.