This commit is contained in:
xmd5a 2015-09-08 17:10:49 +03:00
commit 76fe221d9c
74 changed files with 2073 additions and 619 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.7 KiB

View file

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<nine-patch android:src="@drawable/bottom_shadow" />
</item>
<item>
<shape>
<solid
android:color="@color/bg_color_dark" />
</shape>
</item>
</layer-list>

View file

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<nine-patch android:src="@drawable/bottom_shadow" />
</item>
<item>
<shape>
<solid
android:color="@color/bg_color_light" />
</shape>
</item>
</layer-list>

View file

@ -4,6 +4,7 @@
xmlns:osmand="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:tools="http://schemas.android.com/tools"
android:theme="?attr/new_app_theme">
<LinearLayout
@ -32,7 +33,7 @@
android:layout_marginLeft="16dp"
android:layout_marginRight="16dp"
android:text="@string/tag_poi_name"
android:textColor="@color/dashboard_black"
android:textColor="?android:attr/textColorPrimary"
android:textSize="@dimen/default_desc_text_size"
osmand:typeface="@string/font_roboto_regular"/>
@ -47,9 +48,10 @@
android:layout_height="wrap_content"
android:layout_marginLeft="16dp"
android:layout_marginRight="16dp"
android:textColor="@color/dashboard_black"
android:textColor="?android:attr/textColorPrimary"
android:textSize="@dimen/default_desc_text_size"
osmand:typeface="@string/font_roboto_medium"/>
osmand:typeface="@string/font_roboto_medium"
tools:text="poi name"/>
</LinearLayout>
<View
@ -69,7 +71,7 @@
android:layout_marginLeft="16dp"
android:layout_marginRight="16dp"
android:text="@string/tag_poi_amenity"
android:textColor="@color/dashboard_black"
android:textColor="?android:attr/textColorPrimary"
android:textSize="@dimen/default_desc_text_size"
osmand:typeface="@string/font_roboto_regular"/>
@ -84,9 +86,10 @@
android:layout_height="wrap_content"
android:layout_marginLeft="16dp"
android:layout_marginRight="16dp"
android:textColor="@color/dashboard_black"
android:textColor="?android:attr/textColorPrimary"
android:textSize="@dimen/default_desc_text_size"
osmand:typeface="@string/font_roboto_medium"/>
osmand:typeface="@string/font_roboto_medium"
tools:text="landmark"/>
</LinearLayout>
</LinearLayout>

View file

@ -25,14 +25,13 @@
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="0"
android:background="@android:color/white"
android:background="?attr/bg_map_context_menu"
android:orientation="vertical">
<LinearLayout
android:id="@+id/context_menu_top_view"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@android:color/white"
android:orientation="horizontal">
<LinearLayout
@ -43,19 +42,20 @@
<ImageView
android:id="@+id/context_menu_icon_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center_vertical"
android:layout_marginStart="14dp"
android:layout_marginLeft="14dp"
android:tint="@color/color_unknown"
android:scaleType="center"
android:layout_marginStart="12dp"
android:layout_marginLeft="12dp"
android:src="@drawable/ic_action_building_number"/>
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_marginTop="16dp"
android:layout_marginBottom="16dp"
android:orientation="vertical">
@ -68,6 +68,7 @@
android:layout_marginRight="12dp"
android:text="@string/search_address_building"
android:textSize="@dimen/default_list_text_size_large"
android:textColor="?android:textColorPrimary"
android:textStyle="bold"/>
<TextView
@ -78,26 +79,42 @@
android:layout_marginRight="12dp"
android:layout_marginTop="3dp"
android:text="@string/other_location"
android:textColor="@color/secondary_text_disabled_material_light"
android:textSize="@dimen/default_list_text_size"/>
android:textColor="?android:textColorSecondary"
android:textSize="@dimen/default_desc_text_size"/>
</LinearLayout>
<LinearLayout
android:id="@+id/context_menu_close_btn_layout"
android:orientation="horizontal"
android:layout_width="32dp"
android:layout_height="match_parent">
<ImageView
android:id="@+id/context_menu_close_btn_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="top"
android:layout_marginTop="12dp"
android:scaleType="center"
android:src="@drawable/ic_action_remove_dark"/>
</LinearLayout>
</LinearLayout>
<View
android:layout_width="match_parent"
android:layout_height="1px"
android:background="#c9c9c9"/>
android:layout_height="1dp"
android:background="?attr/dashboard_divider"/>
<LinearLayout
android:id="@+id/context_menu_buttons"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="64dp"
android:layout_gravity="bottom"
android:background="@android:color/white">
android:layout_gravity="bottom">
<ImageButton
android:id="@+id/context_menu_route_button"
@ -107,13 +124,12 @@
android:layout_weight="1"
android:scaleType="center"
android:background="?attr/dashboard_button"
android:src="@drawable/map_directions"
android:tint="@color/actionbar_dark_color"/>
android:src="@drawable/map_directions"/>
<View
android:layout_width="1px"
android:layout_height="match_parent"
android:background="#c9c9c9"/>
android:layout_width="1dp"
android:background="?attr/dashboard_divider"/>
<ImageButton
android:id="@+id/context_menu_fav_button"
@ -123,13 +139,12 @@
android:layout_weight="1"
android:scaleType="center"
android:background="?attr/dashboard_button"
android:src="@drawable/ic_action_fav_dark"
android:tint="@color/actionbar_dark_color"/>
android:src="@drawable/ic_action_fav_dark"/>
<View
android:layout_width="1px"
android:layout_height="match_parent"
android:background="#c9c9c9"/>
android:layout_width="1dp"
android:background="?attr/dashboard_divider"/>
<ImageButton
android:id="@+id/context_menu_share_button"
@ -139,13 +154,12 @@
android:layout_weight="1"
android:scaleType="center"
android:background="?attr/dashboard_button"
android:src="@drawable/abc_ic_menu_share_mtrl_alpha"
android:tint="@color/actionbar_dark_color"/>
android:src="@drawable/abc_ic_menu_share_mtrl_alpha"/>
<View
android:layout_width="1px"
android:layout_height="match_parent"
android:background="#c9c9c9"/>
android:layout_width="1dp"
android:background="?attr/dashboard_divider"/>
<ImageButton
android:id="@+id/context_menu_more_button"
@ -155,10 +169,24 @@
android:layout_weight="1"
android:scaleType="center"
android:background="?attr/dashboard_button"
android:src="@drawable/ic_action_core_overflow_dark"
android:tint="@color/actionbar_dark_color"/>
android:src="@drawable/ic_action_core_overflow_dark"/>
</LinearLayout>
<LinearLayout
android:id="@+id/context_menu_bottom_view"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="?attr/dashboard_divider"/>
</LinearLayout>
</LinearLayout>
</LinearLayout>

View file

@ -5,46 +5,52 @@
android:orientation="vertical">
<TextView
android:layout_marginLeft="5dp"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="@string/osb_comment_dialog_message" />
android:layout_height="wrap_content"
android:layout_marginLeft="5dp"
android:text="@string/osb_comment_dialog_message"/>
<EditText
android:id="@+id/messageEditText"
android:minLines="1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="5dp"
android:layout_marginRight="5dp"
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:inputType="textMultiLine" />
android:inputType="textMultiLine"
android:minLines="1"/>
<CheckBox
android:id="@+id/closeChangeSetCheckBox"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="5dp"
android:text="@string/close_changeset"/>
<TextView
android:layout_marginLeft="5dp"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="@string/user_name" />
android:layout_height="wrap_content"
android:layout_marginLeft="5dp"
android:text="@string/user_name"/>
<EditText
android:id="@+id/userNameEditText"
android:layout_marginLeft="5dp"
android:layout_marginRight="5dp"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_width="fill_parent" />
android:layout_marginLeft="5dp"
android:layout_marginRight="5dp"/>
<TextView
android:layout_marginLeft="5dp"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="@string/user_password" />
android:layout_height="wrap_content"
android:layout_marginLeft="5dp"
android:text="@string/user_password"/>
<EditText
android:id="@+id/passwordEditText"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="5dp"
android:layout_marginRight="5dp"
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:inputType="textPassword" />
android:inputType="textPassword"/>
</LinearLayout>

View file

@ -2084,4 +2084,8 @@
<string name="av_locations">Месцазнаходжаньні</string>
<string name="number_of_rows_in_dash">Колькасьць радкоў на галоўным экране %1$s</string>
<string name="tag_poi_amenity">грамадзкі аб\'ект</string>
</resources>
<string name="poi_action_delete">выдаліць</string>
<string name="working_days">Працоўныя дні</string>
<string name="recent_places">Нядаўнія месцы</string>
<string name="favourites">Упадабанае</string>
</resources>

View file

@ -1139,4 +1139,9 @@
<string name="poi_denomination_maronite">Maronita</string>
<string name="poi_denomination_mahayana">Budisme mahayana</string>
<string name="poi_landfill_waste_nuclear">Residus radioactius</string>
<string name="poi_brownfield">Camp per rehabilitar</string>
<string name="poi_start_date">Data d\'inici</string>
<string name="poi_wheelchair">Cadira de rodes</string>
</resources>

View file

@ -1151,4 +1151,28 @@
<string name="poi_denomination_united">United Church of Christ</string>
<string name="poi_denomination_uniting">Uniting kirken</string>
<string name="poi_denomination_scientist">Kristen Videnskab</string>
<string name="poi_landfill_waste_nuclear">Atomaffald</string>
<string name="poi_start_date">Startdato</string>
<string name="poi_wheelchair">Kørestol</string>
<string name="poi_content_silage">Ensilage (indhold)</string>
<string name="poi_content_water">Vand (indhold)</string>
<string name="poi_content_slurry">Gylle (indhold)</string>
<string name="poi_content_oil">Olie (indhold)</string>
<string name="poi_content_fuel">Brændstof (indhold)</string>
<string name="poi_content_manure">Gødning (indhold)</string>
<string name="poi_content_wine">Vin (indhold)</string>
<string name="poi_content_sewage">Spildevand (indhold)</string>
<string name="poi_content_gas">Gas (indhold)</string>
<string name="poi_content_biomass">Biomasse (indhold)</string>
<string name="poi_content_wastewater">Afløbsvand (indhold)</string>
<string name="poi_content_crop">Afgrøde (indhold)</string>
<string name="poi_content_fodder">Foder (indhold)</string>
<string name="poi_content_beer">Øl (indhold)</string>
<string name="poi_content_salt">Salt (indhold)</string>
<string name="poi_content_grain">Korn (indhold)</string>
<string name="poi_bunker_silo">Plansilo</string>
<string name="poi_brownfield">Forladt industrigrund</string>
<string name="poi_greenfield">Byggemodning</string>
</resources>

View file

@ -2124,4 +2124,8 @@
<string name="poi_dialog_poi_type">IP type</string>
<string name="number_of_rows_in_dash">Antal rækker %1$s</string>
<string name="please_specify_poi_type">Angiv IP type.</string>
</resources>
<string name="working_days">Arbejdsdage</string>
<string name="recent_places">Seneste steder</string>
<string name="favourites">Favoritter</string>
<string name="poi_action_delete">slet</string>
</resources>

View file

@ -72,7 +72,7 @@
<string name="poi_boutique">Boutique de moda</string>
<string name="poi_carpet">Alfombras</string>
<string name="poi_charity">Negocio benéfico</string>
<string name="poi_chemist">Perfumería</string>
<string name="poi_chemist">Higiene personal</string>
<string name="poi_clothes">Negocio de ropa</string>
<string name="poi_child_clothes">Ropa infantil</string>
<string name="poi_shoes">Zapatería</string>
@ -92,7 +92,7 @@
<string name="poi_gas">Gas líquido</string>
<string name="poi_general">Pulpería</string>
<string name="poi_gift">Regalería</string>
<string name="poi_glaziery">Cristalería</string>
<string name="poi_glaziery">Vidriería</string>
<string name="poi_hardware">Ferretería</string>
<string name="poi_hearing_aids">Audífonos</string>
<string name="poi_herbalist">Herboristería</string>
@ -861,7 +861,7 @@
<string name="poi_furnace">Artículos de calefacción</string>
<string name="poi_garden_furniture">Almacén de jardinería</string>
<string name="poi_leather">Marroquinería</string>
<string name="poi_tyres">Gomería</string>
<string name="poi_tyres">Neumáticos</string>
<string name="poi_watches">Relojería (watches)</string>
<string name="poi_games">Juegos</string>
<string name="poi_model">Modelos a escala</string>
@ -1133,4 +1133,28 @@
<string name="poi_denomination_uniting">Uniendo</string>
<string name="poi_denomination_wesleyan">Wesleyan</string>
<string name="poi_denomination_shingon_shu">Budismo shingon</string>
<string name="poi_landfill_waste_nuclear">Desperdicios nucleares</string>
<string name="poi_start_date">Fecha de inicio</string>
<string name="poi_wheelchair">Silla de rueda</string>
<string name="poi_content_silage">Ensilado (contenido)</string>
<string name="poi_content_water">Agua (contenido)</string>
<string name="poi_content_oil">Petróleo (contenido)</string>
<string name="poi_content_fuel">Combustible (contenido)</string>
<string name="poi_content_manure">Estiércol (contenido)</string>
<string name="poi_content_wine">Vino (contenido)</string>
<string name="poi_content_sewage">Agua residual (contenido)</string>
<string name="poi_content_gas">Gas (contenido)</string>
<string name="poi_content_biomass">Biomasa (contenido)</string>
<string name="poi_content_wastewater">Agua residual (contenido)</string>
<string name="poi_content_crop">Cultivo (contenido)</string>
<string name="poi_content_fodder">Forraje (contenido)</string>
<string name="poi_content_beer">Cerveza (contenido)</string>
<string name="poi_content_salt">Sal (contenido)</string>
<string name="poi_content_grain">Cereal (contenido)</string>
<string name="poi_bunker_silo">Silo bunker</string>
<string name="poi_content_slurry">Mezcla (contenido)</string>
<string name="poi_brownfield">Terreno abandonado</string>
<string name="poi_greenfield">Suelo urbanizable</string>
</resources>

View file

@ -512,19 +512,19 @@
<string name="fav_point_dublicate">Nombre de punto favorito duplicado</string>
<string name="fav_point_dublicate_message">El nombre del favorito elegido ya está en uso, se cambió a %1$s para evitar duplicación.</string>
<string name="text_size_descr">Define el tamaño del texto en el mapa.</string>
<string name="tip_navigation_t">"Para recibir indicaciones hasta un lugar, o bien mantén pulsado sobre el mismo en el mapa, (luego pulsa sobre su descripción y selecciona \'Indicaciones a\'), o selecciona \'Indicaciones a\' luego de pulsar sobre una entrada en una lista de resultados de búsqueda o de favoritos.
<string name="tip_navigation_t">"Para recibir indicaciones hasta un lugar, o bien mantén pulsado sobre el mismo en el mapa, (luego pulsa sobre su descripción y selecciona \'Ir hasta\'), o selecciona \'Ir hasta\' luego de pulsar sobre una entrada en una lista de resultados de búsqueda o de favoritos.
\n\nEl destino se marca en el mapa como una bandera y OsmAnd muestra la distancia y la dirección al mismo (triángulo naranja).
\n\nPuede elegir \'Iniciar Navegación\', lo que implica que OsmAnd te guiará, te dará indicaciones vocales (si están activas), etc. O puede elegir \'Mostrar ruta\', y solamente mostrará la ruta, sin indicaciones ni reajustes según se mueva.
\n\nPara mostrar una ruta al destino desde cualquier punto diferente de la posición actual, selecciónelo posteriormente en el mapa y pulsa \'Indicaciones desde\'.
\n\nSi usa \'Indicaciones desde\' y luego \'Iniciar Navegación\', OsmAnd cambiará a su ubicación actual tan pronto como la conozca (por lo que se puede usar para iniciar la ruta antes de conocer la ubicación real). Por otro lado, \'Indicaciones desde\' y \'Mostrar ruta\' no realizará actualizaciones de la ruta mostrada. "</string>
<string name="tip_search_t">"Puede buscar lugares directamente en el mapa vía \'Usar ubicación\'→\'Buscar cerca de aquí\', o mediante la pantalla de búsqueda vía \'Menú\'→\'Buscar\'.
\n\nPara mostrar una ruta al destino desde cualquier punto diferente de la posición actual, selecciónelo posteriormente en el mapa y pulsa \'Ir desde\'.
\n\nSi usa \'Ir desde\' y luego \'Iniciar Navegación\', OsmAnd cambiará a su ubicación actual tan pronto como la conozca (por lo que se puede usar para iniciar la ruta antes de conocer la ubicación real). Por otro lado, \'Ir desde\' y \'Mostrar ruta\' no realizará actualizaciones de la ruta mostrada. "</string>
<string name="tip_search_t">"Puede buscar lugares directamente en el mapa vía \'Usar ubicación\'→\'Buscar cerca\', o mediante la pantalla de búsqueda vía \'Menú\'→\'Buscar\'.
\n\nLa pantalla de búsqueda proporciona plantillas para buscar:
\n\t* por dirección
\n\t* por coordenadas
\n\t* como PDI (por tipo o por nombre)
\n\t* por su historial de búsquedas
\n\t* o en sus favoritos predefinidos.
\n\nPara los puntos encontrados, se ofrece un menú contextual o barra de acciones con opciones como \'Indicaciones a\' o \'Mostrar en mapa\', etc. "</string>
\n\nPara los puntos encontrados, se ofrece un menú contextual o barra de acciones con opciones como \'Ir hasta\' o \'Mostrar en mapa\', etc. "</string>
<string name="background_service_is_enabled_question">El modo reposo, aún está funcionando. ¿Quiere interrumpirlo también?</string>
<string name="sleep_mode_stop_dialog">¿Interrumpir el modo reposo del GPS?</string>
<string name="save_global_track_interval_descr">Elige el intervalo de registro para la grabación de trazas general (activar mediante el control de grabación GPX en el mapa)</string>
@ -712,8 +712,8 @@
<string name="clear_intermediate_points">Quitar puntos intermedios</string>
<string name="keep_intermediate_points">Mantener puntos intermedios</string>
<string name="new_directions_point_dialog">Ya definió puntos intermedios.</string>
<string name="context_menu_item_directions_to">Indicaciones a</string>
<string name="context_menu_item_directions_from">Indicaciones desde</string>
<string name="context_menu_item_directions_to">Ir hasta</string>
<string name="context_menu_item_directions_from">Ir desde</string>
<string name="route_descr_map_location">"Mapa: "</string>
<string name="route_descr_lat_lon">Lat %1$.3f, Lon %2$.3f</string>
<string name="route_descr_current_location">Posición actual</string>
@ -1196,7 +1196,7 @@
<string name="vector_maps_may_display_faster_on_some_devices">Los mapas vectoriales pueden mostrarse más rápido. Puede no funcionar correctamente en algunos dispositivos.</string>
<string name="play_commands_of_currently_selected_voice">Reproduce indicaciones de voz elegidas</string>
<string name="native_rendering">Dibujo nativo</string>
<string name="test_voice_prompts">Probar indicaciones de voz</string>
<string name="test_voice_prompts">Probar avisos de voz</string>
<string name="switch_to_raster_map_to_see">No existe mapa vectorial sin conexión presente en esta ubicación. Puede descargar uno en Opciones (Gestionar mapas), o cambiar al mapa en línea (para esto, activar el complemento de mapas en línea).</string>
<string name="tip_recent_changes_0_7_2_t">"Cambios en 0.7.2 :
\n\t- Dibujo nativo para todos los dispositivos
@ -1313,8 +1313,8 @@
<string name="index_name_oceania">Oceanía</string>
<string name="index_name_other">Mapas mundiales y temáticos</string>
<string name="index_name_wiki">Wikipedia mundial</string>
<string name="index_name_voice">Indicaciones de voz (grabado, funciones limitadas)</string>
<string name="index_name_tts_voice">Indicaciones de voz (sintetizado TTS, preferido)</string>
<string name="index_name_voice">Avisos de voz (grabado, funciones limitadas)</string>
<string name="index_name_tts_voice">Avisos de voz (sintetizado TTS, preferido)</string>
<string name="amenity_type_osmwiki">Wikipedia (sin conexión)</string>
<string name="amenity_type_user_defined">Definido por el usuario</string>
<string name="fav_export_confirmation">Ya existe un archivo anterior con favoritos exportados. ¿Quiere sustituirlo?</string>
@ -1409,7 +1409,7 @@
<string name="search_position_current_location">Ubicación actual…</string>
<string name="search_position_map_view">Vista actual del mapa</string>
<string name="select_search_position">Origen:</string>
<string name="context_menu_item_search">Buscar cerca de aquí</string>
<string name="context_menu_item_search">Buscar cerca</string>
<string name="tip_recent_changes_0_6_7_t">"Cambios en 0.6.7 :
\n\t- Gestor de datos descargados (descargar, borrar, activar/desactivar datos descargados directamente en OsmAnd)
\n\t- Puntos y grupos favoritos (categorizar, borrar, gestionar favoritos)
@ -1634,7 +1634,7 @@
<string name="transport_searching_route">Resultados de transporte ({0} al destino):</string>
<string name="transport_search_again">Reiniciar búsqueda de transporte</string>
<string name="voice">Voz grabada</string>
<string name="voices">Indicaciones de voz</string>
<string name="voices">Avisos de voz</string>
<string name="no_vector_map_loaded">Los mapas vectoriales no están cargados</string>
<string name="map_route_by_gpx">Navegar usando GPX</string>
<string name="gpx_files_not_found">Sin archivos GPX en la carpeta de trazas</string>
@ -2044,4 +2044,8 @@
<string name="poi_dialog_poi_type">Tipo de PDI</string>
<string name="number_of_rows_in_dash">Número de filas en el panel %1$s</string>
<string name="please_specify_poi_type">Especifica el tipo de PDI.</string>
</resources>
<string name="working_days">Días laborales</string>
<string name="recent_places">Lugares recientes</string>
<string name="favourites">Favoritos</string>
<string name="poi_action_delete">borrar</string>
</resources>

View file

@ -1136,4 +1136,28 @@
<string name="poi_denomination_shaktism">Shaktismo</string>
<string name="poi_denomination_wesleyan">Wesleyan</string>
<string name="poi_denomination_shingon_shu">Budismo Shingon</string>
<string name="poi_landfill_waste_nuclear">Residuos nucleares</string>
<string name="poi_bunker_silo">Silo bunker</string>
<string name="poi_start_date">Fecha de inicio</string>
<string name="poi_wheelchair">Silla de rueda</string>
<string name="poi_content_silage">Ensilado (contenido)</string>
<string name="poi_content_water">Agua (contenido)</string>
<string name="poi_content_slurry">Mezcla (contenido)</string>
<string name="poi_content_oil">Aceite (contenido)</string>
<string name="poi_content_fuel">Combustible (contenido)</string>
<string name="poi_content_manure">Estiércol (contenido)</string>
<string name="poi_content_wine">Vino (contenido)</string>
<string name="poi_content_sewage">Aguas residuales (contenido)</string>
<string name="poi_content_gas">Gas (contenido)</string>
<string name="poi_content_biomass">Biomasa (contenido)</string>
<string name="poi_content_wastewater">Aguas residuales (contenido)</string>
<string name="poi_content_crop">Cultivo (contenido)</string>
<string name="poi_content_fodder">Forraje (contenido)</string>
<string name="poi_content_beer">Cerveza (contenido)</string>
<string name="poi_content_salt">Sal (contenido)</string>
<string name="poi_content_grain">Cereal (contenido)</string>
<string name="poi_brownfield">Terreno abandonado</string>
<string name="poi_greenfield">Suelo urbanizable</string>
</resources>

