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

This commit is contained in:
Victor Shcherb 2015-09-24 08:53:55 +02:00
commit 5609e89ca1
27 changed files with 238 additions and 134 deletions

View file

@ -117,7 +117,7 @@
android:id="@+id/buttonDivider"
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="?attr/dashboard_divider"/>
android:background="?attr/divider_color"/>
<LinearLayout
android:layout_width="fill_parent"

View file

@ -2096,4 +2096,7 @@
<string name="address_unknown">Адрас пакуль невядомы</string>
<string name="are_you_sure">Вы ўпэўненыя?</string>
<string name="unsaved_changes_will_be_lost">Усе незахаваныя зьмены будуць страчаны. Працягваць?</string>
<string name="simulate_your_location_stop_descr">Спыніць эмуляцыю свайго становішча</string>
<string name="simulate_your_location_descr">Эмуляваць, выкарыстоўваючы запісаны GPX або разьлічаны маршрут</string>
<string name="downloads_left_template">%1$s сьцягваньняў засталося</string>
</resources>

View file

@ -974,7 +974,7 @@
<string name="poi_animal_shelter_bird">Fugleinternat</string>
<string name="poi_shower">Bruser</string>
<string name="poi_recycling_centre">Type: genanvendelse centre</string>
<string name="poi_recycling_centre">Type: genbrugsplads</string>
<string name="poi_recycling_container">Type: container</string>
<string name="poi_recycling_glass">Glas</string>
<string name="poi_recycling_paper">Papir</string>
@ -1370,4 +1370,18 @@
<string name="poi_pump">Pumpe</string>
</resources>
<string name="poi_piste_difficulty_easy">Piste sværhedsgrad: let</string>
<string name="poi_piste_difficulty_intermediate">Piste sværhedsgrad: mellemliggende</string>
<string name="poi_piste_difficulty_advanced">Piste sværhedsgrad: avanceret</string>
<string name="poi_piste_difficulty_novice">Piste sværhedsgrad: nybegynder</string>
<string name="poi_piste_difficulty_expert">Piste sværhedsgrad: ekspert</string>
<string name="poi_piste_difficulty_freeride">Piste sværhedsgrad: freeride</string>
<string name="poi_piste_grooming_classic">Pistepreparering: klassisk</string>
<string name="poi_piste_grooming_classic_skating">Pistepreparering: klassisk+skating</string>
<string name="poi_piste_grooming_backcountry">Pistepreparering: offpiste</string>
<string name="poi_piste_grooming_scooter">Pistepreparering: scooter</string>
<string name="poi_piste_grooming_skating">Pistepreparering: skøjteløb</string>
<string name="poi_piste_grooming_no">Pistepreparering: ingen</string>
<string name="poi_piste_grooming_mogul">Pistepreparering: pukkelpist</string>
</resources>

View file

@ -866,7 +866,7 @@
<string name="transport_search_again">Nulstil transportsøgning</string>
<string name="voice">Indspillet stemme</string>
<string name="voice">Optaget stemme</string>
<string name="no_vector_map_loaded">Vektorkort blev ikke indlæst</string>
<string name="map_route_by_gpx">Naviger med GPX</string>
<string name="gpx_files_not_found">Ingen GPX-filer blev fundet i \'/tracks\' mappen</string>
@ -1125,7 +1125,7 @@
<string name="save_current_track_descr">Gem aktuelle spor til SD-kort nu</string>
<string name="save_current_track">Gem aktuelle GPX-spor</string>
<string name="save_track_interval">Logningsinterval under navigation</string>
<string name="save_track_interval_descr">Vælg logningsinterval for sporregistrering under navigation</string>
<string name="save_track_interval_descr">Vælg logningsinterval for optagelse af spor under navigation</string>
<string name="save_track_to_gpx_descrp">Spor bliver gemt i \'/track\' mappen under navigation</string>
<string name="save_track_to_gpx">Log spor til GPX-fil under navigation</string>
<string name="update_tile">Opdater kort</string>
@ -1713,7 +1713,7 @@
<string name="duration">Varighed</string>
<string name="int_hour">t</string>
<string name="record_plugin_name">Optag ture</string>
<string name="record_plugin_description">"Udvidelsen aktiverer funktionalitet til at registrere og gemme spor ved at klikke på GPX logning modul på kortskærmen, eller også for automatisk at logge alle navigationsruter til en GPX-fil.\n\nOptagede spor kan deles med venner eller anvendes til OSM bidrag. Sportsfolk kan bruge indspillede spor at monitere træninger. Nogle grundlæggende spor analyse kan udføres direkte i OsmAnd, såsom omgangstider, gennemsnitshastighed mv, og spor kan selvfølgelig også senere analyseres i særlige 3. parts analyseværktøjer. "</string>
<string name="record_plugin_description">"Udvidelsen aktiverer funktionalitet til at optage og gemme spor ved at klikke på GPX logning modul på kortskærmen, eller også for automatisk at logge alle navigationsruter til en GPX-fil.\n\nOptagede spor kan deles med venner eller anvendes til OSM bidrag. Sportsfolk kan bruge optagede spor til at monitere træning. Nogle grundlæggende spor analyse kan udføres direkte i OsmAnd, såsom omgangstider, gennemsnitshastighed mv, og spor kan selvfølgelig også senere analyseres i særlige 3. parts analyseværktøjer. "</string>
<string name="rendering_attr_publicTransportMode_name">Bus-, trolleybus-, shuttlebusruter</string>
<string name="save_track_to_gpx_globally">Log spor til GPX-fil</string>
<string name="save_track_interval_globally">Logningsinterval</string>
@ -2135,6 +2135,6 @@
<string name="unsaved_changes_will_be_lost">Eventuelle ikke-gemte ændringer vil gå tabt. Fortsæt?</string>
<string name="are_you_sure">Sikker?</string>
<string name="simulate_your_location_stop_descr">Stop simulering af position</string>
<string name="simulate_your_location_descr">Simuler ved brug af indspillet GPX eller beregnet rute</string>
<string name="downloads_left_template">%1$s downloads tilbage</string>
<string name="simulate_your_location_descr">Simuler ved brug af optaget GPX eller beregnet rute</string>
<string name="downloads_left_template">%1$s filhentninger tilbage</string>
</resources>

