Merge branch 'master' of ssh://github.com/osmandapp/Osmand into FavouritesBottomSheetMenu

get changes from master
This commit is contained in:
Chumva 2018-03-15 13:32:17 +02:00
commit fc5674c021
51 changed files with 759 additions and 197 deletions

View file

@ -2,7 +2,6 @@ package net.osmand.util;
import net.osmand.IProgress;
import net.osmand.PlatformUtil;
import net.osmand.binary.BinaryMapIndexReader;
import org.apache.commons.logging.Log;
@ -21,10 +20,12 @@ import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Locale;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
/**
@ -177,6 +178,24 @@ public class Algorithms {
return "";
}
public static Set<String> decodeStringSet(String s) {
if (isEmpty(s)) {
return Collections.emptySet();
}
return new HashSet<>(Arrays.asList(s.split(CHAR_TOSPLIT + "")));
}
public static String encodeStringSet(Set<String> set) {
if (set != null) {
StringBuilder sb = new StringBuilder();
for (String s : set) {
sb.append(s).append(CHAR_TOSPLIT);
}
return sb.toString();
}
return "";
}
public static int findFirstNumberEndIndex(String value) {
int i = 0;
boolean valid = false;

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

View file

@ -0,0 +1,60 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/selectableItemBackground"
android:gravity="center_vertical"
android:minHeight="@dimen/bottom_sheet_selected_item_title_height"
android:paddingLeft="@dimen/content_padding"
android:paddingRight="@dimen/content_padding">
<ImageView
android:id="@+id/icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginEnd="@dimen/bottom_sheet_icon_margin"
android:layout_marginRight="@dimen/bottom_sheet_icon_margin"
tools:src="@drawable/list_destination"/>
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_weight="1"
android:orientation="vertical">
<TextView
android:id="@+id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ellipsize="end"
android:maxLines="1"
android:textAppearance="@style/TextAppearance.ListItemTitle"
tools:text="Some title"/>
<TextView
android:id="@+id/description"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ellipsize="end"
android:maxLines="2"
android:textAppearance="@style/TextAppearance.ContextMenuSubtitle"
tools:text="Some description"/>
</LinearLayout>
<android.support.v7.widget.AppCompatCheckBox
android:id="@+id/compound_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginLeft="@dimen/bottom_sheet_content_margin"
android:layout_marginStart="@dimen/bottom_sheet_content_margin"
android:background="@null"
android:clickable="false"
android:focusable="false"
android:focusableInTouchMode="false"/>
</LinearLayout>

View file

@ -1,6 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
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:layout_width="match_parent"
android:layout_height="wrap_content"
@ -13,7 +14,7 @@
android:layout_height="wrap_content">
<LinearLayout
android:id="@+id/items_container"
android:id="@+id/scrollable_items_container"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
@ -21,29 +22,73 @@
</ScrollView>
<LinearLayout
android:id="@+id/non_scrollable_items_container"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:visibility="gone"/>
<View
android:id="@+id/close_row_divider"
android:id="@+id/bottom_row_divider"
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="?attr/dashboard_divider"/>
<FrameLayout
android:id="@+id/close_row"
<LinearLayout
android:layout_width="match_parent"
android:layout_height="@dimen/bottom_sheet_cancel_button_height"
android:background="?attr/selectableItemBackground">
android:layout_height="@dimen/bottom_sheet_cancel_button_height">
<TextView
android:id="@+id/close_row_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:textAllCaps="true"
android:textColor="?attr/color_dialog_buttons"
android:textSize="@dimen/default_desc_text_size"
android:textStyle="bold"
tools:text="@string/shared_string_cancel"/>
<FrameLayout
android:id="@+id/dismiss_button"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:background="?attr/selectableItemBackground">
</FrameLayout>
<net.osmand.plus.widgets.TextViewEx
android:id="@+id/dismiss_button_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:textAllCaps="true"
android:textColor="?attr/color_dialog_buttons"
android:textSize="@dimen/default_desc_text_size"
osmand:typeface="@string/font_roboto_medium"
tools:text="Cancel"/>
</FrameLayout>
<View
android:id="@+id/bottom_buttons_divider"
android:layout_width="1dp"
android:layout_height="match_parent"
android:background="?attr/dashboard_divider"
android:visibility="gone"
tools:visibility="visible"/>
<FrameLayout
android:id="@+id/right_bottom_button"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:background="?attr/selectableItemBackground"
android:visibility="gone"
tools:visibility="visible">
<net.osmand.plus.widgets.TextViewEx
android:id="@+id/right_bottom_button_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:textAllCaps="true"
android:textColor="?attr/color_dialog_buttons"
android:textSize="@dimen/default_desc_text_size"
osmand:typeface="@string/font_roboto_medium"
tools:text="Some Action"/>
</FrameLayout>
</LinearLayout>
</LinearLayout>

View file

@ -1,41 +1,62 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="@dimen/bottom_sheet_list_item_height"
android:background="?attr/selectableItemBackground"
android:minHeight="@dimen/bottom_sheet_list_item_height"
android:paddingEnd="@dimen/content_padding"
android:paddingLeft="@dimen/content_padding"
android:paddingRight="@dimen/content_padding"
android:paddingStart="@dimen/content_padding"
android:gravity="center_vertical">
<LinearLayout
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:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/selectableItemBackground"
android:gravity="center_vertical"
android:minHeight="@dimen/bottom_sheet_selected_item_title_height"
android:paddingLeft="@dimen/content_padding"
android:paddingRight="@dimen/content_padding">
<ImageView
android:id="@+id/icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/bottom_sheet_icon_margin"
android:layout_marginRight="@dimen/bottom_sheet_icon_margin"
tools:src="@drawable/ic_action_polygom_dark"/>
<ImageView
android:id="@+id/icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/bottom_sheet_icon_margin"
android:layout_marginRight="@dimen/bottom_sheet_icon_margin"
tools:src="@drawable/ic_action_polygom_dark"/>
<TextView
android:id="@+id/name_text"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content"
android:maxLines="1"
android:ellipsize="end"
tools:text="Berlin trip"
android:textAppearance="@style/TextAppearance.ListItemTitle"/>
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_weight="1"
android:orientation="vertical">
<TextView
android:layout_marginLeft="@dimen/bottom_sheet_content_margin"
android:layout_marginStart="@dimen/bottom_sheet_content_margin"
android:id="@+id/number_count_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:maxLines="1"
tools:text="25"
android:textAppearance="@style/TextAppearance.ListItemTitle"/>
</LinearLayout>
<TextView
android:id="@+id/name_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ellipsize="end"
android:maxLines="1"
android:textAppearance="@style/TextAppearance.ListItemTitle"
tools:text="Some title"/>
<TextView
android:id="@+id/description_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ellipsize="end"
android:maxLines="1"
android:textAppearance="@style/TextAppearance.ContextMenuSubtitle"
android:visibility="gone"
tools:text="Some description"
tools:visibility="visible"/>
</LinearLayout>
<net.osmand.plus.widgets.TextViewEx
android:id="@+id/number_count_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/bottom_sheet_content_margin"
android:layout_marginStart="@dimen/bottom_sheet_content_margin"
android:ellipsize="end"
android:maxLines="1"
android:textColor="?attr/color_dialog_buttons"
android:textSize="@dimen/default_list_text_size"
osmand:typeface="@string/font_roboto_medium"
tools:text="25"/>
</LinearLayout>

View file

@ -1,4 +1,5 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?><resources>
<?xml version='1.0' encoding='UTF-8'?>
<resources>
<string name="show_warnings_title">Mostra alertes…</string>
<string name="map_widget_fluorescent">Rutes amb fluorescència</string>
@ -2812,4 +2813,6 @@ Abasta l\'àrea: %1$s x %2$s</string>
<string name="enter_the_file_name">Introduïu el nom del fitxer.</string>
<string name="map_import_error">Error d\'importació del mapa</string>
<string name="map_imported_successfully">Mapa importat correctament</string>
</resources>
<string name="clear_all_intermediates">Esborra tots els punts intermedis</string>
<string name="group_deleted">S\'ha esborrat el grup</string>
</resources>

View file

@ -1,4 +1,5 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?><resources>
<?xml version='1.0' encoding='UTF-8'?>
<resources>
<string name="switch_to_raster_map_to_see">Off-line vektorové mapy toto místo neobsahují. Mapová data můžete stáhnout v Nastavení (Stáhnout mapy), nebo se přepněte na on-line mapy (vyžaduje modul „On-line mapy“).</string>
<string name="send_files_to_osm">Nahrát GPX soubory do OSM?</string>
@ -1459,7 +1460,7 @@ Proporcionální paměť %4$s MB (limit Androidu %5$s MB, Dalvik %6$s MB).</stri
<string name="configure_map">Nastavení mapy</string>
<string name="rendering_category_others">Ostatní vlastnosti mapy</string>
<string name="map_widget_appearance_rem">Zbývající prvky</string>
<string name="search_radius_proximity">Uvnitř</string>
<string name="search_radius_proximity">V okruhu</string>
<string name="rendering_category_routes">Trasy</string>
<string name="rendering_attr_trainLightrailRoutes_name">Vlakové linky</string>
<string name="rendering_attr_tramRoutes_name">Tramvajové linky</string>
@ -2839,4 +2840,5 @@ Zobrazená oblast: %1$s x %2$s</string>
<string name="osmand_plus_extended_description_part7">Přispívejte přímo do OSM • Hlaste chyby v datech • Nahrávejte GPX trasy do OSM přímo z aplikace • Přidávejte body zájmu a rovnou je nahrávejte do OSM (nebo později, pokud jste zrovna offline) • Záznam trasy funguje také na pozadí (když je zařízení v režimu spánku) • OsmAnd je aktivně vyvíjený open-source software. Do aplikace může každý přispět hlášením chyb, vylepšováním překladů nebo programováním nových funkcí. Projekt je živý a neustále se vyvíjí díky této spolupráci mezi vývojáři a uživateli. Vývoj je také závislý na finančních příspěvcích pro programování a testování nových funkcí.</string>
<string name="osmand_plus_extended_description_part8">Přibližné pokrytí a kvalita map: • Západní Evropa: **** • Východní Evropa: *** • Rusko: *** • Severní Amerika: *** • Jižní Amerika: ** • Asie: ** • Japonsko &amp; Korea: *** • Střední Východ: ** • Afrika: ** • Antarktida: * Mapy většiny států na zeměkouli jsou dostupné ke stažení! Od Afghánistánu po Zimbabwe, od Austrálie po USA, Argentinu, Brazílii, Kanadu, Francii, Německo, Mexiko, Spojené království, Španělsko, …</string>
<string name="group_deleted">Skupina smazána</string>
</resources>
<string name="clear_all_intermediates">Smazat všechny mezicíle</string>
</resources>

View file

@ -3792,4 +3792,6 @@
<string name="poi_whitewater_rapid_name">Nomo de kaskado</string>
<string name="poi_outpost">Ricevejo de aĉetaĵoj</string>
</resources>

View file

@ -3838,4 +3838,6 @@
<string name="poi_whitewater_rapid_name">Nombre de los rápidos del río</string>
<string name="poi_outpost">Punto de entrega de la tienda</string>
</resources>

View file

@ -1,4 +1,5 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?><resources>
<?xml version='1.0' encoding='UTF-8'?>
<resources>
<string name="rendering_attr_hideHouseNumbers_name">Números de casa</string>
<string name="copying_osmand_file_failed">Falló al copiar archivos</string>
@ -30,7 +31,7 @@
<string name="mark_to_delete">Marcar para borrar</string>
<string name="local_osm_changes_upload_all_confirm">¿Quieres subir %1$d cambio(s) a OSM?</string>
<string name="confirmation_to_clear_history">¿Quieres vaciar el historial?</string>
<string name="confirmation_to_clear_history">¿Quieres limpiar el historial?</string>
<string name="application_dir_change_warning3">¿Quieres que OsmAnd también copie los archivos de datos al nuevo destino?</string>
<string name="storage_directory">Almacenamiento del mapa</string>
<string name="shared_string_places">Lugares</string>
@ -81,8 +82,8 @@ Lon %2$s</string>
<string name="shared_string_select_all">Marcar todo</string>
<string name="shared_string_deselect">Desmarcar</string>
<string name="shared_string_deselect_all">Desmarcar todo</string>
<string name="shared_string_clear">Borrar</string>
<string name="shared_string_clear_all">Borrar todo</string>
<string name="shared_string_clear">Limpiar</string>
<string name="shared_string_clear_all">Limpiar todo</string>
<string name="shared_string_save">Guardar</string>
<string name="shared_string_save_as_gpx">Guardar como nueva traza GPX</string>
<string name="shared_string_rename">Renombrar</string>
@ -653,7 +654,7 @@ Tanto la ubicación como el tiempo del estacionamiento se muestran en el menú p
<string name="speak_cameras">Radares de velocidad</string>
<string name="speak_traffic_warnings">Avisos de tráfico</string>
<string name="osb_author_or_password_not_specified">Indica el usuario y contraseña de OSM en los ajustes</string>
<string name="clear_intermediate_points">Quitar destinos intermedios</string>
<string name="clear_intermediate_points">Limpiar destinos intermedios</string>
<string name="keep_intermediate_points">Mantener destinos intermedios</string>
<string name="new_directions_point_dialog">Ya definió destinos intermedios.</string>
<string name="context_menu_item_directions_to">Llegar hasta aquí</string>
@ -692,7 +693,7 @@ Tanto la ubicación como el tiempo del estacionamiento se muestran en el menú p
<string name="distance_measurement_start_editing">Comenzar edición</string>
<string name="distance_measurement_finish_editing">Terminar edición</string>
<string name="distance_measurement_finish_subtrack">Iniciar subtraza nueva</string>
<string name="distance_measurement_clear_route">Quitar todos los puntos</string>
<string name="distance_measurement_clear_route">Limpiar todos los puntos</string>
<string name="distance_measurement_load_gpx">Abrir GPX existente</string>
<string name="wait_current_task_finished">Espere hasta que termine la tarea actual</string>
<string name="use_kalman_filter_compass_descr">Reduce el ruido en las lecturas de la brújula pero añade inercia.</string>
@ -705,7 +706,7 @@ Tanto la ubicación como el tiempo del estacionamiento se muestran en el menú p
<string name="install_paid">Versión completa</string>
<string name="cancel_route">Descartar ruta</string>
<string name="cancel_navigation">Parar navegación</string>
<string name="clear_destination">Quitar destino</string>
<string name="clear_destination">Limpiar destino</string>
<string name="download_using_mobile_internet">El Wi-Fi no está conectado en este momento. ¿Usar la conexión actual a Internet para descargar?</string>
<string name="street_name">Nombre de calle</string>
<string name="hno">Número</string>
@ -733,7 +734,7 @@ Tanto la ubicación como el tiempo del estacionamiento se muestran en el menú p
<string name="local_indexes_cat_srtm">Curvas de nivel</string>
<string name="local_indexes_cat_av">Datos multimedia</string>
<string name="stop_routing_confirm">¿Quieres parar la navegación?</string>
<string name="clear_dest_confirm">¿Quieres quitar el destino (y los destinos intermedios)?</string>
<string name="clear_dest_confirm">¿Quieres limpiar el destino (y los destinos intermedios)?</string>
<string name="precise_routing_mode_descr">Habilita el cálculo de rutas precisas sin interferencias. Aún está limitado por la distancia y es lento.</string>
<string name="precise_routing_mode">Enrutado preciso (alfa)</string>
<string name="recording_context_menu_show">Mostrar</string>
@ -2021,7 +2022,7 @@ Tanto la ubicación como el tiempo del estacionamiento se muestran en el menú p
<string name="show_map_markers_description">Activar función de marcadores del mapa.</string>
<string name="clear_active_markers_q">¿Quieres quitar todos los marcadores activos?</string>
<string name="clear_markers_history_q">¿Quieres vaciar el historial de marcadores del mapa?</string>
<string name="clear_markers_history_q">¿Quieres limpiar el historial de marcadores del mapa?</string>
<string name="active_markers">Marcadores activos</string>
<string name="map_markers">Marcadores del mapa</string>
<string name="map_marker">Marcador del mapa</string>
@ -2938,4 +2939,5 @@ Proporciona un código completo</string>
<string name="distance_nearest">Distancia: más cerca primero</string>
<string name="rendering_attr_whiteWaterSports_name">Deportes acuáticos</string>
<string name="group_deleted">Grupo borrado</string>
<string name="clear_all_intermediates">Limpiar todos los puntos intermedios</string>
</resources>

View file

@ -1,4 +1,5 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?><resources>
<?xml version='1.0' encoding='UTF-8'?>
<resources>
<string name="rendering_attr_hideHouseNumbers_name">Números de casa</string>
<string name="copying_osmand_file_failed">Falló al copiar archivos</string>
@ -30,7 +31,7 @@
<string name="mark_to_delete">Marcar para borrar</string>
<string name="local_osm_changes_upload_all_confirm">¿Quieres subir %1$d cambio(s) a OSM?</string>
<string name="confirmation_to_clear_history">¿Quieres vaciar el historial?</string>
<string name="confirmation_to_clear_history">¿Quieres limpiar el historial?</string>
<string name="application_dir_change_warning3">¿Quieres que OsmAnd también copie los archivos de datos al nuevo destino?</string>
<string name="storage_directory">Almacenamiento del mapa</string>
<string name="shared_string_places">Lugares</string>
@ -81,8 +82,8 @@ Lon %2$s</string>
<string name="shared_string_select_all">Marcar todo</string>
<string name="shared_string_deselect">Desmarcar</string>
<string name="shared_string_deselect_all">Desmarcar todo</string>
<string name="shared_string_clear">Borrar</string>
<string name="shared_string_clear_all">Borrar todo</string>
<string name="shared_string_clear">Limpiar</string>
<string name="shared_string_clear_all">Limpiar todo</string>
<string name="shared_string_save">Guardar</string>
<string name="shared_string_save_as_gpx">Guardar como nueva traza GPX</string>
<string name="shared_string_rename">Renombrar</string>
@ -653,7 +654,7 @@ Tanto la ubicación como el tiempo del estacionamiento se muestran en el menú p
<string name="speak_cameras">Radares de velocidad</string>
<string name="speak_traffic_warnings">Avisos de tráfico</string>
<string name="osb_author_or_password_not_specified">Indica el usuario y contraseña de OSM en los ajustes</string>
<string name="clear_intermediate_points">Quitar destinos intermedios</string>
<string name="clear_intermediate_points">Limpiar destinos intermedios</string>
<string name="keep_intermediate_points">Mantener destinos intermedios</string>
<string name="new_directions_point_dialog">Ya definió destinos intermedios.</string>
<string name="context_menu_item_directions_to">Llegar hasta aquí</string>
@ -692,7 +693,7 @@ Tanto la ubicación como el tiempo del estacionamiento se muestran en el menú p
<string name="distance_measurement_start_editing">Comenzar edición</string>
<string name="distance_measurement_finish_editing">Terminar edición</string>
<string name="distance_measurement_finish_subtrack">Iniciar subtraza nueva</string>
<string name="distance_measurement_clear_route">Quitar todos los puntos</string>
<string name="distance_measurement_clear_route">Limpiar todos los puntos</string>
<string name="distance_measurement_load_gpx">Abrir GPX existente</string>
<string name="wait_current_task_finished">Espere hasta que termine la tarea actual</string>
<string name="use_kalman_filter_compass_descr">Reduce el ruido en las lecturas de la brújula pero añade inercia.</string>
@ -705,7 +706,7 @@ Tanto la ubicación como el tiempo del estacionamiento se muestran en el menú p
<string name="install_paid">Versión completa</string>
<string name="cancel_route">Descartar ruta</string>
<string name="cancel_navigation">Parar navegación</string>
<string name="clear_destination">Quitar destino</string>
<string name="clear_destination">Limpiar destino</string>
<string name="download_using_mobile_internet">El Wi-Fi no está conectado en este momento. ¿Usar la conexión actual a Internet para descargar?</string>
<string name="street_name">Nombre de calle</string>
<string name="hno">Número</string>
@ -733,7 +734,7 @@ Tanto la ubicación como el tiempo del estacionamiento se muestran en el menú p
<string name="local_indexes_cat_srtm">Curvas de nivel</string>
<string name="local_indexes_cat_av">Datos multimedia</string>
<string name="stop_routing_confirm">¿Quieres parar la navegación?</string>
<string name="clear_dest_confirm">¿Quieres quitar el destino (y los destinos intermedios)?</string>
<string name="clear_dest_confirm">¿Quieres limpiar el destino (y los destinos intermedios)?</string>
<string name="precise_routing_mode_descr">Habilita el cálculo de rutas precisas sin interferencias. Aún está limitado por la distancia y es lento.</string>
<string name="precise_routing_mode">Enrutado preciso (alfa)</string>
<string name="recording_context_menu_show">Mostrar</string>
@ -838,7 +839,7 @@ Tanto la ubicación como el tiempo del estacionamiento se muestran en el menú p
<string name="poi_filter_for_tourists">Para turistas</string>
<string name="poi_filter_fuel">Combustible</string>
<string name="show_warnings_title">Mostrar alertas…</string>
<string name="show_warnings_descr">Configura avisos de tráfico (límites de velocidad, paradas forzosas, badenes, túneles), radares de velocidad, e información de carriles.</string>
<string name="show_warnings_descr">Configura avisos de tráfico (límites de velocidad, paradas forzosas, lomadas, túneles), radares de velocidad, e información de carriles.</string>
<string name="use_compass_navigation_descr">Usa la brújula cuando no se detecta la dirección.</string>
<string name="use_compass_navigation">Usar brújula</string>
<string name="avoid_motorway">Evitar autopistas</string>
@ -851,7 +852,7 @@ Tanto la ubicación como el tiempo del estacionamiento se muestran en el menú p
<string name="osmand_play_title_30_chars">Navegación y Mapas OsmAnd</string>
<string name="osmand_short_description_80_chars">Visor y navegador móvil global de mapas OSM con y sin conexión</string>
<string name="osmand_long_description_1000_chars">"OsmAnd (OSM Automated Navigation Directions, y en español, Guía de Navegación Automatizada de OSM), es una aplicación de navegación de código abierto con acceso a una amplia variedad de datos globales de OpenStreetMap (OSM). Todos los datos del mapa (vectores y teselas) pueden ser almacenados en la memoria del teléfono para su uso sin conexión. OsmAnd también ofrece funcionalidad de rutas con y sin conexión, incluyendo indicaciones giro-a-giro por voz.
\n
\n
\n Algunas de las funciones fundamentales:
\n - Completa funcionalidad sin conexión (almacena los mapas vectoriales o teselas descargados en la memoria del dispositivo)
\n - Mapas vectoriales compactos disponibles de todo el planeta
@ -869,40 +870,27 @@ Tanto la ubicación como el tiempo del estacionamiento se muestran en el menú p
\n Limitaciones de la versión gratuita de OsmAnd:
\n - Límite del número de mapas descargados
\n - Sin acceso a los PDI descargados de Wikipedia.
\n
\n
\n OsmAnd está siendo desarrollado activamente. Nuestro proyecto y su progreso adicional se basa en contribuciones económicas para financiar el desarrollo y las pruebas de nuevas funcionalidades. Por favor, considera comprar OsmAnd+, financiar nuevas funciones o hacer una donación general en OsmAnd.net."</string>
<string name="osmand_plus_play_title_30_chars">Navegación y Mapas OsmAnd+</string>
<string name="osmand_plus_short_description_80_chars">Visor y navegador móvil global de mapas OSM con y sin conexión</string>
<string name="osmand_plus_long_description_1000_chars">"OsmAnd+ (OSM Automated Navigation Directions, y en español, Guía de Navegación Automatizada de OSM), es una aplicación de navegación de código abierto con acceso a una amplia variedad de datos globales de OpenStreetMap (OSM). Todos los datos del mapa (vectores y teselas), pueden ser almacenados en la memoria del teléfono para su uso sin conexión. OsmAnd también ofrece funcionalidad de rutas con y sin conexión con guía giro-a-giro por voz.
\n
\n
\n OsmAnd+ es la versión de pago de la aplicación, comprándola das soporte al proyecto, financias el desarrollo de nuevas funciones, y recibes las últimas actualizaciones.
\n
\n
\n Algunas de las funciones fundamentales:
\n
\n - Completa funcionalidad sin conexión (guarda los mapas vectoriales o teselas descargados en el almacenamiento del dispositivo)
\n
\n - Mapas mundiales vectoriales compactos disponibles
\n
\n - Descarga ilimitada de mapas de países o regiones directamente desde la aplicación
\n
\n - Posibilidad de superponer varias capas de mapa, como GPX o rutas de navegación, Puntos de Interés, favoritos, curvas de nivel, paradas de transporte público, mapas adicionales con transparencia personalizable
\n
\n - Búsqueda sin conexión de direcciones y lugares (PDI)
\n
\n - Rutas sin conexión para distancias de rango medio
\n
\n
\n - Modos de automóvil, bicicleta y peatón con:
\n
\n - (Opcional) Cambio automático de vista día/noche
\n
\n - (Opcional) Ampliación del mapa según la velocidad
\n
\n - (Opcional) Alineación del mapa, según brújula o dirección del movimiento
\n
\n - (Opcional) Indicación de carriles, mostrar límites de velocidad, voces grabadas y sintetizadas"</string>
<string name="filterpoi_activity">Crear filtro PDI</string>
@ -1103,13 +1091,13 @@ Tanto la ubicación como el tiempo del estacionamiento se muestran en el menú p
<string name="offline_edition_descr">Usa siempre edición sin conexión.</string>
<string name="update_poi_does_not_change_indexes">Los cambios de PDI dentro de la aplicación, no afectan a los archivos del mapa descargados. Estos se guardan en un archivo local.</string>
<string name="local_openstreetmap_uploading">Subiendo…</string>
<string name="local_openstreetmap_were_uploaded">{0} PDI/Notas de OSM subidas</string>
<string name="local_openstreetmap_were_uploaded">{0} PDI/Notas de OSM subidos</string>
<string name="local_openstreetmap_uploadall">Enviar todos</string>
<string name="local_openstreetmap_upload">Enviar cambio a OSM</string>
<string name="local_openstreetmap_delete">Quitar modificación</string>
<string name="local_openstreetmap_descr_title">Edición asíncrona OSM:</string>
<string name="local_openstreetmap_settings">PDI/Notas de OSM guardados localmente</string>
<string name="local_openstreetmap_settings_descr">Muestra y gestiona PDI/notas de OSM guardados en la base de datos local.</string>
<string name="local_openstreetmap_settings_descr">Muestra y gestiona PDI/notas de OSM guardadas en la base de datos local.</string>
<string name="live_monitoring_interval_descr">Indica el intervalo de registro en vivo.</string>
<string name="live_monitoring_interval">Intervalo de registro en vivo</string>
<string name="live_monitoring_url_descr">Indica la dirección web con sintaxis de parámetros : lat={0}, lon={1}, timestamp={2}, hdop={3}, altitude={4}, speed={5}, bearing={6}.</string>
@ -1906,7 +1894,7 @@ Tanto la ubicación como el tiempo del estacionamiento se muestran en el menú p
<string name="osm_edit_commented_note">Nota de OSM comentada</string>
<string name="osm_edit_removed_note">Nota de OSM borrada</string>
<string name="osm_edit_created_note">Nota de OSM creada</string>
<string name="osn_bug_name">Notas de OSM</string>
<string name="osn_bug_name">Nota de OSM</string>
<string name="osn_add_dialog_title">Crear nota</string>
<string name="osn_comment_dialog_title">Añadir comentario</string>
<string name="osn_reopen_dialog_title">Reabrir nota</string>
@ -2034,7 +2022,7 @@ Tanto la ubicación como el tiempo del estacionamiento se muestran en el menú p
<string name="show_map_markers_description">Activar función de marcadores del mapa.</string>
<string name="clear_active_markers_q">¿Quieres quitar todos los marcadores activos?</string>
<string name="clear_markers_history_q">¿Quieres vaciar el historial de marcadores del mapa?</string>
<string name="clear_markers_history_q">¿Quieres limpiar el historial de marcadores del mapa?</string>
<string name="active_markers">Marcadores activos</string>
<string name="map_markers">Marcadores del mapa</string>
<string name="map_marker">Marcador del mapa</string>
@ -2196,7 +2184,7 @@ Si amas a OsmAnd, OSM y quieres apoyarlos, esta es una perfecta manera de hacerl
<string name="route_stops_before">%1$s parada(s) anterior(es)</string>
<string name="rendering_attr_hideOverground_name">Objetos en superficie</string>
<string name="routing_attr_short_way_name">Ruta de menor consumo (corta)</string>
<string name="routing_attr_short_way_name">Ruta de bajo consumo (corta)</string>
<string name="routing_attr_short_way_description">Usa la ruta de menor consumo en combustible (usualmente la más corta).</string>
<string name="replace_favorite_confirmation">¿Quieres reemplazar el favorito «%1$s»?</string>
<string name="shared_string_change">Cambiar</string>
@ -2470,9 +2458,7 @@ Proporciona un código completo</string>
<string name="routing_attr_relief_smoothness_factor_name">Elegir la fluctuación de elevación</string>
<string name="right_side_navigation">Conducir por la derecha</string>
<string name="driving_region_automatic">Automático</string>
<string name="osmand_extended_description_part1">OsmAnd (OSM Automated Navigation Directions, y en español, Guía de Navegación Automatizada de OSM) es una aplicación de mapa y navegación con acceso a los datos libres de OpenStreetMap (OSM), en todo el mundo y de alta calidad.
\n
\n Disfruta del navegador por voz y óptico, la visualización de PDI (puntos de interés), la creación y gestión de trazas GPX, utiliza la información de visualización y la altitud de las curvas de nivel (mediante un complemento), elige entre modos de automóvil, bicicleta o peatón, edita en OSM y mucho más.</string>
<string name="osmand_extended_description_part1">OsmAnd (OSM Automated Navigation Directions, y en español, Guía de Navegación Automatizada de OSM) es una aplicación de mapa y navegación con acceso a los datos libres de OpenStreetMap (OSM), en todo el mundo y de alta calidad. Disfruta del navegador por voz y óptico, la visualización de PDI (puntos de interés), la creación y gestión de trazas GPX, utiliza la información de visualización y la altitud de las curvas de nivel (mediante un complemento), elige entre modos de automóvil, bicicleta o peatón, edita en OSM y mucho más.</string>
<string name="osmand_extended_description_part2">"Navegación GPS
\n • Puedes eligir entre los modos sin conexión (sin cargos de roaming al viajar al extranjero) o en línea (rápido)
\n • La guía por voz giro-a-giro lo guía a lo largo del camino (voces grabadas y sintetizadas)
@ -2485,7 +2471,7 @@ Proporciona un código completo</string>
\n • Soporta puntos intermedios en el itinerario
\n • Puedes grabar tu viaje o subir una traza GPX y seguirla"</string>
<string name="osmand_extended_description_part3">Mapa
\n • Muestra PDI (puntos de interés) cercanos
\n • Muestra de PDI (puntos de interés) cercanos
\n • Ajusta el mapa a la dirección del movimiento (o brújula)
\n • Muestra dónde estás y hacia dónde miras
\n • Comparte la ubicación para que tus amigos te encuentren
@ -2511,7 +2497,8 @@ Proporciona un código completo</string>
\n • Medio Oriente: **
\n • África: **
\n • Antártida: *
\n ¡Más países alrededor del globo están disponibles para descargar! Obtén un navegador confiable en tu país - ya sea Francia, Alemania, México, Reino Unido, España, Países bajos, Estados Unidos, Rusia, Brasil o cualquier otro.</string>
\n ¡Más países alrededor del globo están disponibles para descargar!
\n Obtén un navegador confiable en tu país - ya sea Francia, Alemania, México, Reino Unido, España, Países bajos, Estados Unidos, Rusia, Brasil o cualquier otro.</string>
<string name="osmand_plus_extended_description_part2">"Navegación GPS
\n • Funciona en línea (rápido) o sin conexión (sin cargos de roaming al viajar al extranjero)
\n • Guía por voz giro-a-giro (voces grabadas y sintetizadas)
@ -2524,7 +2511,7 @@ Proporciona un código completo</string>
\n • Muestra tu ubicación y orientación
\n • (Opcional) Ajusta el mapa a la dirección del movimiento (o brújula)
\n • Guarda lugares importantes en Favoritos
\n • Muestra PDI (puntos de interés) cercanos
\n • Muestra de PDI (puntos de interés) cercanos
\n • Muestra teselas en línea especiales, vista satelital (de Bing), diferentes superposiciones como trazas de travesía/navegación GPX y capas adicionales con transparencia personalizable
\n • Permite elegir como mostrar los nombres en el mapa: en inglés, local, u ortografía fonética</string>
<string name="osmand_plus_extended_description_part4">Uso de datos de OSM y Wikipedia
@ -2622,7 +2609,7 @@ Proporciona un código completo</string>
<string name="quick_action_showhide_osmbugs_title">Alternar vista de notas de OSM</string>
<string name="quick_action_osmbugs_show">Mostrar notas de OSM</string>
<string name="quick_action_osmbugs_hide">Ocultar notas de OSM</string>
<string name="quick_action_showhide_osmbugs_descr">Al pulsar el botón de acción se mostrarán u ocultarán los notas de OSM en el mapa.</string>
<string name="quick_action_showhide_osmbugs_descr">Al pulsar el botón de acción se mostrarán u ocultarán las notas de OSM en el mapa.</string>
<string name="sorted_by_distance">Ordenados por distancia</string>
<string name="search_favorites">Buscar favoritos</string>
<string name="restart_search">Reiniciar búsqueda</string>
@ -2659,7 +2646,7 @@ Proporciona un código completo</string>
<string name="mapillary_menu_edit_text_hint">Escribir nombre de usuario</string>
<string name="mapillary_menu_descr_username">Ver sólo imágenes añadidas por</string>
<string name="mapillary_menu_title_username">Nombre de usuario</string>
<string name="mapillary_menu_filter_description">Puedes filtrar imágenes por usuario o por fecha. Los filtros sólo aplican para los primeros acercamientos.</string>
<string name="mapillary_menu_filter_description">Puedes filtrar imágenes por usuario o por fecha. Los filtros sólo aplican en los primeros acercamientos.</string>
<string name="shared_string_reload">Recargar</string>
<string name="mapillary_menu_descr_tile_cache">Recarga las teselas para ver la información actualizada.</string>
<string name="mapillary_menu_title_tile_cache">Caché de teselas</string>
@ -2846,7 +2833,7 @@ Proporciona un código completo</string>
<string name="shared_string_more_without_dots">Más</string>
<string name="empty_state_markers_history">\@string/shared_string_history</string>
<string name="empty_state_osm_edits">Crear o modificar objetos OSM</string>
<string name="empty_state_osm_edits_descr">Crea o modifica puntos de interés, abre o comenta problemas del mapa (notas de OSM), y contribuye con grabaciones GPX.</string>
<string name="empty_state_osm_edits_descr">Crea o modifica puntos de interés, abre o comenta notas de OSM, y contribuye con grabaciones GPX.</string>
<string name="shared_string_deleted">Borrado</string>
<string name="shared_string_edited">Editado</string>
<string name="shared_string_added">Añadido</string>
@ -2906,7 +2893,7 @@ Proporciona un código completo</string>
\n
\n • El tiempo de caminata es consciente del terreno ascendente (regla de Naismith).
\n</string>
<string name="day_off_label">Cerrado (día libre)</string>
<string name="day_off_label">cerrado (día libre)</string>
<string name="winter_and_ski_renderer">Invierno y esquí</string>
<string name="touring_view_renderer">Vista de Touring (contraste y detalles)</string>
<string name="nautical_renderer">Náutico</string>
@ -2928,7 +2915,7 @@ Proporciona un código completo</string>
<string name="last_intermediate_dest_description">Añade la ubicación como último destino intermedio</string>
<string name="first_intermediate_dest_description">Añade la ubicación como primer destino intermedio</string>
<string name="subsequent_dest_description">Mueve el destino hacia arriba y crea un nuevo destino</string>
<string name="make_as_start_point">Establecer como punto de inicio</string>
<string name="make_as_start_point">Reemplazar punto de inicio</string>
<string name="map_import_error">Error de importación del mapa</string>
<string name="map_imported_successfully">Mapa importado correctamente</string>
<string name="enter_the_file_name">Ingresa el nombre del archivo.</string>
@ -2950,4 +2937,6 @@ Proporciona un código completo</string>
<string name="north_abbreviation">N</string>
<string name="optional_point_name">Nombre de punto opcional</string>
<string name="rendering_attr_whiteWaterSports_name">Deportes acuáticos</string>
</resources>
<string name="clear_all_intermediates">Limpiar todos los puntos intermedios</string>
<string name="group_deleted">Grupo borrado</string>
</resources>

View file

@ -1,4 +1,5 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?><resources>
<?xml version='1.0' encoding='UTF-8'?>
<resources>
<string name="local_index_tile_data_zooms">Deskargatutako zoomak: %1$s</string>
<string name="local_index_tile_data_expire">Iraungitze epea (minutuak): %1$s</string>
<string name="local_index_tile_data_downloadable">Deskargagarria: %1$s</string>
@ -2968,4 +2969,5 @@ Area honi dagokio: %1$s x %2$s</string>
<string name="optional_point_name">Aukerazko puntuaren izena</string>
<string name="group_deleted">Taldea ezabatuta</string>
<string name="rendering_attr_whiteWaterSports_name">Ur arinetako kirolak</string>
<string name="clear_all_intermediates">Garbitu tarteko puntu guztiak</string>
</resources>

View file

@ -3312,6 +3312,17 @@
<string name="poi_health_facility_type_nursing_home">Type d\'établissement de santé : soins infirmiers à domicile</string>
<string name="poi_health_facility_type_support_group_home">Type d\'établissement de santé : groupe de soutien à domicile</string>
<string name="poi_health_amenity_type_scales">Échelles publiques</string>
<string name="poi_health_amenity_type_scales">Balances publiques</string>
</resources>
<string name="poi_protection_object_historic">Objet de protection : historique</string>
<string name="poi_protection_object_nature">Objet de protection : nature</string>
<string name="poi_protection_object_habitat">Objet de protection : habitat</string>
<string name="poi_protection_object_water">Objet de protection : eau</string>
<string name="poi_socket_nema_14_30_yes">NEMA 14-30</string>
<string name="poi_socket_nema_14_50_yes">NEMA 14-50</string>
<string name="poi_socket_schuko_yes">Schuko</string>
<string name="poi_socket_bs1363_yes">BS 1363</string>
<string name="poi_whitewater_rapid_name">Nom des rapides</string>
</resources>

View file

@ -1,4 +1,5 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?><resources>
<?xml version='1.0' encoding='UTF-8'?>
<resources>
<string name="offline_edition">Modifications hors-ligne</string>
<string name="offline_edition_descr">Toujours utiliser l\'édition hors-ligne.</string>
@ -3103,4 +3104,5 @@ représentant la zone : %1$s x %2$s</string>
<string name="distance_nearest">Distance : plus proche en premier</string>
<string name="rendering_attr_whiteWaterSports_name">Sports d\'eau douce</string>
<string name="group_deleted">Groupe supprimé</string>
</resources>
<string name="clear_all_intermediates">Effacer toutes les étapes</string>
</resources>

View file

@ -1,4 +1,5 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?><resources><string name="fav_point_dublicate_message">O nome do punto favorito xa está usado; foi cambiado a %1$s para evitar os duplicados.</string>
<?xml version='1.0' encoding='UTF-8'?>
<resources><string name="fav_point_dublicate_message">O nome do punto favorito xa está usado; foi cambiado a %1$s para evitar os duplicados.</string>
<string name="text_size_descr">Configurar o tamaño da letra no mapa.</string>
<string name="text_size">Tamaño da letra</string>
<string name="traffic_warning_speed_limit">Límite de velocidade</string>
@ -2638,4 +2639,83 @@ Pódese pechar esta vista desactivándoa aquí ou cambiando o «Estilo de mapa»
<string name="shared_string_back">Atrás</string>
<string name="view">Ver</string>
<string name="wrong_format">Formato erróneo</string>
</resources>
<string name="clear_all_intermediates">Limpar todos os puntos intermedios</string>
<string name="group_deleted">Grupo eliminado</string>
<string name="rendering_attr_whiteWaterSports_name">Deportes de augas bravas</string>
<string name="distance_farthest">Distancia: o máis distante primeiro</string>
<string name="distance_nearest">Distancia: o máis próximo primeiro</string>
<string name="enter_lon">Introduza a lonxitude</string>
<string name="enter_lat">Introduza a latitude</string>
<string name="enter_lat_and_lon">Introduza a latitude e a lonxitude</string>
<string name="dd_mm_ss_format">GG°MMSS″</string>
<string name="dd_dddddd_format">GG,GGGGGG°</string>
<string name="dd_ddddd_format">GG.GGGGG°</string>
<string name="dd_mm_mmmm_format">GG°MM.MMMM</string>
<string name="dd_mm_mmm_format">GG°MM.MMM</string>
<string name="east_abbreviation">L</string>
<string name="west_abbreviation">O</string>
<string name="south_abbreviation">S</string>
<string name="north_abbreviation">N</string>
<string name="optional_point_name">Nome do punto opcional</string>
<string name="transport_nearby_routes_within">Rutas a menos de</string>
<string name="transport_nearby_routes">PRETO DE</string>
<string name="enter_the_file_name">Introduza o nome do ficheiro.</string>
<string name="map_import_error">Erro de importación de mapa</string>
<string name="map_imported_successfully">Mapa importado correctamente</string>
<string name="make_as_start_point">Tornalo en punto de partida</string>
<string name="shared_string_current">Actual</string>
<string name="last_intermediate_dest_description">Engade a última parada ao longo do percorrido</string>
<string name="first_intermediate_dest_description">Engade a primeira parada do percorrido</string>
<string name="subsequent_dest_description">Subir o destino e crear destino</string>
<string name="switch_osm_notes_visibility_desc">Mostrar/Agochar as Notas de OSM no mapa.</string>
<string name="gpx_file_desc">GPX - adecuado para exportar a JOSM ou outros editores de OSM.</string>
<string name="osc_file_desc">OSC - adecuado para exportar a OpenStreetMap.</string>
<string name="gpx_file">Ficheiro GPX</string>
<string name="osc_file">Ficheiro OSC</string>
<string name="choose_file_type">Escolla o tipo de ficheiro</string>
<string name="osm_edits_export_desc">Seleccione o tipo de exportación: Notas de OSM, PdI ou ambos.</string>
<string name="all_data">Todos os datos</string>
<string name="osm_notes">Notas de OSM</string>
<string name="will_open_tomorrow_at">Abrirá mañá ás</string>
<string name="rendering_attr_hidePOILabels_name">Etiquetas de PdI</string>
<string name="shared_string_without_name">Sen nome</string>
<string name="what_is_here">O que hai aquí:</string>
<string name="parked_at">aparcado en</string>
<string name="pick_up_till">Recoller até ás</string>
<string name="without_time_limit">Sen límite de tempo</string>
<string name="context_menu_read_full_article">Lea o artigo completo</string>
<string name="context_menu_read_article">Lea o artigo</string>
<string name="context_menu_points_of_group">Todos os puntos do grupo</string>
<string name="open_from">Aberto a partir das</string>
<string name="open_till">Aberto até as</string>
<string name="will_close_at">Fechará ás</string>
<string name="will_open_at">Abrirá ás</string>
<string name="will_open_on">Abrirá ás</string>
<string name="additional_actions">Accións adicionais</string>
<string name="av_locations_selected_desc">Ficheiro GPX con coordenadas e datos das notas seleccionadas.</string>
<string name="av_locations_all_desc">Ficheiro GPX con coordenadas e datos de todas as notas.</string>
<string name="modify_the_search_query">Modificar a consulta da busca.</string>
<string name="shared_string_actions">Accións</string>
<string name="shared_string_marker">Marcador</string>
<string name="empty_state_osm_edits">Crear ou modificar obxectos de OSM</string>
<string name="empty_state_osm_edits_descr">Crear ou modificar PdI de OSM, abrir ou comentar Notas de OSM e contribuír con ficheiros GPX gravados.</string>
<string name="shared_string_deleted">Eliminado</string>
<string name="shared_string_edited">Editado</string>
<string name="shared_string_added">Engadido</string>
<string name="marker_activated">Activouse o marcador %s</string>
<string name="one_tap_active_descr">Toque nun marcador do mapa para subilo para a parte superior dos marcadores activos sen abrir o menú de contexto.</string>
<string name="one_tap_active">Activar cun toque</string>
<string name="empty_state_av_notes">Tome notas!</string>
<string name="empty_state_av_notes_desc">Engada unha nota de son, vídeo ou foto a cada punto do mapa empregando o trebello ou o menú de contexto.</string>
<string name="notes_by_date">Notas por data</string>
<string name="by_date">Por data</string>
<string name="by_type">Por tipo</string>
<string name="looking_for_tracks_with_waypoints">Buscando pistas con puntos de pasaxe</string>
<string name="shared_string_more_without_dots">Máis</string>
<string name="add_favourites_group_to_markers_descr">Seleccione unha categoría favorita para engadir aos marcadores.</string>
<string name="favourites_group">Categoría de favoritos</string>
<string name="empty_state_markers_active">Cree marcadores de mapa!</string>
<string name="empty_state_markers_history_desc">Os marcadores marcados como pasados aparecen nesta pantalla.</string>
<string name="tap_on_map_to_hide_interface_descr">Un toque no mapa alterna entre os botóns de control e os trebellos.</string>
<string name="mark_passed">Marcador pasado</string>
</resources>

View file

@ -1,4 +1,5 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?><resources>
<?xml version='1.0' encoding='UTF-8'?>
<resources>
<string name="use_fluorescent_overlays">Sovrapposizioni fluorescenti</string>
<string name="use_fluorescent_overlays_descr">Usa colori fluorescenti per visualizzare tracce e percorsi.</string>
<string name="offline_edition">Modifiche offline</string>
@ -3065,4 +3066,6 @@ Rappresenta l\'area: %1$s x %2$s</string>
<string name="winter_and_ski_renderer">Inverno e sci</string>
<string name="touring_view_renderer">Vista turistica (contrasto e dettagli)</string>
<string name="group_deleted">Gruppo cancellato</string>
<string name="clear_all_intermediates">Cancella tutti i punti intermedi</string>
<string name="osm_recipients_label">Riceventi OSM</string>
</resources>

View file

@ -3741,4 +3741,6 @@
<string name="poi_whitewater_rapid_name">Название речного порога</string>
<string name="poi_outpost">Пункт выдачи заказов</string>
</resources>

View file

@ -1,4 +1,5 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?><resources>
<?xml version='1.0' encoding='UTF-8'?>
<resources>
<string name="av_locations_selected_desc">Файл GPX с координатами и данными выбранных заметок.</string>
<string name="av_locations_all_desc">Файл GPX с координатами и данными всех заметок.</string>
<string name="favorite_empty_place_name">Место</string>
@ -2862,4 +2863,5 @@
<string name="distance_farthest">Расстояние: сначала отдаленная</string>
<string name="distance_nearest">Расстояние: сначала ближайшая</string>
<string name="group_deleted">Группа удалена</string>
<string name="clear_all_intermediates">Очистить все промежуточные точки</string>
</resources>

View file

@ -2967,4 +2967,21 @@
<string name="poi_climbing_trad_yes">Traditzionale: eja</string>
<string name="poi_climbing_ice_yes">Astra: eja</string>
<string name="poi_climbing_ice_no">Astra: nono</string>
<string name="poi_fire_hydrant_type_dry_barrel">Barile sicu</string>
<string name="poi_fire_hydrant_type_pond">Poju</string>
<string name="poi_health_amenity_type_scales">Bilàntzias pùblicas</string>
<string name="poi_health_person_type_assistant">Ruolu de su traballadore sanitàriu: assistente</string>
<string name="poi_health_person_type_healer">Ruolu de su traballadore sanitàriu: sanadore</string>
<string name="poi_health_person_type_midwife">Ruolu de su traballadore sanitàriu: mastra de partu</string>
<string name="poi_health_person_type_nurse">Ruolu de su traballadore sanitàriu: infermieri</string>
<string name="poi_health_person_type_paramedic">Ruolu de su traballadore sanitàriu: paramèigu</string>
<string name="poi_health_person_type_physician">Ruolu de su traballadore sanitàriu: mèigu (dutore)</string>
<string name="poi_health_person_type_podologist">Ruolu de su traballadore sanitàriu: podòlogu</string>
<string name="poi_health_person_type_psychologist">Ruolu de su traballadore sanitàriu: psicòlogu</string>
<string name="poi_health_person_type_therapist">Ruolu de su traballadore sanitàriu: terapèuta</string>
<string name="poi_health_person_type_physician_assitant">Ruolu de su traballadore sanitàriu: assitente de su mèigu</string>
<string name="poi_health_person_type_technician">Ruolu de su traballadore sanitàriu: tècnicu</string>
<string name="poi_health_person_type_witchdoctor">Ruolu de su traballadore sanitàriu: majàrgiu</string>
</resources>

View file

@ -1,4 +1,5 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?><resources>
<?xml version='1.0' encoding='UTF-8'?>
<resources>
<string name="always_center_position_on_map">Ammustra sa positzione semper a su tzentru</string>
<string name="voice_pref_title">Boghe</string>
<string name="misc_pref_title">Mistura</string>
@ -2962,4 +2963,5 @@ Pro praghere iscrie su còdighe intreu</string>
<string name="distance_nearest">Distàntzia: in antis sos prus a curtzu</string>
<string name="rendering_attr_whiteWaterSports_name">Isports de abba durche</string>
<string name="group_deleted">Grupu iscantzelladu</string>
<string name="clear_all_intermediates">Iscantzella totu sos puntos de coladòrgiu</string>
</resources>

View file

@ -1,4 +1,5 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?><resources>
<?xml version='1.0' encoding='UTF-8'?>
<resources>
<string name="about_version">Верзија:</string>
<string name="shared_string_about">Oko</string>
<string name="about_settings_descr">Верзија инфо, лиценце, чланови пројекта</string>
@ -277,7 +278,7 @@
<string name="basemap_missing">Основна мапа света (која покрива цео свет на малом увеличању) недостаје. Молим, преузмите World_basemap_x.obf ради употпуњавање радне средине.</string>
<string name="local_index_installed">Локално издање</string>
<string name="local_index_no_items_to_do">Нема ставки за %1$s</string>
<string name="local_index_descr_title">Управљајте датотекама мапа.</string>
<string name="local_index_descr_title">Управљајте датотекама карата.</string>
<string name="local_index_mi_restore">Покрени</string>
<string name="local_index_mi_backup">Искључи</string>
@ -1400,7 +1401,7 @@
<string name="shared_string_install">Угради</string>
<string name="online_photos">Слике на мрежи</string>
<string name="shared_string_add_photos">Додај слике</string>
<string name="no_photos_descr">Нема слика овог положаја.</string>
<string name="no_photos_descr">Нема слика овог положаја.\\</string>
<string name="mapillary_action_descr">Учествујте својим прегледима на нивоу улица овог положаја са Мапиларом.</string>
<string name="mapillary_widget">Справица Мапилара</string>
<string name="mapillary_widget_descr">Омогућава брзи допринос Мапилару.</string>
@ -2078,4 +2079,175 @@
<string name="toast_empty_name_error">Положај нема име</string>
<string name="tunnel_warning">Тунел испред</string>
<string name="show_tunnels">Тунели</string>
</resources>
<string name="distance_farthest">Удаљеност: прво најудаљенији</string>
<string name="distance_nearest">Удаљеност: прво најближи</string>
<string name="enter_lon">Унесите географску дужину</string>
<string name="enter_lat">Унесите географску ширину</string>
<string name="enter_lat_and_lon">Унесите географску ширину и дужину</string>
<string name="dd_mm_ss_format">DD°MMSS″</string>
<string name="dd_dddddd_format">DD.DDDDDD°</string>
<string name="dd_ddddd_format">DD.DDDDD°</string>
<string name="dd_mm_mmmm_format">DD°MM.MMMM</string>
<string name="dd_mm_mmm_format">DD°MM.MMM</string>
<string name="east_abbreviation">E</string>
<string name="west_abbreviation">W</string>
<string name="south_abbreviation">S</string>
<string name="north_abbreviation">N</string>
<string name="optional_point_name">Опционо име тачке</string>
<string name="enter_the_file_name">Унесите име датотеке.</string>
<string name="map_import_error">Грешка при увожењу карте</string>
<string name="map_imported_successfully">Карта успешно увезена</string>
<string name="download_using_mobile_internet">Бежична мрежа тренутно није доступна. Да ли желите да искористите тренутну интернет везу за преузимање?</string>
<string name="auto_zoom_map">Аутоматско зумирање карте</string>
<string name="snap_to_road_descr">Прилепи позицију за путеве приликом навођења.</string>
<string name="snap_to_road">Прилепи на пут</string>
<string name="starting_point_too_far">Полазна тачка је превише далеко од најближег пута.</string>
<string name="rendering_attr_noPolygons_name">Полигони</string>
<string name="rendering_attr_contourLines_name">Прикажи контурне линије</string>
<string name="offline_navigation_not_available">OsmAnd навигација ван мреже је привремено недоступна.</string>
<string name="maps_could_not_be_downloaded">Ова карта не може да се преузме</string>
<string name="layer_gpx_layer">ГПИкс путања…</string>
<string name="vector_data">Векторске карте ван мреже</string>
<string name="rotate_map_compass_opt">Ка компасу</string>
<string name="rotate_map_bearing_opt">Ка смеру кретања</string>
<string name="thanks_yandex_traffic">Хвала Yandex-у за информације о саобраћају.</string>
<string name="layer_yandex_traffic">Yandex саобраћај</string>
<string name="menu_layers">Слојеви карте</string>
<string name="hide_poi_filter">Сакриј филтер</string>
<string name="show_poi_filter">Прикажи филтер</string>
<string name="search_poi_filter">Филтер</string>
<string name="menu_mute_off">Звук укључен</string>
<string name="menu_mute_on">Звук искључен</string>
<string name="unzipping_file">Отпакивање датотеке…</string>
<string name="route_tr">Скрените десно и наставите</string>
<string name="route_tshr">Скрените оштро десно и наставите</string>
<string name="route_tslr">Скрените благо десно и наставите</string>
<string name="route_tl">Скрените лево и наставите</string>
<string name="route_tshl">Скрените оштро лево и наставите</string>
<string name="route_tsll">Скрените благо лево и наставите</string>
<string name="route_tu">Направите полукружно и наставите</string>
<string name="first_time_continue">Касније</string>
<string name="first_time_download">Скините регионе</string>
<string name="map_orientation_default">Као и уређај</string>
<string name="map_orientation_portrait">Портретна</string>
<string name="map_orientation_landscape">Пејзажна</string>
<string name="map_screen_orientation">Оријентација екрана</string>
<string name="map_screen_orientation_descr">Портретна, пејзажна или као и уређај.</string>
<string name="add_new_rule">Додај ново правило</string>
<string name="show_transport_over_map_description">Прикажи станице јавног превоза на карти.</string>
<string name="show_transport_over_map">Прикажи станице превоза</string>
<string name="search_history_street">Улица: {0}, {1}</string>
<string name="search_history_int_streets">Раскрсница: {0} x {1} у {2}</string>
<string name="search_history_building">Зграда: {0}, {1}, {2}</string>
<string name="favorite">Омиљени</string>
<string name="uploading_data">Отпремам податке…</string>
<string name="uploading">Отпремам…</string>
<string name="search_nothing_found">Ништа није пронађено</string>
<string name="downloading_list_indexes">Преузимам списак доступних региона…</string>
<string name="list_index_files_was_not_loaded">Списак региона није скинута са сајта osmand.net.</string>
<string name="fav_points_edited">Измењена омиљена тачка</string>
<string name="fav_points_not_exist">Нема омиљених тачака</string>
<string name="update_existing">Замени</string>
<string name="follow">Покрени навођење</string>
<string name="mark_final_location_first">Молимо прво одаберите одредиште</string>
<string name="opening_hours">Радно време</string>
<string name="loading_poi_obj">Учитавам тачке од интереса…</string>
<string name="auth_failed">Провера овлашћења није успела</string>
<string name="failed_op">није успела</string>
<string name="converting_names">Претварање изворних/енглеских имена…</string>
<string name="loading_streets_buildings">Учитавање улица/зграда…</string>
<string name="loading_postcodes">Учитавање поштанских бројева…</string>
<string name="loading_streets">Учитавање улица…</string>
<string name="loading_cities">Учитавање градова…</string>
<string name="poi">Тачке од интереса</string>
<string name="error_occurred_saving_gpx">Десила се грешка при чувању ГПИкс датотеке</string>
<string name="arrived_at_destination">Стигли сте на одредиште</string>
<string name="invalid_locations">Координате нису исправне!</string>
<string name="loading_data">Учитавање података…</string>
<string name="reading_indexes">Читање локалних података…</string>
<string name="finished_task">Готово</string>
<string name="use_online_routing">Користите мрежно навођење</string>
<string name="data_settings">Подаци</string>
<string name="additional_settings">Додатне поставке</string>
<string name="update_tile">Ажурирај карту</string>
<string name="use_english_names_descr">Изаберите између изворних или енглеских имена.</string>
<string name="use_english_names">Користи енглеска имена у картама</string>
<string name="app_settings">Поставке апликације</string>
<string name="map_view_3d_descr">Укључи 3D приказ карте.</string>
<string name="map_view_3d">3D приказ карте</string>
<string name="use_internet">Користи интернет</string>
<string name="show_location">Прикажи Вашу позицију</string>
<string name="show_gps_coordinates_text">Прикажи GPS координате на карти</string>
<string name="app_mode_car">Аутомобил</string>
<string name="app_mode_bicycle">Бицикл</string>
<string name="app_mode_pedestrian">Пешак</string>
<string name="navigate_point_latitude">Географска ширина</string>
<string name="navigate_point_longitude">Географска дужина</string>
<string name="navigate_point_format_DM">DDD MM.MM</string>
<string name="navigate_point_format_DMS">DDD MM SS.SS</string>
<string name="search_address_top_text">Изаберите адресу</string>
<string name="search_address_region">Регион</string>
<string name="search_address_city">Град</string>
<string name="search_address_street">Улица</string>
<string name="search_address_building">Зграда</string>
<string name="search_address_building_option">Зграда</string>
<string name="add_favorite_dialog_default_favourite_name">Омиљена</string>
<string name="favourites_context_menu_add">Додај омиљену</string>
<string name="favourites_context_menu_edit">Измени омиљену</string>
<string name="favourites_context_menu_delete">Избриши омиљену</string>
<string name="favourites_remove_dialog_msg">Избриши омиљену тачку \'%s\'?</string>
<string name="favourites_remove_dialog_success">Омиљена тачка {0} је успешно избрисана.</string>
<string name="poi_action_add">додај</string>
<string name="poi_action_change">измени</string>
<string name="poi_action_delete">обриши</string>
<string name="poi_dialog_comment">Коментар</string>
<string name="poi_dialog_reopen">Поново отвори</string>
<string name="filter_current_poiButton">Филтер</string>
<string name="edit_filter_save_as_menu_item">Сачувај као</string>
<string name="email">Е-пошта</string>
<string name="are_you_sure">Да ли сте сигурни?</string>
<string name="unsaved_changes_will_be_lost">Све несачуване измене ће бити изгубљене. Да наставим?</string>
<string name="downloads_left_template">%1$s преосталих скидања</string>
<string name="roads">Путеви</string>
<string name="later">Касније</string>
<string name="downloads">Скидања</string>
<string name="file_size_in_mb">%.1f MB</string>
<string name="enter_country_name">Унесите име државе</string>
<string name="new_version">Нова верзија</string>
<string name="help_us_to_improve_menu_group">Помозите нам да побољшамо OsmAnd</string>
<string name="first_usage_item">Прво коришћење</string>
<string name="faq_item">ЧПП</string>
<string name="faq_item_description">Често постављана питања</string>
<string name="group_deleted">Група избрисана</string>
<string name="rendering_attr_whiteWaterSports_name">Спортови на брзацима</string>
<string name="complex_route_calculation_failed">Брзо израчунавање пута није успело (%s), пребацујем се на споро израчунавање.</string>
<string name="local_index_tile_data_zooms">Скинутих зумирања: %1$s</string>
<string name="driving_region_descr">"Одаберите регион "</string>
<string name="layer_hillshade">Слој са осенченим рељефима</string>
<string name="native_app_allocated_memory">Укупно меморије</string>
<string name="osmand_parking_warning_text">Обавештење да преузмете кола је додато у Ваш календар. Остаће тамо док га ручно не избришете.</string>
<string name="basemap_was_selected_to_download">Основна карта је потребна да би апликација исправно радила и зато је означена за преузимање.</string>
<string name="index_settings_descr">Скидајте и управљајте картама ускладиштеним на Вашем уређају.</string>
<string name="map_online_plugin_is_not_installed">Омогућите додатак за мрежне карте да одаберете различите изворе карата</string>
<string name="map_online_data_descr">Користи мрежне карте (скидај и кеширај сличице на SD картицу).</string>
<string name="online_map_settings_descr">Подеси мрежне или кеширане изворе сличица карата.</string>
<string name="prefs_plugins_descr">Додаци активирају напредна подешавања и додатне функционалности.</string>
<string name="vector_maps_may_display_faster_on_some_devices">Векторске карте се углавном брже приказују. То не значи да ће радити добро на свим уређајима.</string>
<string name="play_commands_of_currently_selected_voice">Одаберите глас и пустите пример навођења да га тестирате</string>
<string name="native_rendering">Уграђено исцртавање</string>
<string name="test_voice_prompts">Тестирај гласовно навођење</string>
<string name="switch_to_raster_map_to_see">Нема векторских карти за овај положај. Можете скинути неку у Подешавањима (Управљање датотекама карата) или се пребаците на мрежне карте (за ово морате да омогућите додатак за мрежне карте).</string>
<string name="send_files_to_osm">Послати ГПИкс датотеке на ОСМ?</string>
<string name="auto_announce_on">Започни аутоматско најављивање</string>
<string name="auto_announce_off">Заустави аутоматско најављивање</string>
<string name="rendering_out_of_memory">Недовољно меморије да се прикаже одабрано подручје</string>
<string name="use_fluorescent_overlays_descr">Користи флуоресцентне боје за приказ путања и путева.</string>
<string name="index_name_voice">Гласовна навођења (снимљена, ограничене функционалности)</string>
<string name="index_name_tts_voice">Гласовна навођења (TTS, синтеза говора, преферирана)</string>
<string name="amenity_type_user_defined">Кориснички одређено</string>
<string name="fav_export_confirmation">Датотека са већ извезеним омиљеним тачкама већ постоји. Да ли желите да је препишете?</string>
<string name="profile_settings">Поставке специфичне за профил</string>
<string name="routing_settings_descr">Одаберите опције навођења.</string>
<string name="index_settings">Управљање датотекама карата</string>
<string name="general_settings_descr">Подесите приказ и опште подешавања апликације.</string>
</resources>

View file

@ -3814,4 +3814,6 @@
<string name="poi_whitewater_rapid_name">激流河的名稱</string>
<string name="poi_outpost">商店的送貨點</string>
</resources>

View file

@ -1,4 +1,5 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?><resources>
<?xml version='1.0' encoding='UTF-8'?>
<resources>
<string name="rendering_attr_roadColors_description">選擇道路的色彩調配:</string>
<string name="rendering_attr_roadColors_name">道路的色彩調配</string>
<string name="map_widget_show_destination_arrow">顯示目的地方向</string>
@ -2978,4 +2979,5 @@
<string name="distance_nearest">距離:最近的第一個</string>
<string name="rendering_attr_whiteWaterSports_name">激流運動</string>
<string name="group_deleted">群組已刪除</string>
</resources>
<string name="clear_all_intermediates">清除所有中轉地點</string>
</resources>

View file

@ -3761,4 +3761,6 @@
<string name="poi_whitewater_rapid_name">Name of the river rapids</string>
<string name="poi_outpost">Shop\'s delivery point</string>
</resources>

View file

@ -15,7 +15,7 @@ import java.util.List;
public class GPXDatabase {
private static final String DB_NAME = "gpx_database";
private static final int DB_VERSION = 6;
private static final int DB_VERSION = 7;
private static final String GPX_TABLE_NAME = "gpxTable";
private static final String GPX_COL_NAME = "fileName";
private static final String GPX_COL_DIR = "fileDir";
@ -47,6 +47,8 @@ public class GPXDatabase {
private static final String GPX_COL_API_IMPORTED = "apiImported";
private static final String GPX_COL_WPT_CATEGORY_NAMES = "wptCategoryNames";
public static final int GPX_SPLIT_TYPE_NO_SPLIT = -1;
public static final int GPX_SPLIT_TYPE_DISTANCE = 1;
public static final int GPX_SPLIT_TYPE_TIME = 2;
@ -77,7 +79,8 @@ public class GPXDatabase {
GPX_COL_FILE_LAST_MODIFIED_TIME + " long, " +
GPX_COL_SPLIT_TYPE + " int, " +
GPX_COL_SPLIT_INTERVAL + " double, " +
GPX_COL_API_IMPORTED + " int);"; // 1 = true, 0 = false
GPX_COL_API_IMPORTED + " int, " + // 1 = true, 0 = false
GPX_COL_WPT_CATEGORY_NAMES + " TEXT);";
private static final String GPX_TABLE_SELECT = "SELECT " +
GPX_COL_NAME + ", " +
@ -102,7 +105,8 @@ public class GPXDatabase {
GPX_COL_FILE_LAST_MODIFIED_TIME + ", " +
GPX_COL_SPLIT_TYPE + ", " +
GPX_COL_SPLIT_INTERVAL + ", " +
GPX_COL_API_IMPORTED +
GPX_COL_API_IMPORTED + ", " +
GPX_COL_WPT_CATEGORY_NAMES +
" FROM " + GPX_TABLE_NAME;
private OsmandApplication context;
@ -244,6 +248,10 @@ public class GPXDatabase {
" SET " + GPX_COL_API_IMPORTED + " = ? " +
"WHERE " + GPX_COL_API_IMPORTED + " IS NULL", new Object[]{0});
}
if (oldVersion < 7) {
db.execSQL("ALTER TABLE " + GPX_TABLE_NAME + " ADD " + GPX_COL_WPT_CATEGORY_NAMES + " TEXT");
}
}
private boolean updateLastModifiedTime(GpxDataItem item) {
@ -382,11 +390,12 @@ public class GPXDatabase {
}
if (a != null) {
db.execSQL(
"INSERT INTO " + GPX_TABLE_NAME + " VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)",
"INSERT INTO " + GPX_TABLE_NAME + " VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)",
new Object[]{ fileName, fileDir, a.totalDistance, a.totalTracks, a.startTime, a.endTime,
a.timeSpan, a.timeMoving, a.totalDistanceMoving, a.diffElevationUp, a.diffElevationDown,
a.avgElevation, a.minElevation, a.maxElevation, a.maxSpeed, a.avgSpeed, a.points, a.wptPoints,
color, item.file.lastModified(), item.splitType, item.splitInterval, item.apiImported ? 1 : 0});
color, item.file.lastModified(), item.splitType, item.splitInterval, item.apiImported ? 1 : 0,
Algorithms.encodeStringSet(item.analysis.wptCategoryNames)});
} else {
db.execSQL("INSERT INTO " + GPX_TABLE_NAME + "(" +
GPX_COL_NAME + ", " +
@ -424,13 +433,14 @@ public class GPXDatabase {
GPX_COL_AVG_SPEED + " = ?, " +
GPX_COL_POINTS + " = ?, " +
GPX_COL_WPT_POINTS + " = ?, " +
GPX_COL_FILE_LAST_MODIFIED_TIME + " = ? " +
GPX_COL_FILE_LAST_MODIFIED_TIME + " = ?, " +
GPX_COL_WPT_CATEGORY_NAMES + " = ? " +
" WHERE " + GPX_COL_NAME + " = ? AND " + GPX_COL_DIR + " = ?",
new Object[]{ a.totalDistance, a.totalTracks, a.startTime, a.endTime,
a.timeSpan, a.timeMoving, a.totalDistanceMoving, a.diffElevationUp,
a.diffElevationDown, a.avgElevation, a.minElevation, a.maxElevation,
a.maxSpeed, a.avgSpeed, a.points, a.wptPoints, item.file.lastModified(),
fileName, fileDir });
Algorithms.encodeStringSet(a.wptCategoryNames), fileName, fileDir });
} finally {
db.close();
}
@ -463,6 +473,7 @@ public class GPXDatabase {
int splitType = (int)query.getInt(20);
double splitInterval = query.getDouble(21);
boolean apiImported = query.getInt(22) == 1;
String wptCategoryNames = query.getString(23);
GPXTrackAnalysis a = new GPXTrackAnalysis();
a.totalDistance = totalDistance;
@ -482,6 +493,9 @@ public class GPXDatabase {
a.avgSpeed = avgSpeed;
a.points = points;
a.wptPoints = wptPoints;
if (wptCategoryNames != null) {
a.wptCategoryNames = Algorithms.decodeStringSet(wptCategoryNames);
}
File dir;
if (!Algorithms.isEmpty(fileDir)) {

View file

@ -42,10 +42,13 @@ import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.Set;
import java.util.Stack;
import java.util.TimeZone;
@ -287,6 +290,8 @@ public class GPXUtilities {
public int points;
public int wptPoints = 0;
public Set<String> wptCategoryNames;
public double metricEnd;
public double secondaryMetricEnd;
public WptPt locationStart;
@ -787,6 +792,22 @@ public class GPXUtilities {
return Collections.unmodifiableList(points);
}
public Map<String, List<WptPt>> getPointsByCategories() {
Map<String, List<WptPt>> res = new HashMap<>();
for (WptPt pt : points) {
String category = pt.category == null ? "" : pt.category;
List<WptPt> list = res.get(category);
if (list != null) {
list.add(pt);
} else {
list = new ArrayList<>();
list.add(pt);
res.put(category, list);
}
}
return res;
}
public boolean isPointsEmpty() {
return points.isEmpty();
}
@ -868,6 +889,7 @@ public class GPXUtilities {
public GPXTrackAnalysis getAnalysis(long fileTimestamp) {
GPXTrackAnalysis g = new GPXTrackAnalysis();
g.wptPoints = points.size();
g.wptCategoryNames = getWaypointCategories(true);
List<SplitSegment> splitSegments = new ArrayList<GPXUtilities.SplitSegment>();
for (int i = 0; i < tracks.size(); i++) {
Track subtrack = tracks.get(i);
@ -1167,14 +1189,12 @@ public class GPXUtilities {
return count;
}
public List<String> getWaypointCategories() {
List<String> categories = new ArrayList<>();
public Set<String> getWaypointCategories(boolean withDefaultCategory) {
Set<String> categories = new HashSet<>();
for (WptPt pt : points) {
String category = pt.category;
if (!TextUtils.isEmpty(category)) {
if (!categories.contains(category)) {
categories.add(category);
}
String category = pt.category == null ? "" : pt.category;
if (withDefaultCategory || !TextUtils.isEmpty(category)) {
categories.add(category);
}
}
return categories;

View file

@ -127,7 +127,7 @@ public class ItemMenuBottomSheetDialogFragment extends MenuBottomSheetDialogFrag
}
@Override
protected int getCloseRowTextId() {
protected int getDismissButtonTextId() {
return R.string.shared_string_close;
}

View file

@ -4,6 +4,7 @@ import android.app.Activity;
import android.graphics.drawable.Drawable;
import android.os.Build;
import android.os.Bundle;
import android.support.annotation.ColorInt;
import android.support.annotation.ColorRes;
import android.support.annotation.DrawableRes;
import android.support.annotation.Nullable;
@ -61,25 +62,49 @@ public abstract class MenuBottomSheetDialogFragment extends BottomSheetDialogFra
final int themeRes = nightMode ? R.style.OsmandDarkTheme : R.style.OsmandLightTheme;
View mainView = View.inflate(new ContextThemeWrapper(app, themeRes), R.layout.bottom_sheet_menu_base, null);
itemsContainer = (LinearLayout) mainView.findViewById(R.id.items_container);
if (useScrollableItemsContainer()) {
itemsContainer = (LinearLayout) mainView.findViewById(R.id.scrollable_items_container);
} else {
mainView.findViewById(R.id.scroll_view).setVisibility(View.GONE);
itemsContainer = (LinearLayout) mainView.findViewById(R.id.non_scrollable_items_container);
itemsContainer.setVisibility(View.VISIBLE);
}
for (BaseBottomSheetItem item : items) {
item.inflate(app, itemsContainer, nightMode);
}
int closeRowDividerColorId = getCloseRowDividerColorId();
if (closeRowDividerColorId != -1) {
mainView.findViewById(R.id.close_row_divider)
.setBackgroundColor(ContextCompat.getColor(getContext(), closeRowDividerColorId));
int bottomDividerColorId = getBottomDividerColorId();
if (bottomDividerColorId != -1) {
mainView.findViewById(R.id.bottom_row_divider).setBackgroundColor(getResolvedColor(bottomDividerColorId));
}
mainView.findViewById(R.id.close_row).setOnClickListener(new View.OnClickListener() {
mainView.findViewById(R.id.dismiss_button).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
onCloseRowClickAction();
onDismissButtonClickAction();
dismiss();
}
});
((TextView) mainView.findViewById(R.id.close_row_text)).setText(getCloseRowTextId());
((TextView) mainView.findViewById(R.id.dismiss_button_text)).setText(getDismissButtonTextId());
int rightBottomButtonTextId = getRightBottomButtonTextId();
if (rightBottomButtonTextId != -1) {
View buttonsDivider = mainView.findViewById(R.id.bottom_buttons_divider);
buttonsDivider.setVisibility(View.VISIBLE);
if (bottomDividerColorId != -1) {
buttonsDivider.setBackgroundColor(getResolvedColor(bottomDividerColorId));
}
View rightButton = mainView.findViewById(R.id.right_bottom_button);
rightButton.setVisibility(View.VISIBLE);
rightButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
onRightBottomButtonClick();
}
});
((TextView) rightButton.findViewById(R.id.right_bottom_button_text)).setText(rightBottomButtonTextId);
}
setupHeightAndBackground(mainView);
@ -123,23 +148,27 @@ public abstract class MenuBottomSheetDialogFragment extends BottomSheetDialogFra
return getIcon(id, nightMode ? R.color.osmand_orange : R.color.color_myloc_distance);
}
@ColorInt
protected int getResolvedColor(@ColorRes int colorId) {
return ContextCompat.getColor(getContext(), colorId);
}
protected void setupHeightAndBackground(final View mainView) {
final Activity activity = getActivity();
final int screenHeight = AndroidUtils.getScreenHeight(activity);
final int statusBarHeight = AndroidUtils.getStatusBarHeight(activity);
final int navBarHeight = AndroidUtils.getNavBarHeight(activity);
final int availableHeight = screenHeight - statusBarHeight - AndroidUtils.getNavBarHeight(activity)
- AndroidUtils.dpToPx(getContext(), 1) // divider height
- getResources().getDimensionPixelSize(R.dimen.bottom_sheet_cancel_button_height); // bottom row height
mainView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
final View scrollView = mainView.findViewById(R.id.scroll_view);
int scrollViewHeight = scrollView.getHeight();
int dividerHeight = AndroidUtils.dpToPx(getContext(), 1);
int cancelButtonHeight = getContext().getResources().getDimensionPixelSize(R.dimen.bottom_sheet_cancel_button_height);
int spaceForScrollView = screenHeight - statusBarHeight - navBarHeight - dividerHeight - cancelButtonHeight;
if (scrollViewHeight > spaceForScrollView) {
scrollView.getLayoutParams().height = spaceForScrollView;
scrollView.requestLayout();
final View viewToAdjust = useScrollableItemsContainer() ? mainView.findViewById(R.id.scroll_view) : itemsContainer;
if (viewToAdjust.getHeight() > availableHeight) {
viewToAdjust.getLayoutParams().height = availableHeight;
viewToAdjust.requestLayout();
}
// 8dp is the shadow height
@ -160,17 +189,30 @@ public abstract class MenuBottomSheetDialogFragment extends BottomSheetDialogFra
});
}
protected boolean useScrollableItemsContainer() {
return true;
}
@ColorRes
protected int getCloseRowDividerColorId() {
protected int getBottomDividerColorId() {
return -1;
}
@StringRes
protected int getCloseRowTextId() {
protected int getDismissButtonTextId() {
return R.string.shared_string_cancel;
}
protected void onCloseRowClickAction() {
protected void onDismissButtonClickAction() {
}
@StringRes
protected int getRightBottomButtonTextId() {
return -1;
}
protected void onRightBottomButtonClick() {
}

View file

@ -2,6 +2,7 @@ package net.osmand.plus.base.bottomsheetmenu;
import android.support.annotation.LayoutRes;
import android.view.ContextThemeWrapper;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
@ -44,7 +45,7 @@ public class BaseBottomSheetItem {
}
public void inflate(OsmandApplication app, ViewGroup container, boolean nightMode) {
View view = getView(app, nightMode);
View view = getView(app, container, nightMode);
if (tag != null) {
view.setTag(tag);
}
@ -61,13 +62,14 @@ public class BaseBottomSheetItem {
}
}
private View getView(OsmandApplication app, boolean nightMode) {
private View getView(OsmandApplication app, ViewGroup parent, boolean nightMode) {
if (view != null) {
return view;
}
if (layoutId != INVALID_ID) {
final int themeRes = nightMode ? R.style.OsmandDarkTheme : R.style.OsmandLightTheme;
return view = View.inflate(new ContextThemeWrapper(app, themeRes), layoutId, null);
return view = LayoutInflater.from(new ContextThemeWrapper(app, themeRes))
.inflate(layoutId, parent, false);
}
throw new RuntimeException("BottomSheetItem must have specified view or layoutId.");
}

View file

@ -17,6 +17,8 @@ public class BottomSheetItemWithCompoundButton extends BottomSheetItemWithDescri
private boolean checked;
private ColorStateList buttonTintList;
private CompoundButton compoundButton;
public BottomSheetItemWithCompoundButton(View customView,
@LayoutRes int layoutId,
Object tag,
@ -45,10 +47,15 @@ public class BottomSheetItemWithCompoundButton extends BottomSheetItemWithDescri
this.buttonTintList = buttonTintList;
}
public void setChecked(boolean checked) {
this.checked = checked;
compoundButton.setChecked(checked);
}
@Override
public void inflate(OsmandApplication app, ViewGroup container, boolean nightMode) {
super.inflate(app, container, nightMode);
CompoundButton compoundButton = (CompoundButton) view.findViewById(R.id.compound_button);
compoundButton = (CompoundButton) view.findViewById(R.id.compound_button);
compoundButton.setChecked(checked);
CompoundButtonCompat.setButtonTintList(compoundButton, buttonTintList);
}

View file

@ -75,7 +75,7 @@ public class AddWaypointBottomSheetDialogFragment extends MenuBottomSheetDialogF
.create();
items.add(replaceStartItem);
items.add(new DividerHalfItem(getContext(), getCloseRowDividerColorId()));
items.add(new DividerHalfItem(getContext(), getBottomDividerColorId()));
BaseBottomSheetItem subsequentDestItem = new BottomSheetItemWithDescription.Builder()
.setDescription(getString(R.string.subsequent_dest_description))
@ -135,7 +135,7 @@ public class AddWaypointBottomSheetDialogFragment extends MenuBottomSheetDialogF
}
@Override
protected int getCloseRowDividerColorId() {
protected int getBottomDividerColorId() {
return nightMode ? R.color.route_info_bottom_view_bg_dark : -1;
}

View file

@ -659,7 +659,9 @@ public class ImportHelper {
fragment.setFileName(fileName);
fragment.setSave(save);
fragment.setUseImportDir(useImportDir);
fragment.show(activity.getSupportFragmentManager(), ImportGpxBottomSheetDialogFragment.TAG);
activity.getSupportFragmentManager().beginTransaction()
.add(fragment, ImportGpxBottomSheetDialogFragment.TAG)
.commitAllowingStateLoss();
}
}
@ -788,10 +790,5 @@ public class ImportHelper {
.create();
items.add(asGpxItem);
}
@ColorInt
private int getResolvedColor(@ColorRes int colorId) {
return ContextCompat.getColor(getContext(), colorId);
}
}
}

View file

@ -1068,7 +1068,7 @@ public class WaypointDialogHelper {
}
@Override
protected int getCloseRowTextId() {
protected int getDismissButtonTextId() {
return R.string.shared_string_close;
}

View file

@ -20,11 +20,9 @@ import net.osmand.plus.IconsCache;
import net.osmand.plus.OsmandApplication;
import net.osmand.plus.R;
import net.osmand.plus.activities.MapActivity;
import net.osmand.plus.quickaction.QuickAction;
import net.osmand.plus.quickaction.QuickActionFactory;
import net.osmand.plus.quickaction.QuickActionRegistry;
import java.util.List;
import java.util.Set;
import static android.util.TypedValue.COMPLEX_UNIT_DIP;
@ -69,7 +67,7 @@ public class SelectCategoryDialogFragment extends DialogFragment {
final FavouritesDbHelper helper = ((OsmandApplication) getActivity().getApplication()).getFavorites();
if (gpxFile != null) {
List<String> categories = gpxFile.getWaypointCategories();
Set<String> categories = gpxFile.getWaypointCategories(false);
for (final String category : categories) {
addCategory(ll, category, 0);
}

View file

@ -77,6 +77,11 @@ public abstract class AddGroupBottomSheetDialogFragment extends MenuBottomSheetD
super.onDestroyView();
}
@Override
protected boolean useScrollableItemsContainer() {
return false;
}
private void showProgressBar() {
mainView.findViewById(R.id.groups_recycler_view).setVisibility(View.GONE);
mainView.findViewById(R.id.progress_bar).setVisibility(View.VISIBLE);

View file

@ -124,7 +124,9 @@ public class AddTracksGroupBottomSheetDialogFragment extends AddGroupBottomSheet
processGPXFolder(gpxFile, sub);
} else if (gpxFile.isFile() && gpxFile.getName().toLowerCase().endsWith(".gpx")) {
GpxDataItem item = processedDataFiles.get(gpxFile);
if (item == null || item.getFileLastModifiedTime() != gpxFile.lastModified()) {
if (item == null
|| item.getFileLastModifiedTime() != gpxFile.lastModified()
|| item.getAnalysis().wptCategoryNames == null) {
GPXFile f = GPXUtilities.loadGPXFile(app, gpxFile);
GPXTrackAnalysis analysis = f.getAnalysis(gpxFile.lastModified());
if (item == null) {

View file

@ -6,7 +6,6 @@ import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.support.annotation.ColorRes;
import android.support.annotation.Nullable;
import android.support.v4.content.ContextCompat;
import android.view.View;
import net.osmand.plus.OsmandSettings;
@ -122,7 +121,7 @@ public class CoordinateInputBottomSheetDialogFragment extends MenuBottomSheetDia
BaseBottomSheetItem formatItem = new BottomSheetItemWithCompoundButton.Builder()
.setChecked(selectedItem)
.setButtonTintList(selectedItem
? ColorStateList.valueOf(ContextCompat.getColor(context, getActiveColorId()))
? ColorStateList.valueOf(getResolvedColor(getActiveColorId()))
: null)
.setIcon(selectedItem ? getActiveIcon(R.drawable.ic_action_coordinates_latitude) : formatIcon)
.setTitle(CoordinateInputFormats.formatToHumanString(context, format))
@ -142,7 +141,7 @@ public class CoordinateInputBottomSheetDialogFragment extends MenuBottomSheetDia
}
@Override
protected int getCloseRowTextId() {
protected int getDismissButtonTextId() {
return R.string.shared_string_close;
}

View file

@ -92,7 +92,7 @@ public class HistoryMarkerMenuBottomSheetDialogFragment extends MenuBottomSheetD
}
@Override
protected int getCloseRowTextId() {
protected int getDismissButtonTextId() {
return R.string.shared_string_close;
}

View file

@ -116,7 +116,7 @@ public class OrderByBottomSheetDialogFragment extends MenuBottomSheetDialogFragm
}
@Override
protected int getCloseRowTextId() {
protected int getDismissButtonTextId() {
return R.string.shared_string_close;
}

View file

@ -121,7 +121,7 @@ public class PlanRouteOptionsBottomSheetDialogFragment extends MenuBottomSheetDi
}
@Override
protected int getCloseRowTextId() {
protected int getDismissButtonTextId() {
return R.string.shared_string_close;
}

View file

@ -60,7 +60,7 @@ public class SelectionMarkersGroupBottomSheetDialogFragment extends MenuBottomSh
}
@Override
protected int getCloseRowTextId() {
protected int getDismissButtonTextId() {
return R.string.shared_string_close;
}

View file

@ -12,11 +12,13 @@ public class MapMarkersGroupViewHolder extends RecyclerView.ViewHolder {
ImageView icon;
TextView name;
TextView numberCount;
TextView description;
public MapMarkersGroupViewHolder(View itemView) {
super(itemView);
icon = itemView.findViewById(R.id.icon);
name = itemView.findViewById(R.id.name_text);
numberCount = itemView.findViewById(R.id.number_count_text);
description = itemView.findViewById(R.id.description_text);
}
}

View file

@ -1,12 +1,16 @@
package net.osmand.plus.mapmarkers.adapters;
import android.content.Context;
import android.support.annotation.Nullable;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import net.osmand.plus.GPXDatabase.GpxDataItem;
import net.osmand.plus.R;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
public class TracksGroupsAdapter extends GroupsAdapter {
@ -29,6 +33,9 @@ public class TracksGroupsAdapter extends GroupsAdapter {
markersGroupViewHolder.icon.setImageDrawable(iconsCache.getThemedIcon(R.drawable.ic_action_polygom_dark));
markersGroupViewHolder.name.setText(gpx.getFile().getName().replace(".gpx", "").replace("/", " ").replace("_", " "));
markersGroupViewHolder.numberCount.setText(String.valueOf(gpx.getAnalysis().wptPoints));
String description = getDescription(gpx);
markersGroupViewHolder.description.setVisibility(description == null ? View.GONE : View.VISIBLE);
markersGroupViewHolder.description.setText(description);
}
}
@ -37,6 +44,26 @@ public class TracksGroupsAdapter extends GroupsAdapter {
return gpxFiles.size() + 1;
}
@Nullable
private String getDescription(GpxDataItem item) {
Set<String> categories = item.getAnalysis().wptCategoryNames;
if (categories != null && !categories.isEmpty() && !(categories.size() == 1 && categories.contains(""))) {
StringBuilder sb = new StringBuilder();
Iterator<String> it = categories.iterator();
while (it.hasNext()) {
String category = it.next();
if (!category.equals("")) {
sb.append(category);
if (it.hasNext()) {
sb.append(", ");
}
}
}
return sb.toString();
}
return null;
}
private GpxDataItem getItem(int position) {
return gpxFiles.get(position - 1);
}

View file

@ -124,7 +124,7 @@ public class OptionsBottomSheetDialogFragment extends MenuBottomSheetDialogFragm
}
@Override
protected int getCloseRowTextId() {
protected int getDismissButtonTextId() {
return R.string.shared_string_close;
}

View file

@ -130,12 +130,12 @@ public class SelectedPointBottomSheetDialogFragment extends MenuBottomSheetDialo
}
@Override
protected int getCloseRowTextId() {
protected int getDismissButtonTextId() {
return R.string.shared_string_close;
}
@Override
protected void onCloseRowClickAction() {
protected void onDismissButtonClickAction() {
if (listener != null) {
listener.onClearSelection();
}

View file

@ -1582,7 +1582,9 @@ public class AvailableGPXFragment extends OsmandExpandableListFragment {
processGPXFolder(gpxFile, sub);
} else if (gpxFile.isFile() && gpxFile.getName().toLowerCase().endsWith(".gpx")) {
GpxDataItem item = processedDataFiles.get(gpxFile);
if (item == null || item.getFileLastModifiedTime() != gpxFile.lastModified()) {
if (item == null
|| item.getFileLastModifiedTime() != gpxFile.lastModified()
|| item.getAnalysis().wptCategoryNames == null) {
GPXFile f = GPXUtilities.loadGPXFile(app, gpxFile);
GPXTrackAnalysis analysis = f.getAnalysis(gpxFile.lastModified());
if (item == null) {

View file

@ -119,7 +119,7 @@ public class OsmEditOptionsBottomSheetDialogFragment extends MenuBottomSheetDial
}
@Override
protected int getCloseRowTextId() {
protected int getDismissButtonTextId() {
return R.string.shared_string_close;
}

View file

@ -4,7 +4,6 @@ import android.app.Dialog;
import android.os.Bundle;
import android.view.View;
import net.osmand.data.LatLon;
import net.osmand.plus.OsmandPlugin;
import net.osmand.plus.R;
import net.osmand.plus.activities.MapActivity;
@ -23,6 +22,7 @@ public class ParkingTypeBottomSheetDialogFragment extends MenuBottomSheetDialogF
@Override
public void createMenuItems(Bundle savedInstanceState) {
items.add(new TitleItem(getString(R.string.parking_options)));
BaseBottomSheetItem byTypeItem = new SimpleBottomSheetItem.Builder()
.setIcon(getContentIcon(R.drawable.ic_action_time_start))
.setTitle(getString(R.string.osmand_parking_no_lim_text))
@ -47,17 +47,18 @@ public class ParkingTypeBottomSheetDialogFragment extends MenuBottomSheetDialogF
}
})
.create();
items.add(byDateItem);
}
private void addParkingPosition(boolean limited) {
Bundle args = getArguments();
double latitude = args.getDouble(LAT_KEY);
double longitude = args.getDouble(LON_KEY);
ParkingPositionPlugin plugin = OsmandPlugin.getEnabledPlugin(ParkingPositionPlugin.class);
MapActivity mapActivity = (MapActivity) getActivity();
if (plugin != null) {
MapActivity mapActivity = (MapActivity) getActivity();
Bundle args = getArguments();
double latitude = args.getDouble(LAT_KEY);
double longitude = args.getDouble(LON_KEY);
if (plugin.isParkingEventAdded()) {
plugin.showDeleteEventWarning(mapActivity);
}