Merge pull request #10300 from osmandapp/master

update test branch
This commit is contained in:
Hardy 2020-11-30 09:28:48 +01:00 committed by GitHub
commit 4e56b4c3f6
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
53 changed files with 1305 additions and 570 deletions

View file

@ -1,5 +1,6 @@
apply plugin: 'java' apply plugin: 'java'
apply plugin: 'maven-publish' apply plugin: 'maven-publish'
apply plugin: 'ivy-publish'
configurations { configurations {
android android
@ -85,11 +86,21 @@ artifacts {
} }
publishing { publishing {
repositories {
ivy {
url = System.getenv("OSMAND_BINARIES_IVY_ROOT") ?: "./"
}
}
publications { publications {
maven(MavenPublication) { maven(MavenPublication) {
artifactId "osmand-base" artifactId "osmand-base"
from components.java from components.java
} }
ivyJava(IvyPublication) {
artifact androidJar {
classifier 'android'
}
}
} }
} }

2
OsmAnd/.gitignore vendored
View file

@ -2,7 +2,7 @@ gradle
gradlew gradlew
gradlew.bat gradlew.bat
/net.osmand
aarDependencies aarDependencies
libs/android*.jar libs/android*.jar
libs/com.*.jar libs/com.*.jar

View file

@ -1,4 +1,5 @@
apply plugin: 'com.android.library' apply plugin: 'com.android.library'
apply plugin: 'ivy-publish'
task printc { task printc {
configurations.each { if(it.isCanBeResolved()) println it.name } configurations.each { if(it.isCanBeResolved()) println it.name }
@ -338,75 +339,47 @@ task appStart(type: Exec) {
// commandLine 'cmd', '/c', 'adb', 'shell', 'am', 'start', '-n', 'net.osmand.plus/net.osmand.plus.activities.MapActivity' // commandLine 'cmd', '/c', 'adb', 'shell', 'am', 'start', '-n', 'net.osmand.plus/net.osmand.plus.activities.MapActivity'
} }
artifacts { project.afterEvaluate {
archives(file("../OsmAnd-java/build/libs/OsmAnd-java-android-1.0.jar")) { publishing {
classifier "OsmAnd-java-android" repositories {
name 'OsmAnd' ivy {
type "jar"
}
archives(file("$buildDir/outputs/aar/OsmAnd-legacy-x86-debug.aar")) {
classifier 'legacyX86Debug'
name 'OsmAnd'
extension 'aar'
}
archives(file("$buildDir/outputs/aar/OsmAnd-legacy-x86-release.aar")) {
classifier 'legacyX86Release'
name 'OsmAnd'
extension 'aar'
}
archives(file("$buildDir/outputs/aar/OsmAnd-legacy-arm64-debug.aar")) {
classifier 'legacyArm64Debug'
name 'OsmAnd'
extension 'aar'
}
archives(file("$buildDir/outputs/aar/OsmAnd-legacy-arm64-release.aar")) {
classifier 'legacyArm64Release'
name 'OsmAnd'
extension 'aar'
}
archives(file("$buildDir/outputs/aar/OsmAnd-legacy-armonly-debug.aar")) {
classifier 'legacyArmonlyDebug'
name 'OsmAnd'
extension 'aar'
}
archives(file("$buildDir/outputs/aar/OsmAnd-legacy-armonly-release.aar")) {
classifier 'legacyArmonlyRelease'
name 'OsmAnd'
extension 'aar'
}
archives(file("$buildDir/outputs/aar/OsmAnd-legacy-armv7-debug.aar")) {
classifier 'legacyArmv7Debug'
name 'OsmAnd'
extension 'aar'
}
archives(file("$buildDir/outputs/aar/OsmAnd-legacy-armv7-release.aar")) {
classifier 'legacyArmv7Release'
name 'OsmAnd'
extension 'aar'
}
archives(file("$buildDir/outputs/aar/OsmAnd-legacy-fat-debug.aar")) {
classifier 'legacyFatDebug'
name 'OsmAnd'
extension 'aar'
}
archives(file("$buildDir/outputs/aar/OsmAnd-legacy-fat-release.aar")) {
classifier 'legacyFatRelease'
name 'OsmAnd'
extension 'aar'
}
}
// Uploading artifacts to local path
group = 'net.osmand'
uploadArchives {
repositories.ivy {
// credentials {
// username ""
// password ""
// }
url = System.getenv("OSMAND_BINARIES_IVY_ROOT") ?: "./" url = System.getenv("OSMAND_BINARIES_IVY_ROOT") ?: "./"
version = "1.0-SNAPSHOT" }
}
publications {
aar(IvyPublication) {
artifact bundleLegacyX86DebugAar {
classifier 'legacyX86Debug'
}
artifact bundleLegacyX86ReleaseAar {
classifier 'legacyX86Release'
}
artifact bundleLegacyArm64DebugAar {
classifier 'legacyArm64Debug'
}
artifact bundleLegacyArm64ReleaseAar {
classifier 'legacyArm64Release'
}
artifact bundleLegacyArmonlyDebugAar {
classifier 'legacyArmonlyDebug'
}
artifact bundleLegacyArmonlyReleaseAar {
classifier 'legacyArmonlyRelease'
}
artifact bundleLegacyArmv7DebugAar {
classifier 'legacyArmv7Debug'
}
artifact bundleLegacyArmv7ReleaseAar {
classifier 'legacyArmv7Release'
}
artifact bundleLegacyFatDebugAar {
classifier 'legacyFatDebug'
}
artifact bundleLegacyFatReleaseAar {
classifier 'legacyFatRelease'
}
}
}
} }
} }

View file

@ -0,0 +1,20 @@
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:osmand="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:orientation="vertical"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1">
<net.osmand.plus.widgets.TextViewEx
android:id="@+id/title"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="?attr/selectableItemBackground"
android:gravity="center"
android:textSize="@dimen/default_desc_text_size"
osmand:typeface="@string/font_roboto_medium"
tools:text="@string/shared_string_left"/>
</FrameLayout>

View file

@ -130,25 +130,32 @@
tools:text="@string/add_point_after"/> tools:text="@string/add_point_after"/>
</RelativeLayout> </RelativeLayout>
<LinearLayout <FrameLayout
android:id="@+id/additional_info_container" android:id="@+id/info_type_buttons_container"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content">
android:orientation="vertical"
android:visibility="gone" >
<include layout="@layout/custom_radio_buttons" /> <include
layout="@layout/custom_radio_buttons"
<View
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="@dimen/content_padding_small" /> android:layout_height="@dimen/measurement_tool_button_height"
android:layout_marginStart="@dimen/content_padding"
android:layout_marginEnd="@dimen/content_padding"
android:layout_marginBottom="@dimen/measurement_tool_content_padding_medium" />
</FrameLayout>
<FrameLayout <FrameLayout
android:id="@+id/cards_container" android:id="@+id/cards_container"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" /> android:layout_height="@dimen/measurement_tool_info_cards_container_height"
android:visibility="gone" />
</LinearLayout> <View
android:id="@+id/bottom_panel_divider"
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="?attr/dashboard_divider" />
<LinearLayout <LinearLayout
android:id="@+id/measure_mode_controls" android:id="@+id/measure_mode_controls"

View file

@ -32,7 +32,7 @@
<FrameLayout <FrameLayout
android:id="@+id/markers_list_container" android:id="@+id/markers_list_container"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="@dimen/measurement_tool_points_list_container_height" android:layout_height="@dimen/measurement_tool_info_cards_container_height"
tools:background="@color/activity_background_color_dark"> tools:background="@color/activity_background_color_dark">
<androidx.recyclerview.widget.RecyclerView <androidx.recyclerview.widget.RecyclerView

View file

@ -136,11 +136,11 @@
<View <View
android:layout_width="@dimen/standard_icon_size" android:layout_width="@dimen/standard_icon_size"
android:layout_height="@dimen/standard_icon_size" android:layout_height="@dimen/standard_icon_size"
android:layout_marginLeft="@dimen/content_padding"
android:layout_marginStart="@dimen/content_padding" android:layout_marginStart="@dimen/content_padding"
android:layout_marginLeft="@dimen/content_padding"
android:layout_marginEnd="@dimen/content_padding" android:layout_marginEnd="@dimen/content_padding"
android:layout_marginRight="@dimen/content_padding" android:layout_marginRight="@dimen/content_padding"
android:visibility="invisible"/> android:visibility="invisible" />
<LinearLayout <LinearLayout
android:layout_width="0dp" android:layout_width="0dp"
@ -173,12 +173,4 @@
</LinearLayout> </LinearLayout>
<androidx.appcompat.widget.AppCompatImageView
android:layout_width="match_parent"
android:layout_height="5dp"
android:layout_gravity="bottom"
android:alpha="0.5"
android:scaleType="fitXY"
osmand:srcCompat="@drawable/bg_shadow_onmap" />
</LinearLayout> </LinearLayout>

View file

@ -3,7 +3,7 @@
xmlns:osmand="http://schemas.android.com/apk/res-auto" xmlns:osmand="http://schemas.android.com/apk/res-auto"
android:id="@+id/points_list_container" android:id="@+id/points_list_container"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="@dimen/measurement_tool_points_list_container_height" android:layout_height="wrap_content"
android:background="?attr/activity_background_color"> android:background="?attr/activity_background_color">
<androidx.recyclerview.widget.RecyclerView <androidx.recyclerview.widget.RecyclerView

View file

@ -3986,4 +3986,5 @@
<string name="use_dev_url">استخدم dev.openstreetmap.org</string> <string name="use_dev_url">استخدم dev.openstreetmap.org</string>
<string name="cannot_upload_image">لا يمكن تحميل الصورة، من فضلك، حاول مرة أخرى في وقت لاحق</string> <string name="cannot_upload_image">لا يمكن تحميل الصورة، من فضلك، حاول مرة أخرى في وقت لاحق</string>
<string name="select_picture">تحديد صورة</string> <string name="select_picture">تحديد صورة</string>
<string name="ltr_or_rtl_combine_via_star">%1$s * %2$s</string>
</resources> </resources>

View file

@ -233,7 +233,7 @@
<string name="select_animate_speedup">Velocitat de simulació de la ruta:</string> <string name="select_animate_speedup">Velocitat de simulació de la ruta:</string>
<string name="select_navigation_mode">Mitjà de transport:</string> <string name="select_navigation_mode">Mitjà de transport:</string>
<string name="offline_edition">Edició fora de línia</string> <string name="offline_edition">Edició fora de línia</string>
<string name="offline_edition_descr">Utilitza sempre l\'edició fora de línia.</string> <string name="offline_edition_descr">"En desconnexió la edició està activada però llavors els canvis es desen d\'entrada localment i es pujaran quan es demani; altrament els canvis s\'actualitzen immediatament."</string>
<string name="local_openstreetmap_descr_title">Edició asincrònica de l\'OSM:</string> <string name="local_openstreetmap_descr_title">Edició asincrònica de l\'OSM:</string>
<string name="accessibility_mode_descr">Activa les funcions per a usuaris amb discapacitats.</string> <string name="accessibility_mode_descr">Activa les funcions per a usuaris amb discapacitats.</string>
<string name="update_poi_does_not_change_indexes">Els canvis realitzats en els PDI a l\'aplicació no afecten els fitxers de mapa baixats, els canvis es desen en un fitxer local.</string> <string name="update_poi_does_not_change_indexes">Els canvis realitzats en els PDI a l\'aplicació no afecten els fitxers de mapa baixats, els canvis es desen en un fitxer local.</string>
@ -393,7 +393,7 @@
\n- Indicacions de carril, velocitat màxima permesa, veus enregistrades i sintetitzades \n- Indicacions de carril, velocitat màxima permesa, veus enregistrades i sintetitzades
\n</string> \n</string>
<string name="rendering_attr_contourLines_description">Seleccioneu el nivell mínim de zoom per mostrar el mapa si està disponible. Caldrà el fitxer SRTM separat:</string> <string name="rendering_attr_contourLines_description">Seleccioneu el nivell mínim de zoom per mostrar el mapa si està disponible. Caldrà el fitxer SRTM separat:</string>
<string name="osmand_development_plugin_description">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.</string> <string name="osmand_development_plugin_description">Configuració de característiques per al desenvolupament i depuració, com simulació de navegació, rendiment de renderitzat o les indicacions de veu. Adreçat a desenvolupadorsimés que a usuaris normals de l\'aplicació.</string>
<string name="accessibility_default">En consonància amb la configuració del sistema Android</string> <string name="accessibility_default">En consonància amb la configuració del sistema Android</string>
<string name="zoomIs">El nivell de zoom és</string> <string name="zoomIs">El nivell de zoom és</string>
<string name="settings_direction_style_descr">Trieu l\'estil per indicar direccions relatives mentre s\'està en moviment</string> <string name="settings_direction_style_descr">Trieu l\'estil per indicar direccions relatives mentre s\'està en moviment</string>
@ -1873,7 +1873,7 @@
\nCalen {3} MB temporalment i {1} MB de permanents. \nCalen {3} MB temporalment i {1} MB de permanents.
\n(Només es disposa de {2} MB).</string> \n(Només es disposa de {2} MB).</string>
<string name="download_files_question_space_with_temp">Voleu baixar {0} fitxer(s)\? <string name="download_files_question_space_with_temp">Voleu baixar {0} fitxer(s)\?
\nS\'utilitzen {3} MB temporalment i {1} MB permanentment. (De {2} MB).</string> \nS\'utilitzaran {3} MB temporalment i {1} MB permanentment. (De {2} MB).</string>
<string name="shared_string_move_up">Puja ↑</string> <string name="shared_string_move_up">Puja ↑</string>
<string name="shared_string_move_down">Baixa ↓</string> <string name="shared_string_move_down">Baixa ↓</string>
<string name="avoid_road">Evita la via</string> <string name="avoid_road">Evita la via</string>
@ -2151,7 +2151,7 @@
<string name="quick_action_map_source">Canvia l\'origen del mapa</string> <string name="quick_action_map_source">Canvia l\'origen del mapa</string>
<string name="quick_action_map_source_title">Orígens de mapa</string> <string name="quick_action_map_source_title">Orígens de mapa</string>
<string name="quick_action_map_source_action">Afegeix origen del mapa</string> <string name="quick_action_map_source_action">Afegeix origen del mapa</string>
<string name="quick_action_map_source_switch">L\'origen del mapa s\'ha canviat al de \"%s\".</string> <string name="quick_action_map_source_switch">L\'origen del mapa s\'ha canviat a \"%s\".</string>
<string name="quick_action_btn_tutorial_title">Modifica la posició del botó</string> <string name="quick_action_btn_tutorial_title">Modifica la posició del botó</string>
<string name="quick_action_btn_tutorial_descr">Si premeu i arrossegueu alhora, el botó canvia la seva posició a la pantalla.</string> <string name="quick_action_btn_tutorial_descr">Si premeu i arrossegueu alhora, el botó canvia la seva posició a la pantalla.</string>
<string name="quick_action_interim_dialog">Mostra un diàleg provisional</string> <string name="quick_action_interim_dialog">Mostra un diàleg provisional</string>
@ -2364,7 +2364,8 @@
\n• Representació i navegació a mida per ciclistes i vianants \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• 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• 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)</string> \n• Indicació opcional de la velocitat i l\'altitud
\n• Visualització de corbes de nivell i ombrejat de relleu (requereix connector addicional)</string>
<string name="osmand_plus_extended_description_part7">Col·laboreu directament a OSM <string name="osmand_plus_extended_description_part7">Col·laboreu directament a OSM
\n• Notifiqueu errors en les dades \n• Notifiqueu errors en les dades
\n• Pugeu traces GPX directament a OSM des de l\'aplicació \n• Pugeu traces GPX directament a OSM des de l\'aplicació
@ -3163,7 +3164,7 @@
<string name="rendering_attr_highway_class_track_grade4_name">Grau 4</string> <string name="rendering_attr_highway_class_track_grade4_name">Grau 4</string>
<string name="rendering_attr_highway_class_track_grade5_name">Grau 5</string> <string name="rendering_attr_highway_class_track_grade5_name">Grau 5</string>
<string name="external_input_device">Dispositius d\'entrada externs</string> <string name="external_input_device">Dispositius d\'entrada externs</string>
<string name="external_input_device_descr">Seleccioneu un aparell com a teclat genèric o WunderLINQ per a controls externs.</string> <string name="external_input_device_descr">Seleccioneu un aparell de control extern, com un teclat o un WunderLINQ.</string>
<string name="sett_no_ext_input">Cap</string> <string name="sett_no_ext_input">Cap</string>
<string name="sett_generic_ext_input">Teclat</string> <string name="sett_generic_ext_input">Teclat</string>
<string name="sett_wunderlinq_ext_input">WunderLINQ</string> <string name="sett_wunderlinq_ext_input">WunderLINQ</string>
@ -3869,4 +3870,37 @@
<string name="lenght_limit_description">Proporcioneu la llargada del vostre vehicle, pot haver-hi rutes restringides als vehicles llargs.</string> <string name="lenght_limit_description">Proporcioneu la llargada del vostre vehicle, pot haver-hi rutes restringides als vehicles llargs.</string>
<string name="gpx_parse_error">No s\'ha generat correctament l\'arxiu GPX. Indiqueu-ho a l\'equip de suport per continuar investigant.</string> <string name="gpx_parse_error">No s\'ha generat correctament l\'arxiu GPX. Indiqueu-ho a l\'equip de suport per continuar investigant.</string>
<string name="save_track_to_gpx">Enregistra automàticament la traça durant la navegació</string> <string name="save_track_to_gpx">Enregistra automàticament la traça durant la navegació</string>
<string name="message_you_need_add_two_points_to_show_graphs">Cal afegir almenys dos punts</string>
<string name="use_dev_url_descr">Canvieu per utilitzar dev.openstreetmap.org en lloc d\'openstreetmap.org en provar la pujada de nota OSM / PDI / GPX.</string>
<string name="osm_edit_close_note">Tanca la nota d\'OSM</string>
<string name="osm_edit_comment_note">Comentari de la nota d\'OSM</string>
<string name="osm_login_descr">Podeu iniciar la sessió mitjançant el mètode segur OAuth o fer servir el vostre usuari i contrasenya.</string>
<string name="shared_string_add_photo">Afegeix foto</string>
<string name="register_on_openplacereviews">Registreu-vos a
\nOpenPlaceReviews.org</string>
<string name="register_on_openplacereviews_desc">Les fotos les proporciona el projecte OpenPlaceReviews.org de dades obertes. Per poder pujar les vostres fotos, cal que us registreu al lloc web.</string>
<string name="register_opr_create_new_account">Crea un compte nou</string>
<string name="register_opr_have_account">ja tinc un compte</string>
<string name="shared_string_search_history">Historial de cerques</string>
<string name="app_mode_kayak">Caiac</string>
<string name="app_mode_motorboat">Llanxa motora</string>
<string name="cannot_upload_image">No es pot carregar la imatge, torneu-ho a provar més tard</string>
<string name="select_picture">Seleccioneu la imatge</string>
<string name="shared_string_resources">Recursos</string>
<string name="approximate_file_size">Mida aproximada del fitxer</string>
<string name="select_data_to_export">Seleccioneu les dades a exportar cap el fitxer.</string>
<string name="file_size_needed_for_import">Necessari per a la importació</string>
<string name="export_not_enough_space_descr">El vostre dispositiu només té %1$s lliures. Allibereu espai o desseleccioneu alguns articles per exportar.</string>
<string name="export_not_enough_space">No hi ha prou espai</string>
<string name="select_groups_for_import">Seleccioneu els grups que s\'importaran.</string>
<string name="select_items_for_import">Seleccioneu els elements que s\'importaran.</string>
<string name="add_to_mapillary">Afegeix a Mapillary</string>
<string name="add_to_opr">Afegeix-ho a OpenPlaceReviews</string>
<string name="use_dev_url">Utilitza dev.openstreetmap.org</string>
<string name="add_photos_descr">OsmAnd mostra fotos de diverses fonts:
\nOpenPlaceReviews - fotos de PDIs;
\nMapillary: imatges a nivell de carrer;
\nWeb / Wikimedia: fotos dels PDIs especificats a les dades d\'OpenStreetMap.</string>
<string name="ltr_or_rtl_combine_via_star">%1$s * %2$s</string>
<string name="icon_group_amenity">Equipament</string>
</resources> </resources>

View file

@ -117,9 +117,8 @@
<string name="osmand_service">Služba na pozadí</string> <string name="osmand_service">Služba na pozadí</string>
<string name="osmand_service_descr">OsmAnd běží na pozadí i při vypnuté obrazovce.</string> <string name="osmand_service_descr">OsmAnd běží na pozadí i při vypnuté obrazovce.</string>
<string name="download_files_not_enough_space">Nedostatek místa pro stažení %1$s MB dat (volné: %2$s).</string> <string name="download_files_not_enough_space">Nedostatek místa pro stažení %1$s MB dat (volné: %2$s).</string>
<string name="download_files_question_space">Stáhnout {0} soubor(ů)? <string name="download_files_question_space">Stáhnout {0} soubor(ů)\?
V úložišti je zapotřebí {1} MB. \nBude použito {1} MB (z {2} MB).</string>
(Aktuálně je k dispozici {2} MB.)</string>
<string name="use_transparent_map_theme">Transparentní téma</string> <string name="use_transparent_map_theme">Transparentní téma</string>
<string name="native_library_not_supported">Android native library není podporovaná na tomto zařízení.</string> <string name="native_library_not_supported">Android native library není podporovaná na tomto zařízení.</string>
<string name="init_native_library">Probíhá inicializace Android native library…</string> <string name="init_native_library">Probíhá inicializace Android native library…</string>
@ -535,14 +534,14 @@
<string name="osm_settings_descr">Určete nastavení OpenStreetMap.org (OSM) potřebné pro přispívání.</string> <string name="osm_settings_descr">Určete nastavení OpenStreetMap.org (OSM) potřebné pro přispívání.</string>
<string name="data_settings_descr">Volba jazyka, stažení a aktualizace dat.</string> <string name="data_settings_descr">Volba jazyka, stažení a aktualizace dat.</string>
<string name="data_settings">Data</string> <string name="data_settings">Data</string>
<string name="osm_settings">Editace OSM</string> <string name="osm_settings">Editace OpenStreetMap</string>
<string name="auto_zoom_map_descr">Zvětšení podle rychlosti pohybu (když je mapa synchronizována s aktuální pozicí).</string> <string name="auto_zoom_map_descr">Zvětšení podle rychlosti pohybu (když je mapa synchronizována s aktuální pozicí).</string>
<string name="auto_zoom_map">Automatické zvětšení mapy</string> <string name="auto_zoom_map">Automatické zvětšení mapy</string>
<string name="additional_settings">Další nastavení</string> <string name="additional_settings">Další nastavení</string>
<string name="shared_string_settings">Nastavení</string> <string name="shared_string_settings">Nastavení</string>
<string name="save_current_track_descr">Uložit aktuální trasu jako soubor GPX.</string> <string name="save_current_track_descr">Uložit aktuální trasu jako soubor GPX.</string>
<string name="save_current_track">Uložit aktuální trasu</string> <string name="save_current_track">Uložit aktuální trasu</string>
<string name="save_track_interval_descr">Vyberte interval pro ukládání trasy během navigace.</string> <string name="save_track_interval_descr">Zadejte interval pro ukládání trasy během navigace</string>
<string name="save_track_interval">Interval ukládání trasy během navigace</string> <string name="save_track_interval">Interval ukládání trasy během navigace</string>
<string name="save_track_to_gpx_descrp">Během navigace budou GPX trasy automaticky ukládány do adresáře s trasami.</string> <string name="save_track_to_gpx_descrp">Během navigace budou GPX trasy automaticky ukládány do adresáře s trasami.</string>
<string name="update_tile">Aktualizovat mapu</string> <string name="update_tile">Aktualizovat mapu</string>
@ -615,7 +614,7 @@
<string name="osb_comment_dialog_message">Hlášení</string> <string name="osb_comment_dialog_message">Hlášení</string>
<string name="osb_comment_dialog_author">Jméno autora</string> <string name="osb_comment_dialog_author">Jméno autora</string>
<string name="osb_comment_dialog_success">Komentář přidán</string> <string name="osb_comment_dialog_success">Komentář přidán</string>
<string name="osb_comment_dialog_error">Nepodařilo se přidat komentář</string> <string name="osb_comment_dialog_error">Nepodařilo se přidat komentář.</string>
<string name="poi_edit_title">Upravit POI</string> <string name="poi_edit_title">Upravit POI</string>
<string name="poi_create_title">Vytvořit POI</string> <string name="poi_create_title">Vytvořit POI</string>
<string name="poi_error_poi_not_found">Uzel nelze nalézt nebo vybavení sestává z několika uzlů, které ještě nejsou podporovány.</string> <string name="poi_error_poi_not_found">Uzel nelze nalézt nebo vybavení sestává z několika uzlů, které ještě nejsou podporovány.</string>
@ -651,18 +650,18 @@
<string name="map_online_data_descr">Používat on-line mapy (ukládat dlaždice do mezipaměti na paměťové kartě).</string> <string name="map_online_data_descr">Používat on-line mapy (ukládat dlaždice do mezipaměti na paměťové kartě).</string>
<string name="shared_string_online_maps">On-line mapy</string> <string name="shared_string_online_maps">On-line mapy</string>
<string name="online_map_settings_descr">Nastavení rastrových překryvných nebo podkresových map.</string> <string name="online_map_settings_descr">Nastavení rastrových překryvných nebo podkresových map.</string>
<string name="osmand_rastermaps_plugin_description">S tímto modulem můžete použít mnoho druhů on-line map (tzv. dlaždicové nebo rastrové mapy), od předdefinovaných OpenStreetMap dlaždic (jako Mapnik) až po satelitní snímky a speciální vrstvy jako mapy počasí, klimatické mapy, geologické mapy, stínované vrstvy, atd. <string name="osmand_rastermaps_plugin_description">Získejte přístup k mnoha druhům on-line map (tzv. dlaždicové nebo rastrové mapy), od předdefinovaných OpenStreetMap dlaždic (jako Mapnik) až po satelitní snímky a speciální vrstvy jako mapy počasí, klimatické mapy, geologické mapy, stínované svahy, atd.
\n \n
\nVšechny tyto mapy mohou být použity jako hlavní (základní) mapa na obrazovce OsmAnd nebo jako překryvná popř. podkladová mapa k jiné základní mapě (např. standardní OsmAnd off-line mapě). Pro zlepšení viditelnosti podkladových map je možné vypnout některé objekty z vektorových map OsmAnd, přes menu \'Nastavení mapy\'. \n Všechny tyto mapy mohou být použity jako hlavní (základní) mapa na obrazovce OsmAnd nebo jako překryvná popř. podkladová mapa k jiné základní mapě (např. standardní OsmAnd off-line mapě). Pro zlepšení viditelnosti podkladových map je možné vypnout některé objekty z vektorových map OsmAnd, přes menu \'Nastavení mapy\'.
\n \n
\nDlaždicové mapy můžete získat přímo z on-line zdrojů nebo si je můžete připravit pro off-line použití (zkopírovat ručně do datového adresáře OsmAnd) jako SQLite databázi, která může být vytvořena mnoha programy pro přípravu map.</string> \n Dlaždicové mapy můžete získat přímo z on-line zdrojů nebo si je můžete připravit pro off-line použití (zkopírovat ručně do datového adresáře OsmAnd) jako SQLite databázi, která může být vytvořena mnoha programy pro přípravu map.</string>
<string name="osmand_background_plugin_description">Zobrazí nastavení pro zapnutí záznamu trasy a navigace na pozadí s pravidelným probouzením GPS zařízení (s vypnutou obrazovkou).</string> <string name="osmand_background_plugin_description">Zobrazí nastavení pro zapnutí záznamu trasy a navigace na pozadí s pravidelným probouzením GPS zařízení (s vypnutou obrazovkou).</string>
<string name="osmand_accessibility_description">Tento modul zobrazí nastavení pro speciální funkce ulehčení přístupu přímo v OsmAnd. Například je možné měnit rychlost TTS hlasu, použít trackball na přibližování nebo například použít hlasové předčítání pro oznamování polohy.</string> <string name="osmand_accessibility_description">Zobrazí funkce usnadnění přístupu přímo v OsmAnd. Například je možné měnit rychlost TTS hlasu, nastavit navigování pomocí D-padu, použít trackball na přibližování nebo použít hlasové předčítání pro oznamování polohy.</string>
<string name="osmand_development_plugin_description">Tento modul zobrazí nastavení vývojových a ladících funkcí, jako jsou simulace navigace, informace o rychlosti vykreslování nebo hlasová oznámení. Tato nastavení jsou určené pro vývojáře a nejsou potřebné pro běžné použití.</string> <string name="osmand_development_plugin_description">Nastavení funkcí pro vývoj a ladění, jako jsou simulace navigace, informace o rychlosti vykreslování nebo hlasová oznámení. Tato nastavení jsou určená pro vývojáře a nejsou potřebná pro běžné použití.</string>
<string name="plugins_screen">Správce modulů</string> <string name="plugins_screen">Správce modulů</string>
<string name="prefs_plugins_descr">Moduly umožňují zapnout pokročilé nastavení a přídavné funkce.</string> <string name="prefs_plugins_descr">Moduly umožňují zapnout pokročilé nastavení a přídavné funkce.</string>
<string name="prefs_plugins">Moduly</string> <string name="prefs_plugins">Moduly</string>
<string name="osm_editing_plugin_description">Pomocí tohoto modulu může být OsmAnd použit na přispívání do OSM, například vytvářením nebo úpravami POI, vytvářením nebo komentováním OSM poznámek a přispíváním zaznamenanými GPX soubory. OSM je celosvětový komunitní projekt mapování. Pro více detailů se podívejte na https://openstreetmap.org. Aktivní účast je vítaná a příspěvky mohou být vytvářené přímo v OsmAnd, jestliže zadáte své osobní přihlašovací údaje do OSM.</string> <string name="osm_editing_plugin_description">Po zadání svých přihlašovacích údajů můžete přispívat do OSM - například vytvářením nebo úpravami bodů zájmu, otevíráním nebo komentováním OSM poznámek a přidáváním zaznamenanými GPX soubory. OSM je celosvětový komunitní projekt mapování.</string>
<string name="vector_maps_may_display_faster_on_some_devices">Akcelerace vykreslování pomocí \'Android native\' knihovny. Vektorové mapy se zpravidla vykreslují rychleji, pokud je tato možnost zaškrtnuta. Avšak na některých zařízeních tato funkce nemusí fungovat.</string> <string name="vector_maps_may_display_faster_on_some_devices">Akcelerace vykreslování pomocí \'Android native\' knihovny. Vektorové mapy se zpravidla vykreslují rychleji, pokud je tato možnost zaškrtnuta. Avšak na některých zařízeních tato funkce nemusí fungovat.</string>
<string name="play_commands_of_currently_selected_voice">Přehrát hlasové pokyny zvoleným hlasem</string> <string name="play_commands_of_currently_selected_voice">Přehrát hlasové pokyny zvoleným hlasem</string>
<string name="debugging_and_development">Vývoj a ladění OsmAnd</string> <string name="debugging_and_development">Vývoj a ladění OsmAnd</string>
@ -715,7 +714,8 @@
<string name="osmand_parking_pm">odpoledne</string> <string name="osmand_parking_pm">odpoledne</string>
<string name="osmand_parking_am">dopoledne</string> <string name="osmand_parking_am">dopoledne</string>
<string name="osmand_parking_position_name">Místo parkování</string> <string name="osmand_parking_position_name">Místo parkování</string>
<string name="osmand_parking_plugin_description">Modul Parkovací místo umožňuje zaznamenání, kde jste zaparkovali své auto, a v případě časově omezeného parkování také kolik času zbývá. Parkovací místo a čas parkování můžete najít na panelu aktuální mapy. Je také možné přidat upomínku do kalendáře, pokud chcete být upozorněni.</string> <string name="osmand_parking_plugin_description">Umožňuje zaznamenat, kde jste zaparkovali své auto, včetně zbývajícího času parkování.
\n Místo i čas jsou zobrazené na hlavním panelu i na mapovém widgetu. Je také možné přidat upomínku do kalendáře Android.</string>
<string name="osmand_parking_plugin_name">Parkovací místo</string> <string name="osmand_parking_plugin_name">Parkovací místo</string>
<string name="context_menu_item_add_parking_point">Označit jako místo parkování</string> <string name="context_menu_item_add_parking_point">Označit jako místo parkování</string>
<string name="context_menu_item_delete_parking_point">Smazat místo parkování</string> <string name="context_menu_item_delete_parking_point">Smazat místo parkování</string>
@ -880,7 +880,7 @@ Proporcionální paměť %4$s MB (limit Androidu %5$s MB, Dalvik %6$s MB).</stri
<string name="recording_context_menu_play">Přehrát</string> <string name="recording_context_menu_play">Přehrát</string>
<string name="map_widget_av_notes">Zvukové/video poznámky</string> <string name="map_widget_av_notes">Zvukové/video poznámky</string>
<string name="map_widget_distancemeasurement">Měření vzdálenosti</string> <string name="map_widget_distancemeasurement">Měření vzdálenosti</string>
<string name="audionotes_plugin_description">Modul Audio/video poznámek poskytuje funkce k vytváření záznamů zvukových/fotografických/video poznámek během cesty, buď tlačítkem na mapové obrazovce nebo přímo v kontextovém menu bodu na mapě.</string> <string name="audionotes_plugin_description">Vytvářejte zvukové/fotografické/video poznámky během cesty, buď tlačítkem na mapové obrazovce nebo v kontextovém menu bodu na mapě.</string>
<string name="index_srtm_parts">části</string> <string name="index_srtm_parts">části</string>
<string name="av_def_action_video">Nahrát video</string> <string name="av_def_action_video">Nahrát video</string>
<string name="av_def_action_audio">Nahrát zvuk</string> <string name="av_def_action_audio">Nahrát zvuk</string>
@ -910,7 +910,7 @@ Proporcionální paměť %4$s MB (limit Androidu %5$s MB, Dalvik %6$s MB).</stri
<string name="dropbox_plugin_description">Modul Dropbox vám umožňuje synchronizovat trasy, audio a video poznámky s vaším účtem Dropbox.</string> <string name="dropbox_plugin_description">Modul Dropbox vám umožňuje synchronizovat trasy, audio a video poznámky s vaším účtem Dropbox.</string>
<string name="osmand_srtm_long_description_1000_chars">Tento modul poskytuje zobrazení vrstevnic a vrstvy stínování kopců, které mohou být zobrazené na standardních OsmAnd mapách. Tato funkce je vhodná především pro sportovce, turisty, chodce a vůbec všechny, které zajímá profil terénu. <string name="osmand_srtm_long_description_1000_chars">Tento modul poskytuje zobrazení vrstevnic a vrstvy stínování kopců, které mohou být zobrazené na standardních OsmAnd mapách. Tato funkce je vhodná především pro sportovce, turisty, chodce a vůbec všechny, které zajímá profil terénu.
\n \n
\nCelosvětová výšková data (mezi 70° severní šířky a 70° jižní šířky) se zakládají na měřeních SRTM (Shuttle Radar Topography Mission) a ASTER (Advanced Spaceborne Thermal Emission and Reflection Radiometer), snímkovací přístroj na palubě satelitu Terra, vlajkového satelitu Systému pozorování Země NASA. ASTER je společným projektem NASA, japonského ministerstva hospodářství, obchodu a průmyslu (METI) a Japan Space Systems (J-spacesystems).</string> \nCelosvětová výšková data (mezi 70° severní šířky a 70° jižní šířky) se zakládají na měřeních SRTM (Shuttle Radar Topography Mission) a ASTER (Advanced Spaceborne Thermal Emission and Reflection Radiometer), snímkovacího přístroje na palubě satelitu Terra, vlajkového satelitu Systému pozorování Země NASA. ASTER je společným projektem NASA, japonského ministerstva hospodářství, obchodu a průmyslu (METI) a Japan Space Systems (J-spacesystems).</string>
<string name="stop_routing_confirm">Opravdu chcete zastavit navigaci?</string> <string name="stop_routing_confirm">Opravdu chcete zastavit navigaci?</string>
<string name="clear_dest_confirm">Opravdu chcete smazat svůj cíl (a mezicíle)?</string> <string name="clear_dest_confirm">Opravdu chcete smazat svůj cíl (a mezicíle)?</string>
<string name="recording_context_menu_show">Zobrazit</string> <string name="recording_context_menu_show">Zobrazit</string>
@ -951,7 +951,7 @@ Proporcionální paměť %4$s MB (limit Androidu %5$s MB, Dalvik %6$s MB).</stri
<string name="favourites_list_activity">Vybrat Oblíbené</string> <string name="favourites_list_activity">Vybrat Oblíbené</string>
<string name="local_openstreetmap_act_title">Editace OSM</string> <string name="local_openstreetmap_act_title">Editace OSM</string>
<string name="shared_string_more_actions">Další akce</string> <string name="shared_string_more_actions">Další akce</string>
<string name="monitoring_settings_descr">Konfigurace záznamů vašich cest.</string> <string name="monitoring_settings_descr">Nastavte, jak se budou zaznamenávat vaše cesty.</string>
<string name="install_paid">Instalovat plnou verzi</string> <string name="install_paid">Instalovat plnou verzi</string>
<string name="cancel_navigation">Ukončit navigaci</string> <string name="cancel_navigation">Ukončit navigaci</string>
<string name="use_kalman_filter_compass_descr">Sníží šum v hodnotách z kompasu, ale zpomalí změny směru.</string> <string name="use_kalman_filter_compass_descr">Sníží šum v hodnotách z kompasu, ale zpomalí změny směru.</string>
@ -962,7 +962,7 @@ Proporcionální paměť %4$s MB (limit Androidu %5$s MB, Dalvik %6$s MB).</stri
<string name="cancel_route">Zrušit trasu</string> <string name="cancel_route">Zrušit trasu</string>
<string name="clear_destination">Smazat cíl</string> <string name="clear_destination">Smazat cíl</string>
<string name="local_indexes_cat_srtm">Vrstevnice</string> <string name="local_indexes_cat_srtm">Vrstevnice</string>
<string name="shared_string_downloading">Stahování</string> <string name="shared_string_downloading">Stahování</string>
<string name="other_location">Ostatní</string> <string name="other_location">Ostatní</string>
<string name="local_osm_changes_backup_successful">Soubor se změnami mapy OSM vytvořen %1$s</string> <string name="local_osm_changes_backup_successful">Soubor se změnami mapy OSM vytvořen %1$s</string>
<string name="local_osm_changes_backup_failed">Nezdařilo se zálohovat změny mapy OSM</string> <string name="local_osm_changes_backup_failed">Nezdařilo se zálohovat změny mapy OSM</string>
@ -986,7 +986,7 @@ Proporcionální paměť %4$s MB (limit Androidu %5$s MB, Dalvik %6$s MB).</stri
<string name="distance_measurement_finish_subtrack">Začít novou podtrasu</string> <string name="distance_measurement_finish_subtrack">Začít novou podtrasu</string>
<string name="distance_measurement_clear_route">Vymazat všechny body</string> <string name="distance_measurement_clear_route">Vymazat všechny body</string>
<string name="distance_measurement_load_gpx">Otevřít soubor GPX</string> <string name="distance_measurement_load_gpx">Otevřít soubor GPX</string>
<string name="osmand_distance_planning_plugin_description">Tento modul poskytuje nástroj na vytvoření trasy klikáním na mapu nebo úpravu stávajících GPX souborů pro plánování výletů a měření vzdálenosti mezi body. Výsledek je možné uložit jako GPX a použito později jako pomůcku.</string> <string name="osmand_distance_planning_plugin_description">Vytvářejte cesty klikáním na mapu nebo úpravou stávajících GPX souborů pro plánování výletů a měření vzdálenosti mezi body. Výsledek je možné uložit jako GPX a později použít pro navádění.</string>
<string name="destination_point">Cíl %1$s</string> <string name="destination_point">Cíl %1$s</string>
<string name="context_menu_item_destination_point">Nastavit jako cíl</string> <string name="context_menu_item_destination_point">Nastavit jako cíl</string>
<string name="please_select_address">Zvolte nejprve město nebo ulici</string> <string name="please_select_address">Zvolte nejprve město nebo ulici</string>
@ -1036,21 +1036,21 @@ Proporcionální paměť %4$s MB (limit Androidu %5$s MB, Dalvik %6$s MB).</stri
<string name="edit_tilesource_choose_existing">Vybrat existující…</string> <string name="edit_tilesource_choose_existing">Vybrat existující…</string>
<string name="local_index_tile_data_downloadable">Ke stažení: %1$s</string> <string name="local_index_tile_data_downloadable">Ke stažení: %1$s</string>
<string name="maps_define_edit">Vytvořit/Upravit…</string> <string name="maps_define_edit">Vytvořit/Upravit…</string>
<string name="edit_tilesource_expiration_time">Doba platnosti (min)</string> <string name="edit_tilesource_expiration_time">Doba platnosti (v minutách)</string>
<string name="driving_region_descr">Vyberte dopravní oblast: USA, Evropa, Británie, Asie a další.</string> <string name="driving_region_descr">Vyberte dopravní oblast: USA, Evropa, Británie, Asie a další.</string>
<string name="driving_region">Dopravní oblast</string> <string name="driving_region">Dopravní oblast</string>
<string name="local_index_tile_data_expire">Doba platnosti (minut): %1$s</string> <string name="local_index_tile_data_expire">Doba platnosti (v minutách): %1$s</string>
<string name="map_widget_fps_info">Snímků za sekundu (ladění)</string> <string name="map_widget_fps_info">Snímků za sekundu (ladění)</string>
<string name="edit_tilesource_elliptic_tile">Eliptický mercator</string> <string name="edit_tilesource_elliptic_tile">Elipsoidní Mercatorovo zobrazení</string>
<string name="base_world_map">Základní mapa světa</string> <string name="base_world_map">Základní mapa světa</string>
<string name="map_magnifier">Lupa mapy</string> <string name="map_magnifier">Lupa mapy</string>
<string name="auto_zoom_none">Bez automatického přibližování</string> <string name="auto_zoom_none">Bez automatického přibližování</string>
<string name="auto_zoom_farthest">Malé přiblížení</string> <string name="auto_zoom_farthest">Malé přiblížení</string>
<string name="auto_zoom_close">Velké přiblížení</string> <string name="auto_zoom_close">Velké přiblížení</string>
<string name="auto_zoom_far">Střední přiblížení</string> <string name="auto_zoom_far">Střední přiblížení</string>
<string name="local_index_tile_data_zooms">Stažené přiblížení: %1$s</string> <string name="local_index_tile_data_zooms">Stažené úrovně přiblížení: %1$s</string>
<string name="local_index_tile_data_name">Data dlaždic: %1$s</string> <string name="local_index_tile_data_name">Data dlaždic: %1$s</string>
<string name="edit_tilesource_successfully">Zdroj dlaždic %1$s byl uložen</string> <string name="edit_tilesource_successfully">Zdroj dlaždic %1$s uložen</string>
<string name="shared_string_remember_my_choice">Zapamatovat si volbu</string> <string name="shared_string_remember_my_choice">Zapamatovat si volbu</string>
<string name="shared_string_and">a</string> <string name="shared_string_and">a</string>
<string name="shared_string_or">nebo</string> <string name="shared_string_or">nebo</string>
@ -1058,36 +1058,36 @@ Proporcionální paměť %4$s MB (limit Androidu %5$s MB, Dalvik %6$s MB).</stri
<string name="animate_routing_route">Simulovat pomocí vypočítané trasy </string> <string name="animate_routing_route">Simulovat pomocí vypočítané trasy </string>
<string name="animate_routing_gpx">Simulovat pomocí GPX trasy</string> <string name="animate_routing_gpx">Simulovat pomocí GPX trasy</string>
<string name="shared_string_delete_all">Odstranit vše</string> <string name="shared_string_delete_all">Odstranit vše</string>
<string name="local_osm_changes_delete_all_confirm">Chystáte se odstranit %1$d změn OSM. Jste si jisti?</string> <string name="local_osm_changes_delete_all_confirm">Opravdu chcete odstranit %1$d OSM změn\?</string>
<string name="app_mode_hiking">Turistika</string> <string name="app_mode_hiking">Turistika</string>
<string name="app_mode_motorcycle">Motocykl</string> <string name="app_mode_motorcycle">Motocykl</string>
<string name="app_mode_boat">Loď</string> <string name="app_mode_boat">Loď</string>
<string name="app_mode_aircraft">Letadlo</string> <string name="app_mode_aircraft">Letadlo</string>
<string name="map_widget_map_rendering">Vykreslování mapy</string> <string name="map_widget_map_rendering">Vykreslování mapy</string>
<string name="app_modes_choose_descr">Vyberte profily, které se zobrazí v aplikaci.</string> <string name="app_modes_choose_descr">Vyberte profily, které budou viditelné.</string>
<string name="app_modes_choose">Profily aplikace</string> <string name="app_modes_choose">Profily aplikace</string>
<string name="amenity_type_seamark">Mořská značka</string> <string name="amenity_type_seamark">Mořská značka</string>
<string name="keep_and_add_destination_point">Přidat jako další cíl</string> <string name="keep_and_add_destination_point">Přidat jako další cíl</string>
<string name="select_gpx">Vybrat GPX…</string> <string name="select_gpx">Vybrat GPX…</string>
<string name="use_displayed_track_for_navigation">Použít zobrazenou trasu pro navigaci\?</string> <string name="use_displayed_track_for_navigation">Použít zobrazenou trasu pro navigaci\?</string>
<string name="route_descr_select_destination">Vybrat cíl</string> <string name="route_descr_select_destination">Zadat cíl</string>
<string name="shared_string_select_on_map">Vybrat na mapě</string> <string name="shared_string_select_on_map">Vybrat na mapě</string>
<string name="shared_string_favorite">Oblíbené</string> <string name="shared_string_favorite">Oblíbené</string>
<string name="route_preferences">Předvolby trasy</string> <string name="route_preferences">Předvolby trasy</string>
<string name="route_info">Informace trasy</string> <string name="route_info">Informace trasy</string>
<string name="routing_attr_prefer_motorway_name">Upřednostňovat dálnice</string> <string name="routing_attr_prefer_motorway_name">Upřednostňovat dálnice</string>
<string name="routing_attr_prefer_motorway_description">Upřednostňovat dálnice</string> <string name="routing_attr_prefer_motorway_description">Upřednostňovat dálnice</string>
<string name="routing_attr_avoid_toll_name">Vyhnout se placeným silnicím</string> <string name="routing_attr_avoid_toll_name">Žádné placené silnice</string>
<string name="routing_attr_avoid_toll_description">Vyhnout se placeným silnicím</string> <string name="routing_attr_avoid_toll_description">Vyhne se placeným silnicím</string>
<string name="routing_attr_avoid_unpaved_name">Vyhnout se nezpevněným cestám</string> <string name="routing_attr_avoid_unpaved_name">Žádné nezpevněné cesty</string>
<string name="routing_attr_avoid_unpaved_description">Povede trasu mimo nezpevněné cesty.</string> <string name="routing_attr_avoid_unpaved_description">Vyhne se nezpevněným cestám</string>
<string name="routing_attr_avoid_ferries_name">Vyhnout se trajektům</string> <string name="routing_attr_avoid_ferries_name">Žádné trajekty</string>
<string name="routing_attr_avoid_ferries_description">Vyhnout se trajektům</string> <string name="routing_attr_avoid_ferries_description">Vyhne se trajektům</string>
<string name="routing_attr_avoid_motorway_name">Vyhnout se dálnicím</string> <string name="routing_attr_avoid_motorway_name">Žádné dálnice</string>
<string name="routing_attr_avoid_motorway_description">Vyhnout se dálnicím</string> <string name="routing_attr_avoid_motorway_description">Vyhne se dálnicím</string>
<string name="routing_attr_weight_name">Hmotnostní omezení</string> <string name="routing_attr_weight_name">Hmotnostní omezení</string>
<string name="routing_attr_weight_description">Zadejte povolenou hmotnost vozidla na trase.</string> <string name="routing_attr_weight_description">Zadejte povolenou hmotnost vozidla na trase.</string>
<string name="android_19_location_disabled">Od verze Androidu 4.4 (KitKat) není možné stahovat a aktualizovat mapy ve starém adresáři (%s). Zkopírovat všechny soubory aplikace OsmAnd do nového umístění\? <string name="android_19_location_disabled">Od verze Androidu 4.4 (KitKat) není starý adresář (%s) podporovaný. Zkopírovat všechny soubory aplikace OsmAnd do nového umístění\?
\n Poznámka 1: Původní soubory zůstanou nedotčeny (ale mohou být smazány ručně). \n Poznámka 1: Původní soubory zůstanou nedotčeny (ale mohou být smazány ručně).
\n Poznámka 2: V novém úložišti nebude možné sdílet soubory mezi OsmAnd a OsmAnd+.</string> \n Poznámka 2: V novém úložišti nebude možné sdílet soubory mezi OsmAnd a OsmAnd+.</string>
<string name="copying_osmand_one_file_descr">Kopírování souboru (%s) do nového umístění…</string> <string name="copying_osmand_one_file_descr">Kopírování souboru (%s) do nového umístění…</string>
@ -1210,7 +1210,7 @@ Proporcionální paměť %4$s MB (limit Androidu %5$s MB, Dalvik %6$s MB).</stri
\n \n
\nStiskněte a podržte pro zobrazení na mapě"</string> \nStiskněte a podržte pro zobrazení na mapě"</string>
<string name="save_as_favorites_points">Uložit jako skupinu Oblíbených</string> <string name="save_as_favorites_points">Uložit jako skupinu Oblíbených</string>
<string name="select_destination_and_intermediate_points">Vybrat cíle</string> <string name="select_destination_and_intermediate_points">Určete cíle</string>
<string name="layer_amenity_label">Překryvné popisky bodů</string> <string name="layer_amenity_label">Překryvné popisky bodů</string>
<string name="create_poi_link_to_osm_doc"> <string name="create_poi_link_to_osm_doc">
<u>On-line OSM</u> klasifikace map s obrázky.</string> <u>On-line OSM</u> klasifikace map s obrázky.</string>
@ -1218,9 +1218,9 @@ Proporcionální paměť %4$s MB (limit Androidu %5$s MB, Dalvik %6$s MB).</stri
<string name="show_zoom_buttons_navigation">Zobrazit tlačítka lupy</string> <string name="show_zoom_buttons_navigation">Zobrazit tlačítka lupy</string>
<string name="sort_by_distance">Třídit podle vzdálenosti</string> <string name="sort_by_distance">Třídit podle vzdálenosti</string>
<string name="sort_by_name">Třídit podle jména</string> <string name="sort_by_name">Třídit podle jména</string>
<string name="local_index_select_gpx_file">Vybrat k zobrazení</string> <string name="local_index_select_gpx_file">Vyberte stopu</string>
<string name="no_index_file_to_download">Nic ke stažení nebylo nalezeno, prosím zkontrolujte své připojení k Internetu.</string> <string name="no_index_file_to_download">Nic ke stažení nebylo nalezeno, prosím zkontrolujte své připojení k Internetu.</string>
<string name="none_selected_gpx">Nebyl vybrán soubor GPX. Vyberte podržením.</string> <string name="none_selected_gpx">Dlouhým stisknutím vyberte GPX soubor.</string>
<string name="rendering_attr_hideBuildings_name">Budovy</string> <string name="rendering_attr_hideBuildings_name">Budovy</string>
<string name="rendering_attr_hideText_name">Text</string> <string name="rendering_attr_hideText_name">Text</string>
<string name="rendering_attr_hideWoodScrubs_name">Lesy a křoviny</string> <string name="rendering_attr_hideWoodScrubs_name">Lesy a křoviny</string>
@ -1236,7 +1236,7 @@ Proporcionální paměť %4$s MB (limit Androidu %5$s MB, Dalvik %6$s MB).</stri
<string name="map_preferred_locale_descr">Preferovaný jazyk pro nápisy na mapě (pokud není dostupný, budou použity anglické nebo lokální názvy).</string> <string name="map_preferred_locale_descr">Preferovaný jazyk pro nápisy na mapě (pokud není dostupný, budou použity anglické nebo lokální názvy).</string>
<string name="map_preferred_locale">Preferovaný jazyk mapy</string> <string name="map_preferred_locale">Preferovaný jazyk mapy</string>
<string name="local_map_names">Lokální názvy</string> <string name="local_map_names">Lokální názvy</string>
<string name="live_monitoring_m_descr">Pokud je zapnutý záznam GPX trasy, odesílat data trasování určené webové službě.</string> <string name="live_monitoring_m_descr">Odesílat trasovací data určené webové službě, pokud je zapnutý záznam GPX.</string>
<string name="live_monitoring_m">On-line sledování (vyžaduje GPX)</string> <string name="live_monitoring_m">On-line sledování (vyžaduje GPX)</string>
<string name="live_monitoring_start">Spustit on-line sledování</string> <string name="live_monitoring_start">Spustit on-line sledování</string>
<string name="live_monitoring_stop">Zastavit on-line sledování</string> <string name="live_monitoring_stop">Zastavit on-line sledování</string>
@ -1279,9 +1279,9 @@ Proporcionální paměť %4$s MB (limit Androidu %5$s MB, Dalvik %6$s MB).</stri
<string name="download_additional_maps">Stáhnout chybějící mapy %1$s (%2$d MB)?</string> <string name="download_additional_maps">Stáhnout chybějící mapy %1$s (%2$d MB)?</string>
<string name="save_track_interval_globally">Interval ukládání trasy</string> <string name="save_track_interval_globally">Interval ukládání trasy</string>
<string name="rendering_attr_publicTransportMode_name">Autobusy, trolejbusy a kyvadlová doprava</string> <string name="rendering_attr_publicTransportMode_name">Autobusy, trolejbusy a kyvadlová doprava</string>
<string name="record_plugin_description">Tento modul zapne funkci záznamu a uložení vašich tras stisknutím tlačítka GPX na panelu mapové obrazovky nebo také automatického ukládání všech vašich navigačních tras do GPX souboru. <string name="record_plugin_description">Tento modul zapne funkci záznamu a uložení vašich stop stisknutím tlačítka GPX na panelu mapové obrazovky. Taktéž umožňuje nastavit automatické ukládání vašich navigačních tras do GPX souboru.
\n \n
\nZaznamenávané trasy můžete sdílet se svými přáteli nebo mohou být použity jako příspěvek do OSM. Sportovci mohou použít zaznamenané trasy k sledování svých tréninků. Základní analýza může být provedena již přímo v OsmAnd, například čas okruhu, průměrná rychlost, apod. Trasy mohou být samozřejmě analyzovány později speciálními programy třetích stran.</string> \n Zaznamenávané stopy můžete sdílet se svými přáteli nebo mohou být použity jako příspěvek do OSM. Sportovci mohou použít zaznamenané trasy k sledování svých tréninků. Základní analýza může být provedena přímo v OsmAnd, například čas okruhu, průměrná rychlost, apod. Trasy mohou být samozřejmě analyzovány později speciálními programy třetích stran.</string>
<string name="record_plugin_name">Záznam cesty</string> <string name="record_plugin_name">Záznam cesty</string>
<string name="int_hour">h</string> <string name="int_hour">h</string>
<string name="duration">Trvání</string> <string name="duration">Trvání</string>
@ -1292,24 +1292,24 @@ Proporcionální paměť %4$s MB (limit Androidu %5$s MB, Dalvik %6$s MB).</stri
<string name="way_alarms">Dopravní varování</string> <string name="way_alarms">Dopravní varování</string>
<string name="speak_favorites">Blízké Oblíbené body</string> <string name="speak_favorites">Blízké Oblíbené body</string>
<string name="speak_poi">Blízké body zájmu POI</string> <string name="speak_poi">Blízké body zájmu POI</string>
<string name="save_track_to_gpx_globally_descr">Záznam do GPX souboru může být zapnut nebo vypnut pomocí widgetu Záznam trasy na mapové obrazovce.</string> <string name="save_track_to_gpx_globally_descr">Záznam do GPX souboru může být zapnut nebo vypnut pomocí widgetu Záznam trasy na mapě.</string>
<string name="confirm_every_run">Vždy se zeptat</string> <string name="confirm_every_run">Vždy se zeptat</string>
<string name="save_global_track_interval">Globální interval záznamu</string> <string name="save_global_track_interval">Globální interval záznamu</string>
<string name="traffic_warning_speed_limit">Rychlostní limit</string> <string name="traffic_warning_speed_limit">Rychlostní limit</string>
<string name="traffic_warning_border_control">Hraniční kontrola</string> <string name="traffic_warning_border_control">Hraniční kontrola</string>
<string name="traffic_warning_payment">Mýtná stanice</string> <string name="traffic_warning_payment">Mýtná stanice</string>
<string name="traffic_warning_stop">Značka STOP</string> <string name="traffic_warning_stop">Značka STOP</string>
<string name="traffic_warning_calming">Zpomalovací prvek</string> <string name="traffic_warning_calming">Zklidňování dopravy</string>
<string name="traffic_warning_speed_camera">Rychlostní radar/kamera</string> <string name="traffic_warning_speed_camera">Rychlostní radar/kamera</string>
<string name="traffic_warning">Dopravní varování</string> <string name="traffic_warning">Dopravní varování</string>
<string name="route_descr_destination">Cíl</string> <string name="route_descr_destination">Cíl</string>
<string name="local_index_description">Stiskněte existující položku k zobrazení více detailů, podržte pro vypnutí nebo smazání. V zařízení je %1$s volného místa:</string> <string name="local_index_description">Stiskněte existující položku k zobrazení více detailů, podržte pro vypnutí nebo smazání. V zařízení je %1$s volného místa:</string>
<string name="text_size">Velikost písma</string> <string name="text_size">Velikost písma</string>
<string name="text_size_descr">Nastavit velikost písma na mapě.</string> <string name="text_size_descr">Nastavit velikost písma na mapě.</string>
<string name="fav_point_dublicate">Název oblíbeného bodu je již použit</string> <string name="fav_point_dublicate">Duplicitní název oblíbeného bodu</string>
<string name="fav_point_dublicate_message">Název Oblíbeného bodu již existuje, byl změněn na %1$s, aby nevznikla duplicita.</string> <string name="fav_point_dublicate_message">Oblíbený bod přejmenován na %1$s, aby nevznikla duplicita.</string>
<string name="print_route">Vytisknout trasu</string> <string name="print_route">Vytisknout trasu</string>
<string name="fav_point_emoticons_message">Název oblíbeného bodu byl změněn na %1$s, protože není možné ukládat do souboru řetězce s emotikony.</string> <string name="fav_point_emoticons_message">Oblíbený bod přejmenován na %1$s, protože není možné ukládat do souboru řetězce s emotikony.</string>
<string name="speed_limit_exceed">Tolerance překročení rychlosti</string> <string name="speed_limit_exceed">Tolerance překročení rychlosti</string>
<string name="speed_limit_exceed_message">Zvolte toleranci překročení povolené rychlosti, po které uslyšíte hlasové varování.</string> <string name="speed_limit_exceed_message">Zvolte toleranci překročení povolené rychlosti, po které uslyšíte hlasové varování.</string>
<string name="anonymous_user_hint">Anonymní uživatel nemůže: <string name="anonymous_user_hint">Anonymní uživatel nemůže:
@ -1392,20 +1392,20 @@ Proporcionální paměť %4$s MB (limit Androidu %5$s MB, Dalvik %6$s MB).</stri
<string name="enable_proxy_title">Povolit HTTP proxy</string> <string name="enable_proxy_title">Povolit HTTP proxy</string>
<string name="enable_proxy_descr">Nastavit HTTP proxy pro veškeré síťové požadavky.</string> <string name="enable_proxy_descr">Nastavit HTTP proxy pro veškeré síťové požadavky.</string>
<string name="proxy_host_title">Host proxy</string> <string name="proxy_host_title">Host proxy</string>
<string name="proxy_host_descr">Nastavit hostname proxy (např. 127.0.0.1).</string> <string name="proxy_host_descr">Zadejte hostname proxy serveru (např. 127.0.0.1).</string>
<string name="proxy_port_title">Port proxy</string> <string name="proxy_port_title">Port proxy</string>
<string name="proxy_port_descr">Nastavit číslo portu proxy (např. 8118).</string> <string name="proxy_port_descr">Zadejte číslo portu proxy serveru (např. 8118).</string>
<string name="parking_place">Parkovací místo</string> <string name="parking_place">Parkovací místo</string>
<string name="remove_the_tag">ODSTRANIT ZNAČKU</string> <string name="remove_the_tag">ODSTRANIT ZNAČKU</string>
<string name="shared_string_disabled">Zakázán</string> <string name="shared_string_disabled">Zakázán</string>
<string name="shared_string_enabled">Povolen</string> <string name="shared_string_enabled">Povolen</string>
<string name="edit_group">Upravit skupinu</string> <string name="edit_group">Upravit skupinu</string>
<string name="nautical_maps_missing">Pro zobrazování plavebních map je třeba stáhnout speciální mapu</string> <string name="nautical_maps_missing">Stáhněte si speciální offline mapu pro zobrazení námořních detailů.</string>
<string name="world_ski_missing">Pro zobrazování lyžařských map je třeba stáhnout speciální mapu</string> <string name="world_ski_missing">Stáhněte si speciální offline mapu pro zobrazení lyžařských objektů.</string>
<string name="plugin_ski_name">Lyžařský mapový pohled</string> <string name="plugin_ski_name">Lyžařský mapový pohled</string>
<string name="plugin_nautical_name">Plavební mapový pohled</string> <string name="plugin_nautical_name">Plavební mapový pohled</string>
<string name="share_note">Sdílet poznámku</string> <string name="share_note">Sdílet poznámku</string>
<string name="notes">Poznámky</string> <string name="notes">A/V poznámky</string>
<string name="online_map">On-line mapa</string> <string name="online_map">On-line mapa</string>
<string name="roads_only">Pouze cesty</string> <string name="roads_only">Pouze cesty</string>
<string name="rendering_attr_pisteRoutes_name">Lyžařské svahy</string> <string name="rendering_attr_pisteRoutes_name">Lyžařské svahy</string>
@ -1460,10 +1460,10 @@ Délka %2$s</string>
<string name="waypoint_visit_after">Navštívit po</string> <string name="waypoint_visit_after">Navštívit po</string>
<string name="waypoint_visit_before">Navštívit před</string> <string name="waypoint_visit_before">Navštívit před</string>
<string name="confirmation_to_clear_history">Vyčistit historii\?</string> <string name="confirmation_to_clear_history">Vyčistit historii\?</string>
<string name="local_osm_changes_upload_all_confirm">Požadujete nahrát %1$d změn do OSM. Jste si jisti?</string> <string name="local_osm_changes_upload_all_confirm">Opravdu chcete nahrát %1$d změn do OSM\?</string>
<string name="shared_string_collapse">Sbalit</string> <string name="shared_string_collapse">Sbalit</string>
<string name="agps_info">Info o A-GPS</string> <string name="agps_info">Info o A-GPS</string>
<string name="agps_data_last_downloaded">Datum posledního stažení A-GPS dat: %1$s</string> <string name="agps_data_last_downloaded">Datum stažení A-GPS dat: %1$s</string>
<string name="shared_string_message">Zpráva</string> <string name="shared_string_message">Zpráva</string>
<string name="welmode_download_maps">Stáhnout mapy</string> <string name="welmode_download_maps">Stáhnout mapy</string>
<string name="welcome_header">Vítejte</string> <string name="welcome_header">Vítejte</string>
@ -1517,7 +1517,7 @@ Délka %2$s</string>
<string name="storage_directory">Úložiště map</string> <string name="storage_directory">Úložiště map</string>
<string name="shared_string_copy">Kopírovat</string> <string name="shared_string_copy">Kopírovat</string>
<string name="rendering_attr_hideHouseNumbers_name">Popisná čísla domů</string> <string name="rendering_attr_hideHouseNumbers_name">Popisná čísla domů</string>
<string name="routing_attr_avoid_borders_description">Nepřekračovat hranice země</string> <string name="routing_attr_avoid_borders_description">Vyhne se překročení hranic státu</string>
<string name="routing_attr_height_name">Výškové omezení</string> <string name="routing_attr_height_name">Výškové omezení</string>
<string name="routing_attr_height_description">Zadejte výšku vozidla, která musí být povolena na cestách.</string> <string name="routing_attr_height_description">Zadejte výšku vozidla, která musí být povolena na cestách.</string>
<string name="use_fast_recalculation">Inteligentní přepočítávání trasy</string> <string name="use_fast_recalculation">Inteligentní přepočítávání trasy</string>
@ -1532,7 +1532,7 @@ Délka %2$s</string>
<string name="rendering_value_disabled_name">Vypnuto</string> <string name="rendering_value_disabled_name">Vypnuto</string>
<string name="rendering_value_walkingRoutesScopeOSMC_name">Zbarvení podle příslušnosti k síti</string> <string name="rendering_value_walkingRoutesScopeOSMC_name">Zbarvení podle příslušnosti k síti</string>
<string name="rendering_value_walkingRoutesOSMC_name">Zbarvení podle turistické značky OSMC</string> <string name="rendering_value_walkingRoutesOSMC_name">Zbarvení podle turistické značky OSMC</string>
<string name="local_recordings_delete_all_confirm">Chystáte se smazat %1$d poznámek. Jste si jisti?</string> <string name="local_recordings_delete_all_confirm">Opravdu chcete smazat %1$d poznámek\?</string>
<string name="download_wikipedia_maps">Wikipedie</string> <string name="download_wikipedia_maps">Wikipedie</string>
<string name="rendering_value_red_name">Červená</string> <string name="rendering_value_red_name">Červená</string>
<string name="rendering_value_default13_name">Výchozí (13)</string> <string name="rendering_value_default13_name">Výchozí (13)</string>
@ -1544,7 +1544,7 @@ Délka %2$s</string>
<string name="rendering_value_lightblue_name">Světlemodrá</string> <string name="rendering_value_lightblue_name">Světlemodrá</string>
<string name="rendering_value_blue_name">Modrá</string> <string name="rendering_value_blue_name">Modrá</string>
<string name="rendering_value_purple_name">Fialová</string> <string name="rendering_value_purple_name">Fialová</string>
<string name="restart_is_required">Restartujte aplikaci pro aplikování všech změn.</string> <string name="restart_is_required">Pro aplikování všech změn je potřeba restartovat aplikaci.</string>
<string name="light_theme">Světlý</string> <string name="light_theme">Světlý</string>
<string name="dark_theme">Tmavý</string> <string name="dark_theme">Tmavý</string>
<string name="rendering_value_defaultTranslucentCyan_name">Výchozí (průsvitná modrozelená)</string> <string name="rendering_value_defaultTranslucentCyan_name">Výchozí (průsvitná modrozelená)</string>
@ -1558,8 +1558,8 @@ Délka %2$s</string>
<string name="rendering_value_translucent_purple_name">Průsvitná fialová</string> <string name="rendering_value_translucent_purple_name">Průsvitná fialová</string>
<string name="lang_pms">Piemontština</string> <string name="lang_pms">Piemontština</string>
<string name="archive_wikipedia_data">Máte zastaralá nekompatibilní data Wikipedie. Archivovat je\?</string> <string name="archive_wikipedia_data">Máte zastaralá nekompatibilní data Wikipedie. Archivovat je\?</string>
<string name="download_wikipedia_files">Stáhnout dodatečná Wikipedia data (%1$s MB) \?</string> <string name="download_wikipedia_files">Stáhnout dodatečná data Wikipedie (%1$s MB)\?</string>
<string name="gps_network_not_enabled">Služba zjištění polohy není zapnuta. Aktivovat\?</string> <string name="gps_network_not_enabled">Služba zjištění polohy je vypnuta. Aktivovat\?</string>
<string name="disable_recording_once_app_killed">Zabránit samostatnému logování</string> <string name="disable_recording_once_app_killed">Zabránit samostatnému logování</string>
<string name="download_live_updates">Okamžité aktualizace</string> <string name="download_live_updates">Okamžité aktualizace</string>
<string name="no_updates_available">Nejsou dostupné žádné aktualizace</string> <string name="no_updates_available">Nejsou dostupné žádné aktualizace</string>
@ -1582,8 +1582,8 @@ Délka %2$s</string>
<string name="plugin_settings">Moduly</string> <string name="plugin_settings">Moduly</string>
<string name="av_locations_descr">GPX soubor s umístěními.</string> <string name="av_locations_descr">GPX soubor s umístěními.</string>
<string name="av_locations">Umístění</string> <string name="av_locations">Umístění</string>
<string name="routing_attr_avoid_shuttle_train_name">Vyhnout se autovlaku</string> <string name="routing_attr_avoid_shuttle_train_name">Žádný autovlak</string>
<string name="routing_attr_avoid_shuttle_train_description">Vyhnout se použití autovlaků</string> <string name="routing_attr_avoid_shuttle_train_description">Vyhne se použití autovlaků</string>
<string name="lang_la">Latina</string> <string name="lang_la">Latina</string>
<string name="poi_action_delete">smazat</string> <string name="poi_action_delete">smazat</string>
<string name="failed_to_upload">Nepodařilo se odeslat</string> <string name="failed_to_upload">Nepodařilo se odeslat</string>
@ -1691,7 +1691,7 @@ Délka %2$s</string>
<string name="simulate_initial_startup_descr">Nastavit příznak označující první spuštění aplikace, ostatní nastavení ponechat nezměněná.</string> <string name="simulate_initial_startup_descr">Nastavit příznak označující první spuštění aplikace, ostatní nastavení ponechat nezměněná.</string>
<string name="confirm_download_roadmaps">Silniční mapa není nutná, protože máte standardní (plnou) mapu. I přesto stáhnout?</string> <string name="confirm_download_roadmaps">Silniční mapa není nutná, protože máte standardní (plnou) mapu. I přesto stáhnout?</string>
<string name="application_dir_description">Zvolte, kam chcete uložit mapové a ostatní datové soubory.</string> <string name="application_dir_description">Zvolte, kam chcete uložit mapové a ostatní datové soubory.</string>
<string name="show_on_start_description">„Vypnout“ spouští přímo obrazovku s mapou.</string> <string name="show_on_start_description">\'Vypnuto\' spouští přímo obrazovku s mapou.</string>
<string name="world_map_download_descr">Základní mapa světa (pokrývající celý svět při malých úrovních detailů) chybí nebo je zastaralá. Prosím zvažte její stažení pro celkový přehled.</string> <string name="world_map_download_descr">Základní mapa světa (pokrývající celý svět při malých úrovních detailů) chybí nebo je zastaralá. Prosím zvažte její stažení pro celkový přehled.</string>
<string name="shared_string_qr_code">QR kód</string> <string name="shared_string_qr_code">QR kód</string>
<string name="map_downloaded">Mapa stažena</string> <string name="map_downloaded">Mapa stažena</string>
@ -1749,9 +1749,9 @@ Délka %2$s</string>
<string name="osn_reopen_dialog_title">Znovuotevřít poznámku</string> <string name="osn_reopen_dialog_title">Znovuotevřít poznámku</string>
<string name="osn_close_dialog_title">Uzavřít poznámku</string> <string name="osn_close_dialog_title">Uzavřít poznámku</string>
<string name="osn_add_dialog_success">Poznámka vytvořena</string> <string name="osn_add_dialog_success">Poznámka vytvořena</string>
<string name="osn_add_dialog_error">Nepodařilo se vytvořit poznámku</string> <string name="osn_add_dialog_error">Nepodařilo se vytvořit poznámku.</string>
<string name="osn_close_dialog_success">Poznámka uzavřena</string> <string name="osn_close_dialog_success">Poznámka uzavřena</string>
<string name="osn_close_dialog_error">Nepodařilo se uzavřít poznámku</string> <string name="osn_close_dialog_error">Nepodařilo se uzavřít poznámku.</string>
<string name="shared_string_commit">Odeslat</string> <string name="shared_string_commit">Odeslat</string>
<string name="context_menu_item_delete_waypoint">Odstranit bod GPX?</string> <string name="context_menu_item_delete_waypoint">Odstranit bod GPX?</string>
<string name="context_menu_item_edit_waypoint">Upravit bod GPX</string> <string name="context_menu_item_edit_waypoint">Upravit bod GPX</string>
@ -1765,9 +1765,9 @@ Délka %2$s</string>
<string name="use_drawer_btn">Použít menu</string> <string name="use_drawer_btn">Použít menu</string>
<string name="dashboard_or_drawer_title">Domovská obrazovka nebo menu</string> <string name="dashboard_or_drawer_title">Domovská obrazovka nebo menu</string>
<string name="dashboard_or_drawer_description">Na výběr je možnost ovládání aplikace přes flexibilní domovskou obrazovku nebo statické menu. Svůj výběr můžete kdykoliv změnit v nastavení domovské obrazovky.</string> <string name="dashboard_or_drawer_description">Na výběr je možnost ovládání aplikace přes flexibilní domovskou obrazovku nebo statické menu. Svůj výběr můžete kdykoliv změnit v nastavení domovské obrazovky.</string>
<string name="routing_attr_avoid_stairs_name">Vyhnout se schodům</string> <string name="routing_attr_avoid_stairs_name">Žádné schody</string>
<string name="routing_attr_avoid_stairs_description">Vyhnout se schodům</string> <string name="routing_attr_avoid_stairs_description">Vyhne se schodům</string>
<string name="routing_attr_avoid_borders_name">Vyhnout se hraničním přechodům</string> <string name="routing_attr_avoid_borders_name">Žádné hraniční přechody</string>
<string name="shared_string_near">Nedaleko</string> <string name="shared_string_near">Nedaleko</string>
<string name="shared_string_hide">Skrýt</string> <string name="shared_string_hide">Skrýt</string>
<string name="av_video_quality_low">Nejnižší kvalita</string> <string name="av_video_quality_low">Nejnižší kvalita</string>
@ -1784,9 +1784,9 @@ Délka %2$s</string>
<string name="route_duration">Čas:</string> <string name="route_duration">Čas:</string>
<string name="rendering_attr_horseRoutes_name">Stezka pro koně</string> <string name="rendering_attr_horseRoutes_name">Stezka pro koně</string>
<string name="only_download_over_wifi">Stahovat jen přes WiFi</string> <string name="only_download_over_wifi">Stahovat jen přes WiFi</string>
<string name="no_location_permission">Aplikace nemá povolen přístup k poloze.</string> <string name="no_location_permission">Udělit oprávnění pro přístup k poloze.</string>
<string name="no_camera_permission">Aplikace nemá povolen přístup k fotoaparátu.</string> <string name="no_camera_permission">Udělit oprávnění pro přístup k fotoaparátu.</string>
<string name="no_microphone_permission">Aplikace nemá povolen přístup k mikrofonu.</string> <string name="no_microphone_permission">Udělit oprávnění pro přístup k mikrofonu.</string>
<string name="update">Aktualizovat každých</string> <string name="update">Aktualizovat každých</string>
<string name="live_update">Okamžité aktualizace</string> <string name="live_update">Okamžité aktualizace</string>
<string name="update_now">Aktualizovat nyní</string> <string name="update_now">Aktualizovat nyní</string>
@ -1843,32 +1843,32 @@ Délka %2$s</string>
<string name="upload_anonymously">Nahrát anonymně</string> <string name="upload_anonymously">Nahrát anonymně</string>
<string name="show_transparency_seekbar">Zobrazit posuvník průhlednosti</string> <string name="show_transparency_seekbar">Zobrazit posuvník průhlednosti</string>
<string name="download_files_error_not_enough_space">Nedostatek místa! <string name="download_files_error_not_enough_space">Nedostatek místa!
V úložišti je zapotřebí dočasně {3} MB a trvale {1} MB. \nV úložišti je zapotřebí dočasně {3} MB a trvale {1} MB.
Aktuálně je k dispozici pouze {2} MB.</string> \n(Aktuálně je k dispozici pouze {2} MB.)</string>
<string name="upload_osm_note">Nahrát OSM poznámku</string> <string name="upload_osm_note">Nahrát OSM poznámku</string>
<string name="upload_osm_note_description">Nahrajte OSM poznámku anonymně, nebo prostřednictvím svého účtu OpenStreetMap.org.</string> <string name="upload_osm_note_description">Nahrajte OSM poznámku anonymně, nebo prostřednictvím svého účtu OpenStreetMap.org.</string>
<string name="shared_string_move_up">Posunout ↑</string> <string name="shared_string_move_up">Posunout ↑</string>
<string name="shared_string_move_down">Posunout ↓</string> <string name="shared_string_move_down">Posunout ↓</string>
<string name="finish_navigation">Dokončit navigaci</string> <string name="finish_navigation">Dokončit navigaci</string>
<string name="avoid_road">Vyhnout se cestě</string> <string name="avoid_road">Vyhnout se cestě</string>
<string name="storage_directory_readonly_desc">Přepnuto do interní paměti, protože aktuálně vybraná složka je pouze pro čtení. Prosím zvolte složku v zapisovatelné paměti.</string> <string name="storage_directory_readonly_desc">Přepnuto do interní paměti, protože aktuálně vybraná složka je chráněna proti zápisu. Prosím zvolte složku v zapisovatelné paměti.</string>
<string name="storage_directory_shared">Sdílená paměť</string> <string name="storage_directory_shared">Sdílená paměť</string>
<string name="shared_string_topbar">Horní panel</string> <string name="shared_string_topbar">Horní panel</string>
<string name="full_report">Celý výpis</string> <string name="full_report">Celý výpis</string>
<string name="report">Výpis</string> <string name="report">Výpis</string>
<string name="recalculate_route">Přepočítat trasu</string> <string name="recalculate_route">Přepočítat trasu</string>
<string name="open_street_map_login_and_pass">OpenStreetMap uživatelské jméno a heslo</string> <string name="open_street_map_login_and_pass">Uživatelské jméno a heslo pro OSM</string>
<string name="donations">Příspěvky</string> <string name="donations">Příspěvky</string>
<string name="number_of_recipients">Počet příjemců</string> <string name="number_of_recipients">Počet příjemců</string>
<string name="osm_user_stat">Počet úprav %1$s, pořadí %2$s, celkový počet úprav %3$s</string> <string name="osm_user_stat">Počet úprav %1$s, pořadí %2$s, celkový počet úprav %3$s</string>
<string name="osm_editors_ranking">Pořadí OSM editorů</string> <string name="osm_editors_ranking">Pořadí mezi editory OSM</string>
<string name="osm_live_subscription">Předplatné OsmAnd Live</string> <string name="osm_live_subscription">Předplatné OsmAnd Live</string>
<string name="osm_live_subscribe_btn">Předplatit</string> <string name="osm_live_subscribe_btn">Předplatit</string>
<string name="osm_live_email_desc">Nutné, abychom vás mohli informovat o příspěvcích.</string> <string name="osm_live_email_desc">Nutné, abychom vás mohli informovat o vašich příspěvcích.</string>
<string name="osm_live_user_public_name">Veřejné jméno</string> <string name="osm_live_user_public_name">Veřejné jméno</string>
<string name="osm_live_hide_user_name">Nezobrazovat mé jméno v hlášeních</string> <string name="osm_live_hide_user_name">Nezobrazovat mé jméno v hlášeních</string>
<string name="osm_live_support_region">Oblast podpory</string> <string name="osm_live_support_region">Oblast podpory</string>
<string name="osm_live_month_cost">Měsíční cena</string> <string name="osm_live_month_cost">Cena za měsíc</string>
<string name="osm_live_month_cost_desc">Měsíční poplatek</string> <string name="osm_live_month_cost_desc">Měsíční poplatek</string>
<string name="osm_live_active">Aktivní</string> <string name="osm_live_active">Aktivní</string>
<string name="osm_live_not_active">Neaktivní</string> <string name="osm_live_not_active">Neaktivní</string>
@ -1879,10 +1879,11 @@ Délka %2$s</string>
<string name="osm_live_region_desc">Část vašeho příspěvku bude zaslána uživatelům OSM, kteří upravují mapu ve zvolené oblasti.</string> <string name="osm_live_region_desc">Část vašeho příspěvku bude zaslána uživatelům OSM, kteří upravují mapu ve zvolené oblasti.</string>
<string name="osm_live_subscription_settings">Nastavení předplatného</string> <string name="osm_live_subscription_settings">Nastavení předplatného</string>
<string name="osm_live_ask_for_purchase">Nejprve prosím zakupte předplatné OsmAnd Live</string> <string name="osm_live_ask_for_purchase">Nejprve prosím zakupte předplatné OsmAnd Live</string>
<string name="osm_live_header">Předplatné umožní hodinové aktualizace pro všechny mapy světa. Část příjmu jde zpět do OSM komunity a za každý příspěvek do OSM je vyplacena odměna. Pokud máte rádi OsmAnd a OSM, chcete je podpořit a být podporováni, toto je výborný způsob, jak to udělat.</string> <string name="osm_live_header">Předplatné umožní hodinové aktualizace pro všechny mapy světa.
<string name="download_files_question_space_with_temp">Stáhnout {0} soubor(ů)? \n Část příjmu jde zpět do OSM komunity a za každý příspěvek do OSM je vyplacena odměna.
V úložišti je zapotřebí dočasně {3} MB a trvale {1} MB. \n Pokud máte rádi OsmAnd a OSM, chcete je podpořit a být podporováni, toto je výborný způsob, jak to udělat.</string>
(Aktuálně je k dispozici {2} MB.)</string> <string name="download_files_question_space_with_temp">Stáhnout {0} soubor(ů)\?
\nV úložišti je zapotřebí dočasně {3} MB a trvale {1} MB. (Z {2} MB.)</string>
<string name="map_marker_1st">První mapová značka</string> <string name="map_marker_1st">První mapová značka</string>
<string name="map_marker_2nd">Druhá mapová značka</string> <string name="map_marker_2nd">Druhá mapová značka</string>
<string name="shared_string_toolbar">Panel nástrojů</string> <string name="shared_string_toolbar">Panel nástrojů</string>
@ -1971,7 +1972,7 @@ Délka %2$s</string>
<string name="advanced_coords_search">Rozšířené hledání souřadnic</string> <string name="advanced_coords_search">Rozšířené hledání souřadnic</string>
<string name="route_stops_before">%1$s zastávek před</string> <string name="route_stops_before">%1$s zastávek před</string>
<string name="skip_map_downloading">Přeskočit stahování map</string> <string name="skip_map_downloading">Přeskočit stahování map</string>
<string name="skip_map_downloading_desc">Nemáte nainstalovanou žádnou mapu. Můžete si vybrat mapu ze seznamu, nebo stáhnout mapy později přes \'Menu - %1$s\'.</string> <string name="skip_map_downloading_desc">Nemáte nainstalovanou žádnou offline mapu. Můžete si vybrat mapu ze seznamu, nebo stáhnout mapy později přes \'Menu - %1$s\'.</string>
<string name="search_another_country">Vybrat jinou oblast</string> <string name="search_another_country">Vybrat jinou oblast</string>
<string name="search_map">Hledání map…</string> <string name="search_map">Hledání map…</string>
<string name="first_usage_wizard_desc">Povolit OsmAndu určit vaši polohu a navrhnout mapy pro tuto oblast.</string> <string name="first_usage_wizard_desc">Povolit OsmAndu určit vaši polohu a navrhnout mapy pro tuto oblast.</string>
@ -1980,7 +1981,7 @@ Délka %2$s</string>
<string name="no_inet_connection_desc_map">Vyžadováno pro stažení map.</string> <string name="no_inet_connection_desc_map">Vyžadováno pro stažení map.</string>
<string name="search_location">Hledání polohy…</string> <string name="search_location">Hledání polohy…</string>
<string name="storage_free_space">Volné místo</string> <string name="storage_free_space">Volné místo</string>
<string name="storage_place_description">Úložiště dat OsmAnd (pro mapy, GPX atd.): %1$s.</string> <string name="storage_place_description">Úložiště dat OsmAnd (pro mapy, soubory stop atd.): %1$s.</string>
<string name="give_permission">Udělit oprávnění</string> <string name="give_permission">Udělit oprávnění</string>
<string name="allow_access_location">Povolit přístup k poloze</string> <string name="allow_access_location">Povolit přístup k poloze</string>
<string name="first_usage_greeting">Nechejte se navigovat a objevte nová místa bez nutnosti připojení k Internetu</string> <string name="first_usage_greeting">Nechejte se navigovat a objevte nová místa bez nutnosti připojení k Internetu</string>
@ -1995,21 +1996,21 @@ Délka %2$s</string>
<string name="rendering_attr_hideOverground_name">Nadzemní objekty</string> <string name="rendering_attr_hideOverground_name">Nadzemní objekty</string>
<string name="shared_string_change">Změnit</string> <string name="shared_string_change">Změnit</string>
<string name="get_started">Začít</string> <string name="get_started">Začít</string>
<string name="osm_live_payment_desc">Předplatné je strháváno měsíčně. Můžete jej kdykoliv zrušit přes Google Play.</string> <string name="osm_live_payment_desc">Předplatné je strháváno za zvolené období. Můžete jej kdykoliv zrušit přes Google Play.</string>
<string name="donation_to_osm">Příspěvek komunitě OpenStreetMap</string> <string name="donation_to_osm">Příspěvek komunitě OSM</string>
<string name="donation_to_osm_desc">Část peněz z Vašeho příspěvku je zaslána přímo uživatelům, kteří provádějí změny v databázi OpenStreetMap. Cena předplatného pro Vás však zůstává stejná.</string> <string name="donation_to_osm_desc">Část peněz z vašeho příspěvku je zaslána přispěvatelům do OSM. Cena předplatného zůstává stejná.</string>
<string name="osm_live_subscription_desc">Předplatné umožňuje hodinové, denní, týdenní aktualizace a neomezené stahování map celého světa.</string> <string name="osm_live_subscription_desc">Předplatné umožňuje hodinové, denní, týdenní aktualizace a neomezené stahování map celého světa.</string>
<string name="get_it">Získat</string> <string name="get_it">Získat</string>
<string name="get_for">Získat za %1$s</string> <string name="get_for">Získat za %1$s</string>
<string name="osm_live_banner_desc">Získejte neomezené stahování map a aktualizace více než jednou za měsíc: týdenní, denní nebo každou hodinu.</string> <string name="osm_live_banner_desc">Získejte neomezené stahování map a aktualizace každý týden, den nebo dokonce hodinu.</string>
<string name="osmand_plus_banner_desc">Neomezené stahování map, aktualizací a modul Wikipedie.</string> <string name="osmand_plus_banner_desc">Neomezené stahování map, aktualizací a modul Wikipedie.</string>
<string name="si_mi_meters">Míle/metry</string> <string name="si_mi_meters">Míle/metry</string>
<string name="lang_hsb">Hornolužická srbština</string> <string name="lang_hsb">Hornolužická srbština</string>
<string name="gpx_no_tracks_title">Nemáte zatím žádné soubory stop</string> <string name="gpx_no_tracks_title">Nemáte zatím žádné soubory stop</string>
<string name="gpx_no_tracks_title_folder">Do složky můžete také přidat GPX soubory</string> <string name="gpx_no_tracks_title_folder">Do složky můžete přidat také soubory stop</string>
<string name="gpx_add_track">Přidat další…</string> <string name="gpx_add_track">Přidat další…</string>
<string name="shared_string_appearance">Vzhled</string> <string name="shared_string_appearance">Vzhled</string>
<string name="trip_rec_notification_settings">Povolit rychlé spuštění záznamu</string> <string name="trip_rec_notification_settings">Zapnout rychlý záznam</string>
<string name="trip_rec_notification_settings_desc">Zobrazit systémové oznámení, které umožňuje spustit nahrávání.</string> <string name="trip_rec_notification_settings_desc">Zobrazit systémové oznámení, které umožňuje spustit nahrávání.</string>
<string name="shared_string_notifications">Oznámení</string> <string name="shared_string_notifications">Oznámení</string>
<string name="shared_string_resume">Pokračovat</string> <string name="shared_string_resume">Pokračovat</string>
@ -2027,8 +2028,8 @@ Délka %2$s</string>
<string name="save_track_precision">Minimální přesnost záznamu</string> <string name="save_track_precision">Minimální přesnost záznamu</string>
<string name="save_track_precision_descr">Filtr: Nezaznamenávat, dokud není dosažena tato přesnost.</string> <string name="save_track_precision_descr">Filtr: Nezaznamenávat, dokud není dosažena tato přesnost.</string>
<string name="christmas_poi">Vánoční POI</string> <string name="christmas_poi">Vánoční POI</string>
<string name="christmas_desc">Před Vánoci a Novým rokem můžete zobrazit POI spojené s Vánoci: vánoční stromky, trhy atd.</string> <string name="christmas_desc">Jako přípravu na Vánoce a Nový rok si můžete zapnout zobrazení tematických bodů zájmu, jako vánočních stromků, trhů atd.</string>
<string name="christmas_desc_q">Zobrazit vánoční POI?</string> <string name="christmas_desc_q">Zobrazit vánoční body zájmu\?</string>
<string name="rendering_value_light_brown_name">Světle hnědá</string> <string name="rendering_value_light_brown_name">Světle hnědá</string>
<string name="rendering_value_dark_brown_name">Tmavě hnědá</string> <string name="rendering_value_dark_brown_name">Tmavě hnědá</string>
<string name="rendering_attr_contourColorScheme_name">Barevné schéma vrstevnic</string> <string name="rendering_attr_contourColorScheme_name">Barevné schéma vrstevnic</string>
@ -3893,12 +3894,12 @@ Zobrazená oblast: %1$s x %2$s</string>
<string name="plugin_global_prefs_info">Tato nastavení jsou globální a platí pro všechny profily</string> <string name="plugin_global_prefs_info">Tato nastavení jsou globální a platí pro všechny profily</string>
<string name="login_open_street_map">Přihlásit se do OpenStreetMap</string> <string name="login_open_street_map">Přihlásit se do OpenStreetMap</string>
<string name="login_open_street_map_org">Přihlásit se do OpenStreetMap.org</string> <string name="login_open_street_map_org">Přihlásit se do OpenStreetMap.org</string>
<string name="sign_in_with_open_street_map">Přihlásit se do OpenStreetMap</string> <string name="sign_in_with_open_street_map">Zaregistrovat se do OpenStreetMap</string>
<string name="osm_edits_view_descr">Můžete zobrazit své dosud neodeslané změny či chyby v OSM v %1$s. Odeslané body se již v OsmAnd nezobrazují.</string> <string name="osm_edits_view_descr">Můžete zobrazit své dosud neodeslané změny či chyby v OSM v %1$s. Odeslané body se již v OsmAnd nezobrazují.</string>
<string name="open_street_map_login_mode">Přihlaste se, abyste mohli odesílat nová nebo změněná data, <string name="open_street_map_login_mode">Abyste mohli odesílat nová nebo změněná data, musíte se přihlásit.
\n \n
\nbuď pomocí bezpečné metody OAuth, nebo pomocí jména a hesla.</string> \nPřihlásit se můžete pomocí bezpečné metody OAuth nebo jménem a heslem.</string>
<string name="use_login_password">Přihlásit se pomocí jména a hesla</string> <string name="use_login_password">Použít jméno a heslo</string>
<string name="login_account">Účet</string> <string name="login_account">Účet</string>
<string name="user_login">Uživatelské jméno</string> <string name="user_login">Uživatelské jméno</string>
<string name="markers_history">Historie značek</string> <string name="markers_history">Historie značek</string>
@ -3910,11 +3911,11 @@ Zobrazená oblast: %1$s x %2$s</string>
<string name="gpx_upload_identifiable_visibility_descr">\"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.</string> <string name="gpx_upload_identifiable_visibility_descr">\"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.</string>
<string name="osm_edit_close_note">Zavřít OSM poznámku</string> <string name="osm_edit_close_note">Zavřít OSM poznámku</string>
<string name="osm_edit_comment_note">Komentovat OSM poznámku</string> <string name="osm_edit_comment_note">Komentovat OSM poznámku</string>
<string name="osm_login_descr">Přihlaste se bezpečnou metodou OAuth nebo použijte své přihlašovací jméno a heslo.</string> <string name="osm_login_descr">Můžete se přihlásit bezpečnou metodou OAuth nebo použít své přihlašovací jméno a heslo.</string>
<string name="shared_string_add_photo">Přidat fotku</string> <string name="shared_string_add_photo">Přidat fotku</string>
<string name="register_on_openplacereviews">Zaregistrovat na <string name="register_on_openplacereviews">Zaregistrovat na
\nOpenPlaceReviews.org</string> \nOpenPlaceReviews.org</string>
<string name="register_on_openplacereviews_desc">Přihlaste se na webových stránkách open source projektu OpenPlaceReviews.org a budete moci odesílat ještě více fotografií.</string> <string name="register_on_openplacereviews_desc">Fotografie poskytuje open source projekt OpenPlaceReviews.org. Abyste mohli nahrát své fotografie, musíte se přihlásit na webové stránce.</string>
<string name="register_opr_create_new_account">Vytvořit nový účet</string> <string name="register_opr_create_new_account">Vytvořit nový účet</string>
<string name="register_opr_have_account">Už mám účet</string> <string name="register_opr_have_account">Už mám účet</string>
<string name="ltr_or_rtl_combine_via_colon">%1$s: %2$s</string> <string name="ltr_or_rtl_combine_via_colon">%1$s: %2$s</string>
@ -3962,4 +3963,9 @@ Zobrazená oblast: %1$s x %2$s</string>
<string name="export_not_enough_space">Není zde dostatek místa</string> <string name="export_not_enough_space">Není zde dostatek místa</string>
<string name="select_groups_for_import">Vyberte skupiny, které se mají importovat.</string> <string name="select_groups_for_import">Vyberte skupiny, které se mají importovat.</string>
<string name="select_items_for_import">Vyberte položky, které se mají importovat.</string> <string name="select_items_for_import">Vyberte položky, které se mají importovat.</string>
<string name="cannot_upload_image">Nepodařilo se odeslat obrázek, zkuste to prosím později</string>
<string name="select_picture">Vyberte obrázek</string>
<string name="use_dev_url_descr">Přepnout na dev.openstreetmap.org místo openstreetmap.org pro otestování odesílání OSM poznámek, bodů zájmu a GPX stop.</string>
<string name="use_dev_url">Použít dev.openstreetmap.org</string>
<string name="ltr_or_rtl_combine_via_star">%1$s * %2$s</string>
</resources> </resources>

View file

@ -3957,13 +3957,13 @@
<string name="subscription_expired_title">OsmAnd Live Abonnement ist abgelaufen</string> <string name="subscription_expired_title">OsmAnd Live Abonnement ist abgelaufen</string>
<string name="subscription_paused_title">OsmAnd Live Abonnement wurde ausgesetzt</string> <string name="subscription_paused_title">OsmAnd Live Abonnement wurde ausgesetzt</string>
<string name="subscription_on_hold_title">OsmAnd Live Abonnement liegt auf Eis</string> <string name="subscription_on_hold_title">OsmAnd Live Abonnement liegt auf Eis</string>
<string name="login_open_street_map">Anmeldung für OpenStreetMap</string> <string name="login_open_street_map">Bei OpenStreetMap anmelden</string>
<string name="login_open_street_map_org">Anmeldung für OpenStreetMap.org</string> <string name="login_open_street_map_org">Bei OpenStreetMap.org anmelden</string>
<string name="sign_in_with_open_street_map">Anmelden mit OpenStreetMap</string> <string name="sign_in_with_open_street_map">Anmelden mit OpenStreetMap</string>
<string name="open_street_map_login_mode">Melden Sie sich an, um Änderungen hochzuladen, <string name="open_street_map_login_mode">Sie müssen sich anmelden, um Änderungen hochzuladen.
\n \n
\nentweder mit OAuth oder mit Ihrem Benutzernamen und Passwort.</string> \nSie können sich mit der sicheren OAuth-Methode anmelden oder Ihren Benutzernamen und Ihr Passwort verwenden.</string>
<string name="use_login_password">Anmelden mit Benutzername und Passwort</string> <string name="use_login_password">Benutzername und Passwort verwenden</string>
<string name="login_account">Konto</string> <string name="login_account">Konto</string>
<string name="user_login">Benutzername</string> <string name="user_login">Benutzername</string>
<string name="markers_history">Historie der Marker</string> <string name="markers_history">Historie der Marker</string>
@ -3975,11 +3975,11 @@
<string name="gpx_upload_trackable_visibility_descr">\"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.</string> <string name="gpx_upload_trackable_visibility_descr">\"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.</string>
<string name="osm_edit_close_note">OSM Notiz schließen</string> <string name="osm_edit_close_note">OSM Notiz schließen</string>
<string name="osm_edit_comment_note">OSM Notiz kommentieren</string> <string name="osm_edit_comment_note">OSM Notiz kommentieren</string>
<string name="osm_login_descr">Melden Sie sich mit der sicheren OAuth-Methode an oder verwenden Sie Ihren Benutzernamen und Ihr Passwort.</string> <string name="osm_login_descr">Sie können sich mit der sicheren OAuth-Methode anmelden oder Ihren Benutzernamen und Ihr Passwort verwenden.</string>
<string name="shared_string_add_photo">Foto hinzufügen</string> <string name="shared_string_add_photo">Foto hinzufügen</string>
<string name="register_on_openplacereviews">Registrieren bei <string name="register_on_openplacereviews">Registrieren bei
\nOpenPlaceReviews.org</string> \nOpenPlaceReviews.org</string>
<string name="register_on_openplacereviews_desc">Melden Sie sich auf der Open Data Website OpenPlaceReviews.org an, um noch mehr Fotos hochzuladen.</string> <string name="register_on_openplacereviews_desc">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.</string>
<string name="register_opr_create_new_account">Neues Konto erstellen</string> <string name="register_opr_create_new_account">Neues Konto erstellen</string>
<string name="register_opr_have_account">Ich habe bereits ein Konto</string> <string name="register_opr_have_account">Ich habe bereits ein Konto</string>
<string name="shared_string_search_history">Suchverlauf</string> <string name="shared_string_search_history">Suchverlauf</string>
@ -4001,4 +4001,7 @@
<string name="select_items_for_import">Wählen Sie Elemente aus, die importiert werden sollen.</string> <string name="select_items_for_import">Wählen Sie Elemente aus, die importiert werden sollen.</string>
<string name="use_dev_url_descr">Wechseln Sie zu dev.openstreetmap.org anstelle von openstreetmap.org, um das Hochladen von OSM-Hinweisen / POI / GPX zu testen.</string> <string name="use_dev_url_descr">Wechseln Sie zu dev.openstreetmap.org anstelle von openstreetmap.org, um das Hochladen von OSM-Hinweisen / POI / GPX zu testen.</string>
<string name="use_dev_url">dev.openstreetmap.org verwenden</string> <string name="use_dev_url">dev.openstreetmap.org verwenden</string>
<string name="cannot_upload_image">Bild kann nicht hochgeladen werden, bitte versuchen Sie es später erneut</string>
<string name="select_picture">Bild auswählen</string>
<string name="ltr_or_rtl_combine_via_star">%1$s * %2$s</string>
</resources> </resources>

View file

@ -3998,4 +3998,5 @@
<string name="use_dev_url">Uzi dev.openstreetmap.org</string> <string name="use_dev_url">Uzi dev.openstreetmap.org</string>
<string name="cannot_upload_image">Ne povas alŝuti la bildon, reprovu poste</string> <string name="cannot_upload_image">Ne povas alŝuti la bildon, reprovu poste</string>
<string name="select_picture">Elektu bildon</string> <string name="select_picture">Elektu bildon</string>
<string name="ltr_or_rtl_combine_via_star">%1$s * %2$s</string>
</resources> </resources>

View file

@ -459,7 +459,7 @@
<string name="rendering_attr_hidePOILabels_name">POI sildid</string> <string name="rendering_attr_hidePOILabels_name">POI sildid</string>
<string name="will_open_tomorrow_at">Avaneb homme kell</string> <string name="will_open_tomorrow_at">Avaneb homme kell</string>
<string name="show_closed_notes">Kuva suletud teated</string> <string name="show_closed_notes">Kuva suletud teated</string>
<string name="switch_osm_notes_visibility_desc">Kuva/peida OSM teated kaardil.</string> <string name="switch_osm_notes_visibility_desc">Kuva või peida OSM teated kaardil.</string>
<string name="osc_file_desc">OSC - sobib andmete laadimiseks OpenStreetMap\'i andmebaasi.</string> <string name="osc_file_desc">OSC - sobib andmete laadimiseks OpenStreetMap\'i andmebaasi.</string>
<string name="osc_file">OSC fail</string> <string name="osc_file">OSC fail</string>
<string name="choose_file_type">Vali faililiik</string> <string name="choose_file_type">Vali faililiik</string>
@ -1012,7 +1012,7 @@
<string name="swap_two_places">Vaheta %1$s ja %2$s</string> <string name="swap_two_places">Vaheta %1$s ja %2$s</string>
<string name="route_start_point">Lähtepunkt</string> <string name="route_start_point">Lähtepunkt</string>
<string name="track_saved">Rada salvestatud</string> <string name="track_saved">Rada salvestatud</string>
<string name="empty_filename">Faili nimi on tühi</string> <string name="empty_filename">Faili nimi on puudu</string>
<string name="shared_string_revert">Ennista</string> <string name="shared_string_revert">Ennista</string>
<string name="rendering_attr_showCycleNodeNetworkRoutes_name">Kuva sõlmevõrgu rattateekonnad</string> <string name="rendering_attr_showCycleNodeNetworkRoutes_name">Kuva sõlmevõrgu rattateekonnad</string>
<string name="clear_confirmation_msg">Tühjenda %1$s\?</string> <string name="clear_confirmation_msg">Tühjenda %1$s\?</string>
@ -2653,9 +2653,9 @@
<string name="keep_passed_markers_descr">Lemmikute või GPX-teekonnapunktide grupina lisatud markerid, mis on märgitud läbituks, jäävad kaardile. Kui grupp pole aktiivne, kaovad markerid kaardilt.</string> <string name="keep_passed_markers_descr">Lemmikute või GPX-teekonnapunktide grupina lisatud markerid, mis on märgitud läbituks, jäävad kaardile. Kui grupp pole aktiivne, kaovad markerid kaardilt.</string>
<string name="shared_string_launch">Käivita</string> <string name="shared_string_launch">Käivita</string>
<string name="lang_gn_py">Guaraani</string> <string name="lang_gn_py">Guaraani</string>
<string name="routing_attr_piste_type_downhill_name">Alpisuusatamine/laskumine</string> <string name="routing_attr_piste_type_downhill_name">Alpisuusatamine ja mäesuusatamine</string>
<string name="routing_attr_piste_type_downhill_description">Nõlvad alpisuusatamisks või laskumiseks ja ligipääs suusatõstukitele.</string> <string name="routing_attr_piste_type_downhill_description">Nõlvad alpisuusatamisks või laskumiseks ja ligipääs suusatõstukitele.</string>
<string name="routing_attr_piste_type_nordic_name">Murdmaa/põhjamaa suusatamine</string> <string name="routing_attr_piste_type_nordic_name">Murdmaasuusatamine ja põhja suusaalad</string>
<string name="routing_attr_piste_type_nordic_description">Murdmaa või põhjamaa suusatamise rajad.</string> <string name="routing_attr_piste_type_nordic_description">Murdmaa või põhjamaa suusatamise rajad.</string>
<string name="routing_attr_piste_type_skitour_name">Suusamatkad</string> <string name="routing_attr_piste_type_skitour_name">Suusamatkad</string>
<string name="routing_attr_piste_type_skitour_description">Suusamatkarajad.</string> <string name="routing_attr_piste_type_skitour_description">Suusamatkarajad.</string>
@ -3774,7 +3774,7 @@
\nTellimust saad hallata ja tühistada AppGallery seadistustest.</string> \nTellimust saad hallata ja tühistada AppGallery seadistustest.</string>
<string name="osm_live_payment_desc_hw">Arveldame tellimuse eest valitud ajavahemiku alusel. Seda saad sa vabalt valitud ajal tühistada AppGallery\'s.</string> <string name="osm_live_payment_desc_hw">Arveldame tellimuse eest valitud ajavahemiku alusel. Seda saad sa vabalt valitud ajal tühistada AppGallery\'s.</string>
<string name="use_complex_routing">Keeruka teekonna koostamine</string> <string name="use_complex_routing">Keeruka teekonna koostamine</string>
<string name="osm_edit_logout_success">Väljalogimine õnnestus</string> <string name="osm_edit_logout_success">Väljalogitud</string>
<string name="development">Arendus</string> <string name="development">Arendus</string>
<string name="clear_osm_token">Kustuta OpenStreetMap\'i OAuth\'i pääsuluba</string> <string name="clear_osm_token">Kustuta OpenStreetMap\'i OAuth\'i pääsuluba</string>
<string name="perform_oauth_authorization">Logi sisse OAuth abil</string> <string name="perform_oauth_authorization">Logi sisse OAuth abil</string>
@ -3809,7 +3809,7 @@
<string name="use_login_password">Pruugi kasutajanime ja salasõna</string> <string name="use_login_password">Pruugi kasutajanime ja salasõna</string>
<string name="open_street_map_login_mode">Täienduste või muudatuste üleslaadimiseks pead sisse logima. <string name="open_street_map_login_mode">Täienduste või muudatuste üleslaadimiseks pead sisse logima.
\n \n
\nSa võid selleks kasutada mõnd turvalust OAuth võimalust või oma kasutajanime ning salasõna.</string> \nSa võid selleks kasutada mõnd turvalist OAuth võimalust või oma kasutajanime ning salasõna.</string>
<string name="login_account">Kasutajakonto</string> <string name="login_account">Kasutajakonto</string>
<string name="send_files_to_openstreetmap">Saada GPX fail OpenStreetMappi</string> <string name="send_files_to_openstreetmap">Saada GPX fail OpenStreetMappi</string>
<string name="osm_edit_close_note">Sulge OSM märkus</string> <string name="osm_edit_close_note">Sulge OSM märkus</string>
@ -3821,4 +3821,25 @@
<string name="register_on_openplacereviews_desc">Fotode allikaks on OpenPlaceReviews.org veebisait. Oma fotode üleslaadimiseks peaksid liituma selle veebisaidi kasutajaks.</string> <string name="register_on_openplacereviews_desc">Fotode allikaks on OpenPlaceReviews.org veebisait. Oma fotode üleslaadimiseks peaksid liituma selle veebisaidi kasutajaks.</string>
<string name="register_opr_create_new_account">Loo uus kasutajakonto</string> <string name="register_opr_create_new_account">Loo uus kasutajakonto</string>
<string name="register_opr_have_account">Mul juba on kasutajakonto olemas</string> <string name="register_opr_have_account">Mul juba on kasutajakonto olemas</string>
<string name="shared_string_search_history">Otsinguajalugu</string>
<string name="app_mode_kayak">Süst (merekajak)</string>
<string name="app_mode_motorboat">Mootorpaat</string>
<string name="cannot_upload_image">Pildi üleslaadimine ei õnnestunud, palun proovi hiljem uuesti</string>
<string name="select_picture">Vali pilt</string>
<string name="shared_string_resources">Ressursid</string>
<string name="approximate_file_size">Faili ligikaudne suurus</string>
<string name="select_data_to_export">Vali faili eksporditavad andmed.</string>
<string name="file_size_needed_for_import">Importimiseks vajalik</string>
<string name="export_not_enough_space_descr">Sinu nutiseadmes on vaba ruumi vaid %1$s. Palun tee ruumi juurde või jäta osa kirjetest eksportimata.</string>
<string name="export_not_enough_space">Pole piisavalt ruumi</string>
<string name="select_groups_for_import">Vali imporditavad grupid.</string>
<string name="select_items_for_import">Vali imporditavad kirjed.</string>
<string name="add_to_mapillary">Lisa Mapillary saiti</string>
<string name="add_to_opr">Lisa OpenPlaceReviews saiti</string>
<string name="use_dev_url_descr">Tavasaidi openstreetmap.org asemel kasuta OSM märkuste, huvipunktide või GPX-failide üleslaadimise katsetamiseks arendussaiti dev.openstreetmap.org.</string>
<string name="use_dev_url">Kasuta dev.openstreetmap.org saiti</string>
<string name="add_photos_descr">OsmAnd kuvam fotosid mitmetest allikatest:
\nOpenPlaceReviews - huvipunkti fotod;
\nMapillary - tänavavaated;
\nWikimedia või veeb - OpenStreetMap\'i andmetes kirjeldatud fotod.</string>
</resources> </resources>

View file

@ -3952,7 +3952,7 @@
\n \n
\nsoit avec OAuth soit avec votre identifiant et mot de passe.</string> \nsoit avec OAuth soit avec votre identifiant et mot de passe.</string>
<string name="osm_login_descr">Vous pouvez vous connecter avec la méthode sécurisée OAuth ou avec votre identifiant et votre mot de passe.</string> <string name="osm_login_descr">Vous pouvez vous connecter avec la méthode sécurisée OAuth ou avec votre identifiant et votre mot de passe.</string>
<string name="register_on_openplacereviews_desc">Connectez-vous au site web du projet OpenPlaceReviews.org pour ajouter des photos.</string> <string name="register_on_openplacereviews_desc">Les photos sont fournies par le projet OpenPlaceReviews.org. Vous devez vous connecter au site web pour envoyer vos photos.</string>
<string name="shared_string_search_history">Historique de recherche</string> <string name="shared_string_search_history">Historique de recherche</string>
<string name="app_mode_kayak">Kayak</string> <string name="app_mode_kayak">Kayak</string>
<string name="export_not_enough_space_descr">Votre appareil n\'a que %1$s disponible. Veuillez libérer de l\'espace ou désélectionner l\'export pour certains éléments.</string> <string name="export_not_enough_space_descr">Votre appareil n\'a que %1$s disponible. Veuillez libérer de l\'espace ou désélectionner l\'export pour certains éléments.</string>
@ -3975,4 +3975,5 @@
<string name="select_items_for_import">Sélectionnez les objets à importer.</string> <string name="select_items_for_import">Sélectionnez les objets à importer.</string>
<string name="cannot_upload_image">Impossible d\'envoyer l\'image, veuillez réessayer plus tard</string> <string name="cannot_upload_image">Impossible d\'envoyer l\'image, veuillez réessayer plus tard</string>
<string name="select_picture">Sélectionnez une image</string> <string name="select_picture">Sélectionnez une image</string>
<string name="ltr_or_rtl_combine_via_star">%1$s * %2$s</string>
</resources> </resources>

View file

@ -4023,4 +4023,5 @@ Lon %2$s</string>
\nOpenPlaceReviews - imaxes POI; \nOpenPlaceReviews - imaxes POI;
\nMapillary - maxes a nivel de rúa; \nMapillary - maxes a nivel de rúa;
\nWeb / Wikimedia - imaxes POI especificadas nos datos do OpenStreetMap.</string> \nWeb / Wikimedia - imaxes POI especificadas nos datos do OpenStreetMap.</string>
<string name="ltr_or_rtl_combine_via_star">%1$s * %2$s</string>
</resources> </resources>

View file

@ -3997,4 +3997,5 @@
<string name="use_dev_url">Utilizza dev.openstreetmap.org</string> <string name="use_dev_url">Utilizza dev.openstreetmap.org</string>
<string name="cannot_upload_image">Impossibile caricare l\'immagine, riprovare in seguito</string> <string name="cannot_upload_image">Impossibile caricare l\'immagine, riprovare in seguito</string>
<string name="select_picture">Scegli la foto</string> <string name="select_picture">Scegli la foto</string>
<string name="ltr_or_rtl_combine_via_star">%1$s * %2$s</string>
</resources> </resources>

View file

@ -78,7 +78,7 @@
<dimen name="measurement_tool_divider_margin">12dp</dimen> <dimen name="measurement_tool_divider_margin">12dp</dimen>
<dimen name="measurement_tool_content_padding_medium">18dp</dimen> <dimen name="measurement_tool_content_padding_medium">18dp</dimen>
<dimen name="measurement_tool_text_margin">12dp</dimen> <dimen name="measurement_tool_text_margin">12dp</dimen>
<dimen name="measurement_tool_points_list_container_height">330dp</dimen> <dimen name="measurement_tool_info_cards_container_height">330dp</dimen>
<dimen name="measurement_tool_up_down_row_height">48dp</dimen> <dimen name="measurement_tool_up_down_row_height">48dp</dimen>
<dimen name="measurement_tool_text_button_padding_small">18dp</dimen> <dimen name="measurement_tool_text_button_padding_small">18dp</dimen>
<dimen name="measurement_tool_text_button_padding">24dp</dimen> <dimen name="measurement_tool_text_button_padding">24dp</dimen>

View file

@ -3994,4 +3994,5 @@
<string name="use_dev_url">Usar dev.openstreetmap.org</string> <string name="use_dev_url">Usar dev.openstreetmap.org</string>
<string name="cannot_upload_image">Não é possível carregar a imagem, por favor, tente novamente mais tarde</string> <string name="cannot_upload_image">Não é possível carregar a imagem, por favor, tente novamente mais tarde</string>
<string name="select_picture">Selecione a foto</string> <string name="select_picture">Selecione a foto</string>
<string name="ltr_or_rtl_combine_via_star">%1$s * %2$s</string>
</resources> </resources>

View file

@ -1682,7 +1682,7 @@
<string name="osm_live_user_public_name">Nome público</string> <string name="osm_live_user_public_name">Nome público</string>
<string name="osm_live_hide_user_name">Não mostrar o meu nome nos relatórios</string> <string name="osm_live_hide_user_name">Não mostrar o meu nome nos relatórios</string>
<string name="osm_live_support_region">Região de suporte</string> <string name="osm_live_support_region">Região de suporte</string>
<string name="file_name_containes_illegal_char">O nome do ficheiro contém um carácter inválido</string> <string name="file_name_containes_illegal_char">Carácter inválido no nome do ficheiro</string>
<string name="reports_for">Relatório para</string> <string name="reports_for">Relatório para</string>
<string name="number_of_contributors">Número de colaboradores</string> <string name="number_of_contributors">Número de colaboradores</string>
<string name="number_of_edits">Número de edições</string> <string name="number_of_edits">Número de edições</string>
@ -2301,7 +2301,7 @@
<string name="first_intermediate_dest_description">Adiciona paragem inicial</string> <string name="first_intermediate_dest_description">Adiciona paragem inicial</string>
<string name="subsequent_dest_description">Mover o destino para cima e criá-lo</string> <string name="subsequent_dest_description">Mover o destino para cima e criá-lo</string>
<string name="show_closed_notes">Mostrar anotações fechadas</string> <string name="show_closed_notes">Mostrar anotações fechadas</string>
<string name="switch_osm_notes_visibility_desc">Mostrar/esconder anotações do OSM no mapa.</string> <string name="switch_osm_notes_visibility_desc">Mostrar ou ocultar anotações do OSM no mapa.</string>
<string name="gpx_file_desc">GPX - adequado para exportar para o JOSM ou outros editores do OSM.</string> <string name="gpx_file_desc">GPX - adequado para exportar para o JOSM ou outros editores do OSM.</string>
<string name="osc_file_desc">OSC - adequado para exportar para o OSM.</string> <string name="osc_file_desc">OSC - adequado para exportar para o OSM.</string>
<string name="shared_string_gpx_file">Ficheiro GPX</string> <string name="shared_string_gpx_file">Ficheiro GPX</string>
@ -3084,9 +3084,9 @@
<string name="zoom_by_wunderlinq_descr">Alterar o zoom do mapa deslocando a roda para cima e para baixo. Escapar devolve-o à aplicação WunderLINQ.</string> <string name="zoom_by_wunderlinq_descr">Alterar o zoom do mapa deslocando a roda para cima e para baixo. Escapar devolve-o à aplicação WunderLINQ.</string>
<string name="zoom_by_wunderlinq">Usar WunderLINQ para controle</string> <string name="zoom_by_wunderlinq">Usar WunderLINQ para controle</string>
<string name="quick_action_need_to_add_item_to_list">Adicione pelo menos um item à lista nas configurações de \'Ação rápida\'</string> <string name="quick_action_need_to_add_item_to_list">Adicione pelo menos um item à lista nas configurações de \'Ação rápida\'</string>
<string name="routing_attr_piste_type_downhill_name">Esqui alpino/downhill</string> <string name="routing_attr_piste_type_downhill_name">Esqui alpino e downhill</string>
<string name="routing_attr_piste_type_downhill_description">Pistas para esqui alpino ou downhill e acesso a teleféricos de esqui.</string> <string name="routing_attr_piste_type_downhill_description">Pistas para esqui alpino ou downhill e acesso a teleféricos de esqui.</string>
<string name="routing_attr_piste_type_nordic_name">Cross Country/esqui nórdico</string> <string name="routing_attr_piste_type_nordic_name">Cross Country e esqui nórdico</string>
<string name="routing_attr_piste_type_nordic_description">Trilhas para esqui nórdico ou cross-country.</string> <string name="routing_attr_piste_type_nordic_description">Trilhas para esqui nórdico ou cross-country.</string>
<string name="routing_attr_piste_type_skitour_name">Passeios de esqui</string> <string name="routing_attr_piste_type_skitour_name">Passeios de esqui</string>
<string name="routing_attr_piste_type_skitour_description">Rotas para excursões de esqui.</string> <string name="routing_attr_piste_type_skitour_description">Rotas para excursões de esqui.</string>
@ -3425,7 +3425,7 @@
<string name="shared_string_hillshade">Sombras de relevo</string> <string name="shared_string_hillshade">Sombras de relevo</string>
<string name="n_items_of_z">%1$s de %2$s</string> <string name="n_items_of_z">%1$s de %2$s</string>
<string name="download_slope_maps">Pistas</string> <string name="download_slope_maps">Pistas</string>
<string name="quick_action_show_hide_terrain">Mostrar / ocultar terreno</string> <string name="quick_action_show_hide_terrain">Mostrar ou ocultar terrenos</string>
<string name="quick_action_terrain_hide">Ocultar terreno</string> <string name="quick_action_terrain_hide">Ocultar terreno</string>
<string name="quick_action_terrain_show">Mostrar terreno</string> <string name="quick_action_terrain_show">Mostrar terreno</string>
<string name="quick_action_terrain_descr">Um botão para mostrar ou esconder a camada do terreno no mapa.</string> <string name="quick_action_terrain_descr">Um botão para mostrar ou esconder a camada do terreno no mapa.</string>
@ -3676,11 +3676,11 @@
<string name="search_poi_types_descr">Combinar categorias de POI de categorias diferentes. Toque em trocar para selecionar tudo, toque no lado esquerdo para seleção da categoria.</string> <string name="search_poi_types_descr">Combinar categorias de POI de categorias diferentes. Toque em trocar para selecionar tudo, toque no lado esquerdo para seleção da categoria.</string>
<string name="quick_action_transport_hide">Ocultar o transporte público</string> <string name="quick_action_transport_hide">Ocultar o transporte público</string>
<string name="quick_action_transport_show">Mostrar transporte público</string> <string name="quick_action_transport_show">Mostrar transporte público</string>
<string name="quick_action_show_hide_transport">Mostrar/ocultar transporte público</string> <string name="quick_action_show_hide_transport">Mostrar ou ocultar transportes públicos</string>
<string name="quick_action_transport_descr">Botão que mostra ou oculta o transporte público no mapa.</string> <string name="quick_action_transport_descr">Botão que mostra ou oculta o transporte público no mapa.</string>
<string name="create_edit_poi">Criar / Editar POI</string> <string name="create_edit_poi">Criar ou editar um POI</string>
<string name="parking_positions">Posições de estacionamento</string> <string name="parking_positions">Posições de estacionamento</string>
<string name="add_edit_favorite">Adicionar / Editar Favorito</string> <string name="add_edit_favorite">Adicionar ou editar um favorito</string>
<string name="reset_deafult_order">Restaurar ordem de itens padrão</string> <string name="reset_deafult_order">Restaurar ordem de itens padrão</string>
<string name="back_to_editing">Voltar à edição</string> <string name="back_to_editing">Voltar à edição</string>
<string name="quick_action_switch_profile_descr">O botão de ação alterna entre os perfis selecionados.</string> <string name="quick_action_switch_profile_descr">O botão de ação alterna entre os perfis selecionados.</string>
@ -3869,7 +3869,7 @@
<string name="context_menu_item_add_waypoint">Adicionar ponto de passagem de trilha</string> <string name="context_menu_item_add_waypoint">Adicionar ponto de passagem de trilha</string>
<string name="map_widget_monitoring">Gravação de viagem</string> <string name="map_widget_monitoring">Gravação de viagem</string>
<string name="monitoring_control_start">REC</string> <string name="monitoring_control_start">REC</string>
<string name="save_global_track_interval_descr">Especifique o intervalo de registo para a gravação geral da faixa (ativado através do widget de gravação Trip no mapa).</string> <string name="save_global_track_interval_descr">Especifique o intervalo de registo para a gravação geral do trilho (ligado através do widget de \'gravação de viagem\' no mapa).</string>
<string name="gpx_monitoring_stop">Pausar a gravação da viagem</string> <string name="gpx_monitoring_stop">Pausar a gravação da viagem</string>
<string name="gpx_monitoring_start">Retomar a gravação da viagem</string> <string name="gpx_monitoring_start">Retomar a gravação da viagem</string>
<string name="system_default_theme">Predefinição do sistema</string> <string name="system_default_theme">Predefinição do sistema</string>
@ -3890,7 +3890,7 @@
<string name="disable_recording_once_app_killed_descrp">Vai pausar o registo de faixas quando a app for morta (através de apps recentes). (indicação de fundo de OsmAnd desaparece da barra de notificação do Android.)</string> <string name="disable_recording_once_app_killed_descrp">Vai pausar o registo de faixas quando a app for morta (através de apps recentes). (indicação de fundo de OsmAnd desaparece da barra de notificação do Android.)</string>
<string name="release_3_8">- Função atualizada de Planear uma rota: permite utilizar diferentes tipos de navegação por segmento e a inclusão de faixas <string name="release_3_8">- Função atualizada de Planear uma rota: permite utilizar diferentes tipos de navegação por segmento e a inclusão de faixas
\n \n
\n - Novo menu Aparência para trilhos: selecionar cor, espessura, setas de direção de visualização, ícones de início/fim \n - Novo menu Aparência para trilhos: selecionar cor, espessura, setas de direção de visualização, ícones de início e fim
\n \n
\n - Melhoria da visibilidade dos nós da bicicleta. \n - Melhoria da visibilidade dos nós da bicicleta.
\n \n
@ -3906,7 +3906,7 @@
<string name="sort_last_modified">Última modificação</string> <string name="sort_last_modified">Última modificação</string>
<string name="sort_name_descending">Nome: Z A</string> <string name="sort_name_descending">Nome: Z A</string>
<string name="sort_name_ascending">Nome: A Z</string> <string name="sort_name_ascending">Nome: A Z</string>
<string name="start_finish_icons">Ícones de início/fim</string> <string name="start_finish_icons">Ícones de início e fim</string>
<string name="contour_lines_thanks">Obrigado por comprar \'Curvas de nível\'</string> <string name="contour_lines_thanks">Obrigado por comprar \'Curvas de nível\'</string>
<string name="osm_live_payment_desc_hw">Assinatura cobrada por período selecionado. Cancele-a na AppGallery a qualquer momento.</string> <string name="osm_live_payment_desc_hw">Assinatura cobrada por período selecionado. Cancele-a na AppGallery a qualquer momento.</string>
<string name="osm_live_payment_subscription_management_hw">O pagamento será debitado na sua conta AppGallery no momento da confirmação da compra. <string name="osm_live_payment_subscription_management_hw">O pagamento será debitado na sua conta AppGallery no momento da confirmação da compra.
@ -3924,10 +3924,10 @@
<string name="complex_routing_descr">Roteamento em duas fases para a navegação automotiva.</string> <string name="complex_routing_descr">Roteamento em duas fases para a navegação automotiva.</string>
<string name="use_native_pt">Desenvolvimento nativos de transportes públicos</string> <string name="use_native_pt">Desenvolvimento nativos de transportes públicos</string>
<string name="use_native_pt_desc">Mudar para Cálculo de rotas de transporte público Java (seguro)</string> <string name="use_native_pt_desc">Mudar para Cálculo de rotas de transporte público Java (seguro)</string>
<string name="perform_oauth_authorization_description">Realize um login OAuth para usar as funcionalidades do osmedit</string> <string name="perform_oauth_authorization_description">Entre com o OAuth para usar os recursos do osmedit</string>
<string name="perform_oauth_authorization">Fazer login via OAuth</string> <string name="perform_oauth_authorization">Fazer login via OAuth</string>
<string name="clear_osm_token">Limpar token do OpenStreetMap OAuth</string> <string name="clear_osm_token">Limpar token do OpenStreetMap OAuth</string>
<string name="osm_edit_logout_success">Logout bem sucedido</string> <string name="osm_edit_logout_success">Saiu</string>
<string name="file_already_imported">O ficheiro já é importado em OsmAnd</string> <string name="file_already_imported">O ficheiro já é importado em OsmAnd</string>
<string name="use_two_phase_routing">Usar algoritmo de roteamento de 2 fases A*</string> <string name="use_two_phase_routing">Usar algoritmo de roteamento de 2 fases A*</string>
<string name="snowmobile_render_descr">Para a condução de motos de neve com estradas e pistas dedicadas.</string> <string name="snowmobile_render_descr">Para a condução de motos de neve com estradas e pistas dedicadas.</string>
@ -3961,15 +3961,15 @@
<string name="login_open_street_map">Fazer login ao OpenStreetMap</string> <string name="login_open_street_map">Fazer login ao OpenStreetMap</string>
<string name="login_open_street_map_org">Entrar com OpenStreetMap.org</string> <string name="login_open_street_map_org">Entrar com OpenStreetMap.org</string>
<string name="sign_in_with_open_street_map">Entrar com OpenStreetMap</string> <string name="sign_in_with_open_street_map">Entrar com OpenStreetMap</string>
<string name="use_login_password">Usar nome do utilizador e palavra-passe</string> <string name="use_login_password">Usar o nome do utilizador e palavra-passe</string>
<string name="login_account">Conta</string> <string name="login_account">Conta</string>
<string name="user_login">Entrar</string> <string name="user_login">Entrar</string>
<string name="markers_history">Histórico de marcadores</string> <string name="markers_history">Histórico de marcadores</string>
<string name="send_files_to_openstreetmap">Enviar ficherio de GPX ao OpenStreetMap</string> <string name="send_files_to_openstreetmap">Enviar ficherio de GPX ao OpenStreetMap</string>
<string name="enter_text_separated">Insira etiquetas separadas por vírgula.</string> <string name="enter_text_separated">Insira etiquetas separadas por vírgula.</string>
<string name="gpx_upload_public_visibility_descr">Público significa que o rastreamento será mostrado publicamente nos Seus traços de GPS e em listas públicas de rastreamento de GPS. Os dados servidos através da API não fazem referência à sua página de rastreamento. As marcas temporais dos pontos de rastreamento não estão disponíveis através da API pública do GPS e os pontos não estão ordenados cronologicamente. No entanto, outros utilizadores ainda são capazes de descarregar o rastreamento bruto da lista pública de rastreamento e de quaisquer carimbos de tempo contidos nela.</string> <string name="gpx_upload_public_visibility_descr">\"Público\" significa que o rastreamento é mostrado publicamente em Seus traços de GPS e em listas públicas de rastreamento de GPS, e na lista pública de rastreamento com carimbos de data e hora na forma bruta. Os dados servidos através da API não fazem referência à sua página de rastreamento. Os marcadores de ponto de rastreamento não estão disponíveis através da API de GPS pública, e os pontos de rastreamento não estão ordenados cronologicamente.</string>
<string name="gpx_upload_private_visibility_descr">Privado significa que o rastreamento não aparece em nenhuma listagem pública, mas os pontos de rastreamento dele ainda estarão disponíveis através da API pública do GPS sem carimbos de tempo, mas não serão ordenados cronologicamente.</string> <string name="gpx_upload_private_visibility_descr">\"Privado\" significa que o rastreamento não aparece em nenhuma listagem pública, mas os pontos de rastreamento dela em ordem não cronológica estão disponíveis através da API pública do GPS sem carimbos de tempo.</string>
<string name="gpx_upload_identifiable_visibility_descr">Identificável significa que o rastreamento será mostrado publicamente nos Seus traços de GPS e em listas públicas de rastreamento de GPS, ou seja, outros utilizadores serão capazes de descarregar o rastreamento bruto e associá-lo ao seu nome de utilizador. Os dados servidos através da API dos pontos de rastreamento referenciarão à sua página de rastreamento original. As marcas de tempo dos pontos de rastreamento estão disponíveis através da API pública do GPS.</string> <string name="gpx_upload_identifiable_visibility_descr">\"Identificável\" significa que o rastreamento será mostrado publicamente em Seus traços de GPS e em listas públicas de rastreamento de GPS, ou seja, outros utilizadoes serão capazes de descarregar o rastreamento bruto e associá-lo ao seu nome de utilizador. Os dados públicos de pontos de rastreamento marcados com a hora da API do GPS servidos através da API de pontos de rastreamento farão referência à sua página de rastreamento original.</string>
<string name="gpx_upload_trackable_visibility_descr">\"Rastreável\" significa que o rastreamento não aparece em nenhuma listagem pública, mas pontos de rastreamento processados com carimbos de tempo a partir dele (que não podem ser associados diretamente a si) fazem através de descarregadas da API pública do GPS.</string> <string name="gpx_upload_trackable_visibility_descr">\"Rastreável\" significa que o rastreamento não aparece em nenhuma listagem pública, mas pontos de rastreamento processados com carimbos de tempo a partir dele (que não podem ser associados diretamente a si) fazem através de descarregadas da API pública do GPS.</string>
<string name="osm_edit_close_note">Fechar nota do OSM</string> <string name="osm_edit_close_note">Fechar nota do OSM</string>
<string name="osm_edit_comment_note">Comentário de nota do OSM</string> <string name="osm_edit_comment_note">Comentário de nota do OSM</string>
@ -4001,4 +4001,5 @@
<string name="cannot_upload_image">Não é possível enviar a imagem, por favor, tente novamente mais tarde</string> <string name="cannot_upload_image">Não é possível enviar a imagem, por favor, tente novamente mais tarde</string>
<string name="select_picture">Selecione a imagem</string> <string name="select_picture">Selecione a imagem</string>
<string name="use_dev_url_descr">Mude para usar dev.openstreetmap.org ao invés de openstreetmap.org para testar enviar uma OSM Nota / POI / GPX.</string> <string name="use_dev_url_descr">Mude para usar dev.openstreetmap.org ao invés de openstreetmap.org para testar enviar uma OSM Nota / POI / GPX.</string>
<string name="ltr_or_rtl_combine_via_star">%1$s * %2$s</string>
</resources> </resources>

View file

@ -3864,4 +3864,8 @@
<string name="poi_diplomatic_services_non_immigrant_visas_filter">Неиммиграционные визы</string> <string name="poi_diplomatic_services_non_immigrant_visas_filter">Неиммиграционные визы</string>
<string name="poi_liaison_filter">Связь</string> <string name="poi_liaison_filter">Связь</string>
<string name="poi_embassy_filter">Посольство</string> <string name="poi_embassy_filter">Посольство</string>
<string name="poi_liaison_subnational">Субнациональный</string>
<string name="poi_consulate_consular_agency">Консульское агентство</string>
<string name="poi_embassy_interests_section">Раздел интересов</string>
<string name="poi_consulate_filter">Консульство</string>
</resources> </resources>

View file

@ -3480,7 +3480,7 @@
<string name="replace_all">Заменить все</string> <string name="replace_all">Заменить все</string>
<string name="keep_both">Оставить оба</string> <string name="keep_both">Оставить оба</string>
<string name="keep_both_desc">Импортированные элементы будут добавлены с префиксом</string> <string name="keep_both_desc">Импортированные элементы будут добавлены с префиксом</string>
<string name="import_duplicates_description">В OsmAnd уже есть элементы с теми же именами, что и импортированные. <string name="import_duplicates_description">В OsmAnd уже есть элементы с такими же именами, как у импортированных.
\n \n
\nВыберите действие.</string> \nВыберите действие.</string>
<string name="import_duplicates_title">Некоторые элементы уже существуют</string> <string name="import_duplicates_title">Некоторые элементы уже существуют</string>
@ -3992,4 +3992,5 @@
<string name="cannot_upload_image">Невозможно отправить изображение, попробуйте позже</string> <string name="cannot_upload_image">Невозможно отправить изображение, попробуйте позже</string>
<string name="select_picture">Выбор изображения</string> <string name="select_picture">Выбор изображения</string>
<string name="app_mode_kayak">Каяк</string> <string name="app_mode_kayak">Каяк</string>
<string name="ltr_or_rtl_combine_via_star">%1$s * %2$s</string>
</resources> </resources>

View file

@ -3996,4 +3996,5 @@
<string name="use_dev_url">Imprea dev.openstreetmap.org</string> <string name="use_dev_url">Imprea dev.openstreetmap.org</string>
<string name="cannot_upload_image">Impossìbile carrigare s\'immàgine, torra a proare prus a tardu</string> <string name="cannot_upload_image">Impossìbile carrigare s\'immàgine, torra a proare prus a tardu</string>
<string name="select_picture">Ischerta un\'immàgine</string> <string name="select_picture">Ischerta un\'immàgine</string>
<string name="ltr_or_rtl_combine_via_star">%1$s * %2$s</string>
</resources> </resources>

View file

@ -3993,4 +3993,6 @@
<string name="select_items_for_import">Zvoľte položky, ktoré budú importované.</string> <string name="select_items_for_import">Zvoľte položky, ktoré budú importované.</string>
<string name="use_dev_url_descr">Prepnúť na dev.openstreetmap.org namiesto openstreetmap.org pre otestovanie odosielania OSM poznámok / bodov záujmu / GPX stôp.</string> <string name="use_dev_url_descr">Prepnúť na dev.openstreetmap.org namiesto openstreetmap.org pre otestovanie odosielania OSM poznámok / bodov záujmu / GPX stôp.</string>
<string name="use_dev_url">Použiť dev.openstreetmap.org</string> <string name="use_dev_url">Použiť dev.openstreetmap.org</string>
<string name="cannot_upload_image"></string>
<string name="select_picture"></string>
</resources> </resources>

View file

@ -257,7 +257,7 @@
<string name="tts_language_not_supported_title">Језик није подржан</string> <string name="tts_language_not_supported_title">Језик није подржан</string>
<string name="tts_missing_language_data_title">Недостају подаци</string> <string name="tts_missing_language_data_title">Недостају подаци</string>
<string name="tts_missing_language_data">Отићи до продавнице да скинете изабрани језик?</string> <string name="tts_missing_language_data">Отићи до продавнице да скинете изабрани језик?</string>
<string name="gpx_option_reverse_route">Обрни GPX смер</string> <string name="gpx_option_reverse_route">Обрни смер стазе</string>
<string name="choose_audio_stream">Излаз гласовног навођења</string> <string name="choose_audio_stream">Излаз гласовног навођења</string>
<string name="voice_stream_voice_call">Звук долазног позива (прекида и блутут у колима)</string> <string name="voice_stream_voice_call">Звук долазног позива (прекида и блутут у колима)</string>
<string name="voice_stream_notification">Звучно обавештење</string> <string name="voice_stream_notification">Звучно обавештење</string>
@ -964,8 +964,8 @@
<string name="route_roundabout_short">Одреди %1$d излаз и иди</string> <string name="route_roundabout_short">Одреди %1$d излаз и иди</string>
<string name="upload_poi">Отпреми тачку од интереса</string> <string name="upload_poi">Отпреми тачку од интереса</string>
<string name="route_calculation">Прорачун путање</string> <string name="route_calculation">Прорачун путање</string>
<string name="gpx_no_tracks_title">Још увек немате ниједан GPX фајл</string> <string name="gpx_no_tracks_title">Још увек немате ниједну датотеку стаза</string>
<string name="gpx_no_tracks_title_folder">Такође, можете додати GPX фајлове у фасциклу</string> <string name="gpx_no_tracks_title_folder">Такође, можете додати фајлове стаза у фасциклу</string>
<string name="gpx_add_track">Додај још…</string> <string name="gpx_add_track">Додај још…</string>
<string name="shared_string_appearance">Изглед</string> <string name="shared_string_appearance">Изглед</string>
<string name="trip_rec_notification_settings">Укључи брзо снимање</string> <string name="trip_rec_notification_settings">Укључи брзо снимање</string>
@ -1024,7 +1024,7 @@
<string name="no_inet_connection_desc_map">Захтеване за преузимање.</string> <string name="no_inet_connection_desc_map">Захтеване за преузимање.</string>
<string name="search_location">Претражујем положај…</string> <string name="search_location">Претражујем положај…</string>
<string name="storage_free_space">Слободно место складишта</string> <string name="storage_free_space">Слободно место складишта</string>
<string name="storage_place_description">OsmAnd складиште података (за карте, GPX фајлове итд.): %1$s.</string> <string name="storage_place_description">OsmAnd складиште података (за карте, фајлове стаза итд.): %1$s.</string>
<string name="give_permission">Дајте дозволе</string> <string name="give_permission">Дајте дозволе</string>
<string name="allow_access_location">Омогућите приступ одређивању положаја</string> <string name="allow_access_location">Омогућите приступ одређивању положаја</string>
<string name="first_usage_greeting">Узми упутства и откриј нова места, и без интернета</string> <string name="first_usage_greeting">Узми упутства и откриј нова места, и без интернета</string>
@ -1244,7 +1244,7 @@
<string name="mapillary_widget_descr">Омогућава брзи допринос Мапилару.</string> <string name="mapillary_widget_descr">Омогућава брзи допринос Мапилару.</string>
<string name="open_mapillary">Отвори Мапилар</string> <string name="open_mapillary">Отвори Мапилар</string>
<string name="mapillary_descr">Мрежне слике улица за све. Откријте места, сарађујте, освојите свет.</string> <string name="mapillary_descr">Мрежне слике улица за све. Откријте места, сарађујте, освојите свет.</string>
<string name="mapillary">Слике на нивоу улице</string> <string name="mapillary">Мапилари</string>
<string name="plugin_mapillary_descr">Мрежне слике улица за све. Откријте места, сарађујте, освојите свет.</string> <string name="plugin_mapillary_descr">Мрежне слике улица за све. Откријте места, сарађујте, освојите свет.</string>
<string name="private_access_routing_req">Ваше одредиште се налази на приватном поседу. Дозволити коришћење приватних путева на овом путовању\?</string> <string name="private_access_routing_req">Ваше одредиште се налази на приватном поседу. Дозволити коришћење приватних путева на овом путовању\?</string>
<string name="restart_search">Препокрени претрагу</string> <string name="restart_search">Препокрени претрагу</string>
@ -1579,7 +1579,7 @@
<string name="shared_string_current">Тренутна</string> <string name="shared_string_current">Тренутна</string>
<string name="last_intermediate_dest_description">Додаје пролазно стајање</string> <string name="last_intermediate_dest_description">Додаје пролазно стајање</string>
<string name="first_intermediate_dest_description">Додаје прво стајање</string> <string name="first_intermediate_dest_description">Додаје прво стајање</string>
<string name="switch_osm_notes_visibility_desc">Прикажи/сакриј ОСМ белешке на карти.</string> <string name="switch_osm_notes_visibility_desc">Прикажи или сакриј ОСМ белешке на карти.</string>
<string name="shared_string_gpx_file">GPX фајл</string> <string name="shared_string_gpx_file">GPX фајл</string>
<string name="release_3_0">• Ново: Подршка за глобалне туристичке водиче без потребе за интернет конекцијом. Референтни положаји су повезани на карти. Иницијални подаци са сајта Wikivoyage. <string name="release_3_0">• Ново: Подршка за глобалне туристичке водиче без потребе за интернет конекцијом. Референтни положаји су повезани на карти. Иницијални подаци са сајта Wikivoyage.
\n \n
@ -1781,7 +1781,7 @@
<string name="arrival_distance_factor_at_last">У последњих пар метара</string> <string name="arrival_distance_factor_at_last">У последњих пар метара</string>
<string name="arrival_distance">Обавештење о доласку</string> <string name="arrival_distance">Обавештење о доласку</string>
<string name="arrival_distance_descr">Колико брзо желите да добијете обавештење о пристизању?</string> <string name="arrival_distance_descr">Колико брзо желите да добијете обавештење о пристизању?</string>
<string name="offline_edition_descr">Користи уређивање без мреже.</string> <string name="offline_edition_descr">Ако је омогућено уређивање ван мреже, тада ће се промене прво сачувати локално и отпремити по захтеву, у супротном ће се промене одмах отпремити.</string>
<string name="local_openstreetmap_uploading">Отпремам…</string> <string name="local_openstreetmap_uploading">Отпремам…</string>
<string name="local_openstreetmap_were_uploaded">{0} тачака од интереса/белешки отпремљено</string> <string name="local_openstreetmap_were_uploaded">{0} тачака од интереса/белешки отпремљено</string>
<string name="local_openstreetmap_uploadall">Отпреми све</string> <string name="local_openstreetmap_uploadall">Отпреми све</string>
@ -1812,7 +1812,7 @@
<string name="general_settings">Опште</string> <string name="general_settings">Опште</string>
<string name="global_app_settings">Опште поставке апликације</string> <string name="global_app_settings">Опште поставке апликације</string>
<string name="user_name">Ваше ОСМ корисничко име</string> <string name="user_name">Ваше ОСМ корисничко име</string>
<string name="user_password">Ваша ОСМ лозинка</string> <string name="user_password">Лозинка</string>
<string name="use_transparent_map_theme">Прозирна тема</string> <string name="use_transparent_map_theme">Прозирна тема</string>
<string name="delete_confirmation_msg">Обриши %1$s?</string> <string name="delete_confirmation_msg">Обриши %1$s?</string>
<string name="city_type_hamlet">Засеок</string> <string name="city_type_hamlet">Засеок</string>
@ -2156,7 +2156,7 @@
<string name="plugin_install_needs_network">Морате имати интернет да бисте инсталирали овај додатак.</string> <string name="plugin_install_needs_network">Морате имати интернет да бисте инсталирали овај додатак.</string>
<string name="get_plugin">Преузми</string> <string name="get_plugin">Преузми</string>
<string name="use_fast_recalculation">Пмаетно прерачунавање пута</string> <string name="use_fast_recalculation">Пмаетно прерачунавање пута</string>
<string name="use_fast_recalculation_desc">За дужа путовања, прерачунавај само први део пута.</string> <string name="use_fast_recalculation_desc">Прерачунава само почетни део руте. Може се користити за дуга путовања.</string>
<string name="do_you_like_osmand">Да ли Вам се OsmAnd свиђа?</string> <string name="do_you_like_osmand">Да ли Вам се OsmAnd свиђа?</string>
<string name="we_really_care_about_your_opinion">Важно нам је да чујемо Ваше мишљење.</string> <string name="we_really_care_about_your_opinion">Важно нам је да чујемо Ваше мишљење.</string>
<string name="rate_this_app">Оцените ову апликацију</string> <string name="rate_this_app">Оцените ову апликацију</string>
@ -2216,7 +2216,7 @@
<string name="morning">Ујутро</string> <string name="morning">Ујутро</string>
<string name="number_of_contributors">Број сарадника</string> <string name="number_of_contributors">Број сарадника</string>
<string name="number_of_edits">Број измена</string> <string name="number_of_edits">Број измена</string>
<string name="file_name_containes_illegal_char">Име фајла садржи недозвољене карактере</string> <string name="file_name_containes_illegal_char">Недозвољен знак у имену датотеке</string>
<string name="configure_screen_quick_action">Брзе радње</string> <string name="configure_screen_quick_action">Брзе радње</string>
<string name="quick_action_item_action">Радња %d</string> <string name="quick_action_item_action">Радња %d</string>
<string name="quick_action_item_screen">Екран %d</string> <string name="quick_action_item_screen">Екран %d</string>
@ -2954,10 +2954,10 @@
<string name="show_more">Прикажи још</string> <string name="show_more">Прикажи још</string>
<string name="tracks_on_map">Приказане путање</string> <string name="tracks_on_map">Приказане путање</string>
<string name="sit_on_the_stop">Укрцавање на стајању</string> <string name="sit_on_the_stop">Укрцавање на стајању</string>
<string name="quick_action_show_hide_gpx_tracks">Прикажи/сакриј GPX путање</string> <string name="quick_action_show_hide_gpx_tracks">Прикажи/сакриј путање</string>
<string name="quick_action_show_hide_gpx_tracks_descr">Дугме које приказује или сакрива одабране GPX путање са карте.</string> <string name="quick_action_show_hide_gpx_tracks_descr">Дугме које приказује или сакрива одабране путање са карте.</string>
<string name="quick_action_gpx_tracks_hide">Сакриј GPX путање</string> <string name="quick_action_gpx_tracks_hide">Сакриј путање</string>
<string name="quick_action_gpx_tracks_show">Прикажи GPX путање</string> <string name="quick_action_gpx_tracks_show">Прикажи путање</string>
<string name="use_osm_live_public_transport_description">Омогући јавни превоз на OsmAnd Live изменама.</string> <string name="use_osm_live_public_transport_description">Омогући јавни превоз на OsmAnd Live изменама.</string>
<string name="use_osm_live_public_transport">OsmAnd Live јавни превоз</string> <string name="use_osm_live_public_transport">OsmAnd Live јавни превоз</string>
<string name="rendering_attr_surface_sett_name">Калдрма</string> <string name="rendering_attr_surface_sett_name">Калдрма</string>
@ -3136,9 +3136,9 @@
<string name="hide_compass_ruler">Сакриј лењир компас</string> <string name="hide_compass_ruler">Сакриј лењир компас</string>
<string name="select_base_profile_dialog_message">Базирајте Ваш произвољни профил на једном од подразумеваних профила, овим се одређују основне поставке као што су подразуемвана видљивост справица или јединице брзине и даљине. Ово су подразумевани апликативни профили, заједно са примерима произвољних профила којима се може проширити:</string> <string name="select_base_profile_dialog_message">Базирајте Ваш произвољни профил на једном од подразумеваних профила, овим се одређују основне поставке као што су подразуемвана видљивост справица или јединице брзине и даљине. Ово су подразумевани апликативни профили, заједно са примерима произвољних профила којима се може проширити:</string>
<string name="quick_action_need_to_add_item_to_list">Додајте бар једну ставку на поставкама у „Брзим радњама“</string> <string name="quick_action_need_to_add_item_to_list">Додајте бар једну ставку на поставкама у „Брзим радњама“</string>
<string name="routing_attr_piste_type_downhill_name">Алпско/спуст скијање</string> <string name="routing_attr_piste_type_downhill_name">Алпско и спуст скијање</string>
<string name="routing_attr_piste_type_downhill_description">Падине алпског скијања или спуста и приступ ски лифтовима.</string> <string name="routing_attr_piste_type_downhill_description">Падине алпског скијања или спуста и приступ ски лифтовима.</string>
<string name="routing_attr_piste_type_nordic_name">Крос-кантри/нордијско скијање</string> <string name="routing_attr_piste_type_nordic_name">Крос-кантри и нордијско скијање</string>
<string name="routing_attr_piste_type_nordic_description">Путеви за нордијско или крос-кантри скијање.</string> <string name="routing_attr_piste_type_nordic_description">Путеви за нордијско или крос-кантри скијање.</string>
<string name="routing_attr_piste_type_skitour_name">Ски туре</string> <string name="routing_attr_piste_type_skitour_name">Ски туре</string>
<string name="routing_attr_piste_type_skitour_description">Путање ски тура.</string> <string name="routing_attr_piste_type_skitour_description">Путање ски тура.</string>
@ -3363,7 +3363,7 @@
<string name="swap_two_places">Замени %1$s и %2$s</string> <string name="swap_two_places">Замени %1$s и %2$s</string>
<string name="route_start_point">Почетна тачка</string> <string name="route_start_point">Почетна тачка</string>
<string name="track_saved">Стаза сачувана</string> <string name="track_saved">Стаза сачувана</string>
<string name="empty_filename">Име фајла је празно</string> <string name="empty_filename">Празно име датотеке</string>
<string name="shared_string_revert">Поврати</string> <string name="shared_string_revert">Поврати</string>
<string name="quick_action_directions_from_desc">Дугме које центар екрана узима за тачку поласка. После пита да одаберете одредиште или рачуна пут до одредишта.</string> <string name="quick_action_directions_from_desc">Дугме које центар екрана узима за тачку поласка. После пита да одаберете одредиште или рачуна пут до одредишта.</string>
<string name="rendering_attr_showCycleNodeNetworkRoutes_name">Прикажи чворове мреже бициклистичких путева</string> <string name="rendering_attr_showCycleNodeNetworkRoutes_name">Прикажи чворове мреже бициклистичких путева</string>
@ -3425,9 +3425,9 @@
<string name="route_recalculation">Прерачунавање пута</string> <string name="route_recalculation">Прерачунавање пута</string>
<string name="accessibility_announce">Објави</string> <string name="accessibility_announce">Објави</string>
<string name="login_and_pass">Корисничко име и лозинка</string> <string name="login_and_pass">Корисничко име и лозинка</string>
<string name="plugin_global_prefs_info">Ове поставке се примењују на све профиле.</string> <string name="plugin_global_prefs_info">Ова подешавања додатака су глобална и примењују се на све профиле</string>
<string name="osm_editing">OSM уређивање</string> <string name="osm_editing">OSM уређивање</string>
<string name="osm_edits_view_descr">Погледајте Ваше измене или OSM грешке које још нису отпремљене у %1$s. Отпремљене тачке се више неће приказивати.</string> <string name="osm_edits_view_descr">Све своје још увек не отпремљене измене или ОСМ белешке можете погледати у %1$s. Отпремљене тачке се не приказују у ОсмАнду.</string>
<string name="app_mode_osm">OSM</string> <string name="app_mode_osm">OSM</string>
<string name="select_nav_icon_descr">Иконица која се приказује за време навођења или померања.</string> <string name="select_nav_icon_descr">Иконица која се приказује за време навођења или померања.</string>
<string name="select_map_icon_descr">Иконица која се приказује у мировању.</string> <string name="select_map_icon_descr">Иконица која се приказује у мировању.</string>
@ -3547,7 +3547,7 @@
<string name="restore_all_profile_settings">Поврати све поставке профила\?</string> <string name="restore_all_profile_settings">Поврати све поставке профила\?</string>
<string name="saving_new_profile">Чувам нови профил</string> <string name="saving_new_profile">Чувам нови профил</string>
<string name="profile_backup_failed">Не могу да направим резервну копију профила.</string> <string name="profile_backup_failed">Не могу да направим резервну копију профила.</string>
<string name="quick_action_show_hide_terrain">Прикажи / сакриј терен</string> <string name="quick_action_show_hide_terrain">Прикажи или сакриј терен</string>
<string name="quick_action_terrain_hide">Сакриј терен</string> <string name="quick_action_terrain_hide">Сакриј терен</string>
<string name="quick_action_terrain_show">Прикажи терен</string> <string name="quick_action_terrain_show">Прикажи терен</string>
<string name="quick_action_terrain_descr">Дугме да прикаже или сакрите слој терена на карти.</string> <string name="quick_action_terrain_descr">Дугме да прикаже или сакрите слој терена на карти.</string>
@ -3570,8 +3570,8 @@
<string name="shared_string_all_languages">Сви језици</string> <string name="shared_string_all_languages">Сви језици</string>
<string name="profiles_for_action_not_found">Не може се наћи такав профил.</string> <string name="profiles_for_action_not_found">Не може се наћи такав профил.</string>
<string name="index_item_world_basemap_detailed">Светска општа мапа (детаљна)</string> <string name="index_item_world_basemap_detailed">Светска општа мапа (детаљна)</string>
<string name="create_edit_poi">Креирај / Уреди ПОИ</string> <string name="create_edit_poi">Направите или измените ПОИ</string>
<string name="add_edit_favorite">Додај / Уреди фаворит</string> <string name="add_edit_favorite">Додајте или измените омиљено</string>
<string name="back_to_editing">Повратак уређивању</string> <string name="back_to_editing">Повратак уређивању</string>
<string name="shared_string_add_profile">Додај профил</string> <string name="shared_string_add_profile">Додај профил</string>
<string name="change_application_profile">Промени профил апликације</string> <string name="change_application_profile">Промени профил апликације</string>
@ -3590,7 +3590,7 @@
<string name="navigation_profiles_item">Профили навођења</string> <string name="navigation_profiles_item">Профили навођења</string>
<string name="quick_action_transport_hide">Сакриј јавни превоз</string> <string name="quick_action_transport_hide">Сакриј јавни превоз</string>
<string name="quick_action_transport_show">Прикажи јавни превоз</string> <string name="quick_action_transport_show">Прикажи јавни превоз</string>
<string name="quick_action_show_hide_transport">Прикажи/сакриј јавни превоз</string> <string name="quick_action_show_hide_transport">Прикажи или сакриј јавни превоз</string>
<string name="quick_action_transport_descr">Дугме које приказује или скрива јавни превоз на карти.</string> <string name="quick_action_transport_descr">Дугме које приказује или скрива јавни превоз на карти.</string>
<string name="parking_positions">Паркинг позиције</string> <string name="parking_positions">Паркинг позиције</string>
<string name="reset_deafult_order">Поврати подразумевани поредак ставки</string> <string name="reset_deafult_order">Поврати подразумевани поредак ставки</string>
@ -3642,12 +3642,12 @@
<string name="vessel_height_warning">Можете подесити висину пловила да избегнете ниске мостове. Имајте на уму да, уколико мост може да се помера, користићемо његову висину када је отворен.</string> <string name="vessel_height_warning">Можете подесити висину пловила да избегнете ниске мостове. Имајте на уму да, уколико мост може да се помера, користићемо његову висину када је отворен.</string>
<string name="vessel_height_limit_description">Подесите висину пловила да избегнете ниске мостове. Имајте на уму да, уколико мост може да се помера, користићемо његову висину када је отворен.</string> <string name="vessel_height_limit_description">Подесите висину пловила да избегнете ниске мостове. Имајте на уму да, уколико мост може да се помера, користићемо његову висину када је отворен.</string>
<string name="vessel_width_limit_description">Подесите ширину пловила и избегните уске мостове</string> <string name="vessel_width_limit_description">Подесите ширину пловила и избегните уске мостове</string>
<string name="use_volume_buttons_as_zoom_descr">Укључите да омогућите контролу нивоа увећања са дугмићима за јачину звука.</string> <string name="use_volume_buttons_as_zoom_descr">Контролишите ниво зумирања на мапи помоћу дугмића за јачину звука на уређају.</string>
<string name="use_volume_buttons_as_zoom">Дугмићи за јачину звука за зумирање</string> <string name="use_volume_buttons_as_zoom">Дугмићи за јачину звука за зумирање</string>
<string name="shared_string_uninstall_and_restart">Деинсталирај и поново покрени</string> <string name="shared_string_uninstall_and_restart">Деинсталирај и поново покрени</string>
<string name="speed_cameras_removed_descr">Овај уређај нема радаре.</string> <string name="speed_cameras_removed_descr">Овај уређај нема радаре.</string>
<string name="app_mode_inline_skates">Ролери</string> <string name="app_mode_inline_skates">Ролери</string>
<string name="speed_cameras_restart_descr">Поновно покретање је потребно да се потпуно избришу подаци о радарима.</string> <string name="speed_cameras_restart_descr">Поново покрените апликацију да бисте избрисали све податке брзинских камера.</string>
<string name="item_deleted">%1$s обрисано</string> <string name="item_deleted">%1$s обрисано</string>
<string name="routing_attr_length_name">Лимит дужине</string> <string name="routing_attr_length_name">Лимит дужине</string>
<string name="shared_string_bearing">Курс</string> <string name="shared_string_bearing">Курс</string>
@ -3744,14 +3744,14 @@
<string name="slope_download_description">Додатне мапе су потребне да бисте видели нагибе на мапи.</string> <string name="slope_download_description">Додатне мапе су потребне да бисте видели нагибе на мапи.</string>
<string name="slope_read_more">Можете прочитати више о нагибима у %1$s.</string> <string name="slope_read_more">Можете прочитати више о нагибима у %1$s.</string>
<string name="terrain_empty_state_text">Омогућите да би видели сенке брда или мапе нагиба. Можете прочитати више о овим врстама карта на нашем сајту.</string> <string name="terrain_empty_state_text">Омогућите да би видели сенке брда или мапе нагиба. Можете прочитати више о овим врстама карта на нашем сајту.</string>
<string name="import_complete_description">Сви подаци %1$S су увезени, можете да употребите дугмад испод да би сте отворили неопходни део апликације ради управљања њима.</string> <string name="import_complete_description">Сви подаци из %1$s су увезени, можете да употребите дугмад испод да би сте отворили неопходни део апликације ради управљања њима.</string>
<string name="checking_for_duplicate_description">Османд проверава %1$S постојање дупликата са постојећим елементима у апликацији. <string name="checking_for_duplicate_description">Османд проверава %1$s постојање дупликата са постојећим елементима у апликацији.
\n \n
\nТо може да потраје неко време.</string> \nТо може да потраје неко време.</string>
<string name="download_slope_maps">Нагиби</string> <string name="download_slope_maps">Нагиби</string>
<string name="ui_customization_description">Прилагодите количину елемената у \"Фиоци\", \"Подешавању мапе\" и \"Контекст менију\". <string name="ui_customization_description">Прилагодите количину елемената у \"Фиоци\", \"Подешавању мапе\" и \"Контекст менију\".
\n \n
\nОнемогућите некоришћене додатке да сакријете све њихове контроле. %1$е.</string> \nОнемогућите некоришћене додатке да сакријете све њихове контроле. %1$s.</string>
<string name="ui_customization_short_descr">Елементи Фиоке, Контекст мени</string> <string name="ui_customization_short_descr">Елементи Фиоке, Контекст мени</string>
<string name="context_menu_actions">Акције Контекст менија</string> <string name="context_menu_actions">Акције Контекст менија</string>
<string name="osm_live_payment_subscription_management">Наплатом ће бити оптерећен ваш Гугл Плеј налог при потврди куповине. <string name="osm_live_payment_subscription_management">Наплатом ће бити оптерећен ваш Гугл Плеј налог при потврди куповине.
@ -3787,18 +3787,18 @@
\n \n
\n%2$s: су нивои при којима ће оригиналне плочице бити видљиве, а умањење или увећање биће изван ових вредности.</string> \n%2$s: су нивои при којима ће оригиналне плочице бити видљиве, а умањење или увећање биће изван ових вредности.</string>
<string name="lenght_limit_description">Унесите дужину возила, нека ограничења пута могу бити примењена за дужа возила.</string> <string name="lenght_limit_description">Унесите дужину возила, нека ограничења пута могу бити примењена за дужа возила.</string>
<string name="quick_action_remove_next_destination">Обриши следећу одредишну тачку</string> <string name="quick_action_remove_next_destination">Обриши најближу одредишну тачку</string>
<string name="please_provide_point_name_error">Молимо одредите име тачке</string> <string name="please_provide_point_name_error">Молимо одредите име тачке</string>
<string name="quick_action_remove_next_destination_descr">Тренутна одредишна тачка биће уклоњена. Ако је она одредишна, стопираће се навигација.</string> <string name="quick_action_remove_next_destination_descr">Тренутна одредишна тачка биће уклоњена. Ако је она одредишна, стопираће се навигација.</string>
<string name="search_download_wikipedia_maps">Преузмите мапе Википедије</string> <string name="search_download_wikipedia_maps">Преузмите мапе Википедије</string>
<string name="plugin_wikipedia_description">Информације о тачкама од интереса потражите од Википедије. То је ваш џепни ванмрежни водич - само омогућите додатак Википедиа и уживајте у чланцима о објектима око вас.</string> <string name="plugin_wikipedia_description">Информације о тачкама од интереса потражите на Википедији. То је ваш џепни ванмрежни водич - само укључите додатак Википедија и уживајте у чланцима о објектима око вас.</string>
<string name="app_mode_enduro_motorcycle">Ендуро скутер</string> <string name="app_mode_enduro_motorcycle">Ендуро скутер</string>
<string name="app_mode_motor_scooter">Скутер</string> <string name="app_mode_motor_scooter">Скутер</string>
<string name="app_mode_wheelchair">Инвалидска колица</string> <string name="app_mode_wheelchair">Инвалидска колица</string>
<string name="app_mode_wheelchair_forward">Инвалидска колица напред</string> <string name="app_mode_wheelchair_forward">Инвалидска колица напред</string>
<string name="app_mode_go_cart">Корпа</string> <string name="app_mode_go_cart">Корпа</string>
<string name="osm_edit_closed_note">Затворена ОСМ белешка</string> <string name="osm_edit_closed_note">Затворена ОСМ белешка</string>
<string name="set_working_days_to_continue">За наставак морате да одредите радне дане</string> <string name="set_working_days_to_continue">За наставак одредите радне дане</string>
<string name="route_between_points">Рута између тачака</string> <string name="route_between_points">Рута између тачака</string>
<string name="plan_a_route">Планирај руту</string> <string name="plan_a_route">Планирај руту</string>
<string name="add_to_a_track">Додајте стази</string> <string name="add_to_a_track">Додајте стази</string>
@ -3809,7 +3809,7 @@
<string name="gpx_direction_arrows">Стрелице смера</string> <string name="gpx_direction_arrows">Стрелице смера</string>
<string name="track_coloring_solid">Чврст</string> <string name="track_coloring_solid">Чврст</string>
<string name="add_hidden_group_info">Додата тачка неће бити видљива на мапи, пошто је одабрана група сакривена, можете је пронаћи у „%s“.</string> <string name="add_hidden_group_info">Додата тачка неће бити видљива на мапи, пошто је одабрана група сакривена, можете је пронаћи у „%s“.</string>
<string name="track_show_start_finish_icons">Прикажи почетно крајне иконе</string> <string name="track_show_start_finish_icons">Прикажи почетне и крајне иконе</string>
<string name="plan_route_last_edited">Последње измењена</string> <string name="plan_route_last_edited">Последње измењена</string>
<string name="plan_route_import_track">Увези путању</string> <string name="plan_route_import_track">Увези путању</string>
<string name="plan_route_open_existing_track">Отвори постојећу путању</string> <string name="plan_route_open_existing_track">Отвори постојећу путању</string>
@ -3820,25 +3820,23 @@
<string name="save_as_new_track">Сачувај као нову стазу</string> <string name="save_as_new_track">Сачувај као нову стазу</string>
<string name="reverse_route">Обрнута рута</string> <string name="reverse_route">Обрнута рута</string>
<string name="route_between_points_whole_track_button_desc">Читава стаза ће се прерачунати користећи одабрани профил.</string> <string name="route_between_points_whole_track_button_desc">Читава стаза ће се прерачунати користећи одабрани профил.</string>
<string name="route_between_points_next_segment_button_desc">Само ће се следећи сегмент прерачунати користећи одабрани профил.</string> <string name="route_between_points_next_segment_button_desc">Само ће следећи сегмент бити прерачунат користећи одабрани профил.</string>
<string name="route_between_points_desc">Изаберите како повезати тачке, са правом линијом, или израчунајте руту између њих са одабраним профилом.</string> <string name="route_between_points_desc">Изаберите како повезати тачке, по правој линији, или израчунајте руту између њих како је доле назначено.</string>
<string name="whole_track">Цела стаза</string> <string name="whole_track">Цела стаза</string>
<string name="next_segment">Следећи сегмент</string> <string name="next_segment">Следећи сегмент</string>
<string name="route_between_points_warning_desc">Да бисте користили ову опцију, ОсмАнд мора да прилагоди вашу стазу путевима на мапи. <string name="route_between_points_warning_desc">Затим помоћу једног од ваших навигационих профила прислоните стазу на најближи дозвољени пут да бисте користили ову опцију.</string>
\n
\n На следећем кораку мора ћете одабрати навигацијски профил како бисте открили дозвољене путеве и праг удаљености и тиме приближили вашу стазу путевима.</string>
<string name="threshold_distance">Праг удаљености</string> <string name="threshold_distance">Праг удаљености</string>
<string name="navigation_profile">Навигацијски профил</string> <string name="navigation_profile">Навигацијски профил</string>
<string name="route_between_points_add_track_desc">Изаберите датотеку записа којој ће се додати нови сегмент.</string> <string name="route_between_points_add_track_desc">Изаберите датотеку записа којој ће се додати нови сегмент.</string>
<string name="street_level_imagery">Слике на нивоу улице</string> <string name="street_level_imagery">Слике на нивоу улице</string>
<string name="plan_route_exit_dialog_descr">Јесте ли сигурни да желите затворити План руте без чувања\? Изгуби ћете све промене.</string> <string name="plan_route_exit_dialog_descr">Да ли сте сигурни да желите да одбаците све промене на планираној рути затварањем\?</string>
<string name="in_case_of_reverse_direction">У случају обрнутог правца</string> <string name="in_case_of_reverse_direction">У случају обрнутог правца</string>
<string name="shared_string_save_as_gpx">Сачувај као нову датотеку стазе</string> <string name="shared_string_save_as_gpx">Сачувај као нову датотеку стазе</string>
<string name="add_segment_to_the_track">Додај у датотеку стазе</string> <string name="add_segment_to_the_track">Додај у датотеку стазе</string>
<string name="shared_string_gpx_files">Путање</string> <string name="shared_string_gpx_files">Путање</string>
<string name="layer_gpx_layer">Путање</string> <string name="layer_gpx_layer">Путање</string>
<string name="show_gpx">Путање</string> <string name="show_gpx">Путање</string>
<string name="monitoring_control_start">GPX</string> <string name="monitoring_control_start">РЕК</string>
<string name="save_track_to_gpx_globally">Уписуј путању у GPX фајл</string> <string name="save_track_to_gpx_globally">Уписуј путању у GPX фајл</string>
<string name="shared_string_gpx_route">Траса руте</string> <string name="shared_string_gpx_route">Траса руте</string>
<string name="empty_state_my_tracks">Додајте датотеке стаза</string> <string name="empty_state_my_tracks">Додајте датотеке стаза</string>
@ -3849,9 +3847,9 @@
<string name="marker_save_as_track">Сачувај као датотеку стазе</string> <string name="marker_save_as_track">Сачувај као датотеку стазе</string>
<string name="follow_track">Следи стазу</string> <string name="follow_track">Следи стазу</string>
<string name="follow_track_descr">Изаберите датотеку стазе ради праћења</string> <string name="follow_track_descr">Изаберите датотеку стазе ради праћења</string>
<string name="import_track_descr">Изаберите датотеку стазе ради праћења или увоза са уређаја.</string> <string name="import_track_descr">Изаберите датотеку стазе ради праћења или увоза са вашег уређаја.</string>
<string name="select_another_track">Изаберите другу стазу</string> <string name="select_another_track">Изаберите другу стазу</string>
<string name="navigate_to_track_descr">Наводите од моје локације до стазе</string> <string name="navigate_to_track_descr">Наводите од моје позиције до стазе</string>
<string name="pass_whole_track_descr">Тачка стазе за навигацију</string> <string name="pass_whole_track_descr">Тачка стазе за навигацију</string>
<string name="start_of_the_track">Почетак стазе</string> <string name="start_of_the_track">Почетак стазе</string>
<string name="nearest_point">Најближа тачка</string> <string name="nearest_point">Најближа тачка</string>
@ -3865,20 +3863,20 @@
<string name="plan_route_change_route_type_after">Промените врсту руте након</string> <string name="plan_route_change_route_type_after">Промените врсту руте након</string>
<string name="what_is_new">Шта је ново</string> <string name="what_is_new">Шта је ново</string>
<string name="shared_string_file_name">Име фајла</string> <string name="shared_string_file_name">Име фајла</string>
<string name="number_of_gpx_files_selected_pattern"/> <string name="number_of_gpx_files_selected_pattern">%s изабраних датотека стаза</string>
<string name="gpx_monitoring_stop">Паузирај снимање пута</string> <string name="gpx_monitoring_stop">Паузирај снимање пута</string>
<string name="one_point_error">Додајте бар две тачке.</string> <string name="one_point_error">Додајте бар две тачке.</string>
<string name="osm_edit_logout_success">Одјава успешна</string> <string name="osm_edit_logout_success">Одјављен</string>
<string name="gpx_upload_private_visibility_descr">„Приватно“ значи да се траг не појављује ни на једној јавној листи, али су тачке праћења у њему у нехронолошком редоследу доступне путем јавног ГПС АПИ-ја без временских ознака.</string> <string name="gpx_upload_private_visibility_descr">„Приватно“ значи да се траг не појављује ни на једној јавној листи, али су тачке праћења у њему у нехронолошком редоследу доступне путем јавног ГПС АПИ-ја без временских ознака.</string>
<string name="gpx_upload_identifiable_visibility_descr">„Могуће је идентификовати“ значи да ће се траг јавно приказати у вашим ГПС траговима и у јавним списковима ГПС трагова, тј. други корисници ће моћи да преузму необрађени траг и повежу га са вашим корисничким именом. Јавни подаци о временским тачкама трага из ГПС АПИ-ја који се сервирају путем АПИ-ја за тачке праћења имаће референцу на вашу оригиналну страницу праћења.</string> <string name="gpx_upload_identifiable_visibility_descr">„Могуће је идентификовати“ значи да ће се траг јавно приказати у вашим ГПС траговима и у јавним списковима ГПС трагова, тј. други корисници ће моћи да преузму необрађени траг и повежу га са вашим корисничким именом. Јавни подаци о временским тачкама трага из ГПС АПИ-ја који се сервирају путем АПИ-ја за тачке праћења имаће референцу на вашу оригиналну страницу праћења.</string>
<string name="gpx_upload_trackable_visibility_descr">„Следљиво“ значи да се траг не приказује нигде на јавним листама, али обрађене тачке праћења са временским ознакама у њима (које не могу бити директно повезане са вама) иду кроз преузимања са јавног ГПС АПИ-ја.</string> <string name="gpx_upload_trackable_visibility_descr">„Следљиво“ значи да се траг не приказује нигде на јавним листама, али обрађене тачке праћења са временским ознакама у њима (које не могу бити директно повезане са вама) иду кроз преузимања са јавног ГПС АПИ-ја.</string>
<string name="osm_edit_close_note">Затвори ОСМ белешку</string> <string name="osm_edit_close_note">Затвори ОСМ белешку</string>
<string name="osm_edit_comment_note">Коментар ОСМ напомене</string> <string name="osm_edit_comment_note">Коментар ОСМ напомене</string>
<string name="osm_login_descr">Пријавите се помоћу сигурне методе ОАутх или користите своје корисничко име и лозинку.</string> <string name="osm_login_descr">Можете се пријавити користећи безбедан ОАут метод или користити своје корисничко име и лозинку.</string>
<string name="shared_string_add_photo">Додај фотографију</string> <string name="shared_string_add_photo">Додај фотографију</string>
<string name="register_on_openplacereviews">Региструјте се на <string name="register_on_openplacereviews">Региструјте се на
\nOpenPlaceReviews.</string> \nOpenPlaceReviews.org</string>
<string name="register_on_openplacereviews_desc">Пријавите се на веб локацију пројекта отворених података OpenPlaceReviews.орг да бисте отпремили још више фотографија.</string> <string name="register_on_openplacereviews_desc">Фотографије пружа пројекат отворених података OpenPlaceReviews.org. Да бисте поставили своје фотографије, морате се пријавити на веб страницу.</string>
<string name="register_opr_create_new_account">Направите нови налог</string> <string name="register_opr_create_new_account">Направите нови налог</string>
<string name="register_opr_have_account">Већ имам</string> <string name="register_opr_have_account">Већ имам</string>
<string name="shared_string_search_history">Претрага</string> <string name="shared_string_search_history">Претрага</string>
@ -3896,4 +3894,103 @@
<string name="file_size_needed_for_import">Потребно за увоз</string> <string name="file_size_needed_for_import">Потребно за увоз</string>
<string name="export_not_enough_space_descr">Уређај има слободно само %1$s. Ослободите мало простора или поништите одабир неких предмета за извоз.</string> <string name="export_not_enough_space_descr">Уређај има слободно само %1$s. Ослободите мало простора или поништите одабир неких предмета за извоз.</string>
<string name="export_not_enough_space">Нема довољно простора</string> <string name="export_not_enough_space">Нема довољно простора</string>
<string name="start_finish_icons">Иконе за почетак и завршетак</string>
<string name="navigate_point_mgrs">МГРС</string>
<string name="snowmobile_render_descr">За вожњу моторних санки са наменским путевима и стазама.</string>
<string name="navigate_point_format_mgrs">МГРС</string>
<string name="mgrs_format_descr">ОсмАнд користи МГРС, који је сличан УТМ НАТО формату.</string>
<string name="simplified_track">Поједностављена стаза</string>
<string name="simplified_track_description">Само линија руте ће бити сачувана, а путне тачке ће бити избрисане.</string>
<string name="disable_recording_once_app_killed_descrp">Паузираће евидентирање стазе када се апликација убије (преко скорашњих програма). (Индикатор рада OsmAnd-а у позадини тада нестаје из обавештајне траке.)</string>
<string name="save_global_track_interval_descr">Наведите интервал евидентирања за опште снимање стаза (укључено помоћу виџета „Снимање путовања“ на мапи).</string>
<string name="gpx_monitoring_start">Наставите снимање путовања</string>
<string name="system_default_theme">Системско подразумевана</string>
<string name="all_next_segments">Сви наредни сегменти</string>
<string name="previous_segment">Претходни сегмент</string>
<string name="all_previous_segments">Сви претходни сегменти</string>
<string name="only_selected_segment_recalc">Само изабрани сегмент ће се поново израчунати помоћу изабраног профила.</string>
<string name="all_next_segments_will_be_recalc">Сви наредни сегменти ће се поново израчунати помоћу изабраног профила.</string>
<string name="all_previous_segments_will_be_recalc">Сви претходни сегменти ће се поново израчунати помоћу изабраног профила.</string>
<string name="open_saved_track">Отвори сачувану</string>
<string name="shared_string_is_saved">је сачувано</string>
<string name="shared_string_redo">Понови</string>
<string name="release_3_8">• Ажурирано Функција планирања руте: омогућава употребу различитих типова навигације по сегменту и укључивање стаза
\n
\n • Нови мени Изглед за стазе: одаберите боју, дебљину, стрелице смера приказа, иконе почетка и завршетка
\n
\n • Побољшана видљивост бициклистичких чворова.
\n
\n • Стазе се сада могу додирнути, имају контекстуални мени са основним информацијама.
\n
\n • Побољшани алгоритми претраге
\n
\n • Побољшане опције праћења стаза у Навигацији
\n
\n • Решени проблеми са увозом / извозом подешавања профила
\n
\n</string>
<string name="sort_last_modified">Последња измена</string>
<string name="sort_name_descending">Име: З - А</string>
<string name="sort_name_ascending">Име: А - З</string>
<string name="contour_lines_thanks">Хвала вам што сте купили „Контурне линије“</string>
<string name="osm_live_payment_desc_hw">Претплата се наплаћује по изабраном периоду. Откажите га у АппГалери у било ком тренутку.</string>
<string name="osm_live_payment_subscription_management_hw">Уплата ће бити наплаћена са вашег рачуна АппГалери при потврди куповине.
\n
\nПретплата се аутоматски обнавља уколико није отказана пре датума обнове. Ваш рачун ће бити задужен за период обнове (месец / три месеца / година) само на датум обнове.
\n
\nПретплатама можете управљати и отказати их тако што ћете отићи у подешавања апликације АппГалери.</string>
<string name="routing_attr_avoid_footways_description">Избегавајте пешачке стазе</string>
<string name="routing_attr_avoid_footways_name">Избегавајте пешачке стазе</string>
<string name="development">Развој</string>
<string name="use_live_public_transport">ОсмАнд лајв подаци</string>
<string name="use_live_routing">ОсмАнд лајв подаци</string>
<string name="complex_routing_descr">Двофазно усмеравање за аутомобилску навигацију.</string>
<string name="use_native_pt">Развој матичног јавног превоза</string>
<string name="use_native_pt_desc">Пребаците се на Јава (безбедан) прорачун рутирања јавног превоза</string>
<string name="perform_oauth_authorization_description">Пријавите се помоћу ОАут-а да бисте користили осм уређивачке функције</string>
<string name="perform_oauth_authorization">Пријавите се преко ОАут-а</string>
<string name="clear_osm_token">Обришите ОпенСтритМап ОАут токен</string>
<string name="file_already_imported">Датотека је већ увезена у ОсмАнд</string>
<string name="use_two_phase_routing">Користите двофазни алгоритам усмеравања А*</string>
<string name="shared_string_graph">Графикон</string>
<string name="message_need_calculate_route_before_show_graph">%1$s подаци доступни само на путевима, морате израчунати руту користећи „Рута између тачака“ да бисте је добили.</string>
<string name="message_graph_will_be_available_after_recalculation">Сачекајте поновно израчунавање руте.
\nГрафикон ће бити доступан након поновног израчунавања.</string>
<string name="shared_string_local_maps">Локалне мапе</string>
<string name="ltr_or_rtl_combine_via_dash">%1$s — %2$s</string>
<string name="app_mode_gap">Размак</string>
<string name="icon_group_amenity">Аменити</string>
<string name="icon_group_special">Специал</string>
<string name="icon_group_transport">Превоз</string>
<string name="icon_group_service">Услуга</string>
<string name="icon_group_symbols">Симболи</string>
<string name="icon_group_sport">Спорт</string>
<string name="icon_group_emergency">Хитна помоћ</string>
<string name="icon_group_travel">Путовање</string>
<string name="message_you_need_add_two_points_to_show_graphs">Треба да додате најмање две тачке</string>
<string name="login_open_street_map">Пријавите се на OpenStreetMap.org</string>
<string name="login_open_street_map_org">Пријавите се на OpenStreetMap.org</string>
<string name="sign_in_with_open_street_map">Пријавите се помоћу ОпенСтритМап</string>
<string name="open_street_map_login_mode">Морате се пријавити да бисте отпремили нове или измењене промене.
\n
\nМожете се пријавити користећи безбедан ОАут метод или користите своје корисничко име и лозинку.</string>
<string name="use_login_password">Користите корисничко име и лозинку</string>
<string name="login_account">Налог</string>
<string name="user_login">Пријавите се</string>
<string name="manage_subscription">Управљајте претплатом</string>
<string name="subscription_payment_issue_title">Постоји проблем са вашом претплатом. Кликните на дугме да бисте отворили подешавања претплате за Гугле Плеј и да бисте поправили начин плаћања.</string>
<string name="subscription_expired_title">Претплата на ОсмАнд лајв је истекла</string>
<string name="subscription_paused_title">Претплата на ОсмАнд лајв је паузирана</string>
<string name="subscription_on_hold_title">Претплата на ОсмАнд лајв је на чекању</string>
<string name="markers_history">Историја маркера</string>
<string name="send_files_to_openstreetmap">Пошаљите ГПКС датотеку на ОпенСтритМап</string>
<string name="enter_text_separated">Унесите ознаке одвојене зарезом.</string>
<string name="gpx_upload_public_visibility_descr">„Јавно“ значи да је траг јавно приказан у вашим ГПС траговима и на јавним ГПС траговима, као и на јавном списку трагова са временским ознакама у сировом облику. Подаци који се приказују путем АПИ-ја не упућују на вашу страницу трагова. Временске ознаке праћења нису доступне путем јавног ГПС АПИ-ја и тачке праћења нису хронолошки поређане.</string>
<string name="cannot_upload_image">Није могуће отпремити слику, покушајте поново касније</string>
<string name="select_picture">Изаберите слику</string>
<string name="select_groups_for_import">Изаберите групе које ће бити увезене.</string>
<string name="select_items_for_import">Изаберите ставке које ће бити увезене.</string>
<string name="use_dev_url_descr">Пређите на употребу dev.openstreetmap.org уместо на openstreetmap.org да бисте тестирали отпремање ОСМ белешке / ПОИ / ГПКС.</string>
<string name="use_dev_url">Употреби dev.openstreetmap.org</string>
<string name="ltr_or_rtl_combine_via_star">%1$s * %2$s</string>
</resources> </resources>

View file

@ -3995,4 +3995,5 @@
<string name="use_dev_url">Використовувати dev.openstreetmap.org</string> <string name="use_dev_url">Використовувати dev.openstreetmap.org</string>
<string name="cannot_upload_image">Не вдається завантажити зображення, повторіть спробу пізніше</string> <string name="cannot_upload_image">Не вдається завантажити зображення, повторіть спробу пізніше</string>
<string name="select_picture">Вибрати зображення</string> <string name="select_picture">Вибрати зображення</string>
<string name="ltr_or_rtl_combine_via_star">%1$s * %2$s</string>
</resources> </resources>

View file

@ -257,7 +257,7 @@
<dimen name="measurement_tool_content_padding_medium">12dp</dimen> <dimen name="measurement_tool_content_padding_medium">12dp</dimen>
<dimen name="text_margin_small">4dp</dimen> <dimen name="text_margin_small">4dp</dimen>
<dimen name="measurement_tool_text_margin">8dp</dimen> <dimen name="measurement_tool_text_margin">8dp</dimen>
<dimen name="measurement_tool_points_list_container_height">220dp</dimen> <dimen name="measurement_tool_info_cards_container_height">220dp</dimen>
<dimen name="measurement_tool_up_down_row_height">60dp</dimen> <dimen name="measurement_tool_up_down_row_height">60dp</dimen>
<dimen name="measurement_tool_controls_height">52dp</dimen> <dimen name="measurement_tool_controls_height">52dp</dimen>
<dimen name="measurement_tool_text_button_padding_small">8dp</dimen> <dimen name="measurement_tool_text_button_padding_small">8dp</dimen>

View file

@ -11,6 +11,7 @@
Thx - Hardy Thx - Hardy
--> -->
<string name="elevation_data">You can use Elevation data for consideration of Ascent / Descent for your trip</string>
<string name="ltr_or_rtl_combine_via_star">%1$s * %2$s</string> <string name="ltr_or_rtl_combine_via_star">%1$s * %2$s</string>
<string name="add_photos_descr">OsmAnd shows photos from several sources:\nOpenPlaceReviews - POI photos;\nMapillary - street-level imagery;\nWeb / Wikimedia - POI photos specified in OpenStreetMap data.</string> <string name="add_photos_descr">OsmAnd shows photos from several sources:\nOpenPlaceReviews - POI photos;\nMapillary - street-level imagery;\nWeb / Wikimedia - POI photos specified in OpenStreetMap data.</string>
<string name="use_dev_url">Use dev.openstreetmap.org</string> <string name="use_dev_url">Use dev.openstreetmap.org</string>

View file

@ -10,6 +10,7 @@ import android.content.res.Configuration;
import android.content.res.Resources; import android.content.res.Resources;
import android.graphics.Bitmap; import android.graphics.Bitmap;
import android.graphics.Canvas; import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Matrix; import android.graphics.Matrix;
import android.graphics.Paint; import android.graphics.Paint;
import android.graphics.PointF; import android.graphics.PointF;
@ -319,6 +320,20 @@ public class AndroidUtils {
); );
} }
public static ColorStateList createColorStateList(Context ctx, boolean night) {
return new ColorStateList(
new int[][] {
new int[] {-android.R.attr.state_enabled}, // disabled
new int[] {android.R.attr.state_checked},
new int[] {}
},
new int[] {
Color.GRAY,
ContextCompat.getColor(ctx, night? R.color.active_color_primary_dark : R.color.active_color_primary_light),
Color.GRAY}
);
}
public static StateListDrawable createCheckedStateListDrawable(Drawable normal, Drawable checked) { public static StateListDrawable createCheckedStateListDrawable(Drawable normal, Drawable checked) {
return createStateListDrawable(normal, checked, android.R.attr.state_checked); return createStateListDrawable(normal, checked, android.R.attr.state_checked);
} }