View file

@ -1347,4 +1347,20 @@
<string name="poi_windfall">Fruto caído</string>
<string name="poi_rtsa_scale">Dificultad del paso de montaña</string>
<string name="poi_pump">Bomba</string>
<string name="poi_piste_difficulty_easy">Dificultad de la pista: fácil</string>
<string name="poi_piste_difficulty_intermediate">Dificultad de la pista: intermedia</string>
<string name="poi_piste_difficulty_advanced">Dificultad de la pista: avanzada</string>
<string name="poi_piste_difficulty_novice">Dificultad de la pista: novato</string>
<string name="poi_piste_difficulty_expert">Dificultad de la pista: experto</string>
<string name="poi_piste_difficulty_freeride">Dificultad de la pista: estilo libre</string>
<string name="poi_piste_grooming_classic">Pista de entrenamiento: clásico</string>
<string name="poi_piste_grooming_classic_skating">Pista de entrenamiento: patinaje clásico</string>
<string name="poi_piste_grooming_backcountry">Pista de entrenamiento: fuera de pista</string>
<string name="poi_piste_grooming_scooter">Pista de entrenamiento: scooter</string>
<string name="poi_piste_grooming_skating">Pista de entrenamiento: patinaje</string>
<string name="poi_piste_grooming_no">Sin preparación de la pista</string>
<string name="poi_piste_grooming_mogul">Pista de entrenamiento: magnate</string>
</resources>

View file

@ -2057,4 +2057,7 @@
<string name="address_unknown">Dirección desconocida</string>
<string name="are_you_sure">¿Está seguro?</string>
<string name="unsaved_changes_will_be_lost">Se perderán los cambios no guardados. ¿Continuar?</string>
<string name="simulate_your_location_stop_descr">Parar simulación de ubicación</string>
<string name="simulate_your_location_descr">Simular usando grabación GPX o ruta calculada</string>
<string name="downloads_left_template">Quedan %1$s descargas</string>
</resources>

View file

@ -1351,4 +1351,20 @@
<string name="poi_windfall">Fruto caído</string>
<string name="poi_rtsa_scale">Dificultad del paso de montaña</string>
<string name="poi_pump">Bomba</string>
<string name="poi_piste_difficulty_easy">Dificultad de la pista: fácil</string>
<string name="poi_piste_difficulty_intermediate">Dificultad de la pista: intermedio</string>
<string name="poi_piste_difficulty_advanced">Dificultad de la pista: avanzado</string>
<string name="poi_piste_difficulty_novice">Dificultad de la pista: novato</string>
<string name="poi_piste_difficulty_expert">Dificultad de la pista: experto</string>
<string name="poi_piste_difficulty_freeride">Dificultad de la pista: estilo libre</string>
<string name="poi_piste_grooming_classic">Pista de entrenamiento: clásico</string>
<string name="poi_piste_grooming_classic_skating">Pista de entrenamiento: clásico + patinaje</string>
<string name="poi_piste_grooming_backcountry">Pista de entrenamiento: fuera de pista</string>
<string name="poi_piste_grooming_scooter">Pista de entrenamiento: scooter</string>
<string name="poi_piste_grooming_skating">Pista de entrenamiento: patinaje</string>
<string name="poi_piste_grooming_no">Sin pista de entrenamiento</string>
<string name="poi_piste_grooming_mogul">Pista de entrenamiento: magnate</string>
</resources>

View file