View file

@ -2182,4 +2182,7 @@
<string name="poi_dialog_poi_type">Tipo de PDI</string>
<string name="number_of_rows_in_dash">Número de filas en el panel %1$s</string>
<string name="please_specify_poi_type">Especifica tipo de PDI.</string>
<string name="working_days">Días laborales</string>
<string name="recent_places">Lugares recientes</string>
<string name="favourites">Favoritos</string>
</resources>

View file

@ -2139,4 +2139,10 @@ Afghanistan, Albanie, Algérie, Allemagne, Andorre, Angola, Anguilla, Antigua-et
<string name="add_opening_hours">Ajouter des heures d\'ouverture</string>
<string name="poi_dialog_poi_type">Type de PI</string>
<string name="av_locations">Positions</string>
</resources>
<string name="poi_action_delete">Supprimer</string>
<string name="contact_info">Contact</string>
<string name="please_specify_poi_type">Merci d\'indiquer un type de PI.</string>
<string name="working_days">Jours travaillés</string>
<string name="recent_places">Emplacements récents</string>
<string name="favourites">Favoris</string>
</resources>

View file

@ -382,4 +382,399 @@
<string name="poi_anime">Tenda de anime</string>
<string name="poi_bag">Tenda de bolsos</string>
<string name="poi_hardware">Ferraxería</string>
<string name="poi_shop">Tenda</string>
<string name="poi_shop_food">Tenda de comida</string>
<string name="poi_emergency">Urxencias</string>
<string name="poi_transportation">Transporte</string>
<string name="poi_road_obstacle">Obstáculo na estrada</string>
<string name="poi_filling_station">Gasolineira</string>
<string name="poi_personal_transport">Transporte privado</string>
<string name="poi_public_transport">Transporte público</string>
<string name="poi_air_transport">Transporte aéreo</string>
<string name="poi_water_transport">Transporte acuático</string>
<string name="poi_bicycle_transport">Transporte en bicicleta</string>
<string name="poi_aerialway_transport">Transporte polo aire</string>
<string name="poi_node_networks">Nodos de rede de sendeiros/bicicletas</string>
<string name="poi_hiking_routes">Rutas de sendeirismo</string>
<string name="poi_power">Enerxía</string>
<string name="poi_communication">Comunicación</string>
<string name="poi_education">Educación</string>
<string name="poi_administrative">Administración</string>
<string name="poi_healthcare">Sanidade</string>
<string name="poi_office">Oficina</string>
<string name="poi_sport">Deporte</string>
<string name="poi_tourism">Turismo</string>
<string name="poi_sightseeing">Visitas turísticas</string>
<string name="poi_internet_access">Acceso a Internet</string>
<string name="poi_entertainment">Lecer</string>
<string name="poi_club">Club</string>
<string name="poi_sustenance">Comida</string>
<string name="poi_cafe_and_restaurant">Café e restaurante</string>
<string name="poi_finance">Finanzas</string>
<string name="poi_natural">Natural</string>
<string name="poi_seamark">Náutico</string>
<string name="poi_osmwiki">Wikipedia</string>
<string name="poi_user_defined_other">Definido polo usuario</string>
<string name="poi_cheese">Tenda de queixos</string>
<string name="poi_chocolate">Chocolataría</string>
<string name="poi_coffee">Cafetaría</string>
<string name="poi_pasta">Tenda de pasta</string>
<string name="poi_camera">Cámaras e lentes</string>
<string name="poi_fashion">Tenda de moda</string>
<string name="poi_music">Tenda de música</string>
<string name="poi_optician">Optometría</string>
<string name="poi_tyres">Tenda de pneumáticos</string>
<string name="poi_watches">Reloxaría</string>
<string name="poi_games">Xogos</string>
<string name="poi_model">Modelismo</string>
<string name="poi_trophy">Trofeos, medallas</string>
<string name="poi_video_games">Videoxogos</string>
<string name="poi_pyrotechnics">Pirotecnia</string>
<string name="poi_weapons">Armaría</string>
<string name="poi_perfumery">Perfumaría</string>
<string name="poi_toll_booth">Portaxe</string>
<string name="poi_fuel_diesel">Diesel</string>
<string name="poi_fuel_biodiesel">Biodiesel</string>
<string name="poi_fuel_octane_80">Octano 80</string>
<string name="poi_fuel_octane_91">Octano 91</string>
<string name="poi_fuel_octane_92">Octano 92</string>
<string name="poi_fuel_octane_95">Octano 95</string>
<string name="poi_fuel_octane_98">Octano 98</string>
<string name="poi_fuel_octane_100">Octano 100</string>
<string name="poi_fuel_ethanol">Etanol</string>
<string name="poi_fuel_methanol">Metanol</string>
<string name="poi_fuel_lh2">Hidróxeno líquido</string>
<string name="poi_fuel_electricity">Electricidade</string>
<string name="poi_bus_stop">Parada de autobús</string>
<string name="poi_tram_stop">Parada de tranvía</string>
<string name="poi_bus_station">Estación de autobuses</string>
<string name="poi_railway_station">Estación ferroviaria</string>
<string name="poi_ferry_terminal">Terminal de ferris</string>
<string name="poi_observation_tower">Atalaia</string>
<string name="poi_bell_tower">Campanario</string>
<string name="poi_recycling_centre">Centro</string>
<string name="poi_recycling_glass">Vidro</string>
<string name="poi_recycling_container">Contedor</string>
<string name="poi_recycling_paper">Papel</string>
<string name="poi_recycling_clothes">Roupa</string>
<string name="poi_recycling_cans">Latas</string>
<string name="poi_recycling_glass_bottles">Botellas de vidro</string>
<string name="poi_recycling_plastic">Plástico</string>
<string name="poi_recycling_batteries">Baterías</string>
<string name="poi_recycling_plastic_bottles">Botellas de plástico</string>
<string name="poi_recycling_green_waste">Orgánico</string>
<string name="poi_recycling_waste">Residuos (bolsas negras)</string>
<string name="poi_recycling_newspaper">Prensa</string>
<string name="poi_recycling_cartons">Cartóns</string>
<string name="poi_recycling_cardboard">Cartón</string>
<string name="poi_recycling_magazines">Revistas</string>
<string name="poi_recycling_wood">Madeira</string>
<string name="poi_recycling_books">Libros</string>
<string name="poi_recycling_shoes">Zapatos</string>
<string name="poi_recycling_aluminium">Aluminio</string>
<string name="poi_recycling_organic">Orgánico</string>
<string name="poi_recycling_beverage_cartons">Cartóns de bebidas</string>
<string name="poi_recycling_fluorescent_tubes">Tubos fluorescentes</string>
<string name="poi_recycling_metal">Metal</string>
<string name="poi_recycling_cooking_oil">Aceite de cociña</string>
<string name="poi_recycling_engine_oil">Aceite de motor</string>
<string name="poi_recycling_plastic_bags">Bolsas de plástico</string>
<string name="poi_recycling_mobile_phones">Teléfonos móbiles</string>
<string name="poi_recycling_computers">Computadores</string>
<string name="poi_recycling_tyres">Pneumáticos</string>
<string name="poi_recycling_tv_monitor">TV, monitores</string>
<string name="poi_recycling_tetrapak">Tetrapak</string>
<string name="poi_recycling_cds">CD</string>
<string name="poi_recycling_bottles">Botellas</string>
<string name="poi_recycling_cork">Rolla</string>
<string name="poi_recycling_printer_cartridges">Cartuchos de impresora</string>
<string name="poi_recycling_paint">Pintura</string>
<string name="poi_recycling_compost">Compost</string>
<string name="poi_recycling_christmas_trees">Árbores de Nadal</string>
<string name="poi_recycling_furniture">Mobiliario</string>
<string name="poi_recycling_diapers">Cueiros</string>
<string name="poi_recycling_car_batteries">Baterías de automoción</string>
<string name="poi_recycling_cars">Coches</string>
<string name="poi_recycling_bicycles">Bicicletas</string>
<string name="poi_landfill_waste_nuclear">Residuos nucleares</string>
<string name="poi_industrial">Zona industrial</string>
<string name="poi_man_made">Artificial</string>
<string name="poi_water_supply">Subministro de auga</string>
<string name="poi_emergency_access_point">Punto de acceso de emerxencia</string>
<string name="poi_recycling_fridge_and_freezer">Neveira e conxelador</string>
<string name="poi_meadow">Lameiro</string>
<string name="poi_canal">Canle</string>
<string name="poi_pier">Peirao</string>
<string name="poi_tower">Torre</string>
<string name="poi_radar">Radar</string>
<string name="poi_crane">Guindastre</string>
<string name="poi_reservoir">Encoro</string>
<string name="poi_silo">Silo</string>
<string name="poi_storage_tank">Tanque de almacenamento</string>
<string name="poi_country">País</string>
<string name="poi_capital">Capital</string>
<string name="poi_isolated_dwelling">Vivenda aillada</string>
<string name="poi_residential">Zona residencial</string>
<string name="poi_speech_therapist">Foniatra</string>
<string name="poi_political_party">Sede política</string>
<string name="poi_notary">Notaría</string>
<string name="poi_running_track">Pista de atletismo</string>
<string name="poi_bicycle_track">Ciclovía</string>
<string name="poi_athletics">Atletismo</string>
<string name="poi_canoe">Canoa</string>
<string name="poi_scuba_diving">Mergullo con botella</string>
<string name="poi_equestrian">Equitación</string>
<string name="poi_field_hockey">Campo de hóquei</string>
<string name="poi_racquet">Raqueta</string>
<string name="poi_sailing">Vela</string>
<string name="poi_skating">Patinaxe</string>
<string name="poi_memorial">Monumento</string>
<string name="poi_historic_cannon">Canón histórico</string>
<string name="poi_rune_stone">Pedra con runas</string>
<string name="poi_historic_ship">Embarcación histórica</string>
<string name="poi_historic_mine">Mina histórica</string>
<string name="poi_aquarium">Acuario</string>
<string name="poi_tourism_attraction">Atracción turística</string>
<string name="poi_attraction_carousel">Carrusel</string>
<string name="poi_attraction_maze">Labirinto</string>
<string name="poi_attraction_roller_coaster">Montaña rusa</string>
<string name="poi_attraction_slide">Tobogán</string>
<string name="poi_apartment">Apartamento</string>
<string name="poi_religion_voodoo">Vodú</string>
<string name="poi_religion_spiritualist">Espiritualista</string>
<string name="poi_religion_bahai">Bahai</string>
<string name="poi_religion_scientologist">Ciencioloxía</string>
<string name="poi_religion_pagan">Pagá</string>
<string name="poi_religion_tenrikyo">Tenrikyo</string>
<string name="poi_denomination_catholic">Católica</string>
<string name="poi_denomination_baptist">Baptista</string>
<string name="poi_denomination_roman_catholic">Católica romana</string>
<string name="poi_denomination_orthodox">Ortodoxa</string>
<string name="poi_denomination_lutheran">Luterana</string>
<string name="poi_denomination_sunni">Sunnita</string>
<string name="poi_denomination_protestant">Protestante</string>
<string name="poi_denomination_methodist">Metodista</string>
<string name="poi_denomination_anglican">Anglicana</string>
<string name="poi_denomination_presbyterian">Presbiteriana</string>
<string name="poi_denomination_evangelical">Evanxélica</string>
<string name="poi_denomination_russian_orthodox">Ortodoxa rusa</string>
<string name="poi_denomination_pentecostal">Pentecostal</string>
<string name="poi_denomination_mormon">Mormona</string>
<string name="poi_denomination_jehovahs_witness">Testemuña de Xehová</string>
<string name="poi_denomination_greek_orthodox">Ortodoxa grega</string>
<string name="poi_denomination_reformed">Reformada</string>
<string name="poi_denomination_seventh_day_adventist">Adventista do Sétimo Día</string>
<string name="poi_denomination_new_apostolic">Nova apostólica</string>
<string name="poi_denomination_church_of_england">Igrexa de Inglaterra</string>
<string name="poi_denomination_episcopal">Epicospaliana</string>
<string name="poi_denomination_shia">Shiita</string>
<string name="poi_denomination_greek_catholic">Católica grega</string>
<string name="poi_denomination_tibetan">Tibetá</string>
<string name="poi_denomination_united_reformed">Reformada unida</string>
<string name="poi_denomination_church_of_scotland">Igrexa de Escocia</string>
<string name="poi_denomination_salvation_army">Exército de Salvación</string>
<string name="poi_denomination_mennonite">Mennonita</string>
<string name="poi_denomination_quaker">Quáquera</string>
<string name="poi_denomination_bulgarian_orthodox">Ortodoxa búlgara</string>
<string name="poi_denomination_assemblies_of_god">Asembleas de Deus</string>
<string name="poi_denomination_adventist">Adventista</string>
<string name="poi_denomination_nazarene">Nazarena</string>
<string name="poi_denomination_united_methodist">Metodista unida</string>
<string name="poi_denomination_congregational">Congregacionista</string>
<string name="poi_denomination_old_believers">Antigos Crentes</string>
<string name="poi_denomination_serbian_orthodox">Ortodoxa serbia</string>
<string name="poi_denomination_spiritist">Espiritista</string>
<string name="poi_denomination_armenian_apostolic">Apostólica armenia</string>
<string name="poi_denomination_apostolic">Apostólica</string>
<string name="poi_denomination_church_of_christ">Igrexa de Cristo</string>
<string name="poi_denomination_georgian_orthodox">Ortodoxa xeorxiana</string>
<string name="poi_denomination_scientist">Científica</string>
<string name="poi_denomination_romanian_orthodox">Ortodoxa romanesa</string>
<string name="poi_denomination_unitarian">Unitaria</string>
<string name="poi_denomination_coptic_orthodox">Ortodoxa copta</string>
<string name="poi_denomination_wesleyan">Wesleyana</string>
<string name="poi_denomination_maronite">Maronita</string>
<string name="poi_internet_access_public">Acceso á Internet: público</string>
<string name="poi_internet_access_wired">Acceso á Internet: con fíos</string>
<string name="poi_internet_access_service">Acceso á Internet: servizo</string>
<string name="poi_internet_access_terminal">Acceso á Internet: terminal</string>
<string name="poi_internet_access_wlan">Acceso á Internet: rede local sen fíos</string>
<string name="poi_denomination_mahayana">Mahayana</string>
<string name="poi_viewpoint">Miradoiro</string>
<string name="poi_locality">Localidade</string>
<string name="poi_rest_area">Área de descanso</string>
<string name="poi_sport_motor">Deporte de motor</string>
<string name="poi_boundary_stone">Marco</string>
<string name="poi_general_tourist_attraction_yes">Atracción turística xeral</string>
<string name="poi_attraction_amusement_ride">Atracción de feira</string>
<string name="poi_lodging">Aloxamento</string>
<string name="poi_guest_house">Pensión</string>
<string name="poi_religion_zoroastrian">Zoroastriana</string>
<string name="poi_denomination_united">Unida</string>
<string name="poi_denomination_iglesia_ni_cristo">Iglesia ni cristo</string>
<string name="poi_denomination_latter_day_saints">Santos dos Últimos Días</string>
<string name="poi_denomination_united_church_of_christ">Igrexa Unida de Cristo</string>
<string name="poi_tomb">Tumba</string>
<string name="poi_piste">Pista</string>
<string name="poi_piste_downhill">Pista de esquí</string>
<string name="poi_piste_nordic">Pista de esquí nórdico</string>
<string name="poi_ski_rental">Alugueiro de esquís</string>
<string name="poi_gallery">Galería de arte</string>
<string name="poi_stripclub">Club de striptease</string>
<string name="poi_ski_resort">Estación de esquí</string>
<string name="poi_dog_park">Parque para cans</string>
<string name="poi_harbour">Porto</string>
<string name="poi_bench">Banco</string>
<string name="poi_craft_agricultural_engines">Motores agrícolas</string>
<string name="poi_craft_beekeeper">Apicultor</string>
<string name="poi_craft_optician">Óptico</string>
<string name="poi_shower">Ducha</string>
<string name="poi_smoking_area">Zona de fumadores</string>
<string name="poi_stone">Pelouro notábel</string>
<string name="poi_valley">Val</string>
<string name="poi_water">Auga</string>
<string name="poi_wood">Bosque</string>
<string name="poi_tree">Árbore</string>
<string name="poi_beacon">Baliza</string>
<string name="poi_dyke">Dique</string>
<string name="poi_mooring">Amarre</string>
<string name="poi_military_landuse">Zona militar</string>
<string name="poi_military_nuclear_explosion_site">Lugar de explosión nuclear</string>
<string name="poi_wiki_place">Wikipedia</string>
<string name="poi_wiki_lang_en">Wiki en inglés</string>
<string name="poi_wiki_lang_ar">Wiki en árabe</string>
<string name="poi_wiki_lang_be">Wiki en bielorruso</string>
<string name="poi_wiki_lang_bg">Wiki en búlgaro</string>
<string name="poi_wiki_lang_ca">Wiki en catalán</string>
<string name="poi_wiki_lang_ceb">Wiki en cebuano</string>
<string name="poi_wiki_lang_cs">Wiki en checo</string>
<string name="poi_wiki_lang_da">Wiki en dinamarqués</string>
<string name="poi_wiki_lang_de">Wiki en alemán</string>
<string name="poi_wiki_lang_el">Wiki en grego</string>
<string name="poi_wiki_lang_et">Wiki en estoniano</string>
<string name="poi_wiki_lang_es">Wiki en español</string>
<string name="poi_wiki_lang_fi">Wiki en finlandés</string>
<string name="poi_wiki_lang_fr">Wiki en francés</string>
<string name="poi_wiki_lang_gl">Wiki en galego</string>
<string name="poi_wiki_lang_he">Wiki en hebreo</string>
<string name="poi_wiki_lang_hi">Wiki en hindi</string>
<string name="poi_wiki_lang_hr">Wiki en croata</string>
<string name="poi_wiki_lang_ht">Wiki en haitiano</string>
<string name="poi_wiki_lang_hu">Wiki en húngaro</string>
<string name="poi_wiki_lang_id">Wiki en indonesio</string>
<string name="poi_wiki_lang_it">Wiki en italiano</string>
<string name="poi_wiki_lang_ja">Wiki en xaponés</string>
<string name="poi_wiki_lang_ko">Wiki en coreano</string>
<string name="poi_wiki_lang_lt">Wiki en lituano</string>
<string name="poi_wiki_lang_lv">Wiki en letón</string>
<string name="poi_wiki_lang_ms">Wiki en malaio</string>
<string name="poi_wiki_lang_new">Wiki en newar</string>
<string name="poi_wiki_lang_nl">Wiki en holandés</string>
<string name="poi_wiki_lang_nn">Wiki en noruegués nynorsk</string>
<string name="poi_wiki_lang_no">Wiki en noruegués</string>
<string name="poi_wiki_lang_pl">Wiki en polaco</string>
<string name="poi_wiki_lang_pt">Wiki en portugués</string>
<string name="poi_wiki_lang_ro">Wiki en romanés</string>
<string name="poi_wiki_lang_ru">Wiki en ruso</string>
<string name="poi_wiki_lang_sk">Wiki en eslovaco</string>
<string name="poi_wiki_lang_sl">Wiki en esloveno</string>
<string name="poi_wiki_lang_sr">Wiki en serbio</string>
<string name="poi_wiki_lang_sv">Wiki en sueco</string>
<string name="poi_wiki_lang_sw">Wiki en suahili</string>
<string name="poi_wiki_lang_te">Wiki en telugu</string>
<string name="poi_wiki_lang_th">Wiki en tailandés</string>
<string name="poi_wiki_lang_tr">Wiki en turco</string>
<string name="poi_wiki_lang_uk">Wiki en ucraíno</string>
<string name="poi_wiki_lang_vi">Wiki en vietnamita</string>
<string name="poi_wiki_lang_vo">Wiki en volapük</string>
<string name="poi_wiki_lang_zh">Wiki en chinés</string>
<string name="poi_barrier_entrance">Entrada</string>
<string name="poi_entrance_main">Entrada principal</string>
<string name="poi_entrance">Entrada</string>
<string name="poi_entrance_exit">Saída</string>
<string name="poi_opening_hours">Horario de apertura</string>
<string name="poi_description">Descrición</string>
<string name="poi_phone">Teléfono</string>
<string name="poi_website">Sitio web</string>
<string name="poi_email">Correo electrónico</string>
<string name="poi_fax">Fax</string>
<string name="poi_facebook">Facebook</string>
<string name="poi_twitter">Twitter</string>
<string name="poi_skype">Skype</string>
<string name="poi_youtube">Youtube</string>
<string name="poi_instagram">Instagram</string>
<string name="poi_vk">Vkontakte</string>
<string name="poi_google_plus">Google+</string>
<string name="poi_mobile">Móbil</string>
<string name="poi_maxheight">Altura máxima</string>
<string name="poi_maxweight">Peso máximo</string>
<string name="poi_abandoned">Abandonado</string>
<string name="poi_abandoned_poi">Obxecto abandonado</string>
<string name="poi_disused">En desuso</string>
<string name="poi_brand">Marca</string>
<string name="poi_drinking_water_yes">Auga potábel</string>
<string name="poi_drinking_water_no">Auga non potábel</string>
<string name="poi_supervised_yes">Vixiado</string>
<string name="poi_supervised_no">Non vixiado</string>
<string name="poi_seasonal_yes">Temporal</string>
<string name="poi_seasonal_no">Non temporal</string>
<string name="poi_seasonal_dry_season">Estación seca</string>
<string name="poi_seasonal_wet_season">Estación húmida</string>
<string name="poi_seasonal_spring">Primavera</string>
<string name="poi_seasonal_summer">Verán</string>
<string name="poi_seasonal_autumn">Outono</string>
<string name="poi_seasonal_winter">Inverno</string>
<string name="poi_crossing_traffic_signals">Con sinais de tráfico</string>
<string name="poi_crossing_uncontrolled">Sen control</string>
<string name="poi_crossing_unmarked">Sen marcas</string>
<string name="poi_start_date">Data de inicio</string>
<string name="poi_wheelchair">Cadeira de rodas</string>
<string name="poi_access_private">Acceso privado</string>
<string name="poi_access_no">Sen acceso</string>
<string name="poi_access_permissive">Acceso permisivo</string>
<string name="poi_access_customers">Acceso para clientes</string>
<string name="poi_access_delivery">Acceso para entregas</string>
<string name="poi_access_agricultural">Acceso agrícola</string>
<string name="poi_content_water">Auga (contido)</string>
<string name="poi_content_fuel">Combustíbel (contido)</string>
<string name="poi_content_wine">Viño (contido)</string>
<string name="poi_content_biomass">Biomasa (contido)</string>
<string name="poi_content_crop">Colleita (contido)</string>
<string name="poi_content_fodder">Forraxe (contido)</string>
<string name="poi_content_beer">Cervexa (contido)</string>
<string name="poi_content_salt">Sal (contido)</string>
<string name="poi_scuba_diving_shop">Tenda de materiais de mergullo con botella</string>
<string name="poi_car_repair">Taller de automoción</string>
<string name="poi_recycling_low_energy_bulbs">Lámpadas de baixo consumo</string>
<string name="poi_club_ethnic">Club étnico</string>
<string name="poi_club_nature">Club da natureza</string>
<string name="poi_club_shooting">Club de tiro</string>
<string name="poi_club_tourism">Club turista</string>
<string name="poi_collection_times">Horario de recollida</string>
<string name="poi_building">Edificio</string>
<string name="poi_content_grain">Gran (contido)</string>
<string name="poi_animal_shelter_dog">Canceira</string>
<string name="poi_animal_shelter_cat">Refuxio para gatos</string>
<string name="poi_animal_shelter_dog_cat">Refuxio para cans e gatos</string>
<string name="poi_animal_shelter_bird">Refuxio para aves</string>
</resources>

