From dbaf1a5fd2d8c82d6f36597f047f5c9e320a6dd3 Mon Sep 17 00:00:00 2001 From: sergosm Date: Fri, 11 Sep 2020 12:22:20 +0300 Subject: [PATCH 01/97] Point_menu --- OsmAnd/res/layout/custom_radio_buttons.xml | 3 +- ...etweenPointsBottomSheetDialogFragment.java | 69 +++++++++++++++++-- ...electedPointBottomSheetDialogFragment.java | 2 - 3 files changed, 67 insertions(+), 7 deletions(-) diff --git a/OsmAnd/res/layout/custom_radio_buttons.xml b/OsmAnd/res/layout/custom_radio_buttons.xml index a5ec943f6a..d768e58004 100644 --- a/OsmAnd/res/layout/custom_radio_buttons.xml +++ b/OsmAnd/res/layout/custom_radio_buttons.xml @@ -4,7 +4,8 @@ xmlns:tools="http://schemas.android.com/tools" android:id="@+id/custom_radio_buttons" android:layout_width="match_parent" - android:layout_height="@dimen/dialog_button_height" + android:minHeight="@dimen/dialog_button_height" + android:layout_height="wrap_content" android:layout_marginStart="@dimen/content_padding" android:layout_marginEnd="@dimen/content_padding" android:background="?attr/btn_bg_border_inactive" diff --git a/OsmAnd/src/net/osmand/plus/measurementtool/RouteBetweenPointsBottomSheetDialogFragment.java b/OsmAnd/src/net/osmand/plus/measurementtool/RouteBetweenPointsBottomSheetDialogFragment.java index f57cbd4e04..ebe9bfeb9c 100644 --- a/OsmAnd/src/net/osmand/plus/measurementtool/RouteBetweenPointsBottomSheetDialogFragment.java +++ b/OsmAnd/src/net/osmand/plus/measurementtool/RouteBetweenPointsBottomSheetDialogFragment.java @@ -2,6 +2,7 @@ package net.osmand.plus.measurementtool; import android.graphics.drawable.Drawable; import android.os.Bundle; +import android.util.Pair; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; @@ -13,25 +14,84 @@ import androidx.annotation.NonNull; import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentManager; +import net.osmand.GPXUtilities; import net.osmand.PlatformUtil; +import net.osmand.plus.OsmAndFormatter; import net.osmand.plus.OsmandApplication; import net.osmand.plus.R; import net.osmand.plus.UiUtilities; +import net.osmand.plus.activities.MapActivity; import net.osmand.plus.base.MenuBottomSheetDialogFragment; import net.osmand.plus.base.bottomsheetmenu.BaseBottomSheetItem; import net.osmand.plus.settings.backend.ApplicationMode; +import net.osmand.util.MapUtils; import org.apache.commons.logging.Log; import java.util.ArrayList; import java.util.List; +import java.util.Map; import static net.osmand.plus.UiUtilities.CustomRadioButtonType.LEFT; import static net.osmand.plus.UiUtilities.CustomRadioButtonType.RIGHT; import static net.osmand.plus.measurementtool.MeasurementEditingContext.DEFAULT_APP_MODE; + + public class RouteBetweenPointsBottomSheetDialogFragment extends MenuBottomSheetDialogFragment { + @NonNull + private String getDescription(boolean before, boolean single) { + MapActivity mapActivity = (MapActivity) getActivity(); + if (mapActivity == null) { + return ""; + } + + MeasurementEditingContext editingCtx = mapActivity.getMapLayers().getMeasurementToolLayer().getEditingCtx(); + int pos = editingCtx.getSelectedPointPosition(); + List points = editingCtx.getPoints(); + + int startIdx; + int endIdx; + if (before) { + startIdx = 1; + endIdx = pos; + } else { + startIdx = pos + 1; + endIdx = points.size() - 1; + } + + float dist = !single ? getDistForAllSegments(points, startIdx, endIdx) : getDistForSingleSegment(editingCtx, points, startIdx, endIdx); + + return OsmAndFormatter.getFormattedDistance(dist, mapActivity.getMyApplication()); + } + + private float getDistForAllSegments(List points, int startIdx, int endIdx) { + float dist = 0; + for (int i = startIdx; i <= endIdx; i++) { + GPXUtilities.WptPt first = points.get(i - 1); + GPXUtilities.WptPt second = points.get(i); + dist += MapUtils.getDistance(first.lat, first.lon, second.lat, second.lon); + } + return dist; + } + + private float getDistForSingleSegment(MeasurementEditingContext editingCtx, List points, int startIdx, int endIdx) { + float dist = 0; + Map, MeasurementEditingContext.RoadSegmentData> roadSegmentDataMap = editingCtx.getRoadSegmentData(); + if (startIdx <= endIdx) { + Pair pair = new Pair<>(points.get(startIdx), points.get(startIdx - 1)); + MeasurementEditingContext.RoadSegmentData data = roadSegmentDataMap.get(pair); + if (data == null) { + dist += MapUtils.getDistance(pair.first.getLatitude(), pair.first.getLongitude(), + pair.second.getLatitude(), pair.second.getLongitude()); + } else { + dist += data.getDistance(); + } + } + return dist; + } + private static final Log LOG = PlatformUtil.getLog(RouteBetweenPointsBottomSheetDialogFragment.class); public static final String TAG = RouteBetweenPointsBottomSheetDialogFragment.class.getSimpleName(); public static final int STRAIGHT_LINE_TAG = -1; @@ -71,23 +131,24 @@ public class RouteBetweenPointsBottomSheetDialogFragment extends MenuBottomSheet case NEXT_ROUTE_CALCULATION: switch (dialogMode) { case SINGLE: - return getString(R.string.next_segment); + return getString(R.string.next_segment) + " " + getDescription(false, true); case ALL: - return getString(R.string.all_next_segments); + return getString(R.string.all_next_segments) + " " + getDescription(false, false); } break; case PREV_ROUTE_CALCULATION: switch (dialogMode) { case SINGLE: - return getString(R.string.previous_segment); + return getString(R.string.previous_segment) + " " + getDescription(true, true); case ALL: - return getString(R.string.all_previous_segments); + return getString(R.string.all_previous_segments) + " " + getDescription(true, false); } break; } return ""; } + private String getButtonDescr(RouteBetweenPointsDialogMode dialogMode) { switch (dialogType) { case WHOLE_ROUTE_CALCULATION: diff --git a/OsmAnd/src/net/osmand/plus/measurementtool/SelectedPointBottomSheetDialogFragment.java b/OsmAnd/src/net/osmand/plus/measurementtool/SelectedPointBottomSheetDialogFragment.java index 9fac103fc5..f3dde5d561 100644 --- a/OsmAnd/src/net/osmand/plus/measurementtool/SelectedPointBottomSheetDialogFragment.java +++ b/OsmAnd/src/net/osmand/plus/measurementtool/SelectedPointBottomSheetDialogFragment.java @@ -158,7 +158,6 @@ public class SelectedPointBottomSheetDialogFragment extends MenuBottomSheetDialo items.add(new OptionsDividerItem(getContext())); BaseBottomSheetItem changeRouteTypeBefore = new BottomSheetItemWithDescription.Builder() - .setDescription(getDescription(true)) .setIcon(getRouteTypeIcon(true)) .setTitle(getString(R.string.plan_route_change_route_type_before)) .setLayoutId(R.layout.bottom_sheet_item_with_descr_pad_32dp) @@ -177,7 +176,6 @@ public class SelectedPointBottomSheetDialogFragment extends MenuBottomSheetDialo items.add(changeRouteTypeBefore); BaseBottomSheetItem changeRouteTypeAfter = new BottomSheetItemWithDescription.Builder() - .setDescription(getDescription(false)) .setIcon(getRouteTypeIcon(false)) .setTitle(getString(R.string.plan_route_change_route_type_after)) .setLayoutId(R.layout.bottom_sheet_item_with_descr_pad_32dp) From 89d43ece792da108ae81c740d35722c68d725162 Mon Sep 17 00:00:00 2001 From: Dima-1 Date: Tue, 17 Nov 2020 23:15:14 +0200 Subject: [PATCH 02/97] Use dev url --- .../oauth/OsmOAuthAuthorizationClient.java | 28 +++++++++-- OsmAnd/build.gradle | 4 -- OsmAnd/res/values/strings.xml | 2 + OsmAnd/res/xml/osm_editing.xml | 8 ++++ .../src/net/osmand/plus/OsmAndConstants.java | 13 ++++-- .../plus/osmedit/OpenstreetmapRemoteUtil.java | 22 ++------- .../net/osmand/plus/osmedit/OsmBugsLayer.java | 9 +--- .../plus/osmedit/OsmBugsRemoteUtil.java | 22 ++------- .../plus/osmedit/OsmEditingFragment.java | 46 ++++++++++++++----- .../oauth/OsmOAuthAuthorizationAdapter.java | 24 +++++++--- .../plus/osmedit/oauth/OsmOAuthHelper.java | 7 ++- .../plus/settings/backend/OsmandSettings.java | 11 +++++ 12 files changed, 123 insertions(+), 73 deletions(-) diff --git a/OsmAnd-java/src/main/java/net/osmand/osm/oauth/OsmOAuthAuthorizationClient.java b/OsmAnd-java/src/main/java/net/osmand/osm/oauth/OsmOAuthAuthorizationClient.java index f1c718465e..cf2f5a5acc 100644 --- a/OsmAnd-java/src/main/java/net/osmand/osm/oauth/OsmOAuthAuthorizationClient.java +++ b/OsmAnd-java/src/main/java/net/osmand/osm/oauth/OsmOAuthAuthorizationClient.java @@ -25,16 +25,16 @@ public class OsmOAuthAuthorizationClient { private final OsmAndJDKHttpClient httpClient; public final static Log log = PlatformUtil.getLog(OsmOAuthAuthorizationClient.class); - public OsmOAuthAuthorizationClient(String key, String secret) { + public OsmOAuthAuthorizationClient(String key, String secret, DefaultApi10a api) { httpClient = new OsmAndJDKHttpClient(JDKHttpClientConfig.defaultConfig()); service = new ServiceBuilder(key) .apiSecret(secret) .httpClient(httpClient) .callback("osmand-oauth://example.com/oauth") - .build(new OsmApi()); + .build(api); } - static class OsmApi extends DefaultApi10a { + public static class OsmApi extends DefaultApi10a { @Override public OAuth1SignatureType getSignatureType() { return OAuth1SignatureType.QUERY_STRING; @@ -56,6 +56,28 @@ public class OsmOAuthAuthorizationClient { } } + public static class OsmDevApi extends DefaultApi10a { + @Override + public OAuth1SignatureType getSignatureType() { + return OAuth1SignatureType.QUERY_STRING; + } + + @Override + public String getRequestTokenEndpoint() { + return "https://master.apis.dev.openstreetmap.org/oauth/request_token"; + } + + @Override + public String getAccessTokenEndpoint() { + return "https://master.apis.dev.openstreetmap.org/oauth/access_token"; + } + + @Override + protected String getAuthorizationBaseUrl() { + return "https://master.apis.dev.openstreetmap.org/oauth/authorize"; + } + } + public OsmAndJDKHttpClient getHttpClient() { return httpClient; } diff --git a/OsmAnd/build.gradle b/OsmAnd/build.gradle index c52dac72ad..bab0785bb8 100644 --- a/OsmAnd/build.gradle +++ b/OsmAnd/build.gradle @@ -207,14 +207,10 @@ android { buildTypes { debug { buildConfigField "String", "OPR_BASE_URL", "\"https://test.openplacereviews.org/\"" - buildConfigField "String", "OSM_OAUTH_CONSUMER_KEY", "\"Ti2qq3fo4i4Wmuox3SiWRIGq3obZisBHnxmcM05y\"" - buildConfigField "String", "OSM_OAUTH_CONSUMER_SECRET", "\"lxulb3HYoMmd2cC4xxNe1dyfRMAY8dS0eNihJ0DM\"" signingConfig signingConfigs.development } release { buildConfigField "String", "OPR_BASE_URL", "\"https://test.openplacereviews.org/\"" - buildConfigField "String", "OSM_OAUTH_CONSUMER_KEY", "\"Ti2qq3fo4i4Wmuox3SiWRIGq3obZisBHnxmcM05y\"" - buildConfigField "String", "OSM_OAUTH_CONSUMER_SECRET", "\"lxulb3HYoMmd2cC4xxNe1dyfRMAY8dS0eNihJ0DM\"" if (gradle.startParameter.taskNames.toString().contains("huawei")) { signingConfig signingConfigs.publishingHuawei } else { diff --git a/OsmAnd/res/values/strings.xml b/OsmAnd/res/values/strings.xml index 6dc1b914d5..426f769d3a 100644 --- a/OsmAnd/res/values/strings.xml +++ b/OsmAnd/res/values/strings.xml @@ -11,6 +11,8 @@ Thx - Hardy --> + Use dev.openstreetmap.org + Switch to use "dev.openstreetmap.org" instead of "openstreetmap.org" to testing uploading OSM Note / POI / GPX. Motorboat Kayak Search history diff --git a/OsmAnd/res/xml/osm_editing.xml b/OsmAnd/res/xml/osm_editing.xml index 469e841c36..8fd0883fc8 100644 --- a/OsmAnd/res/xml/osm_editing.xml +++ b/OsmAnd/res/xml/osm_editing.xml @@ -32,6 +32,14 @@ android:title="@string/offline_edition" tools:icon="@drawable/ic_action_offline" /> + + diff --git a/OsmAnd/src/net/osmand/plus/OsmAndConstants.java b/OsmAnd/src/net/osmand/plus/OsmAndConstants.java index 4e808ac947..16a5312405 100644 --- a/OsmAnd/src/net/osmand/plus/OsmAndConstants.java +++ b/OsmAnd/src/net/osmand/plus/OsmAndConstants.java @@ -1,16 +1,21 @@ package net.osmand.plus; public interface OsmAndConstants { - - + + public int UI_HANDLER_MAP_VIEW = 3000; - + public int UI_HANDLER_MAP_CONTROLS = 4000; - + public int UI_HANDLER_LOCATION_SERVICE = 5000; public int UI_HANDLER_PROGRESS = 6000; public int UI_HANDLER_SEARCH = 7000; + String OSM_OAUTH_DEVELOPER_KEY = "v8G8r9NLJZGMV4he5lwbQlz620FNVARKjI9Bm5UJ"; + String OSM_OAUTH_DEVELOPER_SECRET = "jDvM95Ne1Bq2BDTmIfB6b3ZMxvdK87WGfp6DC07J"; + String OSM_OAUTH_CONSUMER_KEY = "Ti2qq3fo4i4Wmuox3SiWRIGq3obZisBHnxmcM05y"; + String OSM_OAUTH_CONSUMER_SECRET = "lxulb3HYoMmd2cC4xxNe1dyfRMAY8dS0eNihJ0DM"; + } diff --git a/OsmAnd/src/net/osmand/plus/osmedit/OpenstreetmapRemoteUtil.java b/OsmAnd/src/net/osmand/plus/osmedit/OpenstreetmapRemoteUtil.java index 8940093c19..98256d0635 100644 --- a/OsmAnd/src/net/osmand/plus/osmedit/OpenstreetmapRemoteUtil.java +++ b/OsmAnd/src/net/osmand/plus/osmedit/OpenstreetmapRemoteUtil.java @@ -66,33 +66,19 @@ public class OpenstreetmapRemoteUtil implements OpenstreetmapUtil { @Override public EntityInfo getEntityInfo(long id) { - if(entityInfoId != null && entityInfoId.getId().longValue() == id) { + if (entityInfoId != null && entityInfoId.getId().longValue() == id) { return entityInfo; } return null; } - private static String getSiteApi() { - final int deviceApiVersion = android.os.Build.VERSION.SDK_INT; - - String RETURN_API; - - if (deviceApiVersion >= android.os.Build.VERSION_CODES.GINGERBREAD) { - RETURN_API = "https://api.openstreetmap.org/"; - } else { - RETURN_API = "http://api.openstreetmap.org/"; - } - - // RETURN_API = "http://api06.dev.openstreetmap.org/"; - - return RETURN_API; + private String getSiteApi() { + return settings.getOsmUrl(); } - private final static String URL_TO_UPLOAD_GPX = getSiteApi() + "api/0.6/gpx/create"; - public String uploadGPXFile(String tagstring, String description, String visibility, File f) { OsmOAuthAuthorizationAdapter adapter = new OsmOAuthAuthorizationAdapter(ctx); - String url = URL_TO_UPLOAD_GPX; + String url = getSiteApi() + "api/0.6/gpx/create"; Map additionalData = new LinkedHashMap(); additionalData.put("description", description); additionalData.put("tags", tagstring); diff --git a/OsmAnd/src/net/osmand/plus/osmedit/OsmBugsLayer.java b/OsmAnd/src/net/osmand/plus/osmedit/OsmBugsLayer.java index 78b356fd03..71f7f112ec 100644 --- a/OsmAnd/src/net/osmand/plus/osmedit/OsmBugsLayer.java +++ b/OsmAnd/src/net/osmand/plus/osmedit/OsmBugsLayer.java @@ -248,15 +248,8 @@ public class OsmBugsLayer extends OsmandMapLayer implements IContextMenuProvider } protected List loadingBugs(double topLatitude, double leftLongitude, double bottomLatitude, double rightLongitude) { - final int deviceApiVersion = android.os.Build.VERSION.SDK_INT; - String SITE_API; - - if (deviceApiVersion >= android.os.Build.VERSION_CODES.GINGERBREAD) { - SITE_API = "https://api.openstreetmap.org/"; - } else { - SITE_API = "http://api.openstreetmap.org/"; - } + String SITE_API = activity.getMyApplication().getSettings().getOsmUrl(); List bugs = new ArrayList<>(); StringBuilder b = new StringBuilder(); diff --git a/OsmAnd/src/net/osmand/plus/osmedit/OsmBugsRemoteUtil.java b/OsmAnd/src/net/osmand/plus/osmedit/OsmBugsRemoteUtil.java index a6e2dd5ca8..f2fba4c52d 100644 --- a/OsmAnd/src/net/osmand/plus/osmedit/OsmBugsRemoteUtil.java +++ b/OsmAnd/src/net/osmand/plus/osmedit/OsmBugsRemoteUtil.java @@ -26,26 +26,12 @@ public class OsmBugsRemoteUtil implements OsmBugsUtil { private static final String GET = "GET"; private static final String POST = "POST"; - static String getNotesApi() { - final int deviceApiVersion = android.os.Build.VERSION.SDK_INT; - String RETURN_API; - if (deviceApiVersion >= android.os.Build.VERSION_CODES.GINGERBREAD) { - RETURN_API = "https://api.openstreetmap.org/api/0.6/notes"; - } else { - RETURN_API = "http://api.openstreetmap.org/api/0.6/notes"; - } - return RETURN_API; + String getNotesApi() { + return settings.getOsmUrl() + "api/0.6/notes"; } - static String getUserDetailsApi() { - final int deviceApiVersion = android.os.Build.VERSION.SDK_INT; - String RETURN_API; - if (deviceApiVersion >= android.os.Build.VERSION_CODES.GINGERBREAD) { - RETURN_API = "https://api.openstreetmap.org/api/0.6/user/details"; - } else { - RETURN_API = "http://api.openstreetmap.org/api/0.6/user/details"; - } - return RETURN_API; + String getUserDetailsApi() { + return settings.getOsmUrl() + "api/0.6/user/details"; } private OsmandApplication app; diff --git a/OsmAnd/src/net/osmand/plus/osmedit/OsmEditingFragment.java b/OsmAnd/src/net/osmand/plus/osmedit/OsmEditingFragment.java index d6156bfcfb..d7000e5811 100644 --- a/OsmAnd/src/net/osmand/plus/osmedit/OsmEditingFragment.java +++ b/OsmAnd/src/net/osmand/plus/osmedit/OsmEditingFragment.java @@ -43,6 +43,7 @@ public class OsmEditingFragment extends BaseSettingsFragment implements OnPrefer private static final String OPEN_OSM_EDITS = "open_osm_edits"; public static final String OSM_LOGIN_DATA = "osm_login_data"; private static final String OSM_EDITING_INFO = "osm_editing_info"; + private static final String USE_DEV_URL = "use_dev_url"; private OsmOAuthAuthorizationAdapter authorizationAdapter; @@ -61,6 +62,7 @@ public class OsmEditingFragment extends BaseSettingsFragment implements OnPrefer setupLogoutPref(); setupOfflineEditingPref(); + setupUseDevUrlPref(); setupOsmEditsDescrPref(); setupOsmEditsPref(); } @@ -129,6 +131,13 @@ public class OsmEditingFragment extends BaseSettingsFragment implements OnPrefer offlineEditingPref.setIcon(icon); } + private void setupUseDevUrlPref() { + Drawable icon = getPersistentPrefIcon(R.drawable.ic_action_laptop); + SwitchPreferenceEx useDevUrlPref = findPreference(settings.USE_DEV_URL.getId()); + useDevUrlPref.setDescription(getString(R.string.use_dev_url_descr)); + useDevUrlPref.setIcon(icon); + } + private void setupOsmEditsDescrPref() { String menu = getString(R.string.shared_string_menu); String myPlaces = getString(R.string.shared_string_my_places); @@ -152,6 +161,18 @@ public class OsmEditingFragment extends BaseSettingsFragment implements OnPrefer createProfile.setIcon(getActiveIcon(R.drawable.ic_action_folder)); } + @Override + public boolean onPreferenceChange(Preference preference, Object newValue) { + String prefId = preference.getKey(); + if (USE_DEV_URL.equals(prefId) && newValue instanceof Boolean) { + settings.USE_DEV_URL.set((Boolean) newValue); + osmLogout(); + authorizationAdapter = app.getOsmOAuthHelper().updateAdapter(); + return true; + } + return super.onPreferenceChange(preference, newValue); + } + @Override public boolean onPreferenceClick(Preference preference) { String prefId = preference.getKey(); @@ -172,22 +193,25 @@ public class OsmEditingFragment extends BaseSettingsFragment implements OnPrefer return true; } } else if (OSM_LOGOUT.equals(prefId)) { - if (isValidToken()) { - settings.USER_ACCESS_TOKEN.resetToDefault(); - settings.USER_ACCESS_TOKEN_SECRET.resetToDefault(); - - authorizationAdapter.resetToken(); - } else { - settings.USER_NAME.resetToDefault(); - settings.USER_PASSWORD.resetToDefault(); - } - app.showShortToastMessage(R.string.osm_edit_logout_success); - updateAllSettings(); + osmLogout(); return true; } return super.onPreferenceClick(preference); } + private void osmLogout() { + if (isValidToken()) { + settings.USER_ACCESS_TOKEN.resetToDefault(); + settings.USER_ACCESS_TOKEN_SECRET.resetToDefault(); + authorizationAdapter.resetToken(); + } else { + settings.USER_NAME.resetToDefault(); + settings.USER_PASSWORD.resetToDefault(); + } + app.showShortToastMessage(R.string.osm_edit_logout_success); + updateAllSettings(); + } + @Override public void onPreferenceChanged(String prefId) { updateAllSettings(); diff --git a/OsmAnd/src/net/osmand/plus/osmedit/oauth/OsmOAuthAuthorizationAdapter.java b/OsmAnd/src/net/osmand/plus/osmedit/oauth/OsmOAuthAuthorizationAdapter.java index 7c2562b580..0dc7733b16 100644 --- a/OsmAnd/src/net/osmand/plus/osmedit/oauth/OsmOAuthAuthorizationAdapter.java +++ b/OsmAnd/src/net/osmand/plus/osmedit/oauth/OsmOAuthAuthorizationAdapter.java @@ -5,6 +5,7 @@ import android.view.View; import android.view.ViewGroup; import android.webkit.WebView; +import com.github.scribejava.core.builder.api.DefaultApi10a; import com.github.scribejava.core.model.OAuth1AccessToken; import com.github.scribejava.core.model.OAuth1RequestToken; import com.github.scribejava.core.model.OAuthAsyncRequestCallback; @@ -13,7 +14,7 @@ import com.github.scribejava.core.model.Verb; import net.osmand.PlatformUtil; import net.osmand.osm.oauth.OsmOAuthAuthorizationClient; -import net.osmand.plus.BuildConfig; +import net.osmand.plus.OsmAndConstants; import net.osmand.plus.OsmandApplication; import org.xmlpull.v1.XmlPullParser; @@ -27,15 +28,25 @@ public class OsmOAuthAuthorizationAdapter { private static final int THREAD_ID = 10101; private static final String OSM_USER = "user"; private static final String DISPLAY_NAME = "display_name"; - private static final String OSM_USER_DETAILS_URL = "https://api.openstreetmap.org/api/0.6/user/details"; - private OsmandApplication app; - private OsmOAuthAuthorizationClient client = - new OsmOAuthAuthorizationClient(BuildConfig.OSM_OAUTH_CONSUMER_KEY, BuildConfig.OSM_OAUTH_CONSUMER_SECRET); + private final OsmOAuthAuthorizationClient client; public OsmOAuthAuthorizationAdapter(OsmandApplication app) { TrafficStats.setThreadStatsTag(THREAD_ID); this.app = app; + DefaultApi10a api10a; + String key; + String secret; + if (app.getSettings().USE_DEV_URL.get()) { + api10a = new OsmOAuthAuthorizationClient.OsmDevApi(); + key = OsmAndConstants.OSM_OAUTH_DEVELOPER_KEY; + secret = OsmAndConstants.OSM_OAUTH_DEVELOPER_SECRET; + } else { + api10a = new OsmOAuthAuthorizationClient.OsmApi(); + key = OsmAndConstants.OSM_OAUTH_CONSUMER_KEY; + secret = OsmAndConstants.OSM_OAUTH_CONSUMER_SECRET; + } + client = new OsmOAuthAuthorizationClient(key, secret, api10a); restoreToken(); } @@ -104,7 +115,8 @@ public class OsmOAuthAuthorizationAdapter { } public Response getOsmUserDetails() throws InterruptedException, ExecutionException, IOException { - return performRequest(OSM_USER_DETAILS_URL, Verb.GET.name(), null); + String osmUserDetailsUrl = app.getSettings().getOsmUrl() + "api/0.6/user/details"; + return performRequest(osmUserDetailsUrl, Verb.GET.name(), null); } public String parseUserName(Response response) throws XmlPullParserException, IOException { diff --git a/OsmAnd/src/net/osmand/plus/osmedit/oauth/OsmOAuthHelper.java b/OsmAnd/src/net/osmand/plus/osmedit/oauth/OsmOAuthHelper.java index d13bf624f2..d58f62fa01 100644 --- a/OsmAnd/src/net/osmand/plus/osmedit/oauth/OsmOAuthHelper.java +++ b/OsmAnd/src/net/osmand/plus/osmedit/oauth/OsmOAuthHelper.java @@ -19,13 +19,18 @@ public class OsmOAuthHelper { private final OsmandApplication app; - private final OsmOAuthAuthorizationAdapter authorizationAdapter; + private OsmOAuthAuthorizationAdapter authorizationAdapter; public OsmOAuthHelper(@NonNull OsmandApplication app) { this.app = app; authorizationAdapter = new OsmOAuthAuthorizationAdapter(app); } + public OsmOAuthAuthorizationAdapter updateAdapter(){ + authorizationAdapter = new OsmOAuthAuthorizationAdapter(app); + return authorizationAdapter; + } + public void startOAuth(ViewGroup view) { authorizationAdapter.startOAuth(view); } diff --git a/OsmAnd/src/net/osmand/plus/settings/backend/OsmandSettings.java b/OsmAnd/src/net/osmand/plus/settings/backend/OsmandSettings.java index a574e0d0fd..065fd2113a 100644 --- a/OsmAnd/src/net/osmand/plus/settings/backend/OsmandSettings.java +++ b/OsmAnd/src/net/osmand/plus/settings/backend/OsmandSettings.java @@ -1133,6 +1133,17 @@ public class OsmandSettings { // this value boolean is synchronized with settings_pref.xml preference offline POI/Bugs edition public final OsmandPreference OFFLINE_EDITION = new BooleanPreference(this, "offline_osm_editing", true).makeGlobal().makeShared(); + public final OsmandPreference USE_DEV_URL = new BooleanPreference(this, "use_dev_url", false).makeGlobal().makeShared(); + + public String getOsmUrl() { + String osmUrl; + if (USE_DEV_URL.get()) { + osmUrl = "https://master.apis.dev.openstreetmap.org/"; + } else { + osmUrl = "https://api.openstreetmap.org/"; + } + return osmUrl; + } // this value string is synchronized with settings_pref.xml preference name public final CommonPreference DAYNIGHT_MODE = From 10c24781539430bd9e94f842aa041fc3646735ce Mon Sep 17 00:00:00 2001 From: nazar-kutz Date: Thu, 19 Nov 2020 14:21:48 +0200 Subject: [PATCH 03/97] Fix "Local wikipedia results don't show in search history" --- .../src/main/java/net/osmand/osm/MapPoiTypes.java | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/OsmAnd-java/src/main/java/net/osmand/osm/MapPoiTypes.java b/OsmAnd-java/src/main/java/net/osmand/osm/MapPoiTypes.java index e273fa4e7f..9bff39dcb1 100644 --- a/OsmAnd-java/src/main/java/net/osmand/osm/MapPoiTypes.java +++ b/OsmAnd-java/src/main/java/net/osmand/osm/MapPoiTypes.java @@ -205,6 +205,20 @@ public class MapPoiTypes { if (pt != null && !pt.isReference()) { return pt; } + if (pc.isWiki() && name.startsWith(WIKI_LANG)) { + return getPoiTypeForWiki(pc, name); + } + } + return null; + } + + public AbstractPoiType getPoiTypeForWiki(PoiCategory osmwiki, String name) { + for (PoiType pt : osmwiki.getPoiTypes()) { + for (PoiType wikiLangPt : pt.getPoiAdditionals()) { + if (wikiLangPt != null && Algorithms.objectEquals(wikiLangPt.getOsmTag(), name)) { + return wikiLangPt; + } + } } return null; } From 8848da646675039b4bc47a59b9e9a62ade564adf Mon Sep 17 00:00:00 2001 From: Dima-1 Date: Thu, 19 Nov 2020 16:00:12 +0200 Subject: [PATCH 04/97] Fix "register on" fragment, add "add photos" bottom sheet --- OsmAnd/res/layout/fragment_opr_login.xml | 53 +++++------- OsmAnd/res/layout/opr_add_photo.xml | 40 +++++++++ OsmAnd/res/values/strings.xml | 3 + .../plus/mapcontextmenu/MenuBuilder.java | 6 +- .../AddPhotosBottomSheetDialogFragment.java | 85 +++++++++++++++++++ .../openplacereviews/OprStartFragment.java | 37 +++++--- 6 files changed, 181 insertions(+), 43 deletions(-) create mode 100644 OsmAnd/res/layout/opr_add_photo.xml create mode 100644 OsmAnd/src/net/osmand/plus/openplacereviews/AddPhotosBottomSheetDialogFragment.java diff --git a/OsmAnd/res/layout/fragment_opr_login.xml b/OsmAnd/res/layout/fragment_opr_login.xml index 3313679aec..59c31069b9 100644 --- a/OsmAnd/res/layout/fragment_opr_login.xml +++ b/OsmAnd/res/layout/fragment_opr_login.xml @@ -1,15 +1,16 @@ - + android:layout_height="match_parent" + android:focusable="true"> + app:srcCompat="@drawable/ic_img_logo_openplacereview" /> - + android:gravity="center_horizontal" /> + android:text="@string/register_on_openplacereviews_desc" /> - + android:layout_height="@dimen/dialog_button_height" + android:layout_marginBottom="@dimen/content_padding_small" /> - + android:layout_height="@dimen/dialog_button_height" /> diff --git a/OsmAnd/res/layout/opr_add_photo.xml b/OsmAnd/res/layout/opr_add_photo.xml new file mode 100644 index 0000000000..827fda4a16 --- /dev/null +++ b/OsmAnd/res/layout/opr_add_photo.xml @@ -0,0 +1,40 @@ + + + + + + + + + + \ No newline at end of file diff --git a/OsmAnd/res/values/strings.xml b/OsmAnd/res/values/strings.xml index bde6a98173..8fa1c6ab03 100644 --- a/OsmAnd/res/values/strings.xml +++ b/OsmAnd/res/values/strings.xml @@ -17,6 +17,9 @@ Select the data to be exported to the file. Approximate file size Resources + OsmAnd shows photos from several sources:\nOpenPlaceReviews - POI photos;\nMapillary - street-level imagery;\nWeb / Wikimedia - POI photos specified in OpenStreetMap data. + Add to OpenPlaceReviews + Add to Mapillary Motorboat Kayak Search history diff --git a/OsmAnd/src/net/osmand/plus/mapcontextmenu/MenuBuilder.java b/OsmAnd/src/net/osmand/plus/mapcontextmenu/MenuBuilder.java index 1aa35b8589..35db3c821e 100644 --- a/OsmAnd/src/net/osmand/plus/mapcontextmenu/MenuBuilder.java +++ b/OsmAnd/src/net/osmand/plus/mapcontextmenu/MenuBuilder.java @@ -46,7 +46,7 @@ import net.osmand.plus.mapcontextmenu.builders.cards.ImageCard; import net.osmand.plus.mapcontextmenu.builders.cards.ImageCard.GetImageCardsTask; import net.osmand.plus.mapcontextmenu.builders.cards.NoImagesCard; import net.osmand.plus.mapcontextmenu.controllers.TransportStopController; -import net.osmand.plus.openplacereviews.OprStartFragment; +import net.osmand.plus.openplacereviews.AddPhotosBottomSheetDialogFragment; import net.osmand.plus.poi.PoiUIFilter; import net.osmand.plus.render.RenderingIcons; import net.osmand.plus.transport.TransportStopRoute; @@ -316,7 +316,7 @@ public class MenuBuilder { b.setOnClickListener(new OnClickListener() { @Override public void onClick(View view) { - OprStartFragment.showInstance(mapActivity.getSupportFragmentManager()); + AddPhotosBottomSheetDialogFragment.showInstance(mapActivity.getSupportFragmentManager()); } }); b.setTypeface(FontCache.getRobotoRegular(context)); @@ -337,7 +337,7 @@ public class MenuBuilder { b.setText(context.getResources().getString(R.string.shared_string_add_photo)); b.setBackgroundResource(R.drawable.btn_border_light); //TODO This feature is under development - b.setVisibility(View.GONE); + b.setVisibility(View.VISIBLE); b.setTextColor(ContextCompat.getColor(context, R.color.preference_category_title)); return b; } diff --git a/OsmAnd/src/net/osmand/plus/openplacereviews/AddPhotosBottomSheetDialogFragment.java b/OsmAnd/src/net/osmand/plus/openplacereviews/AddPhotosBottomSheetDialogFragment.java new file mode 100644 index 0000000000..4a55e9b425 --- /dev/null +++ b/OsmAnd/src/net/osmand/plus/openplacereviews/AddPhotosBottomSheetDialogFragment.java @@ -0,0 +1,85 @@ +package net.osmand.plus.openplacereviews; + +import android.app.Activity; +import android.os.Bundle; +import android.view.View; + +import androidx.annotation.NonNull; +import androidx.fragment.app.FragmentActivity; +import androidx.fragment.app.FragmentManager; + +import net.osmand.plus.R; +import net.osmand.plus.UiUtilities; +import net.osmand.plus.activities.MapActivity; +import net.osmand.plus.base.MenuBottomSheetDialogFragment; +import net.osmand.plus.base.bottomsheetmenu.BottomSheetItemButton; +import net.osmand.plus.base.bottomsheetmenu.SimpleBottomSheetItem; +import net.osmand.plus.base.bottomsheetmenu.simpleitems.DividerItem; +import net.osmand.plus.base.bottomsheetmenu.simpleitems.DividerSpaceItem; + +public class AddPhotosBottomSheetDialogFragment extends MenuBottomSheetDialogFragment { + + public static final String TAG = AddPhotosBottomSheetDialogFragment.class.getSimpleName(); + + @Override + public void createMenuItems(Bundle savedInstanceState) { + + View mainView = View.inflate(UiUtilities.getThemedContext(getMyApplication(), nightMode), + R.layout.opr_add_photo, null); + items.add(new SimpleBottomSheetItem.Builder() + .setCustomView(mainView) + .create()); + + DividerItem divider = new DividerItem(getContext()); + int contextPadding = getResources().getDimensionPixelSize(R.dimen.content_padding); + int contextPaddingSmall = getResources().getDimensionPixelSize(R.dimen.content_padding_small); + divider.setMargins(contextPadding, contextPadding, contextPadding, contextPaddingSmall); + items.add(divider); + + items.add(new BottomSheetItemButton.Builder() + .setTitle(getString(R.string.add_to_opr)) + .setLayoutId(R.layout.bottom_sheet_button) + .setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + FragmentActivity activity = getActivity(); + if (activity != null) { + OprStartFragment.showInstance(activity.getSupportFragmentManager()); + } + dismiss(); + } + }) + .create()); + + items.add(new DividerSpaceItem(getContext(), contextPaddingSmall)); + + items.add(new BottomSheetItemButton.Builder() + .setButtonType(UiUtilities.DialogButtonType.SECONDARY) + .setTitle(getString(R.string.add_to_mapillary)) + .setLayoutId(R.layout.bottom_sheet_button) + .setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + Activity activity = getActivity(); + if (activity instanceof MapActivity) { + } + dismiss(); + } + }) + .create()); + + items.add(new DividerSpaceItem(getContext(), contextPaddingSmall)); + } + + @Override + protected int getDismissButtonTextId() { + return R.string.shared_string_cancel; + } + + public static void showInstance(@NonNull FragmentManager fragmentManager) { + if (!fragmentManager.isStateSaved()) { + AddPhotosBottomSheetDialogFragment fragment = new AddPhotosBottomSheetDialogFragment(); + fragment.show(fragmentManager, TAG); + } + } +} \ No newline at end of file diff --git a/OsmAnd/src/net/osmand/plus/openplacereviews/OprStartFragment.java b/OsmAnd/src/net/osmand/plus/openplacereviews/OprStartFragment.java index eecd0c3f32..19a4ba57be 100644 --- a/OsmAnd/src/net/osmand/plus/openplacereviews/OprStartFragment.java +++ b/OsmAnd/src/net/osmand/plus/openplacereviews/OprStartFragment.java @@ -1,6 +1,7 @@ package net.osmand.plus.openplacereviews; import android.content.Intent; +import android.graphics.Typeface; import android.os.Bundle; import android.text.SpannableString; import android.text.Spanned; @@ -11,23 +12,41 @@ import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; + import androidx.annotation.NonNull; import androidx.annotation.Nullable; +import androidx.fragment.app.FragmentActivity; import androidx.fragment.app.FragmentManager; + import net.osmand.PlatformUtil; import net.osmand.plus.R; +import net.osmand.plus.UiUtilities; import net.osmand.plus.base.BaseOsmAndFragment; + import org.apache.commons.logging.Log; public class OprStartFragment extends BaseOsmAndFragment { - private static final String TAG = "fragment_oprstart"; + private static final String TAG = OprStartFragment.class.getSimpleName(); private static final Log LOG = PlatformUtil.getLog(OprStartFragment.class); private static final String openPlaceReviewsUrl = "OpenPlaceReviews.org"; @Override public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { + boolean nightMode = getMyApplication().getDaynightHelper().isNightModeForMapControls(); View v = inflater.inflate(R.layout.fragment_opr_login, container, false); - v.findViewById(R.id.register_opr_create_account).setOnClickListener(new View.OnClickListener() { + View createAccount = v.findViewById(R.id.register_opr_create_account); + v.findViewById(R.id.back_button).setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + FragmentActivity activity = getActivity(); + if (activity != null) { + activity.getSupportFragmentManager().popBackStack(); + } + } + }); + UiUtilities.setupDialogButton(nightMode, createAccount, UiUtilities.DialogButtonType.PRIMARY, + R.string.register_opr_create_new_account); + createAccount.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Intent i = new Intent(requireContext(), OPRWebviewActivity.class); @@ -36,13 +55,10 @@ public class OprStartFragment extends BaseOsmAndFragment { startActivity(i); } }); - v.findViewById(R.id.back_button).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - getActivity().getSupportFragmentManager().popBackStack(); - } - }); - v.findViewById(R.id.register_opr_have_account).setOnClickListener(new View.OnClickListener() { + View haveAccount = v.findViewById(R.id.register_opr_have_account); + UiUtilities.setupDialogButton(nightMode, haveAccount, UiUtilities.DialogButtonType.SECONDARY, + R.string.register_opr_have_account); + haveAccount.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Intent i = new Intent(requireContext(), OPRWebviewActivity.class); @@ -71,9 +87,10 @@ public class OprStartFragment extends BaseOsmAndFragment { } @Override - public void updateDrawState(TextPaint ds) { + public void updateDrawState(@NonNull TextPaint ds) { super.updateDrawState(ds); ds.setUnderlineText(false); + ds.setTypeface(Typeface.DEFAULT_BOLD); } } From f6fd8defd499917cf0f409aae092bce3a666a2cc Mon Sep 17 00:00:00 2001 From: Vitaliy Date: Thu, 19 Nov 2020 16:46:20 +0200 Subject: [PATCH 05/97] Fix markers export --- .../plus/mapmarkers/MapMarkersHelper.java | 1 + .../backup/HistoryMarkersSettingsItem.java | 11 ++++--- .../backend/backup/MarkersSettingsItem.java | 9 ++++-- .../fragments/DuplicatesSettingsAdapter.java | 20 ++++++------- .../fragments/ImportDuplicatesFragment.java | 29 +++++++++---------- .../fragments/ImportSettingsFragment.java | 7 +++-- 6 files changed, 42 insertions(+), 35 deletions(-) diff --git a/OsmAnd/src/net/osmand/plus/mapmarkers/MapMarkersHelper.java b/OsmAnd/src/net/osmand/plus/mapmarkers/MapMarkersHelper.java index 9839ccffda..3650f6d820 100644 --- a/OsmAnd/src/net/osmand/plus/mapmarkers/MapMarkersHelper.java +++ b/OsmAnd/src/net/osmand/plus/mapmarkers/MapMarkersHelper.java @@ -1083,6 +1083,7 @@ public class MapMarkersHelper { String creationDateStr = point.getExtensionsToRead().get(CREATION_DATE); marker.visitedDate = parseTime(visitedDateStr, format); marker.creationDate = parseTime(creationDateStr, format); + marker.history = history; marker.nextKey = history ? MapMarkersDbHelper.HISTORY_NEXT_VALUE : MapMarkersDbHelper.TAIL_NEXT_VALUE; mapMarkers.add(marker); diff --git a/OsmAnd/src/net/osmand/plus/settings/backend/backup/HistoryMarkersSettingsItem.java b/OsmAnd/src/net/osmand/plus/settings/backend/backup/HistoryMarkersSettingsItem.java index cc152f7ad3..9f441b7ec8 100644 --- a/OsmAnd/src/net/osmand/plus/settings/backend/backup/HistoryMarkersSettingsItem.java +++ b/OsmAnd/src/net/osmand/plus/settings/backend/backup/HistoryMarkersSettingsItem.java @@ -87,7 +87,7 @@ public class HistoryMarkersSettingsItem extends CollectionSettingsItem { public boolean isDuplicate(@NonNull MapMarker mapMarker) { for (MapMarker marker : existingItems) { if (marker.equals(mapMarker) - && Algorithms.objectEquals(marker.getOriginalPointDescription(), mapMarker.getOriginalPointDescription())) { + && Algorithms.objectEquals(marker.getOnlyName(), mapMarker.getOnlyName())) { return true; } } @@ -114,10 +114,13 @@ public class MarkersSettingsItem extends CollectionSettingsItem { int number = 0; while (true) { number++; - String name = item.getOnlyName() + "_" + number; + String name = item.getOnlyName() + " " + number; PointDescription description = new PointDescription(PointDescription.POINT_TYPE_LOCATION, name); - MapMarker renamedMarker = new MapMarker(item.point, description, item.getColor(), item.selected, item.index); + MapMarker renamedMarker = new MapMarker(item.point, description, item.colorIndex, item.selected, item.index); if (!isDuplicate(renamedMarker)) { + renamedMarker.history = false; + renamedMarker.visitedDate = item.visitedDate; + renamedMarker.creationDate = item.creationDate; renamedMarker.nextKey = MapMarkersDbHelper.TAIL_NEXT_VALUE; return renamedMarker; } diff --git a/OsmAnd/src/net/osmand/plus/settings/fragments/DuplicatesSettingsAdapter.java b/OsmAnd/src/net/osmand/plus/settings/fragments/DuplicatesSettingsAdapter.java index 252b685bfc..fc6982a7a6 100644 --- a/OsmAnd/src/net/osmand/plus/settings/fragments/DuplicatesSettingsAdapter.java +++ b/OsmAnd/src/net/osmand/plus/settings/fragments/DuplicatesSettingsAdapter.java @@ -14,22 +14,22 @@ import net.osmand.IndexConstants; import net.osmand.PlatformUtil; import net.osmand.map.ITileSource; import net.osmand.plus.FavouritesDbHelper.FavoriteGroup; -import net.osmand.plus.audionotes.AudioVideoNotesPlugin; -import net.osmand.plus.helpers.FileNameTranslationHelper; -import net.osmand.plus.helpers.GpxUiHelper; -import net.osmand.plus.helpers.SearchHistoryHelper.HistoryEntry; -import net.osmand.plus.settings.backend.ApplicationMode; -import net.osmand.plus.settings.backend.ApplicationMode.ApplicationModeBean; import net.osmand.plus.OsmandApplication; import net.osmand.plus.R; import net.osmand.plus.UiUtilities; +import net.osmand.plus.audionotes.AudioVideoNotesPlugin; import net.osmand.plus.helpers.AvoidSpecificRoads.AvoidRoadInfo; -import net.osmand.plus.mapmarkers.MapMarkersGroup; +import net.osmand.plus.helpers.FileNameTranslationHelper; +import net.osmand.plus.helpers.GpxUiHelper; +import net.osmand.plus.helpers.SearchHistoryHelper.HistoryEntry; +import net.osmand.plus.mapmarkers.MapMarker; import net.osmand.plus.poi.PoiUIFilter; import net.osmand.plus.profiles.ProfileIconColors; import net.osmand.plus.profiles.RoutingProfileDataObject.RoutingProfilesResources; import net.osmand.plus.quickaction.QuickAction; import net.osmand.plus.render.RenderingIcons; +import net.osmand.plus.settings.backend.ApplicationMode; +import net.osmand.plus.settings.backend.ApplicationMode.ApplicationModeBean; import net.osmand.util.Algorithms; import org.apache.commons.logging.Log; @@ -157,9 +157,9 @@ public class DuplicatesSettingsAdapter extends RecyclerView.Adapter duplicatesList, - List settingsItems, File file, Fragment targetFragment) { + List settingsItems, File file, Fragment targetFragment) { ImportDuplicatesFragment fragment = new ImportDuplicatesFragment(); fragment.setTargetFragment(targetFragment, 0); fragment.setDuplicatesList(duplicatesList); @@ -203,8 +202,8 @@ public class ImportDuplicatesFragment extends BaseOsmAndFragment { List ttsVoiceFilesList = new ArrayList<>(); List voiceFilesList = new ArrayList<>(); List mapFilesList = new ArrayList<>(); - List markersGroups = new ArrayList<>(); - List markersHistoryGroups = new ArrayList<>(); + List mapMarkers = new ArrayList<>(); + List mapMarkersGroups = new ArrayList<>(); List historyEntries = new ArrayList<>(); for (Object object : duplicatesList) { @@ -242,12 +241,12 @@ public class ImportDuplicatesFragment extends BaseOsmAndFragment { osmNotesPointList.add((OsmNotesPoint) object); } else if (object instanceof OpenstreetmapPoint) { osmEditsPointList.add((OpenstreetmapPoint) object); - } else if (object instanceof MapMarkersGroup) { - MapMarkersGroup markersGroup = (MapMarkersGroup) object; - if (ExportSettingsType.ACTIVE_MARKERS.name().equals(markersGroup.getId())) { - markersGroups.add(markersGroup); - } else if (ExportSettingsType.HISTORY_MARKERS.name().equals(markersGroup.getId())) { - markersHistoryGroups.add(markersGroup); + } else if (object instanceof MapMarker) { + MapMarker mapMarker = (MapMarker) object; + if (mapMarker.history) { + mapMarkers.add(mapMarker); + } else { + mapMarkersGroups.add(mapMarker); } } else if (object instanceof HistoryEntry) { historyEntries.add((HistoryEntry) object); @@ -313,13 +312,13 @@ public class ImportDuplicatesFragment extends BaseOsmAndFragment { duplicates.add(getString(R.string.local_indexes_cat_voice)); duplicates.addAll(voiceFilesList); } - if (!markersGroups.isEmpty()) { + if (!mapMarkers.isEmpty()) { duplicates.add(getString(R.string.map_markers)); - duplicates.addAll(markersGroups); + duplicates.addAll(mapMarkers); } - if (!markersHistoryGroups.isEmpty()) { + if (!mapMarkersGroups.isEmpty()) { duplicates.add(getString(R.string.markers_history)); - duplicates.addAll(markersHistoryGroups); + duplicates.addAll(mapMarkersGroups); } return duplicates; } diff --git a/OsmAnd/src/net/osmand/plus/settings/fragments/ImportSettingsFragment.java b/OsmAnd/src/net/osmand/plus/settings/fragments/ImportSettingsFragment.java index 816d5517dc..9476470969 100644 --- a/OsmAnd/src/net/osmand/plus/settings/fragments/ImportSettingsFragment.java +++ b/OsmAnd/src/net/osmand/plus/settings/fragments/ImportSettingsFragment.java @@ -38,6 +38,7 @@ import net.osmand.plus.OsmandApplication; import net.osmand.plus.R; import net.osmand.plus.SQLiteTileSource; import net.osmand.plus.UiUtilities; +import net.osmand.plus.UiUtilities.DialogButtonType; import net.osmand.plus.activities.MapActivity; import net.osmand.plus.base.BaseOsmAndFragment; import net.osmand.plus.helpers.AvoidSpecificRoads.AvoidRoadInfo; @@ -54,7 +55,6 @@ import net.osmand.plus.settings.backend.backup.AvoidRoadsSettingsItem; import net.osmand.plus.settings.backend.backup.FavoritesSettingsItem; import net.osmand.plus.settings.backend.backup.FileSettingsItem; import net.osmand.plus.settings.backend.backup.GlobalSettingsItem; -import net.osmand.plus.settings.backend.backup.SearchHistorySettingsItem; import net.osmand.plus.settings.backend.backup.HistoryMarkersSettingsItem; import net.osmand.plus.settings.backend.backup.MapSourcesSettingsItem; import net.osmand.plus.settings.backend.backup.MarkersSettingsItem; @@ -63,12 +63,12 @@ import net.osmand.plus.settings.backend.backup.OsmNotesSettingsItem; import net.osmand.plus.settings.backend.backup.PoiUiFiltersSettingsItem; import net.osmand.plus.settings.backend.backup.ProfileSettingsItem; import net.osmand.plus.settings.backend.backup.QuickActionsSettingsItem; +import net.osmand.plus.settings.backend.backup.SearchHistorySettingsItem; import net.osmand.plus.settings.backend.backup.SettingsHelper; import net.osmand.plus.settings.backend.backup.SettingsHelper.ImportAsyncTask; import net.osmand.plus.settings.backend.backup.SettingsHelper.ImportType; import net.osmand.plus.settings.backend.backup.SettingsItem; import net.osmand.plus.settings.backend.backup.SettingsItemType; -import net.osmand.plus.widgets.TextViewEx; import net.osmand.util.Algorithms; import org.apache.commons.logging.Log; @@ -134,7 +134,7 @@ public class ImportSettingsFragment extends BaseOsmAndFragment { inflater = UiUtilities.getInflater(app, nightMode); View root = inflater.inflate(R.layout.fragment_import, container, false); Toolbar toolbar = root.findViewById(R.id.toolbar); - TextViewEx continueBtn = root.findViewById(R.id.continue_button); + View continueBtn = root.findViewById(R.id.continue_button); toolbarLayout = root.findViewById(R.id.toolbar_layout); expandableList = root.findViewById(R.id.list); buttonsContainer = root.findViewById(R.id.buttons_container); @@ -145,6 +145,7 @@ public class ImportSettingsFragment extends BaseOsmAndFragment { description = header.findViewById(R.id.description); description.setText(R.string.select_data_to_import); expandableList.addHeaderView(header); + UiUtilities.setupDialogButton(nightMode, continueBtn, DialogButtonType.PRIMARY, getString(R.string.shared_string_continue)); continueBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { From 76315ec0997778098c8608c48dc3bbd8ba05023c Mon Sep 17 00:00:00 2001 From: Dima-1 Date: Thu, 19 Nov 2020 17:51:10 +0200 Subject: [PATCH 06/97] Fix "add photos" bottom sheet --- OsmAnd/res/layout/fragment_opr_login.xml | 109 +++++++------ OsmAnd/res/layout/opr_add_photo.xml | 9 +- OsmAnd/res/values/sizes.xml | 1 + .../AddPhotosBottomSheetDialogFragment.java | 148 ++++++++++++------ 4 files changed, 172 insertions(+), 95 deletions(-) diff --git a/OsmAnd/res/layout/fragment_opr_login.xml b/OsmAnd/res/layout/fragment_opr_login.xml index 59c31069b9..5c5d4c23b5 100644 --- a/OsmAnd/res/layout/fragment_opr_login.xml +++ b/OsmAnd/res/layout/fragment_opr_login.xml @@ -1,14 +1,15 @@ - + android:background="?attr/bg_color" + android:clickable="true" + android:focusable="true" + android:orientation="vertical"> @@ -20,55 +21,71 @@ android:layout_height="match_parent" android:layout_gravity="start" android:contentDescription="@string/shared_string_back" - app:tint="@color/icon_color_default_light" - app:srcCompat="@drawable/ic_arrow_back"/> + app:srcCompat="@drawable/ic_arrow_back" + app:tint="@color/icon_color_default_light" /> - + - + + - + + + + + + android:layout_height="wrap_content" + android:layout_marginLeft="@dimen/content_padding" + android:layout_marginTop="@dimen/content_padding_small" + android:layout_marginRight="@dimen/content_padding" + android:layout_marginBottom="@dimen/content_padding_small" + android:layout_alignParentBottom="true" + android:orientation="vertical"> - \ No newline at end of file + \ No newline at end of file diff --git a/OsmAnd/res/layout/opr_add_photo.xml b/OsmAnd/res/layout/opr_add_photo.xml index 827fda4a16..80d43411fe 100644 --- a/OsmAnd/res/layout/opr_add_photo.xml +++ b/OsmAnd/res/layout/opr_add_photo.xml @@ -7,12 +7,11 @@ + osmand:srcCompat="@drawable/ic_action_photo_upload_colored" /> diff --git a/OsmAnd/res/values/sizes.xml b/OsmAnd/res/values/sizes.xml index 0cb79d23d1..64ab1cc330 100644 --- a/OsmAnd/res/values/sizes.xml +++ b/OsmAnd/res/values/sizes.xml @@ -289,6 +289,7 @@ 1.5 128dp 8dp + 28dp 236dp 68dp diff --git a/OsmAnd/src/net/osmand/plus/openplacereviews/AddPhotosBottomSheetDialogFragment.java b/OsmAnd/src/net/osmand/plus/openplacereviews/AddPhotosBottomSheetDialogFragment.java index 4a55e9b425..dae4fcad4b 100644 --- a/OsmAnd/src/net/osmand/plus/openplacereviews/AddPhotosBottomSheetDialogFragment.java +++ b/OsmAnd/src/net/osmand/plus/openplacereviews/AddPhotosBottomSheetDialogFragment.java @@ -1,74 +1,128 @@ package net.osmand.plus.openplacereviews; -import android.app.Activity; +import android.content.Context; import android.os.Bundle; +import android.text.SpannableString; +import android.text.Spanned; import android.view.View; +import android.widget.TextView; import androidx.annotation.NonNull; import androidx.fragment.app.FragmentActivity; import androidx.fragment.app.FragmentManager; +import net.osmand.PlatformUtil; +import net.osmand.plus.OsmandApplication; import net.osmand.plus.R; import net.osmand.plus.UiUtilities; -import net.osmand.plus.activities.MapActivity; +import net.osmand.plus.UiUtilities.DialogButtonType; import net.osmand.plus.base.MenuBottomSheetDialogFragment; -import net.osmand.plus.base.bottomsheetmenu.BottomSheetItemButton; import net.osmand.plus.base.bottomsheetmenu.SimpleBottomSheetItem; -import net.osmand.plus.base.bottomsheetmenu.simpleitems.DividerItem; import net.osmand.plus.base.bottomsheetmenu.simpleitems.DividerSpaceItem; +import net.osmand.plus.helpers.FontCache; +import net.osmand.plus.mapillary.MapillaryPlugin; +import net.osmand.plus.widgets.style.CustomTypefaceSpan; + +import org.apache.commons.logging.Log; public class AddPhotosBottomSheetDialogFragment extends MenuBottomSheetDialogFragment { public static final String TAG = AddPhotosBottomSheetDialogFragment.class.getSimpleName(); + private static final Log LOG = PlatformUtil.getLog(AddPhotosBottomSheetDialogFragment.class); + + public static final String OPEN_PLACE_REVIEWS = "OpenPlaceReviews"; + public static final String MAPILLARY = "Mapillary"; + public static final String WEB_WIKIMEDIA = "Web / Wikimedia"; + public static final String OPEN_STREET_MAP = "OpenStreetMap"; @Override public void createMenuItems(Bundle savedInstanceState) { - View mainView = View.inflate(UiUtilities.getThemedContext(getMyApplication(), nightMode), + OsmandApplication app = getMyApplication(); + if (app == null) { + return; + } + View view = View.inflate(UiUtilities.getThemedContext(app, nightMode), R.layout.opr_add_photo, null); + setDescriptionSpan(view); items.add(new SimpleBottomSheetItem.Builder() - .setCustomView(mainView) + .setCustomView(view) .create()); + items.add(new DividerSpaceItem(app, app.getResources().getDimensionPixelSize(R.dimen.text_margin_small))); + } - DividerItem divider = new DividerItem(getContext()); - int contextPadding = getResources().getDimensionPixelSize(R.dimen.content_padding); - int contextPaddingSmall = getResources().getDimensionPixelSize(R.dimen.content_padding_small); - divider.setMargins(contextPadding, contextPadding, contextPadding, contextPaddingSmall); - items.add(divider); + private void setDescriptionSpan(View view) { + String desc = requireContext().getString(R.string.add_photos_descr); + BoldSpannableString ss = new BoldSpannableString(desc, view.getContext()); + ss.setBold(OPEN_PLACE_REVIEWS); + ss.setBold(MAPILLARY); + ss.setBold(WEB_WIKIMEDIA); + ss.setBold(OPEN_STREET_MAP); + view.findViewById(R.id.add_photos_descr).setText(ss); + } - items.add(new BottomSheetItemButton.Builder() - .setTitle(getString(R.string.add_to_opr)) - .setLayoutId(R.layout.bottom_sheet_button) - .setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - FragmentActivity activity = getActivity(); - if (activity != null) { - OprStartFragment.showInstance(activity.getSupportFragmentManager()); - } - dismiss(); - } - }) - .create()); + static class BoldSpannableString extends SpannableString { + Context ctx; - items.add(new DividerSpaceItem(getContext(), contextPaddingSmall)); + public BoldSpannableString(CharSequence source, Context ctx) { + super(source); + this.ctx = ctx; + } - items.add(new BottomSheetItemButton.Builder() - .setButtonType(UiUtilities.DialogButtonType.SECONDARY) - .setTitle(getString(R.string.add_to_mapillary)) - .setLayoutId(R.layout.bottom_sheet_button) - .setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - Activity activity = getActivity(); - if (activity instanceof MapActivity) { - } - dismiss(); - } - }) - .create()); + public void setBold(String boldText) { + String source = toString(); + setSpan(new CustomTypefaceSpan(FontCache.getRobotoMedium(ctx)), + source.indexOf(boldText), source.indexOf(boldText) + boldText.length(), + Spanned.SPAN_INCLUSIVE_INCLUSIVE); + } + } - items.add(new DividerSpaceItem(getContext(), contextPaddingSmall)); + @Override + protected int getThirdBottomButtonTextId() { + return R.string.add_to_opr; + } + + @Override + protected DialogButtonType getThirdBottomButtonType() { + return DialogButtonType.SECONDARY; + } + + @Override + protected int getFirstDividerHeight() { + return getResources().getDimensionPixelSize(R.dimen.bottom_sheet_button_divider_height); + } + + @Override + protected void onThirdBottomButtonClick() { + FragmentActivity activity = getActivity(); + if (activity != null) { + OprStartFragment.showInstance(activity.getSupportFragmentManager()); + } + dismiss(); + } + + @Override + protected int getRightBottomButtonTextId() { + return R.string.add_to_mapillary; + } + + @Override + protected DialogButtonType getRightBottomButtonType() { + return DialogButtonType.SECONDARY; + } + + @Override + protected void onRightBottomButtonClick() { + FragmentActivity activity = getActivity(); + if (activity != null) { + MapillaryPlugin.openMapillary(activity, null); + } + dismiss(); + } + + @Override + protected int getSecondDividerHeight() { + return getResources().getDimensionPixelSize(R.dimen.content_padding_small); } @Override @@ -76,10 +130,14 @@ public class AddPhotosBottomSheetDialogFragment extends MenuBottomSheetDialogFra return R.string.shared_string_cancel; } - public static void showInstance(@NonNull FragmentManager fragmentManager) { - if (!fragmentManager.isStateSaved()) { - AddPhotosBottomSheetDialogFragment fragment = new AddPhotosBottomSheetDialogFragment(); - fragment.show(fragmentManager, TAG); + public static void showInstance(@NonNull FragmentManager fm) { + try { + if (!fm.isStateSaved()) { + AddPhotosBottomSheetDialogFragment fragment = new AddPhotosBottomSheetDialogFragment(); + fragment.show(fm, TAG); + } + } catch (RuntimeException e) { + LOG.error("showInstance", e); } } } \ No newline at end of file From 71753432b9e603154d0a47beaa790d50f2e6148e Mon Sep 17 00:00:00 2001 From: androiddevkkotlin Date: Wed, 18 Nov 2020 23:57:46 +0200 Subject: [PATCH 07/97] Account button on OSM Bottom Sheets Redirect to OSM Settings on acccount click --- .../net/osmand/plus/helpers/IntentHelper.java | 8 +++++++ .../plus/osmedit/OsmEditingFragment.java | 16 +++++++++++++ .../dialogs/SendGpxBottomSheetFragment.java | 24 +++++++++++++++++-- .../SendOsmNoteBottomSheetFragment.java | 19 +++++++++++++++ .../dialogs/SendPoiBottomSheetFragment.java | 20 ++++++++++++++++ 5 files changed, 85 insertions(+), 2 deletions(-) diff --git a/OsmAnd/src/net/osmand/plus/helpers/IntentHelper.java b/OsmAnd/src/net/osmand/plus/helpers/IntentHelper.java index a7d6dd7f79..7f3a9ca30c 100644 --- a/OsmAnd/src/net/osmand/plus/helpers/IntentHelper.java +++ b/OsmAnd/src/net/osmand/plus/helpers/IntentHelper.java @@ -21,6 +21,7 @@ import net.osmand.plus.activities.PluginsFragment; import net.osmand.plus.dashboard.DashboardOnMap.DashboardType; import net.osmand.plus.mapmarkers.MapMarkersDialogFragment; import net.osmand.plus.mapsource.EditMapSourceDialogFragment; +import net.osmand.plus.osmedit.OsmEditingFragment; import net.osmand.plus.search.QuickSearchDialogFragment; import net.osmand.plus.settings.backend.ApplicationMode; import net.osmand.plus.settings.backend.OsmandSettings; @@ -234,6 +235,13 @@ public class IntentHelper { } mapActivity.setIntent(null); } + if (intent.hasExtra(OsmEditingFragment.OPEN_PLUGIN)) { + boolean openPlugins = intent.getBooleanExtra(OsmEditingFragment.OPEN_PLUGIN, false); + if (openPlugins) { + OsmEditingFragment.showInstance(mapActivity.getSupportFragmentManager()); + } + mapActivity.setIntent(null); + } if (intent.hasExtra(BaseSettingsFragment.OPEN_CONFIG_ON_MAP)) { switch (intent.getStringExtra(BaseSettingsFragment.OPEN_CONFIG_ON_MAP)) { case BaseSettingsFragment.MAP_CONFIG: diff --git a/OsmAnd/src/net/osmand/plus/osmedit/OsmEditingFragment.java b/OsmAnd/src/net/osmand/plus/osmedit/OsmEditingFragment.java index d6156bfcfb..ad066bcb39 100644 --- a/OsmAnd/src/net/osmand/plus/osmedit/OsmEditingFragment.java +++ b/OsmAnd/src/net/osmand/plus/osmedit/OsmEditingFragment.java @@ -37,8 +37,11 @@ import static net.osmand.plus.osmedit.OsmEditingPlugin.OSM_EDIT_TAB; public class OsmEditingFragment extends BaseSettingsFragment implements OnPreferenceChanged, ValidateOsmLoginListener, OsmAuthorizationListener { + public static final String TAG = OsmEditingFragment.class.getName(); + private static final Log log = PlatformUtil.getLog(OsmEditingFragment.class); + public static final String OPEN_PLUGIN = "open_plugins"; private static final String OSM_LOGOUT = "osm_logout"; private static final String OPEN_OSM_EDITS = "open_osm_edits"; public static final String OSM_LOGIN_DATA = "osm_login_data"; @@ -197,4 +200,17 @@ public class OsmEditingFragment extends BaseSettingsFragment implements OnPrefer public void authorizationCompleted() { updateAllSettings(); } + + public static boolean showInstance(FragmentManager fragmentManager) { + try { + OsmEditingFragment fragment = new OsmEditingFragment(); + fragmentManager.beginTransaction() + .add(R.id.fragmentContainer, fragment, TAG) + .addToBackStack(TAG) + .commitAllowingStateLoss(); + return true; + } catch (Exception e) { + return false; + } + } } \ No newline at end of file diff --git a/OsmAnd/src/net/osmand/plus/osmedit/dialogs/SendGpxBottomSheetFragment.java b/OsmAnd/src/net/osmand/plus/osmedit/dialogs/SendGpxBottomSheetFragment.java index 324f1f9d13..b2fd8b0da3 100644 --- a/OsmAnd/src/net/osmand/plus/osmedit/dialogs/SendGpxBottomSheetFragment.java +++ b/OsmAnd/src/net/osmand/plus/osmedit/dialogs/SendGpxBottomSheetFragment.java @@ -1,10 +1,13 @@ package net.osmand.plus.osmedit.dialogs; +import android.content.Context; +import android.content.Intent; import android.os.AsyncTask; import android.os.Bundle; import android.text.Editable; import android.view.LayoutInflater; import android.view.View; +import android.widget.LinearLayout; import android.widget.TextView; import androidx.annotation.NonNull; @@ -21,12 +24,14 @@ import net.osmand.plus.OsmandApplication; import net.osmand.plus.R; import net.osmand.plus.UiUtilities; import net.osmand.plus.UiUtilities.DialogButtonType; +import net.osmand.plus.activities.MapActivity; import net.osmand.plus.base.MenuBottomSheetDialogFragment; import net.osmand.plus.base.bottomsheetmenu.SimpleBottomSheetItem; import net.osmand.plus.mapcontextmenu.other.HorizontalSelectionAdapter; import net.osmand.plus.mapcontextmenu.other.HorizontalSelectionAdapter.HorizontalSelectionAdapterListener; import net.osmand.plus.mapcontextmenu.other.HorizontalSelectionAdapter.HorizontalSelectionItem; import net.osmand.plus.myplaces.AvailableGPXFragment.GpxInfo; +import net.osmand.plus.osmedit.OsmEditingFragment; import net.osmand.plus.osmedit.OsmEditingPlugin; import net.osmand.plus.osmedit.OsmEditingPlugin.UploadVisibility; import net.osmand.plus.osmedit.UploadGPXFilesTask; @@ -95,9 +100,15 @@ public class SendGpxBottomSheetFragment extends MenuBottomSheetDialogFragment { visibilityDescription.setText(selectedUploadVisibility.getDescriptionId()); horizontalSelectionAdapter.notifyDataSetChanged(); } - }); - + LinearLayout account = sendOsmPoiView.findViewById(R.id.account_container); + account.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + dismiss(); + showOpenStreetMapScreen(); + } + }); RecyclerView iconCategoriesRecyclerView = sendOsmPoiView.findViewById(R.id.description_view); iconCategoriesRecyclerView.setAdapter(horizontalSelectionAdapter); iconCategoriesRecyclerView.setLayoutManager(new LinearLayoutManager(app, RecyclerView.HORIZONTAL, false)); @@ -109,6 +120,15 @@ public class SendGpxBottomSheetFragment extends MenuBottomSheetDialogFragment { items.add(titleItem); } + private void showOpenStreetMapScreen() { + Bundle params = new Bundle(); + params.putBoolean(OsmEditingFragment.OPEN_PLUGIN, true); + Context context = getView().getContext(); + Intent intent = getActivity().getIntent(); + MapActivity.launchMapActivityMoveToTop(context, intent != null ? intent.getExtras() : null, null, params); + getActivity().onBackPressed(); + } + @Override protected DialogButtonType getRightBottomButtonType() { return DialogButtonType.PRIMARY; diff --git a/OsmAnd/src/net/osmand/plus/osmedit/dialogs/SendOsmNoteBottomSheetFragment.java b/OsmAnd/src/net/osmand/plus/osmedit/dialogs/SendOsmNoteBottomSheetFragment.java index 5046165ba7..8e8e37934c 100644 --- a/OsmAnd/src/net/osmand/plus/osmedit/dialogs/SendOsmNoteBottomSheetFragment.java +++ b/OsmAnd/src/net/osmand/plus/osmedit/dialogs/SendOsmNoteBottomSheetFragment.java @@ -1,6 +1,8 @@ package net.osmand.plus.osmedit.dialogs; import android.app.Activity; +import android.content.Context; +import android.content.Intent; import android.graphics.drawable.Drawable; import android.os.Bundle; import android.view.ContextThemeWrapper; @@ -27,6 +29,7 @@ import net.osmand.plus.activities.MapActivity; import net.osmand.plus.base.MenuBottomSheetDialogFragment; import net.osmand.plus.base.bottomsheetmenu.SimpleBottomSheetItem; import net.osmand.plus.base.bottomsheetmenu.simpleitems.TitleItem; +import net.osmand.plus.osmedit.OsmEditingFragment; import net.osmand.plus.osmedit.OsmNotesPoint; import net.osmand.plus.osmedit.OsmPoint; import net.osmand.plus.osmedit.oauth.OsmOAuthAuthorizationAdapter; @@ -129,6 +132,14 @@ public class SendOsmNoteBottomSheetFragment extends MenuBottomSheetDialogFragmen uploadAnonymously.setPadding(paddingSmall, 0, paddingSmall, 0); } }); + LinearLayout account = accountBlockView.findViewById(R.id.account_container); + account.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + dismiss(); + showOpenStreetMapScreen(); + } + }); final SimpleBottomSheetItem bottomSheetItem = (SimpleBottomSheetItem) new SimpleBottomSheetItem.Builder() .setCustomView(sendOsmNoteView) .create(); @@ -173,6 +184,14 @@ public class SendOsmNoteBottomSheetFragment extends MenuBottomSheetDialogFragmen } } + private void showOpenStreetMapScreen() { + Bundle params = new Bundle(); + params.putBoolean(OsmEditingFragment.OPEN_PLUGIN, true); + Context context = getView().getContext(); + Intent intent = getActivity().getIntent(); + MapActivity.launchMapActivityMoveToTop(context, intent != null ? intent.getExtras() : null, null, params); + } + @Override protected DialogButtonType getRightBottomButtonType() { return (DialogButtonType.PRIMARY); diff --git a/OsmAnd/src/net/osmand/plus/osmedit/dialogs/SendPoiBottomSheetFragment.java b/OsmAnd/src/net/osmand/plus/osmedit/dialogs/SendPoiBottomSheetFragment.java index 748d9504f0..af4c92d4b9 100644 --- a/OsmAnd/src/net/osmand/plus/osmedit/dialogs/SendPoiBottomSheetFragment.java +++ b/OsmAnd/src/net/osmand/plus/osmedit/dialogs/SendPoiBottomSheetFragment.java @@ -1,11 +1,14 @@ package net.osmand.plus.osmedit.dialogs; import android.app.Activity; +import android.content.Context; +import android.content.Intent; import android.os.Bundle; import android.view.ContextThemeWrapper; import android.view.View; import android.widget.CompoundButton; import android.widget.EditText; +import android.widget.LinearLayout; import android.widget.TextView; import androidx.annotation.NonNull; @@ -22,6 +25,7 @@ import net.osmand.plus.activities.MapActivity; import net.osmand.plus.base.MenuBottomSheetDialogFragment; import net.osmand.plus.base.bottomsheetmenu.SimpleBottomSheetItem; import net.osmand.plus.osmedit.OpenstreetmapPoint; +import net.osmand.plus.osmedit.OsmEditingFragment; import net.osmand.plus.osmedit.OsmPoint; import net.osmand.plus.settings.backend.OsmandSettings; import net.osmand.util.Algorithms; @@ -84,12 +88,28 @@ public class SendPoiBottomSheetFragment extends MenuBottomSheetDialogFragment { closeChangeSet.setPadding(paddingSmall, 0, paddingSmall, 0); } }); + LinearLayout account = sendOsmPoiView.findViewById(R.id.account_container); + account.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + dismiss(); + showOpenStreetMapScreen(); + } + }); final SimpleBottomSheetItem titleItem = (SimpleBottomSheetItem) new SimpleBottomSheetItem.Builder() .setCustomView(sendOsmPoiView) .create(); items.add(titleItem); } + private void showOpenStreetMapScreen() { + Bundle params = new Bundle(); + params.putBoolean(OsmEditingFragment.OPEN_PLUGIN, true); + Context context = getView().getContext(); + Intent intent = getActivity().getIntent(); + MapActivity.launchMapActivityMoveToTop(context, intent != null ? intent.getExtras() : null, null, params); + } + public static void showInstance(@NonNull FragmentManager fm, @NonNull OsmPoint[] points) { try { if (!fm.isStateSaved()) { From 6c3eda0faafccea3c7965ab940e640b0597e9ec9 Mon Sep 17 00:00:00 2001 From: androiddevkkotlin Date: Thu, 19 Nov 2020 00:38:23 +0200 Subject: [PATCH 08/97] Update SendGpxBottomSheetFragment.java --- .../osmand/plus/osmedit/dialogs/SendGpxBottomSheetFragment.java | 1 - 1 file changed, 1 deletion(-) diff --git a/OsmAnd/src/net/osmand/plus/osmedit/dialogs/SendGpxBottomSheetFragment.java b/OsmAnd/src/net/osmand/plus/osmedit/dialogs/SendGpxBottomSheetFragment.java index b2fd8b0da3..9a3209fdc3 100644 --- a/OsmAnd/src/net/osmand/plus/osmedit/dialogs/SendGpxBottomSheetFragment.java +++ b/OsmAnd/src/net/osmand/plus/osmedit/dialogs/SendGpxBottomSheetFragment.java @@ -126,7 +126,6 @@ public class SendGpxBottomSheetFragment extends MenuBottomSheetDialogFragment { Context context = getView().getContext(); Intent intent = getActivity().getIntent(); MapActivity.launchMapActivityMoveToTop(context, intent != null ? intent.getExtras() : null, null, params); - getActivity().onBackPressed(); } @Override From a992e4cefc990b2e25a808c40b341ebcdf86e439 Mon Sep 17 00:00:00 2001 From: androiddevkkotlin Date: Thu, 19 Nov 2020 20:56:40 +0200 Subject: [PATCH 09/97] Go back to previous activity, refactor --- .../net/osmand/plus/helpers/IntentHelper.java | 8 ----- .../plus/myplaces/FavoritesActivity.java | 17 ++++++++-- .../plus/osmedit/OsmEditingFragment.java | 29 ++++++++-------- .../dialogs/SendGpxBottomSheetFragment.java | 33 +++++++++++++------ .../SendOsmNoteBottomSheetFragment.java | 18 ++++------ .../dialogs/SendPoiBottomSheetFragment.java | 22 +++++-------- 6 files changed, 66 insertions(+), 61 deletions(-) diff --git a/OsmAnd/src/net/osmand/plus/helpers/IntentHelper.java b/OsmAnd/src/net/osmand/plus/helpers/IntentHelper.java index 7f3a9ca30c..a7d6dd7f79 100644 --- a/OsmAnd/src/net/osmand/plus/helpers/IntentHelper.java +++ b/OsmAnd/src/net/osmand/plus/helpers/IntentHelper.java @@ -21,7 +21,6 @@ import net.osmand.plus.activities.PluginsFragment; import net.osmand.plus.dashboard.DashboardOnMap.DashboardType; import net.osmand.plus.mapmarkers.MapMarkersDialogFragment; import net.osmand.plus.mapsource.EditMapSourceDialogFragment; -import net.osmand.plus.osmedit.OsmEditingFragment; import net.osmand.plus.search.QuickSearchDialogFragment; import net.osmand.plus.settings.backend.ApplicationMode; import net.osmand.plus.settings.backend.OsmandSettings; @@ -235,13 +234,6 @@ public class IntentHelper { } mapActivity.setIntent(null); } - if (intent.hasExtra(OsmEditingFragment.OPEN_PLUGIN)) { - boolean openPlugins = intent.getBooleanExtra(OsmEditingFragment.OPEN_PLUGIN, false); - if (openPlugins) { - OsmEditingFragment.showInstance(mapActivity.getSupportFragmentManager()); - } - mapActivity.setIntent(null); - } if (intent.hasExtra(BaseSettingsFragment.OPEN_CONFIG_ON_MAP)) { switch (intent.getStringExtra(BaseSettingsFragment.OPEN_CONFIG_ON_MAP)) { case BaseSettingsFragment.MAP_CONFIG: diff --git a/OsmAnd/src/net/osmand/plus/myplaces/FavoritesActivity.java b/OsmAnd/src/net/osmand/plus/myplaces/FavoritesActivity.java index c77cfbfc0d..43e1e73cc8 100644 --- a/OsmAnd/src/net/osmand/plus/myplaces/FavoritesActivity.java +++ b/OsmAnd/src/net/osmand/plus/myplaces/FavoritesActivity.java @@ -60,6 +60,8 @@ public class FavoritesActivity extends TabActivity { private int tabSize; private ImportHelper importHelper; + private ViewPager viewPager; + private Bundle intentParams = null; @Override @@ -80,7 +82,7 @@ public class FavoritesActivity extends TabActivity { List mTabs = getTabItems(); setTabs(mTabs); - ViewPager mViewPager = (ViewPager) findViewById(R.id.pager); + viewPager = findViewById(R.id.pager); if (savedInstanceState == null) { Intent intent = getIntent(); if (intent != null && intent.hasExtra(MapActivity.INTENT_PARAMS)) { @@ -93,7 +95,7 @@ public class FavoritesActivity extends TabActivity { break; } } - mViewPager.setCurrentItem(pagerItem, false); + viewPager.setCurrentItem(pagerItem, false); } } } @@ -191,6 +193,17 @@ public class FavoritesActivity extends TabActivity { return mTabs; } + public Bundle storeCurrentState() { + int currentItem = viewPager.getCurrentItem(); + if (currentItem >= 0 && currentItem < fragList.size()) { + FavoritesFragmentStateHolder stateHolder = fragList.get(currentItem).get(); + if (stateHolder != null) { + return stateHolder.storeState(); + } + } + return null; + } + @Override public void onAttachFragment(Fragment fragment) { if (fragment instanceof FavoritesFragmentStateHolder) { diff --git a/OsmAnd/src/net/osmand/plus/osmedit/OsmEditingFragment.java b/OsmAnd/src/net/osmand/plus/osmedit/OsmEditingFragment.java index ad066bcb39..c590f80b95 100644 --- a/OsmAnd/src/net/osmand/plus/osmedit/OsmEditingFragment.java +++ b/OsmAnd/src/net/osmand/plus/osmedit/OsmEditingFragment.java @@ -9,6 +9,8 @@ import android.view.LayoutInflater; import android.view.View; import android.widget.TextView; +import androidx.activity.OnBackPressedCallback; +import androidx.fragment.app.FragmentActivity; import androidx.fragment.app.FragmentManager; import androidx.preference.Preference; import androidx.preference.PreferenceViewHolder; @@ -37,11 +39,8 @@ import static net.osmand.plus.osmedit.OsmEditingPlugin.OSM_EDIT_TAB; public class OsmEditingFragment extends BaseSettingsFragment implements OnPreferenceChanged, ValidateOsmLoginListener, OsmAuthorizationListener { - public static final String TAG = OsmEditingFragment.class.getName(); - private static final Log log = PlatformUtil.getLog(OsmEditingFragment.class); - public static final String OPEN_PLUGIN = "open_plugins"; private static final String OSM_LOGOUT = "osm_logout"; private static final String OPEN_OSM_EDITS = "open_osm_edits"; public static final String OSM_LOGIN_DATA = "osm_login_data"; @@ -53,6 +52,17 @@ public class OsmEditingFragment extends BaseSettingsFragment implements OnPrefer public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); authorizationAdapter = app.getOsmOAuthHelper().getAuthorizationAdapter(); + + FragmentActivity activity = requireMyActivity(); + activity.getOnBackPressedDispatcher().addCallback(this, new OnBackPressedCallback(true) { + public void handleOnBackPressed() { + MapActivity mapActivity = getMapActivity(); + if (mapActivity != null) { + mapActivity.launchPrevActivityIntent(); + } + dismiss(); + } + }); } @Override @@ -200,17 +210,4 @@ public class OsmEditingFragment extends BaseSettingsFragment implements OnPrefer public void authorizationCompleted() { updateAllSettings(); } - - public static boolean showInstance(FragmentManager fragmentManager) { - try { - OsmEditingFragment fragment = new OsmEditingFragment(); - fragmentManager.beginTransaction() - .add(R.id.fragmentContainer, fragment, TAG) - .addToBackStack(TAG) - .commitAllowingStateLoss(); - return true; - } catch (Exception e) { - return false; - } - } } \ No newline at end of file diff --git a/OsmAnd/src/net/osmand/plus/osmedit/dialogs/SendGpxBottomSheetFragment.java b/OsmAnd/src/net/osmand/plus/osmedit/dialogs/SendGpxBottomSheetFragment.java index 9a3209fdc3..ed982747b0 100644 --- a/OsmAnd/src/net/osmand/plus/osmedit/dialogs/SendGpxBottomSheetFragment.java +++ b/OsmAnd/src/net/osmand/plus/osmedit/dialogs/SendGpxBottomSheetFragment.java @@ -1,7 +1,5 @@ package net.osmand.plus.osmedit.dialogs; -import android.content.Context; -import android.content.Intent; import android.os.AsyncTask; import android.os.Bundle; import android.text.Editable; @@ -31,16 +29,19 @@ import net.osmand.plus.mapcontextmenu.other.HorizontalSelectionAdapter; import net.osmand.plus.mapcontextmenu.other.HorizontalSelectionAdapter.HorizontalSelectionAdapterListener; import net.osmand.plus.mapcontextmenu.other.HorizontalSelectionAdapter.HorizontalSelectionItem; import net.osmand.plus.myplaces.AvailableGPXFragment.GpxInfo; -import net.osmand.plus.osmedit.OsmEditingFragment; +import net.osmand.plus.myplaces.FavoritesActivity; import net.osmand.plus.osmedit.OsmEditingPlugin; import net.osmand.plus.osmedit.OsmEditingPlugin.UploadVisibility; import net.osmand.plus.osmedit.UploadGPXFilesTask; import net.osmand.plus.settings.backend.OsmandSettings; +import net.osmand.plus.settings.fragments.BaseSettingsFragment; import net.osmand.util.Algorithms; import java.util.ArrayList; import java.util.List; +import static net.osmand.plus.settings.fragments.BaseSettingsFragment.SettingsScreenType.OPEN_STREET_MAP_EDITING; + public class SendGpxBottomSheetFragment extends MenuBottomSheetDialogFragment { public static final String TAG = SendGpxBottomSheetFragment.class.getSimpleName(); @@ -105,8 +106,11 @@ public class SendGpxBottomSheetFragment extends MenuBottomSheetDialogFragment { account.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { + FragmentActivity activity = getActivity(); + if (activity != null) { + showOpenStreetMapScreen(activity); + } dismiss(); - showOpenStreetMapScreen(); } }); RecyclerView iconCategoriesRecyclerView = sendOsmPoiView.findViewById(R.id.description_view); @@ -120,12 +124,21 @@ public class SendGpxBottomSheetFragment extends MenuBottomSheetDialogFragment { items.add(titleItem); } - private void showOpenStreetMapScreen() { - Bundle params = new Bundle(); - params.putBoolean(OsmEditingFragment.OPEN_PLUGIN, true); - Context context = getView().getContext(); - Intent intent = getActivity().getIntent(); - MapActivity.launchMapActivityMoveToTop(context, intent != null ? intent.getExtras() : null, null, params); + protected static void showOpenStreetMapScreen(@NonNull FragmentActivity activity) { + if (activity instanceof MapActivity) { + BaseSettingsFragment.showInstance(activity, OPEN_STREET_MAP_EDITING); + } else { + Bundle prevIntentParams = null; + if (activity instanceof FavoritesActivity) { + prevIntentParams = ((FavoritesActivity) activity).storeCurrentState(); + } else if (activity.getIntent() != null) { + prevIntentParams = activity.getIntent().getExtras(); + } + Bundle params = new Bundle(); + params.putString(BaseSettingsFragment.OPEN_SETTINGS, OPEN_STREET_MAP_EDITING.name()); + + MapActivity.launchMapActivityMoveToTop(activity, prevIntentParams, null, params); + } } @Override diff --git a/OsmAnd/src/net/osmand/plus/osmedit/dialogs/SendOsmNoteBottomSheetFragment.java b/OsmAnd/src/net/osmand/plus/osmedit/dialogs/SendOsmNoteBottomSheetFragment.java index 8e8e37934c..d26c1ac212 100644 --- a/OsmAnd/src/net/osmand/plus/osmedit/dialogs/SendOsmNoteBottomSheetFragment.java +++ b/OsmAnd/src/net/osmand/plus/osmedit/dialogs/SendOsmNoteBottomSheetFragment.java @@ -1,8 +1,6 @@ package net.osmand.plus.osmedit.dialogs; import android.app.Activity; -import android.content.Context; -import android.content.Intent; import android.graphics.drawable.Drawable; import android.os.Bundle; import android.view.ContextThemeWrapper; @@ -16,6 +14,7 @@ import android.widget.TextView; import androidx.annotation.NonNull; import androidx.appcompat.widget.SwitchCompat; import androidx.fragment.app.Fragment; +import androidx.fragment.app.FragmentActivity; import androidx.fragment.app.FragmentManager; import com.google.android.material.textfield.TextInputLayout; @@ -29,7 +28,6 @@ import net.osmand.plus.activities.MapActivity; import net.osmand.plus.base.MenuBottomSheetDialogFragment; import net.osmand.plus.base.bottomsheetmenu.SimpleBottomSheetItem; import net.osmand.plus.base.bottomsheetmenu.simpleitems.TitleItem; -import net.osmand.plus.osmedit.OsmEditingFragment; import net.osmand.plus.osmedit.OsmNotesPoint; import net.osmand.plus.osmedit.OsmPoint; import net.osmand.plus.osmedit.oauth.OsmOAuthAuthorizationAdapter; @@ -43,6 +41,7 @@ import org.apache.commons.logging.Log; import static net.osmand.plus.UiUtilities.setupDialogButton; import static net.osmand.plus.osmedit.OsmEditingFragment.OSM_LOGIN_DATA; import static net.osmand.plus.osmedit.ValidateOsmLoginDetailsTask.ValidateOsmLoginListener; +import static net.osmand.plus.osmedit.dialogs.SendGpxBottomSheetFragment.showOpenStreetMapScreen; import static net.osmand.plus.osmedit.dialogs.SendPoiDialogFragment.OPENSTREETMAP_POINT; import static net.osmand.plus.osmedit.dialogs.SendPoiDialogFragment.ProgressDialogPoiUploader; import static net.osmand.plus.osmedit.dialogs.SendPoiDialogFragment.SimpleProgressDialogPoiUploader; @@ -136,8 +135,11 @@ public class SendOsmNoteBottomSheetFragment extends MenuBottomSheetDialogFragmen account.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { + FragmentActivity activity = getActivity(); + if (activity != null) { + showOpenStreetMapScreen(activity); + } dismiss(); - showOpenStreetMapScreen(); } }); final SimpleBottomSheetItem bottomSheetItem = (SimpleBottomSheetItem) new SimpleBottomSheetItem.Builder() @@ -184,14 +186,6 @@ public class SendOsmNoteBottomSheetFragment extends MenuBottomSheetDialogFragmen } } - private void showOpenStreetMapScreen() { - Bundle params = new Bundle(); - params.putBoolean(OsmEditingFragment.OPEN_PLUGIN, true); - Context context = getView().getContext(); - Intent intent = getActivity().getIntent(); - MapActivity.launchMapActivityMoveToTop(context, intent != null ? intent.getExtras() : null, null, params); - } - @Override protected DialogButtonType getRightBottomButtonType() { return (DialogButtonType.PRIMARY); diff --git a/OsmAnd/src/net/osmand/plus/osmedit/dialogs/SendPoiBottomSheetFragment.java b/OsmAnd/src/net/osmand/plus/osmedit/dialogs/SendPoiBottomSheetFragment.java index af4c92d4b9..42ba887996 100644 --- a/OsmAnd/src/net/osmand/plus/osmedit/dialogs/SendPoiBottomSheetFragment.java +++ b/OsmAnd/src/net/osmand/plus/osmedit/dialogs/SendPoiBottomSheetFragment.java @@ -1,8 +1,6 @@ package net.osmand.plus.osmedit.dialogs; import android.app.Activity; -import android.content.Context; -import android.content.Intent; import android.os.Bundle; import android.view.ContextThemeWrapper; import android.view.View; @@ -13,6 +11,7 @@ import android.widget.TextView; import androidx.annotation.NonNull; import androidx.appcompat.widget.SwitchCompat; +import androidx.fragment.app.FragmentActivity; import androidx.fragment.app.FragmentManager; import net.osmand.PlatformUtil; @@ -25,7 +24,6 @@ import net.osmand.plus.activities.MapActivity; import net.osmand.plus.base.MenuBottomSheetDialogFragment; import net.osmand.plus.base.bottomsheetmenu.SimpleBottomSheetItem; import net.osmand.plus.osmedit.OpenstreetmapPoint; -import net.osmand.plus.osmedit.OsmEditingFragment; import net.osmand.plus.osmedit.OsmPoint; import net.osmand.plus.settings.backend.OsmandSettings; import net.osmand.util.Algorithms; @@ -35,7 +33,10 @@ import org.apache.commons.logging.Log; import java.util.HashMap; import java.util.Map; -import static net.osmand.plus.osmedit.dialogs.SendPoiDialogFragment.*; +import static net.osmand.plus.osmedit.dialogs.SendGpxBottomSheetFragment.showOpenStreetMapScreen; +import static net.osmand.plus.osmedit.dialogs.SendPoiDialogFragment.OPENSTREETMAP_POINT; +import static net.osmand.plus.osmedit.dialogs.SendPoiDialogFragment.ProgressDialogPoiUploader; +import static net.osmand.plus.osmedit.dialogs.SendPoiDialogFragment.SimpleProgressDialogPoiUploader; public class SendPoiBottomSheetFragment extends MenuBottomSheetDialogFragment { @@ -92,8 +93,11 @@ public class SendPoiBottomSheetFragment extends MenuBottomSheetDialogFragment { account.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { + FragmentActivity activity = getActivity(); + if (activity != null) { + showOpenStreetMapScreen(activity); + } dismiss(); - showOpenStreetMapScreen(); } }); final SimpleBottomSheetItem titleItem = (SimpleBottomSheetItem) new SimpleBottomSheetItem.Builder() @@ -102,14 +106,6 @@ public class SendPoiBottomSheetFragment extends MenuBottomSheetDialogFragment { items.add(titleItem); } - private void showOpenStreetMapScreen() { - Bundle params = new Bundle(); - params.putBoolean(OsmEditingFragment.OPEN_PLUGIN, true); - Context context = getView().getContext(); - Intent intent = getActivity().getIntent(); - MapActivity.launchMapActivityMoveToTop(context, intent != null ? intent.getExtras() : null, null, params); - } - public static void showInstance(@NonNull FragmentManager fm, @NonNull OsmPoint[] points) { try { if (!fm.isStateSaved()) { From 78cead47f74256cee205444180a12dcd3da68d22 Mon Sep 17 00:00:00 2001 From: ssantos Date: Thu, 19 Nov 2020 21:42:59 +0000 Subject: [PATCH 10/97] Translated using Weblate (Portuguese) Currently translated at 99.2% (3533 of 3561 strings) --- OsmAnd/res/values-pt/strings.xml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/OsmAnd/res/values-pt/strings.xml b/OsmAnd/res/values-pt/strings.xml index 0c7ff7cbac..5cef9b374a 100644 --- a/OsmAnd/res/values-pt/strings.xml +++ b/OsmAnd/res/values-pt/strings.xml @@ -3980,4 +3980,13 @@ As fotos são fornecidas pelo projeto de dados abertos OpenPlaceReviews.org. Para enviar as suas fotos precisa cadastrar-se no site. Criar uma conta Já tenho uma conta + Histórico de pesquisa + Caiaque + Barco a motor + Recursos + Tamanho aproximado do ficheiro + Selecione os dados a serem exportados para o ficheiro. + Necessário para a importação + O seu aparelho só tem %1$s livre. Por favor, libere algum espaço ou desmarque alguns itens para exportar. + Não há espaço suficiente \ No newline at end of file From 44238287449214abb6670950068613afdde7fc93 Mon Sep 17 00:00:00 2001 From: Ldm Public Date: Thu, 19 Nov 2020 13:49:00 +0000 Subject: [PATCH 11/97] Translated using Weblate (French) Currently translated at 99.7% (3552 of 3561 strings) --- OsmAnd/res/values-fr/strings.xml | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/OsmAnd/res/values-fr/strings.xml b/OsmAnd/res/values-fr/strings.xml index c48a9fb01e..3a02fa25d9 100644 --- a/OsmAnd/res/values-fr/strings.xml +++ b/OsmAnd/res/values-fr/strings.xml @@ -3899,7 +3899,7 @@ Développement du transport public autochtone Connectez-vous avec OAuth Supprimer le jeton OAuth d\'OpenStreetMap - Déconnexion réussie + Déconnecté Le fichier est déjà importé dans OsmAnd Utiliser un algorithme de routage A* à 2 phases Le paiement sera débité de votre compte AppGallery dès confirmation de l\'achat. @@ -3930,10 +3930,10 @@ L\'abonnement OsmAnd Live est en attente L’abonnement OsmAnd Live a expiré L\'abonnement OsmAnd Live a été suspendu - Se connecter à OpenStreetMap - Se connecter à OpenStreetMap.org + Se connecter pour OpenStreetMap + Se connecter pour OpenStreetMap.org Identifiant - Utiliser un identifiant et un mot de passe + Se connecter avec un identifiant et un mot de passe Compte Gérer l\'abonnement Se connecter avec OpenStreetMap @@ -3955,4 +3955,11 @@ Les photos sont fournies par le projet open data OpenPlaceReviews.org. Pour envoyer vos photos, vous devez au préalable être inscrit sur ce site Web. Historique de recherche Kayak + Votre appareil n\'a que %1$s disponible. Veuillez libérer de l\'espace ou désélectionner l\'export pour certains éléments. + Bateau à moteur + Ressources + Taille approximative du fichier + Sélectionnez les données à exporter dans le fichier. + Nécessaire pour l\'import + L\'espace disponible est insuffisant \ No newline at end of file From 7598fe241efcdb438ed8721dfd5b39de6c7a59b1 Mon Sep 17 00:00:00 2001 From: Ihor Hordiichuk Date: Thu, 19 Nov 2020 18:28:17 +0000 Subject: [PATCH 12/97] Translated using Weblate (Ukrainian) Currently translated at 100.0% (3561 of 3561 strings) --- OsmAnd/res/values-uk/strings.xml | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/OsmAnd/res/values-uk/strings.xml b/OsmAnd/res/values-uk/strings.xml index 61ff054492..7b6ac19748 100644 --- a/OsmAnd/res/values-uk/strings.xml +++ b/OsmAnd/res/values-uk/strings.xml @@ -3914,10 +3914,10 @@ Двофазна маршрутизація для автомобільної навігації. Розвиток власного громадського транспорту Перемкнутися на розрахунок маршруту громадським транспортом за допомогою Java (безпечний) - Виконати вхід OAuth для користування функцією osmedit + Увійти за допомогою OAuth для користування функцією osmedit Увійти через OAuth Очистити токен OAuth OpenStreetMap - Ви успішно вийшли + Ви вийшли OsmAnd дані в реальному часі Уникати пішохідних шляхів Уникати пішохідних шляхів @@ -3951,10 +3951,10 @@ Передплата OsmAnd Live на утриманні Увійти до OpenStreetMap.org Увійти до OpenStreetMap.org - Увійдіть, щоб вивантажити нові або внесені зміни. + Увійдіть, щоб вивантажити нові або внесені зміни, \n -\nВи можете увійти, за допомогою безпечного методу OAuth, або скористатися своїм ім\'ям та паролем. - Використовувати ім\'я і пароль +\nабо за допомогою безпечного методу OAuth або свого ім\'я та паролю. + Увійти за допомогою імені користувача і паролю Обліковий запис Ім\'я користувача Увійти за допомогою OpenStreetMap @@ -3967,14 +3967,20 @@ «Відстежуваний» означає, що трек не з\'явиться в жодному загальнодоступному списку, але обробка точок з позначками часу від нього (які не можуть бути безпосередньо пов’язані з вами) виконується за допомогою завантажень із загальнодоступного API GPS. Закрити примітку OSM Коментувати примітку OSM - Ви можете увійти за допомогою безпечного методу OAuth або застосувавши свої ім\'я користувача й пароль. + Увійдіть за допомогою безпечного методу OAuth або застосувавши свої ім\'я користувача й пароль. Додати світлини Зареєструватися на \nOpenPlaceReviews.org - Світлини надаються проєктом відкритих даних OpenPlaceReviews.org. Щоб завантажити світлини зареєструйтеся на сайті. + Увійдіть на вебсайт проєкту відкритих даних OpenPlaceReviews.org, щоб завантажити ще більше світлин. Створити обліковий запис У мене вже є обліковий запис Журнал пошуку Каяк Моторний човен + Ресурси + Приблизний розмір файлу + Виберіть дані, які потрібно експортувати до файлу. + Необхідно для імпорту + На вашому пристрої лише %1$s вільного простору. Звільніть місце або приберіть позначки з деяких елементів для експорту. + Бракує простору \ No newline at end of file From 14288fcb2eb723044083f8eb6f6b3366907c387e Mon Sep 17 00:00:00 2001 From: jan madsen Date: Thu, 19 Nov 2020 14:15:46 +0000 Subject: [PATCH 13/97] Translated using Weblate (Danish) Currently translated at 91.8% (3272 of 3561 strings) --- OsmAnd/res/values-da/strings.xml | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/OsmAnd/res/values-da/strings.xml b/OsmAnd/res/values-da/strings.xml index 3943611228..cd1249d5fd 100644 --- a/OsmAnd/res/values-da/strings.xml +++ b/OsmAnd/res/values-da/strings.xml @@ -3488,7 +3488,7 @@ Vinkel: %s° Vinkel Forbereder - IP typer + IP-typer Intet valgt Genveje Profiler @@ -3549,9 +3549,9 @@ Den importerede profil indeholder yderligere data. Klik på Importer for kun at importere profildata, eller vælg yderligere data, der skal importeres. Ruten vil blive genberegnet, hvis afstanden til ruten er længere end angivet parameter Mindste afstand for at genberegne ruten - OsmAnd har allerede elementer med de samme navne, som dem, der importeres. -\n -\nVælg en aktion. + OsmAnd har allerede elementer med de samme navne som de importerede. +\n +\nVælg en handling. Det angivne %1$s findes allerede. Mindste vinkel mellem placering og rute Ekstra lige segment mellem placering og den beregnede rute vises, indtil ruten genberegnes @@ -3790,4 +3790,6 @@ Start-/slutikoner %1$s — %2$s Hul + Der er ikke plads nok + Længdegrænse \ No newline at end of file From 855cf16e30bc30150a4e77f0bd53f429eae9459e Mon Sep 17 00:00:00 2001 From: Michal L Date: Thu, 19 Nov 2020 14:49:18 +0000 Subject: [PATCH 14/97] Translated using Weblate (Polish) Currently translated at 99.1% (3529 of 3561 strings) --- OsmAnd/res/values-pl/strings.xml | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/OsmAnd/res/values-pl/strings.xml b/OsmAnd/res/values-pl/strings.xml index 5a3ad96826..f03716f861 100644 --- a/OsmAnd/res/values-pl/strings.xml +++ b/OsmAnd/res/values-pl/strings.xml @@ -1922,7 +1922,7 @@ Subskrypcja umożliwia cogodzinne aktualizacje wszystkich map na całym świecie. \n Część dochodów wraca do społeczności OSM i jest wypłacana za każdy wkład OSM. \n Jeśli kochasz OsmAnd i OSM i chcesz je wspierać i wspierać, jest to idealny sposób, aby to zrobić. - Nazwa pliku zawiera niedozwolony znak + Niedozwolony znak w nazwie pliku Domyślny kolor Wybierz kategorię Proszę wprowadzić kategorię @@ -2526,7 +2526,7 @@ Dodaje cel pośredni Dodaje pierwszy cel pośredni Wyświetl zamknięte uwagi - Pokaż/ukryj uwagi OSM na mapie. + Pokaż lub ukryj uwagi OSM na mapie. GPX - odpowiedni do eksportowania danych do JOSM i innych edytorów OSM. OSC - odpowiedni do eksportowania danych do OSM. Plik GPX @@ -3087,7 +3087,7 @@ Użyj WunderLINQ do kontroli Dodaj co najmniej jeden element do listy w ustawieniach \"Szybkiej Akcji\" Stoki narciarskie do narciarstwa alpejskiego i zjazdowego oraz dostęp do wyciągów narciarskich. - Narty biegowe/nordic ski + Biegi narciarskie i narciarstwo klasyczne Trasy do narciarstwa klasycznego lub biegowego. Turystyka narciarska Trasy wycieczek narciarskich. @@ -3570,7 +3570,7 @@ Przycisk do wyświetlania lub ukrywania warstwy terenu na mapie. Pokaż teren Ukryj teren - Pokaż / ukryj teren + Pokaż lub ukryj teren Nachylenie Włącz, aby wyświetlić cieniowanie wzniesień lub stoków. Możesz przeczytać więcej o tego rodzaju mapach na naszej stronie. Legenda @@ -3700,9 +3700,9 @@ Powrót do edycji Ukryj transport publiczny Pokaż transport publiczny - Pokaż/ukryj transport publiczny - Utwórz / Edytuj użyteczne miejsce - Dodaj / Edytuj Ulubione + Pokaż lub ukryj transport publiczny + Utwórz lub edytuj użyteczne miejsce + Dodaj lub edytuj ulubione miejsce Przycisk akcji przełącza między wybranymi profilami. Dodaj profil Zmiana profilu aplikacji @@ -3910,7 +3910,7 @@ Nazwa: Z – A Nazwa: A – Z Co nowego - Ikony start/koniec + Ikony startu i końca Dziękujemy za zakup \"Linii konturowych\" Subskrypcja naliczona za wybrany okres. Anuluj ją w AppGallery w dowolnym momencie. Płatność zostanie pobrana z konta AppGallery po potwierdzeniu zakupu. @@ -3958,14 +3958,14 @@ Musisz dodać co najmniej dwa punkty Wystąpił problem z Twoją subskrypcją. Kliknij przycisk, aby przejść do ustawień subskrypcji Google Play i naprawić metodę płatności. Subskrypcja OsmAnd Live jest wstrzymana - Login + Nazwa użytkownika Zaloguj się do OpenStreetMap Zaloguj się do OpenStreetMap.org Zaloguj się za pomocą OpenStreetMap Musisz się zalogować, aby przesłać nowe lub zmodyfikowane zmiany. \n \nMożesz zalogować się za pomocą bezpiecznej metody autoryzacji OAuth lub użyć swojego loginu i hasła. - Użyj loginu i hasła + Zaloguj się za pomocą nazwy użytkownika i hasła Konto Zamknij uwagę OSM Skomentuj uwagę OSM @@ -3973,7 +3973,7 @@ Wyślij plik GPX do OpenStreetMap Wpisz tagi oddzielone przecinkami. Możliwość śledzenia oznacza, że ślad nie pojawi się na żadnej publicznej liście, ale punkty śledzenia będą nadal dostępne za pośrednictwem publicznego API GPS ze znacznikami czasu. Inni użytkownicy będą mogli pobrać tylko te przetworzone punkty śledzenia z Twojego śladu, których nie można powiązać bezpośrednio z Tobą. - Możesz zalogować się przy użyciu bezpiecznej metody OAuth lub użyć swojego loginu i hasła. + Zaloguj się przy użyciu bezpiecznej metody autoryzacji OAuth lub użyj swojej nazwy użytkownika i hasła. Dodaj zdjęcie Zarejestruj się w \nOpenPlaceReviews.org From 5f594cf371f8636c9cfd0b603e4cb707cf6250c2 Mon Sep 17 00:00:00 2001 From: Softmap Date: Thu, 19 Nov 2020 19:47:26 +0000 Subject: [PATCH 15/97] Translated using Weblate (Arabic) Currently translated at 100.0% (3561 of 3561 strings) --- OsmAnd/res/values-ar/strings.xml | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/OsmAnd/res/values-ar/strings.xml b/OsmAnd/res/values-ar/strings.xml index 07aaf2352e..7e5f375f16 100644 --- a/OsmAnd/res/values-ar/strings.xml +++ b/OsmAnd/res/values-ar/strings.xml @@ -3909,10 +3909,10 @@ التوجيه على مرحلتين لملاحة السيارة. تطوير النقل العام المحلي قم بالتبديل إلى Java (الآمن) حساب توجيه النقل العام - قم بتسجيل الدخول إلى OAuth لاستخدام ميزات osmedit + سجّل الدخول باستخدام OAuth لاستخدام ميزات osmedit تسجيل الدخول عبر OAuth مسح رمز OpenStreetMap OAuth - تسجيل الخروج بنجاح + تم تسجيل الخروج تم استيراد الملف بالفعل في أوسماند استخدام خوارزمية توجيه من مرحلتين A* %1$s البيانات المتوفرة فقط على الطرق ، تحتاج إلى حساب طريق باستخدام \"الطريق بين النقاط\" للحصول عليها. @@ -3940,32 +3940,38 @@ انتهت صلاحية اشتراك OsmAnd Live تم إيقاف اشتراك OsmAnd Live مؤقتًا اشتراك OsmAnd Live معلق - تسجيل الدخول إلى خريطة الشارع المفتوح + تسجيل الدخول ل OpenStreetMap تسجيل الدخول إلى OpenStreetMap.org - تحتاج إلى تسجيل الدخول لرفع التغييرات الجديدة أو المعدلة. + قم بتسجيل الدخول لرفع التغييرات الجديدة أو المعدلة. \n -\nيمكنك تسجيل الدخول باستخدام طريقة التفويض الآمنة أو استخدام تسجيل الدخول وكلمة المرور. - استخدام تسجيل الدخول وكلمة المرور +\nإما باستخدام OAuth أو باستخدام اسم المستخدم وكلمة المرور. + سجل الدخول باسم المستخدم وكلمة المرور الحساب - تسجيل الدخول + اسم المستخدم \"إمكانية التتبع\" تعني أن التتبع لا يظهر في أي قوائم عامة ولكن نقاط التتبع المعالجة مع طوابع زمنية صادرة عنها(التي لا يمكن أن تكون مرتبطة بك مباشرة) ستظهر خلال التنزيلات من واجهة برمجة التطبيقات GPS API العامة. سجل تاريخ العلامات أرسل ملف GPX إلى OpenStreetMap أدخل العلامات مفصولة بفاصلة. \"خاص\"يعني أن التتبع لن يظهر في أي قوائم عامة ، ولكن نقاط التتبع الصادرة عنه ستظل متاحة من خلال واجهة برمجة تطبيقات GPS API العامة بدون طوابع زمنية ولكن لن يتم ترتيبها ترتيبًا زمنيًا. - قم بتسجيل الدخول باستخدام OpenStreetMap + سجّل الدخول باستخدام OpenStreetMap عام يعني أنه سيتم عرض التتبع بشكل عام في تتبعات GPS الخاصة بك وفي قوائم تتبع GPS العامة. البيانات المقدمة عبر API لا تشير إلى صفحة التتبع الخاصة بك. الطوابع الزمنية لنقاط التتبع غير متاحة من خلال واجهة برمجة تطبيقات GPS API العامة، والنقاط غير مرتبة ترتيبًا زمنيًا. ومع ذلك، لا يزال المستخدمون الآخرون قادرين على تنزيل التتبع الأولي من قائمة التتبع العامة وأي طوابع زمنية مضمنة فيه. متعرف عليه يعني أنه سيتم عرض التتبع بشكل عام في تتبعات GPS الخاصة بك وفي قوائم تتبع GPS العامة، أي سيتمكن المستخدمون الآخرون من تنزيل التتبع الأولي وربطه باسم المستخدم الخاص بك. ستشير البيانات التي يتم تقديمها عبر API نقاط التتبع إلى صفحة التتبع الأصلية الخاصة بك. الطوابع الزمنية لنقاط التتبع متاحة من خلال واجهة برمجة تطبيقات GPS API العامة. أغلاق ملاحظة OSM تعليق ملاحظة OSM - يمكنك تسجيل الدخول باستخدام طريقة OAuth الآمنة أو استخدام تسجيل الدخول وكلمة المرور الخاصة بك. + قم بتسجيل الدخول باستخدام طريقة OAuth الآمنة أو استخدم اسم المستخدم وكلمة المرور. إضافة صورة سجل في \nOpenPlaceReviews.org - يتم توفير الصور من خلال مشروع البيانات المفتوحة OpenPlaceReviews.org. من أجل رفع الصور الخاصة بك، تحتاج إلى الاشتراك بالموقع. + قم بتسجيل الدخول إلى موقع مشروع البيانات المفتوحة OpenPlaceReviews.org لرفع المزيد من الصور. إنشاء حساب جديد لدي حساب بالفعل كاياك (قوارب صغيرة فردية) زورق سجل البحث + جهازك يحتوي على %1$s فقط متاحة . الرجاء إخلاء بعض المساحة أو إلغاء تحديد بعض العناصر للتصدير. + المصادر + حجم الملف التقريبي + حدد البيانات التي سيتم تصديرها إلى الملف. + مطلوب للاستيراد + لا يوجد مساحة كافية \ No newline at end of file From a754644e84a1a5eb9803dabca1a036d138a68fa0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Iv=C3=A1ns?= Date: Thu, 19 Nov 2020 19:39:24 +0000 Subject: [PATCH 16/97] Translated using Weblate (Galician) Currently translated at 100.0% (3561 of 3561 strings) --- OsmAnd/res/values-gl/strings.xml | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/OsmAnd/res/values-gl/strings.xml b/OsmAnd/res/values-gl/strings.xml index 8b24fe075a..62847375d7 100644 --- a/OsmAnd/res/values-gl/strings.xml +++ b/OsmAnd/res/values-gl/strings.xml @@ -3946,7 +3946,7 @@ Lon %2$s Desenvolvemento do transporte público nativo Activar cálculo de enrutamento de transporte público do Java (seguro) Novidades - Inicia sesión co OAuth para empregar as funcións de edición do OSM + Inicia a sesión co OAuth para empregar as funcións de edición do OSM Entrar polo OAuth Limpar token do OpenStreetMap OAuth Sesión rematada @@ -3978,15 +3978,15 @@ Lon %2$s A subscrición do OsmAnd Live foi detida A subscrición do OsmAnd Live está en espera \"Público\" significa que a pista amosarase de xeito público na túa listaxe de pistas e nas listaxes de pistas GPS públicas con marcas de tempo en bruto. Os datos servidos a través da API no farán referencia á túa pácina de pistas. As marcaxes de tempo dos puntos da pista non estarán dispoñíbeis a través da API pública de GPS, aínda que os puntos son ordenados de xeito cronolóxico. - Iniciar sesión no OpenStreetMap - Entrar ó OpenStreetMap.org - Entrar co OpenStreetMap - Precisas iniciar sesión para subir modificacións novas. + Iniciar a sesión no OpenStreetMap + Iniciar a sesión no OpenStreetMap.org + Iniciar a sesión co OpenStreetMap + Inicia a sesión para subir as modificacións novas, \n -\nPodes iniciar sesión empregando o método seguro de OAuth ou empregar o nome de usuario e contrasinal. - Empregar nome de usuario e contrasinal +\nxa sexa co OAuth ou empregando o teu nome de usuario e contrasinal. + Iniciar a sesión co nome de usuario e contrasinal Conta - Iniciar sesión + Nome de usuario Historial de marcaxes Enviar ficheiro GPX ó OpenStreetMap Insire etiquetas separadas por comas. @@ -3995,14 +3995,20 @@ Lon %2$s \"Identificábel\" significa que a pista amosarase de xeito público na túa listaxe de pistas e na listaxe de pistas GPS públicas, é dicir que outros usuarios poderán baixar a pista en bruto e asociala co seu nome de usuario. Os datos servidos a través da API de conxunto de puntos fará referencia á páxina orixinal da pista. Pechar nota do OSM Comentar nota do OSM - Podes iniciar a sesión co método seguro do OAuth ou empregar o nome de usuario e contrasinal. + Inicia a sesión co método seguro do OAuth ou emprega o nome de usuario e contrasinal. Engadir imaxe Rexistrarse no \nOpenPlaceReviews.org - As imaxes son fornecidas polo proxecto de datos abertos OpenPlaceReviews.org. Para subir imaxes tes que rexistrarte no sitio web. + Inicia a sesión no sitio web do proxecto de datos abertos do OpenPlaceReviews.org para subir máis imaxes. Crear nova conta Xa teño unha conta Historial de procura Caiac Lancha a motor + Recursos + Tamaño aproximado do ficheiro + Marca os datos que serán exportados ó ficheiro. + Necesario para importar + O teu dispositivo só ten %1$s libre. Por favor, libera algo de espazo ou desmarca algúns elementos a exportar. + Sen espazo dabondo \ No newline at end of file From f305e4be1393ef44001c296b8f906b3096c140d9 Mon Sep 17 00:00:00 2001 From: jan madsen Date: Thu, 19 Nov 2020 13:51:15 +0000 Subject: [PATCH 17/97] Translated using Weblate (Danish) Currently translated at 98.8% (3817 of 3860 strings) --- OsmAnd/res/values-da/phrases.xml | 30 +++++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/OsmAnd/res/values-da/phrases.xml b/OsmAnd/res/values-da/phrases.xml index 7f1eb79c21..37ed57962e 100644 --- a/OsmAnd/res/values-da/phrases.xml +++ b/OsmAnd/res/values-da/phrases.xml @@ -3808,7 +3808,7 @@ Stand type Ja Nej - Signal for at finde stangen + Internetadgang: kunder Kun når det er tilladt at gå Kontrast Primitiv @@ -3852,4 +3852,32 @@ Små elektriske apparater Afgangstavle Genopfyldning af drikkevand + Nej + Ja + Nej + Ja + Nej + Ja + Repræsentantkontor + Kontor + Honorærkonsul + Generalkonsulat + Konsulært agentur + Ledet af en konsul + Bopæl + Højkommissær + Delegation + Afdeling + Ledet af en ambassadør + Forbindelsesofficerer + Ambassade + Radartårn + Tagterrasse + GPX-punkt + Borgerservice + Immigrant visum + Ikke-immigrant visum + Forbindelsesofficerer + Konsulat + Ambassade \ No newline at end of file From 9606e4136c268fd80520624bde53ce24cc082700 Mon Sep 17 00:00:00 2001 From: Ihor Hordiichuk Date: Thu, 19 Nov 2020 18:45:06 +0000 Subject: [PATCH 18/97] Translated using Weblate (Ukrainian) Currently translated at 100.0% (3860 of 3860 strings) --- OsmAnd/res/values-uk/phrases.xml | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/OsmAnd/res/values-uk/phrases.xml b/OsmAnd/res/values-uk/phrases.xml index cc955e79c5..70d6d83d6b 100644 --- a/OsmAnd/res/values-uk/phrases.xml +++ b/OsmAnd/res/values-uk/phrases.xml @@ -3838,4 +3838,34 @@ Дах Точка GPX Радіолокаційна вежа + Багатонаціональне + Нунціатура + Розділ інтересів + Зв\'язок + Послуги для громадян + Імміграційні візи + Неімміграційні візи + Зв\'язок + Ні + Так + Ні + Так + Ні + Так + Представництво + Офіс + Почесний консул + Генеральне консульство + Консульський офіс + Консульський орган + Очолює консул + Резиденція + Місія + Верховний комісаріат + Делегація + Відділення + Очолює посол + Посольство + Консульство + Посольство \ No newline at end of file From 167e7a8ec57dfde0a97bc64601202f3a64736f0e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Babos=20G=C3=A1bor?= Date: Thu, 19 Nov 2020 22:27:15 +0000 Subject: [PATCH 19/97] Translated using Weblate (Hungarian) Currently translated at 99.1% (3829 of 3860 strings) --- OsmAnd/res/values-hu/phrases.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/OsmAnd/res/values-hu/phrases.xml b/OsmAnd/res/values-hu/phrases.xml index f6fe9f9bfe..771e934b0d 100644 --- a/OsmAnd/res/values-hu/phrases.xml +++ b/OsmAnd/res/values-hu/phrases.xml @@ -3842,4 +3842,5 @@ Internetcsatlakozás: ügyfeleknek Radartorony GPX-pont + Állampolgári szolgáltatások \ No newline at end of file From cf3d5f32b0b5eab73a51a6bb480cf66e6705b19a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Iv=C3=A1ns?= Date: Thu, 19 Nov 2020 20:08:04 +0000 Subject: [PATCH 20/97] Translated using Weblate (Galician) Currently translated at 100.0% (3860 of 3860 strings) --- OsmAnd/res/values-gl/phrases.xml | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/OsmAnd/res/values-gl/phrases.xml b/OsmAnd/res/values-gl/phrases.xml index 955e90963e..1b72fedd88 100644 --- a/OsmAnd/res/values-gl/phrases.xml +++ b/OsmAnd/res/values-gl/phrases.xml @@ -3843,4 +3843,34 @@ Terrazo Punto GPX Torre de radar + Non + Si + Non + Si + Non + Si + Subnacional + Oficina representativa + Oficina + Cónsul honorario + Consulado xeral + Oficina consular + Axencia consular + Dirixido por un cónsul + Residencia + Nunciatura + Misión + Sección de intereses + Alto comisionado + Delegación + Sucursal + Dirixido por un embaixador + Ligazón + Embaixada + Servizos ó cidadán + Visados de inmigrante + Visados de non inmigrante + Ligazón + Consulado + Embaixada \ No newline at end of file From 2abd3e26b847b8f594a0ded9cfc24f2ea1858eed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Priit=20J=C3=B5er=C3=BC=C3=BCt?= Date: Thu, 19 Nov 2020 17:14:22 +0000 Subject: [PATCH 21/97] Translated using Weblate (Estonian) Currently translated at 99.3% (3835 of 3860 strings) --- OsmAnd/res/values-et/phrases.xml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/OsmAnd/res/values-et/phrases.xml b/OsmAnd/res/values-et/phrases.xml index 97af8c5b8c..279982921e 100644 --- a/OsmAnd/res/values-et/phrases.xml +++ b/OsmAnd/res/values-et/phrases.xml @@ -3832,4 +3832,9 @@ Parkimine varjualustes Parkla katusel Radarimast + Residents + Nuntsiatuur + Saatkond + Konsulaat + Saatkond \ No newline at end of file From 26f1fbccdb1b81151da3d7919095ce7a72880e8d Mon Sep 17 00:00:00 2001 From: Franco Date: Thu, 19 Nov 2020 13:43:47 +0000 Subject: [PATCH 22/97] Translated using Weblate (Spanish (Argentina)) Currently translated at 99.9% (3560 of 3561 strings) --- OsmAnd/res/values-es-rAR/strings.xml | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/OsmAnd/res/values-es-rAR/strings.xml b/OsmAnd/res/values-es-rAR/strings.xml index 3d4b451190..1e922a5610 100644 --- a/OsmAnd/res/values-es-rAR/strings.xml +++ b/OsmAnd/res/values-es-rAR/strings.xml @@ -3927,7 +3927,7 @@ Desarrollo nativo del transporte público Cambiar al cálculo de ruta Java (seguro) del transporte público Novedades - Inicia sesión con OAuth para usar las funciones de edición de OSM + Ingresar con OAuth para usar las funciones de edición de OSM Ingresar a través de OAuth Vaciar llave OAuth de OpenStreetMap Sesión finalizada @@ -3958,13 +3958,13 @@ La suscripción a OsmAnd Live se ha pausado La suscripción a OsmAnd Live está en espera Iniciar sesión en OpenStreetMap - Ingresar a OpenStreetMap.org - Debes iniciar sesión para subir cambios nuevos o modificados. + Ingresar en OpenStreetMap.org + Inicia sesión para subir los cambios nuevos o modificados, \n -\nPuedes ingresar usando el método seguro de OAuth o usar el nombre de usuario y contraseña. - Usar nombre de usuario y contraseña +\nya sea con OAuth o usando el nombre de usuario y contraseña. + Ingresar nombre de usuario y contraseña Cuenta - Iniciar sesión + Nombre de usuario Ingresar con OpenStreetMap Historial de marcadores Enviar archivo GPX a OpenStreetMap @@ -3975,14 +3975,20 @@ «Identificable» significa que la traza se mostrará públicamente en tu listado de trazas y en el listado de trazas GPS públicas, es decir que otros usuarios podrán descargar la traza en bruto y asociarla con su nombre de usuario. Los datos servidos a través de la API de conjunto de puntos hará referencia a la página original de la traza. Cerrar nota de OSM Comentar nota de OSM - Puedes iniciar sesión con el método seguro de OAuth o usar el nombre de usuario y contraseña. + Ingresa usando el método seguro de OAuth o usa el nombre de usuario y contraseña. Añadir foto Registrarse en \nOpenPlaceReviews.org - Las fotos son provistas por el proyecto de datos abiertos OpenPlaceReviews.org. Para subir fotos debes registrarte en el sitio web. + Ingresa en el sitio web del proyecto de datos abiertos OpenPlaceReviews.org para subir más fotos. Crear nueva cuenta Ya tengo cuenta Historial de búsqueda Kayak Lancha a motor + Recursos + Tamaño aproximado del archivo + Marca los datos que serán exportados al archivo. + Necesario para importar + El dispositivo sólo tiene %1$s libre. Por favor, libera algo de espacio o desmarca algunos elementos a exportar. + Sin espacio suficiente \ No newline at end of file From 0afb51b93c474d2aeaace9bbeaa8f86c3fef1bb2 Mon Sep 17 00:00:00 2001 From: Franco Date: Thu, 19 Nov 2020 13:49:01 +0000 Subject: [PATCH 23/97] Translated using Weblate (Spanish (Argentina)) Currently translated at 100.0% (3860 of 3860 strings) --- OsmAnd/res/values-es-rAR/phrases.xml | 30 ++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/OsmAnd/res/values-es-rAR/phrases.xml b/OsmAnd/res/values-es-rAR/phrases.xml index c72ea55517..fb8d59ac34 100644 --- a/OsmAnd/res/values-es-rAR/phrases.xml +++ b/OsmAnd/res/values-es-rAR/phrases.xml @@ -3857,4 +3857,34 @@ Azotea Punto GPX Torre de radar + No + + No + + No + + Subnacional + Oficina representativa + Oficina + Cónsul honorario + Consulado general + Oficina consular + Agencia consular + Dirigido por un cónsul + Residencia + Nunciatura + Misión + Sección de intereses + Alto comisionado + Delegación + Sucursal;Ramal + Dirigido por un embajador + Enlace + Embajada + Servicios al ciudadano + Visas de inmigrante + Visas de no inmigrante + Enlace + Consulado + Embajada \ No newline at end of file From 0e7230c7a6f6f011ce24737a665f8aec8d7edabe Mon Sep 17 00:00:00 2001 From: ssantos Date: Thu, 19 Nov 2020 21:38:11 +0000 Subject: [PATCH 24/97] Translated using Weblate (Portuguese) Currently translated at 99.9% (3858 of 3860 strings) --- OsmAnd/res/values-pt/phrases.xml | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/OsmAnd/res/values-pt/phrases.xml b/OsmAnd/res/values-pt/phrases.xml index eb04e28ff5..0795fa347c 100644 --- a/OsmAnd/res/values-pt/phrases.xml +++ b/OsmAnd/res/values-pt/phrases.xml @@ -3835,4 +3835,34 @@ Ponto GPX Torre de radar Área de repouso + Não + Sim + Não + Sim + Não + Sim + Subnacional + Escritório de representação + Escritório + Cônsul honorário + Consulado-geral + Escritório consular + Agência consular + Liderado por um cônsul + Residência + Nunciatura + Missão + Secção de interesses + Alta comissão + Delegação + Secção + Liderado por um embaixador + Ligação + Embaixada + Serviços ao cidadão + Vistos de imigrantes + Vistos de não-imigrantes + Ligação + Consulado + Embaixada \ No newline at end of file From 2e2bbe3644c8ecc8682469a3f4d7913d20b7a747 Mon Sep 17 00:00:00 2001 From: Nicolas Raoul Date: Fri, 20 Nov 2020 17:36:01 +0900 Subject: [PATCH 25/97] Fixed grammar: Removed duplicate verb --- .github/ISSUE_TEMPLATE/5-feature-request.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/ISSUE_TEMPLATE/5-feature-request.md b/.github/ISSUE_TEMPLATE/5-feature-request.md index 9c46069f8c..1315456d77 100644 --- a/.github/ISSUE_TEMPLATE/5-feature-request.md +++ b/.github/ISSUE_TEMPLATE/5-feature-request.md @@ -12,7 +12,7 @@ Existing issues often contain information about workarounds, resolution, or prog GitHub is our main development tool for our developers. There are hundreds of requests a month and there are relatively few developers. So by opening an issue, please know that your issue will be sent out to all developers and acknowledge that it could be closed without explanation or with just a brief message. -Comments on the closed issues are also sent to all developers, so you will definitely will be heard. +Comments on the closed issues are also sent to all developers, so you definitely will be heard. However, there is no guarantee that a developer will pick up the issue to work on it. Please be sure to read our [FAQ](https://osmand.net/help-online) before creating an issue here. From 5c5627e499ddf1adb2ca3e79855ac4ceee40bafd Mon Sep 17 00:00:00 2001 From: Dmitry Date: Fri, 20 Nov 2020 10:56:28 +0200 Subject: [PATCH 26/97] Add colored point icon for Plan Route landscape UI --- .../ic_action_plan_route_point_colored.xml | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 OsmAnd/res/drawable/ic_action_plan_route_point_colored.xml diff --git a/OsmAnd/res/drawable/ic_action_plan_route_point_colored.xml b/OsmAnd/res/drawable/ic_action_plan_route_point_colored.xml new file mode 100644 index 0000000000..7fb6be0078 --- /dev/null +++ b/OsmAnd/res/drawable/ic_action_plan_route_point_colored.xml @@ -0,0 +1,18 @@ + + + + + From 239fc9a118300fa71fbe7e3b25ea3bba490c2e00 Mon Sep 17 00:00:00 2001 From: androiddevkkotlin Date: Fri, 20 Nov 2020 12:55:27 +0200 Subject: [PATCH 27/97] Buttons over soft keyboard (only for send gpx fragment) --- .../dialogs/SendGpxBottomSheetFragment.java | 37 +++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/OsmAnd/src/net/osmand/plus/osmedit/dialogs/SendGpxBottomSheetFragment.java b/OsmAnd/src/net/osmand/plus/osmedit/dialogs/SendGpxBottomSheetFragment.java index ed982747b0..ecf089c0b1 100644 --- a/OsmAnd/src/net/osmand/plus/osmedit/dialogs/SendGpxBottomSheetFragment.java +++ b/OsmAnd/src/net/osmand/plus/osmedit/dialogs/SendGpxBottomSheetFragment.java @@ -1,11 +1,16 @@ package net.osmand.plus.osmedit.dialogs; +import android.graphics.Rect; import android.os.AsyncTask; +import android.os.Build; import android.os.Bundle; import android.text.Editable; import android.view.LayoutInflater; import android.view.View; +import android.view.ViewGroup; +import android.view.ViewTreeObserver; import android.widget.LinearLayout; +import android.widget.ScrollView; import android.widget.TextView; import androidx.annotation.NonNull; @@ -51,6 +56,7 @@ public class SendGpxBottomSheetFragment extends MenuBottomSheetDialogFragment { private TextInputEditText tagsField; private TextInputEditText messageField; + private int contentHeightPrevious = 0; public void setGpxInfos(GpxInfo[] gpxInfos) { this.gpxInfos = gpxInfos; @@ -63,6 +69,7 @@ public class SendGpxBottomSheetFragment extends MenuBottomSheetDialogFragment { LayoutInflater themedInflater = UiUtilities.getInflater(app, nightMode); View sendOsmPoiView = themedInflater.inflate(R.layout.send_gpx_fragment, null); + sendOsmPoiView.getViewTreeObserver().addOnGlobalLayoutListener(getOnGlobalLayoutListener()); tagsField = sendOsmPoiView.findViewById(R.id.tags_field); messageField = sendOsmPoiView.findViewById(R.id.message_field); @@ -124,6 +131,36 @@ public class SendGpxBottomSheetFragment extends MenuBottomSheetDialogFragment { items.add(titleItem); } + private ViewTreeObserver.OnGlobalLayoutListener getOnGlobalLayoutListener() { + return new ViewTreeObserver.OnGlobalLayoutListener() { + @Override + public void onGlobalLayout() { + Rect visibleDisplayFrame = new Rect(); + int buttonsHeight = getResources().getDimensionPixelSize(R.dimen.dialog_button_ex_max_width); + int shadowHeight = getResources().getDimensionPixelSize(R.dimen.bottom_sheet_top_shadow_height); + final ScrollView scrollView = getView().findViewById(R.id.scroll_view); + scrollView.getWindowVisibleDisplayFrame(visibleDisplayFrame); + int height = scrollView.getHeight(); + int contentHeight = visibleDisplayFrame.bottom - visibleDisplayFrame.top - buttonsHeight; + if (contentHeightPrevious != contentHeight || contentHeight < height) { + if (scrollView.getHeight() + shadowHeight > contentHeight) { + scrollView.getLayoutParams().height = contentHeight; + } else { + scrollView.getLayoutParams().height = ViewGroup.LayoutParams.WRAP_CONTENT; + } + scrollView.requestLayout(); + int delay = Build.VERSION.SDK_INT > Build.VERSION_CODES.LOLLIPOP ? 300 : 1000; + scrollView.postDelayed(new Runnable() { + public void run() { + scrollView.scrollTo(0, scrollView.getHeight()); + } + }, delay); + contentHeightPrevious = contentHeight; + } + } + }; + } + protected static void showOpenStreetMapScreen(@NonNull FragmentActivity activity) { if (activity instanceof MapActivity) { BaseSettingsFragment.showInstance(activity, OPEN_STREET_MAP_EDITING); From 9b3b07575fe14599dfddd9208e67ae031f4840df Mon Sep 17 00:00:00 2001 From: Dima-1 Date: Fri, 20 Nov 2020 13:03:59 +0200 Subject: [PATCH 28/97] Fix change preference from bottom sheet --- OsmAnd/src/net/osmand/plus/osmedit/OsmEditingFragment.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/OsmAnd/src/net/osmand/plus/osmedit/OsmEditingFragment.java b/OsmAnd/src/net/osmand/plus/osmedit/OsmEditingFragment.java index d7000e5811..c7055e3fdc 100644 --- a/OsmAnd/src/net/osmand/plus/osmedit/OsmEditingFragment.java +++ b/OsmAnd/src/net/osmand/plus/osmedit/OsmEditingFragment.java @@ -214,6 +214,10 @@ public class OsmEditingFragment extends BaseSettingsFragment implements OnPrefer @Override public void onPreferenceChanged(String prefId) { + if (USE_DEV_URL.equals(prefId)) { + osmLogout(); + authorizationAdapter = app.getOsmOAuthHelper().updateAdapter(); + } updateAllSettings(); } From 8d9f430ee7fb0259a1872206b0eb16f09c74a1f1 Mon Sep 17 00:00:00 2001 From: Ldm Public Date: Fri, 20 Nov 2020 08:26:56 +0000 Subject: [PATCH 29/97] Translated using Weblate (French) Currently translated at 99.7% (3555 of 3564 strings) --- OsmAnd/res/values-fr/strings.xml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/OsmAnd/res/values-fr/strings.xml b/OsmAnd/res/values-fr/strings.xml index 3a02fa25d9..189f7afc8e 100644 --- a/OsmAnd/res/values-fr/strings.xml +++ b/OsmAnd/res/values-fr/strings.xml @@ -3948,9 +3948,9 @@ \nOpenPlaceReviews.org Créer un nouveau compte J\'ai déjà un compte - Vous devez vous connecter pour envoyer vos modifications. + Connectez-vous pour envoyer vos modifications, \n -\nVous pouvez vous connecter avec la méthode sécurisée OAuth ou utiliser votre identifiant et votre mot de passe. +\nsoit avec OAuth soit avec votre identifiant et mot de passe. Vous pouvez vous connecter avec la méthode sécurisée OAuth ou utiliser votre identifiant et votre mot de passe. Les photos sont fournies par le projet open data OpenPlaceReviews.org. Pour envoyer vos photos, vous devez au préalable être inscrit sur ce site Web. Historique de recherche @@ -3962,4 +3962,6 @@ Sélectionnez les données à exporter dans le fichier. Nécessaire pour l\'import L\'espace disponible est insuffisant + Ajouter à Mapillary + Ajouter à OpenPlaceReviews \ No newline at end of file From b5b281f7c8fbd34a873ffa8cc7b8eaa4109954b0 Mon Sep 17 00:00:00 2001 From: solokot Date: Fri, 20 Nov 2020 06:21:05 +0000 Subject: [PATCH 30/97] Translated using Weblate (Russian) Currently translated at 99.4% (3545 of 3564 strings) --- OsmAnd/res/values-ru/strings.xml | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/OsmAnd/res/values-ru/strings.xml b/OsmAnd/res/values-ru/strings.xml index 6f13c99ab5..8a1df6b5f5 100644 --- a/OsmAnd/res/values-ru/strings.xml +++ b/OsmAnd/res/values-ru/strings.xml @@ -3969,4 +3969,16 @@ У меня уже есть аккаунт История поиска Моторная лодка + Добавить в OpenPlaceReviews + Добавить в Mapillary + OsmAnd показывает фотографии из нескольких источников: +\nOpenPlaceReviews — фотогорафии POI; +\nMapillary — изображения улиц; +\nWeb / Wikimedia — фотографии POI, указанные в данных OpenStreetMap. + Ресурсы + Примерный размер файла + Требуется для импорта + Выберите данные для экспорта в файл. + На устройстве свободно только %1$s. Освободите место в хранилище или снимите выбор с некоторых экспортируемых элементов. + Недостаточно места \ No newline at end of file From 8368eea536e392802260526e5dd031e18fce9021 Mon Sep 17 00:00:00 2001 From: Ihor Hordiichuk Date: Fri, 20 Nov 2020 04:39:49 +0000 Subject: [PATCH 31/97] Translated using Weblate (Ukrainian) Currently translated at 100.0% (3564 of 3564 strings) --- OsmAnd/res/values-uk/strings.xml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/OsmAnd/res/values-uk/strings.xml b/OsmAnd/res/values-uk/strings.xml index 7b6ac19748..a394ed4d31 100644 --- a/OsmAnd/res/values-uk/strings.xml +++ b/OsmAnd/res/values-uk/strings.xml @@ -3983,4 +3983,10 @@ Необхідно для імпорту На вашому пристрої лише %1$s вільного простору. Звільніть місце або приберіть позначки з деяких елементів для експорту. Бракує простору + Додати до Mapillary + Додати до OpenPlaceReviews + OsmAnd демонструє світлини з кількох джерел: +\nOpenPlaceReviews — світлини POI; +\nMapillary - зображення вулиць; +\nМережа / Вікімедіа — світлини POI, вказані в даних OpenStreetMap. \ No newline at end of file From 6c4cd5e4d7e2b7930093b5ab5e65a55c371a9c16 Mon Sep 17 00:00:00 2001 From: Alvaro Date: Thu, 19 Nov 2020 23:46:56 +0000 Subject: [PATCH 32/97] Translated using Weblate (Spanish) Currently translated at 97.8% (3486 of 3564 strings) --- OsmAnd/res/values-es/strings.xml | 44 ++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/OsmAnd/res/values-es/strings.xml b/OsmAnd/res/values-es/strings.xml index efe9166106..c4f61547c4 100644 --- a/OsmAnd/res/values-es/strings.xml +++ b/OsmAnd/res/values-es/strings.xml @@ -3897,4 +3897,48 @@ Último modificado Nombre: Z – A Nombre: A - Z + MGRS + Novedades + MGRS + OsmAnd usa MGRS, que es similar al formato UTM NATO. + Iconos de inicio y fin + Desarollo + El fichero ya está importado en OsmAnd + Mapas locales + %1$s — %2$s + Servicio + Especial + Transporte + Servicio + Símbolos + Deporte + Emergencia + Viajar + Necesita añadir al menos dos puntos + Cuenta + Nombre de usuario + Gestionar suscripción + Enviar fichero GPX a OpenStreetMap + Introduzca las etiquetas separadas por una coma. + Cerrar Nota de OSM + Comentar Nota de OSM + Añadir foto + Registrar en +\nOpenPlaceReviews.org + Crear cuenta nueva + Ya tengo una cuenta + Historial de búsqueda + Kayak + Lancha a motor + Añadir a Mapillary + Añadir a OpenPlaceReviews + OsmAnd muestra fotos de diferentes fuentes: +\nOpenPlaceReviews - fotos POI; +\nMapillary - imágenes a nivel de calle; +\nWeb / Wikimedia - fotos POI especificadas en los datos de OpenStreetMap. + Recursos + Tamaño de fichero aproximado + Seleccione los datos para exportar al fichero. + Necesario para importar + No hay espacio suficiente \ No newline at end of file From 171315a22da69e4a61f9bbb5a608c3c995c56cc6 Mon Sep 17 00:00:00 2001 From: Yaron Shahrabani Date: Fri, 20 Nov 2020 09:14:09 +0000 Subject: [PATCH 33/97] Translated using Weblate (Hebrew) Currently translated at 99.9% (3561 of 3564 strings) --- OsmAnd/res/values-iw/strings.xml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/OsmAnd/res/values-iw/strings.xml b/OsmAnd/res/values-iw/strings.xml index b2dcee50ed..a4d26877ab 100644 --- a/OsmAnd/res/values-iw/strings.xml +++ b/OsmAnd/res/values-iw/strings.xml @@ -3989,4 +3989,10 @@ נדרש לייבוא במכשיר שלך יש רק %1$s פנויים. נא לפנות מקום או לבטל כמה מהפריטים לייצוא. אין מספיק מקום + הוספה ל־Mapillary + הוספה ל־OpenPlaceReviews + OsmAnd מציג תמונות ממגוון מקורות: +\nOpenPlaceReviews - תמונות של נקודות עניין; +\nMapillary - תמונות ברמת הרחוב; +\nאינטרנט / ויקימדיה - תמונות נקודות עניין שמצוינות בנתונים של OpenStreetMap. \ No newline at end of file From fdfa406b4176c077502558504aaa3ddd4f65c8ea Mon Sep 17 00:00:00 2001 From: Ahmad Alfrhood Date: Fri, 20 Nov 2020 09:44:19 +0000 Subject: [PATCH 34/97] Translated using Weblate (Arabic) Currently translated at 100.0% (3564 of 3564 strings) --- OsmAnd/res/values-ar/strings.xml | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/OsmAnd/res/values-ar/strings.xml b/OsmAnd/res/values-ar/strings.xml index 7e5f375f16..273570acdf 100644 --- a/OsmAnd/res/values-ar/strings.xml +++ b/OsmAnd/res/values-ar/strings.xml @@ -471,7 +471,7 @@ إفريقيا آسيا أستراليا و أوقيانوسيا - الملاحة + التوجيه مع الطرق ضبط خاص لكل وضع من أوضاع الملاحة. إدارة بيانات الخرائط إعدادات عامة @@ -1153,7 +1153,7 @@ حذف إجراء التعديلات وقت وقوف السيارات يقتصر على - أقل + تدلي قائمة منبسطة تعديل OSM فارغ %1$s @@ -3329,7 +3329,7 @@ جولة تزلج طرق لجولات التزلج. تزلج - منحدرات للاستخدام الزلاجات. + منحدرات لاستخدام الزلاجات. السماح بالمسارات المتوسطة طرق أكثر صعوبة مع أقسام أكثر حدة. بعض العقبات التي ينبغي تجنبها. السماح للطرق المتقدمة @@ -3974,4 +3974,10 @@ حدد البيانات التي سيتم تصديرها إلى الملف. مطلوب للاستيراد لا يوجد مساحة كافية + أضف إلى مابيلاي + إضافة إلى OpenPlaceReviews + ويعرض صورًا من عدة مصادر: +\nOpenPlaceReviews - صور POI ؛ +\nMapillary - صور على مستوى الشارع ؛ +\nالويب / ويكيميديا - صور POI المحددة في بيانات OpenStreetMap. \ No newline at end of file From c3fe20d313416d065b0428ad771ae0bb890e73b8 Mon Sep 17 00:00:00 2001 From: Gontzal Manuel Pujana Onaindia Date: Fri, 20 Nov 2020 08:19:37 +0000 Subject: [PATCH 35/97] Translated using Weblate (Basque) Currently translated at 93.8% (3345 of 3564 strings) --- OsmAnd/res/values-eu/strings.xml | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/OsmAnd/res/values-eu/strings.xml b/OsmAnd/res/values-eu/strings.xml index abd30d80ff..c619c2fc46 100644 --- a/OsmAnd/res/values-eu/strings.xml +++ b/OsmAnd/res/values-eu/strings.xml @@ -3799,4 +3799,17 @@ Area honi dagokio: %1$s x %2$s Nabigazio profila Hautatu zein arrasto fitxategiari gehituko zaion segmentu berria. Ezarri behar dituzu lanegunak jarraitzeko + Gehitu argazkia + Sortu kontu berria + Kontu bat daukat dagoeneko + Bilaketa-historia + Kayak + Motor itsasontzia + Gehitu Mapillary-ra + Baliabideak + Fitxategiaren tamaina gutxi gorabehera + Hautatu fitxategira esportatuko diren datuak. + Inportatzeko beharrezkoa da + Zure gailuak %1$s soilik ditu libre. Mesedez, askatu espazioa edo desautatu esportatzeko elementu batzuk. + Ez dago espazio nahikorik \ No newline at end of file From 9e9dc0fc6f2b71089765198df76f5c10e9592c8c Mon Sep 17 00:00:00 2001 From: Ajeje Brazorf Date: Fri, 20 Nov 2020 11:12:07 +0000 Subject: [PATCH 36/97] Translated using Weblate (Sardinian) Currently translated at 99.0% (3531 of 3564 strings) --- OsmAnd/res/values-sc/strings.xml | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/OsmAnd/res/values-sc/strings.xml b/OsmAnd/res/values-sc/strings.xml index fd038a717f..1d3af3ce34 100644 --- a/OsmAnd/res/values-sc/strings.xml +++ b/OsmAnd/res/values-sc/strings.xml @@ -3965,14 +3965,29 @@ Pùblica cheret nàrrere chi sa rasta at a èssere ammustrada in manera pùblica in sas rastas GPS tuas e in sas listas de rastas GPS pùblicas. Sos datos frunidos pro mèdiu de s\'API non sunt ligados a sa pàgina de sa rasta tua. Sas datas integradas in sos puntos de rasta no ant a èssere a disponimentu pro mèdiu de s\'API GPS, e sos puntos no ant a èssere ordinados in manera cronològica. Nointames custu sos àteros impreadores ant a pòdere iscarrigare sa rasta su matessi dae sa lista pùblica de sas rastas cun totu sas datas e sas oras integradas. Privada cheret nàrrere chi sa rasta no at a èssere ammustrada in peruna lista, ma sos puntos suos ant a èssere a disponimentu su matessi pro mèdiu de s\'API GPS pùblicu chene datas e oras ma no ant a èssere ordinados in manera cronològica. Identificàbile cheret nàrrere chi sa rasta at a èssere ammustrada in manera pùblica in sas rastas GPS tuas e in sas listas de rastas GPS pùblicas. Est a nàrrere chi àteros impreadores ant a pòdere iscarrigare sa rasta e l\'ant a pòdere assotziare a su nùmene de impreadore tuo. Sos datos frunidos pro mèdiu de s\'API de sos puntos de sas rastas ant a èssere ligados a sa pàgina de sa rasta originale tua. Sas datas e sas oras de sos puntos ant a èssere a disponimentu pro mèdiu de s\'API GPS pùblicu. - Arrastàbile cheret nàrrere chi sa rasta no at a èssere ammustrada in peruna lista pùblica ma sos puntos suos ant a èssere a disponimentu su matessi pro mèdiu de s\'API GPS pùblicu cun sas datas. Àteros impreadores ant a pòdere iscarrigare petzi puntos de rasta protzessados dae sa rasta tua chi no ant a èssere assotziados diretamente cun tie. + \"Arrastàbile\" cheret nàrrere chi sa rasta no at a èssere ammustrada in peruna lista pùblica, ma sos puntos suos cun sas datas (no ant a èssere assotziados diretamente cun tie) l\'ant a èssere pro mèdiu de iscarrigamentos dae s\'API GPS pùblica. Serra sa nota de OSM Cummenta sa nota de OSM - Podes intrare impreende su mètodu seguru OAuth o cun su nùmene tuo e sa crae de intrada tua. + Intra impreende su mètodu seguru OAuth o cun su nùmene de impreadore tuo e sa crae de intrada tua. Annanghe una fotografia Registra·ti in \nOpenPlaceReviews.org - Sas fotografias benint frunidas dae su progetu a datos abertos OpenPlaceReviews.org. Pro pòdere carrigare sas fotografias tuas ti depes registrare in su situ. + Intra in su situ de su progetu a datos abertos OpenPlaceReviews.org. pro carrigare fintzas àteras fotografias. Crea unu contu nou Tèngio giai unu contu + Cronologia de chirca + Kàyak + Motoscafu + Annanghe a Mapillary + Annanghe a OpenPlaceReviews + OsmAnd ammustrat fotografias dae fontes medas: +\nOpenPlaceReviews - fotografias de sos PDI; +\nMapillary - immàgines a livellu de su caminu; +\nWeb / Wikimedia - fotografias de sos PDI dillindadas in sos datos de OpenStreetMap. + Risursas + Mannària aprossimativa de su documentu + Ischerta sos datos de esportare in su documentu. + Netzessàriu pro s\'importatzione + Su dispositivu tuo tenet petzi %1$s a disponimentu. Lìbera unu pagu de memòria o boga s\'ischerta a unos cantos elementos de esportare. + Non b\'at logu bastante \ No newline at end of file From 8ce65cd824efaa2435900b5333ef2a021f230be9 Mon Sep 17 00:00:00 2001 From: Franco Date: Fri, 20 Nov 2020 01:09:29 +0000 Subject: [PATCH 37/97] Translated using Weblate (Spanish (Argentina)) Currently translated at 99.9% (3563 of 3564 strings) --- OsmAnd/res/values-es-rAR/strings.xml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/OsmAnd/res/values-es-rAR/strings.xml b/OsmAnd/res/values-es-rAR/strings.xml index 1e922a5610..55884a193c 100644 --- a/OsmAnd/res/values-es-rAR/strings.xml +++ b/OsmAnd/res/values-es-rAR/strings.xml @@ -3991,4 +3991,10 @@ Necesario para importar El dispositivo sólo tiene %1$s libre. Por favor, libera algo de espacio o desmarca algunos elementos a exportar. Sin espacio suficiente + Añadir a Mapillary + Añadir a OpenPlaceReviews + OsmAnd muestra fotos de varios repositorios: +\nOpenPlaceReviews (fotos de PDI); +\nMapillary (imágenes a nivel de calle); +\nWeb / Wikimedia (fotos de PDI incluidas en los datos de OpenStreetMap). \ No newline at end of file From f988a169683600f8b5c2d94b841adc5c0a64820e Mon Sep 17 00:00:00 2001 From: Franco Date: Fri, 20 Nov 2020 01:18:43 +0000 Subject: [PATCH 38/97] Translated using Weblate (Spanish (American)) Currently translated at 99.9% (3563 of 3564 strings) --- OsmAnd/res/values-es-rUS/strings.xml | 55 ++++++++++++++++++---------- 1 file changed, 35 insertions(+), 20 deletions(-) diff --git a/OsmAnd/res/values-es-rUS/strings.xml b/OsmAnd/res/values-es-rUS/strings.xml index dedb0d0009..085b0608e1 100644 --- a/OsmAnd/res/values-es-rUS/strings.xml +++ b/OsmAnd/res/values-es-rUS/strings.xml @@ -1921,7 +1921,7 @@ Informe completo Nombre de usuario y contraseña de OSM Informe - El nombre del archivo contiene caracteres ilegales + Carácter ilegal en el nombre del archivo Añade marcadores a través del mapa No se encontraron puntos de referencia Fino @@ -2462,7 +2462,7 @@ Navega por el mapa y añade puntos Medir distancia Añadir al menos un punto. - Nombre del GPX: + Nombre del archivo GPX: Mostrar en el mapa al guardar Añadir punto de referencia Guardar punto GPX @@ -3085,9 +3085,9 @@ Cambia el zoom del mapa desplazando la rueda hacia arriba y abajo. La tecla «Escape» retrocede a la aplicación WunderLINQ. Controlar con WunderLINQ Añadir al menos un elemento a la lista en los ajustes de «Acción rápida» - Esquí alpino o de descenso + Esquí alpino y de descenso Pistas de esquí alpino o de descenso y acceso a remontes mecánicos. - Esquí de travesía o nórdico + Esquí de travesía y nórdico Senderos para esquí nórdico o de travesía. Esquí de travesía Rutas para esquí de travesía. @@ -3368,7 +3368,7 @@ Estima el tiempo de llegada para los tipos de caminos desconocidos, y limita la velocidad para todos los caminos (puede afectar a la ruta) «%1$s» importado(s). Traza guardada - Nombre del archivo vacío + Nombre de archivo vacío Revertir Un botón para hacer que la pantalla se centre en el punto de partida. Luego define el destino o activa el cálculo de la ruta. Mostrar nodo de la red de rutas ciclistas @@ -3835,7 +3835,7 @@ Elegir otra traza Guardar traza en archivo GPX Grabar la traza automáticamente al navegar - Intervalo de registro para la grabación general de trazas (activar mediante el widget de grabación de viaje sobre el mapa). + Intervalo de registro para la grabación general de trazas (activado desde el widget «Grabación de viaje» en el mapa). Guardar como nueva traza Recalcular toda la traza usando el perfil elegido. A continuación, ajusta la traza al camino permitido más cercano con un perfil de navegación. @@ -3890,7 +3890,7 @@ Rehacer • 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 • 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 • Nuevo menú con el aspecto de las trazas: elegir el color, el grosor, mostrar las flechas de dirección y los iconos de inicio y fin. \n \n • Mejoras en la visibilidad de los nodos de bicicleta. \n @@ -3906,7 +3906,7 @@ Nombre: Z – A Nombre: A – Z Último modificado - Iconos de inicio/fin + Iconos de inicio y fin Gracias por comprar las «Curvas de nivel» La suscripción se cobra por el período elegido. Puedes cancelarlo en cualquier momento en AppGallery. El pago será cargado a la cuenta de AppGallery al confirmar la compra. @@ -3922,7 +3922,7 @@ Datos de «OsmAnd Live» Datos de «OsmAnd Live» Navegación compleja - Inicia sesión con OAuth para usar las funciones de edición de OSM + Ingresar con OAuth para usar las funciones de edición de OSM Ingresar a través de OAuth Sesión finalizada Desarrollo @@ -3948,35 +3948,50 @@ Emergencia Comodidad El archivo ya fue importado en OsmAnd - Iniciar sesión - Usar nombre de usuario y contraseña + Nombre de usuario + Ingresar nombre de usuario y contraseña Hay un problema con la suscripción. Pulsa el botón para ir a los ajustes de la suscripción de Google Play y corregir el método de pago. La suscripción a OsmAnd Live se ha pausado La suscripción a OsmAnd Live está en espera La suscripción a OsmAnd Live ha caducado Ingresar con OpenStreetMap Enviar archivo GPX a OpenStreetMap - Debes iniciar sesión para subir cambios nuevos o modificados. + Inicia sesión para subir los cambios nuevos o modificados, \n -\nPuedes ingresar usando el método seguro de OAuth o usar el nombre de usuario y contraseña. +\nya sea con OAuth o usando el nombre de usuario y contraseña. Debes añadir al menos dos puntos Historial de marcadores Gestionar suscripción - Ingresar a OpenStreetMap.org + Ingresar en OpenStreetMap.org Iniciar sesión en OpenStreetMap Cuenta - Trazable significa que la traza no aparecerá en ninguna lista pública pero el conjunto de puntos estarán disponibles a través de la API pública de GPS y con marcas de tiempo. Otros usuarios sólo podrán descargar el conjunto de puntos procesados de su traza que no se pueden asociar directamente con usted. - Público significa que la traza se mostrará públicamente en tu listado de trazas y en los listados de trazas GPS públicas. Los datos servidos a través de la API no harán referencia a su página de trazas. Las marcas de tiempo de los puntos de la traza no estarán disponible a través de la API pública de GPS, aunque los puntos se ordenan cronológicamente. Sin embargo, otros usuarios podrán descargar la traza en bruto de la lista de trazas públicas y las marcas de tiempo que contiene. - Privado significa que la traza no aparecerá en ninguna lista pública, pero el conjunto de puntos seguirá estando disponible en orden cronológico a través de la API pública de GPS y sin marcas de tiempo. - Identificable significa que la traza se mostrará públicamente en tu listado de trazas y en el listado de trazas GPS públicas, es decir que otros usuarios podrán descargar la traza en bruto y asociarla con su nombre de usuario. Los datos servidos a través de la API de conjunto de puntos hará referencia a la página original de la traza. Las marcas de tiempo de los puntos de la traza estarán disponibles a través de la API pública de GPS. + «Trazable» significa que la traza no aparece en ninguna lista pública, pero el conjunto de puntos procesados con marcas de tiempo (no se pueden asociar directamente con usted) estarán disponibles a través de la API pública de GPS. + «Público» significa que la traza se mostrará públicamente en tu listado de trazas y en los listados de trazas GPS públicas con marcas de tiempo en bruto. Los datos servidos a través de la API no harán referencia a su página de trazas. Las marcas de tiempo de los puntos de la traza no estarán disponible a través de la API pública de GPS, aunque los puntos se ordenan cronológicamente. + «Privado» significa que la traza no aparecerá en ninguna lista pública, pero el conjunto de puntos seguirá estando disponible en orden cronológico a través de la API pública de GPS y sin marcas de tiempo. + «Identificable» significa que la traza se mostrará públicamente en tu listado de trazas y en el listado de trazas GPS públicas, es decir que otros usuarios podrán descargar la traza en bruto y asociarla con su nombre de usuario. Los datos servidos a través de la API de conjunto de puntos hará referencia a la página original de la traza. Ingresa etiquetas separadas por comas. Añadir foto Ya tengo cuenta Crear nueva cuenta - Las fotos son provistas por el proyecto de datos abiertos OpenPlaceReviews.org. Para subir fotos debes registrarte en el sitio web. + Ingresa en el sitio web del proyecto de datos abiertos OpenPlaceReviews.org para subir más fotos. Registrarse en \nOpenPlaceReviews.org - Puedes iniciar sesión con el método seguro de OAuth o usar el nombre de usuario y contraseña. + Ingresa usando el método seguro de OAuth o usa el nombre de usuario y contraseña. Comentar nota de OSM Cerrar nota de OSM + Historial de búsqueda + Recursos + Marca los datos que serán exportados al archivo. + Necesario para importar + El dispositivo sólo tiene %1$s libre. Por favor, libera algo de espacio o desmarca algunos elementos a exportar. + Sin espacio suficiente + Tamaño aproximado del archivo + Lancha a motor + Kayak + Añadir a OpenPlaceReviews + Añadir a Mapillary + OsmAnd muestra fotos de varios repositorios: +\nOpenPlaceReviews (fotos de PDI); +\nMapillary (imágenes a nivel de calle); +\nWeb / Wikimedia (fotos de PDI incluidas en los datos de OpenStreetMap). \ No newline at end of file From f5827ae1141720e68fa3bb31306250d834afdc01 Mon Sep 17 00:00:00 2001 From: Franco Date: Fri, 20 Nov 2020 01:19:07 +0000 Subject: [PATCH 39/97] Translated using Weblate (Spanish (American)) Currently translated at 100.0% (3860 of 3860 strings) --- OsmAnd/res/values-es-rUS/phrases.xml | 30 ++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/OsmAnd/res/values-es-rUS/phrases.xml b/OsmAnd/res/values-es-rUS/phrases.xml index 5f62bd195b..1e57d33830 100644 --- a/OsmAnd/res/values-es-rUS/phrases.xml +++ b/OsmAnd/res/values-es-rUS/phrases.xml @@ -3857,4 +3857,34 @@ Azotea Apartadero Punto GPX + Subnacional + Oficina representativa + Oficina + Enlace + Dirigido por un embajador + Residencia + Nunciatura + Misión + Sección de intereses + Alto comisionado + Embajada + Delegación + Sucursal;Ramal + + No + Visas de no inmigrante + + No + Visas de inmigrante + + No + Servicios al ciudadano + Enlace + Embajada + Dirigido por un cónsul + Cónsul honorario + Consulado + Consulado general + Oficina consular + Agencia consular \ No newline at end of file From 821178ef458f02e0dc69f321549198c1e9607312 Mon Sep 17 00:00:00 2001 From: Jeff Huang Date: Fri, 20 Nov 2020 02:36:05 +0000 Subject: [PATCH 40/97] Translated using Weblate (Chinese (Traditional)) Currently translated at 100.0% (3564 of 3564 strings) --- OsmAnd/res/values-zh-rTW/strings.xml | 32 +++++++++++++++++++--------- 1 file changed, 22 insertions(+), 10 deletions(-) diff --git a/OsmAnd/res/values-zh-rTW/strings.xml b/OsmAnd/res/values-zh-rTW/strings.xml index 1636f2db70..7785c07113 100644 --- a/OsmAnd/res/values-zh-rTW/strings.xml +++ b/OsmAnd/res/values-zh-rTW/strings.xml @@ -3917,10 +3917,10 @@ 原生公共運輸發展 切換到 Java(安全)公共運輸路線計算 有什麼新鮮事 - 執行 OAuth 登入以使用 osmedit 功能 + 以 OAuth 登入以使用 osmedit 功能 透過 OAuth 登入 清除 OpenStreetMap OAuth 權杖 - 成功登出 + 已登出 適用於有專用道路與軌道的雪地摩托車駕駛。 檔案已在 OsmAnd 匯入 使用 2 相的 A* 路線演算法 @@ -3948,14 +3948,14 @@ OsmAnd Live 訂閱已過期 OsmAnd Live 訂閱已暫停 OsmAnd Live 訂閱已暫停 - 登入到 OpenStreetMap - 登入到 OpenStreetMap.org - 您必須登入以上傳新的或修正過的變更。 + 登入 OpenStreetMap + 登入 OpenStreetMap.org + 登入以上傳新的或修正過的變更, \n -\n您可以使用安全的 OAuth 方法或使用您的登入與密碼來登入。 - 使用登入與密碼 +\n以 OAuth 或使用您的使用者名稱與密碼來登入。 + 以使用者名稱與密碼登入 帳號 - 登入 + 使用者名稱 使用 OpenStreetMap 登入 標記歷史 傳送 GPX 檔案到 OpenStreetMap @@ -3966,14 +3966,26 @@ 「可追蹤」代表軌跡不會在任何公開的清單中顯示,但帶有時間戳(這並不會與您直接相關聯)的已處理追蹤點可從公開的 GPS API 下載。 關閉 OSM 註記 評論 OSM 註記 - 您可以使用安全的 OAuth 方式或是使用您的帳號與密碼來登入。 + 使用安全的 OAuth 方式或是使用您的使用者名稱與密碼來登入。 新增照片 註冊於 \nOpenPlaceReviews.org - 照片由開放資料專案 OpenPlaceReviews.org 提供。為了上傳您的照片,您必須在網站上註冊。 + 登入開放資料專案網站 OpenPlaceReviews.org 以上傳更多照片。 建立新帳號 我已經有帳號了 搜尋歷史紀錄 皮艇 快艇 + 新增到 Mapillary + 新增到 OpenPlaceReviews + OsmAnd 從多個來源顯示照片: +\nOpenPlaceReviews - POI 照片; +\nMapillary - 街景; +\n網路/維基媒體 - 特定 OpenStreetMap 資料的 POI 照片。 + 資源 + 大約檔案大小 + 選取要匯出到檔案的資料。 + 匯入需要 + 您的裝置僅剩 %1$s 可用空間。請釋出一些空間或取消選取要匯出的部份檔案。 + 空間不足 \ No newline at end of file From c75394f82c6e4dcb37f4bbfbd51a343fabcae267 Mon Sep 17 00:00:00 2001 From: Jeff Huang Date: Fri, 20 Nov 2020 02:48:33 +0000 Subject: [PATCH 41/97] Translated using Weblate (Chinese (Traditional)) Currently translated at 100.0% (3860 of 3860 strings) --- OsmAnd/res/values-zh-rTW/phrases.xml | 30 ++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/OsmAnd/res/values-zh-rTW/phrases.xml b/OsmAnd/res/values-zh-rTW/phrases.xml index c20eccfaf6..083311b0c0 100644 --- a/OsmAnd/res/values-zh-rTW/phrases.xml +++ b/OsmAnd/res/values-zh-rTW/phrases.xml @@ -3849,4 +3849,34 @@ 屋頂 GPX 點 雷達塔 + + + + + + + 準外交 + 代表處 + 辦公室 + 名譽領事 + 總領事館 + 領事館 + 領事機構 + 由領事率領 + 住宅 + 代表駐地 + 代表機構 + 利益代表處 + 高級專員 + 代表團 + 分處 + 由大使率領 + 聯絡處 + 大使館 + 公民服務 + 移民簽證 + 非移民簽證 + 聯絡處 + 領事館 + 大使館 \ No newline at end of file From 70677ba50b8a801c6dc4e4e6cf4aa8b92ea7d944 Mon Sep 17 00:00:00 2001 From: Alvaro Date: Thu, 19 Nov 2020 23:48:58 +0000 Subject: [PATCH 42/97] Translated using Weblate (Spanish) Currently translated at 100.0% (271 of 271 strings) Translation: OsmAnd/Telegram Translate-URL: https://hosted.weblate.org/projects/osmand/telegram/es/ --- OsmAnd-telegram/res/values-es/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OsmAnd-telegram/res/values-es/strings.xml b/OsmAnd-telegram/res/values-es/strings.xml index 29442e4212..d253eabfff 100644 --- a/OsmAnd-telegram/res/values-es/strings.xml +++ b/OsmAnd-telegram/res/values-es/strings.xml @@ -250,7 +250,7 @@ Elige la hora de visualización Fecha de Inicio — Fin Mensajes guardados - Seleccione la zona horaria que desea mostrar en los mensajes de ubicación. + Seleccione la zona horaria a mostrar en sus mensajes de ubicación. Zona horaria Unidades y formatos Cambia las unidades de longitud. From 73cc6b8f95a5737aab37a51a9fecbd1933f138ec Mon Sep 17 00:00:00 2001 From: Ajeje Brazorf Date: Fri, 20 Nov 2020 11:13:17 +0000 Subject: [PATCH 43/97] Translated using Weblate (Sardinian) Currently translated at 99.1% (3532 of 3564 strings) --- OsmAnd/res/values-sc/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OsmAnd/res/values-sc/strings.xml b/OsmAnd/res/values-sc/strings.xml index 1d3af3ce34..c083252cd9 100644 --- a/OsmAnd/res/values-sc/strings.xml +++ b/OsmAnd/res/values-sc/strings.xml @@ -3964,7 +3964,7 @@ Inserta sas etichetas iscrobadas dae vìrgulas. Pùblica cheret nàrrere chi sa rasta at a èssere ammustrada in manera pùblica in sas rastas GPS tuas e in sas listas de rastas GPS pùblicas. Sos datos frunidos pro mèdiu de s\'API non sunt ligados a sa pàgina de sa rasta tua. Sas datas integradas in sos puntos de rasta no ant a èssere a disponimentu pro mèdiu de s\'API GPS, e sos puntos no ant a èssere ordinados in manera cronològica. Nointames custu sos àteros impreadores ant a pòdere iscarrigare sa rasta su matessi dae sa lista pùblica de sas rastas cun totu sas datas e sas oras integradas. Privada cheret nàrrere chi sa rasta no at a èssere ammustrada in peruna lista, ma sos puntos suos ant a èssere a disponimentu su matessi pro mèdiu de s\'API GPS pùblicu chene datas e oras ma no ant a èssere ordinados in manera cronològica. - Identificàbile cheret nàrrere chi sa rasta at a èssere ammustrada in manera pùblica in sas rastas GPS tuas e in sas listas de rastas GPS pùblicas. Est a nàrrere chi àteros impreadores ant a pòdere iscarrigare sa rasta e l\'ant a pòdere assotziare a su nùmene de impreadore tuo. Sos datos frunidos pro mèdiu de s\'API de sos puntos de sas rastas ant a èssere ligados a sa pàgina de sa rasta originale tua. Sas datas e sas oras de sos puntos ant a èssere a disponimentu pro mèdiu de s\'API GPS pùblicu. + \"Identificàbile\" cheret nàrrere chi sa rasta at a èssere ammustrada in manera pùblica in sas rastas GPS tuas e in sas listas de rastas GPS pùblicas. Est a nàrrere chi àteros impreadores ant a pòdere iscarrigare sa rasta e l\'ant a pòdere assotziare a su nùmene de impreadore tuo. Sos puntos de rastas cun datas e oras dae s\'API GPS frunidos pro mèdiu de s\'API de sos puntos de sas rastas ant a èssere ligados a sa pàgina de sa rasta originale tua. \"Arrastàbile\" cheret nàrrere chi sa rasta no at a èssere ammustrada in peruna lista pùblica, ma sos puntos suos cun sas datas (no ant a èssere assotziados diretamente cun tie) l\'ant a èssere pro mèdiu de iscarrigamentos dae s\'API GPS pùblica. Serra sa nota de OSM Cummenta sa nota de OSM From 72ac363d7d2004dc6f0cfb807daf73b7e1258ba0 Mon Sep 17 00:00:00 2001 From: Dima-1 Date: Fri, 20 Nov 2020 13:36:44 +0200 Subject: [PATCH 44/97] Fix unnecessary logout --- .../plus/osmedit/OsmEditingFragment.java | 26 +++++++++---------- 1 file changed, 12 insertions(+), 14 deletions(-) diff --git a/OsmAnd/src/net/osmand/plus/osmedit/OsmEditingFragment.java b/OsmAnd/src/net/osmand/plus/osmedit/OsmEditingFragment.java index 3fb8c62977..5602c23483 100644 --- a/OsmAnd/src/net/osmand/plus/osmedit/OsmEditingFragment.java +++ b/OsmAnd/src/net/osmand/plus/osmedit/OsmEditingFragment.java @@ -15,7 +15,6 @@ import androidx.fragment.app.FragmentManager; import androidx.preference.Preference; import androidx.preference.PreferenceViewHolder; -import net.osmand.PlatformUtil; import net.osmand.plus.R; import net.osmand.plus.activities.MapActivity; import net.osmand.plus.helpers.AndroidUiHelper; @@ -31,16 +30,12 @@ import net.osmand.plus.settings.preferences.SwitchPreferenceEx; import net.osmand.plus.widgets.style.CustomTypefaceSpan; import net.osmand.util.Algorithms; -import org.apache.commons.logging.Log; - import static net.osmand.plus.myplaces.FavoritesActivity.TAB_ID; import static net.osmand.plus.osmedit.OsmEditingPlugin.OSM_EDIT_TAB; public class OsmEditingFragment extends BaseSettingsFragment implements OnPreferenceChanged, ValidateOsmLoginListener, OsmAuthorizationListener { - private static final Log log = PlatformUtil.getLog(OsmEditingFragment.class); - private static final String OSM_LOGOUT = "osm_logout"; private static final String OPEN_OSM_EDITS = "open_osm_edits"; public static final String OSM_LOGIN_DATA = "osm_login_data"; @@ -213,16 +208,19 @@ public class OsmEditingFragment extends BaseSettingsFragment implements OnPrefer } private void osmLogout() { - if (isValidToken()) { - settings.USER_ACCESS_TOKEN.resetToDefault(); - settings.USER_ACCESS_TOKEN_SECRET.resetToDefault(); - authorizationAdapter.resetToken(); - } else { - settings.USER_NAME.resetToDefault(); - settings.USER_PASSWORD.resetToDefault(); + boolean validToken = isValidToken(); + if (validToken || isLoginExists()) { + if (validToken) { + settings.USER_ACCESS_TOKEN.resetToDefault(); + settings.USER_ACCESS_TOKEN_SECRET.resetToDefault(); + authorizationAdapter.resetToken(); + } else { + settings.USER_NAME.resetToDefault(); + settings.USER_PASSWORD.resetToDefault(); + } + app.showShortToastMessage(R.string.osm_edit_logout_success); + updateAllSettings(); } - app.showShortToastMessage(R.string.osm_edit_logout_success); - updateAllSettings(); } @Override From 511bc706394f37116d797b8bb1b0b22ea2a5660e Mon Sep 17 00:00:00 2001 From: Vitaliy Date: Fri, 20 Nov 2020 14:02:15 +0200 Subject: [PATCH 45/97] Fix #10217 --- .../net/osmand/plus/views/layers/GPXLayer.java | 16 ++++++++-------- .../plus/views/layers/geometry/GeometryWay.java | 6 ++++-- 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/OsmAnd/src/net/osmand/plus/views/layers/GPXLayer.java b/OsmAnd/src/net/osmand/plus/views/layers/GPXLayer.java index c54b6afea5..117c2a4777 100644 --- a/OsmAnd/src/net/osmand/plus/views/layers/GPXLayer.java +++ b/OsmAnd/src/net/osmand/plus/views/layers/GPXLayer.java @@ -37,9 +37,6 @@ import net.osmand.plus.GpxSelectionHelper; import net.osmand.plus.GpxSelectionHelper.GpxDisplayGroup; import net.osmand.plus.GpxSelectionHelper.GpxDisplayItem; import net.osmand.plus.GpxSelectionHelper.SelectedGpxFile; -import net.osmand.plus.mapmarkers.MapMarkersHelper; -import net.osmand.plus.mapmarkers.MapMarker; -import net.osmand.plus.mapmarkers.MapMarkersGroup; import net.osmand.plus.OsmandApplication; import net.osmand.plus.R; import net.osmand.plus.UiUtilities; @@ -47,6 +44,9 @@ import net.osmand.plus.activities.MapActivity; import net.osmand.plus.base.PointImageDrawable; import net.osmand.plus.mapcontextmenu.controllers.SelectedGpxMenuController.SelectedGpxPoint; import net.osmand.plus.mapcontextmenu.other.TrackChartPoints; +import net.osmand.plus.mapmarkers.MapMarker; +import net.osmand.plus.mapmarkers.MapMarkersGroup; +import net.osmand.plus.mapmarkers.MapMarkersHelper; import net.osmand.plus.render.OsmandRenderer; import net.osmand.plus.render.OsmandRenderer.RenderingContext; import net.osmand.plus.routepreparationmenu.MapRouteInfoMenu; @@ -353,7 +353,7 @@ public class GPXLayer extends OsmandMapLayer implements IContextMenuProvider, IM } private void drawSelectedFilesSplits(Canvas canvas, RotatedTileBox tileBox, List selectedGPXFiles, - DrawSettings settings) { + DrawSettings settings) { if (tileBox.getZoom() >= START_ZOOM) { // request to load OsmandApplication app = view.getApplication(); @@ -634,7 +634,7 @@ public class GPXLayer extends OsmandMapLayer implements IContextMenuProvider, IM } private void drawSelectedFilesSegments(Canvas canvas, RotatedTileBox tileBox, - List selectedGPXFiles, DrawSettings settings) { + List selectedGPXFiles, DrawSettings settings) { SelectedGpxFile currentTrack = null; for (SelectedGpxFile selectedGpxFile : selectedGPXFiles) { String width = getTrackWidthName(selectedGpxFile.getGpxFile(), ""); @@ -653,7 +653,7 @@ public class GPXLayer extends OsmandMapLayer implements IContextMenuProvider, IM } private void drawSelectedFileSegments(SelectedGpxFile selectedGpxFile, boolean currentTrack, Canvas canvas, - RotatedTileBox tileBox, DrawSettings settings) { + RotatedTileBox tileBox, DrawSettings settings) { List segments = selectedGpxFile.getPointsToDisplay(); for (TrkSegment ts : segments) { String width = getTrackWidthName(selectedGpxFile.getGpxFile(), ""); @@ -1010,8 +1010,8 @@ public class GPXLayer extends OsmandMapLayer implements IContextMenuProvider, IM @Override public void applyNewObjectPosition(@NonNull Object o, - @NonNull LatLon position, - @Nullable final ContextMenuLayer.ApplyMovedObjectCallback callback) { + @NonNull LatLon position, + @Nullable final ContextMenuLayer.ApplyMovedObjectCallback callback) { if (o instanceof WptPt) { final WptPt objectInMotion = (WptPt) o; SelectedGpxFile selectedGpxFile = pointFileMap.get(objectInMotion); diff --git a/OsmAnd/src/net/osmand/plus/views/layers/geometry/GeometryWay.java b/OsmAnd/src/net/osmand/plus/views/layers/geometry/GeometryWay.java index 02671e2207..9c7fd1c782 100644 --- a/OsmAnd/src/net/osmand/plus/views/layers/geometry/GeometryWay.java +++ b/OsmAnd/src/net/osmand/plus/views/layers/geometry/GeometryWay.java @@ -338,8 +338,8 @@ public abstract class GeometryWay style : styles) { if (style.hasPathLine()) { hasPathLine = true; @@ -360,7 +360,9 @@ public abstract class GeometryWay Date: Fri, 20 Nov 2020 16:28:57 +0200 Subject: [PATCH 46/97] Fix note upload --- .../plus/osmedit/OsmBugsRemoteUtil.java | 37 ++++++++++++++----- 1 file changed, 27 insertions(+), 10 deletions(-) diff --git a/OsmAnd/src/net/osmand/plus/osmedit/OsmBugsRemoteUtil.java b/OsmAnd/src/net/osmand/plus/osmedit/OsmBugsRemoteUtil.java index f2fba4c52d..f6200d2ad3 100644 --- a/OsmAnd/src/net/osmand/plus/osmedit/OsmBugsRemoteUtil.java +++ b/OsmAnd/src/net/osmand/plus/osmedit/OsmBugsRemoteUtil.java @@ -1,9 +1,12 @@ package net.osmand.plus.osmedit; +import com.github.scribejava.core.model.Response; + import net.osmand.PlatformUtil; import net.osmand.osm.io.Base64; import net.osmand.osm.io.NetworkUtils; +import net.osmand.osm.oauth.OsmOAuthAuthorizationClient; import net.osmand.plus.OsmandApplication; import net.osmand.plus.R; import net.osmand.plus.Version; @@ -19,6 +22,7 @@ import java.io.UnsupportedEncodingException; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URLEncoder; +import java.util.concurrent.ExecutionException; public class OsmBugsRemoteUtil implements OsmBugsUtil { @@ -95,8 +99,8 @@ public class OsmBugsRemoteUtil implements OsmBugsUtil { private OsmBugResult editingPOI(String url, String requestMethod, String userOperation, boolean anonymous) { - OsmOAuthAuthorizationAdapter client = new OsmOAuthAuthorizationAdapter(app); - OsmBugResult r = new OsmBugResult(); + OsmOAuthAuthorizationAdapter authorizationAdapter = new OsmOAuthAuthorizationAdapter(app); + OsmBugResult result = new OsmBugResult(); try { HttpURLConnection connection = NetworkUtils.getHttpURLConnection(url); log.info("Editing poi " + url); @@ -105,8 +109,22 @@ public class OsmBugsRemoteUtil implements OsmBugsUtil { connection.setRequestProperty("User-Agent", Version.getFullVersion(app)); //$NON-NLS-1$ if (!anonymous) { - if (client.isValidToken()) { - connection.addRequestProperty("Authorization", "OAuth " + client.getClient().getAccessToken().getToken()); + if (authorizationAdapter.isValidToken()) { + try { + OsmOAuthAuthorizationClient client = authorizationAdapter.getClient(); + Response response = client.performRequest(url, requestMethod, userOperation); + if (response.getCode() != HttpURLConnection.HTTP_OK) { + result.warning = response.getMessage() + "\n" + response.getBody(); + return result; + } + } catch (InterruptedException e) { + log.error(e); + result.warning = e.getMessage(); + } catch (ExecutionException e) { + log.error(e); + result.warning = e.getMessage(); + } + return result; } else { String token = settings.USER_NAME.get() + ":" + settings.USER_PASSWORD.get(); //$NON-NLS-1$ connection.addRequestProperty("Authorization", "Basic " + Base64.encode(token.getBytes("UTF-8"))); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ @@ -129,21 +147,20 @@ public class OsmBugsRemoteUtil implements OsmBugsUtil { log.info("Response : " + responseBody); //$NON-NLS-1$ connection.disconnect(); if (!ok) { - r.warning = msg + "\n" + responseBody; + result.warning = msg + "\n" + responseBody; } } catch (FileNotFoundException | NullPointerException e) { // that's tricky case why NPE is thrown to fix that problem httpClient could be used String msg = app.getString(R.string.auth_failed); log.error(msg, e); - r.warning = app.getString(R.string.auth_failed) + ""; + result.warning = app.getString(R.string.auth_failed) + ""; } catch (MalformedURLException e) { log.error(userOperation + " " + app.getString(R.string.failed_op), e); //$NON-NLS-1$ - r.warning = e.getMessage() + ""; + result.warning = e.getMessage() + ""; } catch (IOException e) { log.error(userOperation + " " + app.getString(R.string.failed_op), e); //$NON-NLS-1$ - r.warning = e.getMessage() + " link unavailable"; + result.warning = e.getMessage() + " link unavailable"; } - return r; + return result; } - } From 212dbdb8fff47c27aaaffc151da8121bbabafdf9 Mon Sep 17 00:00:00 2001 From: nazar-kutz Date: Fri, 20 Nov 2020 17:20:59 +0200 Subject: [PATCH 47/97] Fix "Local wikipedia results don't show in search history" --- .../src/main/java/net/osmand/osm/MapPoiTypes.java | 14 -------------- .../net/osmand/plus/search/QuickSearchHelper.java | 7 ++++++- 2 files changed, 6 insertions(+), 15 deletions(-) diff --git a/OsmAnd-java/src/main/java/net/osmand/osm/MapPoiTypes.java b/OsmAnd-java/src/main/java/net/osmand/osm/MapPoiTypes.java index 9bff39dcb1..e273fa4e7f 100644 --- a/OsmAnd-java/src/main/java/net/osmand/osm/MapPoiTypes.java +++ b/OsmAnd-java/src/main/java/net/osmand/osm/MapPoiTypes.java @@ -205,20 +205,6 @@ public class MapPoiTypes { if (pt != null && !pt.isReference()) { return pt; } - if (pc.isWiki() && name.startsWith(WIKI_LANG)) { - return getPoiTypeForWiki(pc, name); - } - } - return null; - } - - public AbstractPoiType getPoiTypeForWiki(PoiCategory osmwiki, String name) { - for (PoiType pt : osmwiki.getPoiTypes()) { - for (PoiType wikiLangPt : pt.getPoiAdditionals()) { - if (wikiLangPt != null && Algorithms.objectEquals(wikiLangPt.getOsmTag(), name)) { - return wikiLangPt; - } - } } return null; } diff --git a/OsmAnd/src/net/osmand/plus/search/QuickSearchHelper.java b/OsmAnd/src/net/osmand/plus/search/QuickSearchHelper.java index 55da1967d0..1213f550c1 100644 --- a/OsmAnd/src/net/osmand/plus/search/QuickSearchHelper.java +++ b/OsmAnd/src/net/osmand/plus/search/QuickSearchHelper.java @@ -436,7 +436,12 @@ public class QuickSearchHelper implements ResourceListener { SearchResult sr = new SearchResult(phrase); PointDescription pd = point.getName(); if (pd.isPoiType()) { - AbstractPoiType pt = MapPoiTypes.getDefault().getAnyPoiTypeByKey(pd.getName()); + String name = pd.getName(); + MapPoiTypes mapPoiTypes = MapPoiTypes.getDefault(); + AbstractPoiType pt = mapPoiTypes.getAnyPoiTypeByKey(name); + if (pt == null) { + pt = mapPoiTypes.getAnyPoiAdditionalTypeByKey(name); + } if (pt != null) { sr.localeName = pt.getTranslation(); sr.object = pt; From 240714b4e08b9f193cb7b8eec6d293045220ae18 Mon Sep 17 00:00:00 2001 From: max-klaus Date: Fri, 20 Nov 2020 19:24:38 +0300 Subject: [PATCH 48/97] Added possibility to build OsmAnd as library --- OsmAnd/build.gradle.lib | 521 ++++++++++++++++++ .../osmand/plus/activities/MapActivity.java | 3 - .../audionotes/AudioVideoNotesPlugin.java | 36 +- .../plus/srtmplugin/TerrainFragment.java | 19 +- .../osmand/plus/views/OsmandMapTileView.java | 12 +- 5 files changed, 552 insertions(+), 39 deletions(-) create mode 100644 OsmAnd/build.gradle.lib diff --git a/OsmAnd/build.gradle.lib b/OsmAnd/build.gradle.lib new file mode 100644 index 0000000000..b70a881218 --- /dev/null +++ b/OsmAnd/build.gradle.lib @@ -0,0 +1,521 @@ +//apply plugin: 'com.android.application' +apply plugin: 'com.android.library' + +// Global Parameters accepted +// TARGET_APP_NAME - app name +// APK_NUMBER_VERSION - version number of apk +// APK_VERSION_SUFFIX - build number like #99999Z, appended (for dev builds) to Manifest's versionName as X.X.X#99999Z +// Z means flavor: M=-master, D=-main-default, B=-Blackberry, Des=-design, MQA=-main-qt-arm, MQDA=-main-qt-default-arm, S=-sherpafy +// APP_EDITION - date stamp of builds +// APP_FEATURES - features +play_market +gps_status -parking_plugin -blackberry -free_version -amazon + +// 1. To be done Filter fonts +// +// +// +// +// +// +// Less important + +task printc { + configurations.each { if(it.isCanBeResolved()) println it.name } +} + +android { + compileSdkVersion 29 + buildToolsVersion "29.0.3" + // compileNdkVersion "android-ndk-r17b" + + signingConfigs { + development { + storeFile file("../keystores/debug.keystore") + storePassword "android" + keyAlias "androiddebugkey" + keyPassword "android" + } + + publishing { + storeFile file("/var/lib/jenkins/osmand_key") + storePassword System.getenv("OSMAND_APK_PASSWORD") + keyAlias "osmand" + keyPassword System.getenv("OSMAND_APK_PASSWORD") + } + } + + defaultConfig { + minSdkVersion System.getenv("MIN_SDK_VERSION") ? System.getenv("MIN_SDK_VERSION").toInteger() : 15 + targetSdkVersion 29 + versionCode 390 + versionCode System.getenv("APK_NUMBER_VERSION") ? System.getenv("APK_NUMBER_VERSION").toInteger() : versionCode + multiDexEnabled true + versionName "3.9.0" + versionName System.getenv("APK_VERSION")? System.getenv("APK_VERSION").toString(): versionName + versionName System.getenv("APK_VERSION_SUFFIX")? versionName + System.getenv("APK_VERSION_SUFFIX").toString(): versionName + // Stops the Gradle plugin’s automatic rasterization of vectors + // vectorDrawables.generatedDensities = ['hdpi'] + vectorDrawables.useSupportLibrary = true + } + + lintOptions { + lintConfig file("lint.xml") + abortOnError false + warningsAsErrors false + } + + /* + bundle { + language { + // Specifies that the app bundle should not support + // configuration APKs for language resources. These + // resources are instead packaged with each base and + // dynamic feature APK. + enableSplit = false + } + } + */ + // related to kuromoji + //packagingOptions { + // exclude '/META-INF/CONTRIBUTORS.md' + // exclude '/META-INF/LICENSE.md' + // exclude '/META-INF/NOTICE.md' + //} + + // This is from OsmAndCore_android.aar - for some reason it's not inherited + aaptOptions { + // Don't compress any embedded resources + noCompress "qz" + cruncherEnabled = false + // Flag notifies aapt to keep the attribute IDs around + // additionalParameters "--no-version-vectors" + } + + dexOptions { + javaMaxHeapSize "4g" + } + + sourceSets { + main { + manifest.srcFile "AndroidManifest.xml" + jni.srcDirs = [] + jniLibs.srcDirs = ["libs"] + aidl.srcDirs = ["src"] + java.srcDirs = ["src", "src-google"] + resources.srcDirs = ["src"] + renderscript.srcDirs = ["src"] + res.srcDirs = ["res"] + assets.srcDirs = ["assets"] + } + debug { + manifest.srcFile "AndroidManifest-debug.xml" + } + /* + full { + java.srcDirs = ["src-google"] + } + free { + java.srcDirs = ["src-google"] + manifest.srcFile "AndroidManifest-free.xml" + } + freedev { + java.srcDirs = ["src-google"] + manifest.srcFile "AndroidManifest-freedev.xml" + } + freehuawei { + java.srcDirs = ["src-huawei"] + manifest.srcFile "AndroidManifest-freehuawei.xml" + } + */ + legacy { + jniLibs.srcDirs = ["libc++"] + } + } + + flavorDimensions "coreversion", "abi" + productFlavors { + // ABI + armv7 { + dimension "abi" + ndk { + abiFilter 'armeabi-v7a' + } + } + arm64 { + dimension "abi" + ndk { + abiFilter 'arm64-v8a' + } + } + x86 { + dimension "abi" + ndk { + abiFilters 'x86', 'x86_64' + } + } + armonly { + dimension "abi" + ndk { + abiFilters 'arm64-v8a', 'armeabi-v7a' + } + } + fat { + dimension "abi" + ndk { + abiFilters 'arm64-v8a', 'x86', 'x86_64', 'armeabi-v7a' + } + } + + /* + // Version + freedev { + dimension "version" + applicationId "net.osmand.dev" + // resConfig "en" + } + free { + dimension "version" + applicationId "net.osmand" + } + full { + dimension "version" + applicationId "net.osmand.plus" + } + freehuawei { + dimension "version" + applicationId "net.osmand.huawei" + } + */ + // CoreVersion + // Build that doesn't include 3D OpenGL + legacy { + dimension "coreversion" + } + // Build that includes 3D OpenGL release + qtcore { + dimension "coreversion" + } + // Build that includes 3D OpenGL debug + qtcoredebug { + dimension "coreversion" + } + } + + buildTypes { + debug { + buildConfigField "String", "OPR_BASE_URL", "\"https://test.openplacereviews.org/\"" + buildConfigField "String", "OSM_OAUTH_CONSUMER_KEY", "\"Ti2qq3fo4i4Wmuox3SiWRIGq3obZisBHnxmcM05y\"" + buildConfigField "String", "OSM_OAUTH_CONSUMER_SECRET", "\"lxulb3HYoMmd2cC4xxNe1dyfRMAY8dS0eNihJ0DM\"" + signingConfig signingConfigs.development + } + release { + buildConfigField "String", "OPR_BASE_URL", "\"https://test.openplacereviews.org/\"" + buildConfigField "String", "OSM_OAUTH_CONSUMER_KEY", "\"Ti2qq3fo4i4Wmuox3SiWRIGq3obZisBHnxmcM05y\"" + buildConfigField "String", "OSM_OAUTH_CONSUMER_SECRET", "\"lxulb3HYoMmd2cC4xxNe1dyfRMAY8dS0eNihJ0DM\"" + signingConfig signingConfigs.publishing + } + } + +} + +def replaceNoTranslate(line) { + if (line.contains("\"app_name\"") && System.getenv("TARGET_APP_NAME")) { + return line.replaceAll(">[^<]*<", ">" + System.getenv("TARGET_APP_NAME") + "<") + } + if (line.contains("\"app_name_free\"") && System.getenv("TARGET_APP_NAME")) { + return line.replaceAll(">[^<]*<", ">" + System.getenv("TARGET_APP_NAME") + "<") + } + if (line.contains("\"app_edition\"") && System.getenv("APP_EDITION")) { + return line.replaceAll(">[^<]*<", ">" + System.getenv("APP_EDITION") + "<") + } + if (line.contains("\"versionFeatures\"") && System.getenv("APP_FEATURES")) { + return line.replaceAll(">[^<]*<", ">" + System.getenv("APP_FEATURES") + "<") + } + return line; +} + +task updateNoTranslate(type: Copy) { + from('.') { + include 'no_translate.xml' + filter { + line -> replaceNoTranslate(line); + } + } + into 'res/values/' +} + +task validateTranslate { + println "Validating translations" + + file("res").eachFileRecurse groovy.io.FileType.FILES, { + if (it.name == "strings.xml" || it.name == "phrases.xml") { + it.eachLine { line -> + if (line.contains("\$ s") || line.contains("\$ d") || line.contains("\$ f") || + line.contains(" \$s") || line.contains(" \$d") || line.contains(" \$f") || + line.contains("1\$ ") || line.contains("2\$ ") || line.contains("3\$ ") || + line.contains("%1s") || line.contains(" 1\$s") || + (line.contains("% \$") || line.contains("% 1") || line.contains("% 2") || + line.contains("% 3") || line.contains("% s"))) { + throw new GradleException("Incorrect translation " + it.getAbsolutePath() + " " + line); + } + } + } + } +} + +task downloadWorldMiniBasemap { + doLast { + ant.get(src: 'http://builder.osmand.net/basemap/World_basemap_mini_2.obf', dest: 'assets/World_basemap_mini.obf', skipexisting: 'true') + } +} + +task collectVoiceAssets(type: Sync) { + from "../../resources/voice" + into "assets/voice" + include "**/*.js" +} + +task cleanNoTranslate(type: Delete) { + delete('res/values/no_translate.xml') +} + +task collectFonts(type: Copy) { + from "../../resources/fonts" + from "../../resources/rendering_styles/fonts" +// from "../../resources/rendering_styles/fonts/OpenSans" + into "assets/fonts" + include "*.ttf" +} + +task collectHelpContentsStyle(type: Copy) { + from("../../help/website/help/") { + include "style.css" + } + into "assets" +} + +task collectHelpContentsAssets(type: Copy) { + from("../../help/website/help") { + include "about.html" + include "changes.html" + include "faq.html" + include "technical-articles.html" + include "map-legend.html" + } + from("../../help/website/feature_articles") { + include "*.html" + } + from("../../help/website/blog_articles") { + include "osmand-3-8-released.html" + } + into "assets/feature_articles" +} + +task copyPoiCategories(type: Copy) { + from("../../resources/poi") { + include "poi_categories.json" + } + into "assets" +} + +task copyMapShaderIcons(type: Sync) { + // from "../../resources/rendering_styles/style-icons/map-shaders-png" + // into "res/" + from "../../resources/rendering_styles/style-icons/map-shaders-vector" + into "res/drawable" + include "**/*.png", "**/*.xml" + preserve { + include '**/*' + exclude "**/h_*" + } +} + +task copyMapPOIIcons(type: Sync) { + from "../../resources/rendering_styles/style-icons/map-icons-vector" + into "res/drawable/" + // from "../../resources/rendering_styles/style-icons/map-icons-png" + // into "res/" + + include "**/*.png", "**/*.xml" + preserve { + include '**/*' + exclude "**/mm_*" + } +} + +task copyLargePOIIcons(type: Sync) { + from "../../resources/rendering_styles/style-icons/poi-icons-vector" + into "res/drawable/" + include "**/*.png", "**/*.xml" + preserve { + include '**/*' + exclude "**/mx_*" + } +} + +task copyWidgetIconsXhdpi(type: Sync) { + from "res/drawable-xxhdpi/" + into "res/drawable-large-xhdpi/" + include "**/widget_*.png", "**/widget_*.xml", "**/map_*.xml", "**/map_*.png" + preserve { + include '*' + exclude "**/widget_*.png", "**/widget_*.xml", "**/map_*.xml", "**/map_*.png" + } +} + +task copyWidgetIconsHdpi(type: Sync) { + from "res/drawable-xhdpi/" + into "res/drawable-large-hdpi/" + include "**/widget_*.png", "**/widget_*.xml", "**/map_*.xml", "**/map_*.png" + preserve { + include '*' + exclude "**/widget_*.png", "**/widget_*.xml", "**/map_*.xml", "**/map_*.png" + } +} + +task copyWidgetIcons(type: Sync) { + from "res/drawable-hdpi/" + into "res/drawable-large/" + include "**/widget_*.png", "**/widget_*.xml", "**/map_*.xml", "**/map_*.png" + preserve { + include '*' + exclude "**/widget_*.png", "**/widget_*.xml", "**/map_*.xml", "**/map_*.png" + } +} + +task collectExternalResources { + dependsOn collectVoiceAssets, + collectFonts, + collectHelpContentsAssets, + collectHelpContentsStyle, + copyMapShaderIcons, + copyMapPOIIcons, + copyLargePOIIcons, + updateNoTranslate, + validateTranslate, + copyWidgetIcons, + copyWidgetIconsHdpi, + copyWidgetIconsXhdpi, + copyPoiCategories, + downloadWorldMiniBasemap +} + +// Legacy core build +import org.apache.tools.ant.taskdefs.condition.Os + +task buildOsmAndCore(type: Exec) { + Gradle gradle = getGradle() + String tskReqStr = gradle.getStartParameter().getTaskRequests().toString().toLowerCase() + String flavour = ""; + if(!tskReqStr.contains("fat")) { + if(tskReqStr.contains("arm64")) { + flavour = flavour.length() == 0 ? "ARM64_ONLY" : "" + } + if(tskReqStr.contains("armv7")) { + flavour = flavour.length() == 0 ? "ARMV7_ONLY" : "" + } + if(tskReqStr.contains("armonly")) { + flavour = flavour.length() == 0 ? "ARM_ONLY" : "" + } + if(tskReqStr.contains("x86")) { + flavour = flavour.length() == 0 ? "X86_ONLY" : "" + } + } + + description "Build Legacy OsmAndCore" + + if (!Os.isFamily(Os.FAMILY_WINDOWS)) { + if(flavour.length() > 0) { + environment "$flavour", "1" + } + commandLine "bash", file("./old-ndk-build.sh").getAbsolutePath() + } else { + commandLine "cmd", "/c", "echo", "Not supported" + } +} + +task cleanupDuplicatesInCore() { + dependsOn buildOsmAndCore + // doesn't work for legacy debug builds + doLast { + file("libc++/armeabi-v7a").mkdirs() + file("libs/armeabi-v7a/libc++_shared.so").renameTo(file("libc++/armeabi-v7a/libc++_shared.so")) + file("libc++/arm64-v8a").mkdirs() + file("libs/arm64-v8a/libc++_shared.so").renameTo(file("libc++/arm64-v8a/libc++_shared.so")) + file("libc++/x86").mkdirs() + file("libs/x86/libc++_shared.so").renameTo(file("libc++/x86/libc++_shared.so")) + file("libc++/x86_64").mkdirs() + file("libs/x86_64/libc++_shared.so").renameTo(file("libc++/x86_64/libc++_shared.so")) + } +} + +afterEvaluate { + android.libraryVariants.all { variant -> + variant.javaCompiler.dependsOn(collectExternalResources, buildOsmAndCore, cleanupDuplicatesInCore) + } + Gradle gradle = getGradle() + String tskReqStr = gradle.getStartParameter().getTaskRequests().toString().toLowerCase() + if (tskReqStr.contains("huawei")) { + apply plugin: 'com.huawei.agconnect' + } +} + +task appStart(type: Exec) { + // linux + commandLine 'adb', 'shell', 'am', 'start', '-n', 'net.osmand.plus/net.osmand.plus.activities.MapActivity' + // windows + // commandLine 'cmd', '/c', 'adb', 'shell', 'am', 'start', '-n', 'net.osmand.plus/net.osmand.plus.activities.MapActivity' +} + +dependencies { + implementation project(path: ':OsmAnd-java', configuration: 'android') + implementation project(':OsmAnd-api') + implementation 'androidx.multidex:multidex:2.0.1' + implementation 'androidx.gridlayout:gridlayout:1.0.0' + implementation 'androidx.cardview:cardview:1.0.0' + implementation 'androidx.appcompat:appcompat:1.2.0' + 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') + + implementation group: 'commons-logging', name: 'commons-logging', version: '1.2' + implementation 'commons-codec:commons-codec:1.11' + implementation 'it.unibo.alice.tuprolog:tuprolog:3.2.1' + implementation 'org.apache.commons:commons-compress:1.17' + implementation 'com.moparisthebest:junidecode:0.1.1' + implementation 'org.immutables:gson:2.5.0' + implementation 'com.vividsolutions:jts-core:1.14.0' + implementation 'com.google.openlocationcode:openlocationcode:1.0.4' + implementation 'com.android.billingclient:billing:2.0.3' + // turn off for now + //implementation 'com.atilika.kuromoji:kuromoji-ipadic:0.9.0' + implementation 'com.squareup.picasso:picasso:2.71828' + implementation 'me.zhanghai.android.materialprogressbar:library:1.4.2' + // JS core + implementation group: 'org.mozilla', name: 'rhino', version: '1.7.9' +// size restrictions +// implementation 'com.ibm.icu:icu4j:50.1' +// implementation 'net.sf.trove4j:trove4j:3.0.3' + + qtcoreImplementation fileTree(include: ['QtAndroid.jar', 'QtAndroidBearer.jar'], dir: 'libs') + qtcoredebugImplementation fileTree(include: ['QtAndroid.jar', 'QtAndroidBearer.jar'], dir: 'libs') + + legacyImplementation "net.osmand:OsmAndCore_android:0.1-SNAPSHOT@jar" + qtcoredebugImplementation "net.osmand:OsmAndCore_androidNativeDebug:0.1-SNAPSHOT@aar" + qtcoredebugImplementation "net.osmand:OsmAndCore_android:0.1-SNAPSHOT@aar" + qtcoreImplementation "net.osmand:OsmAndCore_androidNativeRelease:0.1-SNAPSHOT@aar" + qtcoreImplementation "net.osmand:OsmAndCore_android:0.1-SNAPSHOT@aar" + implementation ("com.getkeepsafe.taptargetview:taptargetview:1.12.0"){ + exclude group: 'com.android.support' + } + implementation 'com.github.PhilJay:MPAndroidChart:v3.0.1' + implementation ("com.github.HITGIF:TextFieldBoxes:1.4.5"){ + exclude group: 'com.android.support' + } + implementation('com.github.scribejava:scribejava-apis:7.1.1'){ + exclude group: "com.fasterxml.jackson.core" + } + implementation 'com.jaredrummler:colorpicker:1.1.0' + + //freehuaweiImplementation 'com.huawei.hms:iap:5.0.2.300' +} diff --git a/OsmAnd/src/net/osmand/plus/activities/MapActivity.java b/OsmAnd/src/net/osmand/plus/activities/MapActivity.java index 9dfe4f46d1..313fa6b917 100644 --- a/OsmAnd/src/net/osmand/plus/activities/MapActivity.java +++ b/OsmAnd/src/net/osmand/plus/activities/MapActivity.java @@ -304,9 +304,6 @@ public class MapActivity extends OsmandActionBarActivity implements DownloadEven } mapActions = new MapActivityActions(this); mapLayers = new MapActivityLayers(this); - if (mapViewTrackingUtilities == null) { - mapViewTrackingUtilities = new MapViewTrackingUtilities(app); - } dashboardOnMap.createDashboardView(); checkAppInitialization(); diff --git a/OsmAnd/src/net/osmand/plus/audionotes/AudioVideoNotesPlugin.java b/OsmAnd/src/net/osmand/plus/audionotes/AudioVideoNotesPlugin.java index b8d4ef0c92..441600bde2 100644 --- a/OsmAnd/src/net/osmand/plus/audionotes/AudioVideoNotesPlugin.java +++ b/OsmAnd/src/net/osmand/plus/audionotes/AudioVideoNotesPlugin.java @@ -819,7 +819,7 @@ public class AudioVideoNotesPlugin extends OsmandPlugin { } } }); - mapInfoLayer.registerSideWidget(recordControl, new AudioVideoNotesWidgetState(app), "audionotes", false, 32); + mapInfoLayer.registerSideWidget(recordControl, new AudioVideoNotesWidgetState(app, AV_DEFAULT_ACTION), "audionotes", false, 32); mapInfoLayer.recreateControls(); } } @@ -2153,20 +2153,23 @@ public class AudioVideoNotesPlugin extends OsmandPlugin { return DashAudioVideoNotesFragment.FRAGMENT_DATA; } - public class AudioVideoNotesWidgetState extends WidgetState { + public static class AudioVideoNotesWidgetState extends WidgetState { + + private final CommonPreference defaultActionSetting; private static final int AV_WIDGET_STATE_ASK = R.id.av_notes_widget_state_ask; private static final int AV_WIDGET_STATE_AUDIO = R.id.av_notes_widget_state_audio; private static final int AV_WIDGET_STATE_VIDEO = R.id.av_notes_widget_state_video; private static final int AV_WIDGET_STATE_PHOTO = R.id.av_notes_widget_state_photo; - AudioVideoNotesWidgetState(OsmandApplication ctx) { + AudioVideoNotesWidgetState(OsmandApplication ctx, CommonPreference defaultActionSetting) { super(ctx); + this.defaultActionSetting = defaultActionSetting; } @Override public int getMenuTitleId() { - Integer action = AV_DEFAULT_ACTION.get(); + Integer action = defaultActionSetting.get(); switch (action) { case AV_DEFAULT_ACTION_AUDIO: return R.string.av_def_action_audio; @@ -2181,7 +2184,7 @@ public class AudioVideoNotesPlugin extends OsmandPlugin { @Override public int getMenuIconId() { - Integer action = AV_DEFAULT_ACTION.get(); + Integer action = defaultActionSetting.get(); switch (action) { case AV_DEFAULT_ACTION_AUDIO: return R.drawable.ic_action_micro_dark; @@ -2196,7 +2199,7 @@ public class AudioVideoNotesPlugin extends OsmandPlugin { @Override public int getMenuItemId() { - Integer action = AV_DEFAULT_ACTION.get(); + Integer action = defaultActionSetting.get(); switch (action) { case AV_DEFAULT_ACTION_AUDIO: return AV_WIDGET_STATE_AUDIO; @@ -2226,19 +2229,14 @@ public class AudioVideoNotesPlugin extends OsmandPlugin { @Override public void changeState(int stateId) { - switch (stateId) { - case AV_WIDGET_STATE_AUDIO: - AV_DEFAULT_ACTION.set(AV_DEFAULT_ACTION_AUDIO); - break; - case AV_WIDGET_STATE_VIDEO: - AV_DEFAULT_ACTION.set(AV_DEFAULT_ACTION_VIDEO); - break; - case AV_WIDGET_STATE_PHOTO: - AV_DEFAULT_ACTION.set(AV_DEFAULT_ACTION_TAKEPICTURE); - break; - default: - AV_DEFAULT_ACTION.set(AV_DEFAULT_ACTION_CHOOSE); - break; + if (stateId == AV_WIDGET_STATE_AUDIO) { + defaultActionSetting.set(AV_DEFAULT_ACTION_AUDIO); + } else if (stateId == AV_WIDGET_STATE_VIDEO) { + defaultActionSetting.set(AV_DEFAULT_ACTION_VIDEO); + } else if (stateId == AV_WIDGET_STATE_PHOTO) { + defaultActionSetting.set(AV_DEFAULT_ACTION_TAKEPICTURE); + } else { + defaultActionSetting.set(AV_DEFAULT_ACTION_CHOOSE); } } } diff --git a/OsmAnd/src/net/osmand/plus/srtmplugin/TerrainFragment.java b/OsmAnd/src/net/osmand/plus/srtmplugin/TerrainFragment.java index 3635aafe89..c142ebcf5c 100644 --- a/OsmAnd/src/net/osmand/plus/srtmplugin/TerrainFragment.java +++ b/OsmAnd/src/net/osmand/plus/srtmplugin/TerrainFragment.java @@ -221,18 +221,13 @@ public class TerrainFragment extends BaseOsmAndFragment implements View.OnClickL @Override public void onClick(View view) { - switch (view.getId()) { - case R.id.switch_compat: - onSwitchClick(); - break; - case R.id.left_button: - setupTerrainMode(HILLSHADE); - break; - case R.id.right_button: - setupTerrainMode(SLOPE); - break; - default: - break; + int id = view.getId(); + if (id == R.id.switch_compat) { + onSwitchClick(); + } else if (id == R.id.left_button) { + setupTerrainMode(HILLSHADE); + } else if (id == R.id.right_button) { + setupTerrainMode(SLOPE); } } diff --git a/OsmAnd/src/net/osmand/plus/views/OsmandMapTileView.java b/OsmAnd/src/net/osmand/plus/views/OsmandMapTileView.java index 260f30fa50..475e7879aa 100644 --- a/OsmAnd/src/net/osmand/plus/views/OsmandMapTileView.java +++ b/OsmAnd/src/net/osmand/plus/views/OsmandMapTileView.java @@ -191,13 +191,13 @@ public class OsmandMapTileView implements IMapDownloaderCallback { private boolean wasZoomInMultiTouch; private float elevationAngle; - public OsmandMapTileView(MapActivity activity, int w, int h) { + public OsmandMapTileView(Activity activity, int w, int h) { this.activity = activity; init(activity, w, h); } // ///////////////////////////// INITIALIZING UI PART /////////////////////////////////// - public void init(final MapActivity ctx, int w, int h) { + public void init(final Activity ctx, int w, int h) { application = (OsmandApplication) ctx.getApplicationContext(); settings = application.getSettings(); @@ -256,7 +256,7 @@ public class OsmandMapTileView implements IMapDownloaderCallback { if (isZoomingAllowed(getZoom(), -1.1f)) { getAnimatedDraggingThread().startZooming(getZoom() - 1, currentViewport.getZoomFloatPart(), false); if (wasMapLinkedBeforeGesture) { - ctx.getMapViewTrackingUtilities().setMapLinkedToLocation(true); + application.getMapViewTrackingUtilities().setMapLinkedToLocation(true); } } } @@ -1318,7 +1318,9 @@ public class OsmandMapTileView implements IMapDownloaderCallback { angle = 90f; } this.elevationAngle = angle; - ((MapActivity) activity).setMapElevation(angle); + if (activity instanceof MapActivity) { + ((MapActivity) activity).setMapElevation(angle); + } } private boolean isZoomingAllowed(int baseZoom, float dz) { @@ -1341,7 +1343,7 @@ public class OsmandMapTileView implements IMapDownloaderCallback { @Override public boolean onDown(MotionEvent e) { // Facilitates better map re-linking for two finger tap zoom out - wasMapLinkedBeforeGesture = ((MapActivity) activity).getMapViewTrackingUtilities().isMapLinkedToLocation(); + wasMapLinkedBeforeGesture = application.getMapViewTrackingUtilities().isMapLinkedToLocation(); return false; } From 3c05128fd8556b92a11c0898ad495302f736cd80 Mon Sep 17 00:00:00 2001 From: Oliver Date: Fri, 20 Nov 2020 12:14:32 +0000 Subject: [PATCH 49/97] Translated using Weblate (German) Currently translated at 99.9% (3563 of 3564 strings) --- OsmAnd/res/values-de/strings.xml | 32 ++++++++++++++++++++++---------- 1 file changed, 22 insertions(+), 10 deletions(-) diff --git a/OsmAnd/res/values-de/strings.xml b/OsmAnd/res/values-de/strings.xml index 00fc2b7047..6c002cae3e 100644 --- a/OsmAnd/res/values-de/strings.xml +++ b/OsmAnd/res/values-de/strings.xml @@ -3928,13 +3928,13 @@ Zwei-Phasen-Routenberechnung für die Autonavigation. Native ÖPNV Entwicklung Wechseln zu Java (sicher) Berechnung des ÖPNV-Routings - Abmeldung erfolgreich + Abgemeldet Datei wurde bereits in OsmAnd importiert Anmelden über OAuth OpenStreetMap OAuth-Token löschen Was ist neu Für das Schneemobilfahren mit speziellen Straßen und Tracks. - Durchführen eines OAuth-Logins zur Nutzung der osmedit-Funktionen + Anmelden mit OAuth zur Nutzung der osmedit-Funktionen 2-Phasen-A*-Routing-Algorithmus verwenden %1$s Daten sind nur auf den Straßen verfügbar, Sie müssen eine Route mit \"Route zwischen Punkten\" berechnen, um sie zu erhalten. %1$s — %2$s @@ -3957,15 +3957,15 @@ OsmAnd Live Abonnement ist abgelaufen OsmAnd Live Abonnement wurde ausgesetzt OsmAnd Live Abonnement liegt auf Eis - Anmeldung bei OpenStreetMap - Anmeldung bei OpenStreetMap.org + Anmeldung für OpenStreetMap + Anmeldung für OpenStreetMap.org Anmelden mit OpenStreetMap - Sie müssen sich anmelden, um Änderungen hochzuladen. + Melden Sie sich an, um Änderungen hochzuladen, \n -\nSie können sich mit der sicheren OAuth-Methode anmelden oder Ihren Benutzernamen und Ihr Passwort verwenden. - Benutzername und Passwort verwenden +\nentweder mit OAuth oder mit Ihrem Benutzernamen und Passwort. + Anmelden mit Benutzername und Passwort Konto - Login + Benutzername Historie der Marker GPX-Datei an OpenStreetMap senden Geben Sie durch Komma getrennte Tags ein. @@ -3975,14 +3975,26 @@ \"Verfolgbar\" bedeutet, dass die Spur nicht in öffentlichen Auflistungen auftaucht, aber verarbeitete Trackpunkte mit Zeitstempeln davon (die nicht direkt mit Ihnen in Verbindung gebracht werden können) durch Downloads von der öffentlichen GPS API. OSM Notiz schließen OSM Notiz kommentieren - Sie können sich mit der sicheren OAuth-Methode anmelden oder Ihren Benutzernamen und Passwort verwenden. + Melden Sie sich mit der sicheren OAuth-Methode an oder verwenden Sie Ihren Benutzernamen und Ihr Passwort. Foto hinzufügen Registrieren bei \nOpenPlaceReviews.org - Fotos werden vom offenen Datenprojekt OpenPlaceReviews.org zur Verfügung gestellt. Um Ihre Fotos hochladen zu können, müssen Sie sich auf der Website anmelden. + Melden Sie sich auf der Open Data Website OpenPlaceReviews.org an, um noch mehr Fotos hochzuladen. Neues Konto erstellen Ich habe bereits ein Konto Suchverlauf Kajak Motorboot + Zu Mapillary hinzufügen + Zu OpenPlaceReviews hinzufügen + OsmAnd zeigt Fotos aus verschiedenen Quellen: +\nOpenPlaceReviews - POI Fotos; +\nMapillary - Bilder auf Straßenebene; +\nWeb / Wikimedia - POI Fotos, die in OpenStreetMap Daten angegeben sind. + Quellen + Ungefähre Dateigröße + Wählen Sie die Daten aus, die in die Datei exportiert werden sollen. + Benötigt für Import + Ihr Gerät hat nur %1$s Speicherplatz frei. Bitte machen Sie etwas Platz frei oder heben Sie die Auswahl einiger zu exportierender Objekte auf. + Es gibt nicht genug Speicherplatz \ No newline at end of file From 19cc64e8232f41ec42ccd517110fa5b4c91fe3c8 Mon Sep 17 00:00:00 2001 From: Osoitz Date: Fri, 20 Nov 2020 15:31:03 +0000 Subject: [PATCH 50/97] Translated using Weblate (Basque) Currently translated at 99.9% (3562 of 3564 strings) --- OsmAnd/res/values-eu/strings.xml | 498 +++++++++++++++++++++---------- 1 file changed, 342 insertions(+), 156 deletions(-) diff --git a/OsmAnd/res/values-eu/strings.xml b/OsmAnd/res/values-eu/strings.xml index c619c2fc46..42a06769a4 100644 --- a/OsmAnd/res/values-eu/strings.xml +++ b/OsmAnd/res/values-eu/strings.xml @@ -1,15 +1,15 @@ - Deskargatutako zoomak: %1$s - Iraungitze epea (minutuak): %1$s + Deskargatutako zoom mailak: %1$s + Iraungitze denbora (minutuak): %1$s Deskargagarria: %1$s Zoom maximoa: %1$s Zoom minimoa: %1$s Tesela datuak: %1$s %1$s tesela iturburua gorde da - Mercator eliptikoa + Mercator eliptikoa proiekzioa Gehieneko zoom-a - Iraungitze epea (minutuak) + Iraungitze denbora (minutuak) Gutxieneko zoom-a URL Aukeratu badagoena… @@ -21,12 +21,12 @@ EEBB Kanada Europa, Asia, Hego Amerika eta antzekoak - Erresuma Batua, India edo antzekoa + Erresuma Batua, India eta antzekoak Iragarri… - Ezarri iragarpenak: Kaleen izenak, trafiko abisuak (geldialdi behartuak, abiadura mugak), radarren iragarpena. + Ezarri iragarpenak: Kaleen izenak, trafiko abisuak (geldialdi behartuak, abiadura murriztaileak), Abiadura-kameren iragarpena, eta abiadura mugak. Kaleen izenak (TTS) Abiadura muga - Radarrak + Abiadura-kamerak Trafiko abisuak Zehaztu OSM erabiltzailea eta pasahitza \'Ezarpenak\' atalean Garbitu erdibideko puntuak @@ -228,7 +228,7 @@ Turistentzako Gasolina Erakutsi alarmak… - Ezarri trafiko abisuak (abiadura mugak, geldialdi behartuak, abiadura aldaketak, tunelak), abiadura-radar abisuak eta erraien informazioa. + Ezarri trafiko abisuak (abiadura mugak, geldialdi behartuak, abiadura aldaketak, tunelak), abiadura-kameren abisuak eta erraien informazioa. Erabili iparrorratza bestelako norabiderik antzematen ez denean. Erabili iparrorratza Autobiderik ez @@ -238,27 +238,27 @@ Atxikitu errepidera OsmAnd Maps & Nabigazioa Mapa ikusle eta nabigatzaile mugikor globala lineaz kanpoko eta sare bidezko OSM mapetarako - OsmAnd (OSM Automated Navigation Directions) -\n -\nOsmAnd kode irekiko software bidezko nabigaziorako aplikazioa da, OpenStreetMapeko (OSM) mota askotako munduko mapetara sarbidearekin. Mapa guztiak (bektore edo tesela mapak) telefonoaren memoria txartelean gorde daitezke, lineaz kanpoko erabilpena bermatzeko. OsmAndek ere lineaz kanpoko eta sareko ibilbide-kalkulua eskaintzen du, txandakako ahots gidaritzarekin. -\n -\nEzaugarri nagusi batzuk: -\n- Lineaz kanpoko erabateko erabilpena (bektore edo tesela mapak gorde ondoren aukeratu daitezken karpetetan) -\n- Lineaz kanpoko mundu guztiko mapa konpaktuak eskuragarri -\n- Herrialde edo eskualdeetako mapen deskarga, aplikaziotik zuzenean -\n- Gain-geruza desberdin asko ikusi daitezke, GPX edo ibilbide bidea, interes puntuak (POI), gogokoak, sestra-kurbak, garraio publikoaren geltokiak, geruza gardeneko mapa gehigarriak. -\n- Lineaz kanpoko helbide eta lekuen bilatzailea (POI-ak) -\n- Lineaz kanpoko ibilbide-kalkulua distantzia ertainetarako -\n- Kotxea, bizikleta eta oinezkoentzat modua: -\n- Egun/gau ikuspegi automatizatua -\n- Abiaduraren araberako maparen zooma -\n- Maparen lerrokatzea, iparrorratzaren edo norabidearen araberakoa -\n- Errei gidaritza, abiadura muga bistaratzea, grabatutako edo testutik-ahotsera ahotsekin -\n -\nOsmAndeko dohaineko bertsioaren mugak -\n- Mapa kopuruak deskargatzeko muga -\n- Wikipediako POIetara lineaz kanpoko sarbiderik ez -\n + OsmAnd (OSM Automated Navigation Directions) +\n +\nOsmAnd kode irekiko software bidezko nabigaziorako aplikazioa da, OpenStreetMapeko (OSM) mota askotako munduko mapetara sarbidearekin. Mapa guztiak (bektore edo tesela mapak) telefonoaren memoria txartelean gorde daitezke, lineaz kanpoko erabilpena bermatzeko. OsmAndek ere lineaz kanpoko eta sareko ibilbide-kalkulua eskaintzen du, txandakako ahots gidaritzarekin. +\n +\nEzaugarri nagusi batzuk: +\n- Lineaz kanpoko erabateko erabilpena (bektore edo tesela mapak gorde ondoren aukeratu daitezken karpetetan) +\n- Lineaz kanpoko mundu guztiko mapa konpaktuak eskuragarri +\n- Herrialde edo eskualdeetako mapen deskarga, aplikaziotik zuzenean +\n- Gain-geruza desberdin asko ikusi daitezke, GPX edo ibilbide bidea, interesguneak, gogokoak, sestra-kurbak, garraio publikoaren geltokiak, geruza gardeneko mapa gehigarriak. +\n- Lineaz kanpoko helbide eta lekuen bilatzailea (POI-ak) +\n- Lineaz kanpoko ibilbide-kalkulua distantzia ertainetarako +\n- Kotxea, bizikleta eta oinezkoentzat modua: +\n- Egun/gau ikuspegi automatizatua +\n- Abiaduraren araberako maparen zooma +\n- Maparen lerrokatzea, iparrorratzaren edo norabidearen araberakoa +\n- Errei gidaritza, abiadura muga bistaratzea, grabatutako edo testutik-ahotsera ahotsekin +\n +\nOsmAndeko dohaineko bertsioaren mugak +\n- Mapa kopuruak deskargatzeko muga +\n- Wikipediako POIetara lineaz kanpoko sarbiderik ez +\n \nOsmAnd aktiboki garatua izaten ari da eta proiektuaren prozesuak dituen garatze, programatze eta funtzionalitate berrien probak egiteko behar den finantziazio laguntzetan ere oinarritzen da. OsmAnd+ erosiz gero, aplikazioa are zirraragarria izatea laguntzen duzu! Ezaugarri berriak finantzatzea edo dohaintza orokor bat egitea posible da osman.net-en. OsmAnd+ Mapak & Nabigazioa Lineaz Kanpoko eta Sare Bidezko OSM Mapetarako Mapa Ikusle eta Nabigatzaile Mugikor Globala @@ -283,7 +283,7 @@ \n- Aukerazko maparen lerrokatzea, iparrorratzaren edo norabidearen araberakoa \n- Aukerazko errei gidaritza, abiadura muga bistaratzea, grabaketa edo ahots bihurgailua motorra⏎ ⇥ \n - Sortu POI iragazkia + Sortu interesguneen iragazkia Garraio modua: Garraio modua: Egunsentia: %1$s ⏎\nIlunabarra: %2$s @@ -322,7 +322,7 @@ Desblokeatu Pantaila blokeatuta dago Esnatze tartea ezarri: - Radarrak + Abiadura-kamerak Trafiko abisuak Bidesaririk ez Jarraitu aurreko amaitu gabeko nabigazioaren jarraipena egiten? (%1$s segundo) @@ -378,7 +378,7 @@ Erakutsi xehetasun gehiago mapan Ibilbide datuak Formatua - POI (Point of interest) bilaketa + Interesguneen (POI) bilaketa Helbide bilaketa Koordenatuak Bilatu garraio publikoa @@ -411,7 +411,7 @@ Gehigarriak Gehigarriek ezarpen aurreratuak eta funtzionalitate berriak aktibatzen dituzte. Gehigarriak - Egin OSM ekarpenak, esaterako POI objektuak sortzea edo eraldatzea, OSM oharrak irekitzea edo komentatzea, eta sortutako GPX fitxategiak bidaltzea, aplikazioan OSM kredentzialak zehaztuta. OpenStreetMap.org elkarlanean egindako, domeinu publikoko mapa proiektu global bat da. + Egin OSM ekarpenak, esaterako interesgune objektuak sortzea edo eraldatzea, OSM oharrak irekitzea edo komentatzea, eta sortutako GPX fitxategiak bidaltzea, aplikazioan OSM kredentzialak zehaztuta. OpenStreetMap.org elkarlanean egindako, domeinu publikoko mapa proiektu global bat da. Ziurrenik bektore mapak azkarrago kargatu. Baliteke gailu batzuetan ongi ez funtzionatzea. Aukeratu ahotsa eta probatu iragarpenak erreproduzituz: OsmAnd garapena @@ -476,15 +476,15 @@ Gelditu iragarpen automatikoa Hemen nago Aldatu maparen zooma trackball-aren mugimendu horizontalaren bidez. - Trackball-a erabili zooma kontrolatzeko + Erabili trackball-a zooma kontrolatzeko Irisgarritasun hobespenak. Irisgarritasuna Aukeratutako area erakusteko ez dago memoria nahikorik Gain-azal fluoreszenteak Erabili kolore fluoreszenteak lorratzak eta ibilbideak bistaratzeko. Lineaz kanpoko edizioa - Erabili beti lineaz kanpoko edizioa. - Aplikazioaren barneko POI aldaketek ez diete deskargatutako mapa-fitxategiei eragiten, aldaketak zure gailuko fitxategi batean gordetzen dira. + Lineaz kanpoko edizioa aktibatuta badago, aldaketak lokalean gordeko dira eta eskatutakoan igoko dira, bestela aldaketak berehala igoko dira. + Aplikazioan interesguneei egindako aldaketek ez diete deskargatutako mapa-fitxategiei eragiten, aldaketak zure gailuko fitxategi batean gordetzen dira. Igotzen… {0} POI/ohar igo dira Guztia igo @@ -493,15 +493,15 @@ OSM edizio asinkronoa: OSM POI/oharrak gailuan gordeta Erakutsi eta kudeatu gailuko datu-baseko OSM POI/oharrak. - Aukeratu sare bidezko jarraipeneko tartea. - Sare bidezko jarraipen tartea + Zehaztu sare bidezko jarraipenaren tartea. + Sare bidezko jarraipenaren tartea Zehaztu web helbidea ondorengo parametroen sintaxiarekin: lat={0}, lon={1}, timestamp={2}, hdop={3}, altitude={4}, speed={5}, bearing={6}. - Sare bidezko jarraipeneko web helbidea + Sare bidezko jarraipenaren web helbidea Gorde lorratza GPX trepeta erabiliz edo \'Bidaiaren grabaketa\' ezarpenen bidez. Erakutsi uneko lorratza %1$s mapa deskargatu edo eguneratu ditzakezu. Doainezko bertsioa - Erakutsi POI-aren deskripzioa. + Erakutsi interesgunearen deskripzioa. Ipar Amerika Ipar Amerika - Estatu Batuak Amerika zentrala @@ -530,7 +530,7 @@ Aplikazioaren ezarpen globalak Zure OSM erabiltzailea Beharrezkoa openstreetmap.org-eko bidalketentzat. - Zure OSMeko pasahitza + Pasahitza Atzeko plano modua OsmAnd bigarren planoan dabil pantaila itzalia dagoen bitartean. Ez dago leku nahikorik %1$s MB deskargatzeko (%2$s libre). @@ -558,11 +558,11 @@ Simulazioa hasiarazi Ezin da fitxategia izenez aldatu. Badago izen berdineko beste fitxategi bat. - Lotutako hainbat POI kategoria aurkitu dira. + Erlazionatutako hainbat interesgune-kategoria aurkitu dira. Deskargatu lineaz kanpoko datuak interesezko puntuak bilatzeko. Izenez bilatu - \'%1$s\' POI datuen fitxategia erredundantea da eta ezabatua izan daiteke. - POI aldaketak mantentzeko fitxategi lokala ez da aurkitu eta ezin izan da sortu. + \'%1$s\' interesguneen datuen fitxategia erredundantea da eta ezabatu daiteke. + Interesguneen aldaketak mantentzeko fitxategi lokala ez da aurkitu eta ezin izan da sortu. OsmAnd+ berritu Deskargatu aplikazioaren bertsio berria mapa-fitxategi berriak erabili ahal izateko. Izenez aldatu @@ -607,14 +607,14 @@ Aktibatu Desaktibatu Deskargatu - POI datuak + Interesguneen datuak Helbide datuak Garraio publikoaren datuak Mapa datuak Desaktibatuta Ahots iragarpenak (TTS) Ahots iragarpenak (grabatua) - POI datuak + Interesguneen datuak TTS ahotsa Bilaketa Berria Mapako izenen letra-tamaina: @@ -627,12 +627,12 @@ Instalatutako Android TTS (text-to-speech) motorrak ez du aukeratutako hizkuntza jasaten, lehenetsitako TTS hizkuntza erabiliko da. Beste TTS motor bat bilatu nahi duzu merkatuan\? Falta diren datuak Deskargatu hautatutako hizkuntza? - Alderantzikatu GPXaren noranzkoa + Alderantzikatu lorratzaren noranzkoa Erabili uneko helmuga Pasatu lorratz osotik - Lineaz kanpoko bektore mapa bat dago kokapen honentzat. ⏎ -⇥⏎ -⇥Erabiltzeko, aktibatu \'Menua\' -> \'Konfiguratu mapa\' -> \'Maparen Iturburua…\' -> \'Lineaz kanpoko bektore mapak\'. + Lineaz kanpoko bektore mapa bat dago kokapen honentzat. +\n +\nErabiltzeko, aktibatu \'Menua\' -> \'Konfiguratu mapa\' -> \'Maparen Iturburua…\' -> \'Lineaz kanpoko bektore mapak\'. Ahots gidaritzaren irteera Hautatu ahots gidaritzarako bozgorailua. Ahots deiaren audioa (Kotxearen BlueTooth musika ekipoa eteteko) @@ -703,7 +703,7 @@ Garraioa Helbidea indexatzen… Mapa indexatzen… - POI indexatzen… + Interesguneak indexatzen… Garraioa indexatzen… I/O errorea km @@ -756,8 +756,8 @@ Ezin izan da marrazlea kargatu. Bektore marrazlea Aukeratu marrazketaren itxura - Erakutsi POI-aren webgunea - Erakutsi POI-aren telefonoa + Erakutsi interesgunearen webgunea + Erakutsi interesgunearen telefonoa idatzi iragazteko Erresoluzio handiko bistaratzea Ez luzatu (eta lausotu) mapa teselak erresoluzio handiko bistaratzetan. @@ -774,7 +774,7 @@ Aldatu POI-a Ezabatu POI-a Ipar-orratzaren norabidean - Mugimenduaren noranzkoan + Mugimenduaren norabidea Biraketa gabe (iparra beti gorantza) Maparen lerrokatzea: Maparen orientazioa @@ -787,19 +787,19 @@ Ezin izan da GPX kargatu. Bidali informea Ezin izan da deskargatutako maparik aurkitu memoria txartelean. - Idatzi POI bat bilatzeko + Idatzi interesgune bat bilatzeko Edozein Eskerrik asko Yandex trafikoari buruzko informazioagatik. Yandex trafikoa Ibilbidea Gogokoak OSM oharrak (sarean) - POI gainazala… + Interesguneen gainazala… Maparen iturburua… Mapa geruzak Bilatu POI-a Erabili trackball gailu bat mapa mugitzeko. - Trackball-a erabili + Erabili trackball-a Ezarri onartutako gehieneko itxarote denbora kokapenaren irakurketa bakoitzarentzat. Kokapen irakurketarako gehieneko itxarote denbora Non nago? @@ -865,12 +865,12 @@ Garraioa ADOS Erakutsi garraio publikoaren geltokiak mapan. - Erakutsi garraioaren geltokiak + Erakutsi garraio geltokiak OsmAnd nabigazio aplikazioa - POI datuak eguneratuta ({0} kargatu dira) - Ezin izan da POI zerrenda lokala eguneratu. + Interesguneen datuak eguneratuta ({0} kargatu dira) + Ezin izan da interesguneen zerrenda lokala eguneratu. Ezin izan dira datuak zerbitzaritik kargatu. - Ez dago lineaz kanpoko POI daturik area honentzat + Ez dago lineaz kanpoko interesguneen daturik area honentzat Zooma hurbiltzeak POI-ak eguneratzea ahalbidetzen dizu Eguneratu POI-a Eguneratu datu lokalak Internet bidez? @@ -947,8 +947,8 @@ Ezarpenak Gorde uneko lorratza GPX fitxategi gisa orain. Gorde uneko lorratza - Erregistroen tartea nabigazioan - Zehaztu erregistratze maiztasuna nabigazio bitarteko lorratz grabaketarako + Erregistro- tartea nabigazioan zehar + Zehaztu erregistro-tartea nabigazio bitarteko lorratz grabaketarako GPX lorratza automatikoki gordeko da lorratzen direktorioan nabigazioan zehar. Mapa eguneratu Tesela birkargatu @@ -965,8 +965,8 @@ Erakutsi ikuspegiaren norabidea Gaitu maparen 3D ikuspegia. 3D Mapa Ikuspegia - Erakutsi erabilitako azken POI-a gain-azala. - Erakutsi POI gainazala + Erakutsi erabilitako azken interesguneen gainazala. + Erakutsi interesguneen gainazala Aukeratu sareko edo cacheko mapa teselen iturburua. Tesela maparen iturburua Maparen iturburua @@ -1005,7 +1005,7 @@ Eraikina Bidegurutzatzen den kalea Mapa eguneratu - Sortu POI bat + Sortu interesgune bat Bai Utzi Aplikatu @@ -1024,7 +1024,7 @@ Iruzkina gehituta Ezin izan da iruzkina gehitu. Editatu POI-a - Sortu POI bat + Sortu interesgune bat Ezin da nodoa aurkitu, edo zerbitzua hainbat nodoz osatuta dago, eta ez dago horretarako euskarririk oraindik. {0} ezabatu (iruzkina)? Ezabatu POI-a @@ -1038,7 +1038,7 @@ Nodoari buruzko informazioa ez da kargatu Ireki Iruzkina utzi - POI-a aldatzea + Interesgunea aldatzea Beste etiketa guztiak kontserbatu dira Bidali Garbitu @@ -1176,7 +1176,7 @@ %1$s \nPuntu %1$s -Lorratza %2$s +\n%2$s lorratza Gogokoak Nire lekuak arrosa @@ -1456,7 +1456,7 @@ Lorratza %2$s Mapen biltegiratzea Kopiatu Iragazi izenez - Idatzi denetarik bilatzeko + Idatzi bilatzeko Ireki A-GPS informazioa Kudeatu @@ -1548,7 +1548,7 @@ Lorratza %2$s OsmAnd ibilbidearen lineaz kanpoko kalkulua Ibilbidearen kalkulu azkarrak huts egin du (%s), kalkulu motelera aldatzen. Ibilbide birkalkulatze adimentsua - Bidai luzeetan, birkalkulatu ibilbidearen hasierako partea besterik ez. + Ibilbidearen hasierako partea birkalkulatzen du soilik. Bidai luzeetan erabili daiteke. Hautatu nabigazioan saihestu nahi dituzun errepideak. Errepideak besterik ez Errepide estiloa @@ -1596,7 +1596,7 @@ Lorratza %2$s \n{3} MB behar dira une batez, {1} MB behin betiko. ({2} MB eskuragarri.) Igo zure OSM oharra era anonimoan edo zure OpenStreetMap.org profila erabiliz. Bistaratu mendiko bizikletarako bideak - POI ikonoak + Interesguneen ikonoak Grabaketaren banatzea Erabili grabaketaren banatzea Gainidatzi atalak erabilitako espazioa biltegiratze espazioa baino handiagoa bada. @@ -1605,7 +1605,7 @@ Lorratza %2$s Grabatutako atal guztiekin okupatu daitekeen espazioa. Hautatu ahots bidezko gidaritza Hautatu zure hizkuntzaren ahots bidezko gidaritza. - Zehaztu POI mota egokia edo saltatu. + Zehaztu interesgune mota egokia edo saltatu. Menu botoiak kontrol panela abiatzen du, ez menua \'Desgaituta\' dagoenean mapa abiatzen da zuzenean. Bistaratu posizioa beti erdian @@ -1626,8 +1626,8 @@ Lorratza %2$s Mundu oinarri mapa Sareko OSM mapa klasifikazioa irudiekin. - Herrialde askotan (Besteak beste Alemania, Frantzia Italia...) Radar abisuak jasotzea legez debekatuta dago. OsmAndek ez du erantzukizunik onartuko legea jarraitzen ez baduzu. Mesedez sakatu \'Bai\' soilik ezaugarri hau erabiltzeko eskubidea baduzu. - Radarra + Herrialde askotan (Besteak beste Alemania, Frantzia Italia...) abiadura-kameren abisuak jasotzea legez debekatuta dago. OsmAndek ez du erantzukizunik onartuko legea jarraitzen ez baduzu. Mesedez sakatu \'Bai\' soilik ezaugarri hau erabiltzeko eskubidea baduzu. + Abiadura-kamera Koordenatuen formatua Koordenatu geografikoen formatua. Autobus @@ -1653,7 +1653,7 @@ Lorratza %2$s Albaniera (Tosk) OSM POI-a sortuta %1$sko mapa erabili dezakezu orain. - Fitxategiaren izenak karaktere baliogaberen bat du + Fitxategi-izenak karaktere baliogaberen bat du Erakutsi %1$s mapan Bilatu %1$sra OsmAnd bidez partekatua @@ -1749,7 +1749,7 @@ Lorratza %2$s Deskargatu mapa berria Kudeatu Maparen hizkuntza - Garraioaren geltokiak + Garraio geltokiak Zonaldea Eskuragarri Eguneraketak @@ -1807,7 +1807,7 @@ Lorratza %2$s Erakutsi zoom botoiak Gorde gogokoen talde gisa Ezarri helburuak - POI gainazalaren etiketak + Interesguneen gainazalaren etiketak Serbokroaziera Navajoa Tamilera @@ -1829,7 +1829,7 @@ Lorratza %2$s Erradioa Erregistro tarte orokorra Kokaleku orokorra GPX fitxategian erregistratzea gaitu eta desgaitu daiteke mapako GPX erregistro trepetarekin. - Erregistroaren tartea + Erregistro-tartea Gaitu HTTP proxya Konfiguratu HTTP proxya sare eskaera guztietarako. Proxy ostalaria @@ -1867,7 +1867,7 @@ Lorratza %2$s Eguneratu Erabili menua Maparen legenda - Ziur POI puntua mota gabe gorde nahi duzula? + Ziur interesgunea mota gabe gorde nahi duzula\? Eraldatu OSM aldaketa Bertsioak Artikulu teknikoak @@ -1937,14 +1937,14 @@ mapak eta nabigazioa Itxiera ordua Kontaktu informazioa Gehitu irekiera orduak - POI mota + Interesgune mota Paneleko errenkada kopurua %1$s - Zehaztu POI mota mesedez. + Zehaztu interesgune mota mesedez. Lanegunak Azken tokiak Gogokoak Orain hemen gordeta: %1$s - Aldaketak igotzen dituzunean POI-a ezabatuko da + Aldaketak igotzen dituzunean interesgunea ezabatuko da Lerro kopurua Ziur zaude? Gorde gabeko aldaketak galduko dira, Jarraitu? @@ -2015,7 +2015,7 @@ mapak eta nabigazioa Mapak deskargatzeko beharrezkoa da. Kokalekua bilatzen… Espazio librea - OsmAnd datuen biltegiratzea (mapak, GPX fitxategiak, eta abar): %1$s. + OsmAnd datuen biltegiratzea (mapak, lorratz fitxategiak, eta abar): %1$s. Eman baimena Eman kokapena atzitzeko baimena Jaso jarraibideak eta aurkitu toki berriak Internet konexiorik gabe @@ -2044,18 +2044,18 @@ mapak eta nabigazioa Azpikategoriak Transliteratu %1$s izena falta bada Transliteratu izenak - Idatzi hiria, helbidea, POI izena + Idatzi hiria, helbidea, interesgunearen izena Marroi argia Marroi iluna Ingerada marren kolore eskema Errepidearen gainazalaren integritatea Ingerada marren kolore eskema - Gutxieneko abiadura erregistratzeko + Erregistratzeko abiadura minimoa Iragazkia: Ez erregistratu puntuak abiadura honen azpitik. Erregistratzeko desplazamendu minimoa Iragazkia: Ezarri puntu berri bat erregistratzeko gutxieneko distantzia. - Erregistratzearen gutxieneko zehaztasuna - Iragazkia: Ez erregistratu zehaztasun hau ez badago. + Erregistratzeko zehaztasun minimoa + Iragazkia: Ez erregistratu zehaztasun hau lortu arte. Eguberriko POI Eguberria eta urte berria datozela, zerikusia duten puntuak bistaratzea erabaki dezakezu, eguberri zuhaitzak, merkatuak, eta abar. Erakutsi eguberriko puntuak\? @@ -2069,10 +2069,10 @@ mapak eta nabigazioa Bistaratu bidaiaren grabaketa ahalbidetzen duen jakinarazpen bat. Jakinarazpenak Hartu %1$d. irteera eta jarraitu - Igo POI bat + Igo interesgune bat Ibilbidearen kalkulua - Ez duzu GPX fitxategirik oraindik - GPX fitxategiak karpetara gehitu ditzakezu ere + Ez duzu lorratz fitxategirik oraindik + Lorratz fitxategiak karpetara gehitu ditzakezu ere Gehitu gehiago… Itxura Ongi @@ -2130,7 +2130,7 @@ Area honi dagokio: %1$s x %2$s Pantailaren erdian bideo-ohar bat gehitzeko botoia. Pantailaren erdian argazki-ohar bat gehitzeko botoia. Pantailaren erdian OSM ohar bat gehitzeko botoia. - Pantailaren erdian POI bat gehitzeko botoia. + Pantailaren erdian interesgune bat gehitzeko botoia. Nabigazioan ahots bidezko jarraibideak gaitu edo desgaitzeko botoia. Pantailaren erdian aparkaleku bat gehitzeko botoia. " hona gorde da: " @@ -2149,8 +2149,8 @@ Area honi dagokio: %1$s x %2$s Mezua Gogokoa gordetzeko kategoria: Aukeratu hautazko kategoria. - POI zerrenda - Gehitu POI kategoria bat edo gehiago mapan erakusteko. + Interesguneen zerrenda + Gehitu interesguneen kategoria bat edo gehiago mapan erakusteko. Azpiko zerrendaren hurrengo orria erakusteko botoia. Gehitu mapa estilo bat Bete parametro guztiak @@ -2174,7 +2174,7 @@ Area honi dagokio: %1$s x %2$s Ekintzaren izena Bikoizketa ekiditeko ekintza azkarrari %1$s izena jarri zaio. Gogoko puntuak mapan erakutsi edo ezkutatzeko botoia. - POI puntuak mapan erakutsi edo ezkutatzeko botoia. + Interesguneak mapan erakutsi edo ezkutatzeko botoia. Laga hutsik helbidea edo lekuaren izena erabiltzeko. Automatikoki zatitu grabaketa hutsunea eta gero Hasi segmentu berria 6 minututako hutsune bat eta gero, lorratz berria bi ordu eta gero, edo fitxategi berria hutsune luzeago bat eta gero data aldatzean. @@ -2184,7 +2184,7 @@ Area honi dagokio: %1$s x %2$s Puntuak ezabatu dira. Ziur %1$d puntu ezabatu nahi dituzula\? Ibilbide honetan pasatu beharreko bide-gurutzeak - Bide-puntuak, interesezko puntuak, izena duten ezaugarriak + Bide-puntuak, interesguneak, izena duten ezaugarriak Lorratza Gehieneko abiadura Batezbesteko abiadura @@ -2257,9 +2257,9 @@ Area honi dagokio: %1$s x %2$s Berreskuratu erosketak Maparen letra-tipoak Pausatua - OsmAnd (OSM Automated Navigation Directions) mapa eta nabigazio aplikazio bat da. Doako, mundu osoko eta kalitate altuko OSM mapak eskura jartzen dizkizuna. + OsmAnd (OSM Automated Navigation Directions) mapa eta nabigazio aplikazio bat da. Doako, mundu osoko eta kalitate altuko OSM mapak eskura jartzen dizkizuna. \n -\nGozatu ahots bidezko nabigazioa edo nabigazio grafikoa, ikusi interesezko puntuak (POI), sortu eta kudeatu GPX lorratzak, erabili sestra-kurbak eta garaiera datuak (gehigarri baten bidez), aukeratu kotxe, bizikleta eta oinezko moduen artean, editatu OSM, eta askoz gehiago. +\nGozatu ahots bidezko nabigazioa edo nabigazio grafikoa, ikusi interesguneak (POI), sortu eta kudeatu GPX lorratzak, erabili sestra-kurbak eta garaiera datuak (gehigarri baten bidez), aukeratu kotxe, bizikleta eta oinezko moduen artean, editatu OSM, eta askoz gehiago. Idatzi helbidea GPS nabigazioa \n• Lineaz kanpo (Ibiltaritza kargurik ez atzerrian zaudenean) edo konektatuta (azkarragoa) aritzea erabaki dezakezu @@ -2335,7 +2335,7 @@ Area honi dagokio: %1$s x %2$s Piztu \'Nire posizioa\'-ren mugimendu animatua nabigazioan. %1$s barne "Eskiatu -\nOsmAnd eski-mapak gehigarriak eskiatzeko ibilbideak ikustea baimentzen dizu, konplexutasun mailarekin eta bestelako informazio gehigarriarekin, arrasteak eta bestelako zerbitzuak." +\nOsmAnd eski-mapak gehigarriak eskiatzeko pistak ikustea baimentzen dizu, konplexutasun mailarekin eta bestelako informazio gehigarriarekin, arrasteak eta bestelako zerbitzuak." Hartu parte OSMn \n• Eman datuen arazoen berri \n• Igo GPX lorratzak OSMra aplikaziotik bertatik @@ -2362,14 +2362,15 @@ Area honi dagokio: %1$s x %2$s Gora/Behera Denbora mugimenduan Max/Min - Mapa -\n• Bistaratu inguruko interesezko puntuak (POI) -\n• Egokitu mapa zure mugimenduaren (edo iparrorratzaren) norabidera -\n• Non zauden eta nora begiratzen duzun erakusten du -\n• Partekatu zure kokalekua lagunek zu aurkitu ahal izateko -\n• Gorde zuretzat garrantzitsuak diren tokiak gogokoetan -\n• Mapan izenak nola bistaratu aukeratzen uzten dizu: zure hizkuntzan, tokiko hizkuntzan, edo ahoskera fonetikoa -\n• Interneteko tesela mapak erakusten ditu, satelite ikuspegia (Bingek eskainia), hainbat gainazal, esaterako turismorako edo nabigaziorako GPX lorratzak eta azal gehigarriak gardentasun aldagarriarekin + Mapa +\n• Bistaratu inguruko interesguneak (POI) +\n• Egokitu mapa zure mugimenduaren (edo iparrorratzaren) norabidera +\n• Non zauden eta nora begiratzen duzun erakusten du +\n• Partekatu zure kokalekua lagunek zu aurkitu ahal izateko +\n• Gorde zuretzat garrantzitsuak diren tokiak gogokoetan +\n• Mapan izenak nola bistaratu aukeratzen uzten dizu: zure hizkuntzan, tokiko hizkuntzan, edo ahoskera fonetikoa +\n• Interneteko tesela mapak erakusten ditu, satelite ikuspegia (Bingek eskainia), hainbat gainazal, esaterako turismorako edo nabigaziorako GPX lorratzak eta azal gehigarriak gardentasun aldagarriarekin +\n Bizikleta \n• Bizikletentzako bideak aurki ditzakezu mapan \n• Bizikletarako GPS nabigazioak ibilbideak bizikletentzako bideak erabiliz eraikiko du @@ -2452,14 +2453,14 @@ Area honi dagokio: %1$s x %2$s Erakutsi \'nabigazioa amaituta\' elkarrizketa-koadroa Hasi/amaitu nabigazioa Nabigazioa hasi edo amaitzeko botoia. - Lineako jarraipenaren denbora-bufferra + Sare bidezko jarraipenaren denbora-bufferra Zehaztu bidaltzeke dauden kokalekuak gordetzeko denbora-buffer bat Mapillary-ko argazkiak linean besterik ez daude eskuragarri. Saiatu berriro Neurtu distantzia Arakatu mapa eta gehitu puntuak Gehitu puntu bat gutxienez. - GPX fitxategiaren izena: + GPX fitxategi-izena: Erakutsi mapan gorde eta gero Gehitu bide-puntua Gorde GPX bide-puntua @@ -2481,7 +2482,7 @@ Area honi dagokio: %1$s x %2$s Desgaitu maparen animazioak. Jarraitu mapan erakusten Irten gorde gabe? - Gorde puntuak puntu ala lerro gisa. + Gorde puntuak bide-puntu ala lerro gisa. OsmAndek puntuak hautatutako profilaren ibilbideekin lotuko ditu. Hautatu nabigazio profila Gehitu ibilbide-puntuak @@ -2622,16 +2623,16 @@ Area honi dagokio: %1$s x %2$s Negua eta eskia Bidaiatze ikuspegia Nautikoa - POI etiketak + Interesguneen etiketak Bihar irekiko du ordu honetan - Kopiatu kokaleku edo POI-aren izena + Kopiatu kokaleku edo interesgunearen izena Izen gabeko kokalekua Unekoa Tarteko geldialdia gehitzen du Lehen geldialdia gehitzen du Mugitu helburua gora, eta sortu Erakutsi itxitako oharrak - Erakutsi/ezkutatu OSM oharrak mapan. + Erakutsi edo ezkutatu OSM oharrak mapan. GPX - JOSM edo bestelako OSM editoreentzat esportatzeko egokia. OSC - OSM-ra esportatzeko egokia. GPX fitxategia @@ -2751,7 +2752,7 @@ Area honi dagokio: %1$s x %2$s Gogokoa Eskuratu OsmAnd Live ezaugarri guztiak desblokeatzeko: Mapen eguneraketak egunero deskarga mugarik gabe, ordainpeko eta doako gehigarri guztiak, Wikipedia, Wikivoyage eta askoz gehiago. Lehenetsitako itxuraren aldaera, oinezko eta bizikleten bideen kontrastea handitzeko. Mapnik kolore zaharrak erabiltzen ditu. - Errepidetik kanpo gidatzeko, \'Topo\' estiloan oinarritua atzealdean sateliteko irudiekin erabiltzeko. Errepide nagusien zabalera estutua, eta bide, bidexka eta bidegorrien zabalera handitua. + Errepidetik kanpo gidatzeko, \'Topo\' estiloan oinarritua atzealdean sateliteko irudiekin erabiltzeko. Errepide nagusien zabalera estutua, eta pista, bidexka eta bidegorrien zabalera handitua. Nabigazio nautikorako. Ezaugarri nagusiak: Boiak, faroak, ibai bideak, itxas erreiak eta markak, portuak, itsas zerbitzuak, sakonera marrak. Eskiatzeko. Ezaugarri nagusiak: Pistak, arrasteak eta abar. Bestelako mapako objektuak leuntzen dira. Gidatzeko estilo sinplea. Begietara xamurra gau moduan, sestra-kurbak, kontraste handiko errepide laranjak, bestelako mapako objektuak leunduak. @@ -2898,7 +2899,7 @@ Area honi dagokio: %1$s x %2$s Aldatu Erakutsi gehiago Bistaratutako lorratzak - Erakutsi/ezkutatu GPX lorratzak + Erakutsi/ezkutatu lorratzak Gehitu tarteko puntua %1$d transferentzia Gehitu irteera eta helburua @@ -2936,8 +2937,8 @@ Area honi dagokio: %1$s x %2$s Eskailera Bidea Zehaztu gabea - Ezkutatu GPS lorratzak - Erakutsi GPS lorratzak + Ezkutatu lorratzak + Erakutsi lorratzak Gehitu helburua aurretik Aurreko ibilbidea Graduak @@ -2952,7 +2953,7 @@ Area honi dagokio: %1$s x %2$s Trinkotua Zaldi-bidea Bizikletentzako bidea - Hautatutako GPX lorratzak mapan erakutsi edo ezkutatzeko botoia. + Hautatutako lorratzak mapan erakutsi edo ezkutatzeko botoia. Tranbiarik ez Ekidin tranbiak Autobusik ez @@ -3234,7 +3235,7 @@ Area honi dagokio: %1$s x %2$s Mapa nabigazioan zehar Mapa nabigazioan zehar Beste bat - Pisua, altuera, abiadura + Pisua, altuera, luzera, abiadura Ibilgailuaren parametroak Ahots iragarpenak nabigazioan zehar egiten dira soilik. Nabigazio argibideak eta iragarpenak @@ -3310,7 +3311,7 @@ Area honi dagokio: %1$s x %2$s %1$s GB %1$s MB %1$s KB - Lorratzek gordetzeko karpeta + Lorratzak gordetzeko karpeta Lorratzak \'rec\' karpetan edo hilabeteko zein eguneko karpetatan gorde daitezke. Grabatu lorratzak \'rec\' karpetan Grabatu lorratzak eguneko karpetetan @@ -3420,12 +3421,12 @@ Area honi dagokio: %1$s x %2$s Hautatu ikonoa, kolorea eta izena Kokalekua partekatzeko aukera bidai grabaketa erabiliz. Lineako jarraipena - Egunkariaren zehaztasuna + Erregistroaren zehaztasuna Egiaztatu eta partekatu aplikazioaren erregistro zehatzak Baimena beharrezkoa da aukera hau erabiltzeko. - Hau abiadura txikiko atalase iragazkia da, abiadura jakin baten azpitik puntuak ez erregistratzeko. Grabatutako ibilbideak leunagoak izan daitezke mapan ikusitakoan. - Albo-efektua: Zure ibilbidean gutxieneko abiadura irizpidea betetzen ez duten zati guztiak faltako zaizkizu (adibidez, bizikletaz aldapa bat igotzen duzunean). Gainera, ez da atsedenaldi-epeei buruzko informaziorik egongo,. Horrek edozein azterketeta edo post-prozesuri eragingo dio, adibidez, bidaiaren guztizko iraupena, denbora martxan, edo batez besteko abiadura zehazten saiatzean. - Gomendioa: Saiatu lehenbizi mugimenduaren detekzioa erregistroko gutxieneko desplazamendu iragazkiaren bidez (B), emaitza hobeak sor ditzake eta datu gutxiago galduko dituzu. Zure ibilbideak abiadura baxuan zaratatsuak badira, saiatu zeroz kanpoko balioak hemen. Kontuan izan behar da neurketa batzuek ez dutela abiadura balioa emango (sarean oinarritutako metodo batzuk), kasu horretan ez zenuke ezer grabatuko. + Hau abiadura txikiko atalase iragazkia da, abiadura jakin baten azpitik puntuak ez erregistratzeko. Grabatutako lorratzak leunagoak izan daitezke mapan ikusitakoan. + Albo-efektua: Zure lorratzak gutxieneko abiadura irizpidea betetzen ez duten zati guztiak faltako zaizkizu (adibidez, bizikletaz aldapa bat igotzen duzunean). Gainera, ez da atsedenaldi-epeei buruzko informaziorik egongo,. Horrek edozein azterketeta edo post-prozesuri eragingo dio, adibidez, bidaiaren guztizko iraupena, denbora martxan, edo batez besteko abiadura zehazten saiatzean. + Gomendioa: Saiatu lehenbizi mugimenduaren detekzioa erregistroko gutxieneko desplazamendu iragazkiaren bidez (B), emaitza hobeak sor ditzake eta datu gutxiago galduko dituzu. Zure lorratzak abiadura baxuan zaratatsuak badira, saiatu zeroz kanpoko balioak hemen. Kontuan izan behar da neurketa batzuek ez dutela abiadura balioa emango (sarean oinarritutako metodo batzuk), kasu horretan ez zenuke ezer grabatuko. Oharra: abiadura> 0 egiaztatzea: GPS txip gehienek algoritmoak mugimenduan zaudela zehazten duenean bakarrik adierazten dute abiaduraren balioa, eta deus ez bestela. Hori dela eta, iragazki honetan > 0 ezarpena erabiltzean GPS txiparen mugimendua detekzioa erabiltzen duzula esan daiteke. Baina grabaketa garaian hemen iragazi ez bada ere, funtzio hau erabiltzen dugu gure GPX azterketan zuzendutako distantzia zehazteko, hau da, eremu horretan erakutsitako balioa mugimenduan grabatutako distantzia da. Honek gutxieneko zehaztasun adierazlearekin neurtutako puntuak soilik erregistratuko ditu (metro edo oinetan, Android-ek zure txiperako jakinarazi duen moduan). Zehaztasuna neurketa eta egiazko posizioaren arteko hurbiltasuna da, ez dago prezisioarekin lotua, hori errepikatutako neurketen sakabanaketa da. Albo-efektua: Zehaztasunaren arabera iragaztearen ondorioz, puntuak falta daitezke, adibidez, zubien azpian, zuhaitzen azpian, eraikin altuen artean, edo eguraldi jakin batzuekin. @@ -3458,9 +3459,9 @@ Area honi dagokio: %1$s x %2$s \n \n• Beste profil bateko ezarpenak kopiatzeko aukera gehitu da \n -\n• Ordena aldatzeko edo POI kategoriak ezkutatzeko aukera gehitu da +\n• Ordena aldatzeko edo interesgune kategoriak ezkutatzeko aukera gehitu da \n -\n• POI ikonoak mapan behar bezala lerrokatuta +\n• Interesgune ikonoak mapan behar bezala lerrokatuta \n \n• Ilunabarra / egunsentia datuak gehitu da maparen konfigurazioan \n @@ -3509,15 +3510,15 @@ Area honi dagokio: %1$s x %2$s Ibilbidearen birkalkulua Iragarri Erabiltzaile-izena eta pasahitza - Ezarpen hauek profil guztiei aplikatzen zaizkie. + Ezarpen hauek orokorrak dira, eta profil guztiei aplikatzen zaizkie. OSM edizioa - Ikusi zure aldaketak edo oraindik igo gabeko OSM akatsak hemen: %1$s. Igotako puntuak ez dira gehiago erakutsiko. + Oraindik igo gabeko aldaketak edo OSM akatsak hemen ikusi ditzakezu: %1$s. Igotako puntuak ez dira OsmAnd-en erakutsiko. OSM Nabigatu edo mugitzean erakutsitako ikonoa. Atsedenean erakutsitako ikonoa. Ezin izan da \'%s\' geo intent-a errendatu. Oharra: Grabatzen hasi aurretik GPSa itzalita egon bada, neurtutako lehen puntuak zehaztasun txikia izan dezake. Gure kodean puntu bat grabatu aurretik segundo bat itxaron genezake (edo jarraian grabatutako hirutik onena hartu, etab.), baina oraindik ez da hau garatu. - Iragazki honek puntu bikoiztuak grabatzea saihesten du mugimendu txikiegia egon bada. Gero prozesatu ez diren ibilbideetan itxura hobe bat lortzen da. + Iragazki honek puntu bikoiztuak grabatzea saihesten du mugimendu txikiegia egon bada. Gero prozesatu ez diren lorratzetan itxura hobe bat lortzen da. Albo ondorioak: Atseden aldiak ez dira batere erregistratzen edo puntu bakarrarekin erregistratzen dira. Mugimendu txikiak (adibidez, albo batera) iragazi daitezke. Zure fitxategiak informazio gutxiago dauka post-prozesatzeko eta estatistika txarragoakk ditu erregistratzeko garaian puntu erredundanteak iragazi dituelako, agian harrera txarra edo GPS txiparen efektuak eragindako akatsak mantentzen dituen bitartean. Gomendioa: 5 metroko ezarpenak ondo funtziona dezake zuretzat, hori baino gehiagoko xehetasuna behar ez baduzu, eta ez badituzu esplizituki jaso nahi atseden aldiko datuak. Denbora-bufferra @@ -3536,7 +3537,7 @@ Area honi dagokio: %1$s x %2$s Ordenatu kategoriaren arabera Antartika Prestatzen - POI motak + Interesgune motak Ez da ezer hautatu Ekintza azkarrak Profilak @@ -3578,7 +3579,7 @@ Area honi dagokio: %1$s x %2$s Mapako terreno geruza erakutsi edo ezkutatzeko botoia. Erakutsi terrenoa Ezkutatu terrenoa - Erakutsi / ezkutatu terrenoa + Erakutsi edo ezkutatu terrenoa Maldak Erliebea Gaitu erliebea edo malda mapa ikusteko. Mapa mota hauei buruz gehiago irakur dezakezu gure gunean @@ -3611,9 +3612,9 @@ Area honi dagokio: %1$s x %2$s Kolore pertsonalizatua Mapa gehigarriak onartu gabeko ekintza %1$s - Sortu / aldatu POIa + Sortu edo aldatu interesgunea Aparkaleku-posizioak - Gehitu / aldatu gogokoa + Gehitu edo aldatu gogokoa Berrezarri lehenetsitako ordena Itzuli ediziora Ekintza botoiak hautatutako profilen artean txandakatzen du. @@ -3623,12 +3624,12 @@ Area honi dagokio: %1$s x %2$s Munduaren gainbegirada mapa (xehetsua) Onartu gabeko mota Garraio publikoa mapan erakutsi edo ezkutatzen duen botoia. - Hautatu mapan agertuko diren Wikipediako artikuluen hizkuntzak. Hizkuntza eskuragarrien artean txandakatu dezakezu artikulua irakurtzean. + Hautatu mapako Wikipediako artikuluen hizkuntzak. Hizkuntza eskuragarrien artean txandakatu dezakezu artikulua irakurtzean. Wikipediako artikulu batzuk agian ez daude zure hizkuntzan eskuragarri. Malgaxea Aragonera %1$s / %2$s - Bilatu POI motak + Bilatu interesgune motak OsmAnd + Mapillary Ekintza azkarra Erradioaren erregela @@ -3642,8 +3643,8 @@ Area honi dagokio: %1$s x %2$s Nabigazio profilak Ezkutatu garraio publikoa Erakutsi garraio publikoa - Erakutsi/ezkutatu garraio publikoa - OsmAnd Aztarnaria + Erakutsi edo ezkutatu garraio publikoa + OsmAnd aztarnaria Jarraitu Pertsonalizatu \"Tiradera\", \"Konfiguratu mapa\" eta \"Laster-menua\" ataletan dauden elementu kopurua. \n @@ -3695,7 +3696,7 @@ Area honi dagokio: %1$s x %2$s \n Harpidetza automatikoki berrituko da berritze data baino lehen bertan behera uzten ez bada. Berritze-aldian (hilabetea / hiru hilabetea / urtea) kobratuko da kontua. \n \n Zure harpidetzak kudeatu eta bertan behera utzi ditzakezu Google Play ezarpenetara joanez. - Konbinatu kategoria desberdinetako POI motak. Ukitu pizgailua guztiak hautatzeko, ukitu ezkerreko aldea kategoria aukeratzeko. + Konbinatu kategoria desberdinetako interesgune motak. Ukitu pizgailua guztiak hautatzeko, ukitu ezkerreko aldea kategoria aukeratzeko. • Lineaz kanpoko malda-mapa berriak \n \n • Gogokoen eta GPX bide-puntuen pertsonalizazio osoa - kolore, ikono, eta forma pertsonalizatuak @@ -3704,7 +3705,7 @@ Area honi dagokio: %1$s x %2$s \n \n • Wikipedia bereizitako geruza gisa \"Konfiguratu mapa\" atalean, hautatu behar diren hizkuntzak soilik \n -\n • Sortu zure POI iragazkia / mapak malgutasun osoz +\n • Sortu zure interesguneen iragazkia / mapak malgutasun osoz \n \n • Aukerak gehitu profil pertsonalizatuetarako ezarpenak leheneratzeko \n @@ -3739,7 +3740,7 @@ Area honi dagokio: %1$s x %2$s Iraungitze ordua Mercator proiekzioa Biltegiratze formatua - Ezarri zoom maila minimo eta maximoa lineaz kanpoko mapa bistaratu edo kargatzeko. + Ezarri zoom maila minimo eta maximoa sareko mapa bistaratu edo kargatzeko. Parametro hauek bistaratzeari eragingo diote maparen gainazal edo azpiazal gisa erabiltzean. \n \n%1$s: Mapa hautatutako zoom mailetara mugatuko da. @@ -3761,7 +3762,7 @@ Area honi dagokio: %1$s x %2$s Eman zure ibilgailuaren pisua, ibilgailu astunentzako zenbait ibilbide murriztu daitezke. Desgaituta. \"Mantendu pantaila piztuta\" behar da \"Esnatu ondorengo denbora-muga\" atalean. metro - Kontrolatu mapan agertzen diren xehetasun gehigarrien ikusgaitasuna + Erakutsi edo ezkutatu maparen xehetasun gehigarriak Gauerako mapa Erakutsi/ezkutatu Mapillary Ezkutatu Mapillary @@ -3775,30 +3776,28 @@ Area honi dagokio: %1$s x %2$s Gurpil-aulkia Kart Puntuen arteko ibilbidea - Gehitu arrasto batera + Gehitu lorratz batera Hautatu zabalera Hautatu zatiketa aukera: denboraren arabera edo distantziaren arabera. Norabideko geziak Sortu ibilbide berria Distantzia margena - Aukera hau erabiltzeko OsmAnd-ek zure arrastoak mapako errepideetara atxiki behar ditu. -\n -\nHurrengo urratsean, nabigazio profila hautatu beharko duzu baimendutako errepideak eta zure arrastoa errepideetara hurbiltzeko distantzia tartea atzemateko. + Ondoren, lotu zure lorratza baimendutako errepiderik hurbilenera zure nabigazio profil batekin aukera hau erabiltzeko. Editatutako azkena - Inportatu arrastoa - Ireki dagoen arrasto bat - Hautatu irekitzeko arrasto fitxategia - Gainidatzi arrastoa - Gorde arrasto berri gisa + Inportatu lorratza + Ireki dagoen lorratz bat + Hautatu irekitzeko lorratz fitxategia. + Gainidatzi lorratza + Gorde lorratz berri gisa Alderantzizko ibilbidea - Arrasto osoa birkalkulatuko da hautatutako profilaren bidez. - Bakarrik hurrengo segmentua birkalkulatuko da hautatutako profilaren bidez. - Hautatu nola konektatu puntuak, lerro zuzen batez, edo kalkulatu horien arteko ibilbidea hautatutako profilarekin. - Arrasto osoa + Lorratz osoa birkalkulatuko da hautatutako profilaren bidez. + Bakarrik hurrengo segmentua birkalkulatuko da hautatutako profila erabiliz.. + Aukeratu nola konektatu puntuak, lerro zuzen batez, edo kalkulatu horien arteko ibilbidea behean adierazitako moduan. + Lorratz osoa Hurrengo segmentua Nabigazio profila - Hautatu zein arrasto fitxategiari gehituko zaion segmentu berria. - Ezarri behar dituzu lanegunak jarraitzeko + Hautatu zein lorratz fitxategiari gehituko zaion segmentu berria. + Ezarri lanegunak jarraitzeko Gehitu argazkia Sortu kontu berria Kontu bat daukat dagoeneko @@ -3812,4 +3811,191 @@ Area honi dagokio: %1$s x %2$s Inportatzeko beharrezkoa da Zure gailuak %1$s soilik ditu libre. Mesedez, askatu espazioa edo desautatu esportatzeko elementu batzuk. Ez dago espazio nahikorik + Motoa + Zehaztu lorratz orokorreko grabazio erregistroaren tartea (mapan \'Bidaia grabaketa\' trepetaren bidez aktibatuta dago). + Ireki gordetako lorratza + \"Jarraigarria\" esan nahi du lorratza ez dela inolako zerrenda publikoetan agertzen, baina prozesatutako puntuak bere denbora markekin (zurekin zuzenean lotu ezin direnak) GPS API publikoaren deskargen bidez agertzen dira. + + Prestazioa + OpenStreetMap-eko saio hasiera + OpenStreetMap.org-eko saio hasiera + \"Publikoa\" esan nahi du lorratza publikoki erakusten dela zure GPS lorratzen eta GPS lorratz zerrende publikoetan, eta lorratzen zerrenda publikoan denbora markak modu gordinean daudela. APIaren bidez hornitutako datuek ez dute zure lorratz orria aipatzen. Bide-puntuen denbora-zigiluak ez daude eskuragarri GPS API publikoaren bidez, eta bide-puntuak ez daude kronologikoki ordenatuta. + \"Pribatua\" esan nahi du lorratza ez dela inolako zerrenda publikoetan agertzen, baina ordena ez kronologikoan dauden bide-puntuak GPS API publikoaren bidez eskuragarri daude denbora-markarik gabe. + \"Identifikagarria\" esan nahi du lorratza publikoki erakutsiko dela Zure GPS lorratzetan eta GPS lorratz zerrenda publikoetan, hau da, beste erabiltzaileek lorratz gordina deskargatu eta zure erabiltzaile izenarekin lotu ahal izango dute. Bide-puntuen APIaren bidez hornitutako GPS APIaren denbora-markadu bide-puntuak jatorrizko lorratzari egingo diote erreferentzia. + Erregistratu lorratza automatikoki nabigazioan zehar + MGRS + Zer dago berri + Elur-motorra gidatzeko, berezko bide eta lorratzekin. + MGRS + OsmAnd-ek MGRS erabiltzen du, UTM NATO formatuaren antzekoa da. + Eman zure ibilgailuaren luzera, ibilbide batzuetako mugak aplika daitezke ibilgailu luzeentzat. + Herrialde edo eskualde batzuetan, abiadura-kamerak abisatzeko aplikazioak erabiltzea legez debekatuta dago. +\n +\nAukeraketa bat egin behar duzu zure herrialdeko legediaren arabera. +\n +\nAukeratu %1$s eta abiadura-kamerei buruzko alertak eta abisuak jasoko dituzu. +\n +\nAukeratu %2$s eta abiadura-kameraen inguruko datu guztiak, alertak, jakinarazpenak, interesguneak ezabatuko dira OsmAnd erabat berriro instalatu arte. + Mapillary geruza mapan erakutsi edo ezkutatzeko botoia. + Moztu ondoren + • Eguneratutako ibilbidea planifinatzeko funtzioa: Segmentu bakoitzeko nabigazio mota desberdinak erabiltzea eta lorratzak sartzea ahalbidetzen du +\n +\n • Lorratzen itxura menu berria: Hautatu kolorea, lodiera, bistaratzeko norabideko geziak, hasierako eta amaierako ikonoak +\n +\n • Bizikleta nodoen ikusgarritasuna hobetu da. +\n +\n • Orain lorratzetan sakatu daitezke, laster-menua dute oinarrizko informazioarekin. +\n +\n • Bilaketa algoritmoak hobetu dira +\n +\n • Lorratza jarraitzeko aukerak hobetu dira nabigazioan +\n +\n • Profilaren ezarpenak inportatzeko / esportatzeko arazoak konpondu dira +\n +\n + Azken aldaketa + Izena: Z - A + Izena: A - Z + Hasiera eta amaiera ikonoak + Eskerrik asko \"Sestra lerroak\" erosteagatik + Harpidetza kobratuta hautatutako aldirako. Utzi AppGallery-n edozein unetan. + Ordainketa zure AppGallery kontuan kargatuko da erosketa baieztatzean. +\n +\nHarpidetza automatikoki berritzen da, berritze data baino lehen bertan behera utzi ezean. Berritze aldia (hilean / hiru hilean / urtean) berrituko den egunean bertan kobratuko zaizu. +\n +\nHarpidetzak kudeatu eta bertan behera utzi ditzakezu AppGallery-ren ezarpenetara joanda. + Hasi saioa OAuth-ekin osmedit funtzioak erabiltzeko + Hasi saioa OAuth bidez + Garbitu OpenStreetMap OAuth token-a + Saioa amaitu da + Fitxategia dagoeneko OsmAnd-en inportatuta dago + Erabili 2 faseko A* bideratze algoritmoa + Grafikoa + Hasi saioa aldaketak igotzeko, +\n +\nbai OAuth-ekin edo zure erabiltzaile izena eta pasahitza erabiliz. + Hasi saioa erabiltzaile izenarekin eta pasahitzarekin + Kontua + Erabiltzaile-izena + Kudeatu harpidetza + Arazo bat dago zure harpidetzarekin. Egin klik botoian Google Play harpidetzaren ezarpenetara joateko zure ordainketa-metodoa konpontzeko. + OsmAnd Live harpidetza iraungi egin da + OsmAnd Live harpidetza pausatu da + OsmAnd Live harpidetza zain dago + Sartu etiketak komaz bereizita. + Hasi saioa OAuth metodo segurua erabiliz edo erabili zure erabiltzaile izena eta pasahitza. + Erregistratu hemen: +\nOpenPlaceReviews.org + Hasi saioa OpenPlaceReviews.org datu irekien proiektuaren webgunean, argazki gehiago igotzeko. + Gehitu OpenPlaceReviews-era + OsmAnd-ek hainbat iturritako argazkiak erakusten ditu: +\nOpenPlaceReviews - Interesguneen argazkiak; +\nMapillary - Kale mailako irudiak; +\nWeb / Wikimedia - OpenStreetMap datuetan zehaztutako interesguneen argazkiak. + Norabidea + Moztu aurretik + Lorratzaren grabazioa pausatuko du aplikazioa hiltzean (azken aplikazioen bidez). (OsmAnd atzeko planoaren adierazpena Androideko jakinarazpen-barratik desagertzen da.) + Pausatu bidaiaren grabazioa + Berrekin bidaiaren grabazioa + Sisteman lehenetsia + Ondorengo segmentu guztiak + Aurreko segmentua + Aurreko segmentu guztiak + Aukeratutako segmentua soilik birkalkulatuko da hautatutako profila erabiliz. + Ondorengo segmentu guztiak birkalkulatuko dira hautatutako profila erabiliz. + Aurreko segmentu guztiak berriro kalkulatuko dira hautatutako profila erabiliz. + gorde da + Gehitu gutxienez bi puntu. + Berregin + Bidaia + Gutxienez bi puntu gehitu behar dituzu + Hasi saioa OpenStreetMap-ekin + Gehitu lorratzaren bide-puntua + Gehitu lorratzaren bide-puntua + Bidaiaren grabaketa + Gorde lorratz fitxategi gisa + Jarraitu lorratza + Hautatu jarraituko den lorratzaren fitxategia + Aukeratu jarraituko den lorratzaren fitxategia edo inportatu zure gailutik. + Aukeratu beste lorratz bat + Nabigatu nire posiziotik lorratzera + Nabigatzeko lorratzaren puntua + Lorratzaren hasiera + Puntu hurbilena + Erantsi errepideetara + Ezabatu helbidea + Gehitu helbidea + Sartu helbidea + Aldatu ibilbide mota honen aurretik: + Aldatu ibilbide mota honen ondoren: + Lorratz sinplifikatua + Ibilbidearen lerroa bakarrik gordeko da, bide-puntuak ezabatuko dira. + Fitxategi-izena + %s lorratz fitxategi aukeratuta + GRABATU + Saihestu oinezkoen bideak + Saihestu oinezkoen bideak + Garapena + OsmAnd zuzeneko datuak + OsmAnd zuzeneko datuak + Bi faseetako ibilbide kalkulua kotxe bidezko nabigazioarentzat. + Garraio publikoaren garapen natiboa + Aldatu garraio publikoaren ibilbidearen kalkulua Javara (segurua) + %1$s datuak soilik errepideetan soilik daude eskuragarri, eskuratzeko ibilbidea kalkulatu behar duzu \"Puntuen arteko ibilbidea\" erabiliz. + Itxaron ibilbidea berkalkulatu arte. +\nGrafikoa erabilgarri egongo da berkalkulatu ondoren. + Tokiko mapak + %1$s — %2$s + Berezia + Garraioa + Zerbitzua + Sinboloak + Kirola + Larrialdia + Abiadura-kameren interesguneak + Gailu honek ez du abiadura-kamerarik. + Desinstalatu abiadura-kamerak + Legezkoa + Mantendu aktibo + Desinstalatu + Abiadura-kameren alertak herrialde batzuetan legeak debekatuta daude. + tonuak + Gehitu sareko iturria + Aldaketa hauek aplikatzean lauzen iturburu honetako cache datuak garbituko dira + Ezarri ontziaren altuera + Ontziaren altuera ezar dezakezu zubi baxuak ekiditeko. Gogoan izan, zubia mugikorra bada, irekita dagoeneko altuera erabiliko dugula. + Ezarri ontziaren altuera zubi baxuak ekiditeko. Gogoan izan, zubia mugikorra bada, irekita dagoeneko altuera erabiliko dugula. + Ezarri ontziaren zabalera zubi estuak ekiditeko + Zehaztu ibilbideetan baimendutako ibilgailu-luzera. + Luzera muga + %1$s ezabatuta + Berrabiarazi aplikazioa abiadura-kameraren datu guztiak ezabatzeko. + Desinstalatu eta berrabiarazi + Lerroko patinak + Kontrolatu maparen zoom maila gailuaren bolumen botoiekin. + Eman izena puntuari + Deskargatu Wikipediako mapak + Gehitutako puntua ez da mapan ikusiko, hautatutako taldea ezkutatuta dagoelako, \"%s\" atalean aurkitu dezakezu. + Itxitako OSM oharra + Planifikatu ibilbidea + Erakutsi hasierako eta amaierako ikonoak + Aukeratu markatzaileak lorratzean bistaratzeko tartea distantzian edo denboran. + Pertsonalizatua + Solidoa + Kale mailako irudiak + Ziur al zaude aurreikusitako ibilbidean egindako aldaketa guztiak baztertu nahi dituzula eta itxi\? + Alderantzizko norabidearen kasuan + Gorde lorratz fitxategi berri gisa + Gehitu lorratz fitxategi batean + Lorratzak + Lorratzak + Lorratzak + Erregistratu lorratza GPX fitxategian + Lorratz ibilbidea + Gehitu lorratz fitxategiak + Inportatu edo grabatu lorratz fitxategiak + Itxi OSM oharra + Markatzaileen historia + Bidali GPX fitxategia OpenStreetMap-era + Egin iruzkina OSM oharrean \ No newline at end of file From da711c60fe1e59515ce3bfa718e3573743284c32 Mon Sep 17 00:00:00 2001 From: Ajeje Brazorf Date: Fri, 20 Nov 2020 11:21:10 +0000 Subject: [PATCH 51/97] Translated using Weblate (Sardinian) Currently translated at 99.7% (3556 of 3564 strings) --- OsmAnd/res/values-sc/strings.xml | 38 ++++++++++++++++---------------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/OsmAnd/res/values-sc/strings.xml b/OsmAnd/res/values-sc/strings.xml index c083252cd9..3a6de6cbea 100644 --- a/OsmAnd/res/values-sc/strings.xml +++ b/OsmAnd/res/values-sc/strings.xml @@ -786,7 +786,7 @@ Subrapositziones fluorescentes Imprea colores fluorescentes pro visualizzare rastas e àndalas. Modìficas chene lìnia - Si sa sa modìfica chene lìnia est abilitada, sas modìficas ant a èssere sarvadas in locale, in antis, e carrigadas si benit pedidu. Si nono, ant a èssere carrigadas immediatamente. + Si sa modìfica chene lìnia est abilitada, sas modìficas ant a èssere sarvadas in locale, in antis, e carrigadas si benit pedidu. Si nono, ant a èssere carrigadas immediatamente. Sa modìficas de sos PDI intre s’aplicatzione non tenent efetos in sas mapas iscarrigadas, sunt imbetzes sarvadas in su dispositivu. {0} PDI/notas carrigados/as Càrriga sa modìfica in OSM @@ -2639,7 +2639,7 @@ Còpia sa positzione/su nùmene de su PDI Logu chene nùmene Ammustra sas notas serradas - Ammustra/cua sas notas OSM in sa mapa. + Ammustra o cua sas notas OSM in sa mapa. GPX - adatu pro s\'esportatzione a JOSM o a àteros editores OSM. OSC - adatu pro s\'esportatzione in OpenStreetmap. Documentu GPX @@ -3084,9 +3084,9 @@ Ischerta sos profilos chi cheres chi siant visìbiles in s’aplicatzione. Profilos de s\'aplicatzione Annanghe a su mancu un\'elementu a sa lista in sas impostatziones pro sas atziones lestras - Iscì alpinu/de achirrada + Iscì alpinu e de achirrada Pistas pro iscì alpinu o de achirrada e atzessu a sos impiantos de artiada. - Iscì de fundu/nòrdicu + Iscì de fundu e nòrdicu Pistas pro s\'iscì nòrdicu o de fundu. Iscì-alpinismu Àndalas pro s\'iscì-alpinismu. @@ -3577,7 +3577,7 @@ Umbraduras de sos rilievos %1$s de %2$s Pistas - Ammustra / cua su terrinu + Ammustra o cua su terrinu Cua su terrinu Ammustra su terrinu Unu butone pro ammustrare o cuare s\'istratu de su terrinu in sa mapa. @@ -3695,11 +3695,11 @@ Podes atzèdere a custas atziones incarchende su butone \"%1$s\". Cua sos trasportos pùblicos Ammustra sos trasportos pùblicos - Ammustra/cua sos trasportos pùblicos + Ammustra o cua sos trasportos pùblicos Butone pro ammustrare o cuare sos trasportos pùblicos in sa mapa. - Crea / Modìfica unu PDI + Crea o modìfica unu PDI Logos de parchègiu - Annanghe / Modìfica unu preferidu + Annanghe o modìfica unu preferidu Riprìstina s\'òrdine predefinidu de sos elementos Torra a modificare Su butone de atzione faghet colare dae unu profilu ischertadu a s\'àteru. @@ -3852,7 +3852,7 @@ Sighi cun sa registratzione de su biàgiu Sarva comente documentu de rasta %s documentos de rasta ischertados - Dislinda s’intervallu pro sa registratzione generale de sas rastas (abilitadu pro mèdiu de su widget registratzione GPX in sa mapa). + Dislinda s’intervallu pro sa registratzione generale de sas rastas (allutu pro mèdiu de su widget \'Registratzione GPX\' in sa mapa). Registra Àndala de una rasta Sighi sa rasta @@ -3887,7 +3887,7 @@ 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 • Menù de Aparèntzia nou pro sas rastas: ischerta su colore, grussària, visulaizatzione de sas fritzas de diretzione, iconas de incumintzu/fine +\n • Menù de Aparèntzia nou pro sas rastas: ischerta su colore, grussària, visulaizatzione de sas fritzas de diretzione, iconas de incumintzu e fine \n \n • Visibilidade megiorada de sos nodos pro sas bitzicletas. \n @@ -3903,7 +3903,7 @@ Ùrtima modìfica Nùmene: Z – A Nùmene: A – Z - Iconas de incumintzu/fine + Iconas de incumintzu e fine Gràtzias pro àere comporadu \'Curvas de livellu\' Costu periòdicu de s\'abbonamentu. Lu podes anullare in AppGallery cando boles. Su pagamentu at a èssere addebitadu a su contu tuo de AppGallery cando sa còmpora at a èssere cunfirmada. @@ -3923,7 +3923,7 @@ Intra cun OAuth pro impreare sas funtzionalidades osmedit Intra impreende OAuth Iscantzella su getone OAuth de OpenStreetMap - Essida fata chene problemas + Essidu Su documentu est giai importadu in OsmAnd Imprea un\'algoritmu de càrculu de s\'àndala A* a duas fases Pro sa ghia de motoislitas cun caminos e rastas dedicados. @@ -3947,13 +3947,13 @@ Depes annànghere a su mancu duos puntos Intra in OpenStreetMap Intra in OpenStreetMap.org - Identìfica·ti cun OpenStreetMap - Depes intrare pro pòdere carrigare modìficas noas o mudadas. + Intra cun OpenStreetMap + Intra pro carrigare modìficas noas o mudadas, \n -\nPodes intrare impreende su mètodu seguru OAuth o cun s\'identificadore (su nùmene de impreadore) tuo e sa crae de intrada tua. - Imprea un\'identificadore e una crae de intrada +\nimpreende su mètodu seguru OAuth o cun su nùmene de impreadore tuo e sa crae de intrada tua. + Intra cun unu nùmene de impreadore e una crae de intrada Contu - Identificadore + Nùmene impreadore Amministra s\'abbonamentu B\'at unu problema cun s\'abbonamentu tuo. Incarca su butone pro andare a sas impostatziones de sos abbonamentos de Google Play pro acontzare sa manera de pagamentu tua. S\'abbonamentu de OsmAnd Live est iscadidu @@ -3962,8 +3962,8 @@ Cronologia de sos marcadores Imbia unu documentu GPX a OpenStreetMap Inserta sas etichetas iscrobadas dae vìrgulas. - Pùblica cheret nàrrere chi sa rasta at a èssere ammustrada in manera pùblica in sas rastas GPS tuas e in sas listas de rastas GPS pùblicas. Sos datos frunidos pro mèdiu de s\'API non sunt ligados a sa pàgina de sa rasta tua. Sas datas integradas in sos puntos de rasta no ant a èssere a disponimentu pro mèdiu de s\'API GPS, e sos puntos no ant a èssere ordinados in manera cronològica. Nointames custu sos àteros impreadores ant a pòdere iscarrigare sa rasta su matessi dae sa lista pùblica de sas rastas cun totu sas datas e sas oras integradas. - Privada cheret nàrrere chi sa rasta no at a èssere ammustrada in peruna lista, ma sos puntos suos ant a èssere a disponimentu su matessi pro mèdiu de s\'API GPS pùblicu chene datas e oras ma no ant a èssere ordinados in manera cronològica. + \"Pùblica\" cheret nàrrere chi sa rasta at a èssere ammustrada in manera pùblica in sas rastas GPS tuas, in sas listas de rastas GPS pùblicas e in sa lista de rastas pùblicas cun datas e oras in forma originale. Sos datos frunidos pro mèdiu de s\'API non sunt ligados a sa pàgina de sa rasta tua. Sas datas e sas oras integradas in sos puntos de rasta no ant a èssere a disponimentu pro mèdiu de s\'API GPS, e sos puntos no ant a èssere ordinados in manera cronològica. + \"Privada\" cheret nàrrere chi sa rasta no at a èssere ammustrada in peruna lista, ma sos puntos suos ant a èssere a disponimentu su matessi, in òrdine cronològicu, pro mèdiu de s\'API GPS pùblica chene datas e oras. \"Identificàbile\" cheret nàrrere chi sa rasta at a èssere ammustrada in manera pùblica in sas rastas GPS tuas e in sas listas de rastas GPS pùblicas. Est a nàrrere chi àteros impreadores ant a pòdere iscarrigare sa rasta e l\'ant a pòdere assotziare a su nùmene de impreadore tuo. Sos puntos de rastas cun datas e oras dae s\'API GPS frunidos pro mèdiu de s\'API de sos puntos de sas rastas ant a èssere ligados a sa pàgina de sa rasta originale tua. \"Arrastàbile\" cheret nàrrere chi sa rasta no at a èssere ammustrada in peruna lista pùblica, ma sos puntos suos cun sas datas (no ant a èssere assotziados diretamente cun tie) l\'ant a èssere pro mèdiu de iscarrigamentos dae s\'API GPS pùblica. Serra sa nota de OSM From f918f5474e485ad981b911ed30860b0e1139c958 Mon Sep 17 00:00:00 2001 From: Oliver Date: Fri, 20 Nov 2020 15:04:40 +0000 Subject: [PATCH 52/97] Translated using Weblate (German) Currently translated at 99.6% (3847 of 3860 strings) --- OsmAnd/res/values-de/phrases.xml | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/OsmAnd/res/values-de/phrases.xml b/OsmAnd/res/values-de/phrases.xml index e9f39131f9..950388e493 100644 --- a/OsmAnd/res/values-de/phrases.xml +++ b/OsmAnd/res/values-de/phrases.xml @@ -3853,4 +3853,34 @@ Dachparkplätze GPX-Wegpunkt Radarturm + nein + ja + nein + ja + nein + ja + Subnationales Büro + Repräsentanzbüro + Verbindungsbüro + Honorarkonsul + Generalkonsulat + Konsularbüro + Konsularagentur + Geleitet von einem Konsul + Residenz + Nuntiatur + Mission + Interessenvertretung + Hochkommissar + Delegation + Niederlassung + Geleitet von einem Botschafter + Verbindungsbüro + Botschaft + Dienstleistungen für Bürger + Einwanderungsvisa + Nicht-Einwanderungsvisa + Verbindungsbüro + Konsulat + Botschaft \ No newline at end of file From 0c58a9063c150a7fdfa3a89e9b1fd6891974189c Mon Sep 17 00:00:00 2001 From: Ajeje Brazorf Date: Fri, 20 Nov 2020 11:26:46 +0000 Subject: [PATCH 53/97] Translated using Weblate (Sardinian) Currently translated at 99.2% (3832 of 3860 strings) --- OsmAnd/res/values-sc/phrases.xml | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/OsmAnd/res/values-sc/phrases.xml b/OsmAnd/res/values-sc/phrases.xml index 5dcc8b52d1..5998039bd6 100644 --- a/OsmAnd/res/values-sc/phrases.xml +++ b/OsmAnd/res/values-sc/phrases.xml @@ -3846,4 +3846,19 @@ Cobertura Puntu GPX Torre ràdar + Nono + Eja + Nono + Eja + Nono + Eja + Ufìtziu + Consoladu generale + Residèntzia + Missione + Commissione arta + Delegatzione + Ambassada + Consoladu + Ambassada \ No newline at end of file From f4920a0ff13999bc3cb91289ff5653c459dde996 Mon Sep 17 00:00:00 2001 From: Verdulo Date: Fri, 20 Nov 2020 12:18:05 +0000 Subject: [PATCH 54/97] Translated using Weblate (Esperanto) Currently translated at 99.2% (3536 of 3564 strings) --- OsmAnd/res/values-eo/strings.xml | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/OsmAnd/res/values-eo/strings.xml b/OsmAnd/res/values-eo/strings.xml index 2246163a37..2de782c6c3 100644 --- a/OsmAnd/res/values-eo/strings.xml +++ b/OsmAnd/res/values-eo/strings.xml @@ -3980,4 +3980,14 @@ Serĉi en historio Kajako Motorboato + OsmAnd montras fotojn el diversaj fontoj: +\nOpenPlaceReviews – fotoj de interesejoj; +\nMapillary – strat‑nivela fotaro; +\ninterreto, Vikimedio – fotoj de interesejoj difinitaj en OpenStreetMap-datumoj. + Rimedoj + Proksimuma dosiergrando + Elektu datumojn por elporti al dosiero. + Necesa por enporti + En via aparato estas nur %1$s da libera spaco. Liberigu iom da spaco aŭ malelektu iujn elementojn de elporto. + Mankas spaco \ No newline at end of file From b0db8cc1c3164c4cfe985f60e3d56078ab0ac6c1 Mon Sep 17 00:00:00 2001 From: Osoitz Date: Fri, 20 Nov 2020 15:34:45 +0000 Subject: [PATCH 55/97] Translated using Weblate (Basque) Currently translated at 98.6% (3806 of 3860 strings) --- OsmAnd/res/values-eu/phrases.xml | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/OsmAnd/res/values-eu/phrases.xml b/OsmAnd/res/values-eu/phrases.xml index 0bb27ef42b..5d48a182e9 100644 --- a/OsmAnd/res/values-eu/phrases.xml +++ b/OsmAnd/res/values-eu/phrases.xml @@ -1749,7 +1749,7 @@ Oin-sendagile Zerga aholkularien bulegoa Ice stock kirola - Korfbal + Korfball Paddle tenisa Erraketa (kirol tresna) Errugbi elkartea @@ -2592,7 +2592,7 @@ Motorizatua Bonba gabekoa Minerala - Uraren ezaugarria: lokatza + Lokatza Sulfurikoa Ur-puntua Poste adierazlea @@ -3549,18 +3549,18 @@ Zailtasun-kategoria н/к н/к* - + 1A 1А* - - 1Б* - - 2А* - - 2Б* - - 3А* - - 3Б* + 1B + 1B* + 2A + 2A* + 2B + 2B* + 3A + 3A* + 3B + 3B* Ezabatutako objektua Erradioterapia Bai @@ -3789,7 +3789,7 @@ Kabina mota Bai Ez - Zutoina aurkitzeko seinalea + Internet sarbidea: Bezeroak Ibiltzea baimenduta dagoenean soilik Kontrastatua Primitiboa @@ -3803,7 +3803,7 @@ Ur maila: boladaka Edateko ura betetzeko sarea Edateko ura betetzeko: ez - Edateko ura betetzeko: bai + Bai Trabatzea Ur maila: batezbestekotik behera Ur maila: batezbestekotik gora From 1fac7d773867374ebb75c9ed23437a491f6f9e13 Mon Sep 17 00:00:00 2001 From: Vitaliy Date: Sat, 21 Nov 2020 05:28:27 +0200 Subject: [PATCH 56/97] Add ExportItemsBottomSheet --- OsmAnd/res/layout/settings_group_title.xml | 108 ++++++ OsmAnd/res/values/strings.xml | 2 + .../backend/backup/SettingsHelper.java | 117 +++---- .../settings/fragments/ExportDataObject.java | 26 -- .../fragments/ExportItemsBottomSheet.java | 321 ++++++++++++++++++ .../fragments/ExportSettingsAdapter.java | 100 +++--- .../fragments/ExportSettingsFragment.java | 30 +- .../fragments/SettingsCategoryItems.java | 30 ++ 8 files changed, 581 insertions(+), 153 deletions(-) create mode 100644 OsmAnd/res/layout/settings_group_title.xml delete mode 100644 OsmAnd/src/net/osmand/plus/settings/fragments/ExportDataObject.java create mode 100644 OsmAnd/src/net/osmand/plus/settings/fragments/ExportItemsBottomSheet.java create mode 100644 OsmAnd/src/net/osmand/plus/settings/fragments/SettingsCategoryItems.java diff --git a/OsmAnd/res/layout/settings_group_title.xml b/OsmAnd/res/layout/settings_group_title.xml new file mode 100644 index 0000000000..269d018021 --- /dev/null +++ b/OsmAnd/res/layout/settings_group_title.xml @@ -0,0 +1,108 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/OsmAnd/res/values/strings.xml b/OsmAnd/res/values/strings.xml index 8fa1c6ab03..b14a87fdbd 100644 --- a/OsmAnd/res/values/strings.xml +++ b/OsmAnd/res/values/strings.xml @@ -11,6 +11,8 @@ Thx - Hardy --> + Select items that will be imported. + Select groups that will be imported. There is not enough space Your device only has %1$s free. Please free up some space or unselect some items to export. Needed for import diff --git a/OsmAnd/src/net/osmand/plus/settings/backend/backup/SettingsHelper.java b/OsmAnd/src/net/osmand/plus/settings/backend/backup/SettingsHelper.java index 424bf42ad3..969c59d8c1 100644 --- a/OsmAnd/src/net/osmand/plus/settings/backend/backup/SettingsHelper.java +++ b/OsmAnd/src/net/osmand/plus/settings/backend/backup/SettingsHelper.java @@ -43,7 +43,7 @@ import net.osmand.plus.settings.backend.ApplicationMode; import net.osmand.plus.settings.backend.ApplicationMode.ApplicationModeBean; import net.osmand.plus.settings.backend.ExportSettingsCategory; import net.osmand.plus.settings.backend.ExportSettingsType; -import net.osmand.plus.settings.fragments.ExportDataObject; +import net.osmand.plus.settings.fragments.SettingsCategoryItems; import net.osmand.util.Algorithms; import org.apache.commons.logging.Log; @@ -472,13 +472,11 @@ public class SettingsHelper { } public List getFilteredSettingsItems(List settingsTypes, boolean globalExport) { - Map> dataList = getAdditionalData(globalExport); Map> typesMap = new HashMap<>(); - for (List objects : dataList.values()) { - for (ExportDataObject exportObject : objects) { - typesMap.put(exportObject.getType(), exportObject.getItems()); - } - } + typesMap.putAll(getSettingsItems(globalExport)); + typesMap.putAll(getMyPlacesItems()); + typesMap.putAll(getResourcesItems()); + return getFilteredSettingsItems(typesMap, settingsTypes); } @@ -499,67 +497,64 @@ public class SettingsHelper { return settingsItems; } - public Map> getAdditionalData(boolean globalExport) { - Map> dataList = new LinkedHashMap<>(); + public Map getAdditionalData(boolean globalExport) { + Map dataList = new LinkedHashMap<>(); - List settingsItems = getSettingsItems(globalExport); - List myPlacesItems = getMyPlacesItems(); - List resourcesItems = getResourcesItems(); + Map> settingsItems = getSettingsItems(globalExport); + Map> myPlacesItems = getMyPlacesItems(); + Map> resourcesItems = getResourcesItems(); if (!settingsItems.isEmpty()) { - sortExportSettingsObjects(settingsItems); - dataList.put(ExportSettingsCategory.SETTINGS, settingsItems); + dataList.put(ExportSettingsCategory.SETTINGS, new SettingsCategoryItems(settingsItems)); } if (!myPlacesItems.isEmpty()) { - sortExportSettingsObjects(myPlacesItems); - dataList.put(ExportSettingsCategory.MY_PLACES, myPlacesItems); + dataList.put(ExportSettingsCategory.MY_PLACES, new SettingsCategoryItems(myPlacesItems)); } if (!resourcesItems.isEmpty()) { - sortExportSettingsObjects(resourcesItems); - dataList.put(ExportSettingsCategory.RESOURCES, resourcesItems); + dataList.put(ExportSettingsCategory.RESOURCES, new SettingsCategoryItems(resourcesItems)); } return dataList; } - private List getSettingsItems(boolean globalExport) { - List settingsItems = new ArrayList<>(); + private Map> getSettingsItems(boolean globalExport) { + Map> settingsItems = new LinkedHashMap<>(); if (globalExport) { List appModeBeans = new ArrayList<>(); for (ApplicationMode mode : ApplicationMode.allPossibleValues()) { appModeBeans.add(mode.toModeBean()); } - settingsItems.add(new ExportDataObject(ExportSettingsType.PROFILE, appModeBeans)); + settingsItems.put(ExportSettingsType.PROFILE, appModeBeans); } - settingsItems.add(new ExportDataObject(ExportSettingsType.GLOBAL, Collections.singletonList(new GlobalSettingsItem(app.getSettings())))); + settingsItems.put(ExportSettingsType.GLOBAL, Collections.singletonList(new GlobalSettingsItem(app.getSettings()))); QuickActionRegistry registry = app.getQuickActionRegistry(); List actionsList = registry.getQuickActions(); if (!actionsList.isEmpty()) { - settingsItems.add(new ExportDataObject(ExportSettingsType.QUICK_ACTIONS, actionsList)); + settingsItems.put(ExportSettingsType.QUICK_ACTIONS, actionsList); } List poiList = app.getPoiFilters().getUserDefinedPoiFilters(false); if (!poiList.isEmpty()) { - settingsItems.add(new ExportDataObject(ExportSettingsType.POI_TYPES, poiList)); + settingsItems.put(ExportSettingsType.POI_TYPES, poiList); } List historyEntries = SearchHistoryHelper.getInstance(app).getHistoryEntries(false); if (!historyEntries.isEmpty()) { - settingsItems.add(new ExportDataObject(ExportSettingsType.SEARCH_HISTORY, historyEntries)); + settingsItems.put(ExportSettingsType.SEARCH_HISTORY, historyEntries); } Map impassableRoads = app.getAvoidSpecificRoads().getImpassableRoads(); if (!impassableRoads.isEmpty()) { - settingsItems.add(new ExportDataObject(ExportSettingsType.AVOID_ROADS, new ArrayList<>(impassableRoads.values()))); + settingsItems.put(ExportSettingsType.AVOID_ROADS, new ArrayList<>(impassableRoads.values())); } return settingsItems; } - private List getMyPlacesItems() { - List myPlacesItems = new ArrayList<>(); + private Map> getMyPlacesItems() { + Map> myPlacesItems = new LinkedHashMap<>(); List favoriteGroups = app.getFavorites().getFavoriteGroups(); if (!favoriteGroups.isEmpty()) { - myPlacesItems.add(new ExportDataObject(ExportSettingsType.FAVORITES, favoriteGroups)); + myPlacesItems.put(ExportSettingsType.FAVORITES, favoriteGroups); } File gpxDir = app.getAppPath(IndexConstants.GPX_INDEX_DIR); List gpxInfoList = GpxUiHelper.getSortedGPXFilesInfo(gpxDir, null, true); @@ -572,18 +567,18 @@ public class SettingsHelper { } } if (!files.isEmpty()) { - myPlacesItems.add(new ExportDataObject(ExportSettingsType.TRACKS, files)); + myPlacesItems.put(ExportSettingsType.TRACKS, files); } } OsmEditingPlugin osmEditingPlugin = OsmandPlugin.getPlugin(OsmEditingPlugin.class); if (osmEditingPlugin != null) { List notesPointList = osmEditingPlugin.getDBBug().getOsmbugsPoints(); if (!notesPointList.isEmpty()) { - myPlacesItems.add(new ExportDataObject(ExportSettingsType.OSM_NOTES, notesPointList)); + myPlacesItems.put(ExportSettingsType.OSM_NOTES, notesPointList); } List editsPointList = osmEditingPlugin.getDBPOI().getOpenstreetmapPoints(); if (!editsPointList.isEmpty()) { - myPlacesItems.add(new ExportDataObject(ExportSettingsType.OSM_EDITS, editsPointList)); + myPlacesItems.put(ExportSettingsType.OSM_EDITS, editsPointList); } } AudioVideoNotesPlugin plugin = OsmandPlugin.getPlugin(AudioVideoNotesPlugin.class); @@ -596,7 +591,7 @@ public class SettingsHelper { } } if (!files.isEmpty()) { - myPlacesItems.add(new ExportDataObject(ExportSettingsType.MULTIMEDIA_NOTES, files)); + myPlacesItems.put(ExportSettingsType.MULTIMEDIA_NOTES, files); } } List mapMarkers = app.getMapMarkersHelper().getMapMarkersFromDefaultGroups(false); @@ -605,7 +600,7 @@ public class SettingsHelper { String groupId = ExportSettingsType.ACTIVE_MARKERS.name(); MapMarkersGroup markersGroup = new MapMarkersGroup(groupId, name, MapMarkersGroup.ANY_TYPE); markersGroup.setMarkers(mapMarkers); - myPlacesItems.add(new ExportDataObject(ExportSettingsType.ACTIVE_MARKERS, Collections.singletonList(markersGroup))); + myPlacesItems.put(ExportSettingsType.ACTIVE_MARKERS, Collections.singletonList(markersGroup)); } List markersHistory = app.getMapMarkersHelper().getMapMarkersFromDefaultGroups(true); if (!markersHistory.isEmpty()) { @@ -613,23 +608,23 @@ public class SettingsHelper { String groupId = ExportSettingsType.HISTORY_MARKERS.name(); MapMarkersGroup markersGroup = new MapMarkersGroup(groupId, name, MapMarkersGroup.ANY_TYPE); markersGroup.setMarkers(markersHistory); - myPlacesItems.add(new ExportDataObject(ExportSettingsType.HISTORY_MARKERS, Collections.singletonList(markersGroup))); + myPlacesItems.put(ExportSettingsType.HISTORY_MARKERS, Collections.singletonList(markersGroup)); } return myPlacesItems; } - private List getResourcesItems() { - List resourcesItems = new ArrayList<>(); + private Map> getResourcesItems() { + Map> resourcesItems = new LinkedHashMap<>(); Map externalRenderers = app.getRendererRegistry().getExternalRenderers(); if (!externalRenderers.isEmpty()) { - resourcesItems.add(new ExportDataObject(ExportSettingsType.CUSTOM_RENDER_STYLE, new ArrayList<>(externalRenderers.values()))); + resourcesItems.put(ExportSettingsType.CUSTOM_RENDER_STYLE, new ArrayList<>(externalRenderers.values())); } File routingProfilesFolder = app.getAppPath(IndexConstants.ROUTING_PROFILES_DIR); if (routingProfilesFolder.exists() && routingProfilesFolder.isDirectory()) { File[] fl = routingProfilesFolder.listFiles(); if (fl != null && fl.length > 0) { - resourcesItems.add(new ExportDataObject(ExportSettingsType.CUSTOM_ROUTING, Arrays.asList(fl))); + resourcesItems.put(ExportSettingsType.CUSTOM_ROUTING, Arrays.asList(fl)); } } List iTileSources = new ArrayList<>(); @@ -649,22 +644,22 @@ public class SettingsHelper { } } if (!iTileSources.isEmpty()) { - resourcesItems.add(new ExportDataObject(ExportSettingsType.MAP_SOURCES, iTileSources)); + resourcesItems.put(ExportSettingsType.MAP_SOURCES, iTileSources); } List localIndexInfoList = getLocalIndexData(); List files = getFilesByType(localIndexInfoList, LocalIndexType.MAP_DATA, LocalIndexType.TILES_DATA, LocalIndexType.SRTM_DATA, LocalIndexType.WIKI_DATA); if (!files.isEmpty()) { sortLocalFiles(files); - resourcesItems.add(new ExportDataObject(ExportSettingsType.OFFLINE_MAPS, files)); + resourcesItems.put(ExportSettingsType.OFFLINE_MAPS, files); } files = getFilesByType(localIndexInfoList, LocalIndexType.TTS_VOICE_DATA); if (!files.isEmpty()) { - resourcesItems.add(new ExportDataObject(ExportSettingsType.TTS_VOICE, files)); + resourcesItems.put(ExportSettingsType.TTS_VOICE, files); } files = getFilesByType(localIndexInfoList, LocalIndexType.VOICE_DATA); if (!files.isEmpty()) { - resourcesItems.add(new ExportDataObject(ExportSettingsType.VOICE, files)); + resourcesItems.put(ExportSettingsType.VOICE, files); } return resourcesItems; @@ -793,35 +788,32 @@ public class SettingsHelper { return settingsItems; } - public static Map> getSettingsToOperateByCategory(List items, boolean importComplete) { - Map> exportMap = new LinkedHashMap<>(); + public static Map getSettingsToOperateByCategory(List items, boolean importComplete) { + Map exportMap = new LinkedHashMap<>(); Map> settingsToOperate = getSettingsToOperate(items, importComplete); - List settingsItems = new ArrayList<>(); - List myPlacesItems = new ArrayList<>(); - List resourcesItems = new ArrayList<>(); + Map> settingsItems = new LinkedHashMap<>(); + Map> myPlacesItems = new LinkedHashMap<>(); + Map> resourcesItems = new LinkedHashMap<>(); for (Map.Entry> entry : settingsToOperate.entrySet()) { ExportSettingsType type = entry.getKey(); if (type.isSettingsCategory()) { - settingsItems.add(new ExportDataObject(type, entry.getValue())); + settingsItems.put(type, entry.getValue()); } else if (type.isMyPlacesCategory()) { - myPlacesItems.add(new ExportDataObject(type, entry.getValue())); + myPlacesItems.put(type, entry.getValue()); } else if (type.isResourcesCategory()) { - resourcesItems.add(new ExportDataObject(type, entry.getValue())); + resourcesItems.put(type, entry.getValue()); } } if (!settingsItems.isEmpty()) { - sortExportSettingsObjects(settingsItems); - exportMap.put(ExportSettingsCategory.SETTINGS, settingsItems); + exportMap.put(ExportSettingsCategory.SETTINGS, new SettingsCategoryItems(settingsItems)); } if (!myPlacesItems.isEmpty()) { - sortExportSettingsObjects(myPlacesItems); - exportMap.put(ExportSettingsCategory.MY_PLACES, myPlacesItems); + exportMap.put(ExportSettingsCategory.MY_PLACES, new SettingsCategoryItems(myPlacesItems)); } if (!resourcesItems.isEmpty()) { - sortExportSettingsObjects(resourcesItems); - exportMap.put(ExportSettingsCategory.RESOURCES, resourcesItems); + exportMap.put(ExportSettingsCategory.RESOURCES, new SettingsCategoryItems(resourcesItems)); } return exportMap; @@ -1017,15 +1009,4 @@ public class SettingsHelper { } }); } - - private static void sortExportSettingsObjects(List items) { - Collections.sort(items, new Comparator() { - @Override - public int compare(ExportDataObject lhs, ExportDataObject rhs) { - int order1 = lhs.getType().ordinal(); - int order2 = rhs.getType().ordinal(); - return (order1 < order2) ? -1 : ((order1 == order2) ? 0 : 1); - } - }); - } } \ No newline at end of file diff --git a/OsmAnd/src/net/osmand/plus/settings/fragments/ExportDataObject.java b/OsmAnd/src/net/osmand/plus/settings/fragments/ExportDataObject.java deleted file mode 100644 index e8ede12a77..0000000000 --- a/OsmAnd/src/net/osmand/plus/settings/fragments/ExportDataObject.java +++ /dev/null @@ -1,26 +0,0 @@ -package net.osmand.plus.settings.fragments; - -import androidx.annotation.NonNull; - -import net.osmand.plus.settings.backend.ExportSettingsType; - -import java.util.List; - -public class ExportDataObject { - - private ExportSettingsType type; - private List items; - - public ExportDataObject(@NonNull ExportSettingsType type, @NonNull List items) { - this.type = type; - this.items = items; - } - - public ExportSettingsType getType() { - return type; - } - - public List getItems() { - return items; - } -} \ No newline at end of file diff --git a/OsmAnd/src/net/osmand/plus/settings/fragments/ExportItemsBottomSheet.java b/OsmAnd/src/net/osmand/plus/settings/fragments/ExportItemsBottomSheet.java new file mode 100644 index 0000000000..8c62e04ccf --- /dev/null +++ b/OsmAnd/src/net/osmand/plus/settings/fragments/ExportItemsBottomSheet.java @@ -0,0 +1,321 @@ +package net.osmand.plus.settings.fragments; + +import android.content.res.ColorStateList; +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.core.content.ContextCompat; +import androidx.core.widget.CompoundButtonCompat; +import androidx.fragment.app.Fragment; +import androidx.fragment.app.FragmentManager; + +import net.osmand.AndroidUtils; +import net.osmand.IndexConstants; +import net.osmand.PlatformUtil; +import net.osmand.map.ITileSource; +import net.osmand.map.TileSourceManager.TileSourceTemplate; +import net.osmand.plus.FavouritesDbHelper.FavoriteGroup; +import net.osmand.plus.OsmandApplication; +import net.osmand.plus.R; +import net.osmand.plus.SQLiteTileSource; +import net.osmand.plus.UiUtilities; +import net.osmand.plus.audionotes.AudioVideoNotesPlugin; +import net.osmand.plus.base.MenuBottomSheetDialogFragment; +import net.osmand.plus.base.bottomsheetmenu.BaseBottomSheetItem; +import net.osmand.plus.base.bottomsheetmenu.BottomSheetItemWithCompoundButton; +import net.osmand.plus.base.bottomsheetmenu.BottomSheetItemWithCompoundButton.Builder; +import net.osmand.plus.base.bottomsheetmenu.SimpleBottomSheetItem; +import net.osmand.plus.base.bottomsheetmenu.simpleitems.SimpleDividerItem; +import net.osmand.plus.helpers.AvoidSpecificRoads.AvoidRoadInfo; +import net.osmand.plus.helpers.FileNameTranslationHelper; +import net.osmand.plus.helpers.GpxUiHelper; +import net.osmand.plus.helpers.SearchHistoryHelper.HistoryEntry; +import net.osmand.plus.mapmarkers.MapMarkersGroup; +import net.osmand.plus.osmedit.OpenstreetmapPoint; +import net.osmand.plus.osmedit.OsmEditingPlugin; +import net.osmand.plus.osmedit.OsmNotesPoint; +import net.osmand.plus.poi.PoiUIFilter; +import net.osmand.plus.profiles.ProfileIconColors; +import net.osmand.plus.profiles.RoutingProfileDataObject.RoutingProfilesResources; +import net.osmand.plus.quickaction.QuickAction; +import net.osmand.plus.render.RenderingIcons; +import net.osmand.plus.settings.backend.ApplicationMode; +import net.osmand.plus.settings.backend.ApplicationMode.ApplicationModeBean; +import net.osmand.plus.settings.backend.ExportSettingsType; +import net.osmand.plus.settings.backend.backup.FileSettingsItem; +import net.osmand.plus.settings.backend.backup.GlobalSettingsItem; +import net.osmand.plus.settings.fragments.ExportSettingsAdapter.OnItemSelectedListener; +import net.osmand.util.Algorithms; +import net.osmand.view.ThreeStateCheckbox; + +import org.apache.commons.logging.Log; + +import java.io.File; +import java.util.ArrayList; +import java.util.List; + +import static net.osmand.view.ThreeStateCheckbox.State.CHECKED; +import static net.osmand.view.ThreeStateCheckbox.State.MISC; +import static net.osmand.view.ThreeStateCheckbox.State.UNCHECKED; + +public class ExportItemsBottomSheet extends MenuBottomSheetDialogFragment { + + public static final String TAG = ExportItemsBottomSheet.class.getSimpleName(); + private static final Log LOG = PlatformUtil.getLog(ExportItemsBottomSheet.class); + + private OsmandApplication app; + private UiUtilities uiUtilities; + + private ExportSettingsType type; + private List allItems; + private List selectedItems = new ArrayList<>(); + + private TextView selectedSize; + private ThreeStateCheckbox checkBox; + + private int activeColorRes; + private int secondaryColorRes; + + @Override + public void createMenuItems(Bundle savedInstanceState) { + app = requiredMyApplication(); + uiUtilities = app.getUIUtilities(); + activeColorRes = nightMode ? R.color.icon_color_active_dark : R.color.icon_color_active_light; + secondaryColorRes = nightMode ? R.color.icon_color_secondary_dark : R.color.icon_color_secondary_light; + + items.add(createTitleItem()); + items.add(new SimpleDividerItem(app)); + + for (Object object : allItems) { + final BottomSheetItemWithCompoundButton[] item = new BottomSheetItemWithCompoundButton[1]; + Builder builder = (BottomSheetItemWithCompoundButton.Builder) new Builder() + .setChecked(selectedItems.contains(object)) + .setButtonTintList(AndroidUtils.createCheckedColorStateList(app, secondaryColorRes, activeColorRes)) + .setLayoutId(R.layout.bottom_sheet_item_with_descr_and_checkbox_56dp) + .setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + boolean checked = !item[0].isChecked(); + item[0].setChecked(checked); + if (checked) { + selectedItems.add(item[0].getTag()); + } else { + selectedItems.remove(item[0].getTag()); + } + updateTitleView(); + } + }) + .setTag(object); + setupBottomSheetItem(builder, object); + item[0] = (BottomSheetItemWithCompoundButton) builder.create(); + items.add(item[0]); + } + } + + private BaseBottomSheetItem createTitleItem() { + LayoutInflater themedInflater = UiUtilities.getInflater(requireContext(), nightMode); + View view = themedInflater.inflate(R.layout.settings_group_title, null); + + checkBox = view.findViewById(R.id.check_box); + selectedSize = view.findViewById(R.id.selected_size); + TextView textView = view.findViewById(R.id.title); + textView.setText(type.getTitleId()); + view.findViewById(R.id.select_all_button).setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + checkBox.performClick(); + boolean checked = checkBox.getState() == CHECKED; + if (checked) { + selectedItems.addAll(allItems); + } else { + selectedItems.clear(); + } + updateTitleView(); + updateItems(checked); + } + }); + setupDescription(view); + updateTitleView(); + + return new SimpleBottomSheetItem.Builder().setCustomView(view).create(); + } + + private void updateTitleView() { + if (Algorithms.isEmpty(selectedItems)) { + checkBox.setState(UNCHECKED); + } else { + checkBox.setState(selectedItems.containsAll(allItems) ? CHECKED : MISC); + } + int checkBoxColor = checkBox.getState() == UNCHECKED ? secondaryColorRes : activeColorRes; + CompoundButtonCompat.setButtonTintList(checkBox, ColorStateList.valueOf(ContextCompat.getColor(app, checkBoxColor))); + + selectedSize.setText(getString(R.string.ltr_or_rtl_combine_via_slash, selectedItems.size(), allItems.size())); + } + + private void updateItems(boolean checked) { + for (BaseBottomSheetItem item : items) { + if (item instanceof BottomSheetItemWithCompoundButton) { + ((BottomSheetItemWithCompoundButton) item).setChecked(checked); + } + } + } + + @Override + protected int getDismissButtonTextId() { + return R.string.shared_string_cancel; + } + + @Override + protected int getRightBottomButtonTextId() { + return R.string.shared_string_apply; + } + + @Override + protected void onRightBottomButtonClick() { + Fragment target = getTargetFragment(); + if (target instanceof OnItemSelectedListener) { + OnItemSelectedListener listener = (OnItemSelectedListener) target; + listener.onItemsSelected(type, selectedItems); + } + dismiss(); + } + + public static void showInstance(@NonNull ExportSettingsType type, List selectedItems, List allItems, @NonNull FragmentManager fm, @Nullable Fragment target) { + try { + if (!fm.isStateSaved() && fm.findFragmentByTag(TAG) == null) { + ExportItemsBottomSheet fragment = new ExportItemsBottomSheet(); + fragment.type = type; + fragment.allItems = (List) allItems; + if (selectedItems != null) { + fragment.selectedItems.addAll(selectedItems); + } + fragment.setTargetFragment(target, 0); + fragment.show(fm, TAG); + } + } catch (RuntimeException e) { + LOG.error("showInstance", e); + } + } + + private String setupDescription(View view) { + TextView description = view.findViewById(R.id.description); + if (type == ExportSettingsType.FAVORITES) { + description.setText(R.string.select_groups_for_import); + } else { + description.setText(R.string.select_items_for_import); + } + return null; + } + + private void setupBottomSheetItem(BottomSheetItemWithCompoundButton.Builder builder, Object object) { + if (object instanceof ApplicationModeBean) { + ApplicationModeBean modeBean = (ApplicationModeBean) object; + String profileName = modeBean.userProfileName; + if (Algorithms.isEmpty(profileName)) { + ApplicationMode appMode = ApplicationMode.valueOfStringKey(modeBean.stringKey, null); + profileName = getString(appMode.getNameKeyResource()); + } + builder.setTitle(profileName); + + String routingProfile = ""; + String routingProfileValue = modeBean.routingProfile; + if (!routingProfileValue.isEmpty()) { + try { + routingProfile = getString(RoutingProfilesResources.valueOf(routingProfileValue.toUpperCase()).getStringRes()); + routingProfile = Algorithms.capitalizeFirstLetterAndLowercase(routingProfile); + } catch (IllegalArgumentException e) { + routingProfile = Algorithms.capitalizeFirstLetterAndLowercase(routingProfileValue); + LOG.error("Error trying to get routing resource for " + routingProfileValue + "\n" + e); + } + } + if (!Algorithms.isEmpty(routingProfile)) { + builder.setDescription(getString(R.string.ltr_or_rtl_combine_via_colon, getString(R.string.nav_type_hint), routingProfile)); + } else { + builder.setDescription(getString(R.string.profile_type_base_string)); + } + int profileIconRes = AndroidUtils.getDrawableId(app, modeBean.iconName); + ProfileIconColors iconColor = modeBean.iconColor; + builder.setIcon(uiUtilities.getIcon(profileIconRes, iconColor.getColor(nightMode))); + } else if (object instanceof QuickAction) { + QuickAction quickAction = (QuickAction) object; + builder.setTitle(quickAction.getName(app)); + builder.setIcon(uiUtilities.getIcon(quickAction.getIconRes(), activeColorRes)); + } else if (object instanceof PoiUIFilter) { + PoiUIFilter poiUIFilter = (PoiUIFilter) object; + builder.setTitle(poiUIFilter.getName()); + int iconRes = RenderingIcons.getBigIconResourceId(poiUIFilter.getIconId()); + builder.setIcon(uiUtilities.getIcon(iconRes != 0 ? iconRes : R.drawable.ic_action_user, activeColorRes)); + } else if (object instanceof TileSourceTemplate || object instanceof SQLiteTileSource) { + ITileSource tileSource = (ITileSource) object; + builder.setTitle(tileSource.getName()); + builder.setIcon(uiUtilities.getIcon(R.drawable.ic_map, activeColorRes)); + } else if (object instanceof File) { + setupBottomSheetItemForFile(builder, (File) object); + } else if (object instanceof FileSettingsItem) { + FileSettingsItem fileSettingsItem = (FileSettingsItem) object; + setupBottomSheetItemForFile(builder, fileSettingsItem.getFile()); + } else if (object instanceof AvoidRoadInfo) { + AvoidRoadInfo avoidRoadInfo = (AvoidRoadInfo) object; + builder.setTitle(avoidRoadInfo.name); + builder.setIcon(uiUtilities.getIcon(R.drawable.ic_action_alert, activeColorRes)); + } else if (object instanceof OsmNotesPoint) { + OsmNotesPoint osmNotesPoint = (OsmNotesPoint) object; + builder.setTitle(osmNotesPoint.getText()); + builder.setIcon(uiUtilities.getIcon(R.drawable.ic_action_osm_note_add, activeColorRes)); + } else if (object instanceof OpenstreetmapPoint) { + OpenstreetmapPoint openstreetmapPoint = (OpenstreetmapPoint) object; + builder.setTitle(OsmEditingPlugin.getTitle(openstreetmapPoint, app)); + builder.setIcon(uiUtilities.getIcon(R.drawable.ic_action_info_dark, activeColorRes)); + } else if (object instanceof FavoriteGroup) { + FavoriteGroup group = (FavoriteGroup) object; + builder.setTitle(group.getDisplayName(app)); + int color = group.getColor() == 0 ? ContextCompat.getColor(app, R.color.color_favorite) : group.getColor(); + builder.setIcon(uiUtilities.getPaintedIcon(R.drawable.ic_action_folder, color)); + } else if (object instanceof GlobalSettingsItem) { + GlobalSettingsItem globalSettingsItem = (GlobalSettingsItem) object; + builder.setTitle(globalSettingsItem.getPublicName(app)); + builder.setIcon(uiUtilities.getIcon(R.drawable.ic_action_settings, activeColorRes)); + } else if (object instanceof MapMarkersGroup) { + MapMarkersGroup markersGroup = (MapMarkersGroup) object; + if (ExportSettingsType.ACTIVE_MARKERS.name().equals(markersGroup.getId())) { + builder.setTitle(getString(R.string.map_markers)); + builder.setIcon(uiUtilities.getIcon(R.drawable.ic_action_flag, activeColorRes)); + } else if (ExportSettingsType.HISTORY_MARKERS.name().equals(markersGroup.getId())) { + builder.setTitle(getString(R.string.map_markers)); + builder.setIcon(uiUtilities.getIcon(R.drawable.ic_action_history, activeColorRes)); + } + } else if (object instanceof HistoryEntry) { + HistoryEntry historyEntry = (HistoryEntry) object; + builder.setTitle(historyEntry.getName().getName()); + builder.setIcon(uiUtilities.getIcon(R.drawable.ic_action_history, activeColorRes)); + } + } + + private void setupBottomSheetItemForFile(Builder builder, File file) { + FileSettingsItem.FileSubtype fileSubtype = FileSettingsItem.FileSubtype.getSubtypeByPath(app, file.getPath()); + builder.setTitle(file.getName()); + if (file.getAbsolutePath().contains(IndexConstants.RENDERERS_DIR)) { + builder.setIcon(uiUtilities.getIcon(R.drawable.ic_action_map_style, activeColorRes)); + } else if (file.getAbsolutePath().contains(IndexConstants.ROUTING_PROFILES_DIR)) { + builder.setIcon(uiUtilities.getIcon(R.drawable.ic_action_route_distance, activeColorRes)); + } else if (file.getAbsolutePath().contains(IndexConstants.GPX_INDEX_DIR)) { + builder.setTitle(GpxUiHelper.getGpxTitle(file.getName())); + builder.setIcon(uiUtilities.getIcon(R.drawable.ic_action_route_distance, activeColorRes)); + } else if (file.getAbsolutePath().contains(IndexConstants.AV_INDEX_DIR)) { + int iconId = AudioVideoNotesPlugin.getIconIdForRecordingFile(file); + if (iconId == -1) { + iconId = R.drawable.ic_action_photo_dark; + } + builder.setIcon(uiUtilities.getIcon(iconId, activeColorRes)); + } else if (fileSubtype.isMap() + || fileSubtype == FileSettingsItem.FileSubtype.TTS_VOICE + || fileSubtype == FileSettingsItem.FileSubtype.VOICE) { + builder.setTitle(FileNameTranslationHelper.getFileNameWithRegion(app, file.getName())); + builder.setIcon(uiUtilities.getIcon(fileSubtype.getIconId(), activeColorRes)); + } + } +} \ No newline at end of file diff --git a/OsmAnd/src/net/osmand/plus/settings/fragments/ExportSettingsAdapter.java b/OsmAnd/src/net/osmand/plus/settings/fragments/ExportSettingsAdapter.java index 65cd471216..452573091e 100644 --- a/OsmAnd/src/net/osmand/plus/settings/fragments/ExportSettingsAdapter.java +++ b/OsmAnd/src/net/osmand/plus/settings/fragments/ExportSettingsAdapter.java @@ -21,6 +21,7 @@ import net.osmand.plus.helpers.FontCache; import net.osmand.plus.settings.backend.ExportSettingsCategory; import net.osmand.plus.settings.backend.ExportSettingsType; import net.osmand.plus.settings.backend.backup.FileSettingsItem; +import net.osmand.util.Algorithms; import net.osmand.view.ThreeStateCheckbox; import org.apache.commons.logging.Log; @@ -28,8 +29,6 @@ import org.apache.commons.logging.Log; import java.io.File; import java.util.ArrayList; import java.util.Collections; -import java.util.HashMap; -import java.util.LinkedHashMap; import java.util.List; import java.util.Map; @@ -44,9 +43,9 @@ public class ExportSettingsAdapter extends OsmandBaseExpandableListAdapter { private final OsmandApplication app; private final UiUtilities uiUtilities; - private List itemsTypes = new ArrayList<>(); - private Map> selectedItemsMap = new HashMap<>(); - private Map> itemsMap = new LinkedHashMap<>(); + private List itemsTypes; + private Map> selectedItemsMap; + private Map itemsMap; private final OnItemSelectedListener listener; @@ -73,7 +72,7 @@ public class ExportSettingsAdapter extends OsmandBaseExpandableListAdapter { group = themedInflater.inflate(R.layout.profile_data_list_item_group, parent, false); } final ExportSettingsCategory category = itemsTypes.get(groupPosition); - final List items = itemsMap.get(category); + final SettingsCategoryItems items = itemsMap.get(category); String title = app.getString(category.getTitleId()); TextView titleTv = group.findViewById(R.id.title_tv); @@ -83,9 +82,8 @@ public class ExportSettingsAdapter extends OsmandBaseExpandableListAdapter { subTextTv.setText(getCategoryDescr(category)); int selectedTypes = 0; - for (int i = 0; i < items.size(); i++) { - ExportDataObject object = items.get(i); - if (selectedItemsMap.containsKey(object.getType())) { + for (ExportSettingsType type : items.getTypes()) { + if (!Algorithms.isEmpty(selectedItemsMap.get(type))) { selectedTypes++; } } @@ -93,7 +91,7 @@ public class ExportSettingsAdapter extends OsmandBaseExpandableListAdapter { if (selectedTypes == 0) { checkBox.setState(UNCHECKED); } else { - checkBox.setState(selectedTypes == items.size() ? CHECKED : MISC); + checkBox.setState(selectedTypes == items.getTypes().size() ? CHECKED : MISC); } int checkBoxColor = checkBox.getState() == UNCHECKED ? secondaryColorRes : activeColorRes; CompoundButtonCompat.setButtonTintList(checkBox, ColorStateList.valueOf(ContextCompat.getColor(app, checkBoxColor))); @@ -103,17 +101,6 @@ public class ExportSettingsAdapter extends OsmandBaseExpandableListAdapter { public void onClick(View view) { checkBox.performClick(); boolean selected = checkBox.getState() == CHECKED; - if (selected) { - for (ExportDataObject object : items) { - if (!selectedItemsMap.containsKey(object.getType())) { - selectedItemsMap.put(object.getType(), object.getItems()); - } - } - } else { - for (ExportDataObject object : items) { - selectedItemsMap.remove(object.getType()); - } - } if (listener != null) { listener.onCategorySelected(category, selected); } @@ -136,26 +123,29 @@ public class ExportSettingsAdapter extends OsmandBaseExpandableListAdapter { if (child == null) { child = themedInflater.inflate(R.layout.profile_data_list_item_group, parent, false); } - final ExportDataObject currentItem = itemsMap.get(itemsTypes.get(groupPosition)).get(childPosition); - List selectedItems = selectedItemsMap.get(currentItem.getType()); + final ExportSettingsCategory category = itemsTypes.get(groupPosition); + final SettingsCategoryItems categoryItems = itemsMap.get(category); + final ExportSettingsType type = categoryItems.getTypes().get(childPosition); + final List items = categoryItems.getItemsForType(type); + List selectedItems = selectedItemsMap.get(type); TextView titleTv = child.findViewById(R.id.title_tv); - titleTv.setText(currentItem.getType().getTitleId()); + titleTv.setText(type.getTitleId()); TextView subTextTv = child.findViewById(R.id.sub_text_tv); - subTextTv.setText(getSelectedTypeDescr(currentItem)); + subTextTv.setText(getSelectedTypeDescr(type, items)); ImageView icon = child.findViewById(R.id.explist_indicator); - setupIcon(icon, currentItem.getType().getIconRes(), selectedItems != null); + setupIcon(icon, type.getIconRes(), !Algorithms.isEmpty(selectedItems)); final ThreeStateCheckbox checkBox = child.findViewById(R.id.check_box); if (selectedItems == null) { checkBox.setState(UNCHECKED); - } else if (selectedItems.containsAll(currentItem.getItems())) { + } else if (selectedItems.containsAll(items)) { checkBox.setState(CHECKED); } else { boolean contains = false; - for (Object object : currentItem.getItems()) { + for (Object object : items) { if (selectedItems.contains(object)) { contains = true; break; @@ -163,7 +153,14 @@ public class ExportSettingsAdapter extends OsmandBaseExpandableListAdapter { } checkBox.setState(contains ? MISC : UNCHECKED); } - + child.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (listener != null) { + listener.onTypeClicked(category, type); + } + } + }); int checkBoxColor = checkBox.getState() == UNCHECKED ? secondaryColorRes : activeColorRes; CompoundButtonCompat.setButtonTintList(checkBox, ColorStateList.valueOf(ContextCompat.getColor(app, checkBoxColor))); child.findViewById(R.id.check_box_container).setOnClickListener(new View.OnClickListener() { @@ -171,13 +168,8 @@ public class ExportSettingsAdapter extends OsmandBaseExpandableListAdapter { public void onClick(View view) { checkBox.performClick(); boolean selected = checkBox.getState() == CHECKED; - if (selected) { - selectedItemsMap.put(currentItem.getType(), currentItem.getItems()); - } else { - selectedItemsMap.remove(currentItem.getType()); - } if (listener != null) { - listener.onTypeSelected(currentItem.getType(), selected); + listener.onItemsSelected(type, selected ? items : new ArrayList<>()); } notifyDataSetChanged(); } @@ -195,7 +187,7 @@ public class ExportSettingsAdapter extends OsmandBaseExpandableListAdapter { @Override public int getChildrenCount(int i) { - return itemsMap.get(itemsTypes.get(i)).size(); + return itemsMap.get(itemsTypes.get(i)).getTypes().size(); } @Override @@ -205,7 +197,9 @@ public class ExportSettingsAdapter extends OsmandBaseExpandableListAdapter { @Override public Object getChild(int groupPosition, int childPosition) { - return itemsMap.get(itemsTypes.get(groupPosition)).get(childPosition); + SettingsCategoryItems categoryItems = itemsMap.get(itemsTypes.get(groupPosition)); + ExportSettingsType type = categoryItems.getTypes().get(groupPosition); + return categoryItems.getItemsForType(type).get(childPosition); } @Override @@ -237,19 +231,15 @@ public class ExportSettingsAdapter extends OsmandBaseExpandableListAdapter { } } - public void updateSettingsList(Map> itemsMap) { + public void updateSettingsItems(Map itemsMap, + Map> selectedItemsMap) { this.itemsMap = itemsMap; this.itemsTypes = new ArrayList<>(itemsMap.keySet()); + this.selectedItemsMap = selectedItemsMap; Collections.sort(itemsTypes); notifyDataSetChanged(); } - public void clearSettingsList() { - this.itemsMap.clear(); - this.itemsTypes.clear(); - notifyDataSetChanged(); - } - public boolean hasSelectedData() { return !selectedItemsMap.isEmpty(); } @@ -265,21 +255,20 @@ public class ExportSettingsAdapter extends OsmandBaseExpandableListAdapter { private String getCategoryDescr(ExportSettingsCategory category) { long itemsSize = 0; int selectedTypes = 0; - List items = itemsMap.get(category); - for (int i = 0; i < items.size(); i++) { - ExportDataObject object = items.get(i); - if (selectedItemsMap.containsKey(object.getType())) { + SettingsCategoryItems items = itemsMap.get(category); + for (ExportSettingsType type : items.getTypes()) { + if (!Algorithms.isEmpty(selectedItemsMap.get(type))) { selectedTypes++; - itemsSize += calculateItemsSize(object.getItems()); + itemsSize += calculateItemsSize(items.getItemsForType(type)); } } String description; if (selectedTypes == 0) { description = app.getString(R.string.shared_string_none); - } else if (selectedTypes == items.size()) { + } else if (selectedTypes == items.getTypes().size()) { description = app.getString(R.string.shared_string_all); } else { - description = app.getString(R.string.ltr_or_rtl_combine_via_slash, String.valueOf(selectedTypes), String.valueOf(items.size())); + description = app.getString(R.string.ltr_or_rtl_combine_via_slash, String.valueOf(selectedTypes), String.valueOf(items.getTypes().size())); } String formattedSize = AndroidUtils.formatSize(app, itemsSize); return itemsSize == 0 ? description : app.getString(R.string.ltr_or_rtl_combine_via_comma, description, formattedSize); @@ -297,12 +286,11 @@ public class ExportSettingsAdapter extends OsmandBaseExpandableListAdapter { return itemsSize; } - private String getSelectedTypeDescr(ExportDataObject dataObject) { + private String getSelectedTypeDescr(ExportSettingsType type, List items) { long itemsSize = 0; int selectedTypes = 0; - List items = dataObject.getItems(); - List selectedItems = selectedItemsMap.get(dataObject.getType()); + List selectedItems = selectedItemsMap.get(type); if (selectedItems != null) { for (int i = 0; i < items.size(); i++) { Object object = items.get(i); @@ -333,9 +321,11 @@ public class ExportSettingsAdapter extends OsmandBaseExpandableListAdapter { interface OnItemSelectedListener { + void onItemsSelected(ExportSettingsType type, List selectedItems); + void onCategorySelected(ExportSettingsCategory type, boolean selected); - void onTypeSelected(ExportSettingsType type, boolean selected); + void onTypeClicked(ExportSettingsCategory category, ExportSettingsType type); } } \ No newline at end of file diff --git a/OsmAnd/src/net/osmand/plus/settings/fragments/ExportSettingsFragment.java b/OsmAnd/src/net/osmand/plus/settings/fragments/ExportSettingsFragment.java index ce9d1f414e..77960d9cef 100644 --- a/OsmAnd/src/net/osmand/plus/settings/fragments/ExportSettingsFragment.java +++ b/OsmAnd/src/net/osmand/plus/settings/fragments/ExportSettingsFragment.java @@ -50,7 +50,10 @@ import org.apache.commons.logging.Log; import java.io.File; import java.text.SimpleDateFormat; +import java.util.ArrayList; import java.util.Date; +import java.util.HashMap; +import java.util.LinkedHashMap; import java.util.List; import java.util.Locale; import java.util.Map; @@ -74,7 +77,9 @@ public class ExportSettingsFragment extends BaseOsmAndFragment implements OnItem private static final SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("dd-MM-yy", Locale.US); private OsmandApplication app; - private Map> dataList; + + private Map> selectedItemsMap = new HashMap<>(); + private Map dataList = new LinkedHashMap<>(); private ProgressDialog progress; private ApplicationMode appMode; @@ -179,7 +184,7 @@ public class ExportSettingsFragment extends BaseOsmAndFragment implements OnItem }); adapter = new ExportSettingsAdapter(app, this, nightMode); - adapter.updateSettingsList(dataList); + adapter.updateSettingsItems(dataList, selectedItemsMap); expandableList.setAdapter(adapter); CollapsingToolbarLayout toolbarLayout = root.findViewById(R.id.toolbar_layout); @@ -292,15 +297,32 @@ public class ExportSettingsFragment extends BaseOsmAndFragment implements OnItem } @Override - public void onCategorySelected(ExportSettingsCategory type, boolean selected) { + public void onCategorySelected(ExportSettingsCategory category, boolean selected) { + SettingsCategoryItems categoryItems = dataList.get(category); + for (ExportSettingsType type : categoryItems.getTypes()) { + List selectedItems = selected ? categoryItems.getItemsForType(type) : new ArrayList<>(); + selectedItemsMap.put(type, selectedItems); + } updateAvailableSpace(); } @Override - public void onTypeSelected(ExportSettingsType type, boolean selected) { + public void onItemsSelected(ExportSettingsType type, List selectedItems) { + selectedItemsMap.put(type, selectedItems); + adapter.notifyDataSetChanged(); updateAvailableSpace(); } + @Override + public void onTypeClicked(ExportSettingsCategory category, ExportSettingsType type) { + FragmentManager fragmentManager = getFragmentManager(); + if (fragmentManager != null && type != ExportSettingsType.GLOBAL && type != ExportSettingsType.SEARCH_HISTORY) { + List items = (List) dataList.get(category).getItemsForType(type); + List selectedItems = (List) selectedItemsMap.get(type); + ExportItemsBottomSheet.showInstance(type, selectedItems, items, fragmentManager, this); + } + } + private void prepareFile() { if (app != null) { exportingStarted = true; diff --git a/OsmAnd/src/net/osmand/plus/settings/fragments/SettingsCategoryItems.java b/OsmAnd/src/net/osmand/plus/settings/fragments/SettingsCategoryItems.java new file mode 100644 index 0000000000..2f37f9fd0e --- /dev/null +++ b/OsmAnd/src/net/osmand/plus/settings/fragments/SettingsCategoryItems.java @@ -0,0 +1,30 @@ +package net.osmand.plus.settings.fragments; + +import androidx.annotation.NonNull; + +import net.osmand.plus.settings.backend.ExportSettingsType; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +public class SettingsCategoryItems { + + private final Map> itemsMap; + + public SettingsCategoryItems(@NonNull Map> itemsMap) { + this.itemsMap = itemsMap; + } + + public List getTypes() { + return new ArrayList<>(itemsMap.keySet()); + } + + public List getItemsForType(ExportSettingsType type) { + return itemsMap.get(type); + } + + public Map> getItemsMap() { + return itemsMap; + } +} \ No newline at end of file From 2c103cb81b65d0e9bae0281a67a17fe126d28508 Mon Sep 17 00:00:00 2001 From: max-klaus Date: Sat, 21 Nov 2020 11:05:55 +0300 Subject: [PATCH 57/97] Fix editing gpx (save existing wpt) --- .../osmand/plus/measurementtool/MeasurementToolFragment.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OsmAnd/src/net/osmand/plus/measurementtool/MeasurementToolFragment.java b/OsmAnd/src/net/osmand/plus/measurementtool/MeasurementToolFragment.java index 16c8e2309c..3b70d79f11 100644 --- a/OsmAnd/src/net/osmand/plus/measurementtool/MeasurementToolFragment.java +++ b/OsmAnd/src/net/osmand/plus/measurementtool/MeasurementToolFragment.java @@ -722,7 +722,7 @@ public class MeasurementToolFragment extends BaseOsmAndFragment implements Route MapActivity mapActivity = getMapActivity(); if (mapActivity != null) { if (editingCtx.getPointsCount() > 0) { - if (editingCtx.isNewData() || isInEditMode()) { + if (editingCtx.isNewData()) { if (showDialog) { openSaveAsNewTrackMenu(mapActivity); } else { From cc1776ec33a89c76aa02dede931d18b83b68ba4c Mon Sep 17 00:00:00 2001 From: androiddevkkotlin Date: Sun, 22 Nov 2020 00:56:29 +0200 Subject: [PATCH 58/97] Plan Route Fix UI margins MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Primary button (Add, Apply): minimum width size 64dp, left/right inner margins = 16dp Lost divider between the top and bottom parts of the menu. Scrollable toggles, graph switchers: left/right inner margins = 16dp (make it default value) Menu shouldn't auto close when user add a new point Убрать красные точки во время просмотра графика (точка = засечка на графике) Toggle "Points/Graph" should be visible when the menu is closed. Tap in "Point" or "Graph" button should open Point or graph. --- OsmAnd/res/layout/custom_radio_buttons.xml | 21 +++---- .../res/layout/fragment_measurement_tool.xml | 31 +++++++--- OsmAnd/src/net/osmand/plus/UiUtilities.java | 34 ++++++----- .../other/HorizontalSelectionAdapter.java | 2 + .../other/TrackDetailsMenu.java | 7 ++- .../MeasurementToolFragment.java | 56 ++++++++++++++----- 6 files changed, 100 insertions(+), 51 deletions(-) diff --git a/OsmAnd/res/layout/custom_radio_buttons.xml b/OsmAnd/res/layout/custom_radio_buttons.xml index a5ec943f6a..c15757f4b0 100644 --- a/OsmAnd/res/layout/custom_radio_buttons.xml +++ b/OsmAnd/res/layout/custom_radio_buttons.xml @@ -25,6 +25,8 @@ android:background="?attr/selectableItemBackground" android:gravity="center" android:textSize="@dimen/default_desc_text_size" + android:foreground="?attr/selectableItemBackground" + android:textColor="@drawable/radio_flat_text_selector_light" osmand:typeface="@string/font_roboto_medium" tools:text="@string/shared_string_left"/> @@ -32,20 +34,10 @@ - - + android:layout_weight="0" + android:background="@color/divider_color"> @@ -61,8 +53,9 @@ android:layout_height="match_parent" android:background="?attr/selectableItemBackground" android:gravity="center" - android:textSize="@dimen/default_desc_text_size" + android:textColor="@drawable/radio_flat_text_selector_light" osmand:typeface="@string/font_roboto_medium" + android:textSize="@dimen/default_desc_text_size" tools:text="@string/shared_string_right"/> diff --git a/OsmAnd/res/layout/fragment_measurement_tool.xml b/OsmAnd/res/layout/fragment_measurement_tool.xml index 2fe4dc1416..3cdf5b3f46 100644 --- a/OsmAnd/res/layout/fragment_measurement_tool.xml +++ b/OsmAnd/res/layout/fragment_measurement_tool.xml @@ -30,22 +30,22 @@ + tools:src="@drawable/ic_action_ruler" /> + + + - - @@ -150,6 +158,11 @@ + + items, - final AdapterView.OnItemClickListener listener) { + View v, int minWidth, + List items, + final AdapterView.OnItemClickListener listener) { int contentPadding = themedCtx.getResources().getDimensionPixelSize(R.dimen.content_padding); int contentPaddingHalf = themedCtx.getResources().getDimensionPixelSize(R.dimen.content_padding_half); int defaultListTextSize = themedCtx.getResources().getDimensionPixelSize(R.dimen.default_list_text_size); diff --git a/OsmAnd/src/net/osmand/plus/mapcontextmenu/other/HorizontalSelectionAdapter.java b/OsmAnd/src/net/osmand/plus/mapcontextmenu/other/HorizontalSelectionAdapter.java index 06783d6f50..28cea2eb1e 100644 --- a/OsmAnd/src/net/osmand/plus/mapcontextmenu/other/HorizontalSelectionAdapter.java +++ b/OsmAnd/src/net/osmand/plus/mapcontextmenu/other/HorizontalSelectionAdapter.java @@ -64,6 +64,8 @@ public class HorizontalSelectionAdapter extends RecyclerView.Adapter 0) { - if (editingCtx.isNewData()) { + if (editingCtx.isNewData() || isInEditMode()) { if (showDialog) { openSaveAsNewTrackMenu(mapActivity); } else { @@ -1030,7 +1058,7 @@ public class MeasurementToolFragment extends BaseOsmAndFragment implements Route @Override public void onChangeApplicationMode(ApplicationMode mode, RouteBetweenPointsDialogType dialogType, - RouteBetweenPointsDialogMode dialogMode) { + RouteBetweenPointsDialogMode dialogMode) { MeasurementToolLayer measurementLayer = getMeasurementLayer(); if (measurementLayer != null) { ChangeRouteType changeRouteType = ChangeRouteType.NEXT_SEGMENT; @@ -1465,9 +1493,10 @@ public class MeasurementToolFragment extends BaseOsmAndFragment implements Route private void collapseAdditionalInfoView() { if (portrait) { additionalInfoExpanded = false; - updateUpDownBtn(); additionalInfoContainer.setVisibility(View.GONE); setDefaultMapPosition(); + changeAdditionalInfoType(null); + updateUpDownBtn(); } } @@ -1479,6 +1508,7 @@ public class MeasurementToolFragment extends BaseOsmAndFragment implements Route collapseAdditionalInfoView(); } else if (pointsCount < 1) { disable(upDownBtn); + collapseAdditionalInfoView(); if (additionalInfoExpanded) { collapseAdditionalInfoView(); } @@ -1866,7 +1896,7 @@ public class MeasurementToolFragment extends BaseOsmAndFragment implements Route } public static boolean showInstance(FragmentManager fragmentManager, MeasurementEditingContext editingCtx, - boolean followTrackMode) { + boolean followTrackMode) { MeasurementToolFragment fragment = new MeasurementToolFragment(); fragment.setEditingCtx(editingCtx); fragment.setMode(FOLLOW_TRACK_MODE, followTrackMode); From b2a6177d990a74e484176cb74a0c3026ce5fc7d0 Mon Sep 17 00:00:00 2001 From: Kintu Date: Sat, 21 Nov 2020 01:32:38 +0000 Subject: [PATCH 59/97] Translated using Weblate (Catalan) Currently translated at 96.4% (3437 of 3564 strings) --- OsmAnd/res/values-ca/strings.xml | 182 +++++++++++++++---------------- 1 file changed, 85 insertions(+), 97 deletions(-) diff --git a/OsmAnd/res/values-ca/strings.xml b/OsmAnd/res/values-ca/strings.xml index a8b5d32da2..9e017a5447 100644 --- a/OsmAnd/res/values-ca/strings.xml +++ b/OsmAnd/res/values-ca/strings.xml @@ -89,7 +89,7 @@ Utilitza mapes en línia (les tessel·les es baixen i es desen a la tarja de memòria). Mapes en línia Seleccioneu les fonts de mapes de tessel·les en línia o a la memòria cau. - "Fa disponible directament des OsmAnd les característiques d\'accessibilitat del dispositiu. Us permet, per exemple, ajustar la velocitat de la veu sintetitzada, configurar la navegació amb cursors, utilitzant un ratolí de bola per controlar el zoom o rebre notificacions amb veu sintetitzada, per exemple per anunciar automàticament la vostra posició." + Fa disponible directament des OsmAnd les característiques d\'accessibilitat del dispositiu. Us permet, per exemple, ajustar la velocitat de la veu sintetitzada, configurar la navegació amb cursors, utilitzant un ratolí de bola per controlar el zoom o rebre notificacions amb veu sintetitzada, per exemple per anunciar automàticament la vostra posició. Gestor de connectors Cerca de PDI (punt d\'interès) Gestor de connectors @@ -351,55 +351,38 @@ Carpeta d\'emmagatzematge de dades OsmAnd (OSM Automated Navigation Directions) \n -\n \nOsmAnd és una aplicació de navegació feta amb programari de codi obert amb accés a una gran varietat de dades globals d\'OSM. Totes les dades dels mapes (siguin mapes vectorials o de tessel·les), es poden desar a la targeta de memòria del telèfon pel seu en desconnexió. També calcula rutes, amb connexió o sense, incloent l\'orientació per veu. \n -\n -\nAlgunes de les característiques principals: -\n -\n- Funcionament complet en desconnexió (desa localment els mapes vectorials i de tessel·les baixats) -\n -\n- Mapes vectorials compactes de tot el món per usar en desconnexió -\n -\n- Baixada de mapes nacionals o regionals directament des de l\'aplicació -\n -\n- Diverses capes de mapes alhora, com traces GPX o de navegació, punts d\'interès, Preferits, parades de transport públic, etc. amb nivell d\'opacitat personalitzada -\n -\n- Cerca, fora de línia, d\'adreces i llocs -\n +\nAlgunes de les característiques principals: +\n- Funcionament complet en desconnexió (desa localment els mapes vectorials i de tessel·les baixats) +\n- Mapes vectorials compactes de tot el món per usar en desconnexió +\n- Baixada de mapes nacionals o regionals directament des de l\'aplicació +\n- Diverses capes de mapes alhora, com traces GPX o de navegació, punts d\'interès, Preferits, parades de transport públic, etc. amb nivell d\'opacitat personalitzada +\n- Cerca, fora de línia, d\'adreces i llocs \n- Càlcul de rutes fora de línia fins per distàncies d\'abast mitjà. +\n- Modalitats opcionals de cotxe, bicicleta i vianant +\n- Canvi automàtic de vista diürna a nocturna +\n- Escala del mapa en funció de la velocitat +\n- Orientació del mapa segons la brúixola o la direcció del moviment +\n- Indicació de carril, velocitat màxima permesa, veus enregistrades i/o sintetitzades \n -\n- Modalitats opcionals de cotxe, bicicleta i vianant +\nLimitacions d\'aquesta versió gratuïta de OsmAnd: +\n- Limitació en el nombre de mapes baixats +\n- No hi ha accés als PDIs de la Viquipèdia sense connexió \n -\n- Canvi automàtic de vista diürna a nocturna -\n -\n- Escala del mapa en funció de la velocitat -\n -\n- Orientació del mapa segons la brúixola o la direcció del moviment -\n -\n- Indicació de carril, velocitat màxima permesa, veus enregistrades i/o sintetitzades -\n -\n -\nLimitacions d\'aquesta versió gratuïta de OsmAnd: -\n -\n- Limitació en el nombre de mapes baixats -\n -\n- No hi ha accés als PDIs de la Viquipèdia sense connexió -\n -\n \nOsmAnd es desenvolupa activament i el nostre projecte i el seu progrés continu depenen de donacions pel desenvolupament i proves de noves funcions. Si us plau, considereu la compra d\'OsmAnd+ o patrocinar una nova característica concreta, o fer una donació genèrica a la pàgina https\\\\osmand.net. - "OsmAnd+ (OSM Automated Navigation Directions) + OsmAnd+ (OSM Automated Navigation Directions) \n \nL\'OsmAnd+ és un programari de navegació de codi obert amb accés a una gran varietat de dades globals de OSM. Totes les dades de mapes (mapes de tessel·les o vectorials) poden emmagatzemar-se a la targeta de memòria del telèfon pel seu ús sense connexió. També proporciona la funcionalitat de càlcul de rutes sigui amb connexió o sense, incloent orientació per veu. \n \nL\'OsmAnd+ és la versió de pagament; comprant-la esteu donant suport al projecte, financeu el desenvolupament de noves funcions i rebreu les darreres actualitzacions. \n \nAlgunes de les característiques centrals són: -\n- Funcionalitat completa fora de línia (desa en el dispositiu d\'emmagatzemament els mapes vectorials i de mosaic baixats) +\n- Funcionalitat completa fora de línia (desa en el dispositiu d\'emmagatzemament els mapes vectorials i de mosaic baixats) \n- Mapes vectorials compactes de tot el món disponibles \n- Baixada il·limitada de mapes nacionals o regionals directament des de l\'aplicació \n- Disponibilitat sense connexió dels PDI baixats prèviament de Viquipèdia, ideal per fer turisme -\n- Possibilitat de superposar diverses capes de mapes simultànies, com traces GPX o de navegació, Punts d\'interès, Favorits, corbes de nivell, parades de transport públic, mapes addicionals amb nivell de transparència ajustable +\n- Possibilitat de superposar diverses capes de mapes simultànies, com traces GPX o de navegació, Punts d\'interès, Favorits, corbes de nivell, parades de transport públic, mapes addicionals amb nivell de transparència ajustable \n \n- Cerca fora de línia d\'adreces i llocs (PDIs) \n- Càlcul de rutes fora de línia per distàncies d\'abast mitjà @@ -408,7 +391,7 @@ \n- Escala automàtica del mapa segons la velocitat \n- Orientació del mapa segons la brúixola o la direcció del moviment \n- Indicacions de carril, velocitat màxima permesa, veus enregistrades i sintetitzades -\n" +\n Seleccioneu el nivell mínim de zoom per mostrar el mapa si està disponible. Caldrà el fitxer SRTM separat: Aquest connector mostra la configuració de característiques per al desenvolupament i depuració com la verificació o simulació de rutes, el rendiment del renderitzat o les indicacions de veu. Aquestes configuracions s\'adrecen a desenvolupadors i no són d\'utilitat per a un usuari normal. En consonància amb la configuració del sistema Android @@ -578,7 +561,7 @@ Mapa superposat Temps de sincronització del mapa seguint la nova posició. Mapa de fons - Escolliu mapa de fons. + Escolliu mapa de fons Escolliu el mapa superposat Llengua de visualització de l\'aplicació (s\'actualitzarà quan reinicieu OsmAnd). ft @@ -605,7 +588,7 @@ El mateix que el dispositiu Afegir nova regla No hi ha dades PDI fora de linía per a aquesta area - "No s\'ha pogut actualitzar la llista local de PDIs" + No s\'ha pogut actualitzar la llista local de PDIs. Max. zooms en linía Servei de navegació Baixant llista de les regions disponibles… @@ -641,7 +624,7 @@ Edita el PDI Elimina el PDI Crea un PDI - "Gràcies per utilitzar l\'OsmAnd. Baixeu informació regional fora de línia a través de \'Configuració\' → \'Gestió de fitxers de mapes\' per veure mapes, situar adreces, buscar els PDIs, trobar transports públics i més." + Gràcies per utilitzar l\'OsmAnd. Baixeu informació regional fora de línia a través de \'Configuració\' → \'Gestió de fitxers de mapes\' per veure mapes, situar adreces, buscar els PDIs, trobar transports públics i més. El mapa mundial de fons necessari per les funcionalitats bàsiques està a la cua de baixades. Mostra paràmetres per activar el seguiment i la navegació en procés de fons mitjançant l\'activació periòdica del dispositiu GPS (amb la pantalla apagada). Preferències relatives a l\'accessibilitat. @@ -690,7 +673,7 @@ Seleccioneu un paquet de guiatge de veu Ajusteu el criteri de commutació entre el mode nocturn i el diürn. Aquest mapa podria no haver-se baixat - No s\'ha pogut dibuixar l\'àrea triada + No s\'ha pogut dibuixar l\'àrea triada. Utilitza la ubicació… El renderitzador s\'ha carregat No hi ha punts Preferits @@ -701,8 +684,8 @@ Transport públic Emergències Restaurants - "Permet fer contribucions a OSM com la creació o modificació de PDIs d\'OSM, obrir o comentar anotacions OSM i aportar fitxers enregistrats GPX amb OsmAnd en subministrar el vostre usuari i contrasenya. OpenStreetMap.org és un projecte gestionat per una comunitat, de domini públic i de cartografia global." - "La llengua seleccionada no està suportada per el motor de TTS (text a veu) d\'Android instal·lat, s\'usarà la llengua del TTS per defecte. Voleu buscar un altre motor TTS a la botiga\?" + Permet fer contribucions a OSM com la creació o modificació de PDIs d\'OSM, obrir o comentar anotacions OSM i aportar fitxers enregistrats GPX amb OsmAnd en subministrar el vostre usuari i contrasenya. OpenStreetMap.org és un projecte gestionat per una comunitat, de domini públic i de cartografia global. + La llengua seleccionada no està suportada per el motor de TTS (text a veu) d\'Android instal·lat, s\'usarà la llengua del TTS per defecte. Voleu buscar un altre motor TTS a la botiga\? Comparteix l\'ubicació usant Format de mapa «{0}» obsolet, no s\'admet Màxim zoom en precàrrega @@ -711,7 +694,7 @@ Resultats de transport ({0} al destí): La llibreria seleccionada de missatges de veu no està disponible Esperant el senyal… - No es pot canviar el format d\'horaris d\'obertura + No es pot canviar el format d\'horaris d\'obertura. prioritza distancia Aplicació de navegació OsmAnd Accediu a diferents tipus de mapa (anomenats de tessel·les o de bits), des de les tessel·les predefinides d\'OSM (com Mapnik) a imatges de satèl·lit i capes específiques com mapes meteorològics, climàtics, geològics, de relleu, etc. @@ -793,7 +776,7 @@ Objectiu El filtre \'%1$s\' s\'ha eliminat Les dades dels PDI s\'han actualitzat (se n\'han carregat {0}) - No s\'han pogut carregar dades del servidor + No s\'han pogut carregar dades del servidor. Acostar el zoom us permet actualitzar els PDIs Voleu actualitzar les dades locals des d\'Internet? Edificis: {0}, {1}, {2} @@ -814,7 +797,7 @@ Voleu eliminar aquest filtre\? Sense ruta Àudio de trucada telefònica (interrupció de la música Bluetooth del cotxe) - "Habiliteu el connector \"Enregistrament de ruta\" per utilitzar els serveis de registre d\'ubicació (enregistrament GPX, seguiment en directe)" + Habiliteu el connector \"Enregistrament de ruta\" per utilitzar els serveis de registre d\'ubicació (enregistrament GPX, seguiment en directe) Habiliteu el GPS a les preferències L\'aplicació ZXing Barcode Scanner no està instal·lada. La voleu cercar a Google Play? Esquema de color de carreteres @@ -875,7 +858,7 @@ peces Línies de nivell Corbes de nivell - "Carreteres " + Carreteres Mapes estàndards No mostris els límits administratius regionals (nivells 5 a 9). Límit de velocitat @@ -918,7 +901,7 @@ Espera màxima per corregir Dades d\'àudio/vídeo Esteu segur què voleu aturar la navegació? - "N\'esteu segur que voleu eliminar la vostra destinació (i les vostres fites)?" + N\'esteu segur que voleu eliminar la vostra destinació (i les vostres fites)\? Mostra Fotografia %1$s %2$s Fes una fotografia @@ -1091,9 +1074,9 @@ Info depuració FPS Ordre optimitzat de les fites de la ruta fins a la destinació. Creació d\'itineraris prement el mapa o utilitzant o modificant fitxers GPX existents, per planificar un trajecte i mesurar la distància entre punts. El resultat es pot desar com un fitxer GPX que podreu usar més endavant com una referència. - "Des de la versió 4.4 d\'Android (KitKat) no podeu baixar i actualitzar els mapes en l\'antiga carpeta (%s). Voleu copiar tots els fitxers de l\'OsmAnd a la nova destinació? -\n Nota 1: Els vostres fitxers obsolets quedaran intactes (els podeu esborrar manualment). -\n Nota 2: En el nou lloc d\'emmagatzemament no serà possible compartir fitxers entre l\'OsmAnd i l\'OsmAnd+." + Des de la versió 4.4 d\'Android (KitKat) no podeu baixar i actualitzar els mapes en l\'antiga carpeta (%s). Voleu copiar tots els fitxers de l\'OsmAnd a la nova destinació\? +\n Nota 1: Els vostres fitxers obsolets quedaran intactes (els podeu esborrar manualment). +\n Nota 2: En el nou lloc d\'emmagatzemament no serà possible compartir fitxers entre l\'OsmAnd i l\'OsmAnd+. S\'està copiant el fitxer (%s) a la nova destinació… S\'estan copiant els fitxers de dades de l\'OsmAnd a la nova destinació (%s)… S\'estan copiant fitxers de dades de l\'OsmAnd… @@ -1304,7 +1287,7 @@ Als darrers metres Edificis amb colors codificats per tipus Mida d\'imatge de la càmera - Estableix la mida de la imatge de la càmera. + Estableix la mida de la imatge de la càmera Mapa esquemàtic Cotxe Bicicleta @@ -1319,7 +1302,6 @@ Tot Aquest connector activa la funcionalitat d\'enregistrar i desar els vostres trajectes, sigui prement sobre el mapa el giny de gravació GPX, o sigui desant-los tots en un fitxer GPX automàticament. \n -\n \nLes rutes enregistrades es poden compartir amb els vostres amics o aportar-les per ser utilitzades a OSM. Els atletes poden utilitzar els seus registres per monitoritzar els seus entrenaments. Es pot fer una anàlisi bàsica de les rutes directament a OsmAnd com la durada de cada volta, velocitat mitjana, etc., i, per descomptat, es poden analitzar amb eines especialitzades de tercers. Enregistrament de trajectes h @@ -1373,7 +1355,7 @@ Amaga Activa la pantalla Activa la pantalla del dispositiu (si no ho està) en aproximar-se a un gir. - "%1$s necessita aquest permís per la funcionalitat de posar la pantalla en mode d\'estalvi d\'energia." + %1$s necessita aquest permís per la funcionalitat de posar la pantalla en mode d\'estalvi d\'energia. Mai Inici Cerca per @@ -1521,10 +1503,10 @@ No utilitzeu Adreça Aquest connector completa el mapa OsmAnd i la seva navegació en produir mapes nàutics per cabotatge, regates i altres tipus de esports d\'aigua. - -Un complement de mapa específic per OsmAnd us proporcionarà tot tipus de senyals nàutiques i símbols gràfics, per navegació interior o propera a la costa. La descripció de cada senyal de navegació us donarà els detalls que calguin per identificar-les i del seu significat (categoria, forma, color, seqüència, referència, etc.). - -Per retornar a l\'estil habitual dels mapes d\'OsmAnd, només cal desactivar aquest connector o canviar a com es desitgi <<Estil del Mapa>> dins <<Configuració del Mapa>>. +\n +\nUn complement de mapa específic per OsmAnd us proporcionarà tot tipus de senyals nàutiques i símbols gràfics, per navegació interior o propera a la costa. La descripció de cada senyal de navegació us donarà els detalls que calguin per identificar-les i del seu significat (categoria, forma, color, seqüència, referència, etc.). +\n +\nPer retornar a l\'estil habitual dels mapes d\'OsmAnd, només cal desactivar aquest connector o canviar a com es desitgi <<Estil del Mapa>> dins <<Configuració del Mapa>>. Aquest connector per l\'OsmAnd us proporciona els detalls de les pistes d\'esquí en baixada, de travessa i alpí així com de telefèrics i remuntadors a tot el món. Les rutes i pistes es mostren amb el codi de colors que els correspon segons la seva dificultat i amb un estil de mapa especial «Hivern» que s\'associa a un paisatge nevat. \n \nEn activar aquests canvis de visualització l\'estil del mapa canvia a «Hivern i esquí», i es mostren totes les característiques del paisatge a l\'hivern. Aquesta vista es pot revertir tant en activar-la altra cop com en canviar-la a «Estil del mapa» dins «Configuració del mapa». @@ -1712,7 +1694,7 @@ Per retornar a l\'estil habitual dels mapes d\'OsmAnd, només cal desactivar aqu Utilitzeu un nom de categoria que encara no existeixi. Nom de categoria Afegeix una nova categoria - "El mapa restringit a carreteres no cal, donat que ja teniu el mapa estàndard (complet). Que baixi igualment?" + El mapa restringit a carreteres no cal, donat que ja teniu el mapa estàndard (complet). Que baixi igualment\? %1$.1f de %2$.1f MB %.1f MB Actualitzeu tot (%1$s MB) @@ -1729,7 +1711,7 @@ Per retornar a l\'estil habitual dels mapes d\'OsmAnd, només cal desactivar aqu El mapa de %1$s està a punt per ser utilitzat. Mostra el mapa El mapa base mundial (d\'abast mundial i poc detall) no es troba o està caducat. Considereu baixar-lo per una tenir una perspectiva global. - Si es desactiva s\'engega amb la pantalla del mapa. + «Desactivat» inicia el mapa directament. Indiqueu el nom del país Pujada S\'ha creat un PDI a OSM @@ -1929,11 +1911,10 @@ Per retornar a l\'estil habitual dels mapes d\'OsmAnd, només cal desactivar aqu Marcadors actius Marcadors de mapa Marcador de mapa - El nom de fitxer inclou un caràcter il·legal + Caràcter il·legal en el nom del fitxer Afegiu els marcadors de mapa amb el mapa Aquesta subscripció permet actualitzacions horàries de tots els mapes del món. \nPart dels ingressos es retornen a la comunitat OSM en retribuir cada contribució OSM. -\n \nSi aprecieu OsmAnd i OSM i els voleu recolzar mentre l\'utilitzeu, aquesta és la via perfecta per fer-ho. Pugeu la vostra nota OSM anònimament o utilitzant el vostre perfil OpenStreetMap.org. Afegeix un lapse de temps @@ -2020,7 +2001,7 @@ Per retornar a l\'estil habitual dels mapes d\'OsmAnd, només cal desactivar aqu És necessari per baixar mapes. Cercant la localització… Espai lliure - "Magatzem de dades d\'OsmAnd (per mapes, fitxers GPX, etc.): %1$s." + Magatzem de dades d\'OsmAnd (per mapes, traces, etc.): %1$s. Autoritza Permet accedir a la localització Troba la meva localització @@ -2180,11 +2161,11 @@ Per retornar a l\'estil habitual dels mapes d\'OsmAnd, només cal desactivar aqu S\'ha canviat el mapa de fons a \"%s\". Codi de localització obert OLC no vàlid - +\n OLC curt -Proporcioneu el codi complet - OLC complet vàlid -Abasta l\'àrea: %1$s x %2$s +\nProporcioneu el codi complet + OLC complet vàlid +\nRepresenta l\'àrea: %1$s x %2$s Un botó per paginar la llista que segueix. Divisió automàtica de les gravacions un cop aturades Comença un nou segment desprès de 6 min d\'interrupció, una traça nova si es superen les 2 hores o un nou fitxer si encara dura més i ha canviat la data. @@ -2241,7 +2222,7 @@ Abasta l\'àrea: %1$s x %2$s \n Gaudiu del guiatge visual i de veu, representant PDIs (punts d\'interès), creant i gestionat traces GPX, activant la representació de corbes de nivell i d\'informació d\'elevació (requereix connector), optant entre els modes de conducció amb vehicle, bicicleta o com vianant, editant d\'OSM i molt més. Recupera les compres Tipus de lletra - Navegació GPS + Navegació GPS \n• Trieu el mode desconnectat (no hi hauran càrrecs de roaming si sou a l\'estranger) o el mode en línia (més àgil) \n• El guiatge de veu gir-a-gir us dirigeix pel camí (veus enregistrades i sintètiques) \n• La ruta es tornarà a calcular si us desvieu de la proposta anterior @@ -2251,7 +2232,8 @@ Abasta l\'àrea: %1$s x %2$s \n• L\'escala del mapa s\'ajusta a la vostra velocitat \n• Cerca de destinacions per adreça, tipus (p. ex.: Aparcament, restaurant, hotel, gasolinera, museu), o per les coordenades geogràfiques \n• Gestiona punts de pas en el vostre itinerari -\n• Enregistreu la vostra o baixeu una traça GPX i seguiu-la +\n• Enregistreu la vostra o baixeu una traça GPX i seguiu-la +\n Esquí \nEl connector de mapes d\'esquí d\'OsmAnd us permet veure les pistes segons la seva dificultat i d\'altres informacions addicionals, com ara la ubicació dels ascensors i altres equipaments. Ciclisme @@ -2265,11 +2247,13 @@ Abasta l\'àrea: %1$s x %2$s \n• La Viquipèdia, en el vostre idioma preferit, us pot ajudar molt visitant una ciutat \n• Parades de transport públic (autobús, tramvia, tren), incloent-hi noms de línia, suport per la navegació en una ciutat nova \n• La navegació GPS en mode vianant genera la vostra ruta per on pugueu passar -\n•Baixeu i seguiu una traça GPX o enregistreu i compartiu la vostra - "Col·laboreu amb Openstreetmap (OSM) +\n• Baixeu i seguiu una traça GPX o enregistreu i compartiu la vostra +\n + Col·laboreu amb Openstreetmap (OSM) \n• Informant de dades errònies \n• Pujant traces GPX a OSM directament des de l\'aplicació -\n• Afegint PDIs i penjar-los a OSM directament (o més tard si no esteu connectats)" +\n• Afegint PDIs i penjar-los a OSM directament (o més tard si no esteu connectats) +\n Analitza en el mapa Visible OsmAnd es de codi obert i s\'està desenvolupant activament. Tothom pot contribuir a l\'aplicació informant d\'errors, millorant traduccions o aportant codi de noves característiques. A més, el projecte es recolza en contribucions econòmiques per finançar la programació i les proves de noves funcionalitats. @@ -2329,14 +2313,16 @@ Abasta l\'àrea: %1$s x %2$s \n• Compartiu la vostra ubicació perquè els vostres amics us puguin trobar \n• Conserveu els vostres llocs més importants a \'Preferits\' \n• Us permet escollir com es mostrar els noms al mapa: en anglès, la lengua local o amb ortografia fonètica -\n• Mostra representacions especialitzades disponibles a la xarxa, imatges de satèl·lit (Bing), diferents superposicions com traces GPX d\'exploració/navegació i capes addicionals amb un grau transparència variable +\n• Mostra representacions especialitzades disponibles a la xarxa, imatges de satèl·lit (Bing), diferents superposicions com traces GPX d\'exploració/navegació i capes addicionals amb un grau transparència variable +\n Navegació \n• Funciona en línia (ràpid) o sense connexió (sense càrrecs de roaming quan sigueu a l\'estranger) \n• Indicacions de veu a cada gir (amb missatges gravats i sintetitzats) \n• Orientació opcional del carril, visualització del nom de la via i el temps estimat d\'arribada \n• Admet punts de pas intermedis \n• Revisió automàtica de la ruta quan us aparteu de la ruta proposada -\n• Cerca de llocs per adreça, tipus (per exemple: restaurant, hotel, gasolinera, museu) o coordenades geogràfiques +\n• Cerca de llocs per adreça, tipus (per exemple: restaurant, hotel, gasolinera, museu) o coordenades geogràfiques +\n OsmAnd + (OSM Automated Navigation Directions) és una aplicació per consulta de mapes i de navegació, amb accés a les dades obertes d\'OSM, d\'abast mundial i gran qualitat. \nFruïu la navegació amb indicacions visuals i de veu, mostrant PDIs (punts d\'interès), creant i gestionant traces GPX, disposant de corbes de nivell i cotes puntuals, seleccioneu la navegació per vehicle, bicicleta o com a vianant, editeu OSM i molt més. \n @@ -2367,24 +2353,25 @@ Abasta l\'àrea: %1$s x %2$s \n• Mapes vectorials compactes en local que s\'actualitzen un cop al mes, com a mínim \n \n• Opció entre dades completes d\'una regió o només la xarxa viària (Exemple: tot el Japó ocupa 700 MB però només 200 MB per a la xarxa viària) - "Característiques de seguretat + Característiques de seguretat \n• Canvi automàtic entre el mode diürn/nocturn (opcional) \n• Indicacions del límit de velocitat i notificació d\'excés (opcional) -\n• Escala en funció de la velocitat (opcional) -\n• Si compartiu la vostra ubicació, els vostres amics us podran trobar" +\n• Escala en funció de la velocitat (opcional) +\n• Si compartiu la vostra ubicació, els vostres amics us podran trobar +\n Característiques per ciclistes i vianants \n• Visualització de vies per vianants, senderisme i carrils bici, ideal per activitats a l\'aire lliure \n• Representació i navegació a mida per ciclistes i vianants \n• Indicació opcional de les parades del transport públic (autobús, tramvia, tren), incloent-hi noms de línia \n• Enregistrament opcional del trajecte en un fitxer GPX local o a un servei a la xarxa \n• Indicació opcional de la velocitat i l\'altitud • Visualització de corbes de nivell i ombrejat de relleu (requereix connector) - "Col·laboreu directament a OSM + Col·laboreu directament a OSM \n• Notifiqueu errors en les dades \n• Pugeu traces GPX directament a OSM des de l\'aplicació \n• Afegiu PDIs i pugeu-los OSM (o feu-ho més tard si no esteu connectats) -\n• Enregistrament opcional del trajecte, també en segon pla (mentre el dispositiu està bloquejat) +\n• Enregistrament opcional del trajecte, també en segon pla (mentre el dispositiu està bloquejat) \nOsmAnd és un programari de codi obert que es desenvolupa activament. Tothom pot recolzar l\'aplicació informant d\'errors, millorant traduccions o programant noves característiques. El projecte també es fonamenta en les aportacions econòmiques per patrocinar la programació i validació de noves funcionalitats. -\n" +\n Visió general Anima la pròpia posició Activa el desplaçament animat del mapa de \'La meva posició\' durant la navegació. @@ -2587,7 +2574,7 @@ Abasta l\'àrea: %1$s x %2$s Mostra una línia de direcció entre la vostra ubicació i les dels marcadors actius. Mostra una o dues fletxes indicant la direcció dels marcadors actius. Seleccioneu com indicar la distància als marcadors actius. - Indiqueu el nombre d\'indicadors de direcció: + Indiqueu el nombre d\'indicadors de direcció. Més Cercant traces amb fites Crea o modifica objectes OSM @@ -2646,14 +2633,14 @@ Abasta l\'àrea: %1$s x %2$s Copia nom d\'ubicació/PDI Ubicació sense nom Mostra notes amagades - Mostra/amaga notes OSM en el mapa. + Mostra o amaga notes OSM en el mapa. GPX - adient per exportar-lo a JOSM o a altres editors d\'OSM. OSC - adient per exportar-lo a OSM. Arxiu GPX Arxiu OSC Seleccioneu el tipus de fitxer Exportació com notes d\'OSM, PDIs o les dues coses. - "Totes les dades" + Totes les dades Notes OSM Túnel encarat Túnels @@ -2677,7 +2664,7 @@ Abasta l\'àrea: %1$s x %2$s O S N - "Nom opcional del punt " + Nom opcional del punt Rutes properes a dins A dins Introduïu el nom del fitxer. @@ -2755,7 +2742,7 @@ Abasta l\'àrea: %1$s x %2$s Viquipèdia sense connexió Mapes amb corbes de nivell i ombrejat de relleu Desbloca totes les funcions de OsmAnd - "Viquiviatges " + Viquiviatges Articles de Viquiviatges d\'arreu Obre l\'enllaç en línia de Viquipèdia L\'enllaç s\'obrirà en el vostre navegador. @@ -2865,7 +2852,7 @@ Abasta l\'àrea: %1$s x %2$s Subscripcions Només mostra imatges de 360º Arrenca - "Esteu utilitzant el mapa {0} mitjançant OsmAnd. Voleu iniciar la versió sencera d\'OsmAnd \?" + Esteu utilitzant el mapa {0} mitjançant OsmAnd. Voleu iniciar la versió sencera d\'OsmAnd \? Voleu iniciar OsmAnd\? Guaraní Un botó per canviar entre els modes diürn i nocturn d\'OsmAnd. @@ -3088,7 +3075,7 @@ Abasta l\'àrea: %1$s x %2$s Navegació de tercers Seleccioneu els perfils que voleu que es mostrin a l\'aplicació. Perfils d\'aplicació - Esquí alpí/descens + Esquí alpí i de descens Servei de baixades d\'OsmAnd Magenta Icona @@ -3157,7 +3144,7 @@ Abasta l\'àrea: %1$s x %2$s Utilitza el sensor de proximitat Bicicleta de muntanya, ciclomotor, cavall BRouter (fora de línia) - Esquí nòrdic o de fons + Esquí nòrdic i de fons Pistes per a esquí nòrdic o de fons. Permet les rutes avançades Rutes difícils, amb obstacles perillosos i seccions amb pendents fortes. @@ -3207,8 +3194,8 @@ Abasta l\'àrea: %1$s x %2$s Per defecte Occità Camioneta descoberta - "Ruta: distància %s, durada %s -\nCàlcul: %.1f s, %d vies, %d tessel·les)" + Ruta: distància %s, durada %s +\nCàlcul: %.1f s, %d vies, %d tessel·les) Dia Dies Dies @@ -3375,7 +3362,7 @@ Abasta l\'àrea: %1$s x %2$s Bescanvia %1$s i %2$s Punt d\'inici La traça s\'ha desat - No hi ha nom de fitxer + Nom de fitxer buit Reverteix Voleu netejar %1$s\? Diàlegs i notificacions @@ -3567,7 +3554,7 @@ Abasta l\'àrea: %1$s x %2$s Un botó per mostrar o amagar la capa de terreny al mapa. Mostra el terreny Amaga el terreny - Mostra/amaga el relleu + Mostra o amaga el relleu Ombrejat del relleu Llegenda Nivells de zoom @@ -3741,11 +3728,11 @@ Abasta l\'àrea: %1$s x %2$s Compres OsmAnd Perfils de navegació Amaga el transport públic - Mostra/amaga el transport públic + Mostra o amaga el transport públic Botó que mostra o oculta el transport públic al mapa. - Crea / Edita PDI + Crea o edita PDI Posicions d’aparcament - Afegeix / Edita Preferits + Afegeix o edita preferit Restableix la ordenació dels elements predeterminats Torna a l\'edició A cada instrucció de navegació s\'activarà la pantalla. @@ -3835,7 +3822,7 @@ Abasta l\'àrea: %1$s x %2$s Botó d\'activació • S\'ha actualitzat la funció Planifica una ruta: permet utilitzar diferents tipus de navegació per segments i afegir traces \n -\n • Nou menú Aspecte per les traces: seleccioneu color, gruix, representació de les fletxes de direcció, icones inici/fi +\n • Nou menú Aspecte per les traces: seleccioneu color, gruix, representació de les fletxes de direcció, icones d\'inici i final \n \n • S\'ha millorat la visibilitat dels nodes ciclistes. \n @@ -3858,7 +3845,7 @@ Abasta l\'àrea: %1$s x %2$s Desenvolupament %1$s — %2$s Canvieu el càlcul de rutes de Transport Public a Java (segur) - Icones d\'Inici/Final + Icones d\'inici i final Gràcies per comprar \'Corbes de nivell\' Evita els camins per a vianants Evita els camins per a vianants @@ -3868,7 +3855,7 @@ Abasta l\'àrea: %1$s x %2$s Inicieu la sessió mitjançant OAuth per fer servir les funcionalitats osmedit Inicieu la sessió via OAuth Neteja el testimoni OAuth d\'OpenStreetMap - La sessió s\'ha tancat correctament + Sessió tancada El fitxer ja s\'ha importat a OsmAnd Mapes locals Especial @@ -3881,4 +3868,5 @@ Abasta l\'àrea: %1$s x %2$s Discontinu Proporcioneu la llargada del vostre vehicle, pot haver-hi rutes restringides als vehicles llargs. No s\'ha generat correctament l\'arxiu GPX. Indiqueu-ho a l\'equip de suport per continuar investigant. + Enregistra automàticament la traça durant la navegació \ No newline at end of file From 01a133c2e512f304fff6d7294c36b6aefd73b579 Mon Sep 17 00:00:00 2001 From: ssantos Date: Sat, 21 Nov 2020 15:32:38 +0000 Subject: [PATCH 60/97] Translated using Weblate (Portuguese) Currently translated at 99.2% (3538 of 3564 strings) --- OsmAnd/res/values-pt/strings.xml | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/OsmAnd/res/values-pt/strings.xml b/OsmAnd/res/values-pt/strings.xml index 5cef9b374a..07c9e35cd1 100644 --- a/OsmAnd/res/values-pt/strings.xml +++ b/OsmAnd/res/values-pt/strings.xml @@ -3973,11 +3973,11 @@ Rastreável significa que o rastreamento não aparecerá em nenhuma lista pública, mas os pontos de rastreamento a partir dele ainda estarão disponíveis através da API pública do GPS com carimbos de tempo. Outros utilizadores só poderão descarregar pontos de rastreamento processados do seu rastreamento que não podem ser associados diretamente a si. Fechar nota do OSM Comentário de nota do OSM - Pode entrar a usar o método seguro OAuth ou usar o seu login e palavra-passe. + Faça login a usar o método seguro OAuth ou use o seu nome de utilizador e a palavra-passe. Adicionar fotos Cadastre-se em \nOpenPlaceReviews.org - As fotos são fornecidas pelo projeto de dados abertos OpenPlaceReviews.org. Para enviar as suas fotos precisa cadastrar-se no site. + Faça login no site do projeto de dados abertos OpenPlaceReviews.org para enviar ainda mais fotos. Criar uma conta Já tenho uma conta Histórico de pesquisa @@ -3989,4 +3989,10 @@ Necessário para a importação O seu aparelho só tem %1$s livre. Por favor, libere algum espaço ou desmarque alguns itens para exportar. Não há espaço suficiente + Adicionar ao Mapillary + Adicionar ao OpenPlaceReviews + OsmAnd mostra fotos de várias fontes: +\nOpenPlaceReviews - fotos de POI; +\nMapillary - imagens ao nível da rua; +\nWeb / Wikimedia - fotos de POI especificadas nos dados do OpenStreetMap. \ No newline at end of file From bcbbcbd2ad40763b67326306124b2ce2a256fc59 Mon Sep 17 00:00:00 2001 From: nyqvist Date: Sat, 21 Nov 2020 16:22:28 +0000 Subject: [PATCH 61/97] Translated using Weblate (Swedish) Currently translated at 60.9% (2174 of 3564 strings) --- OsmAnd/res/values-sv/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OsmAnd/res/values-sv/strings.xml b/OsmAnd/res/values-sv/strings.xml index a1bda1b036..c6cd3aca26 100644 --- a/OsmAnd/res/values-sv/strings.xml +++ b/OsmAnd/res/values-sv/strings.xml @@ -2842,7 +2842,7 @@ Vänligen tillhandahåll fullständig kod Mjuk Ytfasthet %s är sparat - Öppet spår + Öppna spår Spår %s är sparat Ta bort mellanrum Överväg tillfälliga begränsningar From 3a39f54cb7a3e3b4b266a2a5804c893f44c7d0d3 Mon Sep 17 00:00:00 2001 From: Samantaz Fox Date: Sun, 22 Nov 2020 18:01:00 +0000 Subject: [PATCH 62/97] Translated using Weblate (French) Currently translated at 99.8% (3558 of 3564 strings) --- OsmAnd/res/values-fr/strings.xml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/OsmAnd/res/values-fr/strings.xml b/OsmAnd/res/values-fr/strings.xml index 189f7afc8e..0bdf9963e6 100644 --- a/OsmAnd/res/values-fr/strings.xml +++ b/OsmAnd/res/values-fr/strings.xml @@ -695,7 +695,7 @@ Dès que possible Public Identifiable - Suivi + Traçable Privé Récupérer le véhicule au parking Avertissement @@ -3951,8 +3951,8 @@ Connectez-vous pour envoyer vos modifications, \n \nsoit avec OAuth soit avec votre identifiant et mot de passe. - Vous pouvez vous connecter avec la méthode sécurisée OAuth ou utiliser votre identifiant et votre mot de passe. - Les photos sont fournies par le projet open data OpenPlaceReviews.org. Pour envoyer vos photos, vous devez au préalable être inscrit sur ce site Web. + Connectez-vous avec la méthode sécurisée OAuth ou utilisez votre identifiant et votre mot de passe. + Connectez-vous au site web du projet OpenPlaceReviews.org pour ajouter des photos. Historique de recherche Kayak Votre appareil n\'a que %1$s disponible. Veuillez libérer de l\'espace ou désélectionner l\'export pour certains éléments. From 964dd69846170e717f9de1cf614d4db1e9799d72 Mon Sep 17 00:00:00 2001 From: Ldm Public Date: Sat, 21 Nov 2020 22:23:22 +0000 Subject: [PATCH 63/97] Translated using Weblate (French) Currently translated at 99.8% (3558 of 3564 strings) --- OsmAnd/res/values-fr/strings.xml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/OsmAnd/res/values-fr/strings.xml b/OsmAnd/res/values-fr/strings.xml index 0bdf9963e6..49838f2f3c 100644 --- a/OsmAnd/res/values-fr/strings.xml +++ b/OsmAnd/res/values-fr/strings.xml @@ -3964,4 +3964,8 @@ L\'espace disponible est insuffisant Ajouter à Mapillary Ajouter à OpenPlaceReviews + OsmAnd affiche des photos de plusieurs sources : +\nOpenPlaceReviews : photos de PI ; +\nMapillary : photos de rue ; +\nWeb / Wikimedia : photos de PI réféfencés dans OpenStreetMap. \ No newline at end of file From fe591a62ba9fce20fa97b5a74354a62e62410142 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?O=C4=9Fuz=20Ersen?= Date: Sun, 22 Nov 2020 10:30:16 +0000 Subject: [PATCH 64/97] Translated using Weblate (Turkish) Currently translated at 100.0% (3564 of 3564 strings) --- OsmAnd/res/values-tr/strings.xml | 80 +++++++++++++++++++++----------- 1 file changed, 54 insertions(+), 26 deletions(-) diff --git a/OsmAnd/res/values-tr/strings.xml b/OsmAnd/res/values-tr/strings.xml index 0f284bf937..4ef8de0e10 100644 --- a/OsmAnd/res/values-tr/strings.xml +++ b/OsmAnd/res/values-tr/strings.xml @@ -535,7 +535,7 @@ Floresan üst katmanlar İzlenen yolları ve rotaları görüntülemek için floresan renkler kullan. Çevrim dışı düzenleme - Her zaman çevrim dışı düzenlemeyi kullanın. + Çevrim dışı düzenleme etkinleştirilirse, değişiklikler önce yerel olarak kaydedilecek ve istek üzerine karşıya yüklenecek, aksi takdirde değişiklikler hemen karşıya yüklenecek. Uygulama içinde POI değişiklikleri indirilen harita dosyalarını etkilemez, bunun yerine değişiklikler cihazınızda bir dosya olarak kaydedilir. Yükleniyor… {0} POI/not karşıya yüklendi @@ -1236,7 +1236,7 @@ Vazgeç seçili Seçimini kaldırın - Tüm Seçimleri Kaldır + Tüm seçimleri kaldır Daralt İzlenen yollar Şu anda kaydedilen yol @@ -1854,7 +1854,7 @@ Şunun için rapor Veri mevcut değil Durum - Değişiklikleri Kaydet + Değişiklikleri kaydet E-posta adresi Yeraltı nesneleri Devamını oku @@ -1943,7 +1943,7 @@ Uygulamanın şimdi harici depolamaya yazma izni var, ancak bunu yapmak için yeniden başlatılması gerekir. Tam rapor OSM kullanıcı adı ve parolası - Dosya adı geçersiz karakter içermektedir + Dosya adında geçersiz karakter 7/24 açık Bellek kartı Koordinat biçimi @@ -2805,7 +2805,7 @@ POI etiketleri Yarın şu saatte açılıyor Kapalı notları göster - Haritada OSM notlarını göster/gizle. + Haritada OSM notlarını göster veya gizle. GPX - JOSM veya diğer OSM düzenleyicilerine aktarmak için uygundur. OSC - OSM\'ye aktarmak için uygundur. OSC dosyası @@ -3156,7 +3156,7 @@ Sık Kullanılanları içe aktarın veya haritadaki noktaları işaretleyerek ekleyin. GPX dosyasını içe aktar %1$s dosyası ara noktalar içermiyor, izlenen yol olarak içe aktar\? - Hareket Noktası + Noktayı Taşı OSM alıcıları Toplam bağış kapalı @@ -3186,9 +3186,9 @@ Gündüz/gece modunu değiştir Parke veya kaldırım taşı yok \'Hızlı eylem\' ayarlarında listeye en az bir öge ekleyin - Alp/yokuş aşağı kayak + Alp ve yokuş aşağı kayak Alp veya yokuş aşağı kayak ve kayak teleferiklerine erişim için yamaçlar. - Kros/İskandinav kayak + Kros ve İskandinav kayak İskandinav veya kros kayağı pistleri. Kayak turu Kayak turu rotaları. @@ -3322,7 +3322,7 @@ Başlangıç noktası Bilinmeyen yol türleri için varış zamanını tahmin eder ve tüm yollar için hızı sınırlar (güzergahı etkileyebilir) Yol izi kaydedildi - Dosya adı boş + Boş dosya adı Eski haline döndür Ekranın, kalkış noktasını ortalamasını sağlamak için bir düğme. Daha sonra hedef belirlemeyi veya rota hesaplamasını tetiklemeyi isteyecektir. Düğüm ağı bisiklet rotalarını göster @@ -3384,7 +3384,7 @@ Kullanıcı adı ve parola Bu eklenti ayarları geneldir ve tüm profiller için geçerlidir OSM düzenleme - Yüklenmemiş tüm düzenlemelerinizi veya OSM hatalarınızı %1$s\'de görüntüleyebilirsiniz. Karşıya yüklenen noktalar OsmAnd\'da gösterilmez. + Henüz karşıya yüklenmemiş tüm düzenlemelerinizi veya OSM hatalarınızı %1$s\'de görüntüleyebilirsiniz. Karşıya yüklenen noktalar OsmAnd\'da gösterilmez. OSM Navigasyon sırasında veya harekete halindeyken gösterilen simge. Dinlenme anında gösterilen simge. @@ -3495,7 +3495,7 @@ Hepsini değiştir Her ikisini de sakla İçe aktarılan ögelere ön ek eklenecek - OsmAnd\'da içe aktarılanlarla aynı isme sahip ögeler zaten var. + OsmAnd\'da içe aktarılanlarla aynı ada sahip ögeler zaten var. \n \nBir eylem seçin. Bazı ögeler zaten var @@ -3532,7 +3532,7 @@ Güzergahtan geçerli konuma olan mesafe seçilen değerden fazla ise güzergah yeniden hesaplanacaktır. %1$s / %2$s Yamaçlar - Araziyi göster / gizle + Araziyi göster veya gizle Araziyi gizle Araziyi göster Haritada arazi katmanını göstermek veya gizlemek için bir düğme. @@ -3650,11 +3650,11 @@ Bu eylemlere “%1$s” düğmesine dokunarak erişebilirsiniz. Toplu taşıma araçlarını gizle Toplu taşıma araçlarını göster - Toplu taşıma araçlarını göster/gizle + Toplu taşıma araçlarını göster veya gizle Haritada toplu taşıma araçlarını gösteren veya gizleyen düğme. - POI Oluştur / Düzenle + POI oluştur veya düzenle Park etme alanları - Sık Kullanılan Ekle / Düzenle + Sık kullanılan ekle veya düzenle Öntanımlı öge sıralamasını geri yükle Düzenlemeye geri dön Eylem düğmesi seçilen profiller arasında geçiş yapar. @@ -3779,7 +3779,7 @@ Bitti Yolun üzerine yaz Ardından, bu seçeneği kullanmak için navigasyon profillerinizden biriyle izlenen yolunuzu izin verilen en yakın yola tutturun. - Yeni bir yol olarak kaydet + Yeni bir izleme olarak kaydet 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. @@ -3811,7 +3811,7 @@ Yol dosyası olarak kaydet %s yol dosyası seçildi (Son uygulamalar aracılığıyla) uygulama kapatıldığında yol kaydını duraklatacaktır. (OsmAnd arka plan göstergesi Android bildirim çubuğundan kaybolur.) - Genel yol kaydı için kayıt aralığını seçin (haritadaki seyahat kayıt widget\'ı aracılığıyla etkin). + Genel yol kaydı için kayıt aralığını belirtin (haritadaki \'Seyahat kaydetme\' widget\'ı aracılığıyla açıldı). Seyahat kaydetmeyi duraklat Seyahat kaydetmeyi devam ettir En yakın nokta @@ -3843,7 +3843,7 @@ Basitleştirilmiş yol • Güzergah planlama işlevi güncellendi: her bölüm için farklı navigasyon türlerinin kullanılmasına ve izlenen yolların dahil edilmesine izin veriliyor \n -\n • İzlenen yollar için yeni görünüm menüsü: renk ve kalınlık seçimi, yön oklarının gösterilmesi, başlangıç/bitiş simgeleri +\n • İzlenen yollar için yeni görünüm menüsü: renk ve kalınlık seçimi, yön oklarının gösterilmesi, başlangıç ve bitiş simgeleri \n \n • Bisiklet düğümlerinin görünürlüğü iyileştirildi. \n @@ -3859,7 +3859,7 @@ Son değiştirme İsim: Z – A İsim: A – Z - Başlangıç/bitiş simgeleri + Başlangıç ve bitiş simgeleri \'Eş yükselti eğrileri\'ni satın aldığınız için teşekkürler Abonelik seçilen dönem başına ücretlendirilir. İstediğiniz zaman AppGallery\'den iptal edin. Ödeme, satın alma onaylandığında AppGallery hesabınızdan alınacaktır. @@ -3877,10 +3877,10 @@ Yerel Toplu Taşıma geliştirme Java (güvenli) Toplu Taşıma yönlendirme hesaplamasına geçin Yenilikler - osmedit özelliklerini kullanmak için OAuth oturum açma işlemi gerçekleştirin + osmedit özelliklerini kullanmak için OAuth ile oturum açın OAuth ile oturum aç OpenStreetMap OAuth belirtecini temizle - Oturum kapatma başarılı + Oturum kapatıldı Dosya zaten OsmAnd\'da içe aktarıldı 2 aşamalı A* yönlendirme algoritması kullan Ayrılmış yollar ve parkurlarla kar arabası sürüşü için. @@ -3903,12 +3903,12 @@ Acil Seyahat En az iki nokta eklemelisiniz - OpenStreetMap\'te oturum aç - OpenStreetMap.org\'da oturum aç - Yenilikleri veya değişiklikleri karşıya yüklemek için oturum açmanız gerekir. + OpenStreetMap için oturum aç + OpenStreetMap.org için oturum aç + Yenilikleri veya değişiklikleri karşıya yüklemek için oturum açın, \n -\nGüvenli OAuth yöntemini kullanarak oturum açabilir veya kullanıcı adı ve parolanızı kullanabilirsiniz. - Kullanıcı adı ve parola kullan +\nOAuth ile oturum açabilir veya kullanıcı adı ve parolanızı kullanabilirsiniz. + Kullanıcı adı ve parola ile oturum aç Kullanıcı adı Hesap Aboneliği yönet @@ -3920,4 +3920,32 @@ İşaretleyiciler geçmişi GPX dosyasını OpenStreetMap\'e gönder Virgülle ayrılmış etiketleri girin. + \"Genel\", izlemenin GPS izlerinizde ve genel GPS izleme listelerinde herkese açık olarak ve ham biçimde zaman damgalarıyla birlikte genel izleme listesinde gösterileceği anlamına gelir. API aracılığıyla sunulan veriler, izleme sayfanızı göstermez. İzleme noktası zaman damgaları, genel GPS API\'si aracılığıyla kullanılamaz ve izleme noktaları kronolojik olarak sıralanmaz. + \"Özel\", izlemenin herkese açık herhangi bir listede gösterilmediği, ancak ondan alınan izleme noktalarının zaman damgası olmadan genel GPS API\'si aracılığıyla eşzamanlı olmayan sırada kullanılabileceği anlamına gelir. + \"Teşhis edilebilir\", izlemenin GPS izlerinizde ve genel GPS izleme listelerinde herkese açık olarak gösterileceği anlamına gelir, yani diğer kullanıcılar ham izi indirebilir ve kullanıcı adınızla ilişkilendirebilir. İzleme noktaları API\'si aracılığıyla sunulan GPS API\'sinden alınan herkese açık zaman damgalı izleme noktası verileri, orijinal izleme sayfanızı gösterecektir. + \"Takip edilebilir\", izlemenin herkese açık herhangi bir listede gösterilmediği, ancak (sizinle doğrudan ilişkilendirilemeyen) zaman damgaları olan işlenen izleme noktalarının herkese açık GPS API\'sinden indirmeler yoluyla göründüğü anlamına gelir. + OSM Notunu Kapat + OSM Notuna Yorum Yap + Güvenli OAuth yöntemini kullanarak oturum açın veya kullanıcı adınızı ve parolanızı kullanın. + Fotoğraf ekle + OpenPlaceReviews.org\'a +\nkaydolun + Daha da fazla fotoğraf yüklemek için açık veri projesi web sitesi OpenPlaceReviews.org\'da oturum açın. + Yeni hesap oluştur + Zaten bir hesabım var + Arama geçmişi + Kano + Motorlu tekne + Mapillary\'ye ekle + OpenPlaceReviews\'a ekle + OsmAnd çeşitli kaynaklardan fotoğraflar gösterir: +\nOpenPlaceReviews - POI fotoğrafları; +\nMapillary - sokak seviyesi görüntüleri; +\nİnternet / Wikimedia - OpenStreetMap verilerinde belirtilen POI fotoğrafları. + Kaynaklar + Yaklaşık dosya boyutu + Dosyaya aktarılacak verileri seçin. + İçe aktarma için gerekli + Aygıtınızda yalnızca %1$s boş alan var. Lütfen biraz alan boşaltın veya dışa aktarılacak bazı ögelerin seçimini kaldırın. + Yeterli alan yok \ No newline at end of file From 5bbbfea687e5f8c394efa3d47b9cf8d46a204ab1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Babos=20G=C3=A1bor?= Date: Fri, 20 Nov 2020 20:03:00 +0000 Subject: [PATCH 65/97] Translated using Weblate (Hungarian) Currently translated at 99.9% (3563 of 3564 strings) --- OsmAnd/res/values-hu/strings.xml | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/OsmAnd/res/values-hu/strings.xml b/OsmAnd/res/values-hu/strings.xml index 046855440d..db7ac30daa 100644 --- a/OsmAnd/res/values-hu/strings.xml +++ b/OsmAnd/res/values-hu/strings.xml @@ -3917,7 +3917,7 @@ Az OSM-szerkesztési funkciók használatához jelentkezzék be az OAuth segítségével Bejelentkezés OAuth segítségével OpenStreetMap OAuth token törlése - Sikeresen kijelentkezett + Kijelentkezett Kétszakaszos A* útvonaltervezési algoritmus használata A fájl már importálva van az OsmAndba %1$s - %2$s @@ -3951,12 +3951,12 @@ Az OsmAnd Live-előfizetés szünetel Az OsmAnd Live-előfizetés lejárt Probléma van az előfizetésével. A fizetési mód kijavítása érdekében kattintson a gombra a Google Play előfizetési beállításaihoz történő ugráshoz. - Bejelentkezés + Felhasználónév Fiók - Fióknév és jelszó használata - Az új vagy módosított szerkesztések feltöltéséhez be kell jelentkeznie. + Bejelentkezés felhasználónévvel és jelszóval + Új vagy módosított szerkesztések feltöltéséhez jelentkezzék be \n -\nBejelentkezhet a biztonságos OAuth-módszerrel vagy használhatja fióknevét és jelszavát. +\naz OAuth segítségével vagy felhasználónevével és jelszavával. Bejelentkezés OpenStreetMap-fiókkal Bejelentkezés az OpenStreetMapre Bejelentkezés az OpenStreetMap.org-ra @@ -3966,10 +3966,22 @@ Fénykép hozzáadása Regisztráció az \nOpenPlaceReviews.org oldalon - A fényképeket a OpenPlaceReviews.org nyílt adatprojekt biztosítja. Saját fényképei feltöltéséhez be kell jelentkeznie a weboldalon. + Még több fénykép feltöltéséhez jelentkezzék be az OpenPlaceReviews.org nyílt adatprojekt weboldalára. Új fiók létrehozása Már van fiókom Motorcsónak Kajak Keresési előzmények + Források + Hozzáadás a Mapillaryhez + Hozzáadása az OpenPlaceReviewshoz + Az OsmAnd több forrásból jelenít meg fényképeket: +\nOpenPlaceReviews – POI-fotók; +\nMapillary – utcaszintű képek; +\nWeb / Wikimedia – az OpenStreetMap-adatokban meghatározott POI-fotók. + Hozzávetőleges fájlméret + Jelölje ki a fájlba exportálandó adatokat. + Szükséges az importáláshoz + A készülékén csak %1$s szabad hely van. Szabadítson fel valamennyi helyet, vagy szüntesse meg néhány exportálandó elem kijelölését. + Nincs elég hely \ No newline at end of file From 33b3698e720c12040d13f7e03348e7deca2a1adf Mon Sep 17 00:00:00 2001 From: Mirco Zorzo Date: Sun, 22 Nov 2020 18:16:39 +0000 Subject: [PATCH 66/97] Translated using Weblate (Italian) Currently translated at 89.0% (3175 of 3564 strings) --- OsmAnd/res/values-it/strings.xml | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/OsmAnd/res/values-it/strings.xml b/OsmAnd/res/values-it/strings.xml index f7bb74d54c..1f40937ddc 100644 --- a/OsmAnd/res/values-it/strings.xml +++ b/OsmAnd/res/values-it/strings.xml @@ -3979,4 +3979,16 @@ \"Privato\" significa che la traccia non è visualizzabile in alcuna lista pubblica ma i suoi punti, in ordine non cronologico, sono disponibili attraverso le API GPS senza le informazioni temporali. \"Identificabile\" significa che la traccia è visualizzabile nelle Mie tracce GPS e nelle liste pubbliche, es. gli altri utenti potranno scaricare la traccia grezza e associarla con il tuo nome utente. I punti della traccia, con le loro informazioni temporali, saranno riconducibili, attraverso le API GPS, alla tua traccia originale. \"Tracciabile\" significa che la traccia non è visualizzabile in alcuna lista pubblica, ma solo i suoi punti, processati, con le informazioni temporali (che non possono essere direttamente associati a te) attraverso le API GPS pubbliche. + Aggiungi a Mapillary + Aggiungi a OpenPlaceReviews + OsmAnd mostra foto da più sorgenti: +\nOpenPlaceReviews - foto PDI; +\nMapillary - immagini stradali; +\nWeb / Wikimedia - foto PDI OpenStreetMap. + Risorse + Dimesione approssimativa del file + Seleziona i dati da esportare nel file. + Necessario per l\'importazione + Il tuo dispositivo ha solo %1$s liberi. Libera dello spazio i deseleziona alcune voci da esportare. + Non c\'è abbastanza spazio \ No newline at end of file From 1f9b6d1ee16dce1467187cdbcfcdd918b8d8b0d7 Mon Sep 17 00:00:00 2001 From: cha-tzi Date: Sun, 22 Nov 2020 11:49:11 +0000 Subject: [PATCH 67/97] Translated using Weblate (Greek) Currently translated at 95.2% (3393 of 3564 strings) --- OsmAnd/res/values-el/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OsmAnd/res/values-el/strings.xml b/OsmAnd/res/values-el/strings.xml index 9ef59f2e76..780a4d0fef 100644 --- a/OsmAnd/res/values-el/strings.xml +++ b/OsmAnd/res/values-el/strings.xml @@ -3264,7 +3264,7 @@ Οι φωνητικές ανακοινώσεις να γίνονται μόνο κατά την πλοήγηση. Οδηγίες πλοήγησης και ανακοινώσεις Φωνητικές ανακοινώσεις - Οπτικές προειδοποιήσεις + Προειδοποιήσεις οθόνης Ρύθμιση παραμέτρων διαδρομής Παράμετροι διαδρομής Εκτιμά τον χρόνο άφιξης αγνώστων τύπων δρόμων και περιορίζει την ταχύτητα σε όλους τους δρόμους (μπορεί να επηρεάσει τη διαδρομή) From bbbc49d2077ccede726fc64357f24675027bedea Mon Sep 17 00:00:00 2001 From: ace shadow Date: Sat, 21 Nov 2020 22:01:07 +0000 Subject: [PATCH 68/97] Translated using Weblate (Slovak) Currently translated at 99.8% (3560 of 3564 strings) --- OsmAnd/res/values-sk/strings.xml | 32 ++++++++++++++++++++++---------- 1 file changed, 22 insertions(+), 10 deletions(-) diff --git a/OsmAnd/res/values-sk/strings.xml b/OsmAnd/res/values-sk/strings.xml index 2b246edb29..2e0a815d55 100644 --- a/OsmAnd/res/values-sk/strings.xml +++ b/OsmAnd/res/values-sk/strings.xml @@ -3922,10 +3922,10 @@ Natívna hromadná doprava (vo vývoji) Prepnúť na výpočet trasy hromadnej dopravy v Jave (bezpečné) Čo je nové - Vykonať prihlásenie cez OAuth pre použitie funkcií upravovania OSM + Prihláste sa cez OAuth pre použitie funkcií upravovania OSM Prihlásiť pomocou OAuth Vymazať token OpenStreetMap OAuth - Odhlásenie úspešné + Odhlásené Pre jazdu na snežnom vozidle po na to určených cestách. Súbor je už importovaný v OsmAnd Použiť dvojfázový algoritmus A* na výpočet trasy @@ -3953,13 +3953,13 @@ Predplatné OsmAnd Live skončilo Predplatné OsmAnd Live je pozastavené Predplatné OsmAnd Live je zablokované - Prihlásiť sa do OpenStreetMap - Prihlásiť sa do OpenStreetMap.org - Zaregistrovať sa do OpenStreetMap - Musíte sa prihlásiť pre odoslanie nových alebo zmenených údajov. + Prihlásenie pre OpenStreetMap + Prihlásenie pre OpenStreetMap.org + Prihlásiť sa do OpenStreetMap + Prihláste sa pre odoslanie nových alebo zmenených údajov, \n -\nMôžete sa prihlásiť pomocou bezpečnej metódy OAuth alebo pomocou mena a hesla. - Použiť meno a heslo +\nbuď pomocou metódy OAuth alebo pomocou mena a hesla. + Prihlásiť sa menom a heslom Účet Prihlasovacie meno História značiek @@ -3967,14 +3967,26 @@ Zadajte značky oddelené čiarkou. Zatvoriť OSM poznámku Komentovať OSM poznámku - Môžete sa prihlásiť bezpečnou metódou OAuth alebo použite meno a heslo. + Prihláste sa bezpečnou metódou OAuth alebo použite meno a heslo. Pridať foto Zaregistrovať na \nOpenPlaceReviews.org - Fotografie sú poskytované projektom OpenPlaceReviews.org s otvorenými dátami. Na odoslanie vašich fotiek sa musíte zaregistrovať na webovej stránke. + Prihláste sa na webstránke projektu OpenPlaceReviews.org s otvorenými dátami pre odoslanie ďalších fotografií. Vytvoriť nový účet Už mám účet História hľadania Kajak Motorový čln + Pridať do Mapillary + Pridať do OpenPlaceReviews + OsmAnd szobrazuje fotografie z rôznych zdrojov: +\nOpenPlaceReviews - fotografie bodov záujmu; +\nMapillary - fotografie z ulice; +\nWeb / Wikimedia - fotografie bodov záujmu špeficikované v údajoch OpenStreetMap. + Zdroje + Približná veľkosť súboru + Zvoľte údaje na export do súboru. + Potrebné pre import + Na vašom zariadení je len %1$s voľného miesta. Prosím uvoľnite miesto alebo zrušte niektoré položky z exportu. + Nie je dostatok miesta \ No newline at end of file From 2e1793aa5f389a2942ac64c228b349a32a323f2c Mon Sep 17 00:00:00 2001 From: D M Date: Sat, 21 Nov 2020 17:53:11 +0000 Subject: [PATCH 69/97] Translated using Weblate (Serbian) Currently translated at 96.7% (3449 of 3564 strings) --- OsmAnd/res/values-sr/strings.xml | 29 ++++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/OsmAnd/res/values-sr/strings.xml b/OsmAnd/res/values-sr/strings.xml index e0ac87a53f..c96a4e09e4 100644 --- a/OsmAnd/res/values-sr/strings.xml +++ b/OsmAnd/res/values-sr/strings.xml @@ -3865,8 +3865,35 @@ Промените врсту руте након Шта је ново Име фајла - + Паузирај снимање пута Додајте бар две тачке. Одјава успешна + „Приватно“ значи да се траг не појављује ни на једној јавној листи, али су тачке праћења у њему у нехронолошком редоследу доступне путем јавног ГПС АПИ-ја без временских ознака. + „Могуће је идентификовати“ значи да ће се траг јавно приказати у вашим ГПС траговима и у јавним списковима ГПС трагова, тј. други корисници ће моћи да преузму необрађени траг и повежу га са вашим корисничким именом. Јавни подаци о временским тачкама трага из ГПС АПИ-ја који се сервирају путем АПИ-ја за тачке праћења имаће референцу на вашу оригиналну страницу праћења. + „Следљиво“ значи да се траг не приказује нигде на јавним листама, али обрађене тачке праћења са временским ознакама у њима (које не могу бити директно повезане са вама) иду кроз преузимања са јавног ГПС АПИ-ја. + Затвори ОСМ белешку + Коментар ОСМ напомене + Пријавите се помоћу сигурне методе ОАутх или користите своје корисничко име и лозинку. + Додај фотографију + Региструјте се на +\nOpenPlaceReviews. + Пријавите се на веб локацију пројекта отворених података OpenPlaceReviews.орг да бисте отпремили још више фотографија. + Направите нови налог + Већ имам + Претрага + Кајак + Моторни чамац + Додај у Мапилари + Додај у ОпенПлејсРевјуз + ОсмАнд приказује фотографије из неколико извора: +\nОпенПлејсРевјуз - ПОИ фотографије; +\nМапилари - слике на нивоу улице; +\nВеб / Викимедиа - ПОИ фотографије наведене у подацима ОпенСтритМап. + Ресурси + Приближна величина датотеке + Изаберите податке за извоз у датотеку. + Потребно за увоз + Уређај има слободно само %1$s. Ослободите мало простора или поништите одабир неких предмета за извоз. + Нема довољно простора \ No newline at end of file From 2e96c25b08b97c11a926a44f830b21c97e092c4c Mon Sep 17 00:00:00 2001 From: Guntis Ozols Date: Sun, 22 Nov 2020 12:18:09 +0000 Subject: [PATCH 70/97] Translated using Weblate (Latvian) Currently translated at 62.7% (2237 of 3564 strings) --- OsmAnd/res/values-lv/strings.xml | 35 +++++++++++++++++++++++++------- 1 file changed, 28 insertions(+), 7 deletions(-) diff --git a/OsmAnd/res/values-lv/strings.xml b/OsmAnd/res/values-lv/strings.xml index e505fe8b91..2c392c4614 100644 --- a/OsmAnd/res/values-lv/strings.xml +++ b/OsmAnd/res/values-lv/strings.xml @@ -3212,7 +3212,7 @@ No Afganistānas līdz Zimbabvei, no Austrālijas līdz ASV, Argentīna, Brazīl Maršruta pārrēķināšana Paziņošana Lietotāja vārds un parole - Šie iestatījumi darbosies visos profilos. + Šie iestatījumi ir globāli un darbosies visos profilos OSM rediģēšana Skatiet vēl neaugšupielādētos labojumus vai OSM kļūdas %1$s mapē. Augšupielādētie punkti vairs netiks rādīti. OSM @@ -3278,13 +3278,13 @@ No Afganistānas līdz Zimbabvei, no Austrālijas līdz ASV, Argentīna, Brazīl Ārkārtas Ceļošana Nepieciešams pievienot vismaz divus punktus - Ieiet OpenStreetMap - Ieiet OpenStreetMap.org + Pierakstīties OpenStreetMap + Pierakstīties OpenStreetMap.org Pierakstīties ar OpenStreetMap Lai sūtītu labojumus vai jaunus datus, ir nepieciešams pierakstīties. \n -\nJūs varat pierakstīties, lietojot drošo OAuth metodi vai ar savu lietotāja vārdu un paroli. - Lietot pierakstīšanās datus +\nJūs varat pierakstīties, lietojot OAuth vai ar savu lietotāja vārdu un paroli. + Pierakstīties ar lietotāja vādu un paroli Konts Lietotājs Pārvaldīt abonomentu @@ -3297,10 +3297,31 @@ No Afganistānas līdz Zimbabvei, no Austrālijas līdz ASV, Argentīna, Brazīl Ievadiet tagus, atdalītus ar komatu. Aizvērt OSM Note Komentēt OSM Note - Jūs varat ielogoties lietojot drošo OAuth metodi vai savu lietotāja vārdu un paroli. + Ielogojieties lietojot drošo OAuth metodi vai savu lietotāja vārdu un paroli. Pievienot foto Reģistrēties \nOpenPlaceReviews.org - Fotogrāfijas tiek piegādātas no atvērtā koda projekta OpenPlaceReviews.org. Lai pievienotu savas fotogrāfijas, nepieciešams reģistrēties šajā interneta vietnē. + Lai augšupielādētu vēl fotogrāfijas, ielogojieties atvērtā koda projekta OpenPlaceReviews.org vietnē. Izveidot jaunu kontu + Simboli + Sports + \"Privāts\" nozīmē, ka trase neparādīsies nevienā publiskā sarakstā, bet trases punkti nehronoloģiskā secībā būs pieejami caur publisko GPS API bez laika atzīmēm. + \"Identificējams\" nozīmē, ka trase būs redzama jūsu GPS trasēs un publiskajos GPS trašu sarakstos, t.i. citi lietotāji varēs lejupielādēt trasi un asociēt to ar jūsu vārdu. Publiskie trases punktu dati ar laika atzīmēm no GPS API caur trackpoints API dos referenci uz jūsu oriģinālo trases lapu. + \"Izsekojams\" nozīmē, ka pati trase neparādās publiskajos sarakstos, bet tikai apstrādātie trackpointi ar laika atzīmēm (nevar tikt asociēti konkrēti ar jums) caur lejupielādēm no publiskā GPS API. + Man jau ir konts + Meklēšanas vēsture + Kajaks + Motorlaiva + Pievienot Mapillary + Pievienot OpenPlaceReviews + OsmAnd rāda attēlus no dažādiem avotiem: +\nOpenPlaceReviews - POI bildes; +\nMapillary - ielas līmeņa attēli; +\nWeb / Wikimedia - POI bildes no OpenStreetMap datiem. + Resursi + Aptuvenais faila izmērs + Izvēlieties datus eksportēšanai failā. + Nepieciešams importam + Ierīcē ir tikai %1$s brīvās vietas. Lūdzu atbrīvojiet vietu vai izvēlieties mazāk detaļu eksportam. + Nepietiek brīvās vietas \ No newline at end of file From 84abe75ed092be6f3325f656255c519b61470758 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pavel=20Kotr=C4=8D?= Date: Sat, 21 Nov 2020 11:01:02 +0000 Subject: [PATCH 71/97] Translated using Weblate (Czech) Currently translated at 90.6% (3232 of 3564 strings) --- OsmAnd/res/values-cs/strings.xml | 174 +++++++++++++++++-------------- 1 file changed, 93 insertions(+), 81 deletions(-) diff --git a/OsmAnd/res/values-cs/strings.xml b/OsmAnd/res/values-cs/strings.xml index c23e4be8e6..4b67dca251 100644 --- a/OsmAnd/res/values-cs/strings.xml +++ b/OsmAnd/res/values-cs/strings.xml @@ -2269,7 +2269,7 @@ Zobrazená oblast: %1$s x %2$s Změňte vyhledávací dotaz nebo zvětšete okruh hledání. Přepnout zobrazení poznámek OSM Oprávnění - OsmAnd nemůže naimportovat soubor. Prosím zkontrolujte, zda má oprávnění číst soubor z tohoto umístění. + Nepodařilo se naimportovat soubor. Prosím zkontrolujte, zda má OsmAnd oprávnění ke čtení souboru. Vzdálenost opravená Obrázek Mapillary Otevřít Mapillary @@ -2307,10 +2307,10 @@ Zobrazená oblast: %1$s x %2$s Max/Min Min/Max Pozastavit/pokračovat v navigaci - Stiskněte toto tlačítko na pozastavení, nebo pokračování navigace. + Tlačítko pro pozastavení nebo pokračování navigace. Zobrazit zprávu \"Navigace ukončena\" Spustit/ukončit navigaci - Stiskněte toto tlačítko pro spuštění, nebo zastavení navigace. + Tlačítko pro spuštění nebo zastavení navigace. Průhledná růžová Prosím přidejte alespoň jeden bod. Název souboru GPX: @@ -2348,7 +2348,7 @@ Zobrazená oblast: %1$s x %2$s Indikace vzdálenosti Seřadit podle Bez animací - Zakáže animace v aplikaci. + Vypne animace mapy. Stále zobrazovat na mapě Ukončit bez uložení? Práh pro změnu orientace mapy @@ -2365,7 +2365,7 @@ Zobrazená oblast: %1$s x %2$s Posledních 7 dní Tento rok Použít umístění - Přidat svou polohu jako startovní bod do plánu ideální trasy. + Přidejte svou polohu jako počáteční bod do plánu ideální trasy. Moje poloha Dokončit Naplánovat trasu @@ -2377,24 +2377,24 @@ Zobrazená oblast: %1$s x %2$s Zobrazit vodicí čáry Zobrazit šipky na mapě Odebrat z mapových značek - sestupně - vzestupně - Datum přidání + Z-A + A-Z + Přidáno Seřadit podle: Značky Formát souřadnic Použít systémovou klávesnici - Zvolte formát souřadnicového vstupu. Můžete ho kdykoli změnit klepnutím na \'Možnosti\'. + Zvolte formát zadávání souřadnic. Můžete ho kdykoliv změnit klepnutím na \'Nastavení. Rychlé zadávání souřadnic - Vyhnout brodům a ledovým cestám - Povede trasu mimo brody a ledové cesty. + Žádné ledové cesty a brody + Vyhne se ledovým cestám a brodům. Zobrazit prošlé Skrýt prošlé - Vyberte, jak ukazovat vzdálenost a směr k mapovým značkám na obrazovce mapy: - Nepodařilo se změnit poznámku + Zvolte, jak se bude zobrazovat vzdálenost a směr k mapovým značkám na mapě: + Nepodařilo se změnit poznámku. Upravit poznámku Upravit poznámku OSM - Přidat počáteční bod také jako cíl pro vytvoření okruhu. + Přidat kopii počátečního bodu jako cíl. Vytvořit okružní trasu Může být importováno jako Oblíbené nebo jako GPX soubor. Importovat jako soubor GPX @@ -2431,7 +2431,7 @@ Zobrazená oblast: %1$s x %2$s Zobrazit vodicí čáry od vaší polohy k aktivním značkám. Zobrazit jednu nebo dvě šipky označující směr k aktivním značkám. Zvolte způsob zobrazení vzdálenosti k aktivním značkám. - Zvolte, kolik ukazatelů směru se má zobrazit. + Zadejte počet ukazatelů směru. Počet desetinných míst Vpravo Vlevo @@ -2442,19 +2442,19 @@ Zobrazená oblast: %1$s x %2$s Klepnutí na mapu přepne ovládací tlačítka a nástroje. Režim celé obrazovky Označit prošlé - Vytvořit nebo upravit OSM POI, otevřít nebo okomentovat OSM poznámky a přispět zaznamenanými GPX soubory. + Vytvořit nebo upravit body zájmu OSM, otevřít nebo okomentovat OSM poznámky a přispět zaznamenanými GPX soubory. Odstraněné Upravené Přidané Značka %s aktivována. Klepněte na značku na mapě pro její přesunutí na první místo v aktivních značkách bez otevření kontextové nabídky. Dělejte si poznámky! - Přidejte audio, video nebo fotografickou poznámku pro každý bod na mapě, pomocí nástroje nebo kontextového menu. - Poznámky podle datumu + Přidejte audio, video nebo fotografické poznámky pro libovolný bod na mapě, pomocí nástroje nebo kontextového menu. + Multimediální poznámky podle data Podle datumu Podle typu Klepnutím nebo přidržením označte \'Místa\', pak klepněte na tlačítko značky s vlajkou. - Upravit vyhledávací dotaz. + Změňte vyhledávací dotaz. Funkce \"Jedním stiskem\" je aktivní Popisky bodů Bez názvu @@ -2482,13 +2482,13 @@ Zobrazená oblast: %1$s x %2$s Počet úprav %1$s, součet %2$s mBTC Laosky Zobrazit zavřené poznámky - Zobrazit/Skrýt OpenStreetMap poznámky na mapě. + Zobrazit nebo skrýt OpenStreetMap poznámky na mapě. GPX - vhodné pro export do JOSM nebo jiných editorů OSM. - OSC - vhodné pro export do OpenStreetMap. + OSC - vhodné pro export do OSM. Soubor GPX Soubor OSC Zvolte typ souboru - Vyberte typ exportu: OSM poznámky, POI nebo obojí. + Exportujte jako OSM poznámky, body zájmu, nebo obojí. Všechny údaje OSM poznámky Zadejte název souboru. @@ -2524,8 +2524,8 @@ Zobrazená oblast: %1$s x %2$s Volitelný název bodu Nejbližší trasy v okruhu V okruhu - Vzdálenost: nejvzdálenější jako první - Vzdálenost: nejbližší jako první + Nejvzdálenější jako první + Nejbližší jako první Divoká voda GPS navigace \n• Vyberte si mezi offline režimem (bez roamingových poplatků v zahraničí) a online režimem (rychlejší) @@ -2658,7 +2658,7 @@ Zobrazená oblast: %1$s x %2$s Odemknout všechny funkce OsmAnd Vyberte si předplatné Chcete-li dostávat offline články o cestování, je třeba koupit jednu z následujících položek: - Vyberte vhodnou položku: + Vyberte vhodnou položku Nedělat Dělat Pouze na WiFi @@ -2675,7 +2675,7 @@ Zobrazená oblast: %1$s x %2$s Cestovní průvodce Wikivoyage Článek odstraněn - Vyhledávání: stát, město, kraj + Hledejte stát, město nebo kraj Číst Články v záložkách Prozkoumat @@ -2693,8 +2693,8 @@ Zobrazená oblast: %1$s x %2$s Stáhnout soubor Začít s úpravami Získejte neomezený přístup - Aktualizace map: každý měsíc - Aktualizace map: každou hodinu + Aktualizace map každý měsíc + Aktualizace map každou hodinu Stáhnout články Wikipedie pro %1$s a číst je v režimu offline. Stahování dat z Wikipedie Otevřít článek online @@ -2718,9 +2718,9 @@ Zobrazená oblast: %1$s x %2$s Upravit akce Získejte OsmAnd Live pro odemknutí všech funkcí: Denní aktulizace mapových podkladů s neomezeným počtem stahování, všechny placené moduly, propojení s Wikipedia, Wikivoyage a mnoho dalšího. Děkujeme za Vaši zpětnou vazbu - Na Váš dotaz nebylo nic nalezeno. - Žádný výsledek vyhledávání? -\nDejte nám o tom vědět, ať to můžeme zlepšit + Bod nebo cesta nebyly nalezeny. + Žádný výsledek vyhledávání\? +\nPoskytněte nám zpětnou vazbu • Navigace: Opravený indikátor průběhu, přidána možnost pro rychlé prohození začátku a konce trasy \n \n • Mapové značky: Opravena možnost zapnutí/vypnutí skupin, nově možnost skrýt značky na mapě @@ -2737,8 +2737,9 @@ Zobrazená oblast: %1$s x %2$s \n Odesílání cesty… Zvětšit okruh hledání na %1$s - Bude odeslán váš dotaz pro vyhledávání: \"%1$s\" a také vaše poloha. \n - \n Nedochází k žádnému shromažďování osobních údajů. Zaslaná data slouží pouze k vylepšení vyhledávacího algoritmu. + Váš vyhledávací dotaz a poloha budou odeslány na: \"%1$s\". +\n +\n Nedochází k žádnému shromažďování osobních údajů. Zaslaná data slouží pouze k vylepšení vyhledávacího algoritmu. Odeslat data? Celý svět Bod %1$s byl smazán @@ -2748,7 +2749,7 @@ Zobrazená oblast: %1$s x %2$s Bylo přidáno %1$s bodů. Zadejte název a klepněte na \"Uložit\". Upravený základní styl pro zvýšení kontrastu pěších a cyklistických cest. Používá starší barvy Mapnik. Záložka - Vhodný pro off-road terénní jízdu. Vhodný pro použití se zelenými satelitními snímky použitými jako podkladová vrstva. Zmenšená tloušťka hlavních cest a naopak zvětšená tloušťka polních cest, pěšin, cyklotras a dalších cest. Založeno na \"Topo\" stylu. + Pro off-road terénní jízdu, založený na stylu \'Topo\' a pro použití se zelenými satelitními snímky jako podkladovou vrstvou. Zmenšená tloušťka hlavních cest, zvětšená tloušťka polních cest, pěšin, cyklotras a dalších cest. Otevřít odkaz Wikipedia na internetu Odkaz bude otevřen v internetovém prohlížeči. Stahování Wikipedia a Wikivoyage článků pro čtení offline je dostupné pouze předplatitelům OsmAnd Live. @@ -2764,21 +2765,21 @@ Zobrazená oblast: %1$s x %2$s Čas příjezdu do mezicíle Do průjezdního bodu Klepněte na tlačítko pro vyslechnutí odpovídajícího hlasového pokynu, aby jste zjistili chybné nebo chybějící pokyny. - Plavební navigační styl. Klíčové vlastnosti: Bóje, majáky, plavební cesty, mořské cesty a značky, přístavy, námořní služby, plavební hloubka. - Zimní režim. Klíčové vlastnosti: Vykresluje sjezdovky, lyžařské vleky a další praktické objekty pro lyžaře a snowboardisty. Nedůležité objekty jsou na mapě méně výrazné. + Pro námořní navigaci. Obsahuje bóje, majáky, plavební cesty, mořské cesty a značky, přístavy, námořní služby a hloubkové vrstevnice. + Pro lyžování. Obsahuje sjezdovky, lyžařské vleky, běžkařské trasy atd. Nedůležité objekty jsou na mapě méně výrazné. Vítejte v otevřené beta verzi - Jednoduchý a kontrastní styl pro automobilovou navigaci. Příjemný na oči v nočním režimu. Klíčové vlastnosti: Vrstevnice, kontrastní oranžové silnice, druhořadé objekty jsou méně výrazné. - Kontrastní styl určený primárně pro pěší turistiku a cyklistiku v přírodě. Dobrá čitelnost při složitém venkovním osvětlením. Klíčové vlastnosti: kontrastní silnice a přírodních objekty, různé typy tras, vrstevnice s rozšířeným nastavením, více detailů při odpovídající úrovni zvětšení než ve výchozím stylu. Umožňuje rozlišit kvalitu povrchu vozovky. Nemá noční režim. - Starý styl vykreslení jako výchozí \"Mapnik\". Klíčové vlastnosti: barvy jsou podobné \"Mapnik\" stylu. - Vysoce detailní styl pro účely cestování. Obsahuje všechna nastavení z výchozího stylu a navíc zobrazuje maximum detailů, především všechny silnice, cesty a jiné způsoby cestování. Jasně rozlišuje různé typy cest, podobně jako mnohé cestovní atlasy. Vysoce kontrastní schéma pro venkovní použití, denní a noční režim. - Obecný styl. Zjednodušené vykreslování v hustě osídlených městech. Klíčové vlastnosti: vrstevnice, trasy, kvalita povrchu cest, omezení přístupu, čísla cest, značení dle SAC, objekty pro vodní sporty. + Jednoduchý styl pro automobilovou navigaci. Příjemný noční režim, vrstevnice, kontrastní oranžové silnice, druhořadé objekty jsou méně výrazné. + Pro pěší turistiku a cyklistiku v přírodě. Dobře čitelný venku. Kontrastní silnice a přírodních objekty, různé typy tras, vrstevnice s rozšířeným nastavením, více detailů. Umožňuje rozlišit kvalitu povrchu vozovky. Nemá noční režim. + Starý výchozí styl \'Mapnik\'. Barvy jsou podobné jako styl \'Mapnik\'. + Styl pro cestování s vysokým kontrastem a maximálními detaily. Obsahuje všechna nastavení ze základního stylu OsmAnd a navíc zobrazuje maximum detailů, především silnice, cesty a jiné způsoby cestování. Jasně rozlišuje různé typy cest, podobně jako cestovní atlasy. Vhodný pro použití ve dne, v noci i venku. + Obecný styl. Čisté vykreslování hustě osídlených měst. Obsahuje vrstevnice, trasy, kvalita povrchu cest, omezení přístupu, čísla cest, značení dle SAC, objekty pro vodní sporty. Stáhněte si cestovní průvodce Wikivoyage a prohlížejte články o místech po celém světě bez připojení na internet. Bezplatný cestovní průvodce, který může upravovat každý. Cestovní průvodci jsou nyní založené na Wikivoyage. Všechny jejich funkce můžete otestovat zdarma během beta testování. Poté budou zpřístupněny předplatitelům služby OsmAnd Live a uživatelům OsmAnd+. - Můžete (a měli byste) upravovat libovolný článek na Wikivoyage. Sdílejte znalosti, zkušenosti, talent a svoji pozornost + Můžete (a měli byste) upravovat libovolný článek na Wikivoyage. Sdílejte znalosti, zkušenosti, talent a svoji pozornost. Pro pokračování prosím udělte OsmAndu oprávnění pro přístup k poloze. Černá - Na této zastávce je další provoz. + Z této zastávky je možná další doprava. • Opraven pád při startu, ke kterému docházelo na některých zařízeních \n \n • Nová akce značek: zobraz značky, které již byly projety @@ -2794,7 +2795,7 @@ Zobrazená oblast: %1$s x %2$s \n• Měření vzdálenosti: tlačítko \"Měření\" přidáno do akcí v kontextovém menu \n Hledat ulici - Nejprve vyberte město + Nejprve zvolte město/oblast Obnovit Značky, přidané jako skupina oblíbených nebo GPX bodů a označené jako prošlé, zůstanou na mapě. Pokud skupina není aktivní, značky zmizí z mapy. Ponechat prošlé značky na mapě @@ -2813,8 +2814,8 @@ Zobrazená oblast: %1$s x %2$s Obnovuje se čtvrtletně Obnovuje se ročně %1$.2f %2$s - Vyberte si frekvenci plateb, která vám vyhovuje: - Část příjmů je posílána přispěvatelům OpenStreetMap. + Interval plateb: + Příspěvky pomáhají financovat tvorbu map OSM. OsmAnd Předplatné Zobrazit pouze 360° obrázky @@ -2831,9 +2832,9 @@ Zobrazená oblast: %1$s x %2$s Kapacita Šířka Výška - Přidat cíl + Zadat cíl Přidat mezicíl - Přidat počáteční bod + Zadat počáteční bod Mezicíl přestupy pěšky @@ -2845,7 +2846,7 @@ Zobrazená oblast: %1$s x %2$s Ukázat podél trasy Simulovat navigaci Vyberte soubor s trasou, kterou chcete následovat - Hlasová oznámení + Hlasové výzvy Mezicíle Příjezd v %1$s Nejdříve prosím zadejte cíl @@ -2864,12 +2865,12 @@ Zobrazená oblast: %1$s x %2$s Typy silnic Výjezd na Vyměnit - Zobrazit/skrýt GPX trasy - Klepnutím na toto tlačítko akce se zobrazí nebo skryjí vybrané GPX trasy na mapě - Skrýt GPX trasy - Zobrazit GPX trasy + Zobrazit/skrýt stopy + Tlačítko pro zobrazení nebo skrytí vybraných stop na mapě + Skrýt stopy + Zobrazit stopy %1$d přenosů - Přidat počáteční a koncový bod + Přidat počáteční a cílový bod Přidat počáteční bod Zvolit počáteční bod Nezpevněný @@ -2926,8 +2927,7 @@ Zobrazená oblast: %1$s x %2$s %s režim Vyhněte se typům dopravy… Chůze - Maximální délka názvu značky \"%s\" je 255 znaků. -\nPro pokračování zkraťte. + Zkraťte délku názvu značky \"%s\" na méně než 255 znaků. Délka hodnoty \"%s\" "• Nová obrazovka \'Pokyny\': Zobrazuje tlačítka pro cíl Domov a Práce, zkratku pro \'předchozí trasu\', seznam aktivních GPX tras a značek, historii vyhledávání \n @@ -2951,18 +2951,18 @@ Zobrazená oblast: %1$s x %2$s Miliradiány Úhlová jednotka Změní jednotku měření azimutu. - Vyhnout se tramvajím - Vyhnout se tramvajím - Vyhnout se autobusům - Vyhnout se autobusům a trolejbusům - Vyhnout se sdíleným taxi - Vyhnout se sdíleným taxi - Vyhnout se vlakům - Vyhnout se vlakům - Vyhnout se metru + Žádné tramvaje + Vyhne se tramvajím + Žádné autobusy + Vyhne se autobusům a trolejbusům + Žádná sdílená taxi + Vyhne se sdíleným taxi + Žádné vlaky + Vyhne se vlakům + Žádné metro Vyhnout se metru a lehké železniční dopravě - Vyhnout se trajektům - Vyhnout se trajektům + Žádné trajekty + Vyhne se trajektům • Zobrazování času na přestup mezi hromadnou dopravou \n \n • Upravené rozhraní detailů trasy @@ -2995,7 +2995,7 @@ Zobrazená oblast: %1$s x %2$s Určete, která data dovolíte aplikaci OsmAnd sdílet. Klepněte na „Povolit“, pokud souhlasíte s našimi %1$s Soukromí a zabezpečení - Zvolte, které údaje s námi sdílíte + Zvolte údaje ke sdílení Ne, díky Povolit Název profilu @@ -3030,12 +3030,12 @@ Zobrazená oblast: %1$s x %2$s Nejprve je třeba uložit změny profilu Odstranit profil Opravdu chcete odstranit profil „%s“ - Zvolte základní profil + Zvolte výchozí profil Vyberte typ navigace Auto, nákladní auto, motocykl Horské kolo, moped, kůň Chůze, turistika, běh - Všechny typy hromadné dopravy + Typy hromadné dopravy Loď, veslování, plachtění Letadlo, plachtění Geokódování @@ -3071,7 +3071,7 @@ Zobrazená oblast: %1$s x %2$s \n \nSvoji volbu můžete kdykoliv změnit v Nastavení > Soukromí a zabezpečení. Pomozte nám pochopit, které regiony a země jsou v mapách nejpopulárnější. - Pomozte nám pochopit, které funkce OsmAnd jsou nejpopulárnější. + Pomůže nám zjistit popularitu funkcí OsmAnd. Můžete přidat vaši vlastní upravenou verzi souboru routing.xml v ..osmand/routing Klepněte znovu pro změnu orientace mapy Min. rychlost @@ -3581,7 +3581,7 @@ Zobrazená oblast: %1$s x %2$s Přihlásit se pomocí OAuth pro použití funkcí editace OSM Přihlásit pomocí OAuth Vymazat OpenStreetMap OAuth token - Odhlášení úspěšné + Byli jste odhlášeni Soubor je již importovaný v OsmAnd Použít dvoufázový algoritmus A* pro výpočet trasy Graf @@ -3893,28 +3893,28 @@ Zobrazená oblast: %1$s x %2$s Tato nastavení jsou globální a platí pro všechny profily Přihlásit se do OpenStreetMap Přihlásit se do OpenStreetMap.org - Zaregistrovat se do OpenStreetMap + Přihlásit se do OpenStreetMap Můžete zobrazit své dosud neodeslané změny či chyby v OSM v %1$s. Odeslané body se již v OsmAnd nezobrazují. - Musíte se přihlásit, abyste mohli odesílat nová nebo změněná data. + Přihlaste se, abyste mohli odesílat nová nebo změněná data, \n -\nMůžete se přihlásit pomocí bezpečné metody OAuth, nebo pomocí jména a hesla. - Použít jméno a heslo +\nbuď pomocí bezpečné metody OAuth, nebo pomocí jména a hesla. + Přihlásit se pomocí jména a hesla Účet - Přihlašovací jméno + Uživatelské jméno Historie značek \"Veřejná\" znamená, že trasa je veřejně dostupná ve vašich GPS trasách, ve veřejných seznamech GPS tras a také ve veřejném seznamu stop s nezpracovanými časovými razítky. Data poskytnutá prostřednictvím API nebudou odkazovat na vaši stránku s trasou. Časová razítka bodů trasy nebudou dostupná prostřednictvím veřejného GPS API a body nebudou chronologicky seřazeny. \"Soukromá\" znamená, že trasa se neobjeví v žádném veřejném seznamu a body trasy budou dostupné prostřednictvím veřejného GPS API bez časových razítek a nebudou chronologicky seřazeny. Odeslat soubor GPX do OpenStreetMap Zadejte značky oddělené čárkou. - Sledovatelná znamená, že trasa se neobjeví v žádném veřejném seznamu, ale body trasy budou dostupné prostřednictvím veřejného GPS API s časovými razítky. Ostatní uživatelé si budou moci stáhnout zpracované body z vaší trasy, které ale nebude možné přímo spojit s vámi. - Identifikovatelná znamená, že trasa bude veřejně dostupná ve vašich GPS trasách a veřejných seznamech GPS tras, tzn. ostatní uživatelé si budou moci stáhnout nezpracovanou trasu a propojit ji s vaším uživatelským jménem. Data poskytnutá prostřednictvím API se budou odkazovat na vaši původní stránku s trasou. Časová razítka bodů trasy budou dostupná prostřednictvím veřejného GPS API. + \"Sledovatelná\" znamená, že trasa se neobjeví v žádném veřejném seznamu, ale zpracované body trasy s časovými razítky (které nelze přímo spojit s vámi) budou dostupné prostřednictvím veřejného GPS API. + \"Identifikovatelná\" znamená, že trasa bude veřejně dostupná ve vašich GPS trasách a veřejných seznamech GPS tras, tzn. ostatní uživatelé si budou moci stáhnout nezpracovanou trasu a propojit ji s vaším uživatelským jménem. Veřejná data bodů trasy s časovými razítky poskytnutá prostřednictvím GPS API se budou odkazovat na vaši původní stránku s trasou. Zavřít OSM poznámku Komentovat OSM poznámku - Můžete se přihlásit bezpečnou metodou OAuth nebo použít své přihlašovací jméno a heslo. + Přihlaste se bezpečnou metodou OAuth nebo použijte své přihlašovací jméno a heslo. Přidat fotku Zaregistrovat na \nOpenPlaceReviews.org - Fotografie poskytuje open source projekt OpenPlaceReviews.org. Před odesláním svých fotografií se musíte zaregistrovat na webové stránce. + Přihlaste se na webových stránkách open source projektu OpenPlaceReviews.org a budete moci odesílat ještě více fotografií. Vytvořit nový účet Už mám účet %1$s: %2$s @@ -3948,4 +3948,16 @@ Zobrazená oblast: %1$s x %2$s Historie vyhledávání Kajak Motorový člun + Přidat do Mapillary + Přidat do OpenPlaceReviews + OsmAnd zobrazuje fotografie z několika zdrojů: +\nOpenPlaceReviews - fotografie bodů zájmu +\nMapillary - pouliční fotografie +\nWeb / Wikimedia - fotografie bodů zájmu specifikované v OpenStreetMap datech. + Zdroje + Přibližná velikost souboru + Vyberte data k exportu do souboru. + Vyžadováno pro import + Na vašem zařízení je volných pouze %1$s. Uvolněte prosím nějaké místo nebo zrušte některé položky k exportu. + Není zde dostatek místa \ No newline at end of file From 48dffe57938f93d1bba91398e7391f44ba5fcdd9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pavel=20Kotr=C4=8D?= Date: Sat, 21 Nov 2020 10:10:52 +0000 Subject: [PATCH 72/97] Translated using Weblate (Czech) Currently translated at 99.3% (3836 of 3860 strings) --- OsmAnd/res/values-cs/phrases.xml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/OsmAnd/res/values-cs/phrases.xml b/OsmAnd/res/values-cs/phrases.xml index b0e0e22791..590ca94ca9 100644 --- a/OsmAnd/res/values-cs/phrases.xml +++ b/OsmAnd/res/values-cs/phrases.xml @@ -3850,4 +3850,10 @@ Střešní Bod GPX Radarová věž + Ambasáda + Služby občanům + Imigrační víza + Neimigrační víza + Konzulát + Ambasáda \ No newline at end of file From e0aaa0cedb9d485915c9ef45eec5ca4d86e3db77 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Babos=20G=C3=A1bor?= Date: Fri, 20 Nov 2020 20:09:31 +0000 Subject: [PATCH 73/97] Translated using Weblate (Hungarian) Currently translated at 99.9% (3858 of 3860 strings) --- OsmAnd/res/values-hu/phrases.xml | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/OsmAnd/res/values-hu/phrases.xml b/OsmAnd/res/values-hu/phrases.xml index 771e934b0d..8b00e80bb6 100644 --- a/OsmAnd/res/values-hu/phrases.xml +++ b/OsmAnd/res/values-hu/phrases.xml @@ -3843,4 +3843,33 @@ Radartorony GPX-pont Állampolgári szolgáltatások + nincsenek + vannak + nincs + van + nincs + van + Országrész külképviselete + Emigráns kormány nem akkreditált képviselete + Nem akkreditált összekötő iroda + Tiszteletbeli konzul + Főkonzulátus + Konzuli iroda + Konzuli ügynköség + Konzulátus, élén konzullal + Rezidencia + Apostoli nunciatúra + Állandó küldöttség + Érdekképviseleti részleg + Főbiztosság (brit nemzetközösségi tag nagykövetsége) + Küldöttség + Nagykövetségi részleg + Nagykövetség, élén nagykövettel + Összekötő iroda + Követség + Bevándorlói vízum + Nem bevándorlói vízum + Összekötő iroda + Külképviselet + Konzulátus \ No newline at end of file From ae3fb2580543ebd8e91ea658b0624d4db71d185a Mon Sep 17 00:00:00 2001 From: Eduardo Addad de Oliveira Date: Fri, 20 Nov 2020 22:49:25 +0000 Subject: [PATCH 74/97] Translated using Weblate (Portuguese (Brazil)) Currently translated at 100.0% (3564 of 3564 strings) --- OsmAnd/res/values-pt-rBR/strings.xml | 30 +++++++++++++++++++--------- 1 file changed, 21 insertions(+), 9 deletions(-) diff --git a/OsmAnd/res/values-pt-rBR/strings.xml b/OsmAnd/res/values-pt-rBR/strings.xml index 75fe84842c..87ad6154ba 100644 --- a/OsmAnd/res/values-pt-rBR/strings.xml +++ b/OsmAnd/res/values-pt-rBR/strings.xml @@ -3917,10 +3917,10 @@ Desenvolvimento de transporte público nativo Mudar para cálculo de roteamento de transporte público em Java (seguro) O que há de novo - Entre no OAuth para usar os recursos de edição do osm + Entrar com OAuth para usar os recursos osmedit Entrar via OAuth Limpar token do OpenStreetMap OAuth - Saída bem sucedida + Desconectado O arquivo já foi importado para OsmAnd Use o algoritmo de roteamento 2-phase A * Para dirigir em motos de neve com estradas e trilhas exclusivas. @@ -3948,14 +3948,14 @@ A assinatura do OsmAnd Live foi pausada A assinatura do OsmAnd Live está em espera Diferença - Entrar para OpenStreetMap + Entrar com OpenStreetMap Entrar com OpenStreetMap.org - Você precisa entrar para enviar alterações novas ou modificadas. + Entrar para carregar de alterações novas ou modificadas, \n -\nVocê pode entrar usando o método OAuth seguro ou usar sua entrada e senha. - Usar a entrada e senha +\ncom OAuth ou usando seu nome de usuário e senha. + Entrar com nome de usuário e senha Conta - Entrar + Nome de usuário Entrar com o OpenStreetMap Histórico de marcadores Enviar arquivo GPX para OpenStreetMap @@ -3966,14 +3966,26 @@ \"Rastreável\" significa que o rastreamento não aparece em nenhuma listagem pública, mas os pontos de trilha processados com carimbos de data/hora (que não podem ser associados a você diretamente) são feitos por meio de downloads da API GPS pública. Fechar nota do OSM Comentário de nota do OSM - Você pode entrar usando o método OAuth seguro ou usar sua entrada e senha. + Entrar usando o método OAuth seguro ou use seu nome de usuário e senha. Adicionar foto Cadastre-se em \nOpenPlaceReviews.org - As fotos são fornecidas pelo projeto de dados abertos do OpenPlaceReviews.org. Para carregar suas fotos você precisa se inscrever no site. + Entrar no site do projeto de dados abertos OpenPlaceReviews.org para enviar ainda mais fotos. Criar nova conta Eu já tenho uma conta Histórico de busca Caiaque Lancha + Adicionar ao Mapillary + Adicionar ao OpenPlaceReviews + OsmAnd mostra fotos de várias fontes: +\nOpenPlaceReviews - fotos de POI; +\nMapillary - imagens de nível da rua; +\nWeb / Wikimedia - fotos de POI especificadas nos dados do OpenStreetMap. + Recursos + Tamanho aproximado do arquivo + Selecione os dados a serem exportados para o arquivo. + Necessário para importação + Seu dispositivo tem apenas %1$s livre. Libere espaço ou desmarque alguns itens para exportar. + Não há espaço suficiente \ No newline at end of file From 51c700ed16220c1a52fbbf98fb721774ddd17226 Mon Sep 17 00:00:00 2001 From: Eduardo Addad de Oliveira Date: Fri, 20 Nov 2020 22:50:56 +0000 Subject: [PATCH 75/97] Translated using Weblate (Portuguese (Brazil)) Currently translated at 100.0% (3860 of 3860 strings) --- OsmAnd/res/values-pt-rBR/phrases.xml | 30 ++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/OsmAnd/res/values-pt-rBR/phrases.xml b/OsmAnd/res/values-pt-rBR/phrases.xml index cde5e0611b..a52a317b33 100644 --- a/OsmAnd/res/values-pt-rBR/phrases.xml +++ b/OsmAnd/res/values-pt-rBR/phrases.xml @@ -3850,4 +3850,34 @@ Torre de radar Tapume Terraço + Não + Sim + Não + Sim + Não + Sim + Subnacional + Escritório de representação + Escritório + Consul honorário + Consulado Geral + Escritório consular + Agência consular + Chefiado por um cônsul + Residência + Nunciatura + Missão + Seção de interesses + Alto comissariado + Delegação + Seção + Chefiado por um embaixador + Ligação + Embaixada + Serviços ao cidadão + Vistos de imigrante + Vistos de não imigrante + Ligação + Consulado + Embaixada \ No newline at end of file From 73e88abffe52b0430c03d804fa9b322d43761177 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?O=C4=9Fuz=20Ersen?= Date: Sun, 22 Nov 2020 10:30:46 +0000 Subject: [PATCH 76/97] Translated using Weblate (Turkish) Currently translated at 80.8% (3120 of 3860 strings) --- OsmAnd/res/values-tr/phrases.xml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/OsmAnd/res/values-tr/phrases.xml b/OsmAnd/res/values-tr/phrases.xml index 45103c30c5..8489842899 100644 --- a/OsmAnd/res/values-tr/phrases.xml +++ b/OsmAnd/res/values-tr/phrases.xml @@ -3130,4 +3130,6 @@ Sütun Gölet Gölet + Konsolosluk + Büyük elçilik \ No newline at end of file From 8869fe218a73d1fd94918cf56a2a7dea5fde224d Mon Sep 17 00:00:00 2001 From: Verdulo Date: Sat, 21 Nov 2020 23:03:51 +0000 Subject: [PATCH 77/97] Translated using Weblate (Esperanto) Currently translated at 100.0% (3564 of 3564 strings) --- OsmAnd/res/values-eo/strings.xml | 86 ++++++++++++++++---------------- 1 file changed, 44 insertions(+), 42 deletions(-) diff --git a/OsmAnd/res/values-eo/strings.xml b/OsmAnd/res/values-eo/strings.xml index 2de782c6c3..5e35a669e6 100644 --- a/OsmAnd/res/values-eo/strings.xml +++ b/OsmAnd/res/values-eo/strings.xml @@ -415,7 +415,7 @@ Uzantnomo kaj pasvorto al OSM Datum-konservada dosierujo Filtri laŭ nomo - Entajpu ion por serĉi + Enigu ion por serĉi A-GPS informoj Etikedoj “riparu min!” Administri @@ -749,9 +749,9 @@ Korekto de altitudo Tutmondaj maraj navigadpunktoj Elektu kategorion - Entajpu nomon - Entajpu kategorion - Entajpu priskribon. + Enigu nomon + Enigu kategorion + Enigu priskribon. Norma koloro Magneta direkto Relativa direkto @@ -1596,7 +1596,7 @@ Elekti manieron de bildigado de vektora mapo Montri retpaĝon de interesejo Montri telefonon de interesejo - entajpu tekston por filtri + enigu tekston por filtri Alta ekrandistingivo Ne etendi (kaj malklarigi) map‑kahelojn ĉe alt‑distingivaj ekranoj. Serĉi transporton publikan @@ -1651,7 +1651,7 @@ Ne povas ŝargi GPX. Sendi raporton Ne povas trovi iujn elŝutitajn mapojn en la SD-karto. - Entajpu serĉatan interesejon + Enigu serĉatan interesejon Ia Dankon al Yandex pro informoj pri trafiko. Yandex - informoj pri trafiko @@ -1805,7 +1805,7 @@ GGG:MM:SS.S Adreso Krei interesejon - Entajpu nomon de ŝatata ejo + Enigu nomon de ŝatata ejo Ŝatataj Aldonis ŝatatan punkton “{0}”. Aldoni al ŝatataj @@ -1905,7 +1905,7 @@ Senpagaj elŝutoj uzitaj Montras nombron da pluaj senpagaj elŝutoj. Bonvolu elekti kie vi volas konservi mapoj kaj aliaj datum-dosieroj. - Entajpu nomon de lando + Enigu nomon de lando Nova versio Unuaj paŝoj kun OsmAnd Ebloj @@ -1947,7 +1947,7 @@ Nombro da kontribuintoj Nombro da redaktoj Raportoj por - Dosiernomo enhavas malpermesitan signon + Malpermesata signo en dosiernomo {0} elemento(j) elektita(j) Koordinat-formo Formo de geografiaj koordinatoj. @@ -2038,7 +2038,7 @@ Subkategorioj Transliterumi nomojn Transliterumi, se nomo en %1$s mankas - Entajpu urbon, adreson aŭ nomon de interesejo + Enigu urbon, adreson aŭ nomon de interesejo Bronzkolora hela Bronzkolora malhela Kolor-skemo de nivelkurboj @@ -2366,12 +2366,12 @@ Aktivigi aŭtomatan map-skaladon Malaktivigi aŭtomatan map-skaladon Paŭzigita - Entajpu urbon aŭ lokon - Entajpu poŝtkodon + Enigu urbon aŭ lokon + Enigu poŝtkodon Proksimaj urboj Elekti urbon Serĉi poŝtkodon - Entajpu adreson + Enigu adreson Elekti straton en %1$s Sumigo @@ -2415,7 +2415,7 @@ Neniuj fotoj tie ĉi. Instali Pliigi fotan atingon de Mapillary - Instalu Mapillary por aldoni fotojn al tiu ĉi loko sur la mapo. + Instalu la aplikaĵon Mapillary por aldoni fotojn al tiu ĉi loko sur la mapo. Malfermi Mapillary Mapillary-foto Korektita distanco @@ -2430,7 +2430,7 @@ de Montri bildojn aldonitajn nur Dato - Entajpu uzantnomon + Enigu uzantnomon Montri nur bildojn aldonitajn de Uzantnomo Filtri bildojn laŭ alŝutinto, laŭ dato aŭ laŭ tipo; aktivaj nur je pligrandigo. @@ -2456,7 +2456,7 @@ Reprovi Esploru mapon kaj aldonu punktojn Bonvolu aldoni almenaŭ unu punkton. - GPX-dosiera nomo: + Dosiernomo de GPX: Montri sur mapo post konservi Aldoni navigadpunkton Konservi GPX‑navigadpunkton @@ -2541,7 +2541,7 @@ Vi devas aldoni almenaŭ unu markon por uzi tiun ĉi eblon. Malĝusta formo Malĝusta enigo - Entajpu novan nomon + Enigu novan nomon Reen Montri Aldonis intercelojn al mapmarkoj @@ -2634,7 +2634,7 @@ Kopii nomon de punkto Sennoma ejo Montri fermitajn rimarkojn - Montri/kaŝi OSM‑rimarkojn sur la mapo. + Montri aŭ kaŝi OSM‑rimarkojn sur la mapo. GPX - taŭga por elporti al JOSM aŭ aliaj OSM-redaktiloj. OSC - taŭga por elporti al OSM. GPX-dosiero @@ -2652,8 +2652,8 @@ Agordi kiel komencpunkton Eraro dum enporti mapon Enportis mapon - Entajpu dosiernomon. - Entajpu longitudon + Enigu dosiernomon. + Enigu longitudon Entajpu latitudon Entajpu latitudon kaj longitudon GG°MM′SS″ @@ -2772,7 +2772,7 @@ Redakti punkton Aldoni punkton Konservi kiel spuron - Vi aldonis %1$s punktojn. Entajpu dosiernomon kaj frapetu “konservi”. + Vi aldonis %1$s punktojn. Enigu dosiernomon kaj frapetu “konservi”. Forigis la punkton %1$s Mondo Ni sendos vian serĉ-peton: “%1$s” kun via pozicio. @@ -3050,7 +3050,7 @@ Ĉefa profilo Elektu specon de navigado Bonvolu elekti specon de navigo por la nova aplikaĵa profilo - Entajpu nomon por profilo + Enigu nomon por profilo Unue devas enigi nomon por profilo. Nomo neebla Jam ekzistas profilo kun la sama nomo @@ -3080,9 +3080,9 @@ Rulumu supren/malsupren por ŝanĝi pligrandigon de mapo. Eskap-klavo revenas al al aplikaĵo WunderLINQ App. Stiri per WunderLINQ Aldonu almenaŭ unu elementon al la listo en agordoj de “rapida ago” - Skiado alpa/malsuprenira + Skiado alpa kaj malsuprenira Skivojoj por skiado alpa (malsuprenira) kaj vojetoj al skitelferoj. - Skiado nordia/skikurada + Skiado nordia kaj skikurada Skivojoj por skiado nordia (skikurada). Skiado ekskursa Skivojoj ekskursaj. @@ -3261,7 +3261,7 @@ Elŝutu la detalan mapon %s, por vidi tiun ĉi areon. Ĉu movi datum‑dosierojn OsmAnd al la nova loko\? \n%1$s → %2$s - Entajpu dosier‑indikon + Enigu dosierindikon Dosierujo… Algluu dosier‑indikon por dosierujo de OsmAnd‑datumoj Ĉu ŝanĝi datum‑dosierujon OsmAnd\? @@ -3362,7 +3362,7 @@ Anstataŭigi komencpunkton per celo Simuli vian pozicion uzante registritan GPX‑kurson. Konservis kurson - Dosiernomo estas malplena + Malplena dosiernomo Malfari Butono por agordi la ekranan centron kiel komencpunkton. Sekve vi estos petita por agordi finpunkton aŭ ekos kalkulado de kurso. Montri reton de nodoj de biciklaj kursoj @@ -3572,7 +3572,7 @@ Mapklarigo Nivelombrumo %1$s el %2$s - Montri/kaŝi teren‑formon + Montri aŭ kaŝi teren‑formon Kaŝi teren‑formon Montri teren‑formon Butono por montri/kaŝi tavolon de formo de tereno sur la mapo. @@ -3690,10 +3690,10 @@ Vi povas ekigi tiujn agojn per frapeti la butonon “%1$s”. Kaŝi publikan transporton Montri publikan transporton - Montri/kaŝi publikan transporton + Montri aŭ kaŝi publikan transporton Butono por montri/kaŝi publikan transporton sur la mapo. - Krei/redakti interesejon - Aldoni/forigi ŝatatan ejojn + Krei aŭ redakti interesejon + Aldoni aŭ forigi ŝatatan ejojn Pozicioj de parkumado Restarigi implicitan ordigon de elementoj Reen al redaktado @@ -3876,7 +3876,7 @@ Refari • plibonigoj al “plani kurson”: eblo uzi diversajn specojn de navigo por ĉiu segmento aparte kaj ampleksi spurojn \n -\n• nova menuo de aspekto por spuroj: eblo elekti koloron kaj dikecon, montri sagetojn de direkto kaj vidigi markojn de komenco/fino de la spuro +\n• nova menuo de aspekto por spuroj: eblo elekti koloron kaj dikecon, montri sagetojn de direkto kaj vidigi markojn de komenco kaj fino de la spuro \n \n• plibonigita videblo de biciklaj nodoj \n @@ -3890,7 +3890,7 @@ \n \n Registri - Elektu la intervalon de registrado por la ĝenerala registrado de spuro (aktivigata per la fenestraĵo “registri spuron” sur la mapo). + Elektu la intervalon de registrado por la ĝenerala registrado de spuro (aktivigebla per la fenestraĵo “registri spuron” sur la mapo). Simpligita spuro Nur la linio de kurso estos konservita, la navigadpunktoj estos forigitaj. Dosiernomo @@ -3909,7 +3909,7 @@ \n La abono aŭtomate renoviĝos escepte se ĝi estos nuligita antaŭ la dato de renoviĝo. La pago estos prenita por la renoviĝa periodo (monato/tri monatoj/jaro) nur je la dato de renoviĝo. \n \n Vi povas administri kaj rezigni viajn abonojn per la agordoj de AppGallery. - Emblemoj komenco/fino + Emblemoj de komenco kaj fino Dankon al vi por aĉeti la kromprogramon “nivelkurboj” Abonpago prenita por la elektita periodo. VI ĉiam povas rezigni abonon ĉe AppGallery. Eviti irejojn @@ -3921,10 +3921,10 @@ Du-faza difinado de kurso por aŭtomobila navigo. Indiĝena metodo de publik-transporta navigo Aktivigi (sekuran) metodon por kalkuli kursojn de publika transporto uzante programlingvon Java - Ensaluti uzante OAuth por redakti la mapon OSM + Ensaluti per OAuth por redakti la mapon OSM Ensaluti per OAuth Forigi ĵetonon OpenStreetMap OAuth - Sukcese elsalutinta + Elsalutinta Por veturi per motorsledo sur dediĉitaj vojoj. Dosiero jam estas enportita al OsmAnd Uzi 2-fazan A* algoritmon de navigo @@ -3955,26 +3955,26 @@ Ensaluti al OpenStreetMap Ensaluti al OpenStreetMap.org Ensaluti per OpenStreetMap - Vi devas ensaluti por alŝuti novajn aŭ modifitajn ŝanĝojn. + Ensalutu por alŝuti novajn aŭ modifitajn ŝanĝojn \n -\nVi povas ensaluti per la sekura metodo OAuth aŭ per enigi uzantnomon kaj pasvorton. - Uzi uzantnomon kaj pasvorton +\naŭ per la sekura metodo OAuth aŭ per enigi uzantnomon kaj pasvorton. + Ensaluti per uzantnomo kaj pasvorto Konto Uzantnomo Historio de markoj Sendi GPX‑dosieron al OpenStreetMap Enigu etikedojn disigitajn per komo (,). - “Publika” signifas, ke la GPX‑spuro estos publika videbla en “miaj spuroj” kaj en la publika listo de spuro (GPS‑spuroj). Datumoj liverataj per la API ne ligos al paĝo de via spuro. Tempindikoj de punktoj ne estos akireblaj per la publika API GPS, kaj la punktoj ne estos ordigitaj laŭtempe. Tamen aliaj uzantoj plue povos elŝuti la nepritraktitan spuron el la publika listo de spuroj kune kun ĉiuj ampleksitaj tempindikoj. - “Privata” signifas, ke la GPX‑spuro montriĝos en neniu publika listo, sed ĝiaj punktoj plue estos akireblaj per la publika API GPS sen tempindikoj, sed tiuj punktoj estos ordigitaj laŭtempe. + “Publika” signifas, ke la GPX‑spuro estos publike videbla en “miaj spuroj” kaj en la publika listo de spuroj (GPS‑spuroj) kun tempindikoj kaj en nepritraktita formo. Datumoj liverataj per la API ne ligos al paĝo de via spuro. Tempindikoj de spurpunkto ne estos akireblaj per la publika API GPS, kaj spurpunktoj ne estos laŭtempe ordigitaj. + “Privata” signifas, ke la GPX‑spuro montriĝos en neniu publika listo, sed ĝiaj punktoj neordigitaj laŭtempe estos akireblaj per la publika API GPS sen tempindikoj. “Identigebla” signifas, ke la GPX‑spuro estos publike videbla en “miaj spuroj” kaj en la publika listo de spuroj (GPS‑spuroj), aliaj uzantoj povos elŝuti vian nepritraktitan spuron kaj ligi ĝin al via uzantnomo. Publikaj datumoj kun tempindikoj el la API GPS akireblaj per la API de spur‑punktoj indikos al originala paĝo de via spuro. “Spurebla” signifas, ke la GPX‑spuro ne montriĝos en publikaj listoj, sed pritraktitaj punktoj kun tempindikoj el ĝi (kiuj ne povos esti senpere ligitaj al vi) estos elŝuteblaj per la publika API GPS. Fermi OSM-rimarkon Komenti OSM-rimarkon - Vi povas ensaluti per la sekura metodo OAuth aŭ per uzi uzantnomon kaj pasvorton. + Ensalutii per la sekura metodo OAuth aŭ per uzi uzantnomon kaj pasvorton. Aldoni foton Registri ĉe \nOpenPlaceReviews.org - Fotoj estas liverataj de la malferm‑datuma projekto OpenPlaceReviews.org. Por alŝuti viajn fotojn, vi devas registri ĉe la retejo. + Ensaluti en la paĝon de la malferm‑datuma projekto OpenPlaceReviews.org por alŝuti fotojn. Krei novan konton Mi jam havas konton Serĉi en historio @@ -3990,4 +3990,6 @@ Necesa por enporti En via aparato estas nur %1$s da libera spaco. Liberigu iom da spaco aŭ malelektu iujn elementojn de elporto. Mankas spaco + Aldoni al Mapillary + Aldoni al OpenPlaceReviews \ No newline at end of file From df801d408eb151f244a15d79c6371cc3a5987f1f Mon Sep 17 00:00:00 2001 From: Verdulo Date: Sun, 22 Nov 2020 18:17:58 +0000 Subject: [PATCH 78/97] Translated using Weblate (Esperanto) Currently translated at 99.7% (3852 of 3860 strings) --- OsmAnd/res/values-eo/phrases.xml | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/OsmAnd/res/values-eo/phrases.xml b/OsmAnd/res/values-eo/phrases.xml index 99dda63d74..36f24f20bd 100644 --- a/OsmAnd/res/values-eo/phrases.xml +++ b/OsmAnd/res/values-eo/phrases.xml @@ -3843,4 +3843,26 @@ tegmento GPX-punkto Radar-turo + oficejo + honora konsulo + ĝenerala konsulejo + konsula oficejo + konsula agentejo + gvidata de konsulo + rezidejo + nunciejo + misio + sekcio de interesoj + alta komisario + delegitaro + branĉo + gvidata de ambasadestro + kvazaŭ-ambasadejo + ambaadejo + Servoj por ŝtatanoj + Vizoj enmigraj + Vizoj neenmigraj + Kvazaŭ‑ambasadejo + Konsulejo + Ambasadejo \ No newline at end of file From 3fcde6ea6b6f518e268e466c5dba002c47402f45 Mon Sep 17 00:00:00 2001 From: D M Date: Sat, 21 Nov 2020 17:29:38 +0000 Subject: [PATCH 79/97] Translated using Weblate (Serbian) Currently translated at 98.0% (3786 of 3860 strings) --- OsmAnd/res/values-sr/phrases.xml | 47 ++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/OsmAnd/res/values-sr/phrases.xml b/OsmAnd/res/values-sr/phrases.xml index f764fee95c..69b1046618 100644 --- a/OsmAnd/res/values-sr/phrases.xml +++ b/OsmAnd/res/values-sr/phrases.xml @@ -3815,4 +3815,51 @@ Калдера Мар Стрелица: не + Табла одласка: не + Не + Да + Не + Да + Не + Да + Поднационални + Представништво + Канцеларија + Почасни конзулат + Генерални конзулат + Конзуларна канцеларија + Конзуларна агенција + На челу са конзулом + Резиденција + Нунцијатура + Мисија + Интересни + Висока комисија + Делегација + Подружница + На челу са амбасадором + Посредник + Амбасада + Радарски торањ + Паркинг + Паркинг + Таван + ГПКС тачка + ЛНГ + Продавница ораха + Кошница + Распоред + Стварно време + Кашњење + Да + Лифт + Мали електрични уређаји + Услуге за грађане + Имигрантске визе + Неимигрантске визе + Посредник + Конзулат + Амбасада + Табла + Доливање воде за пиће \ No newline at end of file From fe5ee7eb2aedaa0c4976021e43d63d6609b91b26 Mon Sep 17 00:00:00 2001 From: D M Date: Sat, 21 Nov 2020 17:32:30 +0000 Subject: [PATCH 80/97] Translated using Weblate (Serbian) Currently translated at 100.0% (271 of 271 strings) Translation: OsmAnd/Telegram Translate-URL: https://hosted.weblate.org/projects/osmand/telegram/sr/ --- OsmAnd-telegram/res/values-sr/strings.xml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/OsmAnd-telegram/res/values-sr/strings.xml b/OsmAnd-telegram/res/values-sr/strings.xml index 52c261dbe5..4220079b9b 100644 --- a/OsmAnd-telegram/res/values-sr/strings.xml +++ b/OsmAnd-telegram/res/values-sr/strings.xml @@ -267,4 +267,8 @@ Последњи одговор: %1$ Последње ажурирање из Телеграма: %1$ Грешка + Извези + Logcat бафер + Проверите и поделите детаљне записе апликације + Пошаљи извештај \ No newline at end of file From 7420aa8376ee87901d119ac6b366681b3d99d557 Mon Sep 17 00:00:00 2001 From: androiddevkkotlin Date: Sun, 22 Nov 2020 23:01:18 +0200 Subject: [PATCH 81/97] Layout redo, logical mistake fix --- OsmAnd/res/layout/custom_radio_buttons.xml | 5 ++--- OsmAnd/res/layout/fragment_measurement_tool.xml | 10 ++++++---- OsmAnd/src/net/osmand/plus/UiUtilities.java | 1 - .../plus/mapcontextmenu/other/TrackDetailsMenu.java | 1 + .../plus/measurementtool/MeasurementToolFragment.java | 10 +++++----- 5 files changed, 14 insertions(+), 13 deletions(-) diff --git a/OsmAnd/res/layout/custom_radio_buttons.xml b/OsmAnd/res/layout/custom_radio_buttons.xml index c15757f4b0..03a440da9c 100644 --- a/OsmAnd/res/layout/custom_radio_buttons.xml +++ b/OsmAnd/res/layout/custom_radio_buttons.xml @@ -25,7 +25,6 @@ android:background="?attr/selectableItemBackground" android:gravity="center" android:textSize="@dimen/default_desc_text_size" - android:foreground="?attr/selectableItemBackground" android:textColor="@drawable/radio_flat_text_selector_light" osmand:typeface="@string/font_roboto_medium" tools:text="@string/shared_string_left"/> @@ -33,11 +32,11 @@ + android:background="?attr/divider_color"> diff --git a/OsmAnd/res/layout/fragment_measurement_tool.xml b/OsmAnd/res/layout/fragment_measurement_tool.xml index 3cdf5b3f46..82cd085ec9 100644 --- a/OsmAnd/res/layout/fragment_measurement_tool.xml +++ b/OsmAnd/res/layout/fragment_measurement_tool.xml @@ -30,7 +30,8 @@ Date: Sun, 22 Nov 2020 23:15:15 +0200 Subject: [PATCH 82/97] Remove unnecessary --- .../osmand/plus/measurementtool/MeasurementToolFragment.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OsmAnd/src/net/osmand/plus/measurementtool/MeasurementToolFragment.java b/OsmAnd/src/net/osmand/plus/measurementtool/MeasurementToolFragment.java index c75a320150..c8a412318e 100644 --- a/OsmAnd/src/net/osmand/plus/measurementtool/MeasurementToolFragment.java +++ b/OsmAnd/src/net/osmand/plus/measurementtool/MeasurementToolFragment.java @@ -751,7 +751,7 @@ public class MeasurementToolFragment extends BaseOsmAndFragment implements Route MapActivity mapActivity = getMapActivity(); if (mapActivity != null) { if (editingCtx.getPointsCount() > 0) { - if (editingCtx.isNewData() || isInEditMode()) { + if (editingCtx.isNewData()) { if (showDialog) { openSaveAsNewTrackMenu(mapActivity); } else { From 4a3de9a51bd84e3e4d348606d9e4403efa26adc7 Mon Sep 17 00:00:00 2001 From: Dima-1 Date: Sun, 22 Nov 2020 23:23:24 +0200 Subject: [PATCH 83/97] Small refactoring --- .../plus/osmedit/OsmBugsRemoteUtil.java | 124 ++++++++++-------- .../plus/osmedit/OsmEditingFragment.java | 5 +- 2 files changed, 71 insertions(+), 58 deletions(-) diff --git a/OsmAnd/src/net/osmand/plus/osmedit/OsmBugsRemoteUtil.java b/OsmAnd/src/net/osmand/plus/osmedit/OsmBugsRemoteUtil.java index f6200d2ad3..f68aa9fbaa 100644 --- a/OsmAnd/src/net/osmand/plus/osmedit/OsmBugsRemoteUtil.java +++ b/OsmAnd/src/net/osmand/plus/osmedit/OsmBugsRemoteUtil.java @@ -22,6 +22,7 @@ import java.io.UnsupportedEncodingException; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URLEncoder; +import java.nio.charset.StandardCharsets; import java.util.concurrent.ExecutionException; public class OsmBugsRemoteUtil implements OsmBugsUtil { @@ -101,65 +102,78 @@ public class OsmBugsRemoteUtil implements OsmBugsUtil { boolean anonymous) { OsmOAuthAuthorizationAdapter authorizationAdapter = new OsmOAuthAuthorizationAdapter(app); OsmBugResult result = new OsmBugResult(); - try { - HttpURLConnection connection = NetworkUtils.getHttpURLConnection(url); - log.info("Editing poi " + url); - connection.setConnectTimeout(15000); - connection.setRequestMethod(requestMethod); - connection.setRequestProperty("User-Agent", Version.getFullVersion(app)); //$NON-NLS-1$ - - if (!anonymous) { - if (authorizationAdapter.isValidToken()) { - try { - OsmOAuthAuthorizationClient client = authorizationAdapter.getClient(); - Response response = client.performRequest(url, requestMethod, userOperation); - if (response.getCode() != HttpURLConnection.HTTP_OK) { - result.warning = response.getMessage() + "\n" + response.getBody(); - return result; - } - } catch (InterruptedException e) { - log.error(e); - result.warning = e.getMessage(); - } catch (ExecutionException e) { - log.error(e); - result.warning = e.getMessage(); - } - return result; - } else { - String token = settings.USER_NAME.get() + ":" + settings.USER_PASSWORD.get(); //$NON-NLS-1$ - connection.addRequestProperty("Authorization", "Basic " + Base64.encode(token.getBytes("UTF-8"))); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ + if (!anonymous) { + if (authorizationAdapter.isValidToken()) { + try { + result = performOAuthRequest(url, requestMethod, userOperation, authorizationAdapter); + } catch (InterruptedException e) { + log.error(e); + result.warning = e.getMessage(); + } catch (ExecutionException e) { + log.error(e); + result.warning = e.getMessage(); + } catch (IOException e) { + log.error(e); + result.warning = e.getMessage(); + } + } else { + try { + result = performBasicRequest(url, requestMethod); + } catch (FileNotFoundException | NullPointerException e) { + // that's tricky case why NPE is thrown to fix that problem httpClient could be used + String msg = app.getString(R.string.auth_failed); + log.error(msg, e); + result.warning = app.getString(R.string.auth_failed) + ""; + } catch (MalformedURLException e) { + log.error(userOperation + " " + app.getString(R.string.failed_op), e); + result.warning = e.getMessage() + ""; + } catch (IOException e) { + log.error(userOperation + " " + app.getString(R.string.failed_op), e); + result.warning = e.getMessage() + " link unavailable"; } } + } + return result; + } - connection.setDoInput(true); - connection.connect(); - String msg = connection.getResponseMessage(); - boolean ok = connection.getResponseCode() == HttpURLConnection.HTTP_OK; - log.info(msg); //$NON-NLS-1$ - // populate return fields. + private OsmBugResult performBasicRequest(String url, String requestMethod) throws IOException { + OsmBugResult result = new OsmBugResult(); + HttpURLConnection connection = NetworkUtils.getHttpURLConnection(url); + log.info("Editing poi " + url); + connection.setConnectTimeout(15000); + connection.setRequestMethod(requestMethod); + connection.setRequestProperty("User-Agent", Version.getFullVersion(app)); + String token = settings.USER_NAME.get() + ":" + settings.USER_PASSWORD.get(); + connection.addRequestProperty("Authorization", "Basic " + Base64.encode(token.getBytes(StandardCharsets.UTF_8))); + connection.setDoInput(true); + connection.connect(); + String msg = connection.getResponseMessage(); + boolean ok = connection.getResponseCode() == HttpURLConnection.HTTP_OK; + log.info(msg); + // populate return fields. - StringBuilder responseBody; - if (connection.getResponseCode() == HttpURLConnection.HTTP_CONFLICT) { - responseBody = Algorithms.readFromInputStream(connection.getErrorStream()); - } else { - responseBody = Algorithms.readFromInputStream(connection.getInputStream()); - } - log.info("Response : " + responseBody); //$NON-NLS-1$ - connection.disconnect(); - if (!ok) { - result.warning = msg + "\n" + responseBody; - } - } catch (FileNotFoundException | NullPointerException e) { - // that's tricky case why NPE is thrown to fix that problem httpClient could be used - String msg = app.getString(R.string.auth_failed); - log.error(msg, e); - result.warning = app.getString(R.string.auth_failed) + ""; - } catch (MalformedURLException e) { - log.error(userOperation + " " + app.getString(R.string.failed_op), e); //$NON-NLS-1$ - result.warning = e.getMessage() + ""; - } catch (IOException e) { - log.error(userOperation + " " + app.getString(R.string.failed_op), e); //$NON-NLS-1$ - result.warning = e.getMessage() + " link unavailable"; + StringBuilder responseBody; + if (connection.getResponseCode() == HttpURLConnection.HTTP_CONFLICT) { + responseBody = Algorithms.readFromInputStream(connection.getErrorStream()); + } else { + responseBody = Algorithms.readFromInputStream(connection.getInputStream()); + } + log.info("Response : " + responseBody); + connection.disconnect(); + if (!ok) { + result.warning = msg + "\n" + responseBody; + } + return result; + } + + private OsmBugResult performOAuthRequest(String url, String requestMethod, String userOperation, + OsmOAuthAuthorizationAdapter authorizationAdapter) + throws InterruptedException, ExecutionException, IOException { + OsmBugResult result = new OsmBugResult(); + OsmOAuthAuthorizationClient client = authorizationAdapter.getClient(); + Response response = client.performRequest(url, requestMethod, userOperation); + if (response.getCode() != HttpURLConnection.HTTP_OK) { + result.warning = response.getMessage() + "\n" + response.getBody(); } return result; } diff --git a/OsmAnd/src/net/osmand/plus/osmedit/OsmEditingFragment.java b/OsmAnd/src/net/osmand/plus/osmedit/OsmEditingFragment.java index 5602c23483..991073c435 100644 --- a/OsmAnd/src/net/osmand/plus/osmedit/OsmEditingFragment.java +++ b/OsmAnd/src/net/osmand/plus/osmedit/OsmEditingFragment.java @@ -40,7 +40,6 @@ public class OsmEditingFragment extends BaseSettingsFragment implements OnPrefer private static final String OPEN_OSM_EDITS = "open_osm_edits"; public static final String OSM_LOGIN_DATA = "osm_login_data"; private static final String OSM_EDITING_INFO = "osm_editing_info"; - private static final String USE_DEV_URL = "use_dev_url"; private OsmOAuthAuthorizationAdapter authorizationAdapter; @@ -172,7 +171,7 @@ public class OsmEditingFragment extends BaseSettingsFragment implements OnPrefer @Override public boolean onPreferenceChange(Preference preference, Object newValue) { String prefId = preference.getKey(); - if (USE_DEV_URL.equals(prefId) && newValue instanceof Boolean) { + if (settings.USE_DEV_URL.getId().equals(prefId) && newValue instanceof Boolean) { settings.USE_DEV_URL.set((Boolean) newValue); osmLogout(); authorizationAdapter = app.getOsmOAuthHelper().updateAdapter(); @@ -225,7 +224,7 @@ public class OsmEditingFragment extends BaseSettingsFragment implements OnPrefer @Override public void onPreferenceChanged(String prefId) { - if (USE_DEV_URL.equals(prefId)) { + if (settings.USE_DEV_URL.getId().equals(prefId)) { osmLogout(); authorizationAdapter = app.getOsmOAuthHelper().updateAdapter(); } From 5d69794e27afe90119296dea1f87d5c7e19092c8 Mon Sep 17 00:00:00 2001 From: Dima-1 Date: Sun, 22 Nov 2020 23:51:42 +0200 Subject: [PATCH 84/97] Small refactoring --- .../plus/osmedit/OsmBugsRemoteUtil.java | 69 +++++++++---------- 1 file changed, 34 insertions(+), 35 deletions(-) diff --git a/OsmAnd/src/net/osmand/plus/osmedit/OsmBugsRemoteUtil.java b/OsmAnd/src/net/osmand/plus/osmedit/OsmBugsRemoteUtil.java index f68aa9fbaa..5d6c172738 100644 --- a/OsmAnd/src/net/osmand/plus/osmedit/OsmBugsRemoteUtil.java +++ b/OsmAnd/src/net/osmand/plus/osmedit/OsmBugsRemoteUtil.java @@ -98,53 +98,52 @@ public class OsmBugsRemoteUtil implements OsmBugsUtil { return editingPOI(getUserDetailsApi(), GET, "validate_login", false); } - private OsmBugResult editingPOI(String url, String requestMethod, String userOperation, - boolean anonymous) { + private OsmBugResult editingPOI(String url, String requestMethod, String userOperation, boolean anonymous) { OsmOAuthAuthorizationAdapter authorizationAdapter = new OsmOAuthAuthorizationAdapter(app); OsmBugResult result = new OsmBugResult(); - if (!anonymous) { - if (authorizationAdapter.isValidToken()) { - try { - result = performOAuthRequest(url, requestMethod, userOperation, authorizationAdapter); - } catch (InterruptedException e) { - log.error(e); - result.warning = e.getMessage(); - } catch (ExecutionException e) { - log.error(e); - result.warning = e.getMessage(); - } catch (IOException e) { - log.error(e); - result.warning = e.getMessage(); - } - } else { - try { - result = performBasicRequest(url, requestMethod); - } catch (FileNotFoundException | NullPointerException e) { - // that's tricky case why NPE is thrown to fix that problem httpClient could be used - String msg = app.getString(R.string.auth_failed); - log.error(msg, e); - result.warning = app.getString(R.string.auth_failed) + ""; - } catch (MalformedURLException e) { - log.error(userOperation + " " + app.getString(R.string.failed_op), e); - result.warning = e.getMessage() + ""; - } catch (IOException e) { - log.error(userOperation + " " + app.getString(R.string.failed_op), e); - result.warning = e.getMessage() + " link unavailable"; - } + if (authorizationAdapter.isValidToken() && !anonymous) { + try { + result = performOAuthRequest(url, requestMethod, userOperation, authorizationAdapter); + } catch (InterruptedException e) { + log.error(e); + result.warning = e.getMessage(); + } catch (ExecutionException e) { + log.error(e); + result.warning = e.getMessage(); + } catch (IOException e) { + log.error(e); + result.warning = e.getMessage(); + } + } else { + try { + result = performBasicRequest(url, requestMethod, anonymous); + } catch (FileNotFoundException | NullPointerException e) { + // that's tricky case why NPE is thrown to fix that problem httpClient could be used + String msg = app.getString(R.string.auth_failed); + log.error(msg, e); + result.warning = app.getString(R.string.auth_failed) + ""; + } catch (MalformedURLException e) { + log.error(userOperation + " " + app.getString(R.string.failed_op), e); + result.warning = e.getMessage() + ""; + } catch (IOException e) { + log.error(userOperation + " " + app.getString(R.string.failed_op), e); + result.warning = e.getMessage() + " link unavailable"; } } return result; } - private OsmBugResult performBasicRequest(String url, String requestMethod) throws IOException { + private OsmBugResult performBasicRequest(String url, String requestMethod, boolean anonymous) throws IOException { OsmBugResult result = new OsmBugResult(); HttpURLConnection connection = NetworkUtils.getHttpURLConnection(url); log.info("Editing poi " + url); connection.setConnectTimeout(15000); connection.setRequestMethod(requestMethod); connection.setRequestProperty("User-Agent", Version.getFullVersion(app)); - String token = settings.USER_NAME.get() + ":" + settings.USER_PASSWORD.get(); - connection.addRequestProperty("Authorization", "Basic " + Base64.encode(token.getBytes(StandardCharsets.UTF_8))); + if (!anonymous) { + String token = settings.USER_NAME.get() + ":" + settings.USER_PASSWORD.get(); + connection.addRequestProperty("Authorization", "Basic " + Base64.encode(token.getBytes(StandardCharsets.UTF_8))); + } connection.setDoInput(true); connection.connect(); String msg = connection.getResponseMessage(); @@ -177,4 +176,4 @@ public class OsmBugsRemoteUtil implements OsmBugsUtil { } return result; } -} +} \ No newline at end of file From cf0c907cc0e5c134388922bbb74bd2d7dd1d0c95 Mon Sep 17 00:00:00 2001 From: Samantaz Fox Date: Sun, 22 Nov 2020 18:30:38 +0000 Subject: [PATCH 85/97] Translated using Weblate (French) Currently translated at 99.7% (3558 of 3566 strings) --- OsmAnd/res/values-fr/strings.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/OsmAnd/res/values-fr/strings.xml b/OsmAnd/res/values-fr/strings.xml index 49838f2f3c..463e2cd47e 100644 --- a/OsmAnd/res/values-fr/strings.xml +++ b/OsmAnd/res/values-fr/strings.xml @@ -3968,4 +3968,5 @@ \nOpenPlaceReviews : photos de PI ; \nMapillary : photos de rue ; \nWeb / Wikimedia : photos de PI réféfencés dans OpenStreetMap. + \ No newline at end of file From dd40dadae8fffe9ddaa9103d4b052f55dffec5c2 Mon Sep 17 00:00:00 2001 From: Ldm Public Date: Sun, 22 Nov 2020 22:45:34 +0000 Subject: [PATCH 86/97] Translated using Weblate (French) Currently translated at 99.7% (3558 of 3566 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 463e2cd47e..5784c30f6a 100644 --- a/OsmAnd/res/values-fr/strings.xml +++ b/OsmAnd/res/values-fr/strings.xml @@ -696,7 +696,7 @@ Public Identifiable Traçable - Privé + Privée Récupérer le véhicule au parking Avertissement Un rappel pour récupérer votre véhicule a été ajouté à votre agenda. Vous pouvez modifier ou supprimer ce rappel. @@ -3968,5 +3968,5 @@ \nOpenPlaceReviews : photos de PI ; \nMapillary : photos de rue ; \nWeb / Wikimedia : photos de PI réféfencés dans OpenStreetMap. - + \ No newline at end of file From 4c33a042ee080dc2d1d0c33e63008996c6d1a3a4 Mon Sep 17 00:00:00 2001 From: Ihor Hordiichuk Date: Sun, 22 Nov 2020 19:16:15 +0000 Subject: [PATCH 87/97] Translated using Weblate (Ukrainian) Currently translated at 99.9% (3565 of 3566 strings) --- OsmAnd/res/values-uk/strings.xml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/OsmAnd/res/values-uk/strings.xml b/OsmAnd/res/values-uk/strings.xml index a394ed4d31..60dbe91f88 100644 --- a/OsmAnd/res/values-uk/strings.xml +++ b/OsmAnd/res/values-uk/strings.xml @@ -3989,4 +3989,6 @@ \nOpenPlaceReviews — світлини POI; \nMapillary - зображення вулиць; \nМережа / Вікімедіа — світлини POI, вказані в даних OpenStreetMap. + Виберіть групи, які буде імпортовано. + Виберіть елементи, які буде імпортовано. \ No newline at end of file From 212f212c65e7d0abe977a0f82a210a8c8ac97ccc Mon Sep 17 00:00:00 2001 From: Mirco Zorzo Date: Sun, 22 Nov 2020 20:27:15 +0000 Subject: [PATCH 88/97] Translated using Weblate (Italian) Currently translated at 89.0% (3175 of 3566 strings) --- OsmAnd/res/values-it/strings.xml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/OsmAnd/res/values-it/strings.xml b/OsmAnd/res/values-it/strings.xml index 1f40937ddc..229d91e99f 100644 --- a/OsmAnd/res/values-it/strings.xml +++ b/OsmAnd/res/values-it/strings.xml @@ -3991,4 +3991,6 @@ Necessario per l\'importazione Il tuo dispositivo ha solo %1$s liberi. Libera dello spazio i deseleziona alcune voci da esportare. Non c\'è abbastanza spazio + Seleziona i gruppi da importare. + Seleziona gli oggetti da importare. \ No newline at end of file From 37c74c6bd83d8bbcafb4846f45b5b5ed10eeb056 Mon Sep 17 00:00:00 2001 From: ace shadow Date: Sun, 22 Nov 2020 19:43:04 +0000 Subject: [PATCH 89/97] Translated using Weblate (Slovak) Currently translated at 99.8% (3562 of 3566 strings) --- OsmAnd/res/values-sk/strings.xml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/OsmAnd/res/values-sk/strings.xml b/OsmAnd/res/values-sk/strings.xml index 2e0a815d55..9edcd71c9a 100644 --- a/OsmAnd/res/values-sk/strings.xml +++ b/OsmAnd/res/values-sk/strings.xml @@ -3989,4 +3989,6 @@ Potrebné pre import Na vašom zariadení je len %1$s voľného miesta. Prosím uvoľnite miesto alebo zrušte niektoré položky z exportu. Nie je dostatok miesta + Zvoľte skupiny, ktoré budú importované. + Zvoľte položky, ktoré budú importované. \ No newline at end of file From c439422ee094ab1eeb99d2494988f766a8d5414b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pavel=20Kotr=C4=8D?= Date: Sun, 22 Nov 2020 19:48:07 +0000 Subject: [PATCH 90/97] Translated using Weblate (Czech) Currently translated at 91.6% (3270 of 3566 strings) --- OsmAnd/res/values-cs/strings.xml | 58 +++++++++++++++++--------------- 1 file changed, 30 insertions(+), 28 deletions(-) diff --git a/OsmAnd/res/values-cs/strings.xml b/OsmAnd/res/values-cs/strings.xml index 4b67dca251..4c4069ba02 100644 --- a/OsmAnd/res/values-cs/strings.xml +++ b/OsmAnd/res/values-cs/strings.xml @@ -2005,7 +2005,7 @@ Délka %2$s Neomezené stahování map, aktualizací a modul Wikipedie. Míle/metry Hornolužická srbština - Nemáte zatím žádné GPX soubory + Nemáte zatím žádné soubory stop Do složky můžete také přidat GPX soubory Přidat další… Vzhled @@ -2055,10 +2055,10 @@ Délka %2$s Nahrát POI Starší vyhledávání Zobrazit starší způsob vyhledávání - Povolit dálnice - Povolit jízdu po dálnicích. + Použít dálnice + Povolí jízdu po dálnicích. Články Wikipedie v okolí - Hledat město nebo oblast + Město nebo oblast Přidat starší hledání do úvodního panelu. Srbsky (latinka) Čínsky (Hong Kong) @@ -2168,7 +2168,7 @@ Zobrazená oblast: %1$s x %2$s Zohlednit převýšení terénu (data od SRTM, ASTER a EU-DEM). Styl jízdy Vyberte složku pro soubor GPX - Soubor nemůže být přesunut. + Soubor se nepodařilo přesunout. Přesunout Trasy Doba pohybu @@ -2181,7 +2181,7 @@ Zobrazená oblast: %1$s x %2$s Průměrná rychlost Přidat nový adresář Bod(y) smazán(y). - Chystáte se smazat body (%1$d). Určitě smazat? + Opravdu chcete smazat %1$d bodů\? Potřebné obraty na trase Trasové body, body zájmu, pojmenované objekty Trasa @@ -2201,34 +2201,34 @@ Zobrazená oblast: %1$s x %2$s Možnosti parkování Děkujeme vám za zakoupení placené verze OsmAnd. Zvolte kolísání výšky - Jízda po pravé straně + Pravostranný provoz Automaticky Obnovit nákupy Mapová písma Zadejte adresu - Zadejte město + Zadejte město/oblast Zadejte směrovací číslo Nejbližší města Zvolte město - Zvolte směrovací číslo + Hledání PSČ Automatické přiblížení mapy - Klepnutím na toto tlačítko zapnete/vypnete automatické přibližování mapy v závislosti na vaší rychlosti. - Zapnout automatické přiblížení mapy - Vypnout automatické přiblížení mapy - Přidat cíl + Tlačítko pro zapnutí nebo vypnutí automatického přibližování mapy podle rychlosti. + Zapnout automatické přibližování + Vypnout automatické přibližování + Zadat cíl Nahradit cíl Přidat první mezicíl Zobrazit OSM poznámky Skrýt OSM poznámky - Klepnutím na toto tlačítko zobrazíte nebo skryjete OpenStreetMap poznámky na mapě. + Tlačítko pro zobrazení nebo skrytí OpenStreetMap poznámek na mapě. Seřazeno podle vzdálenosti - Najít Oblíbené - Pro zobrazení vrstevnic a stínování kopců je potřeba stáhnout překryvnou mapu této oblasti. - Pro zobrazení vrstevnic a stínování kopců je třeba zakoupit a aktivovat modul \"Vrstevnice\" + Hledat v Oblíbených + Pro zobrazení vertikálního stínování si stáhněte překryvnou mapu stínovaných svahů. + Pro zobrazení výškových stupňů si nainstalujte modul \'Vrstevnice\'. Skrýt od úrovně přiblížení Stáhnout mapu vrstevnic tohoto regionu. Modul - Chcete-li na mapě vidět vrstevnice, musíte koupit a nainstalovat modul \'Vrstevnice\' + Pro zobrazení výškových stupňů si zakupte a nainstalujte modul \'Vrstevnice\'. Barevné schéma Zobrazit od úrovně přiblížení Povolit soukromý přístup @@ -2237,14 +2237,14 @@ Zobrazená oblast: %1$s x %2$s Název skupiny Změnit barvu Upravit název - Animovat moji polohu - Povolit animaci mapy \'Mé polohy\' při navigaci. + Animovat vlastní polohu + Zapnout animovaný posun \'Mé polohy\' na mapě během navigace. Přehled Vyberte ulici v %1$s - Stisk tohoto tlačítka přidá střed obrazovky jako nový cíl navádění, z dříve nastaveného cíle se stane poslední mezicíl. - Stisk tohoto tlačítka přidá střed obrazovky jako nový cíl navádění. Pokud byl dříve nastaven jiný cíl, bude nahrazen. - Stisk tohoto tlačítka přidá střed obrazovky jako první mezicíl. + Tlačítko pro nastavení středu obrazovky jako nového cíle trasy. Z dříve nastaveného cíle se stane poslední mezicíl. + Tlačítko pro nastavení středu obrazovky jako nového cíle. Pokud byl dříve nastaven jiný cíl, bude nahrazen. + Tlačítko pro nastavení středu obrazovky jako prvního mezicíle. Bez překryvné vrstvy Bez podkladové vrstvy Chyba @@ -2267,7 +2267,7 @@ Zobrazená oblast: %1$s x %2$s Zvětšit okruh hledání Nic nalezeno Změňte vyhledávací dotaz nebo zvětšete okruh hledání. - Přepnout zobrazení poznámek OSM + Zobrazit nebo skrýt OSM poznámky Oprávnění Nepodařilo se naimportovat soubor. Prosím zkontrolujte, zda má OsmAnd oprávnění ke čtení souboru. Vzdálenost opravená @@ -2275,11 +2275,11 @@ Zobrazená oblast: %1$s x %2$s Otevřít Mapillary Instalovat Zlepšit pokrytí fotografií s Mapillary - Nainstalujte Mapillary a přidejte jednu nebo více fotografií na toto místo v mapě. + Nainstalujte Mapillary a přidejte fotografie na toto místo v mapě. On-line fotografie Přidat fotografie - Nemáme fotografie pro toto umístění. - Přispějte vlastním pohledem na toto místo přes Mapillary z úrovně ulice. + Zde nejsou žádné fotografie. + Sdílejte svůj vlastní pohled z úrovně ulice přes Mapillary. Umožňuje rychle přispět do Mapillary. On-line fotografie z ulic pro každého. Objevte místa, spolupracujte, zachyťte svět. Fotografie z ulic pro každého. Objevte místa, spolupracujte, zachyťte svět. @@ -3740,7 +3740,7 @@ Zobrazená oblast: %1$s x %2$s MGRS Simulovat polohu pomocí zaznamenané stopy GPX. Co je nového - Tlačítko pro určení středu obrazovky jako výchozího bodu a výpočet trasy do cíle nebo otevření dialogu pro výběr cíle. + Tlačítko pro nastavení středu obrazovky jako výchozího bodu a výpočet trasy do cíle nebo otevření dialogu pro výběr cíle. Pro jízdu na sněžném vozidle na vyhrazených cestách. Vlastní profil založte na jednom ze základních profilů. Ten určí základní nastavení jako viditelnost nástrojů, jednotky rychlosti a vzdálenosti. Toto jsou základní profily aplikace a návrhy vlastních profilů, na které mohou být rozšířeny: Ohodnotit @@ -3960,4 +3960,6 @@ Zobrazená oblast: %1$s x %2$s Vyžadováno pro import Na vašem zařízení je volných pouze %1$s. Uvolněte prosím nějaké místo nebo zrušte některé položky k exportu. Není zde dostatek místa + Vyberte skupiny, které se mají importovat. + Vyberte položky, které se mají importovat. \ No newline at end of file From 1c8157bd8466b3e24251a7b950c2532aff9232bd Mon Sep 17 00:00:00 2001 From: Ajeje Brazorf Date: Sun, 22 Nov 2020 19:35:20 +0000 Subject: [PATCH 91/97] Translated using Weblate (Sardinian) Currently translated at 99.7% (3558 of 3566 strings) --- OsmAnd/res/values-sc/strings.xml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/OsmAnd/res/values-sc/strings.xml b/OsmAnd/res/values-sc/strings.xml index 3a6de6cbea..c0cbb4608e 100644 --- a/OsmAnd/res/values-sc/strings.xml +++ b/OsmAnd/res/values-sc/strings.xml @@ -3990,4 +3990,6 @@ Netzessàriu pro s\'importatzione Su dispositivu tuo tenet petzi %1$s a disponimentu. Lìbera unu pagu de memòria o boga s\'ischerta a unos cantos elementos de esportare. Non b\'at logu bastante + Ischerta sos grupos de importare. + Ischerta sos elementos de importare. \ No newline at end of file From 9037efc46566746b5eaa23c4106aa52d6888065b Mon Sep 17 00:00:00 2001 From: Samantaz Fox Date: Sun, 22 Nov 2020 19:07:00 +0000 Subject: [PATCH 92/97] Translated using Weblate (French) Currently translated at 98.8% (3816 of 3860 strings) --- OsmAnd/res/values-fr/phrases.xml | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/OsmAnd/res/values-fr/phrases.xml b/OsmAnd/res/values-fr/phrases.xml index 40f35c26d0..b9824f9d5b 100644 --- a/OsmAnd/res/values-fr/phrases.xml +++ b/OsmAnd/res/values-fr/phrases.xml @@ -655,7 +655,7 @@ Club Restaurant et café Artisanat - Station essence + Station service Transport individuel Alimentation en eau potable Traitement des ordures ménagères @@ -3272,8 +3272,8 @@ Source d\'énergie : biomasse н/к н/к* - - 1А* + 1A + 1A* 1Б* @@ -3844,4 +3844,8 @@ Tableau des départs : non Ascenseur Tableau des départs + Liaison + Consulat + Ambassade + Point d\'eau potable \ No newline at end of file From 85df5e8500f681b5d570a6f0b7bb2bad03e956d4 Mon Sep 17 00:00:00 2001 From: Ajeje Brazorf Date: Sun, 22 Nov 2020 20:29:41 +0000 Subject: [PATCH 93/97] Translated using Weblate (Sardinian) Currently translated at 99.6% (3847 of 3860 strings) --- OsmAnd/res/values-sc/phrases.xml | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/OsmAnd/res/values-sc/phrases.xml b/OsmAnd/res/values-sc/phrases.xml index 5998039bd6..f58e0f4dc5 100644 --- a/OsmAnd/res/values-sc/phrases.xml +++ b/OsmAnd/res/values-sc/phrases.xml @@ -3861,4 +3861,19 @@ Ambassada Consoladu Ambassada + Suta-natzionale + Ufìtziu de rapresentàntzia + Cònsole onoràriu + Ufìtziu consolare + Agentzia consolare + Ghiadu dae unu cònsole + Nuntziadura + Setzione de interessos + Filiale + Ghiada dae un\'ambassadore + Ufìtziu de collegamentu + Servìtzios pro sos tzitadinos + Vistos pro immigrantes + Vistos pro no immigrantes + Ufìtziu de collegamentu \ No newline at end of file From c78b8d67b645acf8b7023defbdaa89b404a04e77 Mon Sep 17 00:00:00 2001 From: Verdulo Date: Sun, 22 Nov 2020 18:31:41 +0000 Subject: [PATCH 94/97] Translated using Weblate (Esperanto) Currently translated at 100.0% (3860 of 3860 strings) --- OsmAnd/res/values-eo/phrases.xml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/OsmAnd/res/values-eo/phrases.xml b/OsmAnd/res/values-eo/phrases.xml index 36f24f20bd..fb0ab54dc6 100644 --- a/OsmAnd/res/values-eo/phrases.xml +++ b/OsmAnd/res/values-eo/phrases.xml @@ -3865,4 +3865,12 @@ Kvazaŭ‑ambasadejo Konsulejo Ambasadejo + ne + jes + ne + jes + ne + jes + subŝtata/provinca oficejo + reprezenta oficejo \ No newline at end of file From a0951c6e461cae49881b5be2a843adefc7b1430b Mon Sep 17 00:00:00 2001 From: Samantaz Fox Date: Sun, 22 Nov 2020 23:28:41 +0000 Subject: [PATCH 95/97] Translated using Weblate (French) Currently translated at 99.8% (3561 of 3568 strings) --- OsmAnd/res/values-fr/strings.xml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/OsmAnd/res/values-fr/strings.xml b/OsmAnd/res/values-fr/strings.xml index 5784c30f6a..4ed44b9442 100644 --- a/OsmAnd/res/values-fr/strings.xml +++ b/OsmAnd/res/values-fr/strings.xml @@ -1,7 +1,7 @@ Modifications hors-ligne - Toujours utiliser l\'édition hors-ligne. + Si le mode d\'édition hors-ligne est activé, les modifications seront enregistrées localement puis envoyées à la demande. Sinon, les modifications seront envoyées immédiatement. Les modifications de points d\'intérêt dans l\'application sont sans effet sur les cartes téléchargées, les modifications sont enregistrées dans un fichier de votre appareil. Téléversement… {0} Points d\'intérêt / Notes ont été téléversés @@ -3969,4 +3969,6 @@ \nMapillary : photos de rue ; \nWeb / Wikimedia : photos de PI réféfencés dans OpenStreetMap. + Utiliser dev.openstreetmap.org plutôt que openstreetmap.org pour tester l\'envoi des notes OSM / Points d\'intérêt / GPX. + Utiliser dev.openstreetmap.org \ No newline at end of file From 8ae721b378157890a885d3db073790d223d63fb8 Mon Sep 17 00:00:00 2001 From: Ldm Public Date: Sun, 22 Nov 2020 22:47:18 +0000 Subject: [PATCH 96/97] Translated using Weblate (French) Currently translated at 99.8% (3561 of 3568 strings) --- OsmAnd/res/values-fr/strings.xml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/OsmAnd/res/values-fr/strings.xml b/OsmAnd/res/values-fr/strings.xml index 4ed44b9442..cc12531b01 100644 --- a/OsmAnd/res/values-fr/strings.xml +++ b/OsmAnd/res/values-fr/strings.xml @@ -3971,4 +3971,6 @@ Utiliser dev.openstreetmap.org plutôt que openstreetmap.org pour tester l\'envoi des notes OSM / Points d\'intérêt / GPX. Utiliser dev.openstreetmap.org + + \ No newline at end of file From c9b6baabfd98b0639a8221e4a2dd4b3b833a72f5 Mon Sep 17 00:00:00 2001 From: Vitaliy Date: Mon, 23 Nov 2020 02:12:13 +0200 Subject: [PATCH 97/97] small fixes --- ...etweenPointsBottomSheetDialogFragment.java | 287 ++++++++---------- 1 file changed, 135 insertions(+), 152 deletions(-) diff --git a/OsmAnd/src/net/osmand/plus/measurementtool/RouteBetweenPointsBottomSheetDialogFragment.java b/OsmAnd/src/net/osmand/plus/measurementtool/RouteBetweenPointsBottomSheetDialogFragment.java index 9dc8edad74..54bc3469be 100644 --- a/OsmAnd/src/net/osmand/plus/measurementtool/RouteBetweenPointsBottomSheetDialogFragment.java +++ b/OsmAnd/src/net/osmand/plus/measurementtool/RouteBetweenPointsBottomSheetDialogFragment.java @@ -2,7 +2,6 @@ package net.osmand.plus.measurementtool; import android.graphics.drawable.Drawable; import android.os.Bundle; -import android.util.Pair; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; @@ -15,14 +14,14 @@ import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentManager; import net.osmand.AndroidUtils; -import net.osmand.GPXUtilities; +import net.osmand.GPXUtilities.WptPt; import net.osmand.PlatformUtil; import net.osmand.plus.OsmAndFormatter; import net.osmand.plus.OsmandApplication; import net.osmand.plus.R; import net.osmand.plus.UiUtilities; -import net.osmand.plus.base.BottomSheetBehaviourDialogFragment; import net.osmand.plus.activities.MapActivity; +import net.osmand.plus.base.BottomSheetBehaviourDialogFragment; import net.osmand.plus.base.bottomsheetmenu.BaseBottomSheetItem; import net.osmand.plus.settings.backend.ApplicationMode; import net.osmand.util.MapUtils; @@ -31,10 +30,9 @@ import org.apache.commons.logging.Log; import java.util.ArrayList; import java.util.List; -import java.util.Map; -import static net.osmand.plus.UiUtilities.CustomRadioButtonType.START; import static net.osmand.plus.UiUtilities.CustomRadioButtonType.END; +import static net.osmand.plus.UiUtilities.CustomRadioButtonType.START; import static net.osmand.plus.measurementtool.MeasurementEditingContext.DEFAULT_APP_MODE; import static net.osmand.plus.measurementtool.SelectFileBottomSheet.BOTTOM_SHEET_HEIGHT_DP; @@ -67,153 +65,6 @@ public class RouteBetweenPointsBottomSheetDialogFragment extends BottomSheetBeha ALL, } - private String getButtonText(RouteBetweenPointsDialogMode dialogMode) { - switch (dialogType) { - case WHOLE_ROUTE_CALCULATION: - switch (dialogMode) { - case SINGLE: - return getString(R.string.next_segment); - case ALL: - return getString(R.string.whole_track); - } - break; - case NEXT_ROUTE_CALCULATION: - switch (dialogMode) { - case SINGLE: - return getString(R.string.next_segment) + " " + getDescription(false, true); - case ALL: - return getString(R.string.all_next_segments) + " " + getDescription(false, false); - } - break; - case PREV_ROUTE_CALCULATION: - switch (dialogMode) { - case SINGLE: - return getString(R.string.previous_segment) + " " + getDescription(true, true); - case ALL: - return getString(R.string.all_previous_segments) + " " + getDescription(true, false); - } - break; - } - return ""; - } - - private String getButtonDescr(RouteBetweenPointsDialogMode dialogMode) { - switch (dialogType) { - case WHOLE_ROUTE_CALCULATION: - switch (dialogMode) { - case SINGLE: - return getString(R.string.route_between_points_next_segment_button_desc); - case ALL: - return getString(R.string.route_between_points_whole_track_button_desc); - } - break; - case NEXT_ROUTE_CALCULATION: - switch (dialogMode) { - case SINGLE: - return getString(R.string.only_selected_segment_recalc); - case ALL: - return getString(R.string.all_next_segments_will_be_recalc); - } - break; - case PREV_ROUTE_CALCULATION: - switch (dialogMode) { - case SINGLE: - return getString(R.string.only_selected_segment_recalc); - case ALL: - return getString(R.string.all_previous_segments_will_be_recalc); - } - break; - } - return ""; - } - - @NonNull - private String getDescription(boolean before, boolean single) { - MapActivity mapActivity = (MapActivity) getActivity(); - if (mapActivity == null) { - return ""; - } - - MeasurementEditingContext editingCtx = mapActivity.getMapLayers().getMeasurementToolLayer().getEditingCtx(); - int pos = editingCtx.getSelectedPointPosition(); - List points = editingCtx.getPoints(); - - int startIdx; - int endIdx; - if (before) { - startIdx = 1; - endIdx = pos; - } else { - startIdx = pos + 1; - endIdx = points.size() - 1; - } - - float dist = !single ? getDistForAllSegments(points, startIdx, endIdx) : getDistForSingleSegment(editingCtx, points, startIdx, endIdx); - - return OsmAndFormatter.getFormattedDistance(dist, mapActivity.getMyApplication()); - } - - private float getDistForAllSegments(List points, int startIdx, int endIdx) { - float dist = 0; - for (int i = startIdx; i <= endIdx; i++) { - GPXUtilities.WptPt first = points.get(i - 1); - GPXUtilities.WptPt second = points.get(i); - dist += MapUtils.getDistance(first.lat, first.lon, second.lat, second.lon); - } - return dist; - } - - private float getDistForSingleSegment(MeasurementEditingContext editingCtx, List points, int startIdx, int endIdx) { - float dist = 0; - Map, MeasurementEditingContext.RoadSegmentData> roadSegmentDataMap = editingCtx.getRoadSegmentData(); - if (startIdx <= endIdx) { - Pair pair = new Pair<>(points.get(startIdx), points.get(startIdx - 1)); - MeasurementEditingContext.RoadSegmentData data = roadSegmentDataMap.get(pair); - if (data == null) { - dist += MapUtils.getDistance(pair.first.getLatitude(), pair.first.getLongitude(), - pair.second.getLatitude(), pair.second.getLongitude()); - } else { - dist += data.getDistance(); - } - } - return dist; - } - - private void addDelimiterView(LinearLayout container) { - View row = UiUtilities.getInflater(getContext(), nightMode).inflate(R.layout.divider, container, false); - View divider = row.findViewById(R.id.divider); - ViewGroup.MarginLayoutParams params = (ViewGroup.MarginLayoutParams) divider.getLayoutParams(); - params.topMargin = row.getResources().getDimensionPixelSize(R.dimen.bottom_sheet_title_padding_bottom); - params.bottomMargin = row.getResources().getDimensionPixelSize(R.dimen.bottom_sheet_title_padding_bottom); - container.addView(row); - } - - public void setDefaultDialogMode(RouteBetweenPointsDialogMode defaultDialogMode) { - this.defaultDialogMode = defaultDialogMode; - updateModeButtons(); - } - - public void updateModeButtons() { - UiUtilities.updateCustomRadioButtons(getMyApplication(), customRadioButton, nightMode, - defaultDialogMode == RouteBetweenPointsDialogMode.SINGLE ? START : END); - btnDescription.setText(getButtonDescr(defaultDialogMode)); - } - - private void addProfileView(LinearLayout container, View.OnClickListener onClickListener, Object tag, - Drawable icon, CharSequence title, boolean check) { - View row = UiUtilities.getInflater(getContext(), nightMode) - .inflate(R.layout.bottom_sheet_item_with_radio_btn, container, false); - ((RadioButton) row.findViewById(R.id.compound_button)).setChecked(check); - ImageView imageView = row.findViewById(R.id.icon); - imageView.setImageDrawable(icon); - ViewGroup.MarginLayoutParams params = (ViewGroup.MarginLayoutParams) imageView.getLayoutParams(); - params.rightMargin = container.getContext().getResources().getDimensionPixelSize(R.dimen.bottom_sheet_icon_margin_large); - ((TextView) row.findViewById(R.id.title)).setText(title); - row.setOnClickListener(onClickListener); - row.setTag(tag); - container.addView(row); - } - @Override public void createMenuItems(Bundle savedInstanceState) { Bundle args = getArguments(); @@ -232,6 +83,7 @@ public class RouteBetweenPointsBottomSheetDialogFragment extends BottomSheetBeha .inflate(R.layout.fragment_route_between_points_bottom_sheet_dialog, null, false); customRadioButton = mainView.findViewById(R.id.custom_radio_buttons); + customRadioButton.setMinimumHeight(getResources().getDimensionPixelSize(R.dimen.route_info_control_buttons_height)); TextView singleModeButton = mainView.findViewById(R.id.left_button); singleModeButton.setText(getButtonText(RouteBetweenPointsDialogMode.SINGLE)); TextView allModeButton = mainView.findViewById(R.id.right_button); @@ -312,6 +164,137 @@ public class RouteBetweenPointsBottomSheetDialogFragment extends BottomSheetBeha super.onDestroyView(); } + private void addDelimiterView(LinearLayout container) { + View row = UiUtilities.getInflater(getContext(), nightMode).inflate(R.layout.divider, container, false); + View divider = row.findViewById(R.id.divider); + ViewGroup.MarginLayoutParams params = (ViewGroup.MarginLayoutParams) divider.getLayoutParams(); + params.topMargin = row.getResources().getDimensionPixelSize(R.dimen.bottom_sheet_title_padding_bottom); + params.bottomMargin = row.getResources().getDimensionPixelSize(R.dimen.bottom_sheet_title_padding_bottom); + container.addView(row); + } + + public void setDefaultDialogMode(RouteBetweenPointsDialogMode defaultDialogMode) { + this.defaultDialogMode = defaultDialogMode; + updateModeButtons(); + } + + public void updateModeButtons() { + UiUtilities.updateCustomRadioButtons(getMyApplication(), customRadioButton, nightMode, + defaultDialogMode == RouteBetweenPointsDialogMode.SINGLE ? START : END); + btnDescription.setText(getButtonDescr(defaultDialogMode)); + } + + private void addProfileView(LinearLayout container, View.OnClickListener onClickListener, Object tag, + Drawable icon, CharSequence title, boolean check) { + View row = UiUtilities.getInflater(getContext(), nightMode) + .inflate(R.layout.bottom_sheet_item_with_radio_btn, container, false); + ((RadioButton) row.findViewById(R.id.compound_button)).setChecked(check); + ImageView imageView = row.findViewById(R.id.icon); + imageView.setImageDrawable(icon); + ViewGroup.MarginLayoutParams params = (ViewGroup.MarginLayoutParams) imageView.getLayoutParams(); + params.rightMargin = container.getContext().getResources().getDimensionPixelSize(R.dimen.bottom_sheet_icon_margin_large); + ((TextView) row.findViewById(R.id.title)).setText(title); + row.setOnClickListener(onClickListener); + row.setTag(tag); + container.addView(row); + } + + private String getButtonText(RouteBetweenPointsDialogMode dialogMode) { + switch (dialogType) { + case WHOLE_ROUTE_CALCULATION: + switch (dialogMode) { + case SINGLE: + return getString(R.string.next_segment); + case ALL: + return getString(R.string.whole_track); + } + break; + case NEXT_ROUTE_CALCULATION: + String nextDescr = getDescription(false, dialogMode); + switch (dialogMode) { + case SINGLE: + return getString(R.string.ltr_or_rtl_combine_via_space, getString(R.string.next_segment), nextDescr); + case ALL: + return getString(R.string.ltr_or_rtl_combine_via_space, getString(R.string.all_next_segments), nextDescr); + } + break; + case PREV_ROUTE_CALCULATION: + String prevDescr = getDescription(true, dialogMode); + switch (dialogMode) { + case SINGLE: + return getString(R.string.ltr_or_rtl_combine_via_space, getString(R.string.previous_segment), prevDescr); + case ALL: + return getString(R.string.ltr_or_rtl_combine_via_space, getString(R.string.all_previous_segments), prevDescr); + } + break; + } + return ""; + } + + private String getButtonDescr(RouteBetweenPointsDialogMode dialogMode) { + switch (dialogType) { + case WHOLE_ROUTE_CALCULATION: + switch (dialogMode) { + case SINGLE: + return getString(R.string.route_between_points_next_segment_button_desc); + case ALL: + return getString(R.string.route_between_points_whole_track_button_desc); + } + break; + case NEXT_ROUTE_CALCULATION: + switch (dialogMode) { + case SINGLE: + return getString(R.string.only_selected_segment_recalc); + case ALL: + return getString(R.string.all_next_segments_will_be_recalc); + } + break; + case PREV_ROUTE_CALCULATION: + switch (dialogMode) { + case SINGLE: + return getString(R.string.only_selected_segment_recalc); + case ALL: + return getString(R.string.all_previous_segments_will_be_recalc); + } + break; + } + return ""; + } + + @NonNull + private String getDescription(boolean before, RouteBetweenPointsDialogMode dialogMode) { + MapActivity mapActivity = (MapActivity) getActivity(); + if (mapActivity == null) { + return ""; + } + MeasurementEditingContext editingCtx = mapActivity.getMapLayers().getMeasurementToolLayer().getEditingCtx(); + int pos = editingCtx.getSelectedPointPosition(); + List points = editingCtx.getPoints(); + + float dist = 0; + if (dialogMode == RouteBetweenPointsDialogMode.SINGLE) { + WptPt selectedPoint = points.get(pos); + WptPt second = points.get(before ? pos - 1 : pos + 1); + dist += MapUtils.getDistance(selectedPoint.lat, selectedPoint.lon, second.lat, second.lon); + } else { + int startIdx; + int endIdx; + if (before) { + startIdx = 1; + endIdx = pos; + } else { + startIdx = pos + 1; + endIdx = points.size() - 1; + } + for (int i = startIdx; i <= endIdx; i++) { + WptPt first = points.get(i - 1); + WptPt second = points.get(i); + dist += MapUtils.getDistance(first.lat, first.lon, second.lat, second.lon); + } + } + return OsmAndFormatter.getFormattedDistance(dist, mapActivity.getMyApplication()); + } + public static void showInstance(FragmentManager fm, Fragment targetFragment, RouteBetweenPointsDialogType dialogType, RouteBetweenPointsDialogMode defaultDialogMode,