View file

@ -34,6 +34,7 @@ import net.osmand.plus.dialogs.ImportGpxBottomSheetDialogFragment;
import net.osmand.plus.helpers.GpxUiHelper; import net.osmand.plus.helpers.GpxUiHelper;
import net.osmand.plus.helpers.GpxUiHelper.GPXInfo; import net.osmand.plus.helpers.GpxUiHelper.GPXInfo;
import net.osmand.plus.measurementtool.MeasurementToolFragment; import net.osmand.plus.measurementtool.MeasurementToolFragment;
import net.osmand.plus.settings.backend.ExportSettingsType;
import net.osmand.plus.settings.backend.backup.SettingsHelper; import net.osmand.plus.settings.backend.backup.SettingsHelper;
import net.osmand.plus.settings.backend.backup.SettingsItem; import net.osmand.plus.settings.backend.backup.SettingsItem;
import net.osmand.plus.views.OsmandMapTileView; import net.osmand.plus.views.OsmandMapTileView;
@ -67,6 +68,8 @@ import static net.osmand.IndexConstants.WPT_CHART_FILE_EXT;
import static net.osmand.data.FavouritePoint.DEFAULT_BACKGROUND_TYPE; import static net.osmand.data.FavouritePoint.DEFAULT_BACKGROUND_TYPE;
import static net.osmand.plus.myplaces.FavoritesActivity.GPX_TAB; import static net.osmand.plus.myplaces.FavoritesActivity.GPX_TAB;
import static net.osmand.plus.myplaces.FavoritesActivity.TAB_ID; import static net.osmand.plus.myplaces.FavoritesActivity.TAB_ID;
import static net.osmand.plus.settings.backend.backup.SettingsHelper.REPLACE_KEY;
import static net.osmand.plus.settings.backend.backup.SettingsHelper.SETTINGS_TYPE_LIST_KEY;
/** /**
* @author Koen Rabaey * @author Koen Rabaey
@ -203,10 +206,11 @@ public class ImportHelper {
} }
} }
@Nullable
public static String getNameFromContentUri(OsmandApplication app, Uri contentUri) { public static String getNameFromContentUri(OsmandApplication app, Uri contentUri) {
try { try {
String name; String name;
Cursor returnCursor = app.getContentResolver().query(contentUri, new String[] {OpenableColumns.DISPLAY_NAME}, null, null, null); Cursor returnCursor = app.getContentResolver().query(contentUri, new String[]{OpenableColumns.DISPLAY_NAME}, null, null, null);
if (returnCursor != null && returnCursor.moveToFirst()) { if (returnCursor != null && returnCursor.moveToFirst()) {
int columnIndex = returnCursor.getColumnIndex(OpenableColumns.DISPLAY_NAME); int columnIndex = returnCursor.getColumnIndex(OpenableColumns.DISPLAY_NAME);
if (columnIndex != -1) { if (columnIndex != -1) {
@ -257,18 +261,32 @@ public class ImportHelper {
} }
private void handleOsmAndSettingsImport(Uri intentUri, String fileName, Bundle extras, CallbackWithObject<List<SettingsItem>> callback) { private void handleOsmAndSettingsImport(Uri intentUri, String fileName, Bundle extras, CallbackWithObject<List<SettingsItem>> callback) {
if (extras != null && extras.containsKey(SettingsHelper.SETTINGS_VERSION_KEY) && extras.containsKey(SettingsHelper.SETTINGS_LATEST_CHANGES_KEY)) { if (extras != null
&& extras.containsKey(SettingsHelper.SETTINGS_VERSION_KEY)
&& extras.containsKey(SettingsHelper.SETTINGS_LATEST_CHANGES_KEY)) {
int version = extras.getInt(SettingsHelper.SETTINGS_VERSION_KEY, -1); int version = extras.getInt(SettingsHelper.SETTINGS_VERSION_KEY, -1);
String latestChanges = extras.getString(SettingsHelper.SETTINGS_LATEST_CHANGES_KEY); String latestChanges = extras.getString(SettingsHelper.SETTINGS_LATEST_CHANGES_KEY);
handleOsmAndSettingsImport(intentUri, fileName, latestChanges, version, callback); boolean replace = extras.getBoolean(REPLACE_KEY);
ArrayList<String> settingsTypeKeys = extras.getStringArrayList(SETTINGS_TYPE_LIST_KEY);
List<ExportSettingsType> settingsTypes = null;
if (settingsTypeKeys != null) {
settingsTypes = new ArrayList<>();
for (String key : settingsTypeKeys) {
settingsTypes.add(ExportSettingsType.valueOf(key));
}
}
handleOsmAndSettingsImport(intentUri, fileName, settingsTypes, replace, latestChanges, version, callback);
} else { } else {
handleOsmAndSettingsImport(intentUri, fileName, null, -1, callback); handleOsmAndSettingsImport(intentUri, fileName, null, false, null, -1,
callback);
} }
} }
protected void handleOsmAndSettingsImport(Uri uri, String name, String latestChanges, int version, protected void handleOsmAndSettingsImport(Uri uri, String name, final List<ExportSettingsType> settingsTypes,
final boolean replace, String latestChanges, int version,
CallbackWithObject<List<SettingsItem>> callback) { CallbackWithObject<List<SettingsItem>> callback) {
executeImportTask(new SettingsImportTask(activity, uri, name, latestChanges, version, callback)); executeImportTask(new SettingsImportTask(activity, uri, name, settingsTypes, replace, latestChanges, version,
callback));
} }
protected void handleXmlFileImport(Uri intentUri, String fileName, CallbackWithObject routingCallback) { protected void handleXmlFileImport(Uri intentUri, String fileName, CallbackWithObject routingCallback) {

View file

@ -11,38 +11,50 @@ import net.osmand.AndroidUtils;
import net.osmand.CallbackWithObject; import net.osmand.CallbackWithObject;
import net.osmand.FileUtils; import net.osmand.FileUtils;
import net.osmand.IndexConstants; import net.osmand.IndexConstants;
import net.osmand.plus.AppInitializer;
import net.osmand.plus.CustomOsmandPlugin; import net.osmand.plus.CustomOsmandPlugin;
import net.osmand.plus.R; import net.osmand.plus.R;
import net.osmand.plus.activities.MapActivity;
import net.osmand.plus.base.BaseLoadAsyncTask; import net.osmand.plus.base.BaseLoadAsyncTask;
import net.osmand.plus.settings.backend.ExportSettingsType;
import net.osmand.plus.settings.backend.backup.SettingsHelper;
import net.osmand.plus.settings.backend.backup.SettingsHelper.CheckDuplicatesListener; import net.osmand.plus.settings.backend.backup.SettingsHelper.CheckDuplicatesListener;
import net.osmand.plus.settings.backend.backup.PluginSettingsItem; import net.osmand.plus.settings.backend.backup.PluginSettingsItem;
import net.osmand.plus.settings.backend.backup.ProfileSettingsItem; import net.osmand.plus.settings.backend.backup.ProfileSettingsItem;
import net.osmand.plus.settings.backend.backup.SettingsHelper.SettingsCollectListener; import net.osmand.plus.settings.backend.backup.SettingsHelper.SettingsCollectListener;
import net.osmand.plus.settings.backend.backup.SettingsHelper.SettingsImportListener; import net.osmand.plus.settings.backend.backup.SettingsHelper.SettingsImportListener;
import net.osmand.plus.settings.backend.backup.SettingsItem; import net.osmand.plus.settings.backend.backup.SettingsItem;
import net.osmand.plus.settings.fragments.ImportCompleteFragment;
import net.osmand.plus.settings.fragments.ImportSettingsFragment; import net.osmand.plus.settings.fragments.ImportSettingsFragment;
import net.osmand.util.Algorithms; import net.osmand.util.Algorithms;
import java.io.File; import java.io.File;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Map;
import static net.osmand.plus.AppInitializer.loadRoutingFiles; import static net.osmand.plus.AppInitializer.loadRoutingFiles;
import static net.osmand.plus.settings.backend.backup.SettingsHelper.getSettingsToOperate;
class SettingsImportTask extends BaseLoadAsyncTask<Void, Void, String> { class SettingsImportTask extends BaseLoadAsyncTask<Void, Void, String> {
private Uri uri; private Uri uri;
private String name; private String name;
private List<ExportSettingsType> settingsTypes;
private boolean replace;
private String latestChanges; private String latestChanges;
private int version; private int version;
private CallbackWithObject<List<SettingsItem>> callback; private CallbackWithObject<List<SettingsItem>> callback;
public SettingsImportTask(@NonNull FragmentActivity activity, @NonNull Uri uri, public SettingsImportTask(@NonNull FragmentActivity activity, @NonNull Uri uri,
@NonNull String name, String latestChanges, int version, @NonNull String name, List<ExportSettingsType> settingsTypes,
boolean replace, String latestChanges, int version,
CallbackWithObject<List<SettingsItem>> callback) { CallbackWithObject<List<SettingsItem>> callback) {
super(activity); super(activity);
this.uri = uri; this.uri = uri;
this.name = name; this.name = name;
this.settingsTypes = settingsTypes;
this.replace = replace;
this.latestChanges = latestChanges; this.latestChanges = latestChanges;
this.version = version; this.version = version;
this.callback = callback; this.callback = callback;
@ -60,7 +72,8 @@ class SettingsImportTask extends BaseLoadAsyncTask<Void, Void, String> {
File tempDir = FileUtils.getTempDir(app); File tempDir = FileUtils.getTempDir(app);
final File file = new File(tempDir, name); final File file = new File(tempDir, name);
if (error == null && file.exists()) { if (error == null && file.exists()) {
app.getSettingsHelper().collectSettings(file, latestChanges, version, new SettingsCollectListener() { final SettingsHelper settingsHelper = app.getSettingsHelper();
settingsHelper.collectSettings(file, latestChanges, version, new SettingsCollectListener() {
@Override @Override
public void onSettingsCollectFinished(boolean succeed, boolean empty, @NonNull List<SettingsItem> items) { public void onSettingsCollectFinished(boolean succeed, boolean empty, @NonNull List<SettingsItem> items) {
hideProgress(); hideProgress();
@ -78,11 +91,17 @@ class SettingsImportTask extends BaseLoadAsyncTask<Void, Void, String> {
handlePluginImport(pluginItem, file); handlePluginImport(pluginItem, file);
} }
if (!pluginIndependentItems.isEmpty()) { if (!pluginIndependentItems.isEmpty()) {
if (settingsTypes == null) {
FragmentActivity activity = activityRef.get(); FragmentActivity activity = activityRef.get();
if (activity != null) { if (activity != null) {
FragmentManager fragmentManager = activity.getSupportFragmentManager(); FragmentManager fragmentManager = activity.getSupportFragmentManager();
ImportSettingsFragment.showInstance(fragmentManager, pluginIndependentItems, file); ImportSettingsFragment.showInstance(fragmentManager, pluginIndependentItems, file);
} }
} else {
Map<ExportSettingsType, List<?>> allSettingsMap = getSettingsToOperate(pluginIndependentItems, false);
List<SettingsItem> settingsList = settingsHelper.getFilteredSettingsItems(allSettingsMap, settingsTypes);
settingsHelper.checkDuplicates(file, settingsList, settingsList, getDuplicatesListener(file, replace));
}
} }
} else if (empty) { } else if (empty) {
app.showShortToastMessage(app.getString(R.string.file_import_error, name, app.getString(R.string.shared_string_unexpected_error))); app.showShortToastMessage(app.getString(R.string.file_import_error, name, app.getString(R.string.shared_string_unexpected_error)));
@ -95,6 +114,42 @@ class SettingsImportTask extends BaseLoadAsyncTask<Void, Void, String> {
} }
} }
private CheckDuplicatesListener getDuplicatesListener(final File file, final boolean replace) {
return new CheckDuplicatesListener() {
@Override
public void onDuplicatesChecked(@NonNull List<Object> duplicates, List<SettingsItem> items) {
if (replace) {
for (SettingsItem item : items) {
item.setShouldReplace(true);
}
}
app.getSettingsHelper().importSettings(file, items, "", 1, getImportListener(file));
}
};
}
private SettingsImportListener getImportListener(final File file) {
return new SettingsImportListener() {
@Override
public void onSettingsImportFinished(boolean succeed, @NonNull List<SettingsItem> items) {
if (succeed) {
app.getRendererRegistry().updateExternalRenderers();
app.getPoiFilters().loadSelectedPoiFilters();
AppInitializer.loadRoutingFiles(app, null);
FragmentActivity activity = activityRef.get();
if (activity instanceof MapActivity) {
((MapActivity) activity).getMapLayers().getMapWidgetRegistry().updateVisibleWidgets();
((MapActivity) activity).updateApplicationModeSettings();
}
if (file != null && activity != null) {
FragmentManager fm = activity.getSupportFragmentManager();
ImportCompleteFragment.showInstance(fm, items, file.getName());
}
}
}
};
}
private void handlePluginImport(final PluginSettingsItem pluginItem, final File file) { private void handlePluginImport(final PluginSettingsItem pluginItem, final File file) {
FragmentActivity activity = activityRef.get(); FragmentActivity activity = activityRef.get();
final ProgressDialog progress; final ProgressDialog progress;

View file

@ -85,7 +85,8 @@ public class ZipImportTask extends BaseLoadAsyncTask<Void, Void, ImportType> {
importHelper.handleKmzImport(uri, name + GPX_FILE_EXT, save, useImportDir); importHelper.handleKmzImport(uri, name + GPX_FILE_EXT, save, useImportDir);
} else if (importType == ImportType.SETTINGS) { } else if (importType == ImportType.SETTINGS) {
String name = createUniqueFileName(app, "settings", TEMP_DIR, OSMAND_SETTINGS_FILE_EXT); String name = createUniqueFileName(app, "settings", TEMP_DIR, OSMAND_SETTINGS_FILE_EXT);
importHelper.handleOsmAndSettingsImport(uri, name + OSMAND_SETTINGS_FILE_EXT, null, -1, null); importHelper.handleOsmAndSettingsImport(uri, name + OSMAND_SETTINGS_FILE_EXT,
null, false, null, -1, null);
} }
} }
} }

View file

@ -63,6 +63,8 @@ public class HorizontalSelectionAdapter extends RecyclerView.Adapter<HorizontalS
public void onBindViewHolder(@NonNull ItemViewHolder holder, final int position) { public void onBindViewHolder(@NonNull ItemViewHolder holder, final int position) {
final HorizontalSelectionItem item = items.get(holder.getAdapterPosition()); final HorizontalSelectionItem item = items.get(holder.getAdapterPosition());
TextView textView = holder.buttonText; TextView textView = holder.buttonText;
int innerPadding = app.getResources().getDimensionPixelSize(R.dimen.content_padding);
textView.setPadding(innerPadding, 0, innerPadding, 0);
int activeColorResId = nightMode ? R.color.active_color_primary_dark : R.color.active_color_primary_light; int activeColorResId = nightMode ? R.color.active_color_primary_dark : R.color.active_color_primary_light;
if (item.equals(selectedItem) && item.isEnabled()) { if (item.equals(selectedItem) && item.isEnabled()) {
AndroidUtils.setBackground(holder.button, app.getUIUtilities().getPaintedIcon( AndroidUtils.setBackground(holder.button, app.getUIUtilities().getPaintedIcon(

View file

@ -518,7 +518,9 @@ public class TrackDetailsMenu {
} else { } else {
gpxItem.chartHighlightPos = -1; gpxItem.chartHighlightPos = -1;
} }
if (shouldShowXAxisPoints()) {
trackChartPoints.setXAxisPoints(getXAxisPoints(chart)); trackChartPoints.setXAxisPoints(getXAxisPoints(chart));
}
if (gpxItem.route) { if (gpxItem.route) {
mapActivity.getMapLayers().getMapInfoLayer().setTrackChartPoints(trackChartPoints); mapActivity.getMapLayers().getMapInfoLayer().setTrackChartPoints(trackChartPoints);
} else { } else {
@ -530,6 +532,10 @@ public class TrackDetailsMenu {
fitTrackOnMap(chart, location, forceFit); fitTrackOnMap(chart, location, forceFit);
} }
public boolean shouldShowXAxisPoints () {
return true;
}
public void reset() { public void reset() {
segment = null; segment = null;
trackChartPoints = null; trackChartPoints = null;

View file

@ -29,7 +29,7 @@ import net.osmand.plus.helpers.GpxUiHelper.LineGraphType;
import net.osmand.plus.mapcontextmenu.other.HorizontalSelectionAdapter; import net.osmand.plus.mapcontextmenu.other.HorizontalSelectionAdapter;
import net.osmand.plus.mapcontextmenu.other.HorizontalSelectionAdapter.HorizontalSelectionAdapterListener; import net.osmand.plus.mapcontextmenu.other.HorizontalSelectionAdapter.HorizontalSelectionAdapterListener;
import net.osmand.plus.mapcontextmenu.other.TrackDetailsMenu; import net.osmand.plus.mapcontextmenu.other.TrackDetailsMenu;
import net.osmand.plus.measurementtool.MeasurementToolFragment.OnUpdateAdditionalInfoListener; import net.osmand.plus.measurementtool.MeasurementToolFragment.OnUpdateInfoListener;
import net.osmand.plus.measurementtool.graph.CommonGraphAdapter; import net.osmand.plus.measurementtool.graph.CommonGraphAdapter;
import net.osmand.plus.measurementtool.graph.CustomGraphAdapter; import net.osmand.plus.measurementtool.graph.CustomGraphAdapter;
import net.osmand.plus.measurementtool.graph.CustomGraphAdapter.LegendViewType; import net.osmand.plus.measurementtool.graph.CustomGraphAdapter.LegendViewType;
@ -53,7 +53,7 @@ import static net.osmand.plus.helpers.GpxUiHelper.LineGraphType.SPEED;
import static net.osmand.plus.mapcontextmenu.other.HorizontalSelectionAdapter.HorizontalSelectionItem; import static net.osmand.plus.mapcontextmenu.other.HorizontalSelectionAdapter.HorizontalSelectionItem;
import static net.osmand.router.RouteStatisticsHelper.RouteStatistics; import static net.osmand.router.RouteStatisticsHelper.RouteStatistics;
public class GraphsCard extends BaseCard implements OnUpdateAdditionalInfoListener { public class GraphsCard extends BaseCard implements OnUpdateInfoListener {
private static String GRAPH_DATA_GPX_FILE_NAME = "graph_data_tmp"; private static String GRAPH_DATA_GPX_FILE_NAME = "graph_data_tmp";
private static int INVALID_ID = -1; private static int INVALID_ID = -1;
@ -114,11 +114,11 @@ public class GraphsCard extends BaseCard implements OnUpdateAdditionalInfoListen
@Override @Override
public int getCardLayoutId() { public int getCardLayoutId() {
return R.layout.fragment_measurement_tool_graph; return R.layout.measurement_tool_graph_card;
} }
@Override @Override
public void onUpdateAdditionalInfo() { public void onUpdateInfo() {
if (editingCtx != null) { if (editingCtx != null) {
fullUpdate(); fullUpdate();
} }

View file

@ -75,6 +75,9 @@ import net.osmand.plus.views.layers.MapControlsLayer;
import net.osmand.plus.views.mapwidgets.MapInfoWidgetsFactory.TopToolbarController; import net.osmand.plus.views.mapwidgets.MapInfoWidgetsFactory.TopToolbarController;
import net.osmand.plus.views.mapwidgets.MapInfoWidgetsFactory.TopToolbarControllerType; import net.osmand.plus.views.mapwidgets.MapInfoWidgetsFactory.TopToolbarControllerType;
import net.osmand.plus.views.mapwidgets.MapInfoWidgetsFactory.TopToolbarView; import net.osmand.plus.views.mapwidgets.MapInfoWidgetsFactory.TopToolbarView;
import net.osmand.plus.widgets.MultiStateToggleButton;
import net.osmand.plus.widgets.MultiStateToggleButton.RadioItem;
import net.osmand.plus.widgets.MultiStateToggleButton.OnRadioItemClickListener;
import net.osmand.router.RoutePlannerFrontEnd.GpxRouteApproximation; import net.osmand.router.RoutePlannerFrontEnd.GpxRouteApproximation;
import net.osmand.util.Algorithms; import net.osmand.util.Algorithms;
@ -88,8 +91,6 @@ import java.util.Locale;
import static net.osmand.IndexConstants.GPX_FILE_EXT; import static net.osmand.IndexConstants.GPX_FILE_EXT;
import static net.osmand.IndexConstants.GPX_INDEX_DIR; import static net.osmand.IndexConstants.GPX_INDEX_DIR;
import static net.osmand.plus.UiUtilities.CustomRadioButtonType.END;
import static net.osmand.plus.UiUtilities.CustomRadioButtonType.START;
import static net.osmand.plus.measurementtool.MeasurementEditingContext.CalculationMode; import static net.osmand.plus.measurementtool.MeasurementEditingContext.CalculationMode;
import static net.osmand.plus.measurementtool.MeasurementEditingContext.SnapToRoadProgressListener; import static net.osmand.plus.measurementtool.MeasurementEditingContext.SnapToRoadProgressListener;
import static net.osmand.plus.measurementtool.SaveAsNewTrackBottomSheetDialogFragment.SaveAsNewTrackFragmentListener; import static net.osmand.plus.measurementtool.SaveAsNewTrackBottomSheetDialogFragment.SaveAsNewTrackFragmentListener;
@ -113,25 +114,25 @@ public class MeasurementToolFragment extends BaseOsmAndFragment implements Route
private TextView pointsTv; private TextView pointsTv;
private TextView distanceToCenterTv; private TextView distanceToCenterTv;
private String pointsSt; private String pointsSt;
private View additionalInfoContainer;
private ViewGroup cardsContainer; private ViewGroup cardsContainer;
private BaseCard visibleCard; private BaseCard visibleCard;
private PointsCard pointsCard; private PointsCard pointsCard;
private GraphsCard graphsCard; private GraphsCard graphsCard;
private LinearLayout customRadioButton; private MultiStateToggleButton infoTypeBtn;
private RadioItem pointsBtn;
private RadioItem graphBtn;
private View mainView; private View mainView;
private ImageView upDownBtn; private ImageView upDownBtn;
private ImageView undoBtn; private ImageView undoBtn;
private ImageView redoBtn; private ImageView redoBtn;
private ImageView mainIcon; private ImageView mainIcon;
private Snackbar snackbar;
private String fileName; private String fileName;
private AdditionalInfoType currentAdditionalInfoType; private InfoType currentInfoType;
private boolean wasCollapseButtonVisible; private boolean wasCollapseButtonVisible;
private boolean progressBarVisible; private boolean progressBarVisible;
private boolean additionalInfoExpanded; private boolean infoExpanded;
private static final int PLAN_ROUTE_MODE = 0x1; private static final int PLAN_ROUTE_MODE = 0x1;
private static final int DIRECTION_MODE = 0x2; private static final int DIRECTION_MODE = 0x2;
@ -148,18 +149,13 @@ public class MeasurementToolFragment extends BaseOsmAndFragment implements Route
private LatLon initialPoint; private LatLon initialPoint;
enum SaveType {
ROUTE,
LINE
}
enum FinalSaveAction { enum FinalSaveAction {
SHOW_SNACK_BAR_AND_CLOSE, SHOW_SNACK_BAR_AND_CLOSE,
SHOW_TOAST, SHOW_TOAST,
SHOW_IS_SAVED_FRAGMENT SHOW_IS_SAVED_FRAGMENT
} }
private enum AdditionalInfoType { private enum InfoType {
POINTS, POINTS,
GRAPH GRAPH
} }
@ -175,6 +171,10 @@ public class MeasurementToolFragment extends BaseOsmAndFragment implements Route
protected int getFragmentHeight() { protected int getFragmentHeight() {
return mainView.getHeight(); return mainView.getHeight();
} }
public boolean shouldShowXAxisPoints () {
return false;
}
} }
private void setEditingCtx(MeasurementEditingContext editingCtx) { private void setEditingCtx(MeasurementEditingContext editingCtx) {
@ -230,13 +230,14 @@ public class MeasurementToolFragment extends BaseOsmAndFragment implements Route
return null; return null;
} }
final MeasurementToolLayer measurementLayer = mapActivity.getMapLayers().getMeasurementToolLayer(); final MeasurementToolLayer measurementLayer = mapActivity.getMapLayers().getMeasurementToolLayer();
OsmandApplication app = mapActivity.getMyApplication();
editingCtx.setApplication(mapActivity.getMyApplication()); editingCtx.setApplication(mapActivity.getMyApplication());
editingCtx.setProgressListener(new SnapToRoadProgressListener() { editingCtx.setProgressListener(new SnapToRoadProgressListener() {
@Override @Override
public void showProgressBar() { public void showProgressBar() {
MeasurementToolFragment.this.showProgressBar(); MeasurementToolFragment.this.showProgressBar();
updateAdditionalInfoView(); updateInfoView();
} }
@Override @Override
@ -248,7 +249,7 @@ public class MeasurementToolFragment extends BaseOsmAndFragment implements Route
public void hideProgressBar() { public void hideProgressBar() {
((ProgressBar) mainView.findViewById(R.id.snap_to_road_progress_bar)).setVisibility(View.GONE); ((ProgressBar) mainView.findViewById(R.id.snap_to_road_progress_bar)).setVisibility(View.GONE);
progressBarVisible = false; progressBarVisible = false;
updateAdditionalInfoView(); updateInfoView();
} }
@Override @Override
@ -262,6 +263,7 @@ public class MeasurementToolFragment extends BaseOsmAndFragment implements Route
nightMode = mapActivity.getMyApplication().getDaynightHelper().isNightModeForMapControls(); nightMode = mapActivity.getMyApplication().getDaynightHelper().isNightModeForMapControls();
portrait = AndroidUiHelper.isOrientationPortrait(mapActivity); portrait = AndroidUiHelper.isOrientationPortrait(mapActivity);
int btnWidth = getResources().getDimensionPixelOffset(R.dimen.gpx_group_button_width);
pointsSt = getString(R.string.shared_string_gpx_points).toLowerCase(); pointsSt = getString(R.string.shared_string_gpx_points).toLowerCase();
@ -271,30 +273,19 @@ public class MeasurementToolFragment extends BaseOsmAndFragment implements Route
mainView = view.findViewById(R.id.main_view); mainView = view.findViewById(R.id.main_view);
AndroidUtils.setBackground(mapActivity, mainView, nightMode, R.drawable.bg_bottom_menu_light, R.drawable.bg_bottom_menu_dark); AndroidUtils.setBackground(mapActivity, mainView, nightMode, R.drawable.bg_bottom_menu_light, R.drawable.bg_bottom_menu_dark);
detailsMenu = new GraphDetailsMenu(); detailsMenu = new GraphDetailsMenu();
additionalInfoContainer = mainView.findViewById(R.id.additional_info_container);
cardsContainer = mainView.findViewById(R.id.cards_container); cardsContainer = mainView.findViewById(R.id.cards_container);
if (portrait) { if (portrait) {
customRadioButton = mainView.findViewById(R.id.custom_radio_buttons); String pointsBtnTitle = getString(R.string.shared_string_gpx_points);
pointsBtn = new RadioItem(pointsBtnTitle);
pointsBtn.setOnClickListener(getInfoTypeBtnListener(InfoType.POINTS));
View pointListBtn = customRadioButton.findViewById(R.id.left_button_container); String graphBtnTitle = getString(R.string.shared_string_graph);
TextView tvPointListBtn = customRadioButton.findViewById(R.id.left_button); graphBtn = new RadioItem(graphBtnTitle);
tvPointListBtn.setText(R.string.shared_string_gpx_points); graphBtn.setOnClickListener(getInfoTypeBtnListener(InfoType.GRAPH));
pointListBtn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
changeAdditionalInfoType(AdditionalInfoType.POINTS);
}
});
View graphBtn = customRadioButton.findViewById(R.id.right_button_container); LinearLayout infoButtonsContainer = mainView.findViewById(R.id.custom_radio_buttons);
TextView tvGraphBtn = customRadioButton.findViewById(R.id.right_button); infoTypeBtn = new MultiStateToggleButton(app, infoButtonsContainer, nightMode);
tvGraphBtn.setText(R.string.shared_string_graph); infoTypeBtn.setItems(pointsBtn, graphBtn);
graphBtn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
changeAdditionalInfoType(AdditionalInfoType.GRAPH);
}
});
} }
pointsCard = new PointsCard(mapActivity, this); pointsCard = new PointsCard(mapActivity, this);
graphsCard = new GraphsCard(mapActivity, detailsMenu, this); graphsCard = new GraphsCard(mapActivity, detailsMenu, this);
@ -328,18 +319,21 @@ public class MeasurementToolFragment extends BaseOsmAndFragment implements Route
View upDownRow = mainView.findViewById(R.id.up_down_row); View upDownRow = mainView.findViewById(R.id.up_down_row);
upDownRow.setOnClickListener(new OnClickListener() { upDownRow.setOnClickListener(new OnClickListener() {
@Override @Override
public void onClick(View view) { public void onClick(View v) {
if (!additionalInfoExpanded && editingCtx.getPointsCount() > 0 && editingCtx.getSelectedPointPosition() == -1) { if (portrait) {
expandAdditionalInfoView(); if (infoExpanded) {
} else { collapseInfoView();
collapseAdditionalInfoView(); } else if (setInfoType(InfoType.POINTS)) {
infoTypeBtn.setSelectedItem(pointsBtn);
}
} }
} }
}); });
View applyMovePointButton = mainView.findViewById(R.id.apply_move_point_button); View applyMovePointButton = mainView.findViewById(R.id.apply_move_point_button);
UiUtilities.setupDialogButton(nightMode, applyMovePointButton, UiUtilities.DialogButtonType.PRIMARY, UiUtilities.setupDialogButton(nightMode, applyMovePointButton,
R.string.shared_string_apply); UiUtilities.DialogButtonType.PRIMARY, R.string.shared_string_apply);
applyMovePointButton.setMinimumWidth(btnWidth);
applyMovePointButton.setOnClickListener(new OnClickListener() { applyMovePointButton.setOnClickListener(new OnClickListener() {
@Override @Override
public void onClick(View view) { public void onClick(View view) {
@ -349,8 +343,9 @@ public class MeasurementToolFragment extends BaseOsmAndFragment implements Route
View applyPointBeforeAfterButton = mainView.findViewById(R.id.apply_point_before_after_point_button); View applyPointBeforeAfterButton = mainView.findViewById(R.id.apply_point_before_after_point_button);
UiUtilities.setupDialogButton(nightMode, applyPointBeforeAfterButton, UiUtilities.DialogButtonType.PRIMARY, UiUtilities.setupDialogButton(nightMode, applyPointBeforeAfterButton,
R.string.shared_string_apply); UiUtilities.DialogButtonType.PRIMARY, R.string.shared_string_apply);
applyPointBeforeAfterButton.setMinimumWidth(btnWidth);
applyPointBeforeAfterButton.setOnClickListener(new OnClickListener() { applyPointBeforeAfterButton.setOnClickListener(new OnClickListener() {
@Override @Override
public void onClick(View view) { public void onClick(View view) {
@ -359,8 +354,9 @@ public class MeasurementToolFragment extends BaseOsmAndFragment implements Route
}); });
View addPointBeforeAfterButton = mainView.findViewById(R.id.add_point_before_after_button); View addPointBeforeAfterButton = mainView.findViewById(R.id.add_point_before_after_button);
UiUtilities.setupDialogButton(nightMode, addPointBeforeAfterButton, UiUtilities.DialogButtonType.PRIMARY, UiUtilities.setupDialogButton(nightMode, addPointBeforeAfterButton,
R.string.shared_string_add); UiUtilities.DialogButtonType.PRIMARY, R.string.shared_string_add);
addPointBeforeAfterButton.setMinimumWidth(btnWidth);
addPointBeforeAfterButton.setOnClickListener(new OnClickListener() { addPointBeforeAfterButton.setOnClickListener(new OnClickListener() {
@Override @Override
public void onClick(View view) { public void onClick(View view) {
@ -408,8 +404,9 @@ public class MeasurementToolFragment extends BaseOsmAndFragment implements Route
}); });
View addPointButton = mainView.findViewById(R.id.add_point_button); View addPointButton = mainView.findViewById(R.id.add_point_button);
UiUtilities.setupDialogButton(nightMode, addPointButton, UiUtilities.DialogButtonType.PRIMARY, UiUtilities.setupDialogButton(nightMode, addPointButton,
R.string.shared_string_add); UiUtilities.DialogButtonType.PRIMARY, R.string.shared_string_add);
addPointButton.setMinimumWidth(btnWidth);
addPointButton.setOnClickListener(new OnClickListener() { addPointButton.setOnClickListener(new OnClickListener() {
@Override @Override
public void onClick(View view) { public void onClick(View view) {
@ -425,9 +422,6 @@ public class MeasurementToolFragment extends BaseOsmAndFragment implements Route
@Override @Override
public void onSelectPoint(int selectedPointPos) { public void onSelectPoint(int selectedPointPos) {
if (additionalInfoExpanded) {
collapseAdditionalInfoView();
}
if (selectedPointPos != -1) { if (selectedPointPos != -1) {
openSelectedPointMenu(mapActivity); openSelectedPointMenu(mapActivity);
} }
@ -449,9 +443,7 @@ public class MeasurementToolFragment extends BaseOsmAndFragment implements Route
measurementLayer.setOnEnterMovePointModeListener(new MeasurementToolLayer.OnEnterMovePointModeListener() { measurementLayer.setOnEnterMovePointModeListener(new MeasurementToolLayer.OnEnterMovePointModeListener() {
@Override @Override
public void onEnterMovePointMode() { public void onEnterMovePointMode() {
if (additionalInfoExpanded) { collapseInfoViewIfExpanded();
collapseAdditionalInfoView();
}
switchMovePointMode(true); switchMovePointMode(true);
} }
}); });
@ -529,37 +521,90 @@ public class MeasurementToolFragment extends BaseOsmAndFragment implements Route
return view; return view;
} }
private void changeAdditionalInfoType(@NonNull AdditionalInfoType type) { private OnRadioItemClickListener getInfoTypeBtnListener(@NonNull final InfoType type) {
if (!additionalInfoExpanded || !isCurrentAdditionalInfoType(type)) { return new OnRadioItemClickListener() {
MapActivity ma = getMapActivity(); @Override
if (ma == null) return; public boolean onRadioItemClick(RadioItem radioItem, View view) {
if (isCurrentInfoType(type)) {
collapseInfoView();
return false;
}
return setInfoType(type);
}
};
}
OsmandApplication app = ma.getMyApplication(); private boolean setInfoType(@NonNull InfoType type) {
if (AdditionalInfoType.POINTS == type) { OsmandApplication app = getMyApplication();
if ((!infoExpanded || !isCurrentInfoType(type)) && app != null) {
if (editingCtx.getPointsCount() > 0 && editingCtx.getSelectedPointPosition() == -1) {
expandInfoView();
currentInfoType = type;
if (InfoType.POINTS == type) {
visibleCard = pointsCard; visibleCard = pointsCard;
UiUtilities.updateCustomRadioButtons(app, customRadioButton, nightMode, START); } else if (InfoType.GRAPH == type) {
} else if (AdditionalInfoType.GRAPH == type) {
visibleCard = graphsCard; visibleCard = graphsCard;
UiUtilities.updateCustomRadioButtons(app, customRadioButton, nightMode, END);
} }
cardsContainer.removeAllViews(); cardsContainer.removeAllViews();
View cardView = visibleCard.getView() != null ? visibleCard.getView() : visibleCard.build(ma); View cardView = visibleCard.getView() != null ? visibleCard.getView() : visibleCard.build(app);
cardsContainer.addView(cardView); cardsContainer.addView(cardView);
return true;
} else {
collapseInfoView();
}
}
return false;
}
currentAdditionalInfoType = type; private void expandInfoView() {
additionalInfoExpanded = true; if (portrait) {
infoExpanded = true;
cardsContainer.setVisibility(View.VISIBLE);
setMapPosition(portrait
? OsmandSettings.MIDDLE_TOP_CONSTANT
: OsmandSettings.LANDSCAPE_MIDDLE_RIGHT_CONSTANT);
updateUpDownBtn(); updateUpDownBtn();
} }
} }
private void updateAdditionalInfoView() { private void collapseInfoViewIfExpanded() {
updateAdditionalInfoView(pointsCard); if (infoExpanded) {
updateAdditionalInfoView(graphsCard); collapseInfoView();
}
} }
private void updateAdditionalInfoView(OnUpdateAdditionalInfoListener listener) { private void collapseInfoView() {
if (portrait) {
infoExpanded = false;
currentInfoType = null;
infoTypeBtn.setSelectedItem(null);
cardsContainer.setVisibility(View.GONE);
setDefaultMapPosition();
updateUpDownBtn();
}
}
private void collapseInfoIfNotEnoughPoints() {
MeasurementToolLayer measurementLayer = getMeasurementLayer();
if (measurementLayer != null) {
int pointsCount = editingCtx.getPointsCount();
if (isCurrentInfoType(InfoType.GRAPH) && pointsCount < 2) {
collapseInfoView();
} else if (pointsCount < 1) {
disable(upDownBtn);
collapseInfoViewIfExpanded();
}
}
}
private void updateInfoView() {
updateInfoView(pointsCard);
updateInfoView(graphsCard);
}
private void updateInfoView(OnUpdateInfoListener listener) {
if (listener != null) { if (listener != null) {
listener.onUpdateAdditionalInfo(); listener.onUpdateInfo();
} }
} }
@ -576,11 +621,11 @@ public class MeasurementToolFragment extends BaseOsmAndFragment implements Route
} }
private void updateUndoRedoCommonStuff() { private void updateUndoRedoCommonStuff() {
collapseAdditionalInfoIfNoPointsEnough(); collapseInfoIfNotEnoughPoints();
if (editingCtx.getPointsCount() > 0) { if (editingCtx.getPointsCount() > 0) {
enable(upDownBtn); enable(upDownBtn);
} }
updateAdditionalInfoView(); updateInfoView();
updateDistancePointsText(); updateDistancePointsText();
updateSnapToRoadControls(); updateSnapToRoadControls();
} }
@ -638,9 +683,7 @@ public class MeasurementToolFragment extends BaseOsmAndFragment implements Route
super.onDestroyView(); super.onDestroyView();
cancelModes(); cancelModes();
exitMeasurementMode(); exitMeasurementMode();
if (additionalInfoExpanded) { collapseInfoViewIfExpanded();
collapseAdditionalInfoView();
}
MeasurementToolLayer layer = getMeasurementLayer(); MeasurementToolLayer layer = getMeasurementLayer();
if (layer != null) { if (layer != null) {
layer.setOnSingleTapListener(null); layer.setOnSingleTapListener(null);
@ -891,9 +934,7 @@ public class MeasurementToolFragment extends BaseOsmAndFragment implements Route
MeasurementToolLayer measurementLayer = getMeasurementLayer(); MeasurementToolLayer measurementLayer = getMeasurementLayer();
editingCtx.getCommandManager().execute(new ClearPointsCommand(measurementLayer, ALL)); editingCtx.getCommandManager().execute(new ClearPointsCommand(measurementLayer, ALL));
editingCtx.cancelSnapToRoad(); editingCtx.cancelSnapToRoad();
if (additionalInfoExpanded) { collapseInfoViewIfExpanded();
collapseAdditionalInfoView();
}
updateUndoRedoButton(false, redoBtn); updateUndoRedoButton(false, redoBtn);
disable(upDownBtn); disable(upDownBtn);
updateDistancePointsText(); updateDistancePointsText();
@ -907,9 +948,7 @@ public class MeasurementToolFragment extends BaseOsmAndFragment implements Route
if (points.size() > 1) { if (points.size() > 1) {
MeasurementToolLayer measurementLayer = getMeasurementLayer(); MeasurementToolLayer measurementLayer = getMeasurementLayer();
editingCtx.getCommandManager().execute(new ReversePointsCommand(measurementLayer)); editingCtx.getCommandManager().execute(new ReversePointsCommand(measurementLayer));
if (additionalInfoExpanded) { collapseInfoViewIfExpanded();
collapseAdditionalInfoView();
}
updateUndoRedoButton(false, redoBtn); updateUndoRedoButton(false, redoBtn);
updateUndoRedoButton(true, undoBtn); updateUndoRedoButton(true, undoBtn);
updateDistancePointsText(); updateDistancePointsText();
@ -976,9 +1015,7 @@ public class MeasurementToolFragment extends BaseOsmAndFragment implements Route
private void trimRoute(ClearCommandMode before) { private void trimRoute(ClearCommandMode before) {
MeasurementToolLayer measurementLayer = getMeasurementLayer(); MeasurementToolLayer measurementLayer = getMeasurementLayer();
editingCtx.getCommandManager().execute(new ClearPointsCommand(measurementLayer, before)); editingCtx.getCommandManager().execute(new ClearPointsCommand(measurementLayer, before));
if (additionalInfoExpanded) { collapseInfoViewIfExpanded();
collapseAdditionalInfoView();
}
editingCtx.setSelectedPointPosition(-1); editingCtx.setSelectedPointPosition(-1);
editingCtx.splitSegments(editingCtx.getBeforePoints().size() + editingCtx.getAfterPoints().size()); editingCtx.splitSegments(editingCtx.getBeforePoints().size() + editingCtx.getAfterPoints().size());
updateUndoRedoButton(false, redoBtn); updateUndoRedoButton(false, redoBtn);
@ -1130,11 +1167,11 @@ public class MeasurementToolFragment extends BaseOsmAndFragment implements Route
private void removePoint(MeasurementToolLayer measurementLayer, int position) { private void removePoint(MeasurementToolLayer measurementLayer, int position) {
if (measurementLayer != null) { if (measurementLayer != null) {
editingCtx.getCommandManager().execute(new RemovePointCommand(measurementLayer, position)); editingCtx.getCommandManager().execute(new RemovePointCommand(measurementLayer, position));
updateAdditionalInfoView(); updateInfoView();
updateUndoRedoButton(true, undoBtn); updateUndoRedoButton(true, undoBtn);
updateUndoRedoButton(false, redoBtn); updateUndoRedoButton(false, redoBtn);
updateDistancePointsText(); updateDistancePointsText();
collapseAdditionalInfoIfNoPointsEnough(); collapseInfoIfNotEnoughPoints();
} }
} }
@ -1159,9 +1196,7 @@ public class MeasurementToolFragment extends BaseOsmAndFragment implements Route
@Override @Override
public void onItemClick(int position) { public void onItemClick(int position) {
if (mapActivity != null && measurementLayer != null) { if (mapActivity != null && measurementLayer != null) {
if (additionalInfoExpanded) { collapseInfoViewIfExpanded();
collapseAdditionalInfoView();
}
if (portrait) { if (portrait) {
setMapPosition(OsmandSettings.MIDDLE_TOP_CONSTANT); setMapPosition(OsmandSettings.MIDDLE_TOP_CONSTANT);
} }
@ -1182,7 +1217,7 @@ public class MeasurementToolFragment extends BaseOsmAndFragment implements Route
toPosition = holder.getAdapterPosition(); toPosition = holder.getAdapterPosition();
if (toPosition >= 0 && fromPosition >= 0 && toPosition != fromPosition) { if (toPosition >= 0 && fromPosition >= 0 && toPosition != fromPosition) {
editingCtx.getCommandManager().execute(new ReorderPointCommand(measurementLayer, fromPosition, toPosition)); editingCtx.getCommandManager().execute(new ReorderPointCommand(measurementLayer, fromPosition, toPosition));
updateAdditionalInfoView(); updateInfoView();
updateUndoRedoButton(false, redoBtn); updateUndoRedoButton(false, redoBtn);
updateDistancePointsText(); updateDistancePointsText();
mapActivity.refreshMap(); mapActivity.refreshMap();
@ -1248,7 +1283,7 @@ public class MeasurementToolFragment extends BaseOsmAndFragment implements Route
if (!isUndoMode()) { if (!isUndoMode()) {
editingCtx.addPoints(); editingCtx.addPoints();
} }
updateAdditionalInfoView(); updateInfoView();
updateDistancePointsText(); updateDistancePointsText();
} }
} }
@ -1406,7 +1441,9 @@ public class MeasurementToolFragment extends BaseOsmAndFragment implements Route
R.id.measurement_points_text_view, R.id.measurement_points_text_view,
R.id.distance_to_center_text_view, R.id.distance_to_center_text_view,
R.id.up_down_button, R.id.up_down_button,
R.id.measure_mode_controls); R.id.measure_mode_controls,
R.id.info_type_buttons_container,
R.id.bottom_panel_divider);
} }
} }
@ -1444,46 +1481,7 @@ public class MeasurementToolFragment extends BaseOsmAndFragment implements Route
updateUndoRedoButton(true, undoBtn); updateUndoRedoButton(true, undoBtn);
updateUndoRedoButton(false, redoBtn); updateUndoRedoButton(false, redoBtn);
updateDistancePointsText(); updateDistancePointsText();
updateAdditionalInfoView(); updateInfoView();
}
private void expandAdditionalInfoView() {
if (portrait) {
MapActivity mapActivity = getMapActivity();
if (mapActivity != null) {
additionalInfoContainer.setVisibility(View.VISIBLE);
AdditionalInfoType typeToShow = currentAdditionalInfoType == null
? AdditionalInfoType.POINTS : currentAdditionalInfoType;
changeAdditionalInfoType(typeToShow);
setMapPosition(portrait
? OsmandSettings.MIDDLE_TOP_CONSTANT
: OsmandSettings.LANDSCAPE_MIDDLE_RIGHT_CONSTANT);
}
}
}
private void collapseAdditionalInfoView() {
if (portrait) {
additionalInfoExpanded = false;
updateUpDownBtn();
additionalInfoContainer.setVisibility(View.GONE);
setDefaultMapPosition();
}
}
private void collapseAdditionalInfoIfNoPointsEnough() {
MeasurementToolLayer measurementLayer = getMeasurementLayer();
if (measurementLayer != null) {
int pointsCount = editingCtx.getPointsCount();
if (isCurrentAdditionalInfoType(AdditionalInfoType.GRAPH) && pointsCount < 2) {
collapseAdditionalInfoView();
} else if (pointsCount < 1) {
disable(upDownBtn);
if (additionalInfoExpanded) {
collapseAdditionalInfoView();
}
}
}
} }
private void setDefaultMapPosition() { private void setDefaultMapPosition() {
@ -1510,13 +1508,13 @@ public class MeasurementToolFragment extends BaseOsmAndFragment implements Route
} }
private void updateUpDownBtn() { private void updateUpDownBtn() {
Drawable icon = getContentIcon(additionalInfoExpanded Drawable icon = getContentIcon(infoExpanded
? R.drawable.ic_action_arrow_down : R.drawable.ic_action_arrow_up); ? R.drawable.ic_action_arrow_down : R.drawable.ic_action_arrow_up);
upDownBtn.setImageDrawable(icon); upDownBtn.setImageDrawable(icon);
} }
private boolean isCurrentAdditionalInfoType(@NonNull AdditionalInfoType type) { private boolean isCurrentInfoType(@NonNull InfoType type) {
return type.equals(currentAdditionalInfoType); return Algorithms.objectEquals(currentInfoType, type);
} }
public boolean hasVisibleGraph() { public boolean hasVisibleGraph() {
@ -1600,7 +1598,7 @@ public class MeasurementToolFragment extends BaseOsmAndFragment implements Route
switch (finalSaveAction) { switch (finalSaveAction) {
case SHOW_SNACK_BAR_AND_CLOSE: case SHOW_SNACK_BAR_AND_CLOSE:
final WeakReference<MapActivity> mapActivityRef = new WeakReference<>(mapActivity); final WeakReference<MapActivity> mapActivityRef = new WeakReference<>(mapActivity);
snackbar = Snackbar.make(mapActivity.getLayout(), Snackbar snackbar = Snackbar.make(mapActivity.getLayout(),
MessageFormat.format(getString(R.string.gpx_saved_sucessfully), outFile.getName()), MessageFormat.format(getString(R.string.gpx_saved_sucessfully), outFile.getName()),
Snackbar.LENGTH_LONG) Snackbar.LENGTH_LONG)
.setAction(R.string.shared_string_undo, new OnClickListener() { .setAction(R.string.shared_string_undo, new OnClickListener() {
@ -1778,7 +1776,7 @@ public class MeasurementToolFragment extends BaseOsmAndFragment implements Route
} }
} }
public void quit(boolean hidePointsListFirst) { public void quit(boolean hideInfoViewFirst) {
if (editingCtx.getOriginalPointToMove() != null) { if (editingCtx.getOriginalPointToMove() != null) {
cancelMovePointMode(); cancelMovePointMode();
return; return;
@ -1793,16 +1791,16 @@ public class MeasurementToolFragment extends BaseOsmAndFragment implements Route
dismiss(mapActivity); dismiss(mapActivity);
} }
} else { } else {
showQuitDialog(hidePointsListFirst); showQuitDialog(hideInfoViewFirst);
} }
} }
private void showQuitDialog(boolean hidePointsListFirst) { private void showQuitDialog(boolean hideInfoViewFirst) {
final MapActivity mapActivity = getMapActivity(); final MapActivity mapActivity = getMapActivity();
MeasurementToolLayer measurementLayer = getMeasurementLayer(); MeasurementToolLayer measurementLayer = getMeasurementLayer();
if (mapActivity != null && measurementLayer != null) { if (mapActivity != null && measurementLayer != null) {
if (additionalInfoExpanded && hidePointsListFirst) { if (infoExpanded && hideInfoViewFirst) {
collapseAdditionalInfoView(); collapseInfoView();
return; return;
} }
if (!editingCtx.hasChanges()) { if (!editingCtx.hasChanges()) {
@ -1822,9 +1820,7 @@ public class MeasurementToolFragment extends BaseOsmAndFragment implements Route
if (clearContext) { if (clearContext) {
editingCtx.clearSegments(); editingCtx.clearSegments();
} }
if (additionalInfoExpanded) { collapseInfoViewIfExpanded();
collapseAdditionalInfoView();
}
resetAppMode(); resetAppMode();
hideSnapToRoadIcon(); hideSnapToRoadIcon();
if (isInEditMode()) { if (isInEditMode()) {
@ -1961,9 +1957,7 @@ public class MeasurementToolFragment extends BaseOsmAndFragment implements Route
if (!approximationMode || !editingCtx.getCommandManager().update(command)) { if (!approximationMode || !editingCtx.getCommandManager().update(command)) {
editingCtx.getCommandManager().execute(command); editingCtx.getCommandManager().execute(command);
} }
if (additionalInfoExpanded) { collapseInfoViewIfExpanded();
collapseAdditionalInfoView();
}
updateSnapToRoadControls(); updateSnapToRoadControls();
} }
} }
@ -2036,7 +2030,7 @@ public class MeasurementToolFragment extends BaseOsmAndFragment implements Route
return nightMode; return nightMode;
} }
public interface OnUpdateAdditionalInfoListener { public interface OnUpdateInfoListener {
void onUpdateAdditionalInfo(); void onUpdateInfo();
} }
} }

View file

@ -7,12 +7,12 @@ import androidx.recyclerview.widget.RecyclerView;
import net.osmand.plus.R; import net.osmand.plus.R;
import net.osmand.plus.activities.MapActivity; import net.osmand.plus.activities.MapActivity;
import net.osmand.plus.measurementtool.MeasurementToolFragment.OnUpdateAdditionalInfoListener; import net.osmand.plus.measurementtool.MeasurementToolFragment.OnUpdateInfoListener;
import net.osmand.plus.measurementtool.adapter.MeasurementToolAdapter; import net.osmand.plus.measurementtool.adapter.MeasurementToolAdapter;
import net.osmand.plus.routepreparationmenu.cards.BaseCard; import net.osmand.plus.routepreparationmenu.cards.BaseCard;
import net.osmand.plus.views.controls.ReorderItemTouchHelperCallback; import net.osmand.plus.views.controls.ReorderItemTouchHelperCallback;
public class PointsCard extends BaseCard implements OnUpdateAdditionalInfoListener { public class PointsCard extends BaseCard implements OnUpdateInfoListener {
private MeasurementToolAdapter adapter; private MeasurementToolAdapter adapter;
private MeasurementToolFragment fragment; private MeasurementToolFragment fragment;
@ -23,7 +23,7 @@ public class PointsCard extends BaseCard implements OnUpdateAdditionalInfoListen
} }
@Override @Override
public void onUpdateAdditionalInfo() { public void onUpdateInfo() {
if (adapter != null) { if (adapter != null) {
adapter.notifyDataSetChanged(); adapter.notifyDataSetChanged();
} }
@ -31,7 +31,7 @@ public class PointsCard extends BaseCard implements OnUpdateAdditionalInfoListen
@Override @Override
public int getCardLayoutId() { public int getCardLayoutId() {
return R.layout.fragment_measurement_tool_points_list; return R.layout.measurement_tool_points_card;
} }
@Override @Override

View file

@ -45,16 +45,22 @@ import net.osmand.plus.routepreparationmenu.RoutingOptionsHelper.TimeConditional
import net.osmand.plus.routing.RouteProvider; import net.osmand.plus.routing.RouteProvider;
import net.osmand.plus.routing.RoutingHelper; import net.osmand.plus.routing.RoutingHelper;
import net.osmand.plus.settings.backend.ApplicationMode; import net.osmand.plus.settings.backend.ApplicationMode;
import net.osmand.plus.settings.backend.CommonPreference;
import net.osmand.plus.settings.backend.OsmandSettings; import net.osmand.plus.settings.backend.OsmandSettings;
import net.osmand.plus.settings.bottomsheets.ElevationDateBottomSheet;
import net.osmand.plus.settings.fragments.BaseSettingsFragment; import net.osmand.plus.settings.fragments.BaseSettingsFragment;
import net.osmand.router.GeneralRouter; import net.osmand.router.GeneralRouter;
import net.osmand.router.GeneralRouter.RoutingParameter;
import net.osmand.util.Algorithms; import net.osmand.util.Algorithms;
import java.io.File; import java.io.File;
import java.util.Arrays; import java.util.Arrays;
import java.util.List; import java.util.List;
import java.util.Map;
import static net.osmand.plus.routepreparationmenu.RoutingOptionsHelper.DRIVING_STYLE; import static net.osmand.plus.routepreparationmenu.RoutingOptionsHelper.DRIVING_STYLE;
import static net.osmand.plus.settings.fragments.RouteParametersFragment.RELIEF_SMOOTHNESS_FACTOR;
import static net.osmand.router.GeneralRouter.USE_HEIGHT_OBSTACLES;
public class RouteOptionsBottomSheet extends MenuBottomSheetDialogFragment { public class RouteOptionsBottomSheet extends MenuBottomSheetDialogFragment {
@ -68,13 +74,16 @@ public class RouteOptionsBottomSheet extends MenuBottomSheetDialogFragment {
@ColorRes @ColorRes
private int selectedModeColorId; private int selectedModeColorId;
private boolean currentMuteState; private boolean currentMuteState;
private boolean currentUseHeightState;
private MapActivity mapActivity; private MapActivity mapActivity;
StateChangedListener<Boolean> voiceMuteChangeListener; private CommonPreference<Boolean> useHeightPref;
private StateChangedListener<Boolean> voiceMuteChangeListener;
private StateChangedListener<Boolean> useHeightChangeListener;
@Override @Override
public void onCreate(Bundle savedInstanceState) { public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
app = getMyApplication(); app = requiredMyApplication();
settings = app.getSettings(); settings = app.getSettings();
routingHelper = app.getRoutingHelper(); routingHelper = app.getRoutingHelper();
routingOptionsHelper = app.getRoutingOptionsHelper(); routingOptionsHelper = app.getRoutingOptionsHelper();
@ -87,16 +96,13 @@ public class RouteOptionsBottomSheet extends MenuBottomSheetDialogFragment {
updateWhenMuteChanged(); updateWhenMuteChanged();
} }
}; };
useHeightChangeListener = new StateChangedListener<Boolean>() {
@Override
public void stateChanged(Boolean change) {
updateWhenUseHeightChanged();
} }
};
public void updateWhenMuteChanged() { useHeightPref = settings.getCustomRoutingBooleanProperty(USE_HEIGHT_OBSTACLES, false);
if (app != null) {
boolean changedState = app.getSettings().VOICE_MUTE.getModeValue(applicationMode);
if (changedState != currentMuteState) {
currentMuteState = changedState;
updateParameters();
}
}
} }
@Override @Override
@ -139,12 +145,17 @@ public class RouteOptionsBottomSheet extends MenuBottomSheetDialogFragment {
itemWithCompoundButton.setChecked(itemWithCompoundButton.isChecked()); itemWithCompoundButton.setChecked(itemWithCompoundButton.isChecked());
} }
} }
currentUseHeightState = useHeightPref.getModeValue(applicationMode);
currentMuteState = app.getSettings().VOICE_MUTE.getModeValue(applicationMode);
useHeightPref.addListener(useHeightChangeListener);
app.getSettings().VOICE_MUTE.addListener(voiceMuteChangeListener); app.getSettings().VOICE_MUTE.addListener(voiceMuteChangeListener);
} }
@Override @Override
public void onPause() { public void onPause() {
super.onPause(); super.onPause();
useHeightPref.removeListener(useHeightChangeListener);
app.getSettings().VOICE_MUTE.removeListener(voiceMuteChangeListener); app.getSettings().VOICE_MUTE.removeListener(voiceMuteChangeListener);
} }
@ -167,6 +178,24 @@ public class RouteOptionsBottomSheet extends MenuBottomSheetDialogFragment {
} }
} }
public void updateWhenMuteChanged() {
boolean changedState = app.getSettings().VOICE_MUTE.getModeValue(applicationMode);
if (changedState != currentMuteState) {
currentMuteState = changedState;
updateParameters();
updateMenu();
}
}
public void updateWhenUseHeightChanged() {
boolean changedState = useHeightPref.getModeValue(applicationMode);
if (changedState != currentUseHeightState) {
currentUseHeightState = changedState;
updateParameters();
updateMenu();
}
}
private BaseBottomSheetItem createMuteSoundItem(final LocalRoutingParameter optionsItem) { private BaseBottomSheetItem createMuteSoundItem(final LocalRoutingParameter optionsItem) {
boolean active = !routingHelper.getVoiceRouter().isMuteForMode(applicationMode); boolean active = !routingHelper.getVoiceRouter().isMuteForMode(applicationMode);
int selectedModeColor = ContextCompat.getColor(app, selectedModeColorId); int selectedModeColor = ContextCompat.getColor(app, selectedModeColorId);
@ -432,22 +461,21 @@ public class RouteOptionsBottomSheet extends MenuBottomSheetDialogFragment {
builder.setLayoutId(R.layout.bottom_sheet_item_with_switch_56dp); builder.setLayoutId(R.layout.bottom_sheet_item_with_switch_56dp);
if (parameter.routingParameter != null && parameter.routingParameter.getId().equals(GeneralRouter.USE_SHORTEST_WAY)) { if (parameter.routingParameter != null && parameter.routingParameter.getId().equals(GeneralRouter.USE_SHORTEST_WAY)) {
// if short route settings - it should be inverse of fast_route_mode // if short route settings - it should be inverse of fast_route_mode
builder.setChecked(!settings.FAST_ROUTE_MODE.getModeValue(routingHelper.getAppMode())); builder.setChecked(!settings.FAST_ROUTE_MODE.getModeValue(applicationMode));
} else { } else {
builder.setChecked(parameter.isSelected(settings)); builder.setChecked(parameter.isSelected(settings));
} }
builder.setOnClickListener(new View.OnClickListener() { builder.setOnClickListener(new View.OnClickListener() {
@Override @Override
public void onClick(View v) { public void onClick(View v) {
routingOptionsHelper.addNewRouteMenuParameter(applicationMode, parameter); if (USE_HEIGHT_OBSTACLES.equals(parameter.getKey()) && hasReliefParameters()) {
boolean selected = !parameter.isSelected(settings); FragmentManager fm = getFragmentManager();
routingOptionsHelper.applyRoutingParameter(parameter, selected); if (fm != null) {
item[0].setChecked(selected); ElevationDateBottomSheet.showInstance(fm, applicationMode, RouteOptionsBottomSheet.this, false);
int iconId = selected ? parameter.getActiveIconId() : parameter.getDisabledIconId(); }
if (iconId != -1) { } else {
item[0].setIcon(getContentIcon(iconId)); applyParameter(item[0], parameter);
} }
updateMenu();
} }
}); });
} }
@ -459,6 +487,29 @@ public class RouteOptionsBottomSheet extends MenuBottomSheetDialogFragment {
} }
} }
private boolean hasReliefParameters() {
Map<String, RoutingParameter> parameters = app.getRouter(applicationMode).getParameters();
for (Map.Entry<String, RoutingParameter> e : parameters.entrySet()) {
RoutingParameter routingParameter = e.getValue();
if (RELIEF_SMOOTHNESS_FACTOR.equals(routingParameter.getGroup())) {
return true;
}
}
return false;
}
private void applyParameter(BottomSheetItemWithCompoundButton bottomSheetItem, LocalRoutingParameter parameter) {
routingOptionsHelper.addNewRouteMenuParameter(applicationMode, parameter);
boolean selected = !parameter.isSelected(settings);
routingOptionsHelper.applyRoutingParameter(parameter, selected);
bottomSheetItem.setChecked(selected);
int iconId = selected ? parameter.getActiveIconId() : parameter.getDisabledIconId();
if (iconId != -1) {
bottomSheetItem.setIcon(getContentIcon(iconId));
}
updateMenu();
}
private void updateMenu() { private void updateMenu() {
MapActivity mapActivity = getMapActivity(); MapActivity mapActivity = getMapActivity();
if (mapActivity != null) { if (mapActivity != null) {

View file

@ -542,8 +542,8 @@ public class RoutingOptionsHelper {
rp.disabledIconId = R.drawable.ic_action_fuel; rp.disabledIconId = R.drawable.ic_action_fuel;
break; break;
case GeneralRouter.USE_HEIGHT_OBSTACLES: case GeneralRouter.USE_HEIGHT_OBSTACLES:
rp.activeIconId = R.drawable.ic_action_elevation; rp.activeIconId = R.drawable.ic_action_altitude_average;
rp.disabledIconId = R.drawable.ic_action_elevation; rp.disabledIconId = R.drawable.ic_action_altitude_average;
break; break;
case GeneralRouter.AVOID_FERRIES: case GeneralRouter.AVOID_FERRIES:
rp.activeIconId = R.drawable.ic_action_fuel; rp.activeIconId = R.drawable.ic_action_fuel;

View file

@ -287,20 +287,17 @@ public class OsmAndAppCustomization {
if (!connectedAppDir.exists()) { if (!connectedAppDir.exists()) {
connectedAppDir.mkdirs(); connectedAppDir.mkdirs();
} }
OutputStream fout = new FileOutputStream(new File(connectedAppDir, iconName)); OutputStream fout = null;
if (!Algorithms.isEmpty(iconName)) {
fout = new FileOutputStream(new File(connectedAppDir, iconName));
}
try { try {
if (fout != null) {
Algorithms.streamCopy(is, fout); Algorithms.streamCopy(is, fout);
}
} finally { } finally {
try { Algorithms.closeStream(is);
is.close(); Algorithms.closeStream(fout);
} catch (IOException e) {
LOG.error(e);
}
try {
fout.close();
} catch (IOException e) {
LOG.error(e);
}
} }
JSONObject json = new JSONObject(); JSONObject json = new JSONObject();
json.put("", connectedAppDirPath + "/" + iconName); json.put("", connectedAppDirPath + "/" + iconName);
@ -406,8 +403,7 @@ public class OsmAndAppCustomization {
return set.contains(appMode); return set.contains(appMode);
} }
public boolean setNavDrawerLogoWithParams(String imageUri, @Nullable String packageName, public boolean setNavDrawerLogoWithParams(String imageUri, @Nullable String packageName, @Nullable String intent) {
@Nullable String intent) {
return setNavDrawerLogo(imageUri, packageName, intent); return setNavDrawerLogo(imageUri, packageName, intent);
} }

View file

@ -97,7 +97,7 @@ public class OsmandSettings {
private static String CUSTOM_SHARED_PREFERENCES_NAME; private static String CUSTOM_SHARED_PREFERENCES_NAME;
private static final String RENDERER_PREFERENCE_PREFIX = "nrenderer_"; private static final String RENDERER_PREFERENCE_PREFIX = "nrenderer_";
private static final String ROUTING_PREFERENCE_PREFIX = "prouting_"; public static final String ROUTING_PREFERENCE_PREFIX = "prouting_";
/// Settings variables /// Settings variables
private final OsmandApplication ctx; private final OsmandApplication ctx;

View file

@ -481,24 +481,19 @@ public class SettingsHelper {
return getFilteredSettingsItems(typesMap, settingsTypes); return getFilteredSettingsItems(typesMap, settingsTypes);
} }
public List<SettingsItem> getFilteredSettingsItems(Map<ExportSettingsType, List<?>> additionalData, public List<SettingsItem> getFilteredSettingsItems(Map<ExportSettingsType, List<?>> allSettingsMap,
List<ExportSettingsType> settingsTypes) { List<ExportSettingsType> settingsTypes) {
List<SettingsItem> settingsItems = new ArrayList<>(); List<SettingsItem> settingsItems = new ArrayList<>();
for (ExportSettingsType settingsType : settingsTypes) { for (ExportSettingsType settingsType : settingsTypes) {
List<?> settingsDataObjects = additionalData.get(settingsType); List<?> settingsDataObjects = allSettingsMap.get(settingsType);
if (settingsDataObjects != null) { if (settingsDataObjects != null) {
for (Object object : settingsDataObjects) { settingsItems.addAll(prepareSettingsItems(new ArrayList<>(settingsDataObjects)));
if (object instanceof ApplicationModeBean) {
settingsItems.add(new ProfileSettingsItem(app, null, (ApplicationModeBean) object));
}
}
settingsItems.addAll(prepareAdditionalSettingsItems(new ArrayList<>(settingsDataObjects)));
} }
} }
return settingsItems; return settingsItems;
} }
public Map<ExportSettingsCategory, SettingsCategoryItems> getAdditionalData(boolean globalExport) { public Map<ExportSettingsCategory, SettingsCategoryItems> getSettingsByCategory(boolean globalExport) {
Map<ExportSettingsCategory, SettingsCategoryItems> dataList = new LinkedHashMap<>(); Map<ExportSettingsCategory, SettingsCategoryItems> dataList = new LinkedHashMap<>();
Map<ExportSettingsType, List<?>> settingsItems = getSettingsItems(globalExport); Map<ExportSettingsType, List<?>> settingsItems = getSettingsItems(globalExport);
@ -692,7 +687,7 @@ public class SettingsHelper {
return files; return files;
} }
public List<SettingsItem> prepareAdditionalSettingsItems(List<? super Object> data) { public List<SettingsItem> prepareSettingsItems(List<? super Object> data) {
List<SettingsItem> settingsItems = new ArrayList<>(); List<SettingsItem> settingsItems = new ArrayList<>();
List<QuickAction> quickActions = new ArrayList<>(); List<QuickAction> quickActions = new ArrayList<>();
List<PoiUIFilter> poiUIFilters = new ArrayList<>(); List<PoiUIFilter> poiUIFilters = new ArrayList<>();
@ -754,10 +749,7 @@ public class SettingsHelper {
} }
if (!appModeBeans.isEmpty()) { if (!appModeBeans.isEmpty()) {
for (ApplicationModeBean modeBean : appModeBeans) { for (ApplicationModeBean modeBean : appModeBeans) {
ApplicationMode mode = ApplicationMode.valueOfStringKey(modeBean.stringKey, null); settingsItems.add(new ProfileSettingsItem(app, null, modeBean));
if (mode != null) {
settingsItems.add(new ProfileSettingsItem(app, mode));
}
} }
} }
if (!osmNotesPointList.isEmpty()) { if (!osmNotesPointList.isEmpty()) {

View file

@ -9,21 +9,22 @@ import android.view.View;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import androidx.core.content.ContextCompat;
import androidx.fragment.app.Fragment; import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager; import androidx.fragment.app.FragmentManager;
import net.osmand.AndroidUtils; import net.osmand.AndroidUtils;
import net.osmand.PlatformUtil; import net.osmand.PlatformUtil;
import net.osmand.plus.settings.backend.ApplicationMode;
import net.osmand.plus.OsmandApplication; import net.osmand.plus.OsmandApplication;
import net.osmand.plus.settings.backend.BooleanPreference;
import net.osmand.plus.settings.backend.OsmandPreference;
import net.osmand.plus.R; import net.osmand.plus.R;
import net.osmand.plus.UiUtilities; import net.osmand.plus.UiUtilities;
import net.osmand.plus.base.bottomsheetmenu.BaseBottomSheetItem; import net.osmand.plus.base.bottomsheetmenu.BaseBottomSheetItem;
import net.osmand.plus.base.bottomsheetmenu.BottomSheetItemWithCompoundButton; import net.osmand.plus.base.bottomsheetmenu.BottomSheetItemWithCompoundButton;
import net.osmand.plus.base.bottomsheetmenu.BottomSheetItemWithDescription; import net.osmand.plus.base.bottomsheetmenu.BottomSheetItemWithDescription;
import net.osmand.plus.base.bottomsheetmenu.simpleitems.TitleItem; import net.osmand.plus.base.bottomsheetmenu.simpleitems.TitleItem;
import net.osmand.plus.settings.backend.ApplicationMode;
import net.osmand.plus.settings.backend.BooleanPreference;
import net.osmand.plus.settings.backend.OsmandPreference;
import net.osmand.plus.settings.fragments.ApplyQueryType; import net.osmand.plus.settings.fragments.ApplyQueryType;
import net.osmand.plus.settings.fragments.OnConfirmPreferenceChange; import net.osmand.plus.settings.fragments.OnConfirmPreferenceChange;
import net.osmand.plus.settings.fragments.OnPreferenceChanged; import net.osmand.plus.settings.fragments.OnPreferenceChanged;
@ -39,7 +40,7 @@ public class BooleanPreferenceBottomSheet extends BasePreferenceBottomSheet {
@Override @Override
public void createMenuItems(Bundle savedInstanceState) { public void createMenuItems(Bundle savedInstanceState) {
OsmandApplication app = getMyApplication(); final OsmandApplication app = getMyApplication();
if (app == null) { if (app == null) {
return; return;
} }
@ -72,7 +73,7 @@ public class BooleanPreferenceBottomSheet extends BasePreferenceBottomSheet {
.setChecked(checked) .setChecked(checked)
.setTitle(checked ? on : off) .setTitle(checked ? on : off)
.setTitleColorId(checked ? activeColor : disabledColor) .setTitleColorId(checked ? activeColor : disabledColor)
.setCustomView(getCustomButtonView(checked)) .setCustomView(getCustomButtonView(app, getAppMode(), checked, nightMode))
.setOnClickListener(new View.OnClickListener() { .setOnClickListener(new View.OnClickListener() {
@Override @Override
public void onClick(View v) { public void onClick(View v) {
@ -91,7 +92,7 @@ public class BooleanPreferenceBottomSheet extends BasePreferenceBottomSheet {
preferenceBtn[0].setTitle(newValue ? on : off); preferenceBtn[0].setTitle(newValue ? on : off);
preferenceBtn[0].setChecked(newValue); preferenceBtn[0].setChecked(newValue);
preferenceBtn[0].setTitleColorId(newValue ? activeColor : disabledColor); preferenceBtn[0].setTitleColorId(newValue ? activeColor : disabledColor);
updateCustomButtonView(v, newValue); updateCustomButtonView(app, getAppMode(), v, newValue, nightMode);
if (targetFragment instanceof OnPreferenceChanged) { if (targetFragment instanceof OnPreferenceChanged) {
((OnPreferenceChanged) targetFragment).onPreferenceChanged(switchPreference.getKey()); ((OnPreferenceChanged) targetFragment).onPreferenceChanged(switchPreference.getKey());
@ -121,25 +122,24 @@ public class BooleanPreferenceBottomSheet extends BasePreferenceBottomSheet {
return R.string.shared_string_cancel; return R.string.shared_string_cancel;
} }
protected View getCustomButtonView(boolean checked) { protected static View getCustomButtonView(OsmandApplication app, ApplicationMode mode, boolean checked, boolean nightMode) {
View customView = UiUtilities.getInflater(getContext(), nightMode).inflate(R.layout.bottom_sheet_item_preference_switch, null); View customView = UiUtilities.getInflater(app, nightMode).inflate(R.layout.bottom_sheet_item_preference_switch, null);
updateCustomButtonView(customView, checked); updateCustomButtonView(app, mode, customView, checked, nightMode);
return customView; return customView;
} }
protected void updateCustomButtonView(View customView, boolean checked) { protected static void updateCustomButtonView(OsmandApplication app, ApplicationMode mode, View customView, boolean checked, boolean nightMode) {
OsmandApplication app = requiredMyApplication();
Context themedCtx = UiUtilities.getThemedContext(app, nightMode); Context themedCtx = UiUtilities.getThemedContext(app, nightMode);
View buttonView = customView.findViewById(R.id.button_container); View buttonView = customView.findViewById(R.id.button_container);
int colorRes = getAppMode().getIconColorInfo().getColor(nightMode); int colorRes = mode.getIconColorInfo().getColor(nightMode);
int color = checked ? getResolvedColor(colorRes) : AndroidUtils.getColorFromAttr(themedCtx, R.attr.divider_color_basic); int color = checked ? ContextCompat.getColor(themedCtx, colorRes) : AndroidUtils.getColorFromAttr(themedCtx, R.attr.divider_color_basic);
int bgColor = UiUtilities.getColorWithAlpha(color, checked ? 0.1f : 0.5f); int bgColor = UiUtilities.getColorWithAlpha(color, checked ? 0.1f : 0.5f);
int selectedColor = UiUtilities.getColorWithAlpha(color, checked ? 0.3f : 0.5f); int selectedColor = UiUtilities.getColorWithAlpha(color, checked ? 0.3f : 0.5f);
if (Build.VERSION.SDK_INT > Build.VERSION_CODES.LOLLIPOP) {
int bgResId = R.drawable.rectangle_rounded_right; int bgResId = R.drawable.rectangle_rounded_right;
if (Build.VERSION.SDK_INT > Build.VERSION_CODES.LOLLIPOP) {
int selectableResId = R.drawable.ripple_rectangle_rounded_right; int selectableResId = R.drawable.ripple_rectangle_rounded_right;
Drawable bgDrawable = app.getUIUtilities().getPaintedIcon(bgResId, bgColor); Drawable bgDrawable = app.getUIUtilities().getPaintedIcon(bgResId, bgColor);
@ -147,7 +147,6 @@ public class BooleanPreferenceBottomSheet extends BasePreferenceBottomSheet {
Drawable[] layers = {bgDrawable, selectable}; Drawable[] layers = {bgDrawable, selectable};
AndroidUtils.setBackground(buttonView, new LayerDrawable(layers)); AndroidUtils.setBackground(buttonView, new LayerDrawable(layers));
} else { } else {
int bgResId = R.drawable.rectangle_rounded_right;
Drawable bgDrawable = app.getUIUtilities().getPaintedIcon(bgResId, bgColor); Drawable bgDrawable = app.getUIUtilities().getPaintedIcon(bgResId, bgColor);
AndroidUtils.setBackground(buttonView, bgDrawable); AndroidUtils.setBackground(buttonView, bgDrawable);
} }

View file

@ -0,0 +1,234 @@
package net.osmand.plus.settings.bottomsheets;
import android.content.Context;
import android.os.Bundle;
import android.view.View;
import androidx.annotation.NonNull;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import net.osmand.AndroidUtils;
import net.osmand.PlatformUtil;
import net.osmand.plus.OsmandApplication;
import net.osmand.plus.R;
import net.osmand.plus.UiUtilities;
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.simpleitems.DividerSpaceItem;
import net.osmand.plus.base.bottomsheetmenu.simpleitems.LongDescriptionItem;
import net.osmand.plus.base.bottomsheetmenu.simpleitems.TitleItem;
import net.osmand.plus.settings.backend.ApplicationMode;
import net.osmand.plus.settings.backend.CommonPreference;
import net.osmand.plus.settings.fragments.ApplyQueryType;
import net.osmand.plus.settings.fragments.BaseSettingsFragment;
import net.osmand.plus.settings.fragments.OnConfirmPreferenceChange;
import net.osmand.router.GeneralRouter.RoutingParameter;
import org.apache.commons.logging.Log;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import static net.osmand.AndroidUtils.createColorStateList;
import static net.osmand.plus.settings.bottomsheets.BooleanPreferenceBottomSheet.getCustomButtonView;
import static net.osmand.plus.settings.bottomsheets.BooleanPreferenceBottomSheet.updateCustomButtonView;
import static net.osmand.plus.settings.fragments.BaseSettingsFragment.APP_MODE_KEY;
import static net.osmand.plus.settings.fragments.RouteParametersFragment.RELIEF_SMOOTHNESS_FACTOR;
import static net.osmand.plus.settings.fragments.RouteParametersFragment.getRoutingParameterTitle;
import static net.osmand.plus.settings.fragments.RouteParametersFragment.isRoutingParameterSelected;
import static net.osmand.plus.settings.fragments.RouteParametersFragment.updateSelectedParameters;
import static net.osmand.router.GeneralRouter.USE_HEIGHT_OBSTACLES;
public class ElevationDateBottomSheet extends MenuBottomSheetDialogFragment {
public static final String TAG = ElevationDateBottomSheet.class.getSimpleName();
private static final Log LOG = PlatformUtil.getLog(ElevationDateBottomSheet.class);
private OsmandApplication app;
private ApplicationMode appMode;
private List<RoutingParameter> parameters;
private CommonPreference<Boolean> useHeightPref;
private BottomSheetItemWithCompoundButton useHeightButton;
private List<BottomSheetItemWithCompoundButton> reliefFactorButtons = new ArrayList<>();
private int selectedEntryIndex = -1;
private String on;
private String off;
private int activeColor;
private int disabledColor;
private int appModeColor;
@Override
public void onCreate(Bundle savedInstanceState) {
app = requiredMyApplication();
if (savedInstanceState != null) {
appMode = ApplicationMode.valueOfStringKey(savedInstanceState.getString(APP_MODE_KEY), null);
}
super.onCreate(savedInstanceState);
Map<String, RoutingParameter> routingParameterMap = app.getRouter(appMode).getParameters();
RoutingParameter parameter = routingParameterMap.get(USE_HEIGHT_OBSTACLES);
if (parameter != null) {
useHeightPref = app.getSettings().getCustomRoutingBooleanProperty(parameter.getId(), parameter.getDefaultBoolean());
} else {
useHeightPref = app.getSettings().getCustomRoutingBooleanProperty(USE_HEIGHT_OBSTACLES, false);
}
parameters = getReliefParametersForMode(routingParameterMap);
for (int i = 0; i < parameters.size(); i++) {
if (isRoutingParameterSelected(app.getSettings(), appMode, parameters.get(i))) {
selectedEntryIndex = i;
}
}
}
@Override
public void createMenuItems(Bundle savedInstanceState) {
Context themedCtx = UiUtilities.getThemedContext(requireContext(), nightMode);
on = getString(R.string.shared_string_enable);
off = getString(R.string.shared_string_disable);
appModeColor = appMode.getIconColorInfo().getColor(nightMode);
activeColor = AndroidUtils.resolveAttribute(themedCtx, R.attr.active_color_basic);
disabledColor = AndroidUtils.resolveAttribute(themedCtx, android.R.attr.textColorSecondary);
items.add(new TitleItem(getString(R.string.routing_attr_height_obstacles_name)));
createUseHeightButton(themedCtx);
int contentPaddingSmall = getResources().getDimensionPixelSize(R.dimen.content_padding_small);
items.add(new DividerSpaceItem(app, contentPaddingSmall));
items.add(new LongDescriptionItem(getString(R.string.elevation_data)));
items.add(new DividerSpaceItem(app, contentPaddingSmall));
createReliefFactorButtons(themedCtx);
}
private void createUseHeightButton(Context context) {
boolean checked = useHeightPref.getModeValue(appMode);
useHeightButton = (BottomSheetItemWithCompoundButton) new BottomSheetItemWithCompoundButton.Builder()
.setCompoundButtonColorId(appModeColor)
.setChecked(checked)
.setTitle(checked ? on : off)
.setTitleColorId(checked ? activeColor : disabledColor)
.setCustomView(getCustomButtonView(app, appMode, checked, nightMode))
.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
boolean newValue = !useHeightPref.getModeValue(appMode);
Fragment target = getTargetFragment();
if (target instanceof OnConfirmPreferenceChange) {
OnConfirmPreferenceChange confirmInterface = (OnConfirmPreferenceChange) target;
if (confirmInterface.onConfirmPreferenceChange(useHeightPref.getId(), newValue, ApplyQueryType.NONE)) {
updateUseHeightButton(useHeightButton, newValue);
if (target instanceof BaseSettingsFragment) {
((BaseSettingsFragment) target).updateSetting(useHeightPref.getId());
}
}
} else {
useHeightPref.setModeValue(appMode, newValue);
updateUseHeightButton(useHeightButton, newValue);
}
}
}).create();
items.add(useHeightButton);
}
private void updateUseHeightButton(BottomSheetItemWithCompoundButton button, boolean newValue) {
enableDisableReliefButtons(newValue);
button.setTitle(newValue ? on : off);
button.setChecked(newValue);
button.setTitleColorId(newValue ? activeColor : disabledColor);
updateCustomButtonView(app, appMode, button.getView(), newValue, nightMode);
}
private void createReliefFactorButtons(Context context) {
for (int i = 0; i < parameters.size(); i++) {
RoutingParameter parameter = parameters.get(i);
final BottomSheetItemWithCompoundButton[] preferenceItem = new BottomSheetItemWithCompoundButton[1];
preferenceItem[0] = (BottomSheetItemWithCompoundButton) new BottomSheetItemWithCompoundButton.Builder()
.setChecked(i == selectedEntryIndex)
.setButtonTintList(createColorStateList(context, nightMode))
.setTitle(getRoutingParameterTitle(app, parameter))
.setLayoutId(R.layout.bottom_sheet_item_with_radio_btn_left)
.setTag(i)
.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
selectedEntryIndex = (int) preferenceItem[0].getTag();
if (selectedEntryIndex >= 0) {
RoutingParameter parameter = parameters.get(selectedEntryIndex);
updateSelectedParameters(app, appMode, parameters, parameter.getId());
}
updateReliefButtons();
}
}).create();
items.add(preferenceItem[0]);
reliefFactorButtons.add(preferenceItem[0]);
}
}
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putString(APP_MODE_KEY, appMode.getStringKey());
}
@Override
public void onResume() {
super.onResume();
updateReliefButtons();
enableDisableReliefButtons(useHeightButton.isChecked());
}
@Override
protected boolean isNightMode(@NonNull OsmandApplication app) {
if (usedOnMap) {
return app.getDaynightHelper().isNightModeForMapControlsForProfile(appMode);
} else {
return !app.getSettings().isLightContentForMode(appMode);
}
}
private List<RoutingParameter> getReliefParametersForMode(Map<String, RoutingParameter> parameters) {
List<RoutingParameter> reliefParameters = new ArrayList<>();
for (RoutingParameter routingParameter : parameters.values()) {
if (RELIEF_SMOOTHNESS_FACTOR.equals(routingParameter.getGroup())) {
reliefParameters.add(routingParameter);
}
}
return reliefParameters;
}
private void updateReliefButtons() {
for (BottomSheetItemWithCompoundButton item : reliefFactorButtons) {
item.setChecked(item.getTag().equals(selectedEntryIndex));
}
}
private void enableDisableReliefButtons(boolean enable) {
for (BaseBottomSheetItem item : reliefFactorButtons) {
item.getView().setEnabled(enable);
item.getView().findViewById(R.id.compound_button).setEnabled(enable);
}
}
public static void showInstance(FragmentManager fm, ApplicationMode appMode, Fragment target, boolean usedOnMap) {
try {
if (!fm.isStateSaved() && fm.findFragmentByTag(ElevationDateBottomSheet.TAG) == null) {
ElevationDateBottomSheet fragment = new ElevationDateBottomSheet();
fragment.appMode = appMode;
fragment.setUsedOnMap(usedOnMap);
fragment.setTargetFragment(target, 0);
fragment.show(fm, ScreenTimeoutBottomSheet.TAG);
}
} catch (RuntimeException e) {
LOG.error("showInstance", e);
}
}
}

View file

@ -111,7 +111,7 @@ public class RecalculateRouteInDeviationBottomSheet extends BooleanPreferenceBot
.setCompoundButtonColorId(appModeColorId) .setCompoundButtonColorId(appModeColorId)
.setTitle(enabled ? on : off) .setTitle(enabled ? on : off)
.setTitleColorId(enabled ? activeColor : disabledColor) .setTitleColorId(enabled ? activeColor : disabledColor)
.setCustomView(getCustomButtonView(enabled)) .setCustomView(getCustomButtonView(app, getAppMode(), enabled, nightMode))
.setOnClickListener(new View.OnClickListener() { .setOnClickListener(new View.OnClickListener() {
@Override @Override
public void onClick(View v) { public void onClick(View v) {
@ -123,7 +123,7 @@ public class RecalculateRouteInDeviationBottomSheet extends BooleanPreferenceBot
preferenceBtn[0].setChecked(enabled); preferenceBtn[0].setChecked(enabled);
getDefaultValue(); getDefaultValue();
updateSliderView(); updateSliderView();
updateCustomButtonView(v, enabled); updateCustomButtonView(app, getAppMode(), v, enabled, nightMode);
Fragment target = getTargetFragment(); Fragment target = getTargetFragment();
float newValue = enabled ? DEFAULT_MODE : DISABLE_MODE; float newValue = enabled ? DEFAULT_MODE : DISABLE_MODE;
if (target instanceof OnConfirmPreferenceChange) { if (target instanceof OnConfirmPreferenceChange) {

View file

@ -26,7 +26,7 @@ public class SingleSelectPreferenceBottomSheet extends BasePreferenceBottomSheet
public static final String TAG = SingleSelectPreferenceBottomSheet.class.getSimpleName(); public static final String TAG = SingleSelectPreferenceBottomSheet.class.getSimpleName();
private static final String SELECTED_ENTRY_INDEX_KEY = "selected_entry_index_key"; public static final String SELECTED_ENTRY_INDEX_KEY = "selected_entry_index_key";
private static final String USE_COLLAPSIBLE_DESCRIPTION = "use_collapsible_description"; private static final String USE_COLLAPSIBLE_DESCRIPTION = "use_collapsible_description";
private static final int COLLAPSED_DESCRIPTION_LINES = 4; private static final int COLLAPSED_DESCRIPTION_LINES = 4;

View file

@ -276,7 +276,7 @@ public class ExportItemsBottomSheet extends MenuBottomSheetDialogFragment {
String profileName = modeBean.userProfileName; String profileName = modeBean.userProfileName;
if (Algorithms.isEmpty(profileName)) { if (Algorithms.isEmpty(profileName)) {
ApplicationMode appMode = ApplicationMode.valueOfStringKey(modeBean.stringKey, null); ApplicationMode appMode = ApplicationMode.valueOfStringKey(modeBean.stringKey, null);
profileName = getString(appMode.getNameKeyResource()); profileName = appMode.toHumanString();
} }
builder.setTitle(profileName); builder.setTitle(profileName);

View file

@ -43,12 +43,9 @@ public class ExportSettingsFragment extends BaseSettingsListFragment {
public static final String TAG = ImportSettingsFragment.class.getSimpleName(); public static final String TAG = ImportSettingsFragment.class.getSimpleName();
public static final Log LOG = PlatformUtil.getLog(ImportSettingsFragment.class.getSimpleName()); public static final Log LOG = PlatformUtil.getLog(ImportSettingsFragment.class.getSimpleName());
private static final String EXPORT_SETTINGS_TAG = "import_settings_tag";
private static final String GLOBAL_EXPORT_KEY = "global_export_key"; private static final String GLOBAL_EXPORT_KEY = "global_export_key";
private static final String EXPORT_START_TIME_KEY = "export_start_time_key"; private static final String EXPORT_START_TIME_KEY = "export_start_time_key";
private static final String EXPORTING_STARTED_KEY = "exporting_started_key"; private static final String EXPORTING_STARTED_KEY = "exporting_started_key";
private static final String INCLUDE_ADDITIONAL_DATA_KEY = "include_additional_data_key";
private static final String INCLUDE_GLOBAL_SETTINGS_KEY = "include_global_settings_key";
private static final String PROGRESS_MAX_KEY = "progress_max_key"; private static final String PROGRESS_MAX_KEY = "progress_max_key";
private static final String PROGRESS_VALUE_KEY = "progress_value_key"; private static final String PROGRESS_VALUE_KEY = "progress_value_key";
@ -76,7 +73,7 @@ public class ExportSettingsFragment extends BaseSettingsListFragment {
progressValue = savedInstanceState.getInt(PROGRESS_VALUE_KEY); progressValue = savedInstanceState.getInt(PROGRESS_VALUE_KEY);
} }
exportMode = true; exportMode = true;
dataList = app.getSettingsHelper().getAdditionalData(globalExport); dataList = app.getSettingsHelper().getSettingsByCategory(globalExport);
} }
@Nullable @Nullable
@ -132,7 +129,7 @@ public class ExportSettingsFragment extends BaseSettingsListFragment {
showExportProgressDialog(); showExportProgressDialog();
File tempDir = FileUtils.getTempDir(app); File tempDir = FileUtils.getTempDir(app);
String fileName = getFileName(); String fileName = getFileName();
List<SettingsItem> items = app.getSettingsHelper().prepareAdditionalSettingsItems(adapter.getData()); List<SettingsItem> items = app.getSettingsHelper().prepareSettingsItems(adapter.getData());
progress.setMax(getMaxProgress(items)); progress.setMax(getMaxProgress(items));
app.getSettingsHelper().exportSettings(tempDir, fileName, getSettingsExportListener(), items, true); app.getSettingsHelper().exportSettings(tempDir, fileName, getSettingsExportListener(), items, true);
} }

View file

@ -40,6 +40,7 @@ import androidx.recyclerview.widget.RecyclerView;
import net.osmand.AndroidUtils; import net.osmand.AndroidUtils;
import net.osmand.IndexConstants; import net.osmand.IndexConstants;
import net.osmand.PlatformUtil; import net.osmand.PlatformUtil;
import net.osmand.plus.activities.MapActivity;
import net.osmand.plus.settings.backend.ApplicationMode; import net.osmand.plus.settings.backend.ApplicationMode;
import net.osmand.plus.R; import net.osmand.plus.R;
import net.osmand.plus.settings.backend.backup.ProfileSettingsItem; import net.osmand.plus.settings.backend.backup.ProfileSettingsItem;
@ -873,6 +874,10 @@ public class ProfileAppearanceFragment extends BaseSettingsFragment {
private void customProfileSaved() { private void customProfileSaved() {
FragmentActivity activity = getActivity(); FragmentActivity activity = getActivity();
if (activity != null) { if (activity != null) {
if (activity instanceof MapActivity) {
((MapActivity) activity).getMapLayers().getMapWidgetRegistry().updateVisibleWidgets();
((MapActivity) activity).updateApplicationModeSettings();
}
FragmentManager fragmentManager = activity.getSupportFragmentManager(); FragmentManager fragmentManager = activity.getSupportFragmentManager();
if (!fragmentManager.isStateSaved()) { if (!fragmentManager.isStateSaved()) {
fragmentManager.popBackStack(); fragmentManager.popBackStack();

View file

@ -38,6 +38,7 @@ import net.osmand.plus.settings.backend.BooleanPreference;
import net.osmand.plus.settings.backend.CommonPreference; import net.osmand.plus.settings.backend.CommonPreference;
import net.osmand.plus.settings.backend.OsmandPreference; import net.osmand.plus.settings.backend.OsmandPreference;
import net.osmand.plus.settings.backend.OsmandSettings; import net.osmand.plus.settings.backend.OsmandSettings;
import net.osmand.plus.settings.bottomsheets.ElevationDateBottomSheet;
import net.osmand.plus.settings.bottomsheets.RecalculateRouteInDeviationBottomSheet; import net.osmand.plus.settings.bottomsheets.RecalculateRouteInDeviationBottomSheet;
import net.osmand.plus.settings.preferences.ListPreferenceEx; import net.osmand.plus.settings.preferences.ListPreferenceEx;
import net.osmand.plus.settings.preferences.MultiSelectBooleanPreference; import net.osmand.plus.settings.preferences.MultiSelectBooleanPreference;
@ -54,6 +55,8 @@ import java.util.Map;
import java.util.Set; import java.util.Set;
import static net.osmand.plus.routepreparationmenu.RoutingOptionsHelper.DRIVING_STYLE; import static net.osmand.plus.routepreparationmenu.RoutingOptionsHelper.DRIVING_STYLE;
import static net.osmand.plus.settings.backend.OsmandSettings.ROUTING_PREFERENCE_PREFIX;
import static net.osmand.router.GeneralRouter.USE_HEIGHT_OBSTACLES;
public class RouteParametersFragment extends BaseSettingsFragment implements OnPreferenceChanged { public class RouteParametersFragment extends BaseSettingsFragment implements OnPreferenceChanged {
@ -63,7 +66,7 @@ public class RouteParametersFragment extends BaseSettingsFragment implements OnP
private static final String PREFER_ROUTING_PARAMETER_PREFIX = "prefer_"; private static final String PREFER_ROUTING_PARAMETER_PREFIX = "prefer_";
private static final String ROUTE_PARAMETERS_INFO = "route_parameters_info"; private static final String ROUTE_PARAMETERS_INFO = "route_parameters_info";
private static final String ROUTE_PARAMETERS_IMAGE = "route_parameters_image"; private static final String ROUTE_PARAMETERS_IMAGE = "route_parameters_image";
private static final String RELIEF_SMOOTHNESS_FACTOR = "relief_smoothness_factor"; public static final String RELIEF_SMOOTHNESS_FACTOR = "relief_smoothness_factor";
private static final String ROUTING_SHORT_WAY = "prouting_short_way"; private static final String ROUTING_SHORT_WAY = "prouting_short_way";
private static final String ROUTING_RECALC_DISTANCE = "routing_recalc_distance"; private static final String ROUTING_RECALC_DISTANCE = "routing_recalc_distance";
private static final String ROUTING_RECALC_WRONG_DIRECTION = "disable_wrong_direction_recalc"; private static final String ROUTING_RECALC_WRONG_DIRECTION = "disable_wrong_direction_recalc";
@ -87,13 +90,13 @@ public class RouteParametersFragment extends BaseSettingsFragment implements OnP
booleanRoutingPrefListener = new StateChangedListener<Boolean>() { booleanRoutingPrefListener = new StateChangedListener<Boolean>() {
@Override @Override
public void stateChanged(Boolean change) { public void stateChanged(Boolean change) {
recalculateRoute(); recalculateRoute(app, getSelectedAppMode());
} }
}; };
customRoutingPrefListener = new StateChangedListener<String>() { customRoutingPrefListener = new StateChangedListener<String>() {
@Override @Override
public void stateChanged(String change) { public void stateChanged(String change) {
recalculateRoute(); recalculateRoute(app, getSelectedAppMode());
} }
}; };
} }
@ -275,12 +278,6 @@ public class RouteParametersFragment extends BaseSettingsFragment implements OnP
MultiSelectBooleanPreference preferRouting = createRoutingBooleanMultiSelectPref(PREFER_ROUTING_PARAMETER_PREFIX, title, "", preferParameters); MultiSelectBooleanPreference preferRouting = createRoutingBooleanMultiSelectPref(PREFER_ROUTING_PARAMETER_PREFIX, title, "", preferParameters);
screen.addPreference(preferRouting); screen.addPreference(preferRouting);
} }
if (reliefFactorParameters.size() > 0) {
ListPreferenceEx reliefFactorRouting = createRoutingBooleanListPreference(RELIEF_SMOOTHNESS_FACTOR, reliefFactorParameters);
reliefFactorRouting.setDescription(R.string.relief_smoothness_factor_descr);
screen.addPreference(reliefFactorRouting);
}
for (RoutingParameter p : otherRoutingParameters) { for (RoutingParameter p : otherRoutingParameters) {
String title = AndroidUtils.getRoutingStringPropertyName(app, p.getId(), p.getName()); String title = AndroidUtils.getRoutingStringPropertyName(app, p.getId(), p.getName());
String description = AndroidUtils.getRoutingStringPropertyDescription(app, p.getId(), p.getDescription()); String description = AndroidUtils.getRoutingStringPropertyDescription(app, p.getId(), p.getDescription());
@ -390,6 +387,12 @@ public class RouteParametersFragment extends BaseSettingsFragment implements OnP
if (fragmentManager != null) { if (fragmentManager != null) {
RecalculateRouteInDeviationBottomSheet.showInstance(getFragmentManager(), preference.getKey(), this, false, getSelectedAppMode()); RecalculateRouteInDeviationBottomSheet.showInstance(getFragmentManager(), preference.getKey(), this, false, getSelectedAppMode());
} }
} else if (!reliefFactorParameters.isEmpty() && preference.getKey().equals(ROUTING_PREFERENCE_PREFIX + USE_HEIGHT_OBSTACLES)) {
FragmentManager fragmentManager = getFragmentManager();
if (fragmentManager != null) {
ApplicationMode appMode = getSelectedAppMode();
ElevationDateBottomSheet.showInstance(fragmentManager, appMode, this, false);
}
} else { } else {
super.onDisplayPreferenceDialog(preference); super.onDisplayPreferenceDialog(preference);
} }
@ -531,14 +534,8 @@ public class RouteParametersFragment extends BaseSettingsFragment implements OnP
@Override @Override
public void onApplyPreferenceChange(String prefId, boolean applyToAllProfiles, Object newValue) { public void onApplyPreferenceChange(String prefId, boolean applyToAllProfiles, Object newValue) {
if ((RELIEF_SMOOTHNESS_FACTOR.equals(prefId) || DRIVING_STYLE.equals(prefId)) && newValue instanceof String) { if ((RELIEF_SMOOTHNESS_FACTOR.equals(prefId) || DRIVING_STYLE.equals(prefId)) && newValue instanceof String) {
ApplicationMode appMode = getSelectedAppMode();
String selectedParameterId = (String) newValue;
List<RoutingParameter> routingParameters = DRIVING_STYLE.equals(prefId) ? drivingStyleParameters : reliefFactorParameters; List<RoutingParameter> routingParameters = DRIVING_STYLE.equals(prefId) ? drivingStyleParameters : reliefFactorParameters;
for (RoutingParameter p : routingParameters) { updateSelectedParameters(app, getSelectedAppMode(), routingParameters, (String) newValue);
String parameterId = p.getId();
setRoutingParameterSelected(settings, appMode, parameterId, p.getDefaultBoolean(), parameterId.equals(selectedParameterId));
}
recalculateRoute();
} else if (ROUTING_SHORT_WAY.equals(prefId) && newValue instanceof Boolean) { } else if (ROUTING_SHORT_WAY.equals(prefId) && newValue instanceof Boolean) {
applyPreference(ROUTING_SHORT_WAY, applyToAllProfiles, newValue); applyPreference(ROUTING_SHORT_WAY, applyToAllProfiles, newValue);
applyPreference(settings.FAST_ROUTE_MODE.getId(), applyToAllProfiles, !(Boolean) newValue); applyPreference(settings.FAST_ROUTE_MODE.getId(), applyToAllProfiles, !(Boolean) newValue);
@ -565,7 +562,7 @@ public class RouteParametersFragment extends BaseSettingsFragment implements OnP
@Override @Override
public void onPreferenceChanged(String prefId) { public void onPreferenceChanged(String prefId) {
if (AVOID_ROUTING_PARAMETER_PREFIX.equals(prefId) || PREFER_ROUTING_PARAMETER_PREFIX.equals(prefId)) { if (AVOID_ROUTING_PARAMETER_PREFIX.equals(prefId) || PREFER_ROUTING_PARAMETER_PREFIX.equals(prefId)) {
recalculateRoute(); recalculateRoute(app, getSelectedAppMode());
} }
} }
@ -629,9 +626,9 @@ public class RouteParametersFragment extends BaseSettingsFragment implements OnP
return multiSelectPref; return multiSelectPref;
} }
private void recalculateRoute() { private static void recalculateRoute(OsmandApplication app, ApplicationMode mode) {
RoutingHelper routingHelper = app.getRoutingHelper(); RoutingHelper routingHelper = app.getRoutingHelper();
if (getSelectedAppMode().equals(routingHelper.getAppMode()) if (mode.equals(routingHelper.getAppMode())
&& (routingHelper.isRouteCalculated() || routingHelper.isRouteBeingCalculated())) { && (routingHelper.isRouteCalculated() || routingHelper.isRouteBeingCalculated())) {
routingHelper.recalculateRouteDueToSettingsChange(); routingHelper.recalculateRouteDueToSettingsChange();
} }
@ -645,11 +642,11 @@ public class RouteParametersFragment extends BaseSettingsFragment implements OnP
otherRoutingParameters.clear(); otherRoutingParameters.clear();
} }
private String getRoutingParameterTitle(Context context, RoutingParameter parameter) { public static String getRoutingParameterTitle(Context context, RoutingParameter parameter) {
return AndroidUtils.getRoutingStringPropertyName(context, parameter.getId(), parameter.getName()); return AndroidUtils.getRoutingStringPropertyName(context, parameter.getId(), parameter.getName());
} }
private boolean isRoutingParameterSelected(OsmandSettings settings, ApplicationMode mode, RoutingParameter parameter) { public static boolean isRoutingParameterSelected(OsmandSettings settings, ApplicationMode mode, RoutingParameter parameter) {
CommonPreference<Boolean> property = settings.getCustomRoutingBooleanProperty(parameter.getId(), parameter.getDefaultBoolean()); CommonPreference<Boolean> property = settings.getCustomRoutingBooleanProperty(parameter.getId(), parameter.getDefaultBoolean());
if (mode != null) { if (mode != null) {
return property.getModeValue(mode); return property.getModeValue(mode);
@ -658,7 +655,16 @@ public class RouteParametersFragment extends BaseSettingsFragment implements OnP
} }
} }
private void setRoutingParameterSelected(OsmandSettings settings, ApplicationMode mode, public static void updateSelectedParameters(OsmandApplication app, ApplicationMode mode,
List<RoutingParameter> parameters, String selectedParameterId) {
for (RoutingParameter p : parameters) {
String parameterId = p.getId();
setRoutingParameterSelected(app.getSettings(), mode, parameterId, p.getDefaultBoolean(), parameterId.equals(selectedParameterId));
}
recalculateRoute(app, mode);
}
private static void setRoutingParameterSelected(OsmandSettings settings, ApplicationMode mode,
String parameterId, boolean defaultBoolean, boolean isChecked) { String parameterId, boolean defaultBoolean, boolean isChecked) {
CommonPreference<Boolean> property = settings.getCustomRoutingBooleanProperty(parameterId, defaultBoolean); CommonPreference<Boolean> property = settings.getCustomRoutingBooleanProperty(parameterId, defaultBoolean);
if (mode != null) { if (mode != null) {
@ -678,9 +684,9 @@ public class RouteParametersFragment extends BaseSettingsFragment implements OnP
Drawable disabled = getContentIcon(R.drawable.ic_action_avoid_motorways); Drawable disabled = getContentIcon(R.drawable.ic_action_avoid_motorways);
Drawable enabled = getActiveIcon(R.drawable.ic_action_motorways); Drawable enabled = getActiveIcon(R.drawable.ic_action_motorways);
return getPersistentPrefIcon(enabled, disabled); return getPersistentPrefIcon(enabled, disabled);
case GeneralRouter.USE_HEIGHT_OBSTACLES: case USE_HEIGHT_OBSTACLES:
case RELIEF_SMOOTHNESS_FACTOR: case RELIEF_SMOOTHNESS_FACTOR:
return getPersistentPrefIcon(R.drawable.ic_action_elevation); return getPersistentPrefIcon(R.drawable.ic_action_altitude_average);
case AVOID_ROUTING_PARAMETER_PREFIX: case AVOID_ROUTING_PARAMETER_PREFIX:
return getPersistentPrefIcon(R.drawable.ic_action_alert); return getPersistentPrefIcon(R.drawable.ic_action_alert);
case DRIVING_STYLE: case DRIVING_STYLE:

View file

@ -0,0 +1,183 @@
package net.osmand.plus.widgets;
import android.graphics.Color;
import android.graphics.drawable.GradientDrawable;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.LinearLayout;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.core.content.ContextCompat;
import net.osmand.AndroidUtils;
import net.osmand.plus.OsmandApplication;
import net.osmand.plus.R;
import net.osmand.plus.UiUtilities;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class MultiStateToggleButton {
private List<RadioItem> items = new ArrayList<>();
private OsmandApplication app;
private List<ViewGroup> buttons = new ArrayList<>();
private List<View> dividers = new ArrayList<>();
private RadioItem selectedItem;
private LinearLayout container;
private boolean nightMode;
public MultiStateToggleButton(OsmandApplication app, LinearLayout container, boolean nightMode) {
this.app = app;
this.container = container;
this.nightMode = nightMode;
}
public void setItems(RadioItem firstBtn, RadioItem secondBtn, RadioItem ... other) {
items.clear();
items.add(firstBtn);
items.add(secondBtn);
if (other != null && other.length > 0) {
items.addAll(Arrays.asList(other));
}
initView();
}
private void initView() {
buttons.clear();
dividers.clear();
container.removeAllViews();
for (int i = 0; i < items.size(); i++) {
createBtn(items.get(i));
if (!isLastItem(i)) {
createDivider();
}
}
updateView();
}
private boolean isLastItem(int index) {
return index == items.size() - 1;
}
private void createBtn(@NonNull final RadioItem item) {
LayoutInflater inflater = UiUtilities.getInflater(app, nightMode);
ViewGroup button = (ViewGroup) inflater.inflate(
R.layout.custom_radio_btn_text_item, container, false);
TextView title = button.findViewById(R.id.title);
title.setText(item.getTitle());
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
OnRadioItemClickListener l = item.getListener();
if (l != null && l.onRadioItemClick(item, container)) {
setSelectedItem(item);
}
}
});
buttons.add(button);
container.addView(button);
}
private void createDivider() {
int dividerColor = nightMode ?
R.color.stroked_buttons_and_links_outline_dark :
R.color.stroked_buttons_and_links_outline_light;
int width = AndroidUtils.dpToPx(app, 1.0f);
View divider = new View(app);
divider.setLayoutParams(new ViewGroup.LayoutParams(width, ViewGroup.LayoutParams.MATCH_PARENT));
divider.setBackgroundColor(ContextCompat.getColor(app, dividerColor));
dividers.add(divider);
container.addView(divider);
}
public void setSelectedItem(RadioItem selectedItem) {
this.selectedItem = selectedItem;
updateView();
}
private void updateView() {
int activeColor = ContextCompat.getColor(app, nightMode
? R.color.active_color_primary_dark
: R.color.active_color_primary_light);
int textColor = ContextCompat.getColor(app, nightMode
? R.color.text_color_primary_dark
: R.color.text_color_primary_light);
int radius = AndroidUtils.dpToPx(app, 4);
float[] leftBtnRadii = new float[]{radius, radius, 0, 0, 0, 0, radius, radius};
float[] rightBtnRadii = new float[]{0, 0, radius, radius, radius, radius, 0, 0};
float[] centerBtnRadii = new float[]{0, 0, 0, 0, 0, 0, 0, 0};
boolean isLayoutRtl = AndroidUtils.isLayoutRtl(app);
GradientDrawable background = new GradientDrawable();
background.setColor(UiUtilities.getColorWithAlpha(activeColor, 0.1f));
background.setStroke(AndroidUtils.dpToPx(app, 1), UiUtilities.getColorWithAlpha(activeColor, 0.5f));
showAllDividers();
for (int i = 0; i < items.size(); i++) {
RadioItem item = items.get(i);
ViewGroup container = buttons.get(i);
TextView tvTitle = (TextView) container.findViewById(R.id.title);
if (selectedItem == item) {
if (i == 0) {
background.setCornerRadii(isLayoutRtl ? rightBtnRadii : leftBtnRadii);
hideDividers(0);
} else if (i == items.size() - 1) {
background.setCornerRadii(isLayoutRtl ? leftBtnRadii : rightBtnRadii);
hideDividers(dividers.size() - 1);
} else {
background.setCornerRadii(centerBtnRadii);
hideDividers(i - 1, i);
}
container.setBackgroundDrawable(background);
tvTitle.setTextColor(textColor);
} else {
container.setBackgroundColor(Color.TRANSPARENT);
tvTitle.setTextColor(activeColor);
}
}
}
private void showAllDividers() {
for (View divider : dividers) {
divider.setVisibility(View.VISIBLE);
}
}
private void hideDividers(int ... dividerIndexes) {
for (int dividerIndex : dividerIndexes) {
if (dividerIndex >= 0 && dividerIndex < dividers.size()) {
dividers.get(dividerIndex).setVisibility(View.GONE);
}
}
}
public static class RadioItem {
private String title;
private OnRadioItemClickListener listener;
public RadioItem(String title) {
this.title = title;
}
public void setOnClickListener(OnRadioItemClickListener listener) {
this.listener = listener;
}
public String getTitle() {
return title;
}
public OnRadioItemClickListener getListener() {
return listener;
}
}
public interface OnRadioItemClickListener {
boolean onRadioItemClick(RadioItem radioItem, View view);
}
}

View file

@ -1,5 +1,5 @@
buildscript { buildscript {
ext.kotlin_version = '1.3.11' ext.kotlin_version = '1.4.10'
repositories { repositories {
google() google()
mavenCentral() mavenCentral()
@ -10,8 +10,8 @@ buildscript {
} }
dependencies { dependencies {
//classpath 'com.android.tools.build:gradle:2.+' //classpath 'com.android.tools.build:gradle:2.+'
classpath 'com.android.tools.build:gradle:3.2.1' classpath 'com.android.tools.build:gradle:4.1.1'
classpath 'com.google.gms:google-services:3.0.0' classpath 'com.google.gms:google-services:4.3.4'
classpath 'com.github.dcendents:android-maven-gradle-plugin:2.1' classpath 'com.github.dcendents:android-maven-gradle-plugin:2.1'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
if (gradle.startParameter.taskNames.toString().contains("huawei")) { if (gradle.startParameter.taskNames.toString().contains("huawei")) {
@ -27,7 +27,7 @@ allprojects {
repositories { repositories {
ivy { ivy {
name = "OsmAndBinariesIvy" name = "OsmAndBinariesIvy"
url = "http://builder.osmand.net" url = "https://builder.osmand.net"
layout "pattern", { layout "pattern", {
artifact "ivy/[organisation]/[module]/[revision]/[artifact]-[revision].[ext]" artifact "ivy/[organisation]/[module]/[revision]/[artifact]-[revision].[ext]"
} }

View file

@ -1,5 +1,5 @@
distributionBase=GRADLE_USER_HOME distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-4.6-bin.zip distributionUrl=https\://services.gradle.org/distributions/gradle-6.5-bin.zip
zipStoreBase=GRADLE_USER_HOME zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists zipStorePath=wrapper/dists