View file

@ -442,7 +442,7 @@
<string name="context_menu_item_directions_from">Indicacións desde</string>
<string name="route_descr_map_location">"Mapa: "</string>
<string name="route_descr_lat_lon">Lat %1$.3f, lon %2$.3f</string>
<string name="route_descr_current_location">Posición actaul</string>
<string name="route_descr_current_location">Posición actual</string>
<string name="route_to">Para:</string>
<string name="route_via">Pasando por:</string>
<string name="route_from">Desde:</string>
@ -606,7 +606,7 @@
<string name="shared_string_control_start">Comezar</string>
<string name="map_widget_av_notes">Notas de son/vídeo</string>
<string name="osmand_srtm_short_description_80_chars">Engadido de OsmAnd para curvas de nivel sen conexión</string>
<string name="osmand_srtm_long_description_1000_chars">Este engadido fornece curvas de nivel que poden ser mostradas nos mapas sen conexión de OsmAnd. Os datos globais (entre os 70 graos norte e os 70 graos sul) están baseados nas medicións de SRTM (Misión Topográfica con Radar da Lanzadeira Espacial) e ASTER (Radiómetro Espacial Avanzado de Emisión Térmica e Reflexión) e instrumentos de imaxes a bordo do Terra, o satélite máis importante do Sistema de Observación Terrestre da NASA. ASTER é un esforzo cooperativo entre a NASA, o Ministerio de Economía do Xapón, Comercio e Industria (METI) e Sistemas Espaciais Xaponeses (J-spaceystems).</string>
<string name="osmand_srtm_long_description_1000_chars">"Este engadido fornece unha capa de sobreposición de curvas de nivel e unha capa de sombras de altitude (relevo) que poden ser mostradas nos mapas sen conexión de OsmAnd. Esta funcionalidade pode ser moi apreciada por atletas, camiñantes, sendeiristas e calqueira que teña interese pola estrutura de relevo da paisaxe.\n\nOs datos globais (entre os 70 graos norte e os 70 graos sul) están baseados nas medicións de SRTM (Misión Topográfica con Radar da Lanzadeira Espacial) e ASTER (Radiómetro Espacial Avanzado de Emisión Térmica e Reflexión) e instrumentos de imaxes a bordo do Terra, o satélite máis importante do Sistema de Observación Terrestre da NASA. ASTER é un esforzo cooperativo entre a NASA, o Ministerio de Economía do Xapón, Comercio e Industria (METI) e Sistemas Espaciais Xaponeses (J-spaceystems). "</string>
<string name="map_widget_distancemeasurement">Medición de distancias</string>
<string name="audionotes_location_not_defined">A situación que asociar coa nota aínda non foi definida. Con «Empregar a situación...» pódeselle asignar unha nota á situación indicada</string>
@ -615,8 +615,8 @@
<string name="audionotes_plugin_name">Notas de son/vídeo</string>
<string name="index_srtm_parts">partes</string>
<string name="index_srtm_ele">Curvas de nivel</string>
<string name="srtm_plugin_description">Facilita a descarga de curvas de nivel e sombreados sen conexión («Configuración» → «Xestionar os ficheiros de mapas» → «Descargar» → Seleccione o tipo de mapa que desexe).</string>
<string name="srtm_plugin_name">Engadido de curvas de nivel</string>
<string name="srtm_plugin_description">"Este engadido fornece unha capa de sobreposición de curvas de nivel e unha capa de sombras de altitude (relevo) que poden ser mostradas nos mapas sen conexión de OsmAnd. Esta funcionalidade pode ser moi apreciada por atletas, camiñantes, sendeiristas e calqueira que teña interese pola estrutura de relevo da paisaxe.\n\nOs datos globais (entre os 70 graos norte e os 70 graos sul) están baseados nas medicións de SRTM (Misión Topográfica con Radar da Lanzadeira Espacial) e ASTER (Radiómetro Espacial Avanzado de Emisión Térmica e Reflexión) e instrumentos de imaxes a bordo do Terra, o satélite máis importante do Sistema de Observación Terrestre da NASA. ASTER é un esforzo cooperativo entre a NASA, o Ministerio de Economía do Xapón, Comercio e Industria (METI) e Sistemas Espaciais Xaponeses (J-spaceystems). "</string>
<string name="srtm_plugin_name">Curvas de nivel</string>
<string name="download_select_map_types">Outros mapas</string>
<string name="download_roads_only_item">Só as estradas</string>
<string name="download_srtm_maps">Curvas de nivel</string>
@ -767,7 +767,7 @@
<string name="map_widget_parking">Aparcamento</string>
<string name="map_widget_monitoring">Gravación de GPX</string>
<string name="map_widget_monitoring">Rexistro de GPX</string>
<string name="map_widget_speed">Velocidade</string>
<string name="map_widget_distance">Destino</string>
<string name="map_widget_altitude">Altitude</string>
@ -822,7 +822,7 @@
<string name="osmand_parking_am">AM</string>
<string name="osmand_parking_position_name">Punto de aparcamento</string>
<string name="osmand_parking_plugin_description">Este engadido permite almacenar a situación do coche aparcado.</string>
<string name="osmand_parking_plugin_name">Engadido de posición de aparcamento</string>
<string name="osmand_parking_plugin_name">Posición de aparcamento</string>
<string name="context_menu_item_add_parking_point">Marcar como posición de aparcamento</string>
<string name="context_menu_item_delete_parking_point">Eliminar un marcador de aparcamento</string>
<string name="gpxup_public">Público</string>
@ -865,7 +865,7 @@
<string name="local_indexes_cat_tile">Mapas con conexión e en teselas</string>
<string name="local_indexes_cat_map">Mapas sen conexión (vectoriais)</string>
<string name="index_settings_descr">Descargar e xestionar ficheiros de mapas sen conexión almacenados no dispositivo</string>
<string name="map_online_plugin_is_not_installed">Activar o engadido de mapas con conexión para seleccionar diferentes fontes de mapas</string>
<string name="map_online_plugin_is_not_installed">Activar o engadido de mapas con conexión para seleccionar fontes de mapas diferentes</string>
<string name="map_online_data">Mapas con conexión e en teselas</string>
<string name="map_online_data_descr">Empregar mapas con conexión (descargar e gardar temporalmente as teselas no cartón SD)</string>
<string name="online_map_settings">Mapas con conexión</string>
@ -950,7 +950,7 @@
<string name="right">á dereita</string>
<string name="back_right">atrás á dereita</string>
<string name="back">atrás</string>
<string name="back_left">Atrás á esquerda</string>
<string name="back_left">atrás á esquerda</string>
<string name="left">á esquerda</string>
<string name="front_left">adiante á esquerda</string>
<string name="oclock">en punto</string>
@ -1015,7 +1015,7 @@
\n\t- Other small features "</string>
<string name="free_version_message">Esta versión gratuíta do OsmAnd está limitada a %1$s descargas e non admite artigos da Wikipedia sen conexión.</string>
<string name="free_version_title">Versión libre</string>
<string name="poi_context_menu_showdescription">Mostrar a descrición dos puntos de interese (PDI)</string>
<string name="poi_context_menu_showdescription">Mostrar a descrición do punto de interese (PDI)</string>
<string name="index_name_north_america">Norteamérica</string>
<string name="index_name_us">Norteamérica - Estados Unidos</string>
<string name="index_name_central_america">América Central</string>
@ -1492,7 +1492,7 @@
<string name="searching">A buscar…</string>
<string name="searching_address">A buscar o enderezo…</string>
<string name="search_osm_nominatim">Busca con conexión empregando OSM Nominatim</string>
<string name="hint_search_online">Número da casa, rúa, cidade</string>
<string name="hint_search_online">Busca na rede: Número da casa, rúa, cidade</string>
<string name="search_offline_address">Busca sen conexión</string>
<string name="search_online_address">Busca con conexión</string>
<string name="max_level_download_tile">Max. online zoom</string>
@ -1956,4 +1956,46 @@
<string name="please_specify_poi_type">Indique o tipo de PDI.</string>
<string name="shared_string_deselect">Anular a selección</string>
<string name="shared_string_deselect_all">Non seleccionar nada</string>
<string name="osm_edit_context_menu_delete">Eliminar edición de OSM</string>
<string name="rendering_attr_OSMMapperAssistant_name">Axudante de creación de mapas de OSM</string>
<string name="osm_changes_added_to_local_edits">Os cambios en OSM foron engadidos ao conxunto de cambios local</string>
<string name="osmand_parking_overdue">vencido</string>
<string name="action_create">Creacción de acción</string>
<string name="action_modify">Modificación de acción</string>
<string name="action_delete">Eliminación de acción</string>
<string name="shared_string_export">Exportar</string>
<string name="shared_string_unexpected_error">Produciuse un erro inesperado</string>
<string name="shared_string_action_template">Acción {0}</string>
<string name="shared_string_collapse">Contraer</string>
<string name="shared_string_address">Enderezo</string>
<string name="shared_string_logoff">Pechar a sesión</string>
<string name="rename_failed">Non foi posíbel cambiar o nome</string>
<string name="days_behind">días de atraso</string>
<string name="rendering_attr_pisteGrooming_name">Coidado de pistas</string>
<string name="nautical_maps_missing">Para poder mostrar mapas náuticos hai que descargar o mapa especial sen conexión</string>
<string name="edit_group">Editar o grupo</string>
<string name="parking_place">Lugar de aparcamento</string>
<string name="version_settings_descr">Descargar versións nocturnas</string>
<string name="version_settings">Construcións (versións)</string>
<string name="voices">Indicacións con voz</string>
<string name="poi_action_delete">eliminar</string>
<string name="use_fast_recalculation">Recálculo automático da ruta</string>
<string name="failed_to_upload">Non foi posíbel enviar</string>
<string name="opening_at">Abre ás</string>
<string name="closing_at">Pecha ás</string>
<string name="add_opening_hours">Engadir as horas de apertura</string>
<string name="working_days">Días laborábeis</string>
<string name="recent_places">Lugares recentes</string>
<string name="favourites">Favoritos</string>
<string name="av_locations">Lugares</string>
<string name="rendering_value_boldOutline_name">Bordo groso</string>
<string name="lang_nv">Navaho</string>
<string name="disable_recording_once_app_killed_descrp">Detén o rexistro de GPX cando se mata o aplicativo (mediante apps recentes). A indicación do modo de durmir de OsmAnd desaparece da barra de notificacións de Android).</string>
<string name="agps_info">Información de A-GPS</string>
<string name="agps_data_last_downloaded">Datos de A-GPS descargados por última vez: %1$s</string>
<string name="delay_to_start_navigation_descr">Indicar o tempo de agarda durante o que ficar na pantalla de planificación de rutas</string>
<string name="delay_to_start_navigation">Iniciar a navegación paso a paso despois de…</string>
<string name="parking_place_limited">Tempo de aparcamento limitado a</string>
<string name="plugin_nautical_name">Vista de mapa náutico</string>
<string name="save_track_to_gpx_globally_headline">Rexistro de pistas baixo petición</string>
</resources>

View file

@ -2166,4 +2166,8 @@ Si consiglia di aggiungere uno o più punti intermedi per migliorarne le prestaz
<string name="poi_dialog_poi_type">Tipo di PDI</string>
<string name="number_of_rows_in_dash">Numero di righe del cruscotto %1$s</string>
<string name="please_specify_poi_type">Per favore specifica il tipo si PDI.</string>
<string name="poi_action_delete">Elimina</string>
<string name="working_days">Giorni lavorativi</string>
<string name="recent_places">Luoghi recenti</string>
<string name="favourites">Preferiti</string>
</resources>

View file

@ -2127,4 +2127,6 @@
<string name="closing_at">Darbo pabaiga</string>
<string name="contact_info">Kontaktinė informacija</string>
<string name="please_specify_poi_type">Prašome nurodyti LV tipą.</string>
</resources>
<string name="poi_action_delete">trinti</string>
<string name="working_days">Darbo dienos</string>
</resources>

View file

@ -2213,4 +2213,6 @@ Afganistan, Afryka Południowa, Albania, Algieria, Andora, Angola, Anguilla, Ant
<string name="offline_maps_and_navigation">Mapy offline\ni nawigacja</string>
<string name="please_specify_poi_type">Proszę określić typ POI.</string>
<string name="number_of_rows_in_dash">Ilość wierszy na ekranie głównym %1$s</string>
<string name="description">Opis</string>
<string name="poi_dialog_poi_type">Rodzaj POI</string>
</resources>

View file

@ -1134,4 +1134,28 @@
<string name="poi_denomination_mahayana">Mahayana</string>
<string name="poi_denomination_united">Unida</string>
<string name="poi_landfill_waste_nuclear">Resíduos nucleares</string>
<string name="poi_brownfield">Terreno abandonado</string>
<string name="poi_greenfield">Terreno virgem</string>
<string name="poi_start_date">Data de início</string>
<string name="poi_wheelchair">Cadeirante</string>
<string name="poi_bunker_silo">Silo de abrigo</string>
<string name="poi_content_silage">Silagem (conteúdo)</string>
<string name="poi_content_water">Água (conteúdo)</string>
<string name="poi_content_slurry">Chorume (conteúdo)</string>
<string name="poi_content_oil">Óleo (conteúdo)</string>
<string name="poi_content_fuel">Combustível (conteúdo)</string>
<string name="poi_content_manure">Estrume (conteúdo)</string>
<string name="poi_content_wine">Vinho (conteúdo)</string>
<string name="poi_content_sewage">Esgoto (conteúdo)</string>
<string name="poi_content_gas">Gás (conteúdo)</string>
<string name="poi_content_biomass">Biomassa (conteúdo)</string>
<string name="poi_content_wastewater">Águas residuais (conteúdo)</string>
<string name="poi_content_crop">Colheita (conteúdo)</string>
<string name="poi_content_fodder">Forragens (conteúdo)</string>
<string name="poi_content_beer">Cerveja (conteúdo)</string>
<string name="poi_content_salt">Sal (conteúdo)</string>
<string name="poi_content_grain">Grão (conteúdo)</string>
</resources>

View file

@ -526,7 +526,7 @@
<string name="always_center_position_on_map">Sempre centralizar a posição no mapa</string>
<string name="voice_pref_title">Voz</string>
<string name="misc_pref_title">Diversos</string>
<string name="localization_pref_title">Posição</string>
<string name="localization_pref_title">Localização</string>
<string name="index_item_nation_addresses">endereços nacionais</string>
<string name="index_item_world_altitude_correction">Correção de altitude mundial</string>
<string name="index_item_world_seamarks">Marcas marítimas mundiais</string>
@ -1813,4 +1813,8 @@
<string name="number_of_rows_in_dash">Número de linhas no traço de %1$s</string>
<string name="tag_poi_amenity">facilidade</string>
<string name="please_specify_poi_type">Por favor, especifique tipo de POI.</string>
</resources>
<string name="working_days">Dias úteis</string>
<string name="recent_places">Locais recentes</string>
<string name="favourites">Favoritos</string>
<string name="poi_action_delete">apagar</string>
</resources>

View file

@ -2071,4 +2071,23 @@
<string name="offline_maps_and_navigation">Офлайн карты\nи Навигация</string>
<string name="building_number">Номер дома</string>
<string name="rendering_attr_pisteGrooming_name">Тип лыжной трассы</string>
</resources>
<string name="download_live_updates">Автоматическое обновление</string>
<string name="dahboard_options_dialog_title">Настройки домашней страницы</string>
<string name="shared_string_card_was_hidden">Карточка была скрыта</string>
<string name="commit_poi">Зафиксировать POI</string>
<string name="tab_title_basic">Основные</string>
<string name="tab_title_advanced">Расширенные</string>
<string name="next_proceed">Следующий</string>
<string name="opening_at">Открытие в</string>
<string name="closing_at">Закрытие в</string>
<string name="tag_poi_name">название</string>
<string name="contact_info">Контактная информация</string>
<string name="description">Описание</string>
<string name="add_opening_hours">Добавить часы работы</string>
<string name="poi_dialog_poi_type">Тип POI</string>
<string name="number_of_rows_in_dash">Количество строк на странице %1$s</string>
<string name="please_specify_poi_type">Пожалуйста, укажите тип POI.</string>
<string name="rendering_value_boldOutline_name">Жирный контур</string>
<string name="working_days">Рабочие дни</string>
<string name="favourites">Избранное</string>
</resources>

View file

@ -2078,4 +2078,8 @@
<string name="tag_poi_amenity">atratzione</string>
<string name="please_specify_poi_type">Dislinda casta de PDI.</string>
<string name="number_of_rows_in_dash">Nùmeru de rigas in su pannellu %1$s</string>
</resources>
<string name="poi_action_delete">burra</string>
<string name="working_days">Dies de traballu</string>
<string name="recent_places">Logos reghentes</string>
<string name="favourites">Prefèrridos</string>
</resources>

View file

@ -903,8 +903,8 @@
<string name="poi_remove_confirm_template">Vymazať {0} (zadajte komentár) ?</string>
<string name="poi_remove_title">Vymazať POI</string>
<string name="poi_remove_success">POI bol úspešne vymazaný</string>
<string name="poi_action_add">Pridať</string>
<string name="poi_action_change">Zmeniť</string>
<string name="poi_action_add">pridať</string>
<string name="poi_action_change">zmeniť</string>
<string name="poi_action_succeded_template">Akcia: {0} úspešne ukončená.</string>
<string name="poi_error_unexpected_template">Vyskytla sa neočakávaná chyba počas vykonávania akcie: {0}.</string>
<string name="poi_error_io_error_template">Vyskytla sa vstupno/výstupná chyba počas vykonávania akcie: {0}.</string>
@ -2278,4 +2278,8 @@ Afganistan, Albánsko, Alžírsko, Andora, Angola, Anguilla, Antigua a Barbuda,
<string name="poi_dialog_poi_type">Typ bodu záujmu</string>
<string name="number_of_rows_in_dash">Počet riadkov v pomlčke %1$s</string>
<string name="please_specify_poi_type">Prosím zadajte typ bodu záujmu.</string>
<string name="poi_action_delete">odstrániť</string>
<string name="working_days">Pracovné dni</string>
<string name="recent_places">História miest</string>
<string name="favourites">Obľúbené</string>
</resources>

View file

@ -1962,4 +1962,20 @@
<string name="routing_attr_avoid_shuttle_train_name">Izogni se vožnji z vlakom</string>
<string name="routing_attr_avoid_shuttle_train_description">Izogni se vožnji z vlakom</string>
<string name="offline_maps_and_navigation">Zemljevidi za delo brez\npovezave in navigacijo</string>
<string name="favourites">Priljubljene</string>
<string name="av_locations_descr">Datoteka GPX z opombami</string>
<string name="av_locations">Mesta</string>
<string name="poi_action_delete">izbriši</string>
<string name="tab_title_basic">Osnovno</string>
<string name="tab_title_advanced">Napredno</string>
<string name="tag_poi_name">ime</string>
<string name="tag_poi_amenity">prednost</string>
<string name="contact_info">Podatki stika</string>
<string name="description">Opis</string>
<string name="add_opening_hours">Dodaj odpiralni čas</string>
<string name="poi_dialog_poi_type">Vrsta točke POI</string>
<string name="number_of_rows_in_dash">Število vrstic v %1$s</string>
<string name="please_specify_poi_type">Določiti je treba vrsto točke POI.</string>
<string name="working_days">Delovni dnevi</string>
<string name="recent_places">Nedavna mesta</string>
</resources>

View file

@ -1988,6 +1988,10 @@
<string name="commit_poi">Skicka in POI</string>
<string name="tag_poi_name">namn</string>
<string name="tag_poi_amenity">service</string>
<string name="number_of_rows_in_dash">Antal rader i panel %1$s</string>
<string name="number_of_rows_in_dash">Antal rader i panelen: %1$s</string>
<string name="please_specify_poi_type">Ange typ av POI.</string>
</resources>
<string name="favourites">Favoriter</string>
<string name="working_days">Arbetsdagar</string>
<string name="recent_places">Nyliga platser</string>
<string name="poi_action_delete">ta bort</string>
</resources>

View file

@ -682,4 +682,357 @@
<string name="poi_denomination_dutch_reformed">Hollanda Reformu</string>
<string name="poi_denomination_apostolic">Apostolik</string>
<string name="poi_denomination_reform">Reform</string>
</resources>
<string name="poi_denomination_latter_day_saints">İkinci gün azizleri</string>
<string name="poi_denomination_church_of_christ">İsa kilisesi</string>
<string name="poi_denomination_united_church_of_christ">Birleşik isa kilisesi</string>
<string name="poi_denomination_georgian_orthodox">Gürcü ortodoks</string>
<string name="poi_denomination_scientist">Bilim adamı</string>
<string name="poi_denomination_romanian_orthodox">Romanya ortodoks</string>
<string name="poi_denomination_ethiopian_orthodox_tewahedo">Etiyopya Ortodoks Habeş</string>
<string name="poi_denomination_unitarian">Üniteryan</string>
<string name="poi_denomination_coptic_orthodox">Koptik ortodoks</string>
<string name="poi_denomination_wesleyan">Wesleyan</string>
<string name="poi_denomination_shaktism">Saktism</string>
<string name="poi_denomination_shingon_shu">Shingon shu</string>
<string name="poi_denomination_maronite">Maronit</string>
<string name="poi_denomination_mahayana">Mahayana</string>
<string name="poi_internet_access_wlan">İnternet erişimi: wlan</string>
<string name="poi_internet_access_terminal">İnternet erişimi: terminal</string>
<string name="poi_internet_access_wired">İnternet erişimi: kablolu</string>
<string name="poi_internet_access_public">İnternet erişimi: halka açık</string>
<string name="poi_internet_access_service">İnternet erişimi: hizmet</string>
<string name="poi_monastery">Manastır</string>
<string name="poi_historic_monastery">Tarihi Manastır</string>
<string name="poi_religious">Dini alan</string>
<string name="poi_wayside_cross">Wayside çapraz</string>
<string name="poi_wayside_shrine">Yolkenarı tapınağı</string>
<string name="poi_information">Turistik bilgiler</string>
<string name="poi_clock">Saat</string>
<string name="poi_travel_agent">Seyahat acentesi</string>
<string name="poi_viewpoint">Bakış açısı</string>
<string name="poi_camp_site">Kamp alanı</string>
<string name="poi_caravan_site">Karavan alanı</string>
<string name="poi_picnic_site">Piknik alanı</string>
<string name="poi_picnic_table">Piknik masası</string>
<string name="poi_hot_spring">Kaplıca</string>
<string name="poi_geyser">Sıcak su kaynağı</string>
<string name="poi_cemetery">Mezarlık</string>
<string name="poi_grave_yard">Mezarlık</string>
<string name="poi_tomb">Mezar</string>
<string name="poi_shelter">Barınak</string>
<string name="poi_funicular">Füniküler</string>
<string name="poi_resort">Resort</string>
<string name="poi_hanami">Hanami</string>
<string name="poi_wine_cellar">Şarap mahzeni</string>
<string name="poi_winery">Şaraphane</string>
<string name="poi_club_art">Sanat Kulübü</string>
<string name="poi_club_astronomy">Astronomi kulübü</string>
<string name="poi_club_computer">Bilgisayar Kulübü</string>
<string name="poi_club_board_games">Masa oyunları kulübü</string>
<string name="poi_club_motorcycle">Motosiklet Kulübü</string>
<string name="poi_club_sport">Spor Kulübü</string>
<string name="poi_club_game">Oyun Kulübü</string>
<string name="poi_club_automobile">Otomobil kulübü</string>
<string name="poi_club_chess">Satranç Kulübü</string>
<string name="poi_club_cinema">Sinema kulübü</string>
<string name="poi_club_fan">Fan kulüp</string>
<string name="poi_club_fishing">Balıılık Kulübü</string>
<string name="poi_club_veterans">Gaziler kulübü</string>
<string name="poi_club_linux">Linux kulübü</string>
<string name="poi_club_theatre">Tiyatro Kulübü</string>
<string name="poi_club_history"/>
<string name="poi_club_music">Müzik kulübü</string>
<string name="poi_club_ethnic">Etnik kulüb</string>
<string name="poi_club_nature">Doğa kulübü</string>
<string name="poi_club_photography">Fotoğrafçılık Kulübü</string>
<string name="poi_club_hunting">Avcılık Kulübü</string>
<string name="poi_club_shooting">Atıcılık Kulübü</string>
<string name="poi_club_tourism">Turizm kulübü</string>
<string name="poi_club_charity">Yardım kulübü</string>
<string name="poi_piste">Bakırlı</string>
<string name="poi_piste_downhill">Yokuş aşağı pisti</string>
<string name="poi_piste_nordic">İskandinav pisti</string>
<string name="poi_piste_skitour">Kayak pisti</string>
<string name="poi_piste_hike">Yürüyüş pisti</string>
<string name="poi_piste_sleigh">Kızak pisti</string>
<string name="poi_piste_sled">Kızak pisti</string>
<string name="poi_piste_snow_park">Kar parkı</string>
<string name="poi_piste_playground">Oyun pisti</string>
<string name="poi_piste_ice_skate">Buz pateni</string>
<string name="poi_ski_rental">Kayak kiralama</string>
<string name="poi_library">Kütüphane</string>
<string name="poi_arts_centre">Sanat Merkezi</string>
<string name="poi_cinema">Sinema</string>
<string name="poi_community_centre">Topluluk merkezi</string>
<string name="poi_social_centre">Sosyal merkez</string>
<string name="poi_theatre">Tiyatro</string>
<string name="poi_circus">Sirk</string>
<string name="poi_gallery">Sanat Galerisi</string>
<string name="poi_dance_floor">Dans pisti</string>
<string name="poi_nightclub">Gece kulübü</string>
<string name="poi_stripclub">Striptiz kulübü</string>
<string name="poi_ski_resort">Kayak Merkezi</string>
<string name="poi_beach_resort">Beach resort</string>
<string name="poi_dog_park">Köpek Parkı</string>
<string name="poi_leisure_fishing">Balık tutma yeri</string>
<string name="poi_hunting_stand">Avcılık standı</string>
<string name="poi_harbour">Liman</string>
<string name="poi_marina">Marina</string>
<string name="poi_miniature_golf">Minyatür golf</string>
<string name="poi_playground">Oyun alanı</string>
<string name="poi_bench">Tezgah</string>
<string name="poi_swimming_pool">Yüzme Havuzu</string>
<string name="poi_water_park">Su Parkı</string>
<string name="poi_park">Park</string>
<string name="poi_recreation_ground">Rekreasyon alanı</string>
<string name="poi_village_green">Yeşil köy</string>
<string name="poi_trail_riding_station">İz sürme istasyonu</string>
<string name="poi_cafe">Cafe</string>
<string name="poi_biergarten">Biergarten</string>
<string name="poi_restaurant">Restoran</string>
<string name="poi_bar">Bar</string>
<string name="poi_pub">Pub</string>
<string name="poi_barbecue">Mangal</string>
<string name="poi_craft_agricultural_engines">Tarımsal motorlar</string>
<string name="poi_craft_blacksmith">Demirci</string>
<string name="poi_craft_brewery">Bira fabrikası</string>
<string name="poi_craft_boatbuilder">Boat builder</string>
<string name="poi_craft_bookbinder">Ciltçi</string>
<string name="poi_craft_carpenter">Marangoz</string>
<string name="poi_craft_carpet_layer">Halı katmanı</string>
<string name="poi_craft_caterer">Yemek Servisi</string>
<string name="poi_craft_clockmaker">Saatçi</string>
<string name="poi_craft_dressmaker">Terzi</string>
<string name="poi_craft_electrician">Elektrikçi</string>
<string name="poi_craft_gardener">Bahçıvan</string>
<string name="poi_craft_glaziery">Cam el sanatları</string>
<string name="poi_craft_handicraft">El sanatları</string>
<string name="poi_craft_hvac">Isıtma, havalandırma, Klima</string>
<string name="poi_craft_insulation">Yalıtım</string>
<string name="poi_craft_jeweller">Kuyumcu</string>
<string name="poi_craft_painter">Ressam</string>
<string name="poi_craft_parquet_layer">Parke katmanı</string>
<string name="poi_craft_photographer">Fotoğrafçı</string>
<string name="poi_craft_photographic_laboratory">Fotoğraf Laboratuvarı</string>
<string name="poi_craft_plasterer">Sıvacı</string>
<string name="poi_craft_plumber">Tesisatçı</string>
<string name="poi_craft_pottery">Seramik el sanatları</string>
<string name="poi_craft_rigger">Donatıcı</string>
<string name="poi_craft_saddler">Saraciye</string>
<string name="poi_craft_sailmaker">Marinanıza</string>
<string name="poi_craft_sawmill">Kereste fabrikası</string>
<string name="poi_craft_scaffolder">İskele</string>
<string name="poi_craft_sculptor">Heykeltıraş</string>
<string name="poi_craft_shoemaker">Kunduracı</string>
<string name="poi_craft_stand_builder">Stand Oluşturucu</string>
<string name="poi_craft_stonemason">Taş Ustası</string>
<string name="poi_craft_sun_protection">Güneş koruma sanatı</string>
<string name="poi_craft_sweep">Süpürme</string>
<string name="poi_craft_tailor">Terzi</string>
<string name="poi_craft_tiler">Kiremitçi</string>
<string name="poi_craft_tinsmith">Tenekeci</string>
<string name="poi_craft_upholsterer">Döşemeci</string>
<string name="poi_craft_watchmaker">Saatçi</string>
<string name="poi_craft_window_construction">Pencere İnşaat</string>
<string name="poi_funeral_directors">Cenaze yönetmenleri</string>
<string name="poi_craft_computer">Bilgisayar zanaat</string>
<string name="poi_beauty">Güzellik Salonu</string>
<string name="poi_beauty_salon_nails">Tırnak salonu</string>
<string name="poi_hairdresser">Kuaför</string>
<string name="poi_massage">Masaj salonu</string>
<string name="poi_tattoo">Dövme salonu</string>
<string name="poi_dry_cleaning">Kuru Temizleme</string>
<string name="poi_car_rental">Kiralık Araba</string>
<string name="poi_car_sharing">Araba paylaşımı</string>
<string name="poi_boat_sharing">Tekne paylaşımı</string>
<string name="poi_dock">Liman</string>
<string name="poi_cutline">Cutline</string>
<string name="poi_toilets">Tuvalet</string>
<string name="poi_brothel">Genelev</string>
<string name="poi_smoking_area">Sigara içme alanı</string>
<string name="poi_mortuary">Morg</string>
<string name="poi_crematorium">Ölü yakma yeri</string>
<string name="poi_internet_cafe">İnternet kafe</string>
<string name="poi_bank">Banka</string>
<string name="poi_atm">Bankamatik</string>
<string name="poi_payment_terminal">Ödeme terminali</string>
<string name="poi_money_lender">Borç para veren</string>
<string name="poi_pawnbroker">Tefeci</string>
<string name="poi_bureau_de_change">Büro de değişiklik</string>
<string name="poi_accountant">Muhasebeci</string>
<string name="poi_bitcoin_yes">Bitcoin ödeme</string>
<string name="poi_cave_entrance">Mağara girişi</string>
<string name="poi_peak">Dağın tepesi</string>
<string name="poi_saddle">Eyer</string>
<string name="poi_volcano">Volkan</string>
<string name="poi_crater">Krater</string>
<string name="poi_ridge">Sırt</string>
<string name="poi_glacier">Buzul</string>
<string name="poi_sinkhole">Düden</string>
<string name="poi_waterfall">Şelale</string>
<string name="poi_river">Irmak</string>
<string name="poi_stream">Akış</string>
<string name="poi_rapids">Nehrin akıntılı yeri</string>
<string name="poi_stone">Dikkate değer taş</string>
<string name="poi_cape">Pelerin</string>
<string name="poi_beach">Plaj</string>
<string name="poi_water">Su</string>
<string name="poi_wetland">Sulak</string>
<string name="poi_wood">Ahşap</string>
<string name="poi_tree">Ağaç</string>
<string name="poi_nature_reserve">Doğal rezerv</string>
<string name="poi_strait">Boğaz</string>
<string name="poi_island">Ada</string>
<string name="poi_beacon">Fener</string>
<string name="poi_beacon_cardinal">Kardinal işareti</string>
<string name="poi_beacon_lateral">Yanal işaret</string>
<string name="poi_beacon_safe_water">Güvenli su feneri</string>
<string name="poi_beacon_special_purpose">Özel amaçlı fener</string>
<string name="poi_seamark_building">Seamark binası</string>
<string name="poi_seamark_bridge">Deniz işaret köprüsü</string>
<string name="poi_buoy_cardinal">Kardinal şamandıra</string>
<string name="poi_buoy_safe_water">Güvenli su şamandrası</string>
<string name="poi_buoy_special_purpose">Özel amaçlı şamandıra</string>
<string name="poi_daymark">Daymark</string>
<string name="poi_distance_mark">Mesafe işareti</string>
<string name="poi_dry_dock">Havuz</string>
<string name="poi_dyke">Lezbiyen</string>
<string name="poi_landmark">Simgesel Yapı</string>
<string name="poi_seamark_light">Deniz işareti, ışık</string>
<string name="poi_seamark_light_major">Deniz işareti, büyük ışık</string>
<string name="poi_seamark_light_minor">Deniz işareti, küçük ışık</string>
<string name="poi_seamark_light_float">Deniz işareti, şamandıra ışık</string>
<string name="poi_seamark_light_vessel">Deniz işareti, gemi ışığı</string>
<string name="poi_mooring">Demirleme</string>
<string name="poi_notice">Deniz işareti, uyarı</string>
<string name="poi_pile">Yığın</string>
<string name="poi_radar_transponder">Deniz işareti, radar transponder</string>
<string name="poi_radio_station">Deniz işareti, radyo istasyonu</string>
<string name="poi_small_craft_facility">Küçük tekne tesisi</string>
<string name="poi_topmark">Deniz işareti, topmark</string>
<string name="poi_seamark_rock">Deniz işareti, taş</string>
<string name="poi_seamark_wreck">Deniz işareti, batık</string>
<string name="poi_military_landuse">Askeri bölge</string>
<string name="poi_military_airfield">Askeri Havaalanı</string>
<string name="poi_military_bunker">Askeri sığınak</string>
<string name="poi_military_barracks">Kışla</string>
<string name="poi_military_danger_area">Tehlike alanı</string>
<string name="poi_military_range">Askeri aralığı</string>
<string name="poi_military_office">Askeri Bürosu</string>
<string name="poi_military_naval_base">Askeri deniz üssü</string>
<string name="poi_military_nuclear_explosion_site">Nükleer patlama alanı</string>
<string name="poi_wiki_place">Vikipedi</string>
<string name="poi_wiki_lang_en">İngilizce wiki</string>
<string name="poi_wiki_lang_ar">Arapça wiki</string>
<string name="poi_wiki_lang_be">Belarus wiki</string>
<string name="poi_wiki_lang_bg">Bulgar wiki</string>
<string name="poi_wiki_lang_ca">Katalan wiki</string>
<string name="poi_wiki_lang_ceb">Sebuanca wiki</string>
<string name="poi_wiki_lang_cs">Çek wiki</string>
<string name="poi_wiki_lang_da">Danimarka wiki</string>
<string name="poi_wiki_lang_el">Yunan wiki</string>
<string name="poi_wiki_lang_gl">Galiçyaca wiki</string>
<string name="poi_wiki_lang_he">İbranice wiki</string>
<string name="poi_wiki_lang_hi">Hintçe wiki</string>
<string name="poi_wiki_lang_hr">Hırvat wiki</string>
<string name="poi_wiki_lang_ht">Haiti wiki</string>
<string name="poi_wiki_lang_hu">Macar wiki</string>
<string name="poi_wiki_lang_id">Endonezya wiki</string>
<string name="poi_wiki_lang_it">İtalyan wiki</string>
<string name="poi_wiki_lang_lv">Letonca wiki</string>
<string name="poi_wiki_lang_ms">Malay wiki</string>
<string name="poi_wiki_lang_new">Newar wiki</string>
<string name="poi_wiki_lang_nl">Hollandalı wiki</string>
<string name="poi_wiki_lang_nn">Norveç Nynorsk wiki</string>
<string name="poi_wiki_lang_no">Norveç wiki</string>
<string name="poi_wiki_lang_pl">Lehçe wiki</string>
<string name="poi_wiki_lang_ro">Romen wiki</string>
<string name="poi_wiki_lang_ru">Rus wiki</string>
<string name="poi_wiki_lang_sl">Sloven wiki</string>
<string name="poi_wiki_lang_sw">Swahili wiki</string>
<string name="poi_wiki_lang_zh">Çin wiki</string>
<string name="poi_bollard">İskele babası</string>
<string name="poi_cycle_barrier">Çevrim bariyeri</string>
<string name="poi_motorcycle_barrier">Motosiklet bariyer</string>
<string name="poi_block">Blok</string>
<string name="poi_bus_trap">Otobüs tuzağı</string>
<string name="poi_cattle_grid">Sığır ızgara</string>
<string name="poi_full_height_turnstile">Tam yükseklikte turnike</string>
<string name="poi_bump_gate">Çarpma kapı</string>
<string name="poi_general_barrier">Genel bariyer</string>
<string name="poi_stile">Stil</string>
<string name="poi_kissing_gate">Öpüşme kapısı</string>
<string name="poi_sally_port">Sally bağlantı noktası</string>
<string name="poi_lcn_ref">Yerel döngüsü düğüm ağ</string>
<string name="poi_iwn_ref">Uluslararası yürüyüş ağ düğümü</string>
<string name="poi_nwn_ref">Ulusal yürüyüş ağ düğümü</string>
<string name="poi_rwn_ref">Bölgesel yürüyüş ağ düğümü</string>
<string name="poi_lwn_ref">Yerel yürüyüş ağ düğümü</string>
<string name="poi_route_hiking_iwn_poi">Uluslararası yürüyüş rotası</string>
<string name="poi_route_hiking_nwn_poi">Ulusal yürüyüş rotası</string>
<string name="poi_route_hiking_rwn_poi">Bölgesel yürüme rotası</string>
<string name="poi_route_hiking_lwn_poi">Yerel yürüyüş rotası</string>
<string name="poi_route_hiking_ref_poi">Yürüyüş yolu başvurusu</string>
<string name="poi_opening_hours"/>
<string name="poi_collection_times">Koleksiyon kez</string>
<string name="poi_description">ıklama</string>
<string name="poi_phone">Telefon</string>
<string name="poi_website">İnternet sitesi</string>
<string name="poi_fax">Faks</string>
<string name="poi_youtube">YouTube</string>
<string name="poi_instagram">Instagram</string>
<string name="poi_vk">VKontakte</string>
<string name="poi_google_plus">Google +</string>
<string name="poi_mobile">Mobil</string>
<string name="poi_maxweight">Maksimum ağırlık</string>
<string name="poi_abandoned">Terk edilmiş</string>
<string name="poi_abandoned_poi">Terk edilmiş nesne</string>
<string name="poi_disused">Terkedilmiş</string>
<string name="poi_operator">Operatör</string>
<string name="poi_fee_yes">Ücrete tabi</string>
<string name="poi_fee_no">Ücretsiz</string>
<string name="poi_drinking_water_yes">İçme suyu</string>
<string name="poi_supervised_yes">Denetimli</string>
<string name="poi_supervised_no">Denetimsiz</string>
<string name="poi_seasonal_summer"/>
<string name="poi_seasonal_autumn">Sonbahar</string>
<string name="poi_seasonal_winter">Kış</string>
<string name="poi_crossing_traffic_signals">Trafik işaretleri ile</string>
<string name="poi_crossing_uncontrolled">Kontrolsüz</string>
<string name="poi_crossing_unmarked">İşaretlenmemiş</string>
<string name="poi_access_private">Özel erişim</string>
<string name="poi_access_no">Erişim yok</string>
<string name="poi_access_destination">Hedef erişimi</string>
<string name="poi_enforcement_traffic_signals">Uygulama: trafik sinyalleri</string>
<string name="poi_enforcement_maxspeed">Uygulama: maks hız</string>
<string name="poi_enforcement_maxheight">Uygulama: maks ağırlık</string>
<string name="poi_enforcement_mindistance">Uygulama: min uzunluk</string>
<string name="poi_enforcement_check">Uygulama: kontrol</string>
<string name="poi_enforcement_access">Uygulama: erişim</string>
<string name="poi_enforcement_toll">Uygulama: ücretli</string>
<string name="poi_animal_shelter_dog">Köpekler için barınak</string>
<string name="poi_animal_shelter_cat">Kediler için barınak</string>
<string name="poi_animal_shelter_dog_cat">Kediler ve köpekler için barınak</string>
<string name="poi_animal_shelter_bird">Kuşlar için barınak</string>
<string name="poi_building">Bina</string>
</resources>

View file

@ -1132,4 +1132,28 @@
<string name="poi_denomination_maronite">馬若恩教派</string>
<string name="poi_denomination_mahayana">大乘佛教</string>
<string name="poi_landfill_waste_nuclear">核廢料</string>
<string name="poi_brownfield">棕地</string>
<string name="poi_greenfield">未開發地</string>
<string name="poi_bunker_silo">燃料貯塔</string>
<string name="poi_start_date">開始日期</string>
<string name="poi_wheelchair">輪椅</string>
<string name="poi_content_silage">青貯飼料 (內容)</string>
<string name="poi_content_water">水 (內容)</string>
<string name="poi_content_slurry">礦泥 (內容)</string>
<string name="poi_content_oil">油 (內容)</string>
<string name="poi_content_fuel">燃料 (內容)</string>
<string name="poi_content_manure">肥料 (內容)</string>
<string name="poi_content_wine">酒 (內容)</string>
<string name="poi_content_sewage">污水 (內容)</string>
<string name="poi_content_gas">瓦斯 (內容)</string>
<string name="poi_content_biomass">生物質 (內容)</string>
<string name="poi_content_wastewater">污水 (內容)</string>
<string name="poi_content_crop">農作物 (內容)</string>
<string name="poi_content_fodder">飼料 (內容)</string>
<string name="poi_content_beer">啤酒 (內容)</string>
<string name="poi_content_salt">鹽 (內容)</string>
<string name="poi_content_grain">榖物 (內容)</string>
</resources>

View file

@ -2101,4 +2101,8 @@
<string name="poi_dialog_poi_type">興趣點類型</string>
<string name="number_of_rows_in_dash">在長劃 %1$s 的行數</string>
<string name="please_specify_poi_type">請指定興趣點類型。</string>
<string name="poi_action_delete">删除</string>
<string name="working_days">工作日</string>
<string name="recent_places">最近的地點</string>
<string name="favourites">我的最愛</string>
</resources>

View file

@ -11,7 +11,8 @@
<attr name="expandable_list_background" format="color"/>
<attr name="bg_color" format="reference" />
<attr name="bg_card" format="reference" />
<attr name="bg_map_context_menu" format="reference" />
<attr name="dashboard_divider" format="reference" />
<attr name="dashboard_button" format="reference" />

View file

@ -2190,6 +2190,7 @@ Afghanistan, Albania, Algeria, Andorra, Angola, Anguilla, Antigua and Barbuda, A
<string name="poi_remove_success">POI was successfully deleted</string>
<string name="poi_action_add">add</string>
<string name="poi_action_change">change</string>
<string name="poi_action_delete">delete</string>
<string name="poi_action_succeded_template">Action {0} completed successfully.</string>
<string name="poi_error_unexpected_template">Unexpected error occurred while performing action {0}.</string>
<string name="poi_error_io_error_template">I/O error occurred while performing action {0}.</string>
@ -2256,4 +2257,7 @@ Afghanistan, Albania, Algeria, Andorra, Angola, Anguilla, Antigua and Barbuda, A
<string name="poi_dialog_poi_type">POI Type</string>
<string name="number_of_rows_in_dash">Number of rows in dash %1$s</string>
<string name="please_specify_poi_type">Please specify POI type.</string>
<string name="working_days">Working days</string>
<string name="recent_places">Recent places</string>
<string name="favourites">Favourites</string>
</resources>