@ -87,7 +87,7 @@
<string name="user_password">Su clave OSM</string>
<string name="user_password_descr">Necesario para envíos a openstreetmap.org</string>
<string name="osmand_service">Modo reposo</string>
<string name="osmand_service_descr">Para ejecutar OsmAnd mientras la pantalla está apagada</string>
<string name="osmand_service_descr">OsmAnd se ejecuta en segundo plano mientras la pantalla está apagada</string>
<string name="tip_rotation_switching">Rotación del mapa</string>
<string name="switch_to_raster_map_to_see">No hay ningún mapa vectorial fuera de línea presente para esta ubicación. Puede descargar uno en Ajustes (Gestionar mapas), o cambiar al mapa en línea (para esto active el complemento mapas en línea).</string>
@ -478,20 +478,20 @@
<string name="use_trackball">Utilizar la bola de desplazamiento</string>
<string name="background_service_wait_int_descr">Fijar el tiempo de espera máximo para determinar la posición en cada lectura del servicio de fondo</string>
<string name="background_service_wait_int">Máx. espera para posicionamiento</string>
<string name="service_stop_background_service">Apagar el servicio de navegación en modo reposo de OsmAnd</string>
<string name="service_stop_background_service">Apagar el servicio de navegación de fondo de OsmAnd</string>
<string name="where_am_i">¿Dónde estoy?</string>
<string name="process_navigation_service">Servicio de navegación OsmAnd</string>
<string name="network_provider">Red</string>
<string name="gps_provider">GPS</string>
<string name="int_seconds">segundos</string>
<string name="int_min">min.</string>
<string name="background_service_int_descr">Establece el intervalo de activación utilizado por el servicio de modo reposo</string>
<string name="background_service_int_descr">Establece el intervalo de activación utilizado por el servicio de fondo</string>
<string name="background_service_int">Intervalo de activación GPS</string>
<string name="background_service_provider_descr">Elige el proveedor de ubicación utilizado por el servicio de modo reposo</string>
<string name="background_service_provider_descr">Elige el proveedor de ubicación utilizado por el servicio de fondo</string>
<string name="background_service_provider">Proveedor de ubicación</string>
<string name="background_router_service_descr">Ejecuta OsmAnd de fondo para trazar su posición con la pantalla apagada</string>
<string name="background_router_service">Ejecutar en modo reposo</string>
<string name="off_router_service_no_gps_available">El servicio de navegación en modo reposo necesita un proveedor de ubicación para estar encendido.</string>
<string name="background_router_service">Ejecutar OsmAnd en segundo plano</string>
<string name="off_router_service_no_gps_available">El servicio de navegación de fondo requiere un proveedor de ubicación para activarse.</string>
<string name="hide_poi_filter">Ocultar filtro</string>
<string name="show_poi_filter">Mostrar filtro</string>
<string name="search_poi_filter">Filtro</string>
@ -787,7 +787,7 @@
<string name="osmand_rastermaps_plugin_description">"Con este complemento puede acceder a muchos tipos de mapas en línea (llamados de teselas o ráster), desde teselas de OpenStreetMap predefinidas (como Mapnik) a imágenes de satélite y capas de propósito especial como mapas del tiempo, mapas del clima, mapas geológicos, capas de sombreado, etc.
\n\nCualquiera de estos mapas se puede utilizado como el mapa (base) principal que se mostrará en la pantalla del mapa de OsmAnd, o como una superposición o subyacente de otro mapa base (como los mapas normales de OsmAnd en línea). Para hacer cualquier mapa subyacente más visible, ciertos elementos de los mapas vectoriales OsmAnd se pueden ocultar fácilmente a través del menú \'Configurar mapa\' cuando desee.
\n\nLas teselas de mapas se pueden obtener directamente a través de fuentes en línea, o se pueden preparar para su uso fuera de línea (y copiar manualmente en la carpeta de datos OsmAnd) como una base de datos sqlite que puede ser producida por una variedad de herramientas de preparación de mapas de terceros. "</string>
<string name="osmand_background_plugin_description">Muestra los ajustes para habilitar el seguimiento y la navegación en modo suspensión (pantalla apagada) activando periódicamente el dispositivo GPS.</string>
<string name="osmand_background_plugin_description">Muestra los ajustes para habilitar el seguimiento y la navegación en segundo plano (pantalla apagada) activando periódicamente el dispositivo GPS.</string>
<string name="osmand_accessibility_description">Este complemento habilita las características de accesibilidad del dispositivo directamente en OsmAnd. Facilita, por ejemplo, el ajuste de la velocidad de la voz para voces TTS, la configuración de navegación de pantalla con el panel direccional, utilizando la bola de desplazamiento para el control de acercamiento, o el uso de comentarios de conversión de texto a voz, o para el anuncio automático de su posición.</string>
@ -986,8 +986,8 @@
<string name="bg_service_interval">Fija el intervalo de activación:</string>
<string name="screen_is_locked">Para desbloquear la pantalla presiona el icono del candado</string>
<string name="bg_service_screen_unlock">Desbloquear pantalla</string>
<string name="bg_service_sleep_mode_off">Activar\n modo reposo</string>
<string name="bg_service_sleep_mode_on">Parar\n modo reposo</string>
<string name="bg_service_sleep_mode_off">Ejecutar\n aplicación en segundo plano</string>
<string name="bg_service_sleep_mode_on">Parar\n ejecución en segundo plano</string>
<string name="gps_wakeup_interval">Intervalo de activación del GPS: %s</string>
<string name="int_continuosly">Continuamente</string>
<string name="email">correo electrónico</string>
@ -1043,7 +1043,7 @@
\n\t* Corrección de errores "</string>
<string name="snap_to_road_descr">Ajusta la posición a las carreteras durante la navegación</string>
<string name="snap_to_road">Ajustar a carreteras</string>
<string name="tip_recent_changes_0_8_4_t">"Cambios en 0.8.4 :\n\t* Algunos fallos arreglados\n\t* El mapa no pierde el bloqueo de posición después de interrupciones\n\t* Activa el servicio de modo reposo durante la navegación "</string>
<string name="tip_recent_changes_0_8_4_t">"Cambios en 0.8.4 :\n\t* Algunos fallos arreglados\n\t* El mapa no pierde el bloqueo de posición después de interrupciones\n\t* Activa el servicio de fondo durante la navegación "</string>
<string name="context_menu_item_first_intermediate_point">Añadir como primer punto de ruta</string>
<string name="context_menu_item_last_intermediate_point">Añadir como último punto de ruta</string>
<string name="add_as_last_destination_point">Añadir como último punto de ruta</string>
@ -1078,8 +1078,8 @@
<string name="rendering_attr_roadColors_name">Esquema de color de carreteras</string>
<string name="zxing_barcode_scanner_not_found">La aplicación ZXing Barcode Scanner no está instalada. ¿Buscar en el tienda de aplicaciones?</string>
<string name="close_changeset">Cerrar conjunto de cambios</string>
<string name="background_service_is_enabled_question">El servicio de modo reposo de OsmAnd aún está funcionando. ¿También quiere interrumpirlo?</string>
<string name="tip_recent_changes_1_0_0_t">"Cambios en 1.0:\n\t* Mejorado la navegación: más rápido y más preciso (hasta 250 km)\n\t* Introduce mapas sólo de carreteras\n\t* El mapa no pierde el bloqueo de posición después de interrupciones\n\t* Activa el servicio de modo reposo durante la navegación "</string>
<string name="background_service_is_enabled_question">El servicio de fondo de OsmAnd aún está funcionando. ¿También quiere interrumpirlo?</string>
<string name="tip_recent_changes_1_0_0_t">"Cambios en 1.0:\n\t* Mejorado la navegación: más rápido y más preciso (hasta 250 km)\n\t* Introduce mapas sólo de carreteras\n\t* El mapa no pierde el bloqueo de posición después de interrupciones\n\t* Activa el servicio de fondo durante la navegación "</string>
<string name="safe_mode_description">Ejecuta la aplicación en modo seguro (utilizando código Android más lento en lugar del nativo).</string>
<string name="safe_mode">Modo seguro</string>
<string name="native_library_not_running">La aplicación se está ejecutando en modo seguro (desactívelo en Ajustes).</string>
@ -2085,7 +2085,7 @@
<string name="download_wikipedia_maps">Wikipedia</string>
<string name="gps_network_not_enabled">El servicio de ubicación no está activado. ¿Quiere activarlo?</string>
<string name="disable_recording_once_app_killed">Evita el registro autónomo</string>
<string name="disable_recording_once_app_killed_descrp">Se pausará el registro GPX cuando se cierre la aplicación (a través de aplicaciones recientes). (Las indicación del modo reposo de OsmAnd desaparecerá de la barra de notificaciones de Android.)</string>
<string name="disable_recording_once_app_killed_descrp">Se pausará el registro GPX cuando se cierre la aplicación (a través de aplicaciones recientes). (La indicación de fondo de OsmAnd desaparecerá de la barra de notificaciones de Android.)</string>
<string name="light_theme">Luminoso</string>
<string name="dark_theme">Oscuro</string>
<string name="lang_pms">Piamontés</string>
@ -2194,4 +2194,6 @@
<string name="address_unknown">Dirección desconocida</string>
<string name="are_you_sure">¿Está seguro?</string>
<string name="unsaved_changes_will_be_lost">Se perderán los cambios no guardados. ¿Continuar?</string>
</resources>
<string name="simulate_your_location_stop_descr">Parar simulación de posición</string>
<string name="simulate_your_location_descr">Simular utilizando grabación GPX o ruta calculada</string>
</resources>

View file

@ -1474,7 +1474,7 @@ Si consiglia di aggiungere uno o più punti intermedi per migliorarne le prestaz
\n\t* Impostazioni della velocità della vocalizzazione
</string>
<string name="calculate_osmand_route_without_internet">Calcola un tratto di percorso OsmAnd senza l\'utilizzo di Internet</string>
<string name="gpx_option_calculate_first_last_segment">Calcola una percorso OsmAnd per il primo e l\'ultimo tratto del percorso</string>
<string name="gpx_option_calculate_first_last_segment">Calcola percorso OsmAnd per i tratti prima e dopo il GPX</string>
<string name="lang_en">Inglese</string>
<string name="lang_af">Afrikaans</string>

View file

@ -1186,4 +1186,18 @@
<string name="poi_rtsa_scale">Категория сложности перевала</string>
<string name="poi_piste_difficulty_easy">Сложность трассы: низкая</string>
<string name="poi_piste_difficulty_intermediate">Сложность трассы: средняя</string>
<string name="poi_piste_difficulty_advanced">Сложность трассы: высокая</string>
<string name="poi_piste_difficulty_novice">Сложность трассы: простейшая</string>
<string name="poi_piste_difficulty_expert">Сложность трассы: эксперт</string>
<string name="poi_piste_difficulty_freeride">Сложность трассы: фрирайд</string>
<string name="poi_piste_grooming_classic">Обслуживание трассы: классика</string>
<string name="poi_piste_grooming_classic_skating">Обслуживание трассы: классика+конёк</string>
<string name="poi_piste_grooming_backcountry">Обслуживание трассы: кросс-кантри</string>
<string name="poi_piste_grooming_scooter">Обслуживание трассы: снежный скутер</string>
<string name="poi_piste_grooming_skating">Обслуживание трассы: конёк</string>
<string name="poi_piste_grooming_no">Обслуживание трассы: не обслуживаемая</string>
<string name="poi_piste_grooming_mogul">Обслуживание трассы: могул</string>
</resources>

View file

@ -2097,4 +2097,6 @@
<string name="count_of_lines">Количество строк</string>
<string name="show_on_start">Показывать при запуске</string>
<string name="address_unknown">Адрес неизвестен</string>
</resources>
<string name="are_you_sure">Вы уверены?</string>
<string name="unsaved_changes_will_be_lost">Все несохраненные изменения будут потеряны. Продолжить?</string>
</resources>

View file

@ -1300,4 +1300,18 @@
<string name="poi_bicycle_parking_anchors">Držiaky</string>
<string name="poi_rtsa_scale">Náročnosť horského priesmyku</string>
<string name="poi_piste_difficulty_easy">Obtiažnosť zjazdovky: ľahká</string>
<string name="poi_piste_difficulty_intermediate">Obtiažnosť zjazdovky: stredná</string>
<string name="poi_piste_difficulty_advanced">Obtiažnosť zjazdovky: pokročilí</string>
<string name="poi_piste_difficulty_novice">Obtiažnosť zjazdovky: pre začiatočníkov</string>
<string name="poi_piste_difficulty_expert">Obtiažnosť zjazdovky: pre skúsených</string>
<string name="poi_piste_difficulty_freeride">Obtiažnosť zjazdovky: voľný zjazd</string>
<string name="poi_piste_grooming_classic">Úprava trate: klasická</string>
<string name="poi_piste_grooming_classic_skating">Úprava trate: klasická+korčuľovanie na lyžiach</string>
<string name="poi_piste_grooming_backcountry">Úprava trate: cez krajinu</string>
<string name="poi_piste_grooming_scooter">Úprava trate: snežným skútrom</string>
<string name="poi_piste_grooming_skating">Úprava trate: korčuľovanie na lyžiach</string>
<string name="poi_piste_grooming_no">Úprava trate: žiadna</string>
<string name="poi_piste_grooming_mogul">Úprava trate: bubny</string>
</resources>

View file

@ -2289,4 +2289,7 @@ Afganistan, Albánsko, Alžírsko, Andora, Angola, Anguilla, Antigua a Barbuda,
<string name="address_unknown">Adresa ešte nie je známa</string>
<string name="are_you_sure">Ste si istí?</string>
<string name="unsaved_changes_will_be_lost">Všetky neuložené zmeny budú stratené. Pokračovať?</string>
<string name="simulate_your_location_stop_descr">Skončiť simuláciu polohy</string>
<string name="simulate_your_location_descr">Simulovať pomocou zaznamenaného GPX alebo vypočítanej trasy</string>
<string name="downloads_left_template">%1$s sťahovaní zostáva</string>
</resources>

View file

@ -1999,4 +1999,6 @@
<string name="address_unknown">Adressen är inte känd än</string>
<string name="are_you_sure">Är du säker?</string>
<string name="unsaved_changes_will_be_lost">Alla osparade ändringar kommer att förloras. Fortsätta ändå?</string>
</resources>
<string name="simulate_your_location_stop_descr">Sluta simulera din plats</string>
<string name="simulate_your_location_descr">Simulera med inspelad GPX eller beräknad rutt</string>
</resources>

View file

@ -1349,4 +1349,18 @@
<string name="poi_pump">泵浦</string>
</resources>
<string name="poi_piste_difficulty_easy">滑雪道難度:容易</string>
<string name="poi_piste_difficulty_intermediate">滑雪道難度:中等</string>
<string name="poi_piste_difficulty_advanced">滑雪道難度:高級</string>
<string name="poi_piste_difficulty_novice">滑雪道難度:初學者</string>
<string name="poi_piste_difficulty_expert">滑雪道難度: 熟練者</string>
<string name="poi_piste_difficulty_freeride">滑雪道難度:隨意的</string>
<string name="poi_piste_grooming_classic">滑雪道修整:最優秀</string>
<string name="poi_piste_grooming_classic_skating">滑雪道修整:最優秀+滑冰</string>
<string name="poi_piste_grooming_backcountry">滑雪道修整:偏僻的</string>
<string name="poi_piste_grooming_scooter">滑雪道修整:滑橇車</string>
<string name="poi_piste_grooming_skating">滑雪道修整:滑冰</string>
<string name="poi_piste_grooming_no">滑雪道修整:無</string>
<string name="poi_piste_grooming_mogul">滑雪道修整:障礙</string>
</resources>

View file

@ -2113,4 +2113,7 @@
<string name="address_unknown">還不知道地址</string>
<string name="are_you_sure">您確定嗎?</string>
<string name="unsaved_changes_will_be_lost">任何未儲存的變更將會失去。要繼續嗎?</string>
<string name="simulate_your_location_stop_descr">停止模擬您的位置</string>
<string name="simulate_your_location_descr">模擬使用記錄的 GPX 或計算的路線</string>
<string name="downloads_left_template">離開下載的 %1$s</string>
</resources>

View file

@ -14,7 +14,7 @@
<attr name="bg_map_context_menu" format="reference" />
<attr name="ctx_menu_info_view_bg" format="reference" />
<attr name="dashboard_divider" format="reference" />
<attr name="dashboard_divider" format="reference" />
<attr name="dashboard_button" format="reference" />
@ -39,6 +39,8 @@
<attr name="appbar_layout_theme" format="reference"/>
<attr name="toolbar_theme" format="reference"/>
<attr name="new_app_theme" format="reference"/>
<attr name="divider_color" format="reference" />
</declare-styleable>
<declare-styleable name="PagerSlidingTabStrip">

View file

@ -1331,4 +1331,18 @@
<string name="poi_level">Level</string>
<string name="poi_rtsa_scale">Difficulty of mountain pass</string>
<string name="poi_piste_difficulty_easy">Piste difficulty: easy</string>
<string name="poi_piste_difficulty_intermediate">Piste difficulty: intermediate</string>
<string name="poi_piste_difficulty_advanced">Piste difficulty: advanced</string>
<string name="poi_piste_difficulty_novice">Piste difficulty: novice</string>
<string name="poi_piste_difficulty_expert">Piste difficulty: expert</string>
<string name="poi_piste_difficulty_freeride">Piste difficulty: freeride</string>
<string name="poi_piste_grooming_classic">Piste grooming: classic</string>
<string name="poi_piste_grooming_classic_skating">Piste grooming: classic+skating</string>
<string name="poi_piste_grooming_backcountry">Piste grooming: backcountry</string>
<string name="poi_piste_grooming_scooter">Piste grooming: scooter</string>
<string name="poi_piste_grooming_skating">Piste grooming: skating</string>
<string name="poi_piste_grooming_no">Piste grooming: no</string>
<string name="poi_piste_grooming_mogul">Piste grooming: mogul</string>
</resources>

View file

@ -68,6 +68,7 @@
<item name="bg_card">@drawable/bg_card_light</item>
<item name="bg_map_context_menu">@drawable/bg_map_context_menu_light</item>
<item name="dashboard_divider">@color/dashboard_divider_light</item>
<item name="divider_color">@color/divider_color</item>
<item name="dashboard_button">@drawable/dashboard_button_light</item>
<item name="ctx_menu_info_view_bg">@color/ctx_menu_info_view_bg_light</item>
<item name="search_background">@color/search_background_dark</item>
@ -110,6 +111,7 @@
<item name="appbar_layout_theme">@style/OsmandLightTheme.DarkActionbar</item>
<item name="toolbar_theme">@style/OsmandLightTheme.Toolbar</item>
<item name="new_app_theme">@style/OsmandLightTheme.NewAppTheme</item>
<item name="android:textColorSecondary">@color/icon_color</item>
</style>
<style name="OsmandLightTheme.DarkActionbar">
@ -128,21 +130,10 @@
<style name="OsmandLightTheme.NewAppTheme">
<item name="colorAccent">@color/osmand_orange</item>
<item name="android:textColorSecondary">@color/divider_color</item>
</style>
<style name="OsmandDarkTheme.DarkActionbar">
<item name="colorAccent">@color/color_white</item>
<item name="android:textColorSecondary">@color/dash_search_icon_dark</item>
</style>
<style name="OsmandDarkTheme.Toolbar">
<item name="android:textColorSecondary">@color/dash_search_icon_dark</item>
</style>
<style name="OsmandDarkTheme.NewAppTheme">
<item name="android:textColorSecondary">@color/dash_search_icon_dark</item>
<item name="colorAccent">@color/osmand_orange</item>
</style>
<style name="OsmandDarkTheme" parent="Theme.AppCompat">
@ -161,6 +152,7 @@
<item name="bg_card">@drawable/bg_card_dark</item>
<item name="bg_map_context_menu">@drawable/bg_map_context_menu_dark</item>
<item name="dashboard_divider">@color/dashboard_divider_dark</item>
<item name="divider_color">@color/dashboard_divider_dark</item>
<item name="dashboard_button">@drawable/dashboard_button_dark</item>
<item name="ctx_menu_info_view_bg">@color/ctx_menu_info_view_bg_dark</item>
<item name="search_background">@color/color_white</item>
@ -190,8 +182,9 @@
<item name="dialog_inactive_text_color">@color/dialog_inactive_text_color_dark</item>
<item name="appbar_layout_theme">@style/OsmandDarkTheme.DarkActionbar</item>
<item name="toolbar_theme">@style/OsmandDarkTheme.Toolbar</item>
<item name="new_app_theme">@style/OsmandDarkTheme.NewAppTheme</item>
<item name="toolbar_theme">@style/OsmandDarkTheme</item>
<item name="new_app_theme">@style/OsmandDarkTheme</item>
<item name="android:textColorSecondary">@color/dash_search_icon_dark</item>
</style>
@ -272,6 +265,7 @@
<item name="android:layout_height">wrap_content</item>
<item name="android:layout_weight">1</item>
<item name="android:textColor">?android:textColorPrimary</item>
<item name="android:textColorHint">?android:textColorSecondary</item>
</style>
<style name="edit_poi_imageview_style">

View file

@ -299,8 +299,9 @@ public class GPXUtilities {
channelBase = channelBottom;
channelTop = point.ele;
climb = true;
}
// End detection without breakout
} else if (j == numberOfPoints -1) {
if (j == (numberOfPoints -1)) {
if ((channelTop - channelBase) >= channelThres) {
diffElevationUp += channelTop - channelBase;
}

View file

@ -186,7 +186,7 @@ public class AvoidSpecificRoads {
} else {
thread.startMoving(lat, lon, fZoom, true);
}
ctx.getMapLayers().getContextMenuLayer().setLocation(new LatLon(lat, lon), name);
ctx.getMapLayers().getContextMenuLayer().showMapContextMenu(new LatLon(lat, lon), name);
dialog.dismiss();
}

View file

@ -63,13 +63,12 @@ public class MapContextMenu {
settings = app.getSettings();
}
public void show(PointDescription pointDescription, Object object) {
public boolean init(PointDescription pointDescription, Object object) {
if (isMenuVisible()) {
if (this.object == null || !this.object.equals(object)) {
hide();
} else {
return;
return false;
}
}
@ -82,10 +81,22 @@ public class MapContextMenu {
acquireLeftIcon();
acquireNameAndType();
acquireStreetName(new LatLon(pointDescription.getLat(), pointDescription.getLon()));
if (object != null || Algorithms.isEmpty(pointDescription.getName())) {
acquireStreetName(new LatLon(pointDescription.getLat(), pointDescription.getLon()));
}
return true;
}
MapContextMenuFragment.showInstance(mapActivity);
public void show() {
if (!isMenuVisible()) {
MapContextMenuFragment.showInstance(mapActivity);
}
}
public void show(PointDescription pointDescription, Object object) {
if (init(pointDescription, object)) {
MapContextMenuFragment.showInstance(mapActivity);
}
}
public void hide() {

View file

@ -37,11 +37,11 @@ public class AmenityInfoMenuBuilder extends MenuBuilder {
this.amenity = amenity;
}
private void buildRow(View view, int iconId, String text, int textColor, boolean isDescription) {
buildRow(view, getRowIcon(iconId), text, textColor, isDescription);
private void buildRow(View view, int iconId, String text, int textColor, boolean isWiki) {
buildRow(view, getRowIcon(iconId), text, textColor, isWiki);
}
private void buildRow(final View view, Drawable icon, String text, int textColor, final boolean isDescription) {
private void buildRow(final View view, Drawable icon, String text, int textColor, final boolean isWiki) {
boolean light = app.getSettings().isLightContent();
LinearLayout ll = new LinearLayout(view.getContext());
@ -80,7 +80,7 @@ public class AmenityInfoMenuBuilder extends MenuBuilder {
textView.setAutoLinkMask(Linkify.ALL);
textView.setLinksClickable(true);
if (isDescription) {
if (isWiki) {
textView.setMinLines(1);
textView.setMaxLines(5);
}
@ -88,13 +88,11 @@ public class AmenityInfoMenuBuilder extends MenuBuilder {
if (textColor > 0) {
textView.setTextColor(view.getResources().getColor(textColor));
}
if (isDescription) {
if (isWiki) {
textView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (isDescription) {
POIMapLayer.showDescriptionDialog(view.getContext(), app, amenity);
}
POIMapLayer.showDescriptionDialog(view.getContext(), app, amenity);
}
});
}
@ -143,7 +141,7 @@ public class AmenityInfoMenuBuilder extends MenuBuilder {
int iconId = 0;
Drawable icon = null;
int textColor = 0;
boolean isDescription = false;
boolean isWiki = false;
String key = e.getKey();
String vl = e.getValue();
@ -166,7 +164,7 @@ public class AmenityInfoMenuBuilder extends MenuBuilder {
vl = vl.substring(0, 300);
}
hasWiki = true;
isDescription = true;
isWiki = true;
} else {
continue;
}
@ -195,7 +193,6 @@ public class AmenityInfoMenuBuilder extends MenuBuilder {
} else {
if (Amenity.DESCRIPTION.equals(key)) {
iconId = R.drawable.ic_action_note_dark;
isDescription = true;
} else {
iconId = R.drawable.ic_action_info_dark;
}
@ -217,9 +214,9 @@ public class AmenityInfoMenuBuilder extends MenuBuilder {
}
if (icon != null) {
buildRow(view, icon, vl, textColor, isDescription);
buildRow(view, icon, vl, textColor, isWiki);
} else {
buildRow(view, iconId, vl, textColor, isDescription);
buildRow(view, iconId, vl, textColor, isWiki);
}
}
}

View file

@ -1,5 +1,6 @@
package net.osmand.plus.osmedit;
import android.content.res.Resources;
import android.graphics.Point;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
@ -8,6 +9,7 @@ import android.support.v4.app.Fragment;
import android.text.Editable;
import android.text.TextUtils;
import android.text.TextWatcher;
import android.util.TypedValue;
import android.view.Display;
import android.view.LayoutInflater;
import android.view.View;
@ -62,8 +64,12 @@ public class BasicDataFragment extends Fragment {
int height = size.y;
view.findViewById(R.id.screenFiller).setMinimumHeight(height);
TypedValue typedValue = new TypedValue();
Resources.Theme theme = getActivity().getTheme();
theme.resolveAttribute(android.R.attr.textColorSecondary, typedValue, true);
int iconColor = typedValue.data;
IconsCache iconsCache = getMyApplication().getIconsCache();
int iconColor = getResources().getColor(R.color.dash_search_icon_dark);
ImageView streetImageView = (ImageView) view.findViewById(R.id.streetImageView);
streetImageView.setImageDrawable(

View file

@ -204,8 +204,8 @@ public class EditPoiFragment extends DialogFragment {
getMyApplication().getIconsCache()
.getPaintedContentIcon(R.drawable.ic_action_help,
getResources().getColor(
isLightTheme ? R.color.dash_search_icon_dark
: R.color.inactive_item_orange)));
isLightTheme ? R.color.inactive_item_orange
: R.color.dash_search_icon_dark)));
final ImageButton poiTypeButton = (ImageButton) view.findViewById(R.id.poiTypeButton);
poiTypeButton.setOnClickListener(new View.OnClickListener() {
@Override

View file

@ -22,7 +22,6 @@ import net.osmand.data.LatLon;
import net.osmand.data.PointDescription;
import net.osmand.data.RotatedTileBox;
import net.osmand.plus.ContextMenuAdapter;
import net.osmand.plus.OsmandSettings;
import net.osmand.plus.R;
import net.osmand.plus.activities.MapActivity;
@ -64,8 +63,6 @@ public class ContextMenuLayer extends OsmandMapLayer {
private LatLon latLon;
private String description;
private Map<Object, IContextMenuProvider> selectedObjects = new ConcurrentHashMap<Object, IContextMenuProvider>();
private Object selectedObj;
private IContextMenuProvider contextObject;
private TextView textView;
private ImageView closeButton;
@ -186,6 +183,7 @@ public class ContextMenuLayer extends OsmandMapLayer {
public void setSelectOnMap(CallbackWithObject<LatLon> selectOnMap) {
hideMapContextMenuMarker();
this.selectOnMap = selectOnMap;
}
@ -209,6 +207,12 @@ public class ContextMenuLayer extends OsmandMapLayer {
view.refreshMap();
}
public void showMapContextMenuMarker(LatLon latLon) {
activity.getContextMenu().hide();
this.latLon = latLon;
showMapContextMenuMarker();
}
public void hideMapContextMenuMarker() {
if (showContextMarker) {
showContextMarker = false;
@ -283,18 +287,14 @@ public class ContextMenuLayer extends OsmandMapLayer {
return showContextMenu(new PointF(x, y), activity.getMapView().getCurrentRotatedTileBox(), showUnknownLocation);
}
public boolean showContextMenu(PointF point, boolean showUnknownLocation) {
return showContextMenu(point, activity.getMapView().getCurrentRotatedTileBox(), showUnknownLocation);
}
public boolean showContextMenu(PointF point, RotatedTileBox tileBox, boolean showUnknownLocation) {
LatLon latLon = selectObjectsForContextMenu(tileBox, point);
if (latLon != null) {
if (selectedObjects.size() == 1) {
setLocation(null, "");
selectedObj = selectedObjects.keySet().iterator().next();
contextObject = selectedObjects.get(selectedObj);
showMapContextMenu(latLon);
Object selectedObj = selectedObjects.keySet().iterator().next();
IContextMenuProvider contextObject = selectedObjects.get(selectedObj);
showMapContextMenu(latLon, selectedObj, contextObject);
return true;
} else if (selectedObjects.size() > 1) {
showContextMenuForSelectedObjects(latLon);
@ -304,8 +304,6 @@ public class ContextMenuLayer extends OsmandMapLayer {
setLocation(null, "");
final double lat = tileBox.getLatFromPixel((int) point.x, (int) point.y);
final double lon = tileBox.getLonFromPixel((int) point.x, (int) point.y);
selectedObj = null;
contextObject = null;
showMapContextMenu(new LatLon(lat, lon));
return true;
}
@ -447,7 +445,7 @@ public class ContextMenuLayer extends OsmandMapLayer {
@Override
public boolean onSingleTap(PointF point, RotatedTileBox tileBox) {
if (pressedContextMarker(tileBox, point.x, point.y)) {
showMapContextMenu(latLon);
showMapContextMenu();
return true;
}
@ -456,9 +454,9 @@ public class ContextMenuLayer extends OsmandMapLayer {
if(selectOnMap != null) {
LatLon latlon = tileBox.getLatLonFromPixel(point.x, point.y);
CallbackWithObject<LatLon> cb = selectOnMap;
selectOnMap = null;
cb.processResult(latlon);
setLocation(latlon, null);
showMapContextMenu(latlon);
selectOnMap = null;
return true;
}
if (val == 2) {
@ -499,20 +497,36 @@ public class ContextMenuLayer extends OsmandMapLayer {
builder.setItems(d, new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
selectedObj = s.get(which);
contextObject = selectedObjects.get(selectedObj);
showMapContextMenu(l);
Object selectedObj = s.get(which);
IContextMenuProvider contextObject = selectedObjects.get(selectedObj);
showMapContextMenu(l, selectedObj, contextObject);
}
});
builder.show();
} else {
selectedObj = selectedObjects.keySet().iterator().next();
contextObject = selectedObjects.get(selectedObj);
showMapContextMenu(l);
Object selectedObj = selectedObjects.keySet().iterator().next();
IContextMenuProvider contextObject = selectedObjects.get(selectedObj);
showMapContextMenu(l, selectedObj, contextObject);
}
}
private void showMapContextMenu(LatLon latLon) {
public void showMapContextMenu() {
activity.getContextMenu().show();
}
public void showMapContextMenu(LatLon latLon) {
showMapContextMenu(latLon, null);
}
public void showMapContextMenu(LatLon latLon, String title) {
showMapContextMenu(latLon, title, null, null);
}
public void showMapContextMenu(LatLon latLon, Object selectedObj, IContextMenuProvider contextObject) {
showMapContextMenu(latLon, null, selectedObj, contextObject);
}
public void showMapContextMenu(LatLon latLon, String title, Object selectedObj, IContextMenuProvider contextObject) {
PointDescription pointDescription;
if (selectedObj != null && contextObject != null) {
pointDescription = contextObject.getObjectName(selectedObj);
@ -521,11 +535,18 @@ public class ContextMenuLayer extends OsmandMapLayer {
pointDescription.setLon(objLocation.getLongitude());
} else {
pointDescription = new PointDescription(latLon.getLatitude(), latLon.getLongitude());
if (title != null) {
pointDescription.setName(title);
}
}
this.latLon = new LatLon(pointDescription.getLat(), pointDescription.getLon());
showMapContextMenuMarker();
activity.getContextMenu().show(pointDescription, selectedObj);
if (selectOnMap != null) {
activity.getContextMenu().init(pointDescription, selectedObj);
} else {
activity.getContextMenu().show(pointDescription, selectedObj);
}
}

View file

@ -335,54 +335,6 @@ public class POIMapLayer extends OsmandMapLayer implements ContextMenuLayer.ICon
return true;
}
@Override
public void populateObjectContextMenu(Object o, ContextMenuAdapter adapter) {
if (o instanceof Amenity) {
final Amenity a = (Amenity) o;
OnContextMenuClick listener = new ContextMenuAdapter.OnContextMenuClick() {
@Override
public boolean onContextMenuClick(ArrayAdapter<?> adapter, int itemId, int pos, boolean isChecked) {
if (itemId == R.string.poi_context_menu_call) {
try {
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("tel:" + a.getPhone())); //$NON-NLS-1$
view.getContext().startActivity(intent);
} catch (RuntimeException e) {
log.error("Failed to invoke call", e); //$NON-NLS-1$
AccessibleToast.makeText(view.getContext(), e.getMessage(), Toast.LENGTH_SHORT).show();
}
} else if (itemId == R.string.poi_context_menu_website) {
try {
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse(a.getSite()));
view.getContext().startActivity(intent);
} catch (RuntimeException e) {
log.error("Failed to invoke call", e); //$NON-NLS-1$
AccessibleToast.makeText(view.getContext(), e.getMessage(), Toast.LENGTH_SHORT).show();
}
} else if (itemId == R.string.poi_context_menu_showdescription) {
showDescriptionDialog(view.getContext(), app, a);
}
return true;
}
};
if (OsmAndFormatter.getAmenityDescriptionContent(view.getApplication(), a, false).length() > 0 ||
a.getType().isWiki()) {
adapter.item(R.string.poi_context_menu_showdescription)
.iconColor(R.drawable.ic_action_note_dark).listen(listener).reg();
}
if (a.getPhone() != null) {
adapter.item(R.string.poi_context_menu_call)
.iconColor(R.drawable.ic_action_call_dark).listen(listener).reg();
}
if (a.getSite() != null) {
adapter.item(R.string.poi_context_menu_website)
.iconColor(R.drawable.ic_world_globe_dark).listen(listener)
.reg();
}
}
}
public static void showDescriptionDialog(Context ctx, OsmandApplication app, Amenity a) {
String lang = app.getSettings().MAP_PREFERRED_LOCALE.get();
if (a.getType().isWiki()) {