View file

@ -66,6 +66,7 @@
<item name="actionBarStyle">@style/Widget.Styled.ActionBarLight</item>
<item name="bg_color">@color/bg_color_light</item>
<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="dashboard_button">@drawable/dashboard_button_light</item>
<item name="search_background">@color/search_background_dark</item>
@ -160,6 +161,7 @@
<item name="actionBarStyle">@style/Widget.Styled.ActionBarDark</item>
<item name="bg_color">@color/bg_color_dark</item>
<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="dashboard_button">@drawable/dashboard_button_dark</item>
<item name="search_background">@color/color_white</item>

View file

@ -1,5 +1,18 @@
package net.osmand.plus;
import android.app.AlertDialog;
import android.content.Context;
import net.osmand.PlatformUtil;
import net.osmand.data.FavouritePoint;
import net.osmand.plus.GPXUtilities.GPXFile;
import net.osmand.plus.GPXUtilities.WptPt;
import net.osmand.plus.api.SQLiteAPI.SQLiteConnection;
import net.osmand.plus.api.SQLiteAPI.SQLiteCursor;
import net.osmand.util.Algorithms;
import org.apache.tools.bzip2.CBZip2OutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
@ -12,19 +25,6 @@ import java.util.List;
import java.util.Map;
import java.util.Set;
import net.osmand.PlatformUtil;
import net.osmand.data.FavouritePoint;
import net.osmand.plus.GPXUtilities.GPXFile;
import net.osmand.plus.GPXUtilities.WptPt;
import net.osmand.plus.api.SQLiteAPI.SQLiteConnection;
import net.osmand.plus.api.SQLiteAPI.SQLiteCursor;
import net.osmand.util.Algorithms;
import org.apache.tools.bzip2.CBZip2OutputStream;
import android.app.AlertDialog;
import android.content.Context;
public class FavouritesDbHelper {
public interface FavoritesUpdatedListener {
@ -173,7 +173,7 @@ public class FavouritesDbHelper {
return true;
}
public static AlertDialog.Builder checkDublicates(FavouritePoint p, FavouritesDbHelper fdb, Context uiContext) {
public static AlertDialog.Builder checkDuplicates(FavouritePoint p, FavouritesDbHelper fdb, Context uiContext) {
boolean emoticons = false;
String index = "";
int number = 0;

View file

@ -38,7 +38,6 @@ public class NavigationService extends Service implements LocationListener {
// global id don't conflict with others
private final static int NOTIFICATION_SERVICE_ID = 5;
public final static String OSMAND_STOP_SERVICE_ACTION = "OSMAND_STOP_SERVICE_ACTION"; //$NON-NLS-1$
public final static String OSMAND_SAVE_SERVICE_ACTION = "OSMAND_SAVE_SERVICE_ACTION";
public static int USED_BY_NAVIGATION = 1;
public static int USED_BY_GPX = 2;
public static int USED_BY_LIVE = 4;
@ -176,26 +175,23 @@ public class NavigationService extends Service implements LocationListener {
if (settings.SAVE_GLOBAL_TRACK_TO_GPX.get()) {
settings.SAVE_GLOBAL_TRACK_TO_GPX.set(false);
}
OsMoPlugin plugin = OsmandPlugin.getEnabledPlugin(OsMoPlugin.class);
if (plugin != null) {
if (plugin.getTracker().isEnabledTracker()) {
plugin.getTracker().disableTracker();
OsMoPlugin osmoPlugin = OsmandPlugin.getEnabledPlugin(OsMoPlugin.class);
if (osmoPlugin != null) {
if (osmoPlugin.getTracker().isEnabledTracker()) {
osmoPlugin.getTracker().disableTracker();
}
}
OsmandMonitoringPlugin monitoringPlugin =
OsmandPlugin.getEnabledPlugin(OsmandMonitoringPlugin.class);
if (monitoringPlugin != null) {
monitoringPlugin.stopRecording();
}
NavigationService.this.stopSelf();
}
};
registerReceiver(broadcastReceiver, new IntentFilter(OSMAND_STOP_SERVICE_ACTION));
saveBroadcastReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
final OsmandMonitoringPlugin plugin = OsmandPlugin
.getEnabledPlugin(OsmandMonitoringPlugin.class);
plugin.saveCurrentTrack();
}
};
registerReceiver(saveBroadcastReceiver, new IntentFilter(OSMAND_SAVE_SERVICE_ACTION));
//Show currently active wake-up interval
int soi = settings.SERVICE_OFF_INTERVAL.get();
@ -215,14 +211,6 @@ public class NavigationService extends Service implements LocationListener {
// notification.flags = Notification.FLAG_NO_CLEAR;
// startForeground(NOTIFICATION_SERVICE_ID, notification);
String stop = getResources().getString(R.string.shared_string_control_stop);
Intent stopIntent = new Intent(OSMAND_STOP_SERVICE_ACTION);
PendingIntent stopPendingIntent = PendingIntent.getBroadcast(this, 0, stopIntent,
PendingIntent.FLAG_UPDATE_CURRENT);
String pause = getResources().getString(R.string.shared_string_save);
Intent saveIntent = new Intent(OSMAND_SAVE_SERVICE_ACTION);
PendingIntent savePendingIntent = PendingIntent.getBroadcast(this, 0, saveIntent,
PendingIntent.FLAG_UPDATE_CURRENT);
Intent contentIntent = new Intent(this, MapActivity.class);
PendingIntent contentPendingIntent = PendingIntent.getActivity(this, 0, contentIntent,
PendingIntent.FLAG_UPDATE_CURRENT);

View file

@ -1,37 +1,5 @@
package net.osmand.plus.activities;
import gnu.trove.list.array.TIntArrayList;
import java.io.File;
import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.LinkedHashMap;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import net.osmand.access.AccessibleToast;
import net.osmand.data.FavouritePoint;
import net.osmand.data.LatLon;
import net.osmand.data.PointDescription;
import net.osmand.plus.FavouritesDbHelper;
import net.osmand.plus.FavouritesDbHelper.FavoriteGroup;
import net.osmand.plus.GPXUtilities;
import net.osmand.plus.GPXUtilities.GPXFile;
import net.osmand.plus.IconsCache;
import net.osmand.plus.OsmAndFormatter;
import net.osmand.plus.OsmandApplication;
import net.osmand.plus.OsmandSettings;
import net.osmand.plus.R;
import net.osmand.plus.TargetPointsHelper;
import net.osmand.plus.base.FavoriteImageDrawable;
import net.osmand.plus.dialogs.DirectionsDialogs;
import net.osmand.plus.helpers.AndroidUiHelper;
import net.osmand.plus.helpers.ColorDialogs;
import net.osmand.plus.myplaces.FavoritesActivity;
import net.osmand.util.MapUtils;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
@ -69,6 +37,39 @@ import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;
import net.osmand.access.AccessibleToast;
import net.osmand.data.FavouritePoint;
import net.osmand.data.LatLon;
import net.osmand.data.PointDescription;
import net.osmand.plus.FavouritesDbHelper;
import net.osmand.plus.FavouritesDbHelper.FavoriteGroup;
import net.osmand.plus.GPXUtilities;
import net.osmand.plus.GPXUtilities.GPXFile;
import net.osmand.plus.IconsCache;
import net.osmand.plus.OsmAndFormatter;
import net.osmand.plus.OsmandApplication;
import net.osmand.plus.OsmandSettings;
import net.osmand.plus.R;
import net.osmand.plus.TargetPointsHelper;
import net.osmand.plus.base.FavoriteImageDrawable;
import net.osmand.plus.dialogs.DirectionsDialogs;
import net.osmand.plus.helpers.AndroidUiHelper;
import net.osmand.plus.helpers.ColorDialogs;
import net.osmand.plus.myplaces.FavoritesActivity;
import net.osmand.util.MapUtils;
import java.io.File;
import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.LinkedHashMap;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import gnu.trove.list.array.TIntArrayList;
public class FavoritesTreeFragment extends OsmandExpandableListFragment {
@ -187,9 +188,9 @@ public class FavoritesTreeFragment extends OsmandExpandableListFragment {
return true;
}
public static boolean editPoint(Context ctx, final FavouritePoint point, final Runnable callback) {
public static boolean editPoint(final Context ctx, final FavouritePoint point, final Runnable callback) {
OsmandApplication app = (OsmandApplication) ctx.getApplicationContext();
Builder builder = new AlertDialog.Builder(ctx);
final Builder builder = new AlertDialog.Builder(ctx);
builder.setTitle(R.string.favourites_context_menu_edit);
final View v = LayoutInflater.from(ctx).inflate(R.layout.favorite_edit_dialog,
null, false);
@ -212,13 +213,33 @@ public class FavoritesTreeFragment extends OsmandExpandableListFragment {
builder.setPositiveButton(R.string.shared_string_apply, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
boolean edited = helper.editFavouriteName(point, editText.getText().toString().trim(), cat.getText()
.toString(), editDescr.getText().toString());
if (edited && callback != null) {
callback.run();
}
final String newName = editText.getText().toString().trim();
point.setName(newName);
point.setCategory(cat.getText().toString());
point.setDescription(editDescr.getText().toString());
AlertDialog.Builder builder1 = helper.checkDuplicates(point, helper, ctx);
if (builder1 != null) {
builder1.setPositiveButton(R.string.shared_string_ok, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
boolean edited = helper.editFavouriteName(point,
point.getName(), cat.getText().toString(),
editDescr.getText().toString());
if (edited && callback != null) {
callback.run();
}
}
});
builder1.create().show();
} else {
boolean edited = helper.editFavouriteName(point,
newName, cat.getText().toString(),
editDescr.getText().toString());
if (edited && callback != null) {
callback.run();
}
}
}
});
builder.create().show();
@ -467,7 +488,8 @@ public class FavoritesTreeFragment extends OsmandExpandableListFragment {
private void enableSelectionMode(boolean selectionMode) {
this.selectionMode = selectionMode;
((FavoritesActivity)getActivity()).setToolbarVisibility(!selectionMode);
((FavoritesActivity)getActivity()).setToolbarVisibility(!selectionMode &&
AndroidUiHelper.isOrientationPortrait(getActivity()));
}
protected void openChangeGroupDialog(final FavoriteGroup group) {

View file

@ -106,7 +106,7 @@ public class MapActivityActions implements DialogProvider {
new ShareLocation(mapActivity).run();
}
public void showNavigationContextMenuPoint(final double latitude, final double longitude, Object selectedObj) {
public void showNavigationContextMenuPoint(final double latitude, final double longitude) {
final ContextMenuAdapter adapter = new ContextMenuAdapter(mapActivity);
if(!mapActivity.getRoutingHelper().isFollowingMode() && !mapActivity.getRoutingHelper().isRoutePlanningMode()) {

View file

@ -1,10 +1,11 @@
package net.osmand.plus.activities;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map.Entry;
import android.content.DialogInterface;
import android.content.Intent;
import android.support.v7.app.AlertDialog;
import android.widget.ListAdapter;
import android.widget.Toast;
import net.osmand.CallbackWithObject;
import net.osmand.ResultMatcher;
@ -12,7 +13,6 @@ import net.osmand.StateChangedListener;
import net.osmand.access.AccessibleToast;
import net.osmand.map.ITileSource;
import net.osmand.map.TileSourceManager.TileSourceTemplate;
import net.osmand.osm.PoiCategory;
import net.osmand.plus.ContextMenuAdapter;
import net.osmand.plus.ContextMenuAdapter.Item;
import net.osmand.plus.GPXUtilities.GPXFile;
@ -47,12 +47,11 @@ import net.osmand.plus.views.RouteLayer;
import net.osmand.plus.views.TransportInfoLayer;
import net.osmand.plus.views.TransportStopsLayer;
import net.osmand.plus.views.mapwidgets.MapWidgetRegistry;
import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
import android.content.DialogInterface;
import android.content.Intent;
import android.widget.ListAdapter;
import android.widget.Toast;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map.Entry;
/**
* Object is responsible to maintain layers using by map activity
@ -259,7 +258,7 @@ public class MapActivityLayers {
addFilterToList(adapter, list, f);
}
Builder builder = new AlertDialog.Builder(activity);
AlertDialog.Builder builder = new AlertDialog.Builder(activity);
ListAdapter listAdapter = adapter.createListAdapter(activity, app.getSettings().isLightContent());
builder.setAdapter(listAdapter, new DialogInterface.OnClickListener(){
@Override
@ -321,7 +320,7 @@ public class MapActivityLayers {
final List<Entry<String, String>> entriesMapList = new ArrayList<Entry<String, String>>(entriesMap.entrySet());
Builder builder = new AlertDialog.Builder(activity);
AlertDialog.Builder builder = new AlertDialog.Builder(activity);
String selectedTileSourceKey = settings.MAP_TILE_SOURCES.get();

View file

@ -1,51 +1,5 @@
package net.osmand.plus.audionotes;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.lang.reflect.Constructor;
import java.lang.reflect.Method;
import java.util.Arrays;
import java.util.Collection;
import java.util.Comparator;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import net.osmand.AndroidUtils;
import net.osmand.IProgress;
import net.osmand.IndexConstants;
import net.osmand.Location;
import net.osmand.PlatformUtil;
import net.osmand.access.AccessibleAlertBuilder;
import net.osmand.access.AccessibleToast;
import net.osmand.data.DataTileManager;
import net.osmand.data.PointDescription;
import net.osmand.plus.ApplicationMode;
import net.osmand.plus.ContextMenuAdapter;
import net.osmand.plus.ContextMenuAdapter.OnContextMenuClick;
import net.osmand.plus.OsmandApplication;
import net.osmand.plus.OsmandPlugin;
import net.osmand.plus.OsmandSettings;
import net.osmand.plus.OsmandSettings.CommonPreference;
import net.osmand.plus.OsmandSettings.OsmandPreference;
import net.osmand.plus.R;
import net.osmand.plus.activities.MapActivity;
import net.osmand.plus.activities.SavingTrackHelper;
import net.osmand.plus.activities.TabActivity.TabItem;
import net.osmand.plus.dashboard.tools.DashFragmentData;
import net.osmand.plus.monitoring.OsmandMonitoringPlugin;
import net.osmand.plus.myplaces.FavoritesActivity;
import net.osmand.plus.views.MapInfoLayer;
import net.osmand.plus.views.OsmandMapTileView;
import net.osmand.plus.views.mapwidgets.TextInfoWidget;
import net.osmand.util.Algorithms;
import net.osmand.util.GeoPointParserUtil.GeoParsedPoint;
import net.osmand.util.MapUtils;
import org.apache.commons.logging.Log;
import android.app.Activity;
import android.app.Dialog;
import android.content.ComponentName;
@ -81,6 +35,52 @@ import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.Toast;
import net.osmand.AndroidUtils;
import net.osmand.IProgress;
import net.osmand.IndexConstants;
import net.osmand.Location;
import net.osmand.PlatformUtil;
import net.osmand.access.AccessibleAlertBuilder;
import net.osmand.access.AccessibleToast;
import net.osmand.data.DataTileManager;
import net.osmand.data.PointDescription;
import net.osmand.plus.ApplicationMode;
import net.osmand.plus.ContextMenuAdapter;
import net.osmand.plus.ContextMenuAdapter.OnContextMenuClick;
import net.osmand.plus.OsmandApplication;
import net.osmand.plus.OsmandPlugin;
import net.osmand.plus.OsmandSettings;
import net.osmand.plus.OsmandSettings.CommonPreference;
import net.osmand.plus.OsmandSettings.OsmandPreference;
import net.osmand.plus.R;
import net.osmand.plus.activities.MapActivity;
import net.osmand.plus.activities.SavingTrackHelper;
import net.osmand.plus.activities.TabActivity.TabItem;
import net.osmand.plus.dashboard.tools.DashFragmentData;
import net.osmand.plus.monitoring.OsmandMonitoringPlugin;
import net.osmand.plus.myplaces.FavoritesActivity;
import net.osmand.plus.views.MapInfoLayer;
import net.osmand.plus.views.OsmandMapTileView;
import net.osmand.plus.views.mapwidgets.TextInfoWidget;
import net.osmand.util.Algorithms;
import net.osmand.util.GeoPointParserUtil.GeoParsedPoint;
import net.osmand.util.MapUtils;
import org.apache.commons.logging.Log;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.lang.reflect.Constructor;
import java.lang.reflect.Method;
import java.util.Arrays;
import java.util.Collection;
import java.util.Comparator;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
public class AudioVideoNotesPlugin extends OsmandPlugin {
@ -1303,6 +1303,6 @@ public class AudioVideoNotesPlugin extends OsmandPlugin {
@Override
public DashFragmentData getCardFragment() {
return new DashFragmentData(DashAudioVideoNotesFragment.TAG,
DashAudioVideoNotesFragment.class, getName(), 10);
DashAudioVideoNotesFragment.class, R.string.audionotes_plugin_name, 10);
}
}

View file

@ -26,6 +26,7 @@ import android.widget.ImageButton;
import android.widget.TextView;
import android.widget.Toast;
import net.osmand.PlatformUtil;
import net.osmand.data.PointDescription;
import net.osmand.plus.GPXUtilities;
import net.osmand.plus.GPXUtilities.GPXFile;
@ -44,6 +45,8 @@ import net.osmand.plus.helpers.AndroidUiHelper;
import net.osmand.plus.myplaces.FavoritesActivity;
import net.osmand.util.Algorithms;
import org.apache.commons.logging.Log;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
@ -54,6 +57,8 @@ import java.util.List;
* Created by Denis on 18.02.2015.
*/
public class NotesFragment extends OsmAndListFragment {
private static final Log LOG = PlatformUtil.getLog(NotesFragment.class);
AudioVideoNotesPlugin plugin;
List<AudioVideoNotesPlugin.Recording> items;
NotesAdapter listAdapter;
@ -161,7 +166,8 @@ public class NotesFragment extends OsmAndListFragment {
private void enableSelectionMode(boolean selectionMode) {
this.selectionMode = selectionMode;
getView().findViewById(R.id.select_all).setVisibility(selectionMode? View.VISIBLE : View.GONE);
((FavoritesActivity)getActivity()).setToolbarVisibility(!selectionMode);
((FavoritesActivity)getActivity()).setToolbarVisibility(!selectionMode &&
AndroidUiHelper.isOrientationPortrait(getActivity()));
}
private void updateSelectionTitle(ActionMode m){
@ -271,6 +277,7 @@ public class NotesFragment extends OsmAndListFragment {
@Override
public boolean onCreateActionMode(final ActionMode mode, Menu menu) {
LOG.debug("onCreateActionMode");
if(type == MODE_SHARE) {
listAdapter.insert(shareLocationFile, 0);
}
@ -302,16 +309,19 @@ public class NotesFragment extends OsmAndListFragment {
@Override
public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
LOG.debug("onPrepareActionMode");
return false;
}
@Override
public boolean onActionItemClicked(ActionMode actionMode, MenuItem menuItem) {
LOG.debug("onActionItemClicked");
return false;
}
@Override
public void onDestroyActionMode(ActionMode mode) {
LOG.debug("onDestroyActionMode");
if(type == MODE_SHARE) {
listAdapter.remove(shareLocationFile);
}

View file

@ -78,25 +78,25 @@ public class DashboardOnMap implements ObservableScrollViewCallbacks {
private static final DashFragmentData[] fragmentsData = new DashFragmentData[]{
new DashFragmentData(DashRateUsFragment.TAG, DashRateUsFragment.class,
"Rate us", rateUsShouldShow, true, 0),
-1, rateUsShouldShow, true, 0),
new DashFragmentData(DashFirstTimeFragment.TAG, DashFirstTimeFragment.class,
"First time", firstTimeShouldShow, true, 1),
-1, firstTimeShouldShow, true, 1),
new DashFragmentData(DashChooseAppDirFragment.TAG, DashChooseAppDirFragment.class,
"Choose app dir", chooseAppDirShouldShow, true, 2),
-1, chooseAppDirShouldShow, true, 2),
new DashFragmentData(DashErrorFragment.TAG, DashErrorFragment.class,
"Error", errorShouldShow, true, 3),
-1, errorShouldShow, true, 3),
new DashFragmentData(DashNavigationFragment.TAG, DashNavigationFragment.class,
"Navigation", 4),
R.string.tip_navigation, 4),
new DashFragmentData(DashWaypointsFragment.TAG, DashWaypointsFragment.class,
"Waypoints", 6),
R.string.waypoints, 6),
new DashFragmentData(DashSearchFragment.TAG, DashSearchFragment.class,
"Search", 7),
R.string.shared_string_search, 7),
new DashFragmentData(DashRecentsFragment.TAG, DashRecentsFragment.class,
"Recent places", 8),
R.string.recent_places, 8),
new DashFragmentData(DashFavoritesFragment.TAG, DashFavoritesFragment.class,
"Favourites", defaultShouldShow, false, 9, DashFavoritesFragment.ROW_NUMBER_TAG),
R.string.favourites, defaultShouldShow, false, 9, DashFavoritesFragment.ROW_NUMBER_TAG),
new DashFragmentData(DashPluginsFragment.TAG, DashPluginsFragment.class,
"Plugins", 14)
R.string.plugin_settings, 14)
};
private MapActivity mapActivity;

View file

@ -10,18 +10,18 @@ import net.osmand.plus.dashboard.DashboardOnMap;
public final class DashFragmentData implements Comparable<DashFragmentData> {
public final String tag;
public final Class<? extends DashBaseFragment> fragmentClass;
public final String title;
public final int titleStringId;
public final ShouldShowFunction shouldShowFunction;
public final boolean customDeletionLogic;
public final int position;
public final String rowNumberTag;
public DashFragmentData(String tag, Class<? extends DashBaseFragment> fragmentClass,
String title, ShouldShowFunction shouldShowFunction,
int titleStringId, ShouldShowFunction shouldShowFunction,
boolean customDeletionLogic, int position, String rowNumberTag) {
this.tag = tag;
this.fragmentClass = fragmentClass;
this.title = title;
this.titleStringId = titleStringId;
this.shouldShowFunction = shouldShowFunction;
this.customDeletionLogic = customDeletionLogic;
this.position = position;
@ -29,19 +29,19 @@ public final class DashFragmentData implements Comparable<DashFragmentData> {
}
public DashFragmentData(String tag, Class<? extends DashBaseFragment> fragmentClass,
String title, ShouldShowFunction shouldShowFunction,
int titleStringId, ShouldShowFunction shouldShowFunction,
boolean customDeletionLogic, int position) {
this(tag, fragmentClass, title, shouldShowFunction, customDeletionLogic, position, null);
this(tag, fragmentClass, titleStringId, shouldShowFunction, customDeletionLogic, position, null);
}
public DashFragmentData(String tag, Class<? extends DashBaseFragment> fragmentClass,
String title, ShouldShowFunction shouldShowFunction, int position) {
this(tag, fragmentClass, title, shouldShowFunction, false, position, null);
int titleStringId, ShouldShowFunction shouldShowFunction, int position) {
this(tag, fragmentClass, titleStringId, shouldShowFunction, false, position, null);
}
public DashFragmentData(String tag, Class<? extends DashBaseFragment> fragmentClass,
String title, int position) {
this(tag, fragmentClass, title, new DashboardOnMap.DefaultShouldShow(), false, position,
int titleStringId, int position) {
this(tag, fragmentClass, titleStringId, new DashboardOnMap.DefaultShouldShow(), false, position,
null);
}

View file

@ -229,7 +229,7 @@ public class DashboardSettingsDialogFragment extends DialogFragment {
viewHolder.position = position;
viewHolder.compoundButton.setTag(viewHolder);
viewHolder.compoundButton.setChecked(checkedItems[position]);
viewHolder.textView.setText(dashFragmentData.title);
viewHolder.textView.setText(dashFragmentData.titleStringId);
viewHolder.textView.setTextColor(checkedItems[position] ? textColorPrimary :
textColorSecondary);
convertView.setTag(viewHolder);

View file

@ -130,7 +130,7 @@ public class OsmandDevelopmentPlugin extends OsmandPlugin {
public DashFragmentData getCardFragment() {
return new DashFragmentData(DashSimulateFragment.TAG,
DashSimulateFragment.class,
getName(),
R.string.debugging_and_development,
new DashboardOnMap.DefaultShouldShow(), 15);
}
}

View file

@ -1,11 +1,22 @@
package net.osmand.plus.development;
import java.io.File;
import java.util.LinkedHashSet;
import java.util.Set;
import android.app.ActionBar;
import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
import android.content.DialogInterface;
import android.content.pm.ActivityInfo;
import android.os.Build;
import android.os.Bundle;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.LinearLayout.LayoutParams;
import android.widget.ScrollView;
import android.widget.TextView;
import android.widget.Toast;
import net.osmand.IndexConstants;
import net.osmand.access.AccessibleToast;
import net.osmand.plus.OsmandApplication;
@ -15,22 +26,13 @@ import net.osmand.plus.voice.AbstractPrologCommandPlayer;
import net.osmand.plus.voice.CommandBuilder;
import net.osmand.plus.voice.CommandPlayer;
import net.osmand.util.Algorithms;
import java.io.File;
import java.util.LinkedHashSet;
import java.util.Set;
import alice.tuprolog.Struct;
import alice.tuprolog.Term;
import android.app.ActionBar;
import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
import android.content.DialogInterface;
import android.content.pm.ActivityInfo;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.LinearLayout.LayoutParams;
import android.widget.ScrollView;
import android.widget.TextView;
import android.widget.Toast;
/**
@ -169,23 +171,23 @@ public class TestVoiceActivity extends OsmandActionBarActivity {
addButton(ll, "New route has been calculated (150m & 2m5sec)", builder(p).newRouteCalculated(150, 125));
addButton(ll, "Route recalculated (23150m & 350sec)", builder(p).routeRecalculated(23150, 350));
addButton(ll, "In 1520m turn slightly left", builder(p).prepareTurn(AbstractPrologCommandPlayer.A_LEFT_SL, 1520, street(p, "")));
addButton(ll, "After 850m turn sharply left onto 'Hauptstra"+"\u00df"+"e', then bear right", builder(p).turn(AbstractPrologCommandPlayer.A_LEFT_SH, 850, street(p, "Hauptstraße")).then().bearRight(street(p, "")));
addButton(ll, "Turn left, then after 100m turn slightly right", builder(p).turn(AbstractPrologCommandPlayer.A_LEFT, street(p, "")).then().turn(AbstractPrologCommandPlayer.A_RIGHT_SL, 100, street(p, "")));
addButton(ll, "In 3100 turn right onto 'SR 80'", builder(p).prepareTurn(AbstractPrologCommandPlayer.A_RIGHT, 3100, street(p, "SR 80")));
addButton(ll, "After 370m turn slightly right onto 'F23' 'Main Street', then bear left", builder(p).turn(AbstractPrologCommandPlayer.A_RIGHT_SL, 370, street(p, "Main Street", "F23")).then().bearLeft(street(p, "")));
addButton(ll, "After 1520m turn slightly left", builder(p).prepareTurn(AbstractPrologCommandPlayer.A_LEFT_SL, 1520, street(p, "")));
addButton(ll, "In 450m turn sharply left onto 'Hauptstra"+"\u00df"+"e', then bear right", builder(p).turn(AbstractPrologCommandPlayer.A_LEFT_SH, 450, street(p, "Hauptstra<EFBFBD>e")).then().bearRight(street(p, "")));
addButton(ll, "Turn left, then in 100m turn slightly right", builder(p).turn(AbstractPrologCommandPlayer.A_LEFT, street(p, "")).then().turn(AbstractPrologCommandPlayer.A_RIGHT_SL, 100, street(p, "")));
addButton(ll, "After 3100 turn right onto 'SR 80'", builder(p).prepareTurn(AbstractPrologCommandPlayer.A_RIGHT, 3100, street(p, "SR 80")));
addButton(ll, "In 370m turn slightly right onto 'F23' 'Main Street', then bear left", builder(p).turn(AbstractPrologCommandPlayer.A_RIGHT_SL, 370, street(p, "Main Street", "F23")).then().bearLeft(street(p, "")));
addButton(ll, "Turn sharply right onto 'Main Street'", builder(p).turn(AbstractPrologCommandPlayer.A_RIGHT_SH, street(p, "Main Street")));
addButton(ll, "In 1810m keep left ' '", builder(p).prepareTurn(AbstractPrologCommandPlayer.A_LEFT_KEEP, 1810, street(p, "")));
addButton(ll, "After 400m keep left ' ' then after 80m keep right 'A1'", builder(p).turn(AbstractPrologCommandPlayer.A_LEFT_KEEP, 400, street(p, "")).then().turn(AbstractPrologCommandPlayer.A_RIGHT_KEEP, 80, street(p,"", "A1")));
addButton(ll, "After 1810m keep left ' '", builder(p).prepareTurn(AbstractPrologCommandPlayer.A_LEFT_KEEP, 1810, street(p, "")));
addButton(ll, "In 400m keep left ' ' then in 80m keep right 'A1'", builder(p).turn(AbstractPrologCommandPlayer.A_LEFT_KEEP, 400, street(p, "")).then().turn(AbstractPrologCommandPlayer.A_RIGHT_KEEP, 80, street(p,"", "A1")));
addButton(ll, "In 640m make a U-turn", builder(p).prepareMakeUT(640, street(p, "")));
addButton(ll, "After 400m make a U-turn", builder(p).makeUT(400, street(p, "")));
addButton(ll, "After 640m make a U-turn", builder(p).prepareMakeUT(640, street(p, "")));
addButton(ll, "In 400m make a U-turn", builder(p).makeUT(400, street(p, "")));
addButton(ll, "Make a U-turn on 'Riviera'", builder(p).makeUT(street(p, "Riviera")));
addButton(ll, "When possible, make a U-turn", builder(p).makeUTwp());
addButton(ll, "In 1250m enter a roundabout [and take the 3rd exit onto 'Liberty']", builder(p).prepareRoundAbout(1250, 3, street(p,"Liberty")));
addButton(ll, "After 450m enter the roundabout and take the 1st exit onto 'Market Square'", builder(p).roundAbout(450, 0, 1, street(p,"", "", "Market Square")));
addButton(ll, "After 1250m enter a roundabout [and take the 3rd exit onto 'Liberty']", builder(p).prepareRoundAbout(1250, 3, street(p,"Liberty")));
addButton(ll, "In 450m enter the roundabout and take the 1st exit onto 'Market Square'", builder(p).roundAbout(450, 0, 1, street(p,"", "", "Market Square")));
addButton(ll, "Roundabout: Take the 2nd exit onto 'Bridge Avenue'", builder(p).roundAbout(0, 2, street(p, "Bridge Avenue")));
addButton(ll, "Follow the road for 2350m to ' '", builder(p).goAhead(2350, street(p, "")));

View file

@ -1,12 +1,16 @@
package net.osmand.plus.dialogs;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
import android.content.Context;
import android.content.DialogInterface;
import android.content.DialogInterface.OnMultiChoiceClickListener;
import android.content.Intent;
import android.support.v7.app.AlertDialog;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Toast;
import net.osmand.access.AccessibleToast;
import net.osmand.core.android.MapRendererContext;
import net.osmand.plus.ContextMenuAdapter;
import net.osmand.plus.ContextMenuAdapter.OnContextMenuClick;
import net.osmand.plus.ContextMenuAdapter.OnRowItemClick;
@ -20,7 +24,6 @@ import net.osmand.plus.activities.MapActivity;
import net.osmand.plus.activities.PluginActivity;
import net.osmand.plus.activities.SettingsActivity;
import net.osmand.plus.activities.TransportRouteHelper;
import net.osmand.plus.dashboard.DashboardOnMap.DashboardType;
import net.osmand.plus.poi.PoiUIFilter;
import net.osmand.plus.rastermaps.OsmandRasterMapsPlugin;
import net.osmand.plus.render.RendererRegistry;
@ -28,21 +31,18 @@ import net.osmand.plus.views.GPXLayer;
import net.osmand.plus.views.OsmandMapTileView;
import net.osmand.plus.views.RouteLayer;
import net.osmand.plus.views.corenative.NativeCoreContext;
import gnu.trove.list.array.TIntArrayList;
import net.osmand.core.android.MapRendererContext;
import net.osmand.render.RenderingRuleProperty;
import net.osmand.render.RenderingRuleStorageProperties;
import net.osmand.render.RenderingRulesStorage;
import net.osmand.util.Algorithms;
import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.DialogInterface.OnMultiChoiceClickListener;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Toast;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
import gnu.trove.list.array.TIntArrayList;
public class ConfigureMapMenu {
@ -473,7 +473,7 @@ public class ConfigureMapMenu {
protected void showPreferencesDialog(final ContextMenuAdapter adapter, final ArrayAdapter<?> a, final int pos, final MapActivity activity,
String category, List<RenderingRuleProperty> ps, final List<CommonPreference<Boolean>> prefs) {
Builder bld = new AlertDialog.Builder(activity);
AlertDialog.Builder bld = new AlertDialog.Builder(activity);
boolean[] checkedItems = new boolean[prefs.size()];
for (int i = 0; i < prefs.size(); i++) {
checkedItems[i] = prefs.get(i).get();

View file

@ -135,7 +135,7 @@ public class FavoriteDialogs {
point.setName(editText.getText().toString().trim());
point.setDescription(description.getText().toString().trim());
point.setCategory(categoryStr);
Builder bld = FavouritesDbHelper.checkDublicates(point, helper, activity);
Builder bld = FavouritesDbHelper.checkDuplicates(point, helper, activity);
if(bld != null) {
bld.setPositiveButton(R.string.shared_string_ok, new DialogInterface.OnClickListener() {
@Override

View file

@ -1,12 +1,24 @@
package net.osmand.plus.helpers;
import java.io.File;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import android.app.Activity;
import android.app.Application;
import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.os.Build;
import android.support.v7.app.AlertDialog;
import android.util.TypedValue;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
import net.osmand.CallbackWithObject;
import net.osmand.IndexConstants;
@ -20,26 +32,14 @@ import net.osmand.plus.OsmAndFormatter;
import net.osmand.plus.OsmandApplication;
import net.osmand.plus.R;
import net.osmand.util.Algorithms;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
import android.app.Application;
import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.os.Build;
import android.util.TypedValue;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
import java.io.File;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class GpxUiHelper {
@ -232,7 +232,7 @@ public class GpxUiHelper {
final List<String> list, final ContextMenuAdapter adapter) {
final OsmandApplication app = (OsmandApplication) activity.getApplication();
final File dir = app.getAppPath(IndexConstants.GPX_INDEX_DIR);
Builder b = new AlertDialog.Builder(activity);
AlertDialog.Builder b = new AlertDialog.Builder(activity);
// final int padding = (int) (12 * activity.getResources().getDisplayMetrics().density + 0.5f);
final boolean light = app.getSettings().isLightContent();
final int layout;

View file

@ -1,7 +1,20 @@
package net.osmand.plus.helpers;
import java.util.ArrayList;
import java.util.List;
import android.app.Activity;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.content.DialogInterface.OnDismissListener;
import android.os.AsyncTask;
import android.support.v4.app.FragmentActivity;
import android.support.v7.app.AlertDialog;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.CompoundButton;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.TextView;
import net.osmand.data.LatLon;
import net.osmand.data.LocationPoint;
@ -16,21 +29,9 @@ import net.osmand.plus.helpers.WaypointHelper.LocationPointWrapper;
import net.osmand.plus.poi.PoiUIFilter;
import net.osmand.plus.views.AnimateDraggingMapThread;
import net.osmand.util.MapUtils;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.content.DialogInterface.OnDismissListener;
import android.os.AsyncTask;
import android.support.v4.app.FragmentActivity;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.CompoundButton;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.TextView;
import java.util.ArrayList;
import java.util.List;
/**
*/

View file

@ -0,0 +1,27 @@
package net.osmand.plus.mapcontextmenu;
import android.graphics.drawable.Drawable;
import android.view.View;
import net.osmand.plus.IconsCache;
import net.osmand.plus.OsmandApplication;
import net.osmand.plus.R;
public abstract class BottomSectionBuilder {
protected OsmandApplication app;
public BottomSectionBuilder(OsmandApplication app) {
this.app = app;
}
public abstract void buildSection(View view);
public Drawable getRowIcon(int iconId) {
IconsCache iconsCache = app.getIconsCache();
boolean light = app.getSettings().isLightContent();
return iconsCache.getIcon(iconId,
light ? R.color.icon_color : R.color.icon_color_light);
}
}

View file

@ -0,0 +1,166 @@
package net.osmand.plus.mapcontextmenu;
import android.content.res.Resources;
import android.util.AttributeSet;
import android.util.TypedValue;
import android.view.Gravity;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import net.osmand.data.Amenity;
import net.osmand.osm.AbstractPoiType;
import net.osmand.osm.MapPoiTypes;
import net.osmand.osm.PoiType;
import net.osmand.plus.OsmandApplication;
import net.osmand.plus.R;
import net.osmand.util.Algorithms;
import java.util.Map;
import static android.util.TypedValue.COMPLEX_UNIT_DIP;
public class InfoSectionBuilder extends BottomSectionBuilder {
private final Amenity amenity;
public InfoSectionBuilder(OsmandApplication app, final Amenity amenity) {
super(app);
this.amenity = amenity;
}
private void buildRow(View view, int iconId, String text) {
/*
<LinearLayout
android:id="@+id/context_menu_top_view"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<LinearLayout
android:id="@+id/context_menu_icon_layout"
android:orientation="horizontal"
android:layout_width="42dp"
android:layout_height="match_parent">
<ImageView
android:id="@+id/context_menu_icon_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center_vertical"
android:scaleType="center"
android:layout_marginStart="12dp"
android:layout_marginLeft="12dp"
android:src="@drawable/ic_action_building_number"/>
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:layout_marginBottom="16dp"
android:orientation="vertical">
<TextView
android:id="@+id/context_menu_line1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="12dp"
android:layout_marginRight="12dp"
android:text="@string/search_address_building"
android:textSize="@dimen/default_list_text_size_large"
android:textColor="?android:textColorPrimary"
android:textStyle="bold"/>
</LinearLayout>
<View
android:layout_width="match_parent"
android:layout_height="1px"
android:background="#c9c9c9"/>
*/
LinearLayout ll = new LinearLayout(view.getContext());
ll.setOrientation(LinearLayout.HORIZONTAL);
ll.setLayoutParams(new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT));
// Icon
LinearLayout llIcon = new LinearLayout(view.getContext());
llIcon.setOrientation(LinearLayout.HORIZONTAL);
llIcon.setLayoutParams(new LinearLayout.LayoutParams(dpToPx(42f), ViewGroup.LayoutParams.MATCH_PARENT));
ll.addView(llIcon);
ImageView icon = new ImageView(view.getContext());
ViewGroup.MarginLayoutParams llIconParams = new ViewGroup.MarginLayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
llIconParams.setMargins(dpToPx(12f), 0, 0, 0);
//llIconParams.setGravity(Gravity.CENTER_VERTICAL);
icon.setLayoutParams(llIconParams);
icon.setScaleType(ImageView.ScaleType.CENTER);
icon.setImageDrawable(getRowIcon(iconId));
llIcon.addView(icon);
// Text
LinearLayout llText = new LinearLayout(view.getContext());
llText.setOrientation(LinearLayout.VERTICAL);
ViewGroup.MarginLayoutParams llTextParams = new ViewGroup.MarginLayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
llTextParams.setMargins(0, dpToPx(4f), 0, dpToPx(4f));
llText.setLayoutParams(llTextParams);
ll.addView(llText);
TextView textView = new TextView(view.getContext());
ViewGroup.MarginLayoutParams llTextViewParams = new ViewGroup.MarginLayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
llTextViewParams.setMargins(dpToPx(10f), 0, dpToPx(10f), 0);
llText.setLayoutParams(llTextViewParams);
}
public int dpToPx(float dp) {
Resources r = app.getResources();
return (int) TypedValue.applyDimension(
COMPLEX_UNIT_DIP,
dp,
r.getDisplayMetrics()
);
}
@Override
public void buildSection(View view) {
MapPoiTypes poiTypes = app.getPoiTypes();
for(Map.Entry<String, String> e : amenity.getAdditionalInfo().entrySet()) {
int iconId = 0;
String key = e.getKey();
String vl = e.getValue();
if(key.startsWith("name:")) {
continue;
} else if(Amenity.OPENING_HOURS.equals(key)) {
iconId = R.drawable.mm_clock; // todo: change icon
} else if(Amenity.PHONE.equals(key)) {
iconId = R.drawable.mm_amenity_telephone; // todo: change icon
} else if(Amenity.WEBSITE.equals(key)) {
iconId = R.drawable.mm_internet_access; // todo: change icon
} else {
iconId = R.drawable.ic_type_info; // todo: change icon
AbstractPoiType pt = poiTypes.getAnyPoiAdditionalTypeByKey(e.getKey());
if (pt != null) {
if(pt instanceof PoiType && !((PoiType) pt).isText()) {
vl = pt.getTranslation();
} else {
vl = /*pt.getTranslation() + ": " + */amenity.unzipContent(e.getValue());
}
} else {
vl = /*Algorithms.capitalizeFirstLetterAndLowercase(e.getKey()) +
": " + */amenity.unzipContent(e.getValue());
}
}
buildRow(view, iconId, vl);
}
}
}

View file

@ -14,6 +14,7 @@ import net.osmand.plus.OsmandSettings;
import net.osmand.plus.activities.MapActivity;
import net.osmand.plus.render.RenderingIcons;
import net.osmand.plus.routing.RoutingHelper;
import net.osmand.plus.views.OsmandMapLayer;
import net.osmand.util.Algorithms;
public class MapContextMenu {
@ -24,7 +25,6 @@ public class MapContextMenu {
private PointDescription pointDescription;
private Object object;
private ContextMenuAdapter menuAdapter;
private String foundStreetName;
@ -59,14 +59,13 @@ public class MapContextMenu {
}
public void show(PointDescription pointDescription, Object object, ContextMenuAdapter menuAdapter) {
public void show(PointDescription pointDescription, Object object) {
if (isMenuVisible())
hide();
this.pointDescription = pointDescription;
this.object = object;
this.menuAdapter = menuAdapter;
acquireStretName();
@ -92,34 +91,37 @@ public class MapContextMenu {
}
public int getLeftIconId() {
if (object instanceof Amenity) {
String id = null;
Amenity o = (Amenity)object;
PoiType st = o.getType().getPoiTypeByKeyName(o.getSubType());
if (st != null) {
if (RenderingIcons.containsSmallIcon(st.getIconKeyName())) {
id = st.getIconKeyName();
} else if (RenderingIcons.containsSmallIcon(st.getOsmTag() + "_" + st.getOsmValue())) {
id = st.getOsmTag() + "_" + st.getOsmValue();
if (object != null) {
if (object instanceof Amenity) {
String id = null;
Amenity o = (Amenity) object;
PoiType st = o.getType().getPoiTypeByKeyName(o.getSubType());
if (st != null) {
if (RenderingIcons.containsSmallIcon(st.getIconKeyName())) {
id = st.getIconKeyName();
} else if (RenderingIcons.containsSmallIcon(st.getOsmTag() + "_" + st.getOsmValue())) {
id = st.getOsmTag() + "_" + st.getOsmValue();
}
}
}
if (id != null) {
Integer resId = RenderingIcons.getResId(id);
if (resId != null) {
return resId;
if (id != null) {
Integer resId = RenderingIcons.getResId(id);
if (resId != null) {
return resId;
}
}
}
}
return 0;
}
public String getAddressStr() {
String res = null;
if (object instanceof Amenity) {
Amenity amenity = (Amenity) object;
res = OsmAndFormatter.getPoiStringWithoutType(amenity, settings.MAP_PREFERRED_LOCALE.get());
if (object != null) {
if (object instanceof Amenity) {
Amenity amenity = (Amenity) object;
res = OsmAndFormatter.getPoiStringWithoutType(amenity, settings.MAP_PREFERRED_LOCALE.get());
}
}
if (Algorithms.isEmpty(res)) {
@ -132,7 +134,7 @@ public class MapContextMenu {
res = typeName;
}
return Algorithms.isEmpty(res) ? "???" : res;
return Algorithms.isEmpty(res) ? "Address is unknown yet" : res; // todo: text constant
}
public String getLocationStr() {
@ -142,12 +144,23 @@ public class MapContextMenu {
return foundStreetName;
}
public BottomSectionBuilder getBottomSectionBuilder() {
if (object != null) {
if (object instanceof Amenity) {
return new InfoSectionBuilder(app, (Amenity)object);
}
}
return null;
}
public void buttonNavigatePressed() {
mapActivity.getMapActions().showNavigationContextMenuPoint(pointDescription.getLat(), pointDescription.getLon(), object);
mapActivity.getMapActions().showNavigationContextMenuPoint(pointDescription.getLat(), pointDescription.getLon());
}
public void buttonFavoritePressed() {
if (object instanceof FavouritePoint) {
if (object != null && object instanceof FavouritePoint) {
mapActivity.getMapActions().editFavoritePoint((FavouritePoint)object);
} else {
mapActivity.getMapActions().addFavouritePoint(pointDescription.getLat(), pointDescription.getLon());
@ -159,6 +172,13 @@ public class MapContextMenu {
}
public void buttonMorePressed() {
final ContextMenuAdapter menuAdapter = new ContextMenuAdapter(mapActivity);
if (object != null) {
for (OsmandMapLayer layer : mapActivity.getMapView().getLayers()) {
layer.populateObjectContextMenu(object, menuAdapter);
}
}
mapActivity.getMapActions().contextMenuPoint(pointDescription.getLat(), pointDescription.getLon(), menuAdapter, object);
}
}

View file

@ -10,14 +10,18 @@ import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import android.view.animation.DecelerateInterpolator;
import android.widget.Button;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import net.osmand.PlatformUtil;
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.activities.search.SearchActivity;
import org.apache.commons.logging.Log;
@ -122,6 +126,10 @@ public class MapContextMenuFragment extends Fragment {
}
});
// Left icon
IconsCache iconsCache = getMyApplication().getIconsCache();
boolean light = getMyApplication().getSettings().isLightContent();
int iconId = MapContextMenu.getInstance().getLeftIconId();
final View iconLayout = view.findViewById(R.id.context_menu_icon_layout);
@ -129,16 +137,34 @@ public class MapContextMenuFragment extends Fragment {
if (iconId == 0) {
iconLayout.setVisibility(View.GONE);
} else {
iconView.setImageResource(iconId);
iconView.setImageDrawable(iconsCache.getIcon(iconId,
light ? R.color.icon_color : R.color.icon_color_light));
}
// Text line 1
TextView line1 = (TextView) view.findViewById(R.id.context_menu_line1);
line1.setText(MapContextMenu.getInstance().getAddressStr());
// Text line 2
TextView line2 = (TextView) view.findViewById(R.id.context_menu_line2);
line2.setText(MapContextMenu.getInstance().getLocationStr());
// Close button
final ImageView closeButtonView = (ImageView)view.findViewById(R.id.context_menu_close_btn_view);
closeButtonView.setImageDrawable(iconsCache.getIcon(R.drawable.ic_action_remove_dark,
light ? R.color.actionbar_dark_color : R.color.actionbar_light_color));
closeButtonView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
((MapActivity)getActivity()).getMapLayers().getContextMenuLayer().hideMapContextMenuMarker();
dismissMenu();
}
});
// Action buttons
final ImageButton buttonNavigate = (ImageButton) view.findViewById(R.id.context_menu_route_button);
buttonNavigate.setImageDrawable(iconsCache.getIcon(R.drawable.map_directions,
light ? R.color.actionbar_dark_color : R.color.actionbar_light_color));
buttonNavigate.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
@ -147,6 +173,8 @@ public class MapContextMenuFragment extends Fragment {
});
final ImageButton buttonFavorite = (ImageButton) view.findViewById(R.id.context_menu_fav_button);
buttonFavorite.setImageDrawable(iconsCache.getIcon(R.drawable.ic_action_fav_dark,
light ? R.color.actionbar_dark_color : R.color.actionbar_light_color));
buttonFavorite.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
@ -155,6 +183,8 @@ public class MapContextMenuFragment extends Fragment {
});
final ImageButton buttonShare = (ImageButton) view.findViewById(R.id.context_menu_share_button);
buttonShare.setImageDrawable(iconsCache.getIcon(R.drawable.abc_ic_menu_share_mtrl_alpha,
light ? R.color.actionbar_dark_color : R.color.actionbar_light_color));
buttonShare.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
@ -163,6 +193,8 @@ public class MapContextMenuFragment extends Fragment {
});
final ImageButton buttonMore = (ImageButton) view.findViewById(R.id.context_menu_more_button);
buttonMore.setImageDrawable(iconsCache.getIcon(R.drawable.ic_action_core_overflow_dark,
light ? R.color.actionbar_dark_color : R.color.actionbar_light_color));
buttonMore.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
@ -170,6 +202,14 @@ public class MapContextMenuFragment extends Fragment {
}
});
// Bottom view
BottomSectionBuilder bottomSectionBuilder = MapContextMenu.getInstance().getBottomSectionBuilder();
if (bottomSectionBuilder != null) {
View bottomView = view.findViewById(R.id.context_menu_bottom_view);
bottomSectionBuilder.buildSection(bottomView);
}
/*
Toolbar toolbar = (Toolbar) view.findViewById(R.id.toolbar);
toolbar.setTitle(R.string.poi_create_title);
@ -215,6 +255,13 @@ public class MapContextMenuFragment extends Fragment {
getActivity().getSupportFragmentManager().popBackStack();
}
public OsmandApplication getMyApplication() {
if (getActivity() == null) {
return null;
}
return (OsmandApplication) getActivity().getApplication();
}
public static void showInstance(final MapActivity mapActivity) {
MapContextMenuFragment fragment = new MapContextMenuFragment();
mapActivity.getSupportFragmentManager().beginTransaction()

View file

@ -1,8 +1,29 @@
package net.osmand.plus.monitoring;
import gnu.trove.list.array.TIntArrayList;
import java.util.List;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.content.Intent;
import android.content.IntentFilter;
import android.support.v4.app.NotificationCompat;
import android.util.DisplayMetrics;
import android.view.View;
import android.view.WindowManager;
import android.widget.ArrayAdapter;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.LinearLayout;
import android.widget.LinearLayout.LayoutParams;
import android.widget.SeekBar;
import android.widget.SeekBar.OnSeekBarChangeListener;
import android.widget.TextView;
import net.osmand.Location;
import net.osmand.ValueHolder;
@ -23,27 +44,15 @@ import net.osmand.plus.views.MapInfoLayer;
import net.osmand.plus.views.OsmandMapLayer.DrawSettings;
import net.osmand.plus.views.OsmandMapTileView;
import net.osmand.plus.views.mapwidgets.TextInfoWidget;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
import android.content.Context;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.util.DisplayMetrics;
import android.view.View;
import android.view.WindowManager;
import android.widget.ArrayAdapter;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.LinearLayout;
import android.widget.LinearLayout.LayoutParams;
import android.widget.SeekBar;
import android.widget.SeekBar.OnSeekBarChangeListener;
import android.widget.TextView;
import java.util.List;
import gnu.trove.list.array.TIntArrayList;
public class OsmandMonitoringPlugin extends OsmandPlugin {
private static final String ID = "osmand.monitoring";
private static final int notificationId = ID.hashCode();
public final static String OSMAND_SAVE_SERVICE_ACTION = "OSMAND_SAVE_SERVICE_ACTION";
private OsmandSettings settings;
private OsmandApplication app;
private TextInfoWidget monitoringControl;
@ -328,6 +337,10 @@ public class OsmandMonitoringPlugin extends OsmandPlugin {
public void stopRecording(){
settings.SAVE_GLOBAL_TRACK_TO_GPX.set(false);
if (app.getNavigationService() != null) {
NotificationManager mNotificationManager =
(NotificationManager) app.getNavigationService()
.getSystemService(Context.NOTIFICATION_SERVICE);
mNotificationManager.cancel(notificationId);
app.getNavigationService().stopIfNeeded(app, NavigationService.USED_BY_GPX);
}
}
@ -366,7 +379,39 @@ public class OsmandMonitoringPlugin extends OsmandPlugin {
}
});
}
String stop = map.getResources().getString(R.string.shared_string_control_stop);
Intent stopIntent = new Intent(NavigationService.OSMAND_STOP_SERVICE_ACTION);
PendingIntent stopPendingIntent = PendingIntent.getBroadcast(map, 0, stopIntent,
PendingIntent.FLAG_UPDATE_CURRENT);
String save = map.getResources().getString(R.string.shared_string_save);
Intent saveIntent = new Intent(OSMAND_SAVE_SERVICE_ACTION);
PendingIntent savePendingIntent = PendingIntent.getBroadcast(map, 0, saveIntent,
PendingIntent.FLAG_UPDATE_CURRENT);
BroadcastReceiver saveBroadcastReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
final OsmandMonitoringPlugin plugin = OsmandPlugin
.getEnabledPlugin(OsmandMonitoringPlugin.class);
if (plugin != null) {
plugin.saveCurrentTrack();
}
}
};
map.registerReceiver(saveBroadcastReceiver, new IntentFilter(OSMAND_SAVE_SERVICE_ACTION));
final NotificationCompat.Builder notificationBuilder =
new android.support.v7.app.NotificationCompat.Builder(map)
.setContentTitle(map.getResources().getString(R.string.map_widget_monitoring))
.setSmallIcon(R.drawable.ic_action_polygom_dark)
// .setLargeIcon(Helpers.getBitmap(R.drawable.mirakel, getBaseContext()))
.setOngoing(true)
.addAction(R.drawable.ic_action_rec_stop, stop, stopPendingIntent)
.addAction(R.drawable.ic_action_save, save, savePendingIntent);
NotificationManager mNotificationManager =
(NotificationManager) map.getSystemService(Context.NOTIFICATION_SERVICE);
mNotificationManager.notify(notificationId, notificationBuilder.build());
}
public static void showIntervalChooseDialog(final Context uiCtx, final String patternMsg,
@ -465,6 +510,7 @@ public class OsmandMonitoringPlugin extends OsmandPlugin {
@Override
public DashFragmentData getCardFragment() {
return new DashFragmentData(DashTrackFragment.TAG, DashTrackFragment.class, getName(), 11);
return new DashFragmentData(DashTrackFragment.TAG, DashTrackFragment.class,
R.string.record_plugin_name, 11);
}
}

View file

@ -1,14 +1,6 @@
package net.osmand.plus.monitoring;
import android.view.Window;
import net.osmand.plus.NavigationService;
import net.osmand.plus.OsmAndTaskManager.OsmAndTaskRunnable;
import net.osmand.plus.OsmandApplication;
import net.osmand.plus.OsmandSettings;
import net.osmand.plus.R;
import net.osmand.plus.activities.SavingTrackHelper;
import net.osmand.plus.activities.SettingsBaseActivity;
import android.content.BroadcastReceiver;
import android.content.ComponentName;
import android.content.Context;
@ -21,6 +13,15 @@ import android.preference.Preference.OnPreferenceChangeListener;
import android.preference.Preference.OnPreferenceClickListener;
import android.preference.PreferenceCategory;
import android.preference.PreferenceScreen;
import android.view.Window;
import net.osmand.plus.NavigationService;
import net.osmand.plus.OsmAndTaskManager.OsmAndTaskRunnable;
import net.osmand.plus.OsmandApplication;
import net.osmand.plus.OsmandSettings;
import net.osmand.plus.R;
import net.osmand.plus.activities.SavingTrackHelper;
import net.osmand.plus.activities.SettingsBaseActivity;
public class SettingsMonitoringActivity extends SettingsBaseActivity {

View file

@ -424,7 +424,8 @@ public class AvailableGPXFragment extends OsmandExpandableListFragment {
private void enableSelectionMode(boolean selectionMode) {
this.selectionMode = selectionMode;
if (AndroidUiHelper.isOrientationPortrait(getActivity())) {
((FavoritesActivity) getActivity()).setToolbarVisibility(!selectionMode);
((FavoritesActivity) getActivity()).setToolbarVisibility(!selectionMode &&
AndroidUiHelper.isOrientationPortrait(getActivity()));
}
}

View file

@ -1,28 +1,24 @@
package net.osmand.plus.osmedit;
import android.app.AlertDialog;
import android.app.Dialog;
import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.v4.app.DialogFragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.LinearLayout;
import android.widget.TextView;
import net.osmand.data.PointDescription;
import net.osmand.plus.OsmandPlugin;
import net.osmand.plus.OsmandSettings;
import net.osmand.plus.ProgressImplementation;
import net.osmand.plus.R;
import net.osmand.plus.activities.MapActivity;
import net.osmand.plus.dashboard.DashBaseFragment;
import net.osmand.plus.osmedit.dialogs.SendPoiDialogFragment;
import java.util.ArrayList;
import java.util.List;
@ -32,7 +28,8 @@ import java.util.Map;
* Created by Denis
* on 20.01.2015.
*/
public class DashOsmEditsFragment extends DashBaseFragment {
public class DashOsmEditsFragment extends DashBaseFragment
implements SendPoiDialogFragment.ProgressDialogPoiUploader {
public static final String TAG = "DASH_OSM_EDITS_FRAGMENT";
OsmEditingPlugin plugin;
@ -96,7 +93,7 @@ public class DashOsmEditsFragment extends DashBaseFragment {
@Override
public void onClick(View v) {
if (point.getGroup() == OsmPoint.Group.POI) {
SendPoiDialogFragment.createInstance((OpenstreetmapPoint) point)
SendPoiDialogFragment.createInstance(new OsmPoint[] {point})
.show(getChildFragmentManager(), "SendPoiDialogFragment");
} else {
uploadItem(point);
@ -123,22 +120,23 @@ public class DashOsmEditsFragment extends DashBaseFragment {
}
}
// TODO: 9/7/15 Redesign osm notes.
private void uploadItem(final OsmPoint point) {
AlertDialog.Builder b = new AlertDialog.Builder(getActivity());
b.setMessage(getString(R.string.local_osm_changes_upload_all_confirm, 1));
b.setPositiveButton(R.string.shared_string_yes, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
showProgressDialog(point);
showProgressDialog(new OsmPoint[] {point}, false);
}
});
b.setNegativeButton(R.string.shared_string_cancel, null);
b.show();
}
private void showProgressDialog(OsmPoint point) {
public void showProgressDialog(OsmPoint[] points, boolean closeChangeSet) {
OpenstreetmapRemoteUtil remotepoi = new OpenstreetmapRemoteUtil(getActivity());
OsmPoint[] toUpload = new OsmPoint[]{point};
OsmPoint[] toUpload = points;
OsmBugsRemoteUtil remotebug = new OsmBugsRemoteUtil(getMyApplication());
ProgressDialog dialog = ProgressImplementation.createProgressDialog(getActivity(),
getString(R.string.uploading), getString(R.string.local_openstreetmap_uploading),
@ -162,7 +160,7 @@ public class DashOsmEditsFragment extends DashBaseFragment {
}
};
UploadOpenstreetmapPointAsyncTask uploadTask = new UploadOpenstreetmapPointAsyncTask(dialog,
listener, plugin, remotepoi, remotebug, toUpload.length);
listener, plugin, remotepoi, remotebug, toUpload.length, closeChangeSet);
uploadTask.execute(toUpload);
dialog.show();
}
@ -199,43 +197,4 @@ public class DashOsmEditsFragment extends DashBaseFragment {
}
}
public static class SendPoiDialogFragment extends DialogFragment {
public static final String OPENSTREETMAP_POINT = "openstreetmap_point";
@NonNull
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
final OpenstreetmapPoint poi = (OpenstreetmapPoint) getArguments().getSerializable(OPENSTREETMAP_POINT);
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
View view = getActivity().getLayoutInflater().inflate(R.layout.send_poi_dialog, null);
final EditText messageEditText = (EditText) view.findViewById(R.id.messageEditText);
final EditText userNameEditText = (EditText) view.findViewById(R.id.userNameEditText);
final EditText passwordEditText = (EditText) view.findViewById(R.id.passwordEditText);
final OsmandSettings settings = ((MapActivity) getActivity()).getMyApplication().getSettings();
userNameEditText.setText(settings.USER_NAME.get());
passwordEditText.setText(settings.USER_PASSWORD.get());
builder.setTitle(R.string.commit_poi)
.setView(view)
.setPositiveButton(R.string.shared_string_ok, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
settings.USER_NAME.set(userNameEditText.getText().toString());
settings.USER_PASSWORD.set(passwordEditText.getText().toString());
poi.setComment(messageEditText.getText().toString());
((DashOsmEditsFragment) getParentFragment()).showProgressDialog(poi);
}
})
.setNegativeButton(R.string.shared_string_cancel, null);
return builder.create();
}
public static SendPoiDialogFragment createInstance(OpenstreetmapPoint poi) {
SendPoiDialogFragment fragment = new SendPoiDialogFragment();
Bundle bundle = new Bundle();
bundle.putSerializable(OPENSTREETMAP_POINT, poi);
fragment.setArguments(bundle);
return fragment;
}
}
}

View file

@ -419,7 +419,12 @@ public class EditPoiFragment extends DialogFragment {
final Runnable successAction,
final Activity activity,
final OpenstreetmapUtil openstreetmapUtil) {
LOG.debug("commitNode(" + "action=" + action + ", n=" + n + ", info=" + info
+ ", comment=" + comment + ", closeChangeSet=" + closeChangeSet
+ ", successAction=" + successAction + ", activity=" + activity
+ ", openstreetmapUtil=" + openstreetmapUtil + ")");
if (info == null && OsmPoint.Action.CREATE != action) {
AccessibleToast.makeText(activity, activity.getResources().getString(R.string.poi_error_info_not_loaded), Toast.LENGTH_LONG).show();
return;
}

View file

@ -13,5 +13,4 @@ public interface OpenstreetmapUtil {
public void closeChangeSet();
public Node loadNode(Amenity n);
}

View file

@ -348,6 +348,7 @@ public class OsmEditingPlugin extends OsmandPlugin {
@Override
public DashFragmentData getCardFragment() {
return new DashFragmentData(DashOsmEditsFragment.TAG, DashOsmEditsFragment.class, getName(), 13);
return new DashFragmentData(DashOsmEditsFragment.TAG, DashOsmEditsFragment.class,
R.string.osm_settings, 13);
}
}

View file

@ -42,6 +42,7 @@ import net.osmand.plus.activities.OsmandActionBarActivity;
import net.osmand.plus.dialogs.DirectionsDialogs;
import net.osmand.plus.helpers.AndroidUiHelper;
import net.osmand.plus.myplaces.FavoritesActivity;
import net.osmand.plus.osmedit.dialogs.SendPoiDialogFragment;
import org.xmlpull.v1.XmlSerializer;
@ -56,7 +57,8 @@ import java.util.List;
* Created by Denis
* on 06.03.2015.
*/
public class OsmEditsFragment extends OsmAndListFragment {
public class OsmEditsFragment extends OsmAndListFragment
implements SendPoiDialogFragment.ProgressDialogPoiUploader {
OsmEditingPlugin plugin;
private OsmEditsAdapter listAdapter;
@ -285,7 +287,8 @@ public class OsmEditsFragment extends OsmAndListFragment {
private void enableSelectionMode(boolean selectionMode) {
this.selectionMode = selectionMode;
getView().findViewById(R.id.select_all).setVisibility(selectionMode ? View.VISIBLE : View.GONE);
((FavoritesActivity) getActivity()).setToolbarVisibility(!selectionMode);
((FavoritesActivity) getActivity()).setToolbarVisibility(!selectionMode &&
AndroidUiHelper.isOrientationPortrait(getActivity()));
}
public OsmandActionBarActivity getActionBarActivity() {
@ -488,11 +491,13 @@ public class OsmEditsFragment extends OsmAndListFragment {
}
private void uploadItems(final OsmPoint[] items) {
UploadOsmEditsConfirmDialogFragment.createInstance(items).show(getChildFragmentManager(),
UploadOsmEditsConfirmDialogFragment.TAG);
SendPoiDialogFragment.createInstance(items).show(getChildFragmentManager(),
SendPoiDialogFragment.TAG);
// UploadOsmEditsConfirmDialogFragment.createInstancee(items).show(getChildFragmentManager(),
// UploadOsmEditsConfirmDialogFragment.TAG);
}
private void showUploadItemsProgressDialog(OsmPoint[] toUpload) {
public void showProgressDialog(OsmPoint[] points, boolean closeChangeSet) {
ProgressDialog dialog = ProgressImplementation.createProgressDialog(
getActivity(),
getString(R.string.uploading),
@ -501,8 +506,8 @@ public class OsmEditsFragment extends OsmAndListFragment {
OsmEditsUploadListener listener = new OsmEditsUploadListenerHelper(getActivity(),
getString(R.string.local_openstreetmap_were_uploaded));
UploadOpenstreetmapPointAsyncTask uploadTask = new UploadOpenstreetmapPointAsyncTask(
dialog, listener, plugin, remotepoi, remotebug, toUpload.length);
uploadTask.execute(toUpload);
dialog, listener, plugin, remotepoi, remotebug, points.length, closeChangeSet);
uploadTask.execute(points);
dialog.show();
}
@ -676,36 +681,36 @@ public class OsmEditsFragment extends OsmAndListFragment {
}
}
public static class UploadOsmEditsConfirmDialogFragment extends DialogFragment {
public static final String TAG = "UploadOsmEditsConfirmDialogFragment";
private static final String POINTS_ARRAY = "points_list";
@NonNull
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
final OsmPoint[] points = (OsmPoint[]) getArguments().getSerializable(POINTS_ARRAY);
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setMessage(
getString(R.string.local_osm_changes_upload_all_confirm, points.length));
builder.setPositiveButton(R.string.shared_string_yes,
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
((OsmEditsFragment) getParentFragment())
.showUploadItemsProgressDialog(points);
}
});
builder.setNegativeButton(R.string.shared_string_cancel, null);
return builder.create();
}
public static UploadOsmEditsConfirmDialogFragment createInstance(OsmPoint[] points) {
UploadOsmEditsConfirmDialogFragment fragment =
new UploadOsmEditsConfirmDialogFragment();
Bundle args = new Bundle();
args.putSerializable(POINTS_ARRAY, points);
fragment.setArguments(args);
return fragment;
}
}
// public static class UploadOsmEditsConfirmDialogFragment extends DialogFragment {
// public static final String TAG = "UploadOsmEditsConfirmDialogFragment";
// private static final String POINTS_ARRAY = "points_list";
//
// @NonNull
// @Override
// public Dialog onCreateDialog(Bundle savedInstanceState) {
// final OsmPoint[] points = (OsmPoint[]) getArguments().getSerializable(POINTS_ARRAY);
// AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
// builder.setMessage(
// getString(R.string.local_osm_changes_upload_all_confirm, points.length));
// builder.setPositiveButton(R.string.shared_string_yes,
// new DialogInterface.OnClickListener() {
// @Override
// public void onClick(DialogInterface dialog, int which) {
// ((OsmEditsFragment) getParentFragment())
// .showUploadItemsProgressDialog(points);
// }
// });
// builder.setNegativeButton(R.string.shared_string_cancel, null);
// return builder.create();
// }
//
// public static UploadOsmEditsConfirmDialogFragment createInstance(OsmPoint[] points) {
// UploadOsmEditsConfirmDialogFragment fragment =
// new UploadOsmEditsConfirmDialogFragment();
// Bundle args = new Bundle();
// args.putSerializable(POINTS_ARRAY, points);
// fragment.setArguments(args);
// return fragment;
// }
// }
}

View file

@ -94,7 +94,7 @@ public class OsmEditsUploadListenerHelper implements OsmEditsUploadListener {
resources.getString(R.string.local_openstreetmap_uploading),
ProgressDialog.STYLE_HORIZONTAL).getDialog();
UploadOpenstreetmapPointAsyncTask uploadTask = new UploadOpenstreetmapPointAsyncTask(
dialog, helper, plugin, remotepoi, remotebug, toUpload.length);
dialog, helper, plugin, remotepoi, remotebug, toUpload.length, false);
uploadTask.execute(toUpload);
dialog.show();

View file

@ -23,19 +23,22 @@ public class UploadOpenstreetmapPointAsyncTask
private boolean interruptUploading = false;
private OsmEditsUploadListener listener;
private OsmEditingPlugin plugin;
private final boolean closeChangeSet;
public UploadOpenstreetmapPointAsyncTask(ProgressDialog progress,
OsmEditsUploadListener listener,
OsmEditingPlugin plugin,
OpenstreetmapRemoteUtil remotepoi,
OsmBugsRemoteUtil remotebug,
int listSize) {
int listSize,
boolean closeChangeSet) {
this.progress = progress;
this.plugin = plugin;
this.remotepoi = remotepoi;
this.remotebug = remotebug;
this.listSize = listSize;
this.listener = listener;
this.closeChangeSet = closeChangeSet;
}
@Override
@ -52,7 +55,8 @@ public class UploadOpenstreetmapPointAsyncTask
if (OsmPoint.Action.CREATE != p.getAction()) {
entityInfo = remotepoi.loadNode(p.getEntity());
}
Node n = remotepoi.commitNodeImpl(p.getAction(), p.getEntity(), entityInfo, p.getComment(), false);
Node n = remotepoi.commitNodeImpl(p.getAction(), p.getEntity(), entityInfo,
p.getComment(), closeChangeSet);
if (n != null) {
plugin.getDBPOI().deletePOI(p);
publishProgress(p);

View file

@ -7,22 +7,15 @@ import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.v4.app.DialogFragment;
import android.support.v7.app.AlertDialog;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.Toast;
import net.osmand.access.AccessibleToast;
import net.osmand.data.Amenity;
import net.osmand.osm.edit.Node;
import net.osmand.plus.OsmandApplication;
import net.osmand.plus.OsmandPlugin;
import net.osmand.plus.OsmandSettings;
import net.osmand.plus.R;
import net.osmand.plus.activities.MapActivity;
import net.osmand.plus.osmedit.EditPoiFragment;
import net.osmand.plus.osmedit.OpenstreetmapLocalUtil;
import net.osmand.plus.osmedit.OpenstreetmapRemoteUtil;
import net.osmand.plus.osmedit.OpenstreetmapUtil;
import net.osmand.plus.osmedit.OsmEditingPlugin;
import net.osmand.plus.osmedit.OsmPoint;
@ -38,47 +31,31 @@ public class DeletePoiDialogFragment extends DialogFragment {
public Dialog onCreateDialog(Bundle savedInstanceState) {
final Activity activity = getActivity();
OsmandSettings settings = ((OsmandApplication) activity.getApplication()).getSettings();
OsmEditingPlugin plugin = OsmandPlugin.getPlugin(OsmEditingPlugin.class);
final OpenstreetmapUtil mOpenstreetmapUtil;
if (settings.OFFLINE_EDITION.get() || !settings.isInternetConnectionAvailable(true)) {
mOpenstreetmapUtil = new OpenstreetmapLocalUtil(plugin, activity);
} else if (!settings.isInternetConnectionAvailable(true)) {
mOpenstreetmapUtil = new OpenstreetmapLocalUtil(plugin, activity);
} else {
mOpenstreetmapUtil = new OpenstreetmapRemoteUtil(activity);
}
mOpenstreetmapUtil = new OpenstreetmapLocalUtil(plugin, activity);
final Bundle args = getArguments();
AlertDialog.Builder builder = new AlertDialog.Builder(activity);
builder.setTitle(R.string.poi_remove_title);
LinearLayout ll = new LinearLayout(activity);
ll.setPadding(4, 2, 4, 0);
ll.setOrientation(LinearLayout.VERTICAL);
final EditText comment = new EditText(activity);
comment.setText(R.string.poi_remove_title);
ll.addView(comment);
final CheckBox closeChangeset;
closeChangeset = new CheckBox(activity);
closeChangeset.setText(R.string.close_changeset);
ll.addView(closeChangeset);
builder.setView(ll);
builder.setTitle(R.string.poi_remove_title);;
builder.setNegativeButton(R.string.shared_string_cancel, null);
builder.setPositiveButton(R.string.shared_string_delete, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Node n = (Node) args.getSerializable(KEY_AMENITY_NODE);
String c = comment.getText().toString();
EditPoiFragment.commitNode(OsmPoint.Action.DELETE, n, mOpenstreetmapUtil.getEntityInfo(), c,
closeChangeset == null ? false : closeChangeset.isSelected(), new Runnable() {
Node node = (Node) args.getSerializable(KEY_AMENITY_NODE);
EditPoiFragment.commitNode(OsmPoint.Action.DELETE, node,
mOpenstreetmapUtil.getEntityInfo(), null, false,
new Runnable() {
@Override
public void run() {
AccessibleToast.makeText(activity, R.string.poi_remove_success, Toast.LENGTH_LONG).show();
AccessibleToast.makeText(activity, R.string.poi_remove_success,
Toast.LENGTH_LONG).show();
if (activity instanceof MapActivity) {
((MapActivity) activity).getMapView().refreshMap(true);
}
}
}, getActivity(), mOpenstreetmapUtil);
},
getActivity(), mOpenstreetmapUtil);
}
});
return builder.create();

View file

@ -46,7 +46,7 @@ public class OpeningHoursDaysDialogFragment extends DialogFragment {
final int pos = (d + 5) % 7;
dayToShow[i] = item.getDays()[pos];
}
builder.setTitle("Working days");
builder.setTitle(getResources().getString(R.string.working_days));
builder.setMultiChoiceItems(daysToShow, dayToShow, new DialogInterface.OnMultiChoiceClickListener() {
@Override

View file

@ -74,13 +74,18 @@ public class OpeningHoursHoursDialogFragment extends DialogFragment {
float density = getActivity().getResources().getDisplayMetrics().density;
int paddingInPx = (int) (paddingInDp * density);
final TypedValue textColorTypedValue = new TypedValue();
getActivity().getTheme().resolveAttribute(android.R.attr.textColorPrimary,
textColorTypedValue, true);
int textColor = textColorTypedValue.data;
TextView titleTextView = new TextView(getActivity());
titleTextView.setText(isStart ? getActivity().getString(R.string.opening_at)
: getActivity().getString(R.string.closing_at));
titleTextView.setPadding(paddingInPx, paddingInPx, paddingInPx, paddingInPx);
titleTextView.setGravity(Gravity.CENTER_VERTICAL);
titleTextView.setTextSize(TypedValue.COMPLEX_UNIT_SP, 18);
titleTextView.setTextColor(getActivity().getResources().getColor(R.color.color_black));
titleTextView.setTextColor(textColor);
Typeface typeface = titleTextView.getTypeface();
titleTextView.setTypeface(typeface, Typeface.BOLD);
builder.setCustomTitle(titleTextView);

View file

@ -0,0 +1,78 @@
package net.osmand.plus.osmedit.dialogs;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.v4.app.DialogFragment;
import android.view.View;
import android.widget.CheckBox;
import android.widget.EditText;
import net.osmand.plus.OsmandApplication;
import net.osmand.plus.OsmandSettings;
import net.osmand.plus.R;
import net.osmand.plus.osmedit.OpenstreetmapPoint;
import net.osmand.plus.osmedit.OsmPoint;
public class SendPoiDialogFragment extends DialogFragment {
public static final String TAG = "SendPoiDialogFragment";
public static final String OPENSTREETMAP_POINT = "openstreetmap_point";
private static String comment;
@NonNull
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
final OsmPoint[] poi = (OsmPoint[]) getArguments().getSerializable(OPENSTREETMAP_POINT);
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
View view = getActivity().getLayoutInflater().inflate(R.layout.send_poi_dialog, null);
final EditText messageEditText = (EditText) view.findViewById(R.id.messageEditText);
final EditText userNameEditText = (EditText) view.findViewById(R.id.userNameEditText);
final EditText passwordEditText = (EditText) view.findViewById(R.id.passwordEditText);
final CheckBox closeChangeSetCheckBox =
(CheckBox) view.findViewById(R.id.closeChangeSetCheckBox);
messageEditText.setText(comment);
final OsmandSettings settings = ((OsmandApplication) getActivity().getApplication())
.getSettings();
userNameEditText.setText(settings.USER_NAME.get());
passwordEditText.setText(settings.USER_PASSWORD.get());
final ProgressDialogPoiUploader progressDialogPoiUploader =
(ProgressDialogPoiUploader) getParentFragment();
builder.setTitle(R.string.commit_poi)
.setView(view)
.setPositiveButton(R.string.shared_string_ok, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
comment = messageEditText.getText().toString();
settings.USER_NAME.set(userNameEditText.getText().toString());
settings.USER_PASSWORD.set(passwordEditText.getText().toString());
for (OsmPoint osmPoint : poi) {
if (osmPoint.getGroup() == OsmPoint.Group.POI) {
((OpenstreetmapPoint) osmPoint)
.setComment(comment);
break;
}
}
progressDialogPoiUploader.showProgressDialog(poi,
closeChangeSetCheckBox.isChecked());
}
})
.setNegativeButton(R.string.shared_string_cancel, null);
return builder.create();
}
public static SendPoiDialogFragment createInstance(OsmPoint[] points) {
SendPoiDialogFragment fragment = new SendPoiDialogFragment();
Bundle bundle = new Bundle();
bundle.putSerializable(OPENSTREETMAP_POINT, points);
fragment.setArguments(bundle);
return fragment;
}
public interface ProgressDialogPoiUploader {
void showProgressDialog(OsmPoint[] points, boolean closeChangeSet);
}
}

View file

@ -1,12 +1,10 @@
package net.osmand.plus.osmo;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.util.Arrays;
import android.app.Activity;
import android.content.Intent;
import android.os.AsyncTask;
import android.view.View;
import android.widget.ArrayAdapter;
import net.osmand.IndexConstants;
import net.osmand.Location;
@ -38,11 +36,13 @@ import org.apache.commons.logging.Log;
import org.json.JSONException;
import org.json.JSONObject;
import android.app.Activity;
import android.content.Intent;
import android.os.AsyncTask;
import android.view.View;
import android.widget.ArrayAdapter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.util.Arrays;
public class OsMoPlugin extends OsmandPlugin implements OsMoReactor {
@ -533,6 +533,7 @@ public class OsMoPlugin extends OsmandPlugin implements OsMoReactor {
@Override
public DashFragmentData getCardFragment() {
return new DashFragmentData(DashOsMoFragment.TAG, DashOsMoFragment.class, getName(), 12);
return new DashFragmentData(DashOsMoFragment.TAG, DashOsMoFragment.class,
R.string.osmo_plugin_name, 12);
}
}

View file

@ -1,7 +1,20 @@
package net.osmand.plus.parkingpoint;
import java.util.Calendar;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
import android.app.Dialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.text.format.DateFormat;
import android.text.format.Time;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.CheckBox;
import android.widget.ImageButton;
import android.widget.TextView;
import android.widget.TimePicker;
import net.osmand.data.LatLon;
import net.osmand.plus.ApplicationMode;
@ -20,20 +33,8 @@ import net.osmand.plus.views.MapInfoLayer;
import net.osmand.plus.views.OsmandMapLayer.DrawSettings;
import net.osmand.plus.views.OsmandMapTileView;
import net.osmand.plus.views.mapwidgets.TextInfoWidget;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
import android.app.Dialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.text.format.DateFormat;
import android.text.format.Time;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.CheckBox;
import android.widget.ImageButton;
import android.widget.TextView;
import android.widget.TimePicker;
import java.util.Calendar;
/**
*
@ -563,6 +564,7 @@ public class ParkingPositionPlugin extends OsmandPlugin {
@Override
public DashFragmentData getCardFragment() {
return new DashFragmentData(DashParkingFragment.TAG, DashParkingFragment.class, getName(), 5);
return new DashFragmentData(DashParkingFragment.TAG, DashParkingFragment.class,
R.string.osmand_parking_plugin_name, 5);
}
}

View file

@ -127,8 +127,8 @@ public class VoiceRouter {
PREPARE_LONG_DISTANCE_END = 3000 + 1000; // [ 90 sec @ 120 km/h]
PREPARE_DISTANCE = 1500; // [125 sec]
PREPARE_DISTANCE_END = 1200; // [100 sec]
TURN_IN_DISTANCE = 390; // 30 sec
TURN_IN_DISTANCE_END = 195; // 15 sec
TURN_IN_DISTANCE = 300; // 23 sec
TURN_IN_DISTANCE_END = 210; // 16 sec
TURN_DISTANCE = 50; // 7 sec
TURN_DEFAULT_SPEED = 7f; // 25 km/h
DEFAULT_SPEED = 13; // 48 km/h
@ -158,13 +158,13 @@ public class VoiceRouter {
} else {
DEFAULT_SPEED = router.getAppMode().getDefaultSpeed();
TURN_DEFAULT_SPEED = DEFAULT_SPEED / 2;
PREPARE_LONG_DISTANCE = (int) (DEFAULT_SPEED * 305);
PREPARE_LONG_DISTANCE = (int) (DEFAULT_SPEED * 270);
// Do not play:
PREPARE_LONG_DISTANCE_END = (int) (DEFAULT_SPEED * 225) * 2;
PREPARE_DISTANCE = (int) (DEFAULT_SPEED * 125);
PREPARE_DISTANCE_END = (int) (DEFAULT_SPEED * 100);
TURN_IN_DISTANCE = (int) (DEFAULT_SPEED * 30);
TURN_IN_DISTANCE_END = (int) (DEFAULT_SPEED * 14);
PREPARE_LONG_DISTANCE_END = (int) (DEFAULT_SPEED * 230) * 2;
PREPARE_DISTANCE = (int) (DEFAULT_SPEED * 115);
PREPARE_DISTANCE_END = (int) (DEFAULT_SPEED * 92);
TURN_IN_DISTANCE = (int) (DEFAULT_SPEED * 23);
TURN_IN_DISTANCE_END = (int) (DEFAULT_SPEED * 16);
TURN_DISTANCE = (int) (DEFAULT_SPEED * 7);
}
}

View file

@ -4,14 +4,9 @@ import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.PointF;
import android.graphics.PorterDuff;
import android.graphics.PorterDuffColorFilter;
import android.graphics.Rect;
import android.os.Build;
import android.text.Html;
@ -35,6 +30,7 @@ import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Objects;
import java.util.concurrent.ConcurrentHashMap;
public class ContextMenuLayer extends OsmandMapLayer {
@ -68,6 +64,7 @@ public class ContextMenuLayer extends OsmandMapLayer {
private LatLon latLon;
private String description;
private Map<Object, IContextMenuProvider> selectedObjects = new ConcurrentHashMap<Object, IContextMenuProvider>();
private Object selectedObj;
private TextView textView;
private ImageView closeButton;
@ -78,10 +75,8 @@ public class ContextMenuLayer extends OsmandMapLayer {
private float scaleCoefficient = 1;
private CallbackWithObject<LatLon> selectOnMap = null;
private Bitmap mapContextMarker;
private boolean showMapContextMarker;
private Paint mapMarkerPaintIcon;
private boolean showContextMarker;
private ImageView contextMarker;
public ContextMenuLayer(MapActivity activity){
this.activity = activity;
@ -130,11 +125,14 @@ public class ContextMenuLayer extends OsmandMapLayer {
closeButton.setImageDrawable(view.getResources().getDrawable(R.drawable.headliner_close));
closeButton.setClickable(true);
showMapContextMarker = false;
mapMarkerPaintIcon = new Paint();
mapMarkerPaintIcon.setColorFilter(new PorterDuffColorFilter(activity.getResources().getColor(R.color.osmand_orange), PorterDuff.Mode.SRC_IN));
mapContextMarker = BitmapFactory.decodeResource(view.getResources(), R.drawable.ic_action_marker2);
showContextMarker = false;
contextMarker = new ImageView(view.getContext());
contextMarker.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
contextMarker.setImageDrawable(view.getResources().getDrawable(R.drawable.map_pin_context_menu));
contextMarker.setClickable(true);
int minw = contextMarker.getDrawable().getMinimumWidth();
int minh = contextMarker.getDrawable().getMinimumHeight();
contextMarker.layout(0, 0, minw, minh);
if(latLon != null){
setLocation(latLon, description);
@ -153,8 +151,10 @@ public class ContextMenuLayer extends OsmandMapLayer {
int x = (int) box.getPixXFromLatLon(latLon.getLatitude(), latLon.getLongitude());
int y = (int) box.getPixYFromLatLon(latLon.getLatitude(), latLon.getLongitude());
if (showMapContextMarker)
canvas.drawBitmap(mapContextMarker, x - mapContextMarker.getWidth() / 2, y - mapContextMarker.getHeight(), mapMarkerPaintIcon);
if (showContextMarker) {
canvas.translate(x - contextMarker.getWidth() / 2, y - contextMarker.getHeight());
contextMarker.draw(canvas);
}
textView.setTextColor(nightMode != null && nightMode.isNightMode() ? Color.GRAY : Color.WHITE);
if (textView.getText().length() > 0) {
@ -201,15 +201,15 @@ public class ContextMenuLayer extends OsmandMapLayer {
}
public void showMapContextMenuMarker() {
if (!showMapContextMarker) {
showMapContextMarker = true;
if (!showContextMarker) {
showContextMarker = true;
view.refreshMap();
}
}
public void hideMapContextMenuMarker() {
if (showMapContextMarker) {
showMapContextMarker = false;
if (showContextMarker) {
showContextMarker = false;
view.refreshMap();
}
}
@ -271,12 +271,19 @@ public class ContextMenuLayer extends OsmandMapLayer {
}
LatLon latLon = selectObjectsForContextMenu(tileBox, point);
if (latLon != null) {
String description = getSelectedObjectDescription();
setLocation(latLon, description);
if (selectedObjects.size() == 1) {
setLocation(null, "");
selectedObj = selectedObjects.keySet().iterator().next();
showMapContextMenu(selectedObj, latLon);
} else if (selectedObjects.size() > 1) {
showContextMenuForSelectedObjects(latLon);
}
} else {
setLocation(null, "");
final double lat = tileBox.getLatFromPixel((int) point.x, (int) point.y);
final double lon = tileBox.getLonFromPixel((int) point.x, (int) point.y);
setLocation(new LatLon(lat, lon), null);
showMapContextMenu(null, new LatLon(lat, lon));
//setLocation(new LatLon(lat, lon), null);
}
view.refreshMap();
return true;
@ -337,7 +344,7 @@ public class ContextMenuLayer extends OsmandMapLayer {
}
public int pressedInTextView(RotatedTileBox tb, float px, float py) {
if (latLon != null) {
if (latLon != null && textView.getText().length() > 0) {
Rect bs = textView.getBackground().getBounds();
Rect closes = closeButton.getDrawable().getBounds();
int dx = (int) (px - tb.getPixXFromLatLon(latLon.getLatitude(), latLon.getLongitude()));
@ -354,7 +361,19 @@ public class ContextMenuLayer extends OsmandMapLayer {
}
return 0;
}
public boolean pressedContextMarker(RotatedTileBox tb, float px, float py) {
if (latLon != null && showContextMarker) {
Rect bs = contextMarker.getDrawable().getBounds();
int dx = (int) (px - tb.getPixXFromLatLon(latLon.getLatitude(), latLon.getLongitude()));
int dy = (int) (py - tb.getPixYFromLatLon(latLon.getLatitude(), latLon.getLongitude()));
int bx = dx + bs.width() / 2;
int by = dy + bs.height();
return (bs.contains(bx, by));
}
return false;
}
public String getSelectedObjectName(){
return getSelectedObjectInfo(true);
}
@ -404,6 +423,11 @@ public class ContextMenuLayer extends OsmandMapLayer {
@Override
public boolean onSingleTap(PointF point, RotatedTileBox tileBox) {
if (pressedContextMarker(tileBox, point.x, point.y)) {
showMapContextMenu(selectedObj, latLon);
return true;
}
boolean nativeMode = (Build.VERSION.SDK_INT >= 14) || view.getSettings().SCROLL_MAP_BY_GESTURES.get();
int val = pressedInTextView(tileBox, point.x, point.y);
if(selectOnMap != null) {
@ -429,12 +453,11 @@ public class ContextMenuLayer extends OsmandMapLayer {
LatLon latLon = selectObjectsForContextMenu(tileBox, point);
if (latLon != null) {
if (selectedObjects.size() == 1) {
Object selectedObj = selectedObjects.keySet().iterator().next();
showMapContextMenu(selectedObj, latLon, null);
} else {
String description = getSelectedObjectDescription();
setLocation(latLon, description);
view.refreshMap();
setLocation(null, "");
selectedObj = selectedObjects.keySet().iterator().next();
showMapContextMenu(selectedObj, latLon);
} else if (selectedObjects.size() > 1) {
showContextMenuForSelectedObjects(latLon);
return true;
}
}
@ -458,34 +481,32 @@ public class ContextMenuLayer extends OsmandMapLayer {
builder.setItems(d, new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Object selectedObj = s.get(which);
for (OsmandMapLayer layer : view.getLayers()) {
layer.populateObjectContextMenu(selectedObj, menuAdapter);
}
showMapContextMenu(selectedObj, l, menuAdapter);
//activity.getMapActions().contextMenuPoint(l.getLatitude(), l.getLongitude(), menuAdapter, selectedObj);
selectedObj = s.get(which);
showMapContextMenu(selectedObj, l);
}
});
builder.show();
} else {
Object selectedObj = selectedObjects.keySet().iterator().next();
for (OsmandMapLayer layer : view.getLayers()) {
layer.populateObjectContextMenu(selectedObj, menuAdapter);
}
showMapContextMenu(selectedObj, l, menuAdapter);
//activity.getMapActions().contextMenuPoint(l.getLatitude(), l.getLongitude(), menuAdapter, selectedObj);
selectedObj = selectedObjects.keySet().iterator().next();
showMapContextMenu(selectedObj, l);
}
}
private void showMapContextMenu(Object obj, LatLon latLon, final ContextMenuAdapter menuAdapter) {
PointDescription pointDescription = selectedObjects.get(obj).getObjectName(obj);
pointDescription.setLat(latLon.getLatitude());
pointDescription.setLon(latLon.getLongitude());
this.latLon = latLon;
private void showMapContextMenu(Object obj, LatLon latLon) {
PointDescription pointDescription;
if (obj != null) {
IContextMenuProvider typedObj = selectedObjects.get(obj);
pointDescription = typedObj.getObjectName(obj);
LatLon objLocation = typedObj.getObjectLocation(obj);
pointDescription.setLat(objLocation.getLatitude());
pointDescription.setLon(objLocation.getLongitude());
} else {
pointDescription = new PointDescription(latLon.getLatitude(), latLon.getLongitude());
}
this.latLon = new LatLon(pointDescription.getLat(), pointDescription.getLon());
showMapContextMenuMarker();
MapContextMenu.getInstance().show(pointDescription, obj, menuAdapter);
MapContextMenu.getInstance().show(pointDescription, obj);
}