Merge branch 'master' of ssh://github.com/osmandapp/Osmand into Fix_5324
BIN
OsmAnd/res/drawable-hdpi/ic_action_openstreetmap_logo.png
Normal file
After Width: | Height: | Size: 2.1 KiB |
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 1.4 KiB |
BIN
OsmAnd/res/drawable-mdpi/ic_action_openstreetmap_logo.png
Normal file
After Width: | Height: | Size: 1.6 KiB |
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.4 KiB |
BIN
OsmAnd/res/drawable-xhdpi/ic_action_openstreetmap_logo.png
Normal file
After Width: | Height: | Size: 2.4 KiB |
Before Width: | Height: | Size: 1.8 KiB After Width: | Height: | Size: 1.7 KiB |
BIN
OsmAnd/res/drawable-xxhdpi/ic_action_openstreetmap_logo.png
Normal file
After Width: | Height: | Size: 3.2 KiB |
Before Width: | Height: | Size: 2.2 KiB After Width: | Height: | Size: 1.9 KiB |
|
@ -1,14 +1,30 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<FrameLayout
|
<LinearLayout
|
||||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
xmlns:osmand="http://schemas.android.com/apk/res-auto"
|
xmlns:osmand="http://schemas.android.com/apk/res-auto"
|
||||||
xmlns:tools="http://schemas.android.com/tools"
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:background="?attr/expandable_list_item_background"
|
|
||||||
android:minHeight="@dimen/list_item_height"
|
|
||||||
android:orientation="vertical">
|
android:orientation="vertical">
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:id="@+id/group_divider"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:visibility="gone"
|
||||||
|
tools:visibility="visible">
|
||||||
|
|
||||||
|
<include layout="@layout/list_item_divider"/>
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
<FrameLayout
|
||||||
|
android:id="@+id/container"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:background="?attr/expandable_list_item_background"
|
||||||
|
android:minHeight="@dimen/wpt_list_item_height">
|
||||||
|
|
||||||
<View
|
<View
|
||||||
android:id="@+id/divider"
|
android:id="@+id/divider"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
|
@ -20,7 +36,7 @@
|
||||||
android:id="@+id/list_divider"
|
android:id="@+id/list_divider"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="1dp"
|
android:layout_height="1dp"
|
||||||
android:layout_marginLeft="54dp"
|
android:layout_marginLeft="64dp"
|
||||||
android:background="?attr/dashboard_divider"
|
android:background="?attr/dashboard_divider"
|
||||||
android:visibility="gone"/>
|
android:visibility="gone"/>
|
||||||
|
|
||||||
|
@ -29,14 +45,14 @@
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_gravity="center_vertical"
|
android:layout_gravity="center_vertical"
|
||||||
android:gravity="center_vertical"
|
android:gravity="center_vertical"
|
||||||
android:orientation="horizontal"
|
android:paddingLeft="@dimen/list_content_padding"
|
||||||
android:paddingLeft="@dimen/list_content_padding">
|
android:orientation="horizontal">
|
||||||
|
|
||||||
<CheckBox
|
<CheckBox
|
||||||
android:id="@+id/toggle_item"
|
android:id="@+id/toggle_item"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginRight="@dimen/list_content_padding"
|
android:layout_marginRight="@dimen/favorites_icon_right_margin"
|
||||||
android:focusable="false"
|
android:focusable="false"
|
||||||
android:visibility="gone"
|
android:visibility="gone"
|
||||||
tools:visibility="visible"/>
|
tools:visibility="visible"/>
|
||||||
|
@ -45,7 +61,7 @@
|
||||||
android:id="@+id/icon"
|
android:id="@+id/icon"
|
||||||
android:layout_width="@dimen/standard_icon_size"
|
android:layout_width="@dimen/standard_icon_size"
|
||||||
android:layout_height="@dimen/standard_icon_size"
|
android:layout_height="@dimen/standard_icon_size"
|
||||||
android:layout_marginRight="@dimen/list_content_padding"/>
|
android:layout_marginRight="@dimen/favorites_icon_right_margin"/>
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
|
@ -56,14 +72,37 @@
|
||||||
android:paddingRight="@dimen/list_content_padding"
|
android:paddingRight="@dimen/list_content_padding"
|
||||||
android:paddingTop="8dp">
|
android:paddingTop="8dp">
|
||||||
|
|
||||||
<TextView
|
<net.osmand.plus.widgets.TextViewEx
|
||||||
|
android:id="@+id/bold_label"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_gravity="center_vertical"
|
||||||
|
android:textColor="?attr/wikivoyage_primary_text_color"
|
||||||
|
android:textSize="@dimen/text_button_text_size"
|
||||||
|
osmand:typeface="@string/font_roboto_medium"
|
||||||
|
android:visibility="gone"
|
||||||
|
tools:visibility="visible"
|
||||||
|
tools:text="Category name"/>
|
||||||
|
|
||||||
|
<net.osmand.plus.widgets.TextViewEx
|
||||||
android:id="@+id/label"
|
android:id="@+id/label"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:textColor="?android:textColorPrimary"
|
android:textColor="?attr/wikivoyage_primary_text_color"
|
||||||
android:textSize="@dimen/default_list_text_size"
|
android:textSize="@dimen/default_list_text_size"
|
||||||
|
osmand:typeface="@string/font_roboto_regular"
|
||||||
tools:text="Point title"/>
|
tools:text="Point title"/>
|
||||||
|
|
||||||
|
<net.osmand.plus.widgets.TextViewEx
|
||||||
|
android:id="@+id/description"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:maxLines="2"
|
||||||
|
android:textColor="@color/wikivoyage_secondary_text"
|
||||||
|
android:textSize="@dimen/default_sub_text_size"
|
||||||
|
osmand:typeface="@string/font_roboto_regular"
|
||||||
|
tools:text="Point description"/>
|
||||||
|
|
||||||
<net.osmand.plus.widgets.TextViewEx
|
<net.osmand.plus.widgets.TextViewEx
|
||||||
android:id="@+id/button"
|
android:id="@+id/button"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
|
@ -76,21 +115,28 @@
|
||||||
tools:text="SHOW ALL"
|
tools:text="SHOW ALL"
|
||||||
tools:visibility="visible"/>
|
tools:visibility="visible"/>
|
||||||
|
|
||||||
<TextView
|
</LinearLayout>
|
||||||
android:id="@+id/description"
|
|
||||||
|
<LinearLayout
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:textColor="?android:textColorSecondary"
|
android:layout_marginEnd="@dimen/list_item_button_padding"
|
||||||
android:textSize="@dimen/default_sub_text_size"
|
android:layout_marginRight="@dimen/list_item_button_padding"
|
||||||
android:maxLines="2"
|
android:orientation="horizontal">
|
||||||
tools:text="Point description"/>
|
|
||||||
|
|
||||||
</LinearLayout>
|
<ImageView
|
||||||
|
android:id="@+id/expand_image"
|
||||||
|
android:layout_width="@dimen/acceptable_touch_radius"
|
||||||
|
android:layout_height="@dimen/acceptable_touch_radius"
|
||||||
|
android:scaleType="center"
|
||||||
|
android:src="@drawable/ic_action_arrow_up"
|
||||||
|
android:visibility="gone"
|
||||||
|
tools:visibility="visible"/>
|
||||||
|
|
||||||
<ImageButton
|
<ImageButton
|
||||||
android:id="@+id/options"
|
android:id="@+id/options"
|
||||||
android:layout_width="@dimen/list_item_height"
|
android:layout_width="@dimen/acceptable_touch_radius"
|
||||||
android:layout_height="@dimen/list_item_height"
|
android:layout_height="@dimen/acceptable_touch_radius"
|
||||||
android:background="?attr/dashboard_button"
|
android:background="?attr/dashboard_button"
|
||||||
android:contentDescription="@string/shared_string_more"
|
android:contentDescription="@string/shared_string_more"
|
||||||
android:src="@drawable/ic_overflow_menu_white"
|
android:src="@drawable/ic_overflow_menu_white"
|
||||||
|
@ -98,4 +144,8 @@
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
</FrameLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
|
</FrameLayout>
|
||||||
|
|
||||||
|
</LinearLayout>
|
|
@ -1,9 +1,10 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
<LinearLayout
|
||||||
|
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
xmlns:osmand="http://schemas.android.com/apk/res-auto"
|
||||||
xmlns:tools="http://schemas.android.com/tools"
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
android:layout_width="fill_parent"
|
android:layout_width="fill_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
xmlns:osmand="http://schemas.android.com/apk/res-auto"
|
|
||||||
android:orientation="vertical">
|
android:orientation="vertical">
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
|
@ -18,19 +19,19 @@
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:paddingLeft="@dimen/list_content_padding"
|
|
||||||
android:minHeight="@dimen/list_item_height"
|
|
||||||
android:background="?attr/bg_color"
|
android:background="?attr/bg_color"
|
||||||
android:orientation="horizontal">
|
android:minHeight="@dimen/wpt_list_category_height"
|
||||||
|
android:orientation="horizontal"
|
||||||
|
android:paddingLeft="@dimen/list_content_padding">
|
||||||
|
|
||||||
<CheckBox
|
<CheckBox
|
||||||
android:id="@+id/toggle_item"
|
android:id="@+id/toggle_item"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_gravity="center_vertical"
|
android:layout_gravity="center_vertical"
|
||||||
|
android:layout_marginRight="@dimen/list_content_padding"
|
||||||
android:background="?attr/dashboard_button"
|
android:background="?attr/dashboard_button"
|
||||||
android:focusable="false"
|
android:focusable="false"
|
||||||
android:layout_marginRight="@dimen/list_content_padding"
|
|
||||||
android:visibility="gone"
|
android:visibility="gone"
|
||||||
tools:visiblity="visible"/>
|
tools:visiblity="visible"/>
|
||||||
|
|
||||||
|
@ -45,19 +46,19 @@
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:orientation="vertical"
|
|
||||||
android:layout_weight="1"
|
|
||||||
android:layout_gravity="center_vertical"
|
android:layout_gravity="center_vertical"
|
||||||
android:paddingTop="8dp"
|
android:layout_weight="1"
|
||||||
android:paddingBottom="8dp">
|
android:orientation="vertical"
|
||||||
|
android:paddingBottom="8dp"
|
||||||
|
android:paddingTop="8dp">
|
||||||
|
|
||||||
<net.osmand.plus.widgets.TextViewEx
|
<net.osmand.plus.widgets.TextViewEx
|
||||||
android:id="@+id/category_name"
|
android:id="@+id/category_name"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_gravity="center_vertical"
|
android:layout_gravity="center_vertical"
|
||||||
android:textColor="?android:textColorPrimary"
|
android:textColor="?attr/wikivoyage_primary_text_color"
|
||||||
android:textSize="@dimen/default_sub_text_size"
|
android:textSize="@dimen/text_button_text_size"
|
||||||
osmand:typeface="@string/font_roboto_medium"
|
osmand:typeface="@string/font_roboto_medium"
|
||||||
tools:text="Category name"/>
|
tools:text="Category name"/>
|
||||||
|
|
||||||
|
@ -66,20 +67,21 @@
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_gravity="center_vertical"
|
android:layout_gravity="center_vertical"
|
||||||
android:textColor="?android:textColorSecondary"
|
android:textColor="@color/wikivoyage_secondary_text"
|
||||||
android:textSize="@dimen/default_sub_text_size"
|
android:textSize="@dimen/default_sub_text_size"
|
||||||
|
osmand:typeface="@string/font_roboto_regular"
|
||||||
tools:text="Important points in this route"/>
|
tools:text="Important points in this route"/>
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
<ImageView
|
<ImageView
|
||||||
android:id="@+id/options"
|
android:id="@+id/options"
|
||||||
android:contentDescription="@string/shared_string_more"
|
|
||||||
android:layout_width="46dp"
|
android:layout_width="46dp"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:layout_marginRight="4dp"
|
|
||||||
android:layout_gravity="center_vertical"
|
android:layout_gravity="center_vertical"
|
||||||
|
android:layout_marginRight="4dp"
|
||||||
android:background="?attr/dashboard_button"
|
android:background="?attr/dashboard_button"
|
||||||
|
android:contentDescription="@string/shared_string_more"
|
||||||
android:focusable="false"
|
android:focusable="false"
|
||||||
android:scaleType="center"
|
android:scaleType="center"
|
||||||
android:src="@drawable/ic_overflow_menu_white"
|
android:src="@drawable/ic_overflow_menu_white"
|
||||||
|
@ -90,9 +92,9 @@
|
||||||
android:id="@+id/explist_indicator"
|
android:id="@+id/explist_indicator"
|
||||||
android:layout_width="24dp"
|
android:layout_width="24dp"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:scaleType="center"
|
|
||||||
android:layout_gravity="center_vertical"
|
android:layout_gravity="center_vertical"
|
||||||
android:layout_marginRight="@dimen/list_content_padding"
|
android:layout_marginRight="@dimen/list_content_padding"
|
||||||
|
android:scaleType="center"
|
||||||
android:visibility="gone"/>
|
android:visibility="gone"/>
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
|
@ -9,8 +9,8 @@
|
||||||
<string name="poi_air_transport">Tresporte aereu</string>
|
<string name="poi_air_transport">Tresporte aereu</string>
|
||||||
<string name="poi_water_transport">Tresporte acuáticu</string>
|
<string name="poi_water_transport">Tresporte acuáticu</string>
|
||||||
<string name="poi_communication">Comunicación</string>
|
<string name="poi_communication">Comunicación</string>
|
||||||
<string name="poi_fuel_type">Triba</string>
|
<string name="poi_fuel_type">Triba de combustible</string>
|
||||||
<string name="poi_fuel_avia_type">Triba</string>
|
<string name="poi_fuel_avia_type">Triba de combustible (avia)</string>
|
||||||
<string name="poi_payment_type">Triba de pagu</string>
|
<string name="poi_payment_type">Triba de pagu</string>
|
||||||
<string name="poi_payment_fuel_type">Tarxetes pa gasolineres</string>
|
<string name="poi_payment_fuel_type">Tarxetes pa gasolineres</string>
|
||||||
<string name="poi_additional_type">Adicional</string>
|
<string name="poi_additional_type">Adicional</string>
|
||||||
|
|
|
@ -973,7 +973,7 @@ Puntos</string>
|
||||||
<string name="import_file">Importar ficheru</string>
|
<string name="import_file">Importar ficheru</string>
|
||||||
<string name="waypoints_added_to_map_markers">Puntos de ruta añadíos a los marcadores del mapa</string>
|
<string name="waypoints_added_to_map_markers">Puntos de ruta añadíos a los marcadores del mapa</string>
|
||||||
<string name="plan_route_no_markers_toast">Hai qu\'amestar polo menos un marcador pa usar esta función.</string>
|
<string name="plan_route_no_markers_toast">Hai qu\'amestar polo menos un marcador pa usar esta función.</string>
|
||||||
<string name="osn_modify_dialog_error">Hebo una esceición: Nun se camudó la nota</string>
|
<string name="osn_modify_dialog_error">Nun pudo camudase la nota</string>
|
||||||
<string name="empty_state_av_notes">¡Toma notes!</string>
|
<string name="empty_state_av_notes">¡Toma notes!</string>
|
||||||
<string name="yesterday">Ayeri</string>
|
<string name="yesterday">Ayeri</string>
|
||||||
<string name="this_year">Esti añu</string>
|
<string name="this_year">Esti añu</string>
|
||||||
|
@ -1050,8 +1050,15 @@ Puntos</string>
|
||||||
<string name="additional_actions">Más aiciones</string>
|
<string name="additional_actions">Más aiciones</string>
|
||||||
<string name="av_locations_selected_desc">Ficheru GPX con coordenaes y datos de les notes esbillaes.</string>
|
<string name="av_locations_selected_desc">Ficheru GPX con coordenaes y datos de les notes esbillaes.</string>
|
||||||
<string name="av_locations_all_desc">Ficheru GPX con coordenaes y datos de toles notes.</string>
|
<string name="av_locations_all_desc">Ficheru GPX con coordenaes y datos de toles notes.</string>
|
||||||
<string name="release_3_0">\\022
|
<string name="release_3_0">\\022 Nuevu menú Viaxe : consultar los artículos de WikiVoyage ensin conexón
|
||||||
\n
|
\n
|
||||||
|
\n • Wikipedia : nuevu aspeutu, imaxes
|
||||||
|
\n
|
||||||
|
\n • Interfazd\'apertura de traces : ver grupos de puntos de ruta
|
||||||
|
\n
|
||||||
|
\n • Marcadores del mapa : importar grupos seleicionaos dende ficheros GPX, nuevu aspeutu de la entrada de coordenaes
|
||||||
|
\n
|
||||||
|
\n • La suscripción a OsmAnd Live agora incluye toles funciones d\'OsmAnd
|
||||||
\n</string>
|
\n</string>
|
||||||
<string name="modify_the_search_query">Cambiar la consulta de la gueta.</string>
|
<string name="modify_the_search_query">Cambiar la consulta de la gueta.</string>
|
||||||
<string name="shared_string_actions">Aiciones</string>
|
<string name="shared_string_actions">Aiciones</string>
|
||||||
|
@ -1076,11 +1083,11 @@ Puntos</string>
|
||||||
<string name="track_waypoints">Puntos de ruta de la traza</string>
|
<string name="track_waypoints">Puntos de ruta de la traza</string>
|
||||||
<string name="favourites_group">Categoría de favoritos</string>
|
<string name="favourites_group">Categoría de favoritos</string>
|
||||||
<string name="add_group">Amestar un grupu</string>
|
<string name="add_group">Amestar un grupu</string>
|
||||||
<string name="add_group_descr">Puedes importar grupos dende favoritos o de puntos de ruta d\\\'una traza.</string>
|
<string name="add_group_descr">Importar grupos dende favoritos o de puntos de ruta de la traza.</string>
|
||||||
<string name="empty_state_markers_active">¡Crea marcadores de mapa!</string>
|
<string name="empty_state_markers_active">¡Crea marcadores de mapa!</string>
|
||||||
<string name="empty_state_markers_active_desc">Da un toque llargu o curtiu en «Llugares», llueu toca nel botón de bandera de marcador.</string>
|
<string name="empty_state_markers_active_desc">Da un toque llargu o curtiu en «Llugares», llueu toca nel botón de bandera de marcador.</string>
|
||||||
<string name="empty_state_markers_groups">Importar grupos</string>
|
<string name="empty_state_markers_groups">Importar grupos</string>
|
||||||
<string name="empty_state_markers_groups_desc">Puedes importar grupos de favoritos o puntos de ruta d\\\'una traza como marcadores.</string>
|
<string name="empty_state_markers_groups_desc">Importar grupos de favoritos o puntos de ruta de la traza como marcadores.</string>
|
||||||
<string name="shared_string_two">Dos</string>
|
<string name="shared_string_two">Dos</string>
|
||||||
<string name="shared_string_one">Un</string>
|
<string name="shared_string_one">Un</string>
|
||||||
<string name="show_guide_line_descr">Amosar llinies de direición dende la to posición a les de marcadores activos.</string>
|
<string name="show_guide_line_descr">Amosar llinies de direición dende la to posición a les de marcadores activos.</string>
|
||||||
|
|
|
@ -3930,4 +3930,15 @@
|
||||||
<string name="poi_glacier_ele_bottom">Laveste punkt</string>
|
<string name="poi_glacier_ele_bottom">Laveste punkt</string>
|
||||||
<string name="poi_glacier_slope">Gennemsnitlig hældning</string>
|
<string name="poi_glacier_slope">Gennemsnitlig hældning</string>
|
||||||
|
|
||||||
|
<string name="poi_checkpoint_type">Kontrolpunktstype</string>
|
||||||
|
|
||||||
|
<string name="poi_checkpoint_hiking">Vandretur kontrolpunkt</string>
|
||||||
|
<string name="poi_checkpoint_type_stamp">Stemplepunkt</string>
|
||||||
|
<string name="poi_checkpoint_type_code">Kode</string>
|
||||||
|
<string name="poi_checkpoint_type_notebook">Notesbog</string>
|
||||||
|
<string name="poi_checkpoint_type_needler">Nåle</string>
|
||||||
|
<string name="poi_checkpoint_type_quize">Quiz</string>
|
||||||
|
<string name="poi_checkpoint_type_electronic">Elektronisk</string>
|
||||||
|
<string name="poi_course">Bane</string>
|
||||||
|
|
||||||
</resources>
|
</resources>
|
||||||
|
|
|
@ -1413,4 +1413,89 @@
|
||||||
<string name="poi_animal_shelter_fish">Ψάρια</string>
|
<string name="poi_animal_shelter_fish">Ψάρια</string>
|
||||||
|
|
||||||
<string name="poi_seats">Θέσεις</string>
|
<string name="poi_seats">Θέσεις</string>
|
||||||
|
<string name="poi_crossing_unmarked">Χωρίς οδική σήμανση</string>
|
||||||
|
<string name="poi_trees_rubber">Καουτσουκόδεντρο</string>
|
||||||
|
<string name="poi_backrest_yes">Πλάτη καθίσματος: ναι</string>
|
||||||
|
<string name="poi_backrest_no">Πλάτη καθίσματος: όχι</string>
|
||||||
|
|
||||||
|
<string name="poi_intermittent">Διακεκομμένο</string>
|
||||||
|
|
||||||
|
<string name="poi_building">Κτίριο</string>
|
||||||
|
<string name="poi_deadlock">Αδιέξοδος</string>
|
||||||
|
|
||||||
|
<string name="poi_generator_source_coal">Πηγή ενέργειας: κάρβουνο</string>
|
||||||
|
<string name="poi_generator_source_gas">Πηγή ενέργειας: γκάζι</string>
|
||||||
|
<string name="poi_generator_source_nuclear">Πηγή ενέργειας: πυρηνική</string>
|
||||||
|
<string name="poi_generator_source_solar">Πηγή ενέργειας: ηλιακή</string>
|
||||||
|
<string name="poi_generator_source_hydro">Πηγή ενέργειας: υδροηλεκτρική</string>
|
||||||
|
<string name="poi_generator_source_wind">Πηγή ενέργειας: άνεμος</string>
|
||||||
|
<string name="poi_generator_source_geothermal">Πηγή ενέργειας: γεωθερμική</string>
|
||||||
|
<string name="poi_generator_source_oil">Πηγή ενέργειας: πετρέλαιο</string>
|
||||||
|
<string name="poi_generator_source_diesel">Πηγή ενέργειας: ντίζελ</string>
|
||||||
|
|
||||||
|
<string name="poi_int_name">Διεθνές όνομα</string>
|
||||||
|
<string name="poi_nat_name">Εθνικό όνομα</string>
|
||||||
|
<string name="poi_reg_name">Περιφερειακό όνομα</string>
|
||||||
|
<string name="poi_loc_name">Τοπικό όνομα</string>
|
||||||
|
<string name="poi_old_name">Παλιό όνομα</string>
|
||||||
|
<string name="poi_alt_name">Εναλλακτικό όνομα</string>
|
||||||
|
|
||||||
|
<string name="poi_pump_manual">Χειροκίνητη</string>
|
||||||
|
<string name="poi_pump_powered">Τροφοδοτούμενη</string>
|
||||||
|
<string name="poi_pump_no">Χωρίς αντλία</string>
|
||||||
|
<string name="poi_pump_yes">Ναι</string>
|
||||||
|
|
||||||
|
<string name="poi_water_characteristic_mineral">Μεταλλικό</string>
|
||||||
|
<string name="poi_water_characteristic_mud">Χαρακτηριστικό νερού: λάσπη</string>
|
||||||
|
<string name="poi_water_characteristic_sulfuric">Θειικό</string>
|
||||||
|
|
||||||
|
<string name="poi_water_point">Σημείο νερού</string>
|
||||||
|
|
||||||
|
<string name="poi_information_guidepost">Οδοδείκτης</string>
|
||||||
|
<string name="poi_information_board">Πίνακας</string>
|
||||||
|
<string name="poi_information_map">Χάρτης</string>
|
||||||
|
<string name="poi_information_office">Γραφείο</string>
|
||||||
|
<string name="poi_information_trail_blaze">Σημάδι μονοπατιού</string>
|
||||||
|
<string name="poi_information_terminal">Τερματικό</string>
|
||||||
|
<string name="poi_information_route_marker">Δείκτης διαδρομής</string>
|
||||||
|
<string name="poi_information_hikingmap">Πεζοπορικός χάρτης</string>
|
||||||
|
<string name="poi_information_nature">Φύση</string>
|
||||||
|
<string name="poi_information_history">Ιστορικό</string>
|
||||||
|
<string name="poi_information_sign">Σήμα</string>
|
||||||
|
<string name="poi_information_audioguide">Ηχητικός οδηγός</string>
|
||||||
|
<string name="poi_information_bicyclemap">Ποδηλατικός χάρτης</string>
|
||||||
|
<string name="poi_information_tactile_model">Απτικό πρότυπο</string>
|
||||||
|
<string name="poi_information_tactile_map">Απτικός χάρτης</string>
|
||||||
|
<string name="poi_board_type_notice">Πίνακας ανακοινώσεων</string>
|
||||||
|
<string name="poi_board_type_plants">Φυτά</string>
|
||||||
|
<string name="poi_board_type_geology">Γεωλογία</string>
|
||||||
|
<string name="poi_board_type_public_transport">Δημόσιες συγκοινωνίες</string>
|
||||||
|
<string name="poi_board_type_technology">Τεχνολογία</string>
|
||||||
|
<string name="poi_board_type_astronomy">Αστρονομία</string>
|
||||||
|
|
||||||
|
<string name="poi_fireplace_yes">Ναι</string>
|
||||||
|
<string name="poi_fireplace_no">Χωρίς τζάκι</string>
|
||||||
|
|
||||||
|
<string name="poi_covered_yes">Ναι</string>
|
||||||
|
<string name="poi_covered_no">Δεν καλύπτεται</string>
|
||||||
|
|
||||||
|
<string name="poi_smoking_no">Δεν επιτρέπεται</string>
|
||||||
|
<string name="poi_smoking_outside">Μόνο έξω</string>
|
||||||
|
<string name="poi_smoking_yes">Επιτρέπεται</string>
|
||||||
|
<string name="poi_smoking_separated">Σε ξεχωριστό δωμάτιο</string>
|
||||||
|
<string name="poi_smoking_isolated">Σε απομονωμένο δωμάτιο</string>
|
||||||
|
<string name="poi_smoking_dedicated">Μόνο για καπνιστές</string>
|
||||||
|
|
||||||
|
<string name="poi_toll_yes">Διόδια</string>
|
||||||
|
<string name="poi_toll_no">Χωρίς διόδια</string>
|
||||||
|
<string name="poi_toll_hgv_yes">Διόδια για βαρέα οχήματα</string>
|
||||||
|
<string name="poi_tactile_paving_yes">Ναι</string>
|
||||||
|
<string name="poi_tactile_paving_no">Χωρίς απτικό πλακόστρωτο</string>
|
||||||
|
<string name="poi_traffic_signals_sound_yes">Ναι</string>
|
||||||
|
<string name="poi_traffic_signals_sound_no">Όχι</string>
|
||||||
|
<string name="poi_traffic_signals_sound_walk">Μόνο όταν επιτρέπεται το περπάτημα</string>
|
||||||
|
|
||||||
|
<string name="poi_rescue_station">Σταθμός διάσωσης</string>
|
||||||
|
|
||||||
|
<string name="poi_services">ΣΕΑ</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|
|
@ -2832,8 +2832,15 @@ Indikas lokon: %1$s x %2$s"</string>
|
||||||
<string name="by_date">Laŭ dato</string>
|
<string name="by_date">Laŭ dato</string>
|
||||||
<string name="by_type">Laŭ speco</string>
|
<string name="by_type">Laŭ speco</string>
|
||||||
<string name="modify_the_search_query">Modifi serĉpeton</string>
|
<string name="modify_the_search_query">Modifi serĉpeton</string>
|
||||||
<string name="release_3_0">\\022
|
<string name="release_3_0">• nova menuo “Vojaĝo”: legi artikolojn de Vikivojaĝo seninterrete
|
||||||
\n
|
\n
|
||||||
|
\n• Vikipedio: nova stilo, aktivaj ligiloj, bildoj
|
||||||
|
\n
|
||||||
|
\n• menuo de malfermita kurso: vidigi grupojn de navigadpunktojn
|
||||||
|
\n
|
||||||
|
\n• map-markoj: enporti elektitajn grupojn el GPX-dosieroj, plibonigita vido de koordinata enigo
|
||||||
|
\n
|
||||||
|
\n• abono al OsmAnd-Live nur inkluzivas ĉiujn eblaĵojn de OsmAnd
|
||||||
\n</string>
|
\n</string>
|
||||||
<string name="what_is_here">Tie ĉi:</string>
|
<string name="what_is_here">Tie ĉi:</string>
|
||||||
<string name="parked_at">parkumita je</string>
|
<string name="parked_at">parkumita je</string>
|
||||||
|
|
|
@ -3038,7 +3038,15 @@ représentant la zone : %1$s x %2$s</string>
|
||||||
<string name="by_date">Par date</string>
|
<string name="by_date">Par date</string>
|
||||||
<string name="by_type">Par type</string>
|
<string name="by_type">Par type</string>
|
||||||
<string name="modify_the_search_query">Modifier la recherche.</string>
|
<string name="modify_the_search_query">Modifier la recherche.</string>
|
||||||
<string name="release_3_0">\\022
|
<string name="release_3_0">\\022 Nouveau Menu Voyage : consulter les articles WikiVoyage hors connexion
|
||||||
|
\n
|
||||||
|
\n • Wikipedia : nouvelle apparence, images
|
||||||
|
\n
|
||||||
|
\n • Ouverture des traces : affichage de groupes d\'étapes
|
||||||
|
\n
|
||||||
|
\n • Marques : import depuis des fichiers GPX, création par saisie de coordonnées
|
||||||
|
\n
|
||||||
|
\n • L\'abonnement OsmAnd Live inclut désormais toutes les fonctionnalités d\'OsmAnd
|
||||||
\n
|
\n
|
||||||
\n</string>
|
\n</string>
|
||||||
<string name="total_donations">Total des dons</string>
|
<string name="total_donations">Total des dons</string>
|
||||||
|
|
|
@ -3859,4 +3859,6 @@
|
||||||
<string name="poi_glacier_ele_bottom">Legalacsonyabb pont</string>
|
<string name="poi_glacier_ele_bottom">Legalacsonyabb pont</string>
|
||||||
<string name="poi_glacier_slope">Átlagos lejtés (%)</string>
|
<string name="poi_glacier_slope">Átlagos lejtés (%)</string>
|
||||||
|
|
||||||
|
<string name="poi_checkpoint_type">Ellenőrzőpont típusa</string>
|
||||||
|
|
||||||
</resources>
|
</resources>
|
||||||
|
|
|
@ -148,21 +148,21 @@
|
||||||
<string name="osmand_distance_planning_plugin_description">Այս plugin-նը ապահովում է քարտեզի էկրանի վրա վիջեթ, որը հնարավորություն է տալիս ստեղծել ուղիներ, քարտեզի վրա կտտացնելով, նաև օգտագործել կամ փոփոխել առկա GPX ֆայլերը, ուղեւորություն պլանավորել և չափել կետերի միջև հեռավորությունը։</string>
|
<string name="osmand_distance_planning_plugin_description">Այս plugin-նը ապահովում է քարտեզի էկրանի վրա վիջեթ, որը հնարավորություն է տալիս ստեղծել ուղիներ, քարտեզի վրա կտտացնելով, նաև օգտագործել կամ փոփոխել առկա GPX ֆայլերը, ուղեւորություն պլանավորել և չափել կետերի միջև հեռավորությունը։</string>
|
||||||
<string name="shared_string_no">Ոչ</string>
|
<string name="shared_string_no">Ոչ</string>
|
||||||
<string name="shared_string_yes">Այո</string>
|
<string name="shared_string_yes">Այո</string>
|
||||||
<string name="osn_modify_dialog_error">Բացառություն է տեղի ունեցել՝ նշումը չի փոփոխվել</string>
|
<string name="osn_modify_dialog_error">Չհաջողվեց փոփոխել նշումը</string>
|
||||||
<string name="osn_modify_dialog_title">Ձևափոխել նշումը</string>
|
<string name="osn_modify_dialog_title">Ձևափոխել նշումը</string>
|
||||||
<string name="context_menu_item_modify_note">Ձևափոխել OSM նշումը</string>
|
<string name="context_menu_item_modify_note">Ձևափոխել OSM նշումը</string>
|
||||||
<string name="make_round_trip_descr">Ավելացնել սկզբնակետի պատճեն որպես նպատակակետ։</string>
|
<string name="make_round_trip_descr">Ավելացնել սկզբնակետի պատճեն որպես նպատակակետ։</string>
|
||||||
<string name="make_round_trip">Կլոր ուղևորություն</string>
|
<string name="make_round_trip">Կլոր ուղևորություն</string>
|
||||||
|
|
||||||
<string name="shared_string_markers">Մարկերներ</string>
|
<string name="shared_string_markers">Մարկերներ</string>
|
||||||
<string name="coordinates_format">Կոորդինատների ձեւաչափը</string>
|
<string name="coordinates_format">Կոորդինատների ձևաչափը</string>
|
||||||
<string name="use_system_keyboard">Օգտագործել համակարգի ստեղնաշարը</string>
|
<string name="use_system_keyboard">Օգտագործել համակարգի ստեղնաշարը</string>
|
||||||
<string name="fast_coordinates_input_descr">Ընտրեք կոորդինատների մուտքագրման ձեւաչափը: Դուք միշտ կարող եք փոխել այն սեղմելով Հատկություններ։</string>
|
<string name="fast_coordinates_input_descr">Ընտրեք կոորդինատների մուտքագրման ձևաչափը: Դուք միշտ կարող եք փոխել այն սեղմելով Հատկություններ։</string>
|
||||||
<string name="fast_coordinates_input">Կոորդինատների արագ մուտքագրումը</string>
|
<string name="fast_coordinates_input">Կոորդինատների արագ մուտքագրում</string>
|
||||||
<string name="routing_attr_avoid_ice_roads_fords_name">Խուսափել սառույցի ճանապարհներից, ծանծաղուտ</string>
|
<string name="routing_attr_avoid_ice_roads_fords_name">Խուսափել սառույցի ճանապարհներից, ծանծաղուտ</string>
|
||||||
<string name="routing_attr_avoid_ice_roads_fords_description">Խուսափել սառույցի ճանապարհներից և ծանծաղուտներից։</string>
|
<string name="routing_attr_avoid_ice_roads_fords_description">Խուսափել սառույցի ճանապարհներից և ծանծաղուտներից։</string>
|
||||||
<string name="use_location">Օգտագործել դիրքը</string>
|
<string name="use_location">Օգտագործել դիրքը</string>
|
||||||
<string name="add_location_as_first_point_descr">Ավելացրեք ձեր դիրքը, որպես առաջին կետ, երթուղին կատարյալ պլանավորելու համար։</string>
|
<string name="add_location_as_first_point_descr">Ավելացրեք ձեր դիրքը, որպես մեկնարկային կետ, երթուղին կատարյալ պլանավորելու համար։</string>
|
||||||
<string name="my_location">Իմ դիրքը</string>
|
<string name="my_location">Իմ դիրքը</string>
|
||||||
<string name="shared_string_finish">Վերջ</string>
|
<string name="shared_string_finish">Վերջ</string>
|
||||||
<string name="plan_route">Պլանավորել երթուղին</string>
|
<string name="plan_route">Պլանավորել երթուղին</string>
|
||||||
|
@ -172,19 +172,19 @@
|
||||||
<string name="marker_save_as_track_descr">Արտահանեք ձեր մարկերները այն ֆայլի մեջ, որը կարող եք նշել այստեղ:</string>
|
<string name="marker_save_as_track_descr">Արտահանեք ձեր մարկերները այն ֆայլի մեջ, որը կարող եք նշել այստեղ:</string>
|
||||||
<string name="marker_save_as_track">Պահպանել որպես հետեւել</string>
|
<string name="marker_save_as_track">Պահպանել որպես հետեւել</string>
|
||||||
<string name="move_to_history">Տեղափոխեք պատմություն</string>
|
<string name="move_to_history">Տեղափոխեք պատմություն</string>
|
||||||
<string name="group_will_be_removed_after_restart">Հերթական ծրագրի վերագործարկվելուց հետո խումբը կհեռացվի։</string>
|
<string name="group_will_be_removed_after_restart">Ծրագրի հերթական վերագործարկվելուց հետո խումբը կհեռացվի։</string>
|
||||||
<string name="show_guide_line">Ցույց տալ ուղեցույցներ</string>
|
<string name="show_guide_line">Ցույց տալ ուղեցույցներ</string>
|
||||||
<string name="show_arrows_on_the_map">Ցույց տալ սլաքները քարտեզի վրա</string>
|
<string name="show_arrows_on_the_map">Ցույց տալ սլաքները քարտեզի վրա</string>
|
||||||
<string name="show_passed">Ցույց տալ անցած</string>
|
<string name="show_passed">Ցույց տալ անցած</string>
|
||||||
<string name="hide_passed">Թաքցնել անցած</string>
|
<string name="hide_passed">Թաքցնել անցած</string>
|
||||||
<string name="remove_from_map_markers">Մաքրել Մարկերները քարտեզից</string>
|
<string name="remove_from_map_markers">Ջնջել քարտեզի Մարկերներից</string>
|
||||||
<string name="descendingly">նվազում</string>
|
<string name="descendingly">նվազում</string>
|
||||||
<string name="ascendingly">աճող</string>
|
<string name="ascendingly">աճող</string>
|
||||||
<string name="date_added">Ամսաթիվ ավելացված է</string>
|
<string name="date_added">Ամսաթիվ ավելացված է</string>
|
||||||
<string name="order_by">Դասավորել ըստ:</string>
|
<string name="order_by">Դասավորել ըստ:</string>
|
||||||
<string name="marker_show_distance_descr">Ընտրեք, թե ինչպես ցույց տա քարտեզի էկրանին մարկերները քարտեզագրելու հեռավորությունը եւ ուղղությունը:</string>
|
<string name="marker_show_distance_descr">Ընտրեք, թե ինչպես ցույց տա քարտեզի էկրանին մարկերները քարտեզագրելու հեռավորությունը եւ ուղղությունը:</string>
|
||||||
<string name="map_orientation_change_in_accordance_with_speed">Քարտեզի կողմնորոշման շեմը</string>
|
<string name="map_orientation_change_in_accordance_with_speed">Քարտեզի կողմնորոշման շեմը</string>
|
||||||
<string name="map_orientation_change_in_accordance_with_speed_descr">"Ընտրեք ստորեւ, թե ինչ արագության հասնելուց քարտեզի կողմնորոշումը կպոխվի \"Շարժման ուղղություն\" դեպի «Կողմնացույց»։"</string>
|
<string name="map_orientation_change_in_accordance_with_speed_descr">"Ընտրեք, թե ինչ արագության հասնելուց քարտեզի կողմնորոշումը կպոխվի \"Շարժման ուղղություն\" դեպի «Կողմնացույց»։"</string>
|
||||||
<string name="all_markers_moved_to_history">Բոլոր Մարկերները տեղափոխվել են պատմություն</string>
|
<string name="all_markers_moved_to_history">Բոլոր Մարկերները տեղափոխվել են պատմություն</string>
|
||||||
<string name="marker_moved_to_history">Քարտեզի Մարկերները տեղափոխվել են պատմություն</string>
|
<string name="marker_moved_to_history">Քարտեզի Մարկերները տեղափոխվել են պատմություն</string>
|
||||||
<string name="marker_moved_to_active">Քարտեզի Մարկերները տեղափոխվեցին ակտիվ</string>
|
<string name="marker_moved_to_active">Քարտեզի Մարկերները տեղափոխվեցին ակտիվ</string>
|
||||||
|
@ -199,7 +199,7 @@
|
||||||
<string name="move_all_to_history">Բոլորը տեղափոխել պատմություն</string>
|
<string name="move_all_to_history">Բոլորը տեղափոխել պատմություն</string>
|
||||||
<string name="show_direction">Հեռավորության ցուցիչ</string>
|
<string name="show_direction">Հեռավորության ցուցիչ</string>
|
||||||
<string name="sort_by">Դասավորել ըստ</string>
|
<string name="sort_by">Դասավորել ըստ</string>
|
||||||
<string name="do_not_use_animations">Մի օգտագործեք անիմացիաները</string>
|
<string name="do_not_use_animations">Առանց անիմացիաները</string>
|
||||||
<string name="do_not_use_animations_descr">Անջատում է անիմացիաները։</string>
|
<string name="do_not_use_animations_descr">Անջատում է անիմացիաները։</string>
|
||||||
<string name="keep_showing_on_map">Ցուցադրել քարտեզի վրա</string>
|
<string name="keep_showing_on_map">Ցուցադրել քարտեզի վրա</string>
|
||||||
<string name="exit_without_saving">Ելք առանց պահպանման?</string>
|
<string name="exit_without_saving">Ելք առանց պահպանման?</string>
|
||||||
|
@ -212,25 +212,25 @@
|
||||||
<string name="add_point_after">Ավելացել կետ</string>
|
<string name="add_point_after">Ավելացել կետ</string>
|
||||||
<string name="shared_string_options">Ընտրանքներ</string>
|
<string name="shared_string_options">Ընտրանքներ</string>
|
||||||
<string name="measurement_tool_snap_to_road_descr">OsmAnd կմիացնի կետերը երթուղիների հետ ընտրված պրոֆիլի համար։</string>
|
<string name="measurement_tool_snap_to_road_descr">OsmAnd կմիացնի կետերը երթուղիների հետ ընտրված պրոֆիլի համար։</string>
|
||||||
<string name="measurement_tool_save_as_new_track_descr">"Դուք կարող եք պահպանել կետերը որպես երթուղի կամ որպես գիծ:"</string>
|
<string name="measurement_tool_save_as_new_track_descr">"Պահպանել կետերը որպես երթուղի կամ որպես գիծ:"</string>
|
||||||
<string name="choose_navigation_type">Ընտրեք նավիգացիոն պրոֆիլը</string>
|
<string name="choose_navigation_type">Ընտրեք նավիգացիոն պրոֆիլը</string>
|
||||||
<string name="none_point_error">Անհրաժեշտ է ավելացնել գոնե մեկ կետ։</string>
|
<string name="none_point_error">Անհրաժեշտ է ավելացնել գոնե մեկ կետ։</string>
|
||||||
<string name="enter_gpx_name">GPX Ֆայլի անունը՝</string>
|
<string name="enter_gpx_name">GPX Ֆայլի անունը՝</string>
|
||||||
<string name="show_on_map_after_saving">Ցույց տալ քարտեզի վրա պահպանելուց հետո</string>
|
<string name="show_on_map_after_saving">Ցույց տալ քարտեզի վրա պահպանելուց հետո</string>
|
||||||
<string name="measurement_tool_action_bar">Դիտեք քարտեզը եւ ավելացրեք կետերը</string>
|
<string name="measurement_tool_action_bar">Դիտեք քարտեզը եւ ավելացրեք կետերը</string>
|
||||||
<string name="measurement_tool">Չափել հեռավորությունը</string>
|
<string name="measurement_tool">Չափել հեռավորությունը</string>
|
||||||
<string name="quick_action_resume_pause_navigation">Վերսկսել/կասեցնել նավիգացիյան</string>
|
<string name="quick_action_resume_pause_navigation">Դադար/վերսկսել նավիգացիյան</string>
|
||||||
<string name="quick_action_resume_pause_navigation_descr">"Սեղմել այս կոճակը նավիգացիան կասեցնելու կամ վերսկսելու։"</string>
|
<string name="quick_action_resume_pause_navigation_descr">"Սեղմել այս կոճակը նավիգացիան կասեցնելու կամ վերսկսելու։"</string>
|
||||||
<string name="quick_action_show_navigation_finish_dialog">Ցույց տալ նավարկության վերջնական երկխոսությունը</string>
|
<string name="quick_action_show_navigation_finish_dialog">Ցույց տալ \'Նավիգացիան ավարտվեց\' երկխոսությունը</string>
|
||||||
<string name="quick_action_start_stop_navigation">Սկսել / ավարտել նավարկությունը</string>
|
<string name="quick_action_start_stop_navigation">Սկսել / ավարտել նավարկությունը</string>
|
||||||
<string name="quick_action_start_stop_navigation_descr">Հպեք այս կոճակը, նավիգացիան սկսելու կամ ավարտելու համար:</string>
|
<string name="quick_action_start_stop_navigation_descr">Հպեք այս կոճակը, նավիգացիան սկսելու կամ ավարտելու համար:</string>
|
||||||
<string name="store_tracks_in_monthly_directories">Պահպանել թղթապանակներում գրանցված տրեկերը ամսական</string>
|
<string name="store_tracks_in_monthly_directories">Պահպանել թղթապանակներում գրանցված տրեկերը ամսական</string>
|
||||||
<string name="store_tracks_in_monthly_directories_descrp">Պահպանել տրեկները ենթա-թղթապանակներում ըստ գրանցված ամսին (օրինակ 2017-01)։</string>
|
<string name="store_tracks_in_monthly_directories_descrp">Պահպանել տրեկները ենթա-թղթապանակներում ըստ գրանցված ամսին (օրինակ 2018-01)։</string>
|
||||||
<string name="shared_string_reset">Վերագործարկեք</string>
|
<string name="shared_string_reset">Վերագործարկեք</string>
|
||||||
<string name="shared_string_reload">Վերբեռնել</string>
|
<string name="shared_string_reload">Վերբեռնել</string>
|
||||||
<string name="mapillary_menu_descr_tile_cache">Վերբեռնել սալիկներ ընթացիկ տվյալները ցուցադրելու համար:</string>
|
<string name="mapillary_menu_descr_tile_cache">Վերբեռնել սալիկներ ընթացիկ տվյալները ցուցադրելու համար:</string>
|
||||||
<string name="mapillary_menu_title_tile_cache">Սալիկներ կեշ</string>
|
<string name="mapillary_menu_title_tile_cache">Սալիկներ կեշ</string>
|
||||||
<string name="wrong_user_name">Սխալ օգտագործողի անուն!</string>
|
<string name="wrong_user_name">Սխալ օգտագործողի անուն (username)</string>
|
||||||
<string name="shared_string_to">Մինչև</string>
|
<string name="shared_string_to">Մինչև</string>
|
||||||
<string name="mapillary_menu_date_from">Սկսած</string>
|
<string name="mapillary_menu_date_from">Սկսած</string>
|
||||||
<string name="mapillary_menu_descr_dates">Դիտել միայն ավելացրած լուսանկարներ</string>
|
<string name="mapillary_menu_descr_dates">Դիտել միայն ավելացրած լուսանկարներ</string>
|
||||||
|
@ -238,7 +238,7 @@
|
||||||
<string name="mapillary_menu_edit_text_hint">"Մուտքագրեք օգտատերի անունը"</string>
|
<string name="mapillary_menu_edit_text_hint">"Մուտքագրեք օգտատերի անունը"</string>
|
||||||
<string name="mapillary_menu_descr_username">Դիտել լուսանկարները ավելացրած օգտագործողի կողմից</string>
|
<string name="mapillary_menu_descr_username">Դիտել լուսանկարները ավելացրած օգտագործողի կողմից</string>
|
||||||
<string name="mapillary_menu_title_username">Օգտատերի անունը</string>
|
<string name="mapillary_menu_title_username">Օգտատերի անունը</string>
|
||||||
<string name="mapillary_menu_filter_description">Դուք կարող եք դասավորել լուսանկարներ ըստ ուղարկողի կամ ամսաթվի: Զտիչները օգտագործվում են միայն մեծ չափերի համար:</string>
|
<string name="mapillary_menu_filter_description">Դասավորել լուսանկարները ըստ ուղարկողի կամ ամսաթվի: Միայն մեծ չափերի համար:</string>
|
||||||
<string name="map_widget_ruler_control">Շառավիղ-քանոն</string>
|
<string name="map_widget_ruler_control">Շառավիղ-քանոն</string>
|
||||||
<string name="shared_string_permissions">Թույլտվություն</string>
|
<string name="shared_string_permissions">Թույլտվություն</string>
|
||||||
<string name="import_gpx_failed_descr">OsmAnd-ը չի կարող ներմուծել ֆայլը: Ստուգեք, արդյոք OsmAnd-ը իրավունք ունի կարդալ ֆայլը իր գտնվելու վայրից:</string>
|
<string name="import_gpx_failed_descr">OsmAnd-ը չի կարող ներմուծել ֆայլը: Ստուգեք, արդյոք OsmAnd-ը իրավունք ունի կարդալ ֆայլը իր գտնվելու վայրից:</string>
|
||||||
|
@ -247,8 +247,7 @@
|
||||||
<string name="open_mapillary">Բացել Mapillary</string>
|
<string name="open_mapillary">Բացել Mapillary</string>
|
||||||
<string name="shared_string_install">Տեղադրել</string>
|
<string name="shared_string_install">Տեղադրել</string>
|
||||||
<string name="improve_coverage_mapillary">Կատարելագործել լուսանկարի ծածկույթը Mapillary- ի միջոցով</string>
|
<string name="improve_coverage_mapillary">Կատարելագործել լուսանկարի ծածկույթը Mapillary- ի միջոցով</string>
|
||||||
<string name="improve_coverage_install_mapillary_desc">"Դուք կարող եք ձեր սեփական լուսանկարները կամ մի շարք լուսանկարներ կցել քարտեզի գտնվելու վայրի:
|
<string name="improve_coverage_install_mapillary_desc">"Տեղադրել Mapillary ծրագիրը լուսանկարն կամ մի շարք լուսանկարներ կցելու քարտեզին գտնվելու վայրում:"</string>
|
||||||
\nԴա անելու համարանհրաժեշտ է տեղադրել Mapillary ծրագիրը Google Play խանութից:"</string>
|
|
||||||
<string name="online_photos">Առցանց լուսանկարներ</string>
|
<string name="online_photos">Առցանց լուսանկարներ</string>
|
||||||
<string name="shared_string_add_photos">Ավելացնել լուսանկարներ</string>
|
<string name="shared_string_add_photos">Ավելացնել լուսանկարներ</string>
|
||||||
<string name="no_photos_descr">Այս վայրի համար լուսանկարներ չունենք։</string>
|
<string name="no_photos_descr">Այս վայրի համար լուսանկարներ չունենք։</string>
|
||||||
|
@ -258,23 +257,23 @@
|
||||||
<string name="mapillary_descr">Առցանց փողոցային նկարներ բոլորի համար: Բացահայտեք վայրերը, համագործակցեք, նկարեք աշխարհը:</string>
|
<string name="mapillary_descr">Առցանց փողոցային նկարներ բոլորի համար: Բացահայտեք վայրերը, համագործակցեք, նկարեք աշխարհը:</string>
|
||||||
<string name="mapillary">Մափիլարի(Mapillary)</string>
|
<string name="mapillary">Մափիլարի(Mapillary)</string>
|
||||||
<string name="plugin_mapillary_descr">Փողոցային նկարներ բոլորի համար: Բացահայտեք վայրերը, համագործակցեք, նկարեք աշխարհը:</string>
|
<string name="plugin_mapillary_descr">Փողոցային նկարներ բոլորի համար: Բացահայտեք վայրերը, համագործակցեք, նկարեք աշխարհը:</string>
|
||||||
<string name="private_access_routing_req">"Նպատակակետը գտնվում է մասնավորի տարածքում: Ցանկանում եք թույլատրել այս ուղեւորությանը մասնավոր ճանապարհներ մուտք գործել?"</string>
|
<string name="private_access_routing_req">"Նպատակակետը գտնվում է մասնավորի տարածքում: Թույլատրել այս ուղևորությանը մասնավոր ճանապարհներ մուտք գործել?"</string>
|
||||||
<string name="restart_search">Նորից որոնեք</string>
|
<string name="restart_search">Նորից որոնեք</string>
|
||||||
<string name="increase_search_radius">Ավելացնել որոնման շառավղը</string>
|
<string name="increase_search_radius">Ավելացնել որոնման շառավղը</string>
|
||||||
<string name="nothing_found">Ոչինչ չի գտնվել :(</string>
|
<string name="nothing_found">Ոչինչ չի գտնվել</string>
|
||||||
<string name="nothing_found_descr">"Փոխել հարցումը կամ ավելացնել որոնման շառավիղը։"</string>
|
<string name="nothing_found_descr">"Փոխել հարցումը կամ ավելացնել որոնման շառավիղը։"</string>
|
||||||
<string name="quick_action_showhide_osmbugs_title">Ցույց տալ/թաքցնել OSM նշումները</string>
|
<string name="quick_action_showhide_osmbugs_title">Ցույց տալ/թաքցնել OSM նշումները</string>
|
||||||
<string name="quick_action_osmbugs_show">Ցույց տալ OSM նշումները</string>
|
<string name="quick_action_osmbugs_show">Ցույց տալ OSM նշումները</string>
|
||||||
<string name="quick_action_osmbugs_hide">Թաքցնել OSM նշումները</string>
|
<string name="quick_action_osmbugs_hide">Թաքցնել OSM նշումները</string>
|
||||||
<string name="quick_action_showhide_osmbugs_descr">Գործողությունների կոճակը հպելով, քարտեզի վրա ցույց կտա կամ կթաքցնի OSM- ի նշումները:</string>
|
<string name="quick_action_showhide_osmbugs_descr">Գործողությունների կոճակը սխմելով, քարտեզի վրա ցույց կտա կամ կթաքցնի OSM-ի նշումները:</string>
|
||||||
<string name="sorted_by_distance">Դասավորված է ըստ հեռավորության</string>
|
<string name="sorted_by_distance">Դասավորված է ըստ հեռավորության</string>
|
||||||
<string name="search_favorites">Որոնում Սիրվածում</string>
|
<string name="search_favorites">Որոնում Սիրվածում</string>
|
||||||
<string name="hillshade_menu_download_descr">Ռելիեֆի ստվերները ցուցադրելու համար անհրաժեշտ է ներբեռնել հատուկ քարտեզ այս տարածքի համար:</string>
|
<string name="hillshade_menu_download_descr">Ներբեռնել \"Ռելիեֆի ստվերները\" հատուկ քարտեզ այս տարածքի համար:</string>
|
||||||
<string name="hillshade_purchase_header">Ռելիեֆի ստվերները ցուցադրելու համար անհրաժեշտ է գնել եւ տեղադրել Contour Lines plugin</string>
|
<string name="hillshade_purchase_header">Տեղադրել Contour Lines plugin \"Ռելիեֆի ստվերները\" ցուցադրելու համար</string>
|
||||||
<string name="hide_from_zoom_level">"Թաքցնել մոտեցման մասշտաբից"</string>
|
<string name="hide_from_zoom_level">"Թաքցնել մոտեցման մասշտաբից"</string>
|
||||||
<string name="srtm_menu_download_descr">Եզրագծերը դիտելու համար անհրաժեշտ է ներբեռնել հատուկ քարտեզ այս տարածքի համար:</string>
|
<string name="srtm_menu_download_descr">Ներբեռնել \"Եզրագծեր\" հատուկ քարտեզ այս տարածքի համար:</string>
|
||||||
<string name="shared_string_plugin">Պլագին</string>
|
<string name="shared_string_plugin">Պլագին</string>
|
||||||
<string name="srtm_purchase_header">Եզրագծերը դիտելու համար անհրաժեշտ անհրաժեշտ է գնել եւ տեղադրել Contour Lines plugin</string>
|
<string name="srtm_purchase_header">"\"Եզրագծերը\" դիտելու համար անհրաժեշտ է գնել և տեղադրել \"Contour Lines\" plugin"</string>
|
||||||
<string name="srtm_color_scheme">Գունային սխեմա</string>
|
<string name="srtm_color_scheme">Գունային սխեմա</string>
|
||||||
<string name="show_from_zoom_level">Ցուցադրել խոշորացման մակարդակից</string>
|
<string name="show_from_zoom_level">Ցուցադրել խոշորացման մակարդակից</string>
|
||||||
<string name="routing_attr_allow_private_name">Թույլ տալ մասնավոր մուտք</string>
|
<string name="routing_attr_allow_private_name">Թույլ տալ մասնավոր մուտք</string>
|
||||||
|
@ -294,21 +293,21 @@
|
||||||
<string name="select_city">Ընտրեք քաղաքը</string>
|
<string name="select_city">Ընտրեք քաղաքը</string>
|
||||||
<string name="select_postcode">Ընտրեք փոստային կոդը</string>
|
<string name="select_postcode">Ընտրեք փոստային կոդը</string>
|
||||||
<string name="quick_action_auto_zoom">Քարտեզի ավտոմասշտաբ on/off</string>
|
<string name="quick_action_auto_zoom">Քարտեզի ավտոմասշտաբ on/off</string>
|
||||||
<string name="quick_action_auto_zoom_desc">"Գործողությունների կոճակը հպելով, ավտոմասշտաբի on/off համաձայն ձեր արագությանը:"</string>
|
<string name="quick_action_auto_zoom_desc">Սխմելով այս գործողությունների կոճակը ակտիվացնում է ավտոմասշտաբի on/off համաձայն ձեր արագությանը:</string>
|
||||||
<string name="quick_action_auto_zoom_on">Միացնել ավտոմասշտաբ</string>
|
<string name="quick_action_auto_zoom_on">Միացնել ավտոմասշտաբ</string>
|
||||||
<string name="quick_action_auto_zoom_off">Անջատել ավտոմաստաբ</string>
|
<string name="quick_action_auto_zoom_off">Անջատել ավտոմաստաբ</string>
|
||||||
<string name="quick_action_add_destination">Ավելացնել նպատակակետ</string>
|
<string name="quick_action_add_destination">Ավելացնել նպատակակետ</string>
|
||||||
<string name="quick_action_replace_destination">Փոխարինել նպատակակետը</string>
|
<string name="quick_action_replace_destination">Փոխարինել նպատակակետը</string>
|
||||||
<string name="quick_action_add_first_intermediate">Ավելացնել առաջին միջանկյալ կետը</string>
|
<string name="quick_action_add_first_intermediate">Ավելացնել առաջին միջանկյալ կետը</string>
|
||||||
<string name="quick_action_add_destination_desc">Գործողությունների կոճակը հպելով, ավելացննում նպատակակետ էկրանի կենտրոնում։ Մինչ այդ ընտրած նպատակակետը կդառնա միջանկյալ կետ։</string>
|
<string name="quick_action_add_destination_desc">Սխմելով այս գործողությունների կոճակը, ավելացննում նպատակակետ էկրանի կենտրոնում։ Մինչ այդ ընտրած նպատակակետը կդառնա միջանկյալ կետ։</string>
|
||||||
<string name="quick_action_replace_destination_desc">Գործողությունների կոճակը հպելով, տեղափոխում նպատակակետը էկրանի կենտրոն։</string>
|
<string name="quick_action_replace_destination_desc">Սխմելով այս գործողությունների կոճակը, տեղափոխում նպատակակետը էկրանի կենտրոն։</string>
|
||||||
<string name="quick_action_add_first_intermediate_desc">Գործողությունների կոճակը հպելով, ավելացննում է առաջին միջանկյալ կետ էկրանի կենտրոնում։</string>
|
<string name="quick_action_add_first_intermediate_desc">Սխմելով այս գործողությունների կոճակը, ավելացննում է առաջին միջանկյալ կետ էկրանի կենտրոնում։</string>
|
||||||
<string name="no_overlay">Ծածկույթի քարտեզը անջատված է</string>
|
<string name="no_overlay">Ծածկույթի քարտեզը անջատված է</string>
|
||||||
<string name="no_underlay">Նեքեվի շերնը անջատված է</string>
|
<string name="no_underlay">Նեքեվի շերնը անջատված է</string>
|
||||||
<string name="subscribe_email_error">Սխալ</string>
|
<string name="subscribe_email_error">Սխալ</string>
|
||||||
<string name="subscribe_email_desc">Բաժանորդագրվեք մեր էլեկտրոնային փոստի առաքմանը `OsmAnd զեղչերի մասին եւ ստացիր 3 լրացուցիչ քարտեզների ներբեռնում:</string>
|
<string name="subscribe_email_desc">Բաժանորդագրվեք մեր էլեկտրոնային փոստի առաքմանը `OsmAnd զեղչերի մասին և ստացիր 3 լրացուցիչ քարտեզների ներբեռնում:</string>
|
||||||
<string name="depth_contour_descr">Քարտեզներ, որոնք պարունակոմ են եզրագծեր և ծովային խորության կետեր։</string>
|
<string name="depth_contour_descr">Քարտեզներ՝ ծովային եզրագծեր և խորության կետեր։</string>
|
||||||
<string name="sea_depth_thanks">Շնորհակալություն ծովային խորքային ուրվագծերի ձեռքբերման համար:</string>
|
<string name="sea_depth_thanks">Շնորհակալություն \"Ծովային խորքային ուրվագծերի\" ձեռքբերման համար</string>
|
||||||
<string name="index_item_depth_contours_osmand_ext">Ծովային խորքային ուրվագծեր</string>
|
<string name="index_item_depth_contours_osmand_ext">Ծովային խորքային ուրվագծեր</string>
|
||||||
<string name="download_depth_countours">Ծովային խորքային ուրվագիծը</string>
|
<string name="download_depth_countours">Ծովային խորքային ուրվագիծը</string>
|
||||||
<string name="nautical_maps">Ծովային քարտեզներ</string>
|
<string name="nautical_maps">Ծովային քարտեզներ</string>
|
||||||
|
@ -321,17 +320,17 @@
|
||||||
<string name="do_not_send_anonymous_app_usage">Չհավաքել օգտագործման վիճակագրությունը</string>
|
<string name="do_not_send_anonymous_app_usage">Չհավաքել օգտագործման վիճակագրությունը</string>
|
||||||
<string name="do_not_show_startup_messages">Չցուցադրել հաղորդագրությունները մեկնարկին</string>
|
<string name="do_not_show_startup_messages">Չցուցադրել հաղորդագրությունները մեկնարկին</string>
|
||||||
<string name="parking_options">Ավտոկանգառի ընտրանքներ</string>
|
<string name="parking_options">Ավտոկանգառի ընտրանքներ</string>
|
||||||
<string name="full_version_thanks">Շնորհակալություն OsmAnd-ի ամբողջական տարբերակի ձեռք բերեման համար!</string>
|
<string name="full_version_thanks">Շնորհակալություն OsmAnd-ի վճարովի տարբերակի ձեռք բերեման համար։</string>
|
||||||
<string name="routing_attr_relief_smoothness_factor_hills_name">Լեռնոտ</string>
|
<string name="routing_attr_relief_smoothness_factor_hills_name">Լեռնոտ</string>
|
||||||
<string name="routing_attr_relief_smoothness_factor_plains_name">Քիչ լեռնոտ</string>
|
<string name="routing_attr_relief_smoothness_factor_plains_name">Քիչ լեռնոտ</string>
|
||||||
<string name="routing_attr_relief_smoothness_factor_more_plains_name">Բնակարան</string>
|
<string name="routing_attr_relief_smoothness_factor_more_plains_name">Բնակարան</string>
|
||||||
<string name="routing_attr_driving_style_speed_name">Կարճ երթուղիները</string>
|
<string name="routing_attr_driving_style_speed_name">Կարճ երթուղիները</string>
|
||||||
<string name="routing_attr_driving_style_balance_name">Հավասարակշռված</string>
|
<string name="routing_attr_driving_style_balance_name">Հավասարակշռված</string>
|
||||||
<string name="routing_attr_driving_style_safety_name">նախընտրում անընդմեջ</string>
|
<string name="routing_attr_driving_style_safety_name">նախընտրում անընդմեջ</string>
|
||||||
<string name="relief_smoothness_factor_descr">Նախընտրելի տեղանք`հարթ կամ լեռնոտ։</string>
|
<string name="relief_smoothness_factor_descr">Նախընտրելի տեղանք`Հարթ կամ լեռնոտ։</string>
|
||||||
<string name="shared_string_slope">Լանջ</string>
|
<string name="shared_string_slope">Լանջ</string>
|
||||||
<string name="add_new_folder">Ավելացնել նոր թղթապանակ</string>
|
<string name="add_new_folder">Ավելացնել նոր թղթապանակ</string>
|
||||||
<string name="points_delete_multiple_succesful">Կետ(եր)ը հաջողությամբ ջնջված է:</string>
|
<string name="points_delete_multiple_succesful">Կետ(եր)ը ջնջված է:</string>
|
||||||
<string name="points_delete_multiple">Դուք մտադիր եք ջնջել կետ(եր)ը: Համոզված եք?</string>
|
<string name="points_delete_multiple">Դուք մտադիր եք ջնջել կետ(եր)ը: Համոզված եք?</string>
|
||||||
<string name="track_points_category_name">Հայտնի կետեր այս երթուղու վրա</string>
|
<string name="track_points_category_name">Հայտնի կետեր այս երթուղու վրա</string>
|
||||||
<string name="gpx_track">Տրեկ</string>
|
<string name="gpx_track">Տրեկ</string>
|
||||||
|
@ -340,8 +339,8 @@
|
||||||
<string name="shared_string_time_moving">Ժամանակն շարժման մեջ</string>
|
<string name="shared_string_time_moving">Ժամանակն շարժման մեջ</string>
|
||||||
<string name="shared_string_time_span">Ընդհանուր ժամանակը</string>
|
<string name="shared_string_time_span">Ընդհանուր ժամանակը</string>
|
||||||
<string name="shared_string_max">Առավելագույն</string>
|
<string name="shared_string_max">Առավելագույն</string>
|
||||||
<string name="shared_string_start_time">Սկսման Ժամկետ</string>
|
<string name="shared_string_start_time">Մեկնում</string>
|
||||||
<string name="shared_string_end_time">Ավարտման Ժամկետ</string>
|
<string name="shared_string_end_time">Ժամանում</string>
|
||||||
<string name="shared_string_color">Գույնը</string>
|
<string name="shared_string_color">Գույնը</string>
|
||||||
<string name="select_gpx_folder">Ընտրեք թղթապանակ տրեկերի համար</string>
|
<string name="select_gpx_folder">Ընտրեք թղթապանակ տրեկերի համար</string>
|
||||||
<string name="file_can_not_be_moved">Ֆայլը չի կարող տեղափոխվել:</string>
|
<string name="file_can_not_be_moved">Ֆայլը չի կարող տեղափոխվել:</string>
|
||||||
|
@ -373,7 +372,7 @@
|
||||||
<string name="show_legacy_search">Ցույց տալ հին որոնման տեսակը</string>
|
<string name="show_legacy_search">Ցույց տալ հին որոնման տեսակը</string>
|
||||||
<string name="routing_attr_allow_motorway_name">Թույլատրել ավտոմայրուղիներ</string>
|
<string name="routing_attr_allow_motorway_name">Թույլատրել ավտոմայրուղիներ</string>
|
||||||
<string name="routing_attr_allow_motorway_description">Թույլատրել ավտոմայրուղիներ։</string>
|
<string name="routing_attr_allow_motorway_description">Թույլատրել ավտոմայրուղիներ։</string>
|
||||||
<string name="upload_osm_note_description">Դուք կարող եք վերբեռնել ձեր OSM Նշումը անանուն կամ ձեր OpenStreetMap.org պրոֆիլի միջոցով:</string>
|
<string name="upload_osm_note_description">Վերբեռնել ձեր OSM \"Նշումը\" անանուն կամ ձեր OpenStreetMap.org պրոֆիլի միջոցով:</string>
|
||||||
<string name="wiki_around">Վիքիպեդիայի հոդվածներ</string>
|
<string name="wiki_around">Վիքիպեդիայի հոդվածներ</string>
|
||||||
<string name="search_map_hint">Որոնել քաղաք կամ երկիր</string>
|
<string name="search_map_hint">Որոնել քաղաք կամ երկիր</string>
|
||||||
<string name="route_roundabout_short">Վերցրեք %1$d ելքը</string>
|
<string name="route_roundabout_short">Վերցրեք %1$d ելքը</string>
|
||||||
|
@ -405,10 +404,10 @@
|
||||||
<string name="save_filter">Պահպանել ֆիլտրը</string>
|
<string name="save_filter">Պահպանել ֆիլտրը</string>
|
||||||
<string name="delete_filter">Ջնջել ֆիլտրը</string>
|
<string name="delete_filter">Ջնջել ֆիլտրը</string>
|
||||||
<string name="new_filter">Նոր ֆիլտր</string>
|
<string name="new_filter">Նոր ֆիլտր</string>
|
||||||
<string name="new_filter_desc">Մուտքագրեք նոր ֆիլտրի անունը: Դուք կարող եք գտնել այն Կատեգորիաների ցանկում:</string>
|
<string name="new_filter_desc">Մուտքագրեք նոր ֆիլտրի անունը: Դուք կարող եք գտնել այն \"Կատեգորիաների\" ցանկում:</string>
|
||||||
<string name="osm_live_payment_desc">"Բաժանորդային վճարը գանձվում է ամսական կտրվածքով:Դուք կարող եք չեղարկել բաժանորդագրությունը Google Play- յում ցանկացած պահի:"</string>
|
<string name="osm_live_payment_desc">"Բաժանորդային վճարը գանձվում է ամսական կտրվածքով:Դուք կարող եք չեղարկել բաժանորդագրությունը Google Play-յում ցանկացած պահի:"</string>
|
||||||
<string name="donation_to_osm">Նվիրատվություն OpenStreetMap համայնքին</string>
|
<string name="donation_to_osm">Նվիրատվություն OpenStreetMap համայնքին</string>
|
||||||
<string name="donation_to_osm_desc">Ձեր նվիրատվության մի մասը կուղարկվի OSM մասնակիցներին, որոնք փոփոխություններ են մտցմում OpenStreetMap-ուն: Բաժանորդագրության արժեքը մնում է նույնը:</string>
|
<string name="donation_to_osm_desc">Ձեր նվիրատվության մի մասը ուղարկվում է OSM մասնակիցներին, որոնք փոփոխություններ են մտցմում OpenStreetMap-ուն: Բաժանորդագրության արժեքը մնում է նույնը:</string>
|
||||||
<string name="osm_live_subscription_desc">Բաժանորդագրությունը հնարավորութուն է տալիս անսահմանափակ թարմացումներ ներբեռնել աշխարհի ցանկացած քարտեզներ ամեն ժամ, ամենօրյա, շաբաթական:</string>
|
<string name="osm_live_subscription_desc">Բաժանորդագրությունը հնարավորութուն է տալիս անսահմանափակ թարմացումներ ներբեռնել աշխարհի ցանկացած քարտեզներ ամեն ժամ, ամենօրյա, շաբաթական:</string>
|
||||||
<string name="get_it">Ստանալ այն</string>
|
<string name="get_it">Ստանալ այն</string>
|
||||||
<string name="get_for">Ստանալ %1$s</string>
|
<string name="get_for">Ստանալ %1$s</string>
|
||||||
|
@ -417,7 +416,7 @@
|
||||||
<string name="osmand_plus_banner_desc">Անսահմանափակ քարտեզների ներբեռնում , թարմացումներ, եւ Wikipedia plugin։</string>
|
<string name="osmand_plus_banner_desc">Անսահմանափակ քարտեզների ներբեռնում , թարմացումներ, եւ Wikipedia plugin։</string>
|
||||||
<string name="si_mi_meters">Մղոններ/մետր</string>
|
<string name="si_mi_meters">Մղոններ/մետր</string>
|
||||||
<string name="skip_map_downloading">Բաց թողնել քարտեզների ներբեռնումը</string>
|
<string name="skip_map_downloading">Բաց թողնել քարտեզների ներբեռնումը</string>
|
||||||
<string name="skip_map_downloading_desc">Դուք չունեք անցանց քարտեզներ: Դուք կարող եք ընտրել քարտեզը ցուցակից կամ ներբեռնել քարտեզները հետագայում Menu - %1$s միջոցով:</string>
|
<string name="skip_map_downloading_desc">Դուք չունեք անցանց քարտեզներ: Դուք կարող եք ընտրել քարտեզը ցուցակից կամ ներբեռնել քարտեզները հետագայում \"Menu - %1$s\" միջոցով:</string>
|
||||||
<string name="search_another_country">Ընտրեք այլ տարածաշրջան</string>
|
<string name="search_another_country">Ընտրեք այլ տարածաշրջան</string>
|
||||||
<string name="search_map">Քարտեզների որոնում…</string>
|
<string name="search_map">Քարտեզների որոնում…</string>
|
||||||
<string name="first_usage_wizard_desc">OsmAnd-ը կորոշի ձեր դիրքը և առաջարկի քարտեզներ ներբեռնման համար այդ տարածաշրջանի համար:</string>
|
<string name="first_usage_wizard_desc">OsmAnd-ը կորոշի ձեր դիրքը և առաջարկի քարտեզներ ներբեռնման համար այդ տարածաշրջանի համար:</string>
|
||||||
|
@ -436,22 +435,22 @@
|
||||||
<string name="auto_split_recording_descr">Սկսել նոր սեգմենտ 6 րոպեանոց ընդմիջումից հետո, նոր տրեկ 2 ժամանոց ընդմիջումից հետո կամ նոր ֆայլ երկարատև ընդմիջումից հետո (եթե ամսաթիվը փոխվել է):</string>
|
<string name="auto_split_recording_descr">Սկսել նոր սեգմենտ 6 րոպեանոց ընդմիջումից հետո, նոր տրեկ 2 ժամանոց ընդմիջումից հետո կամ նոր ֆայլ երկարատև ընդմիջումից հետո (եթե ամսաթիվը փոխվել է):</string>
|
||||||
<string name="rendering_attr_contourColorScheme_description">Եզրագծերի գունային սխեման</string>
|
<string name="rendering_attr_contourColorScheme_description">Եզրագծերի գունային սխեման</string>
|
||||||
<string name="save_track_min_speed">Նվազագույն արագությունը մուտքագրելու համար</string>
|
<string name="save_track_min_speed">Նվազագույն արագությունը մուտքագրելու համար</string>
|
||||||
<string name="save_track_min_speed_descr">Ֆիլտր՝ Նշանակել նվազագույն արագություն կետի համար։</string>
|
<string name="save_track_min_speed_descr">Ֆիլտր՝ Չգրանցել կետերը այս արագությունից ցածր լինելու դեպքում:</string>
|
||||||
<string name="save_track_min_distance">Նվազագույն տեղաշարժը մուտքագրելու համար</string>
|
<string name="save_track_min_distance">Նվազագույն տեղաշարժը մուտքագրելու համար</string>
|
||||||
<string name="save_track_min_distance_descr">Ֆիլտր՝ Նշանակել նվազագույն հեռավորությունը կետի համար վերջին դիրքից։</string>
|
<string name="save_track_min_distance_descr">Ֆիլտր՝ Նշանակել նվազագույն հեռավորությունը այս կետից նոր կետ գրանցելու համար։</string>
|
||||||
<string name="save_track_precision">Նվազագույն ճշգրտությունը մուտքագրելու համար</string>
|
<string name="save_track_precision">Նվազագույն ճշգրտությունը մուտքագրելու համար</string>
|
||||||
<string name="save_track_precision_descr">Ֆիլտր՝ Նշանակել նվազագույն ճշգրտություն կետի համար։</string>
|
<string name="save_track_precision_descr">Ֆիլտր՝ Չարձանագրել, եթե այդ ճշգրտության չի հասել։</string>
|
||||||
<string name="christmas_desc">Սուրբ Ծննդյան եւ Ամանորյա տոների նախօրեին դուք կարող եք ընտրել Սուրբ Ծնունդի հետ կապված POI-ների ցուցադրումը՝ տոնածառեր, տոնավաճառներ և այլն:</string>
|
<string name="christmas_desc">Սուրբ Ծննդյան եւ Ամանորյա տոների նախօրեին դուք կարող եք ընտրել Սուրբ Ծնունդի հետ կապված POI-ների ցուցադրումը՝ տոնածառեր, տոնավաճառներ և այլն:</string>
|
||||||
<string name="rendering_value_light_brown_name">Բաց-շագանակագույն</string>
|
<string name="rendering_value_light_brown_name">Բաց-շագանակագույն</string>
|
||||||
<string name="rendering_value_dark_brown_name">Մուգ շագանակագույն</string>
|
<string name="rendering_value_dark_brown_name">Մուգ շագանակագույն</string>
|
||||||
<string name="rendering_attr_contourColorScheme_name">Contour lines գունային սխեման</string>
|
<string name="rendering_attr_contourColorScheme_name">Contour lines գունային սխեման</string>
|
||||||
<string name="translit_name_if_miss">Transliterate եթե %1$s անունը բացակայում է</string>
|
<string name="translit_name_if_miss">Transliterate եթե %1$s անունը բացակայում է</string>
|
||||||
<string name="translit_names">Transliterate անունները</string>
|
<string name="translit_names">Transliterate անունները</string>
|
||||||
<string name="first_usage_greeting">Ստացեք երթուղիներ եւ հայտնաբերեք նոր վայրեր առանց ինտերնետ կապի</string>
|
<string name="first_usage_greeting">Ստացեք երթուղիներ և հայտնաբերեք նոր վայրեր առանց ինտերնետ կապի</string>
|
||||||
<string name="search_my_location">Գտնել իմ դիրքը</string>
|
<string name="search_my_location">Գտնել իմ դիրքը</string>
|
||||||
<string name="no_update_info_desc">Չստուգել թարմացումների համար կամ թարմացումներ կապված OsmAnd-ի զեղչեր հետ։</string>
|
<string name="no_update_info_desc">Չստուգել թարմացումների համար կամ թարմացումներ կապված OsmAnd-ի զեղչեր հետ։</string>
|
||||||
<string name="no_update_info">Չցուցադրել թարմացումներ</string>
|
<string name="no_update_info">Չցուցադրել թարմացումներ/նոր տարբերակներ</string>
|
||||||
<string name="update_all_maps_now">Ցանկանում եք թարմացնել բոլոր քարտեզները հիմա?</string>
|
<string name="update_all_maps_now">Թարմացնել բոլոր քարտեզները հիմա?</string>
|
||||||
<string name="clear_tile_data">"Ջնջել բոլոր տայլերը"</string>
|
<string name="clear_tile_data">"Ջնջել բոլոր տայլերը"</string>
|
||||||
<string name="routing_attr_short_way_name">Վառելիք տնտեսող ճանապարհ</string>
|
<string name="routing_attr_short_way_name">Վառելիք տնտեսող ճանապարհ</string>
|
||||||
<string name="routing_attr_short_way_description">Կիրառել վառելիք տնտեսող ճանապարհ (սովորաբար ավելի կարճ)։</string>
|
<string name="routing_attr_short_way_description">Կիրառել վառելիք տնտեսող ճանապարհ (սովորաբար ավելի կարճ)։</string>
|
||||||
|
@ -463,7 +462,7 @@
|
||||||
<string name="coords_search">Որոնել ըստ կոորդինատների</string>
|
<string name="coords_search">Որոնել ըստ կոորդինատների</string>
|
||||||
<string name="advanced_coords_search">Ընդլայնված որոնում ըստ կոորդինատների</string>
|
<string name="advanced_coords_search">Ընդլայնված որոնում ըստ կոորդինատների</string>
|
||||||
<string name="back_to_search">Վերադառնալ որոնմանը</string>
|
<string name="back_to_search">Վերադառնալ որոնմանը</string>
|
||||||
<string name="confirmation_to_delete_history_items">Ցանկանում եք ջնջե՞լ ընտրված առարկաները պատմությունից?</string>
|
<string name="confirmation_to_delete_history_items">Ջնջե՞լ ընտրված առարկաները \"Պատմությունից\"?</string>
|
||||||
<string name="show_something_on_map">Ցույց տալ %1$s քարտեզի վրա</string>
|
<string name="show_something_on_map">Ցույց տալ %1$s քարտեզի վրա</string>
|
||||||
<string name="dist_away_from_my_location">Որոնում %1$s գտնվելու դիքից</string>
|
<string name="dist_away_from_my_location">Որոնում %1$s գտնվելու դիքից</string>
|
||||||
<string name="search_categories">Կատեգորիաներ</string>
|
<string name="search_categories">Կատեգորիաներ</string>
|
||||||
|
@ -480,13 +479,13 @@
|
||||||
<string name="app_mode_train">Գնացք</string>
|
<string name="app_mode_train">Գնացք</string>
|
||||||
<string name="current_track">Ընթացիկ տրեկ</string>
|
<string name="current_track">Ընթացիկ տրեկ</string>
|
||||||
<string name="map_widget_battery">Մարտկոցի լիցքավորման մակարդակը</string>
|
<string name="map_widget_battery">Մարտկոցի լիցքավորման մակարդակը</string>
|
||||||
<string name="change_markers_position">Տեղափոխել մարկերը դիրքը</string>
|
<string name="change_markers_position">Տեղափոխել մարկերի դիրքը</string>
|
||||||
<string name="move_marker_bottom_sheet_title">Տեքաշարժեք քարտեզը որպեսզի փոխեք մարկերի դիրքը</string>
|
<string name="move_marker_bottom_sheet_title">Տեքաշարժեք քարտեզը որպեսզի փոխեք մարկերի դիրքը</string>
|
||||||
<string name="follow_us">Բաժանորդագրվեք մեզ</string>
|
<string name="follow_us">Բաժանորդագրվեք մեզ</string>
|
||||||
<string name="access_direction_audio_feedback_descr">Ձայնով ազդարարել նպատակակետի ուղղութունը։</string>
|
<string name="access_direction_audio_feedback_descr">Ձայնով ազդարարել նպատակակետի ուղղութունը։</string>
|
||||||
<string name="use_osm_live_routing_description">"Միացնել նավիգացիան հաշվը առնելով OsmAnd Live թարմացումները։"</string>
|
<string name="use_osm_live_routing_description">"Միացնել նավիգացիան հաշվը առնելով OsmAnd Live թարմացումները։"</string>
|
||||||
<string name="use_osm_live_routing">OsmAnd Live նավիգացիա</string>
|
<string name="use_osm_live_routing">OsmAnd Live նավիգացիա</string>
|
||||||
<string name="access_no_destination">Նպատակը սահմանված չէ</string>
|
<string name="access_no_destination">Նպատակակետը սահմանված չէ</string>
|
||||||
<string name="map_widget_magnetic_bearing">Մագնիսական կրող</string>
|
<string name="map_widget_magnetic_bearing">Մագնիսական կրող</string>
|
||||||
<string name="access_disable_offroute_recalc">Երթուղին դադարեցնելուց հետո երթուղու վերահաշվարկ չի կատարվում</string>
|
<string name="access_disable_offroute_recalc">Երթուղին դադարեցնելուց հետո երթուղու վերահաշվարկ չի կատարվում</string>
|
||||||
<string name="access_disable_offroute_recalc_descr">Կանխել երթուղու ավտոմատ վերահաշվարկը երթուղին դադարեցնելուց հետո։</string>
|
<string name="access_disable_offroute_recalc_descr">Կանխել երթուղու ավտոմատ վերահաշվարկը երթուղին դադարեցնելուց հետո։</string>
|
||||||
|
@ -961,13 +960,13 @@
|
||||||
<string name="shared_string_my_favorites">Իմ Սիրածները</string>
|
<string name="shared_string_my_favorites">Իմ Սիրածները</string>
|
||||||
<string name="release_2_6">Նոր առանձնահատկություն. Արագ գործողության կոճակ
|
<string name="release_2_6">Նոր առանձնահատկություն. Արագ գործողության կոճակ
|
||||||
\n
|
\n
|
||||||
\n• Բարելավված սենսորային էկրանի արձագանք (օրինակ `զուգահեռ համաժամանակ եւ մեծացնելու)
|
\n• Բարելավված սենսորային էկրանի արձագանք (օրինակ `զուգահեռ համաժամանակ և մեծացնելու)
|
||||||
\n
|
\n
|
||||||
\n• Նոր քարտեզ տառատեսակներ, որոնք ընդգրկելով ավելի շատ տեղական վայրեր
|
\n• Նոր քարտեզ տառատեսակներ, որոնք ընդգրկելով ավելի շատ տեղական վայրեր
|
||||||
\n
|
\n
|
||||||
\n•Աջակցություն TTS-ը տարածաշրջանային լեզվական տարբերակների (եւ շեշտադրումները)
|
\n•Աջակցություն TTS-ը տարածաշրջանային լեզվական տարբերակների (և շեշտադրումները)
|
||||||
\n
|
\n
|
||||||
\n• Տեսանելիության բարելավում մի քանի քարտեզի ոճերում եւ վիքիպեդիայում
|
\n• Տեսանելիության բարելավում մի քանի քարտեզի ոճերում և Վիքիպեդիայում(Wikipedia)
|
||||||
\n
|
\n
|
||||||
\n• Աջակցում Բաց գտնվելու վայրի կոդը (OLC)
|
\n• Աջակցում Բաց գտնվելու վայրի կոդը (OLC)
|
||||||
\n
|
\n
|
||||||
|
@ -2207,8 +2206,8 @@
|
||||||
<string name="shared_string_right">Աջ</string>
|
<string name="shared_string_right">Աջ</string>
|
||||||
<string name="shared_string_left">Ձախ</string>
|
<string name="shared_string_left">Ձախ</string>
|
||||||
<string name="shared_string_paste">Տեղադրել</string>
|
<string name="shared_string_paste">Տեղադրել</string>
|
||||||
<string name="go_to_next_field">Տեղափոխվեք հաջորդ դաշտ</string>
|
<string name="go_to_next_field">Հաջորդ դաշտը</string>
|
||||||
<string name="import_gpx_file_description">կարող են ներմուծվել որպես «Սիրելի» կետեր, կամ որպես հետևի(track) ֆայլ:</string>
|
<string name="import_gpx_file_description">կարող են ներմուծվել որպես «Սիրելի», կամ որպես track ֆայլ:</string>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -2582,9 +2581,9 @@
|
||||||
<string name="retry">Կրկնել</string>
|
<string name="retry">Կրկնել</string>
|
||||||
<string name="track_waypoints">Տրեկի (track) կետերը</string>
|
<string name="track_waypoints">Տրեկի (track) կետերը</string>
|
||||||
<string name="add_group">Ավելացնել խումբ</string>
|
<string name="add_group">Ավելացնել խումբ</string>
|
||||||
<string name="add_group_descr">Դուք կարող եք ներմուծել խումբ «Սիրված»-ներից կամ տրեկի կետերից:</string>
|
<string name="add_group_descr">Ներմուծել խումբեր «Սիրված»-ներից կամ տրեկի կետերից:</string>
|
||||||
<string name="empty_state_markers_groups">Ներմուծել խմբերը</string>
|
<string name="empty_state_markers_groups">Ներմուծել խմբերը</string>
|
||||||
<string name="empty_state_markers_groups_desc">Դուք կարող եք ներմուծել «Սիրված» խմբեր կամ տրեկի կետերը որպես մարկերներ:</string>
|
<string name="empty_state_markers_groups_desc">Ներմուծել «Սիրված» խմբեր կամ տրեկի կետերը որպես մարկերներ:</string>
|
||||||
<string name="shared_string_two">Երկու</string>
|
<string name="shared_string_two">Երկու</string>
|
||||||
<string name="shared_string_one">Մեկ</string>
|
<string name="shared_string_one">Մեկ</string>
|
||||||
<string name="add_waypoint">Ավելացնել կետ</string>
|
<string name="add_waypoint">Ավելացնել կետ</string>
|
||||||
|
@ -2603,11 +2602,11 @@
|
||||||
<string name="add_segment_to_the_track">Ավելացնել սեգմենտը GPX-ին</string>
|
<string name="add_segment_to_the_track">Ավելացնել սեգմենտը GPX-ին</string>
|
||||||
<string name="shared_string_more_without_dots">Ավելին</string>
|
<string name="shared_string_more_without_dots">Ավելին</string>
|
||||||
<string name="appearance_on_the_map">Տեսքը քարտեզի վրա</string>
|
<string name="appearance_on_the_map">Տեսքը քարտեզի վրա</string>
|
||||||
<string name="add_track_to_markers_descr">"Ընտրեք տրեկը ճանապարհային կետերը ավելացնելու մարկերներին։ (Ցուցադրված միայն այն տրեկների որոնք ունեն ճանապարհային կետեր։)"</string>
|
<string name="add_track_to_markers_descr">"Ճանապարհային կետերը կարող եք ավելացնել մարկերներին ընտրելով այս տրեկերից մեկը, որը պարունակոմ է ճանապարհային կետեր(waypoints)։"</string>
|
||||||
<string name="add_favourites_group_to_markers_descr">Ընտրեք «Սիրված» խումբը, որը ցանկանում եք ավելացնել մարկերներին։</string>
|
<string name="add_favourites_group_to_markers_descr">Ընտրեք «Սիրված» խումբը, որը ցանկանում եք ավելացնել մարկերներին։</string>
|
||||||
<string name="favourites_group">«Սիրված»-ի կատեգորիան</string>
|
<string name="favourites_group">«Սիրված»-ի կատեգորիան</string>
|
||||||
<string name="empty_state_markers_active">Ստեղծեք քարտեզի մարկերներ!</string>
|
<string name="empty_state_markers_active">Ստեղծեք քարտեզի մարկերներ!</string>
|
||||||
<string name="empty_state_markers_active_desc">Սեղմեք ցանկալի վայրում, ապա մարկերի վրա:</string>
|
<string name="empty_state_markers_active_desc">Սեղմեք ցանկալի վայրում, ապա մարկերի կոճակի վրա:</string>
|
||||||
<string name="empty_state_markers_history_desc">Այս էկրանին կհայտնվեն մարկերներ, որոնք նշված են ինչպես անցած։</string>
|
<string name="empty_state_markers_history_desc">Այս էկրանին կհայտնվեն մարկերներ, որոնք նշված են ինչպես անցած։</string>
|
||||||
<string name="digits_quantity">Տասներորդ թվերի թվաքանակը</string>
|
<string name="digits_quantity">Տասներորդ թվերի թվաքանակը</string>
|
||||||
<string name="show_number_pad">Ցուցադրել թվային վահանակը</string>
|
<string name="show_number_pad">Ցուցադրել թվային վահանակը</string>
|
||||||
|
@ -2635,6 +2634,15 @@
|
||||||
<string name="av_locations_all_desc">GPX ֆայլը կոորդինատներով և բոլոր նշումների տվյալները։</string>
|
<string name="av_locations_all_desc">GPX ֆայլը կոորդինատներով և բոլոր նշումների տվյալները։</string>
|
||||||
<string name="release_3_0">\\022
|
<string name="release_3_0">\\022
|
||||||
\n
|
\n
|
||||||
|
\nՆոր Ճամփորդության մենյու. Դիտեք WikiVoyage- ի հոդվածները առանց ինտերնետի օգտագործման
|
||||||
|
\n
|
||||||
|
\n • Wikipedia՝ նոր տեսք, ակտիվ հղումներ, պատկերներ
|
||||||
|
\n
|
||||||
|
\n • Open Track UI՝ ցուցադրում waypoint խմբերը
|
||||||
|
\n
|
||||||
|
\n • Քարտեզի մարկերներ՝ Ընտրված խմբերի ներմուծում GPX ֆայլերից, կոորդինատների մուտքագրման նոր տեսքը
|
||||||
|
\n
|
||||||
|
\n • OsmAnd Live բաժանորդագրությունը այժմ ներառում է բոլոր OsmAnd առանձնահատկությունները
|
||||||
\n
|
\n
|
||||||
\n
|
\n
|
||||||
\n</string>
|
\n</string>
|
||||||
|
@ -2654,7 +2662,7 @@
|
||||||
<string name="show_guide_line_descr">Ցուցադրել ուղեցույցները ձեր գտնվելու վայրից մինչև ակտիվ մարկերներ:</string>
|
<string name="show_guide_line_descr">Ցուցադրել ուղեցույցները ձեր գտնվելու վայրից մինչև ակտիվ մարկերներ:</string>
|
||||||
<string name="show_arrows_descr">Ցուցադրել մեկ կամ երկու նետ, նշելով ակտիվ մարկերների ուղղությունը:</string>
|
<string name="show_arrows_descr">Ցուցադրել մեկ կամ երկու նետ, նշելով ակտիվ մարկերների ուղղությունը:</string>
|
||||||
<string name="distance_indication_descr">Ընտրեք, թե ինչպես ցուցադրեք հեռավորությունը մինչև ակտիվ մարկերներին:</string>
|
<string name="distance_indication_descr">Ընտրեք, թե ինչպես ցուցադրեք հեռավորությունը մինչև ակտիվ մարկերներին:</string>
|
||||||
<string name="active_markers_descr">Ընտրեք, թե որքան ուղղության ցուցիչներ ցույց տալ:</string>
|
<string name="active_markers_descr">Ընտրեք, թե որքան \"ուղղության ցուցիչներ\" ցույց տալ:</string>
|
||||||
<string name="coordinate_input_accuracy_description">Ավտոմատ առաջընթաց հաջորդ դաշտ տասնորդական կետից հետո մուտքագրելուց %1$d թվեր:</string>
|
<string name="coordinate_input_accuracy_description">Ավտոմատ առաջընթաց հաջորդ դաշտ տասնորդական կետից հետո մուտքագրելուց %1$d թվեր:</string>
|
||||||
<string name="tap_on_map_to_hide_interface_descr">Սեղմելով քարտեզի վրա փոխարինում են հսկողության կոճակները եւ վիջեթները:</string>
|
<string name="tap_on_map_to_hide_interface_descr">Սեղմելով քարտեզի վրա փոխարինում են հսկողության կոճակները եւ վիջեթները:</string>
|
||||||
<string name="tap_on_map_to_hide_interface">Ամբողջ էկրանով ռեժիմ</string>
|
<string name="tap_on_map_to_hide_interface">Ամբողջ էկրանով ռեժիմ</string>
|
||||||
|
@ -2705,11 +2713,11 @@
|
||||||
<string name="osm_edits_export_desc">Ընտրեք արտահանման տեսակը`OSM նշումներ, POI կամ երկուսն էլ:</string>
|
<string name="osm_edits_export_desc">Ընտրեք արտահանման տեսակը`OSM նշումներ, POI կամ երկուսն էլ:</string>
|
||||||
<string name="all_data">Բոլոր տվյալները</string>
|
<string name="all_data">Բոլոր տվյալները</string>
|
||||||
<string name="osm_notes">OSM նշումներ</string>
|
<string name="osm_notes">OSM նշումներ</string>
|
||||||
<string name="will_open_tomorrow_at">Վաղը կբացվի ժամը</string>
|
<string name="will_open_tomorrow_at">"Վաղը կբացվի "</string>
|
||||||
<string name="rendering_attr_hidePOILabels_name">POI պիտակներ</string>
|
<string name="rendering_attr_hidePOILabels_name">POI պիտակներ</string>
|
||||||
<string name="shared_string_without_name">Առանց անունի</string>
|
<string name="shared_string_without_name">Առանց անունի</string>
|
||||||
<string name="show_closed_notes">Ցույց տալ փակած նշումները</string>
|
<string name="show_closed_notes">Ցույց տալ փակած նշումները</string>
|
||||||
<string name="switch_osm_notes_visibility_desc">Ցույց տալ/թաքցնել OSM նշումները քարտեզի վրա․</string>
|
<string name="switch_osm_notes_visibility_desc">Ցույց տալ/թաքցնել OSM նշումները քարտեզի վրա:</string>
|
||||||
<string name="release_2_9">"\\022
|
<string name="release_2_9">"\\022
|
||||||
\n • Թարմացվել է համատեքստային մենյու`ցույց տալ, թե երբ POI- ն բացվում է / փակվում է
|
\n • Թարմացվել է համատեքստային մենյու`ցույց տալ, թե երբ POI- ն բացվում է / փակվում է
|
||||||
\n
|
\n
|
||||||
|
@ -2767,4 +2775,16 @@
|
||||||
<string name="unlock_all_features">Ստանալ OsmAnd բոլոր գործառույթները</string>
|
<string name="unlock_all_features">Ստանալ OsmAnd բոլոր գործառույթները</string>
|
||||||
|
|
||||||
<string name="purchase_dialog_title">Ընտրեք Փաթեթ</string>
|
<string name="purchase_dialog_title">Ընտրեք Փաթեթ</string>
|
||||||
|
<string name="hide_full_description">Թաքցնել ամբողջական նկարագրությունը</string>
|
||||||
|
<string name="show_full_description">Ցույց տալ ամբողջական նկարագրությունը</string>
|
||||||
|
<string name="off_road_render_descr">Հարմար է օգտագործել անանցանելի ճանապարհներին երթեւեկության ժամանակ: Հարմար է կանաչ արբանյակային պատկերներով օգտագործելու համար, որպես քարտի հիմքը: Հիմնական առանձնահատկությունները`նվազեցված հիմնական ճանապարհների հաստությունը, ավալացված հաստությունը արահետների, ուղիներ, հեծանիվային և այլ երթուղիների: Այն հիմնված է «Տոպո» ոճովի վրա:</string>
|
||||||
|
<string name="nautical_render_descr">Ծովային նավարկության ոճը։ Հիմնական առանձնահատկությունները ` փարոսներ, գետի երթուղիները, ծովային երթուղիները և նշանները, նավահանգիստները, ծովային նավերի ծառայությունները, խորքային ուրվագիծը:</string>
|
||||||
|
<string name="ski_map_render_descr">Դահուկային ոճ: Հիմնական առանձնահատկություններ. ցուցադրում - երթուղիների, լեռնադահուկային վերելակների և այլ լեռնադահուկային առանձնահատկություններ: Ավելի քիչ շեղող երկրորդային օբյեկտներ:</string>
|
||||||
|
<string name="light_rs_render_descr">Պարզ և հակապատկեր ոճը ավտոմեքենաների նավարկության համար: Աչքերի համար հարմար է գիշերային ռեժիմում: Հիմնական առանձնահատկությունները. Եզրագծերը, հակապատկեր նարնջագույն ճանապարհներ, ավելի քիչ շեղող երկրորդային օբյեկտներ:</string>
|
||||||
|
<string name="topo_render_descr">"Հակապատկեր ոճը, որը նախատեսված է հիմնականում արշավային զբոսանքի, հետիոտն և հեծանվային զբոսանքի համար. Լավ ընթեռնելիություն բարդ արտաքին լուսավորման ժամանակ. Հիմնական առանձնահատկությունները. հակապատկեր ճանապարհներ և բնական օբյեկտներ, տարբեր տեսակի երթուղիներ, ուրվագծային գծի առաջադեմ պարամետրերով, ավելի մանրամասն տեղեկատվություններ ներկայացված են համապատասխան մակարդակների չափման, քան հիմնական ոճում. Ճանապարհային որակի ծածկույթը տարբերակը թույլ է տալիս տարբերակել ճանապարհի տարբեր որակի մակերեսին. Չկան գիշերային ռեժիմ."</string>
|
||||||
|
<string name="mapnik_render_descr">Հին ցուցադրման ոճը «Mapnik» է: Հիմնական առանձնահատկությունները` Գույները նման են «Mapnik» ոճին:</string>
|
||||||
|
<string name="touring_view_render_descr">"Բարձր մանրամասն ոճ շրջագայության համար: Ներառում է կանխադրված ոճի բոլոր կազմաձևային տարբերակները, բացի այդ, ցուցադրվում է որքան հնարավոր է մանրամասն, մասնավորապես, բոլոր ճանապարհները, ճանապարհները և ճանապարհորդելու այլ ուղիներ: Հստակ տեսողական տարբերություն բոլոր տեսակների ճանապարհների միջև, բազմաթիվ զբոսաշրջային ատլասների հիշեցում: Արտաքին օգտագործման, ցերեկային և գիշերային ռեժիմի բարձր հակադրություն գունային սխեման:"</string>
|
||||||
|
<string name="default_render_descr">Ընդհանուր ոճ: Խիտ բնակեցված քաղաքներում պարզեցված ռենդերինգ: Հիմնական առանձնահատկություններ՝ Եզրագծային գծեր, երթուղիներ, ճանապարհերի մակերեսային որակնը, մուտքի սահմանափակումներ, ճանապարհային նշաններ, SAC սանդղակի երթուղիների արտացոլում, սպորտային համաձուլվածքների բնութագրեր:</string>
|
||||||
|
<string name="open_wikipedia_link_online">Բացել Wikipedia հղումը առցանց</string>
|
||||||
|
<string name="open_wikipedia_link_online_description">Հղումը կբացվի վեբ բրաուզերում:</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|
|
@ -3831,4 +3831,13 @@
|
||||||
<string name="poi_glacier_ele_bottom">Lægsti punktur</string>
|
<string name="poi_glacier_ele_bottom">Lægsti punktur</string>
|
||||||
<string name="poi_glacier_slope">Meðalhalli</string>
|
<string name="poi_glacier_slope">Meðalhalli</string>
|
||||||
|
|
||||||
|
<string name="poi_checkpoint_type">Gerð eftirlitsstöðvar</string>
|
||||||
|
|
||||||
|
<string name="poi_checkpoint_hiking">Gönguferðastöð</string>
|
||||||
|
<string name="poi_checkpoint_type_stamp">Stimpilstöð</string>
|
||||||
|
<string name="poi_checkpoint_type_code">Kóði</string>
|
||||||
|
<string name="poi_checkpoint_type_notebook">Gestabók</string>
|
||||||
|
<string name="poi_checkpoint_type_electronic">Rafrænt</string>
|
||||||
|
<string name="poi_course">Leið</string>
|
||||||
|
|
||||||
</resources>
|
</resources>
|
||||||
|
|
|
@ -3167,4 +3167,6 @@ Rappresenta l\'area: %1$s x %2$s</string>
|
||||||
<string name="read_wikipedia_offline">Leggi Wikipedia senza una connessione dati</string>
|
<string name="read_wikipedia_offline">Leggi Wikipedia senza una connessione dati</string>
|
||||||
<string name="download_all">Scarica tutto</string>
|
<string name="download_all">Scarica tutto</string>
|
||||||
<string name="shared_string_bookmark">Segnalibro</string>
|
<string name="shared_string_bookmark">Segnalibro</string>
|
||||||
|
<string name="off_road_render_descr">Adatto all’uso durante la guida fuoristrada. Adatto all’uso con immagini satellitari come sfondo. Caratteristiche principali: Larghezza delle strade principali ridotta, larghezza di sentieri, carrarecce, piste ciclabili ed altri percorsi aumentata. Basato sullo stile ‘Topo’.</string>
|
||||||
|
<string name="touring_view_render_descr">Stile molto dettagliato per le necessità del turista. Include tutte le opzioni di configurazioni dello stile predefinito e in più: Mostra più dettaglio possibile, in particolare, le strade, i percorsi e altri itinerari per chi viaggia. Distinzione chiara dei vari tipi di strada, come avviene negli atlanti per turisti. Schema dei colori ad alto contrasto per l’uso all’esterno, modalità diurna e notturna.</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|
|
@ -2890,7 +2890,7 @@
|
||||||
<string name="lang_lo">Лаосский</string>
|
<string name="lang_lo">Лаосский</string>
|
||||||
<string name="day_off_label">вых.</string>
|
<string name="day_off_label">вых.</string>
|
||||||
<string name="winter_and_ski_renderer">Зимний/лыжный</string>
|
<string name="winter_and_ski_renderer">Зимний/лыжный</string>
|
||||||
<string name="touring_view_renderer">Туристический (контраст и детали)</string>
|
<string name="touring_view_renderer">Туристический</string>
|
||||||
<string name="nautical_renderer">Морской</string>
|
<string name="nautical_renderer">Морской</string>
|
||||||
<string name="rendering_attr_hidePOILabels_name">Названия POI</string>
|
<string name="rendering_attr_hidePOILabels_name">Названия POI</string>
|
||||||
|
|
||||||
|
|
|
@ -2859,7 +2859,15 @@ Zodpovedá oblasti: %1$s x %2$s</string>
|
||||||
<string name="by_type">Podľa typu</string>
|
<string name="by_type">Podľa typu</string>
|
||||||
<string name="one_tap_active">Jedno stlačenie aktívne</string>
|
<string name="one_tap_active">Jedno stlačenie aktívne</string>
|
||||||
<string name="modify_the_search_query">Upraviť vyhľadávacie kritériá.</string>
|
<string name="modify_the_search_query">Upraviť vyhľadávacie kritériá.</string>
|
||||||
<string name="release_3_0">\\022
|
<string name="release_3_0">\\022 Nové menu Cestovanie: zobrazte si články WikiVoyage bez použitia Internetu
|
||||||
|
\n
|
||||||
|
\n • Wikipédia: nový vzhľad, aktívne linky, obrázky
|
||||||
|
\n
|
||||||
|
\n • Rozhranie zobrazovania stôp: zobrazuje skupiny prechodných bodov (waypointov)
|
||||||
|
\n
|
||||||
|
\n • Mapové značky: import vybraných skupín z GPX súborov, nový vzhľad zadávania súradníc
|
||||||
|
\n
|
||||||
|
\n • Predplatné OsmAnd Live zahŕňa všetky funkcie OsmAnd
|
||||||
\n</string>
|
\n</string>
|
||||||
<string name="what_is_here">Čo je tu:</string>
|
<string name="what_is_here">Čo je tu:</string>
|
||||||
<string name="parked_at">zaparkované o</string>
|
<string name="parked_at">zaparkované o</string>
|
||||||
|
|
|
@ -1749,8 +1749,15 @@
|
||||||
<string name="first_intermediate_dest_description">Додаје прво стајање</string>
|
<string name="first_intermediate_dest_description">Додаје прво стајање</string>
|
||||||
<string name="switch_osm_notes_visibility_desc">Прикажи/Сакриј ОСМ белешке на карти.</string>
|
<string name="switch_osm_notes_visibility_desc">Прикажи/Сакриј ОСМ белешке на карти.</string>
|
||||||
<string name="gpx_file">GPX фајл</string>
|
<string name="gpx_file">GPX фајл</string>
|
||||||
<string name="release_3_0">\\022
|
<string name="release_3_0">\\022 Нови турустички мени: гледајте WikiVoyage чланке без коришћења интернета
|
||||||
\n
|
\n
|
||||||
|
\n • Википедија: нови изглед, активне везе, слике
|
||||||
|
\n
|
||||||
|
\n • Open Track UI: приказ група пролазних тачака
|
||||||
|
\n
|
||||||
|
\n • Маркери на карти: увезите означене групе из GPX фајлова
|
||||||
|
\n
|
||||||
|
\n • OsmAnd Live претплата сада укључује све OsmAnd функционалности
|
||||||
\n</string>
|
\n</string>
|
||||||
<string name="gpx_file_desc">GPX - погодно за извоз у ЈОСМ и друге ОСМ уређиваче.</string>
|
<string name="gpx_file_desc">GPX - погодно за извоз у ЈОСМ и друге ОСМ уређиваче.</string>
|
||||||
<string name="osc_file_desc">ОСЦ - погодно за извоз у OpenStreetMap.</string>
|
<string name="osc_file_desc">ОСЦ - погодно за извоз у OpenStreetMap.</string>
|
||||||
|
@ -2571,13 +2578,13 @@
|
||||||
<string name="online_webpage_warning">Страна доступна само док сте на мрежи. Отворити је у веб читачу?</string>
|
<string name="online_webpage_warning">Страна доступна само док сте на мрежи. Отворити је у веб читачу?</string>
|
||||||
<string name="images_cache">Кеш слика</string>
|
<string name="images_cache">Кеш слика</string>
|
||||||
<string name="delete_search_history">Обриши историјат претрага</string>
|
<string name="delete_search_history">Обриши историјат претрага</string>
|
||||||
<string name="download_images">Преузми слике</string>
|
<string name="download_images">Прикажи слике</string>
|
||||||
<string name="download_maps_travel">Карте путовања</string>
|
<string name="download_maps_travel">Карте путовања</string>
|
||||||
<string name="shared_string_wikivoyage">Wikivoyage</string>
|
<string name="shared_string_wikivoyage">Wikivoyage</string>
|
||||||
<string name="article_removed">Чланак уклоњен</string>
|
<string name="article_removed">Чланак уклоњен</string>
|
||||||
<string name="wikivoyage_search_hint">Претрага: држава, град, покрајина</string>
|
<string name="wikivoyage_search_hint">Претрага: држава, град, покрајина</string>
|
||||||
<string name="shared_string_read">Читај</string>
|
<string name="shared_string_read">Читај</string>
|
||||||
<string name="saved_articles">Сачувани чланци</string>
|
<string name="saved_articles">Забележени чланци</string>
|
||||||
<string name="shared_string_explore">Истражи</string>
|
<string name="shared_string_explore">Истражи</string>
|
||||||
<string name="shared_string_contents">Садржаји</string>
|
<string name="shared_string_contents">Садржаји</string>
|
||||||
<string name="shared_string_result">Резултат</string>
|
<string name="shared_string_result">Резултат</string>
|
||||||
|
@ -2717,7 +2724,7 @@
|
||||||
<string name="quick_action_interim_dialog">Прикажи дијалог међувремена</string>
|
<string name="quick_action_interim_dialog">Прикажи дијалог међувремена</string>
|
||||||
<string name="quick_action_duplicates">Задато име брзе радње је већ у употреби, промењено је у %1$s да би се избегло дуплирање.</string>
|
<string name="quick_action_duplicates">Задато име брзе радње је већ у употреби, промењено је у %1$s да би се избегло дуплирање.</string>
|
||||||
<string name="quick_action_duplicate">Већ постоји брза радња са овим именом</string>
|
<string name="quick_action_duplicate">Већ постоји брза радња са овим именом</string>
|
||||||
<string name="maps_you_need_descr">На основу чланака који сте читали, предлажено је да скинете следеће карте:</string>
|
<string name="maps_you_need_descr">На основу чланака који сте забележили, предложено је да скинете следеће карте:</string>
|
||||||
<string name="osmand_accessibility_description">Са овим додатком, функције приступачности из уређаја могу да се користе директно у OsmAnd-у. Може да управља брзином изговора синтетизованих гласова, коришћење трекбола за контролу зумирања, изговара текст, нпр. да Вам каже положај.</string>
|
<string name="osmand_accessibility_description">Са овим додатком, функције приступачности из уређаја могу да се користе директно у OsmAnd-у. Може да управља брзином изговора синтетизованих гласова, коришћење трекбола за контролу зумирања, изговара текст, нпр. да Вам каже положај.</string>
|
||||||
<string name="intermediate_items_sort_return">Оптимизуј редослед успутних одредишта ка крајњем одредишту.</string>
|
<string name="intermediate_items_sort_return">Оптимизуј редослед успутних одредишта ка крајњем одредишту.</string>
|
||||||
<string name="osmand_short_description_80_chars">Глобални преглед карти на мобилним уређајима & навигација за ОСМ карте на мрежи и ван мреже</string>
|
<string name="osmand_short_description_80_chars">Глобални преглед карти на мобилним уређајима & навигација за ОСМ карте на мрежи и ван мреже</string>
|
||||||
|
@ -2799,11 +2806,11 @@
|
||||||
<string name="reports_for">Извештај за</string>
|
<string name="reports_for">Извештај за</string>
|
||||||
<string name="quick_favorites_name_preset">Унапред постављено име</string>
|
<string name="quick_favorites_name_preset">Унапред постављено име</string>
|
||||||
<string name="import_track_desc">Фајл %1$s не садржи пролазне тачке, да га увезем као путању?</string>
|
<string name="import_track_desc">Фајл %1$s не садржи пролазне тачке, да га увезем као путању?</string>
|
||||||
<string name="touring_view_renderer">Туристички преглед (контраст и детаљи)</string>
|
<string name="touring_view_renderer">Туристички преглед</string>
|
||||||
<string name="hide_full_description">Сакриј цео опис</string>
|
<string name="hide_full_description">Сакриј цео опис</string>
|
||||||
<string name="show_full_description">Прикажи цео опис</string>
|
<string name="show_full_description">Прикажи цео опис</string>
|
||||||
<string name="nautical_render_descr">Стил за речно и морско навођење. Главне одлике: бове, светионици, речни и морски путеви, луке, поморске ознаке, изобате.</string>
|
<string name="nautical_render_descr">Стил за речно и морско навођење. Главне одлике: бове, светионици, речни и морски путеви, луке, поморске ознаке, изобате.</string>
|
||||||
<string name="ski_map_render_descr">Стил за скијање. Главне одлике: исцртавање стаза, ваздушних путева и остали скијашких објеката на лак начин. Остали објекти на карти мање одвраћају пажњу.</string>
|
<string name="ski_map_render_descr">Стил за скијање. Главне одлике: исцртавање стаза, ски лифтова и осталих скијашких објеката на лак начин. Остали објекти на карти мање одвраћају пажњу.</string>
|
||||||
<string name="light_rs_render_descr">Једноставан стил са контрастом за навођење у колима. Пријатан за очи ноћу. Главне одлике: изохипсе, наранџасти путеви са добрим контрастом, остали објекти на карти мање одвраћају пажњу.</string>
|
<string name="light_rs_render_descr">Једноставан стил са контрастом за навођење у колима. Пријатан за очи ноћу. Главне одлике: изохипсе, наранџасти путеви са добрим контрастом, остали објекти на карти мање одвраћају пажњу.</string>
|
||||||
<string name="topo_render_descr">Контрастни стил примарно намењен шетању, пешачењу, трекингу и бициклизму у природи. Добра читљивост у тешким спољним условима осветљености. Главне одлике: добар контраст за путеве и природне објекте, различити типови путања, изохипсе са напредним подешавањима, више детаља на истим нивоима увећања у односу на основни стил. Опција интегритета подлоге Вам омогућава да разликујете путеве са различитим квалитетима подлога. Нема ноћног режима.</string>
|
<string name="topo_render_descr">Контрастни стил примарно намењен шетању, пешачењу, трекингу и бициклизму у природи. Добра читљивост у тешким спољним условима осветљености. Главне одлике: добар контраст за путеве и природне објекте, различити типови путања, изохипсе са напредним подешавањима, више детаља на истим нивоима увећања у односу на основни стил. Опција интегритета подлоге Вам омогућава да разликујете путеве са различитим квалитетима подлога. Нема ноћног режима.</string>
|
||||||
<string name="mapnik_render_descr">Стари \"Мапник\" стил исцртавања. Главне одлике: боје су сличне као у \"Мапник\" стилу.</string>
|
<string name="mapnik_render_descr">Стари \"Мапник\" стил исцртавања. Главне одлике: боје су сличне као у \"Мапник\" стилу.</string>
|
||||||
|
@ -2855,4 +2862,11 @@
|
||||||
<string name="send_location_email_pattern">Да видите положај, пратите везу ка веб локацији %1$s или Андроид intent везу %2$s</string>
|
<string name="send_location_email_pattern">Да видите положај, пратите везу ка веб локацији %1$s или Андроид intent везу %2$s</string>
|
||||||
<string name="voice_is_not_available_msg">Нема доступног гласовног навођења, идите у \"Поставке\" → \"Опште\" → \"Гласовно навођење\" и одаберите или скините пакет са гласовима.</string>
|
<string name="voice_is_not_available_msg">Нема доступног гласовног навођења, идите у \"Поставке\" → \"Опште\" → \"Гласовно навођење\" и одаберите или скините пакет са гласовима.</string>
|
||||||
<string name="number_of_rows_in_dash">Број редова на табли %1$s</string>
|
<string name="number_of_rows_in_dash">Број редова на табли %1$s</string>
|
||||||
|
<string name="shared_string_bookmark">Забележи</string>
|
||||||
|
<string name="switch_to_vector_map_to_see">Постојеће векторске карте за овај положај.
|
||||||
|
\n\t
|
||||||
|
\n\tДа бисте их користили, идите на \'Мени\' → \'Подеси карту\' → \'Извор карте…\' → \'Векторске карте ван мреже\'.</string>
|
||||||
|
<string name="osmand_routing_experimental">OsmAnd навођење ван мреже је експериментална функционалност и не ради за удаљености преко 20 km.
|
||||||
|
\n
|
||||||
|
\nНавођење привремено пребачено на мрежни CloudMade сервис.</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|
|
@ -894,10 +894,10 @@
|
||||||
<string name="poi_rcn_ref">地區性自行車網路節點</string>
|
<string name="poi_rcn_ref">地區性自行車網路節點</string>
|
||||||
<string name="poi_lcn_ref">本地自行車網路節點</string>
|
<string name="poi_lcn_ref">本地自行車網路節點</string>
|
||||||
|
|
||||||
<string name="poi_iwn_ref">國際步行網路節點</string>
|
<string name="poi_iwn_ref">國際登山健行網路節點</string>
|
||||||
<string name="poi_nwn_ref">全國步行網路節點</string>
|
<string name="poi_nwn_ref">全國登山健行網路節點</string>
|
||||||
<string name="poi_rwn_ref">地區性步行網路節點</string>
|
<string name="poi_rwn_ref">地區性登山健行網路節點</string>
|
||||||
<string name="poi_lwn_ref">本地步行網路節點</string>
|
<string name="poi_lwn_ref">本地登山健行網路節點</string>
|
||||||
|
|
||||||
<string name="poi_opening_hours">營業時間</string>
|
<string name="poi_opening_hours">營業時間</string>
|
||||||
<string name="poi_collection_times">採收時間</string>
|
<string name="poi_collection_times">採收時間</string>
|
||||||
|
@ -925,14 +925,14 @@
|
||||||
<string name="poi_fee_yes">費用</string>
|
<string name="poi_fee_yes">費用</string>
|
||||||
|
|
||||||
<string name="poi_abandoned_poi">已遺棄的物件</string>
|
<string name="poi_abandoned_poi">已遺棄的物件</string>
|
||||||
<string name="poi_route_hiking_iwn_poi">國際徒步登山路線</string>
|
<string name="poi_route_hiking_iwn_poi">國際登山健行登山路線</string>
|
||||||
<string name="poi_route_hiking_nwn_poi">全國徒步登山路線</string>
|
<string name="poi_route_hiking_nwn_poi">全國登山健行路線</string>
|
||||||
<string name="poi_route_hiking_rwn_poi">地區性徒步登山路線</string>
|
<string name="poi_route_hiking_rwn_poi">地區性登山健行路線</string>
|
||||||
<string name="poi_route_hiking_lwn_poi">當地徒步登山路線</string>
|
<string name="poi_route_hiking_lwn_poi">當地登山健行路線</string>
|
||||||
<string name="poi_route_hiking_ref_poi">徒步旅行路線參考</string>
|
<string name="poi_route_hiking_ref_poi">登山健行路線參考</string>
|
||||||
|
|
||||||
<string name="poi_node_networks">徒步旅行/自行車網路節點</string>
|
<string name="poi_node_networks">登山健行/自行車網路節點</string>
|
||||||
<string name="poi_hiking_routes">徒步路線</string>
|
<string name="poi_hiking_routes">登山健行路線</string>
|
||||||
<string name="poi_traffic_enforcement">交通執法</string>
|
<string name="poi_traffic_enforcement">交通執法</string>
|
||||||
<string name="poi_access_private">私人通路</string>
|
<string name="poi_access_private">私人通路</string>
|
||||||
<string name="poi_access_no">禁止通行</string>
|
<string name="poi_access_no">禁止通行</string>
|
||||||
|
@ -1275,7 +1275,7 @@
|
||||||
<string name="poi_information_trail_blaze">小徑</string>
|
<string name="poi_information_trail_blaze">小徑</string>
|
||||||
<string name="poi_information_terminal">資訊終端機</string>
|
<string name="poi_information_terminal">資訊終端機</string>
|
||||||
<string name="poi_information_route_marker">路線標識</string>
|
<string name="poi_information_route_marker">路線標識</string>
|
||||||
<string name="poi_information_hikingmap">徒步旅行地圖</string>
|
<string name="poi_information_hikingmap">登山健行地圖</string>
|
||||||
<string name="poi_information_nature">資訊標誌:大自然</string>
|
<string name="poi_information_nature">資訊標誌:大自然</string>
|
||||||
<string name="poi_doors">門</string>
|
<string name="poi_doors">門</string>
|
||||||
<string name="poi_bicycle_parking_anchors">錨泊點</string>
|
<string name="poi_bicycle_parking_anchors">錨泊點</string>
|
||||||
|
@ -3877,4 +3877,10 @@
|
||||||
<string name="poi_glacier_ele_bottom">最低點</string>
|
<string name="poi_glacier_ele_bottom">最低點</string>
|
||||||
<string name="poi_glacier_slope">平均坡度</string>
|
<string name="poi_glacier_slope">平均坡度</string>
|
||||||
|
|
||||||
</resources>
|
<string name="poi_checkpoint_type">檢查站類型</string>
|
||||||
|
|
||||||
|
<string name="poi_checkpoint_hiking">登山健行檢查站</string>
|
||||||
|
<string name="poi_checkpoint_type_code">程式碼</string>
|
||||||
|
<string name="poi_checkpoint_type_notebook">筆記電腦</string>
|
||||||
|
<string name="poi_checkpoint_type_electronic">電子</string>
|
||||||
|
</resources>
|
||||||
|
|
|
@ -3019,8 +3019,16 @@
|
||||||
<string name="by_type">按照類型</string>
|
<string name="by_type">按照類型</string>
|
||||||
<string name="one_tap_active_descr">輕點在地圖上的標記,將其移動到活動標記的頂端,而不用打開內容選單。</string>
|
<string name="one_tap_active_descr">輕點在地圖上的標記,將其移動到活動標記的頂端,而不用打開內容選單。</string>
|
||||||
<string name="modify_the_search_query">變更搜尋的查詢。</string>
|
<string name="modify_the_search_query">變更搜尋的查詢。</string>
|
||||||
<string name="release_3_0">"\\022
|
<string name="release_3_0">\\022 新的旅行選單:檢視不用網路的維基導遊文章
|
||||||
\n "</string>
|
\n
|
||||||
|
\n• 維基百科:嶄新的面貌、活動連結、圖片
|
||||||
|
\n
|
||||||
|
\n• 開放式軌跡使用者介面:顯示航點群組
|
||||||
|
\n
|
||||||
|
\n• 地圖標記:從 GPX 檔案匯入所選擇的群組,嶄新的座標輸入外觀
|
||||||
|
\n
|
||||||
|
\n• OsmAnd Live 訂閱,現在包括了 OsmAnd 所有的功能
|
||||||
|
\n</string>
|
||||||
<string name="av_locations_selected_desc">包括座標和所選註解資料的 GPX 檔案。</string>
|
<string name="av_locations_selected_desc">包括座標和所選註解資料的 GPX 檔案。</string>
|
||||||
<string name="av_locations_all_desc">包括座標和所有註解資料的 GPX 檔案。</string>
|
<string name="av_locations_all_desc">包括座標和所有註解資料的 GPX 檔案。</string>
|
||||||
<string name="osm_recipient_stat">編輯 %1$s,合計 %2$s mBTC</string>
|
<string name="osm_recipient_stat">編輯 %1$s,合計 %2$s mBTC</string>
|
||||||
|
|
|
@ -1,6 +1,9 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<resources>
|
<resources>
|
||||||
|
|
||||||
|
<dimen name="wpt_list_category_height">60dp</dimen>
|
||||||
|
<dimen name="wpt_list_item_height">56dp</dimen>
|
||||||
|
<dimen name="list_item_button_padding">4dp</dimen>
|
||||||
<dimen name="action_bar_height">64dp</dimen>
|
<dimen name="action_bar_height">64dp</dimen>
|
||||||
<dimen name="list_content_padding_large">32dp</dimen>
|
<dimen name="list_content_padding_large">32dp</dimen>
|
||||||
<dimen name="title_padding">20dp</dimen>
|
<dimen name="title_padding">20dp</dimen>
|
||||||
|
|
|
@ -81,7 +81,7 @@
|
||||||
<string name="images_cache">Images cache</string>
|
<string name="images_cache">Images cache</string>
|
||||||
<string name="delete_search_history">Delete search history</string>
|
<string name="delete_search_history">Delete search history</string>
|
||||||
<string name="download_images">Show images</string>
|
<string name="download_images">Show images</string>
|
||||||
<string name="download_maps_travel">Travel maps</string>
|
<string name="download_maps_travel">Travel guides</string>
|
||||||
<string name="shared_string_wikivoyage">Wikivoyage</string>
|
<string name="shared_string_wikivoyage">Wikivoyage</string>
|
||||||
<string name="article_removed">Article removed</string>
|
<string name="article_removed">Article removed</string>
|
||||||
<string name="wikivoyage_search_hint">Search: Country, city, province</string>
|
<string name="wikivoyage_search_hint">Search: Country, city, province</string>
|
||||||
|
@ -416,7 +416,7 @@
|
||||||
<string name="points_delete_multiple_succesful">Point(s) deleted.</string>
|
<string name="points_delete_multiple_succesful">Point(s) deleted.</string>
|
||||||
<string name="points_delete_multiple">You are going to delete %1$d point(s). Are you sure?</string>
|
<string name="points_delete_multiple">You are going to delete %1$d point(s). Are you sure?</string>
|
||||||
<string name="route_points_category_name">Turns to pass on this route</string>
|
<string name="route_points_category_name">Turns to pass on this route</string>
|
||||||
<string name="track_points_category_name">Prominent points on this route</string>
|
<string name="track_points_category_name">Waypoints, points of interest, named features</string>
|
||||||
<string name="gpx_track">Track</string>
|
<string name="gpx_track">Track</string>
|
||||||
<string name="max_speed">Maximum speed</string>
|
<string name="max_speed">Maximum speed</string>
|
||||||
<string name="average_speed">Average speed</string>
|
<string name="average_speed">Average speed</string>
|
||||||
|
|
|
@ -12,7 +12,10 @@ import android.graphics.drawable.Drawable;
|
||||||
import android.graphics.drawable.StateListDrawable;
|
import android.graphics.drawable.StateListDrawable;
|
||||||
import android.os.Build;
|
import android.os.Build;
|
||||||
import android.os.IBinder;
|
import android.os.IBinder;
|
||||||
|
import android.support.annotation.AttrRes;
|
||||||
|
import android.support.annotation.ColorInt;
|
||||||
import android.support.annotation.ColorRes;
|
import android.support.annotation.ColorRes;
|
||||||
|
import android.support.annotation.NonNull;
|
||||||
import android.support.design.widget.Snackbar;
|
import android.support.design.widget.Snackbar;
|
||||||
import android.support.v4.content.ContextCompat;
|
import android.support.v4.content.ContextCompat;
|
||||||
import android.text.Spannable;
|
import android.text.Spannable;
|
||||||
|
@ -284,6 +287,13 @@ public class AndroidUtils {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ColorInt
|
||||||
|
public static int getColorFromAttr(@NonNull Context ctx, @AttrRes int colorAttribute) {
|
||||||
|
TypedValue typedValue = new TypedValue();
|
||||||
|
ctx.getTheme().resolveAttribute(colorAttribute, typedValue, true);
|
||||||
|
return typedValue.data;
|
||||||
|
}
|
||||||
|
|
||||||
public static int resolveAttribute(Context ctx, int attribute) {
|
public static int resolveAttribute(Context ctx, int attribute) {
|
||||||
TypedValue outValue = new TypedValue();
|
TypedValue outValue = new TypedValue();
|
||||||
ctx.getTheme().resolveAttribute(attribute, outValue, true);
|
ctx.getTheme().resolveAttribute(attribute, outValue, true);
|
||||||
|
|
|
@ -761,6 +761,10 @@ public class GpxSelectionHelper {
|
||||||
public int getColor() {
|
public int getColor() {
|
||||||
return color;
|
return color;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setColor(int color) {
|
||||||
|
this.color = color;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static class GpxDisplayItem {
|
public static class GpxDisplayItem {
|
||||||
|
|
|
@ -1,5 +1,43 @@
|
||||||
package net.osmand.plus.download.ui;
|
package net.osmand.plus.download.ui;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.Comparator;
|
||||||
|
import java.util.EnumSet;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.LinkedHashMap;
|
||||||
|
import java.util.LinkedHashSet;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Set;
|
||||||
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
|
import net.osmand.AndroidUtils;
|
||||||
|
import net.osmand.Collator;
|
||||||
|
import net.osmand.IndexConstants;
|
||||||
|
import net.osmand.OsmAndCollator;
|
||||||
|
import net.osmand.map.ITileSource;
|
||||||
|
import net.osmand.plus.ContextMenuAdapter;
|
||||||
|
import net.osmand.plus.ContextMenuAdapter.ItemClickListener;
|
||||||
|
import net.osmand.plus.ContextMenuItem;
|
||||||
|
import net.osmand.plus.IconsCache;
|
||||||
|
import net.osmand.plus.OsmandApplication;
|
||||||
|
import net.osmand.plus.OsmandPlugin;
|
||||||
|
import net.osmand.plus.R;
|
||||||
|
import net.osmand.plus.activities.LocalIndexHelper;
|
||||||
|
import net.osmand.plus.activities.LocalIndexHelper.LocalIndexType;
|
||||||
|
import net.osmand.plus.activities.LocalIndexInfo;
|
||||||
|
import net.osmand.plus.activities.OsmandBaseExpandableListAdapter;
|
||||||
|
import net.osmand.plus.base.OsmandExpandableListFragment;
|
||||||
|
import net.osmand.plus.dialogs.DirectionsDialogs;
|
||||||
|
import net.osmand.plus.download.DownloadActivity;
|
||||||
|
import net.osmand.plus.download.DownloadIndexesThread.DownloadEvents;
|
||||||
|
import net.osmand.plus.download.IndexItem;
|
||||||
|
import net.osmand.plus.helpers.FileNameTranslationHelper;
|
||||||
|
import net.osmand.plus.inapp.InAppPurchaseHelper;
|
||||||
|
import net.osmand.plus.resources.IncrementalChangesManager;
|
||||||
|
import net.osmand.util.Algorithms;
|
||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
import android.content.DialogInterface;
|
import android.content.DialogInterface;
|
||||||
import android.content.res.Resources;
|
import android.content.res.Resources;
|
||||||
|
@ -36,44 +74,6 @@ import android.widget.ImageView;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
import android.widget.Toast;
|
import android.widget.Toast;
|
||||||
|
|
||||||
import net.osmand.AndroidUtils;
|
|
||||||
import net.osmand.IndexConstants;
|
|
||||||
import net.osmand.map.ITileSource;
|
|
||||||
import net.osmand.plus.ContextMenuAdapter;
|
|
||||||
import net.osmand.plus.ContextMenuAdapter.ItemClickListener;
|
|
||||||
import net.osmand.plus.ContextMenuItem;
|
|
||||||
import net.osmand.plus.IconsCache;
|
|
||||||
import net.osmand.plus.OsmandApplication;
|
|
||||||
import net.osmand.plus.OsmandPlugin;
|
|
||||||
import net.osmand.plus.R;
|
|
||||||
import net.osmand.plus.activities.LocalIndexHelper;
|
|
||||||
import net.osmand.plus.activities.LocalIndexHelper.LocalIndexType;
|
|
||||||
import net.osmand.plus.activities.LocalIndexInfo;
|
|
||||||
import net.osmand.plus.activities.OsmandBaseExpandableListAdapter;
|
|
||||||
import net.osmand.plus.base.OsmandExpandableListFragment;
|
|
||||||
import net.osmand.plus.dialogs.DirectionsDialogs;
|
|
||||||
import net.osmand.plus.download.DownloadActivity;
|
|
||||||
import net.osmand.plus.download.DownloadIndexesThread.DownloadEvents;
|
|
||||||
import net.osmand.plus.download.IndexItem;
|
|
||||||
import net.osmand.plus.helpers.FileNameTranslationHelper;
|
|
||||||
import net.osmand.plus.inapp.InAppPurchaseHelper;
|
|
||||||
import net.osmand.plus.resources.IncrementalChangesManager;
|
|
||||||
import net.osmand.util.Algorithms;
|
|
||||||
|
|
||||||
import java.io.File;
|
|
||||||
import java.text.Collator;
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.Collections;
|
|
||||||
import java.util.Comparator;
|
|
||||||
import java.util.EnumSet;
|
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.LinkedHashMap;
|
|
||||||
import java.util.LinkedHashSet;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
import java.util.Set;
|
|
||||||
import java.util.regex.Pattern;
|
|
||||||
|
|
||||||
|
|
||||||
public class LocalIndexesFragment extends OsmandExpandableListFragment implements DownloadEvents {
|
public class LocalIndexesFragment extends OsmandExpandableListFragment implements DownloadEvents {
|
||||||
public static final Pattern ILLEGAL_FILE_NAME_CHARACTERS = Pattern.compile("[?:\"*|/\\<>]");
|
public static final Pattern ILLEGAL_FILE_NAME_CHARACTERS = Pattern.compile("[?:\"*|/\\<>]");
|
||||||
|
@ -851,7 +851,7 @@ public class LocalIndexesFragment extends OsmandExpandableListFragment implement
|
||||||
}
|
}
|
||||||
|
|
||||||
public void sortData() {
|
public void sortData() {
|
||||||
final Collator cl = Collator.getInstance();
|
final Collator cl = OsmAndCollator.primaryCollator();
|
||||||
for (List<LocalIndexInfo> i : data.values()) {
|
for (List<LocalIndexInfo> i : data.values()) {
|
||||||
Collections.sort(i, new Comparator<LocalIndexInfo>() {
|
Collections.sort(i, new Comparator<LocalIndexInfo>() {
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -1,8 +1,24 @@
|
||||||
package net.osmand.plus.download.ui;
|
package net.osmand.plus.download.ui;
|
||||||
|
|
||||||
|
import java.util.Comparator;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import net.osmand.Collator;
|
||||||
|
import net.osmand.OsmAndCollator;
|
||||||
|
import net.osmand.map.OsmandRegions;
|
||||||
|
import net.osmand.plus.OsmandApplication;
|
||||||
|
import net.osmand.plus.OsmandSettings;
|
||||||
|
import net.osmand.plus.R;
|
||||||
|
import net.osmand.plus.base.OsmAndListFragment;
|
||||||
|
import net.osmand.plus.chooseplan.ChoosePlanDialogFragment;
|
||||||
|
import net.osmand.plus.download.DownloadActivity;
|
||||||
|
import net.osmand.plus.download.DownloadIndexesThread.DownloadEvents;
|
||||||
|
import net.osmand.plus.download.DownloadResources;
|
||||||
|
import net.osmand.plus.download.IndexItem;
|
||||||
|
import net.osmand.plus.inapp.InAppPurchaseHelper;
|
||||||
|
import net.osmand.util.Algorithms;
|
||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.icu.text.Collator;
|
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.support.v4.view.MenuItemCompat;
|
import android.support.v4.view.MenuItemCompat;
|
||||||
import android.support.v7.app.ActionBar;
|
import android.support.v7.app.ActionBar;
|
||||||
|
@ -16,21 +32,6 @@ import android.view.ViewGroup;
|
||||||
import android.widget.ArrayAdapter;
|
import android.widget.ArrayAdapter;
|
||||||
import android.widget.ListView;
|
import android.widget.ListView;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
import net.osmand.map.OsmandRegions;
|
|
||||||
import net.osmand.plus.OsmandApplication;
|
|
||||||
import net.osmand.plus.OsmandSettings;
|
|
||||||
import net.osmand.plus.R;
|
|
||||||
import net.osmand.plus.base.OsmAndListFragment;
|
|
||||||
import net.osmand.plus.chooseplan.ChoosePlanDialogFragment;
|
|
||||||
import net.osmand.plus.download.DownloadActivity;
|
|
||||||
import net.osmand.plus.download.DownloadIndexesThread.DownloadEvents;
|
|
||||||
import net.osmand.plus.download.DownloadResources;
|
|
||||||
import net.osmand.plus.download.IndexItem;
|
|
||||||
import net.osmand.plus.inapp.InAppPurchaseHelper;
|
|
||||||
import net.osmand.util.Algorithms;
|
|
||||||
|
|
||||||
import java.util.Comparator;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
public class UpdatesIndexFragment extends OsmAndListFragment implements DownloadEvents {
|
public class UpdatesIndexFragment extends OsmAndListFragment implements DownloadEvents {
|
||||||
private static final int RELOAD_ID = 5;
|
private static final int RELOAD_ID = 5;
|
||||||
|
@ -94,7 +95,7 @@ public class UpdatesIndexFragment extends OsmAndListFragment implements Download
|
||||||
OsmandSettings settings = getMyApplication().getSettings();
|
OsmandSettings settings = getMyApplication().getSettings();
|
||||||
listAdapter = new UpdateIndexAdapter(a, R.layout.download_index_list_item, indexItems,
|
listAdapter = new UpdateIndexAdapter(a, R.layout.download_index_list_item, indexItems,
|
||||||
!InAppPurchaseHelper.isSubscribedToLiveUpdates(getMyApplication()) || settings.SHOULD_SHOW_FREE_VERSION_BANNER.get());
|
!InAppPurchaseHelper.isSubscribedToLiveUpdates(getMyApplication()) || settings.SHOULD_SHOW_FREE_VERSION_BANNER.get());
|
||||||
final Collator collator = Collator.getInstance();
|
final Collator collator = OsmAndCollator.primaryCollator();
|
||||||
listAdapter.sort(new Comparator<IndexItem>() {
|
listAdapter.sort(new Comparator<IndexItem>() {
|
||||||
@Override
|
@Override
|
||||||
public int compare(IndexItem indexItem, IndexItem indexItem2) {
|
public int compare(IndexItem indexItem, IndexItem indexItem2) {
|
||||||
|
|
|
@ -56,6 +56,8 @@ import java.util.Map;
|
||||||
|
|
||||||
public class AmenityMenuBuilder extends MenuBuilder {
|
public class AmenityMenuBuilder extends MenuBuilder {
|
||||||
|
|
||||||
|
private static final String WIKI_LINK = ".wikipedia.org/w";
|
||||||
|
|
||||||
private final Amenity amenity;
|
private final Amenity amenity;
|
||||||
|
|
||||||
public AmenityMenuBuilder(MapActivity mapActivity, final Amenity amenity) {
|
public AmenityMenuBuilder(MapActivity mapActivity, final Amenity amenity) {
|
||||||
|
@ -100,7 +102,12 @@ public class AmenityMenuBuilder extends MenuBuilder {
|
||||||
ll.setOnLongClickListener(new View.OnLongClickListener() {
|
ll.setOnLongClickListener(new View.OnLongClickListener() {
|
||||||
@Override
|
@Override
|
||||||
public boolean onLongClick(View v) {
|
public boolean onLongClick(View v) {
|
||||||
String textToCopy = !Algorithms.isEmpty(textPrefix) ? textPrefix + ": " + txt : txt;
|
String textToCopy;
|
||||||
|
if (txt.contains(WIKI_LINK)) {
|
||||||
|
textToCopy = txt;
|
||||||
|
} else {
|
||||||
|
textToCopy = !Algorithms.isEmpty(textPrefix) ? textPrefix + ": " + txt : txt;
|
||||||
|
}
|
||||||
copyToClipboard(textToCopy, view.getContext());
|
copyToClipboard(textToCopy, view.getContext());
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -293,7 +300,7 @@ public class AmenityMenuBuilder extends MenuBuilder {
|
||||||
ll.setOnClickListener(new View.OnClickListener() {
|
ll.setOnClickListener(new View.OnClickListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onClick(View v) {
|
public void onClick(View v) {
|
||||||
if (text.contains(".wikipedia.org/w")) {
|
if (text.contains(WIKI_LINK)) {
|
||||||
if (Version.isPaidVersion(app)) {
|
if (Version.isPaidVersion(app)) {
|
||||||
WikiArticleHelper wikiArticleHelper = new WikiArticleHelper(mapActivity, !light);
|
WikiArticleHelper wikiArticleHelper = new WikiArticleHelper(mapActivity, !light);
|
||||||
wikiArticleHelper.showWikiArticle(amenity.getLocation(), text);
|
wikiArticleHelper.showWikiArticle(amenity.getLocation(), text);
|
||||||
|
|
|
@ -130,6 +130,11 @@ public class AmenityMenuController extends MenuController {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isWaypointButtonEnabled() {
|
||||||
|
return marker == null;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean displayDistanceDirection() {
|
public boolean displayDistanceDirection() {
|
||||||
return true;
|
return true;
|
||||||
|
|
|
@ -447,7 +447,7 @@ public class MapMarkersGroupsAdapter extends RecyclerView.Adapter<RecyclerView.V
|
||||||
@Override
|
@Override
|
||||||
public void onClick(View v) {
|
public void onClick(View v) {
|
||||||
if (mapActivity.getSupportFragmentManager() != null) {
|
if (mapActivity.getSupportFragmentManager() != null) {
|
||||||
WikivoyageArticleDialogFragment.showInstance(app, mapActivity.getSupportFragmentManager(), article.getCityId(), article.getLang());
|
WikivoyageArticleDialogFragment.showInstance(app, mapActivity.getSupportFragmentManager(), article.getTripId(), article.getLang());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
|
@ -15,8 +15,11 @@ import android.support.v4.content.ContextCompat;
|
||||||
import android.support.v4.view.MenuItemCompat;
|
import android.support.v4.view.MenuItemCompat;
|
||||||
import android.support.v7.app.AlertDialog;
|
import android.support.v7.app.AlertDialog;
|
||||||
import android.support.v7.view.ActionMode;
|
import android.support.v7.view.ActionMode;
|
||||||
import android.support.v7.widget.PopupMenu;
|
|
||||||
import android.support.v7.widget.SearchView;
|
import android.support.v7.widget.SearchView;
|
||||||
|
import android.text.SpannableStringBuilder;
|
||||||
|
import android.text.Spanned;
|
||||||
|
import android.text.TextUtils;
|
||||||
|
import android.text.style.ForegroundColorSpan;
|
||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
import android.view.Menu;
|
import android.view.Menu;
|
||||||
import android.view.MenuInflater;
|
import android.view.MenuInflater;
|
||||||
|
@ -42,6 +45,7 @@ import net.osmand.plus.FavouritesDbHelper;
|
||||||
import net.osmand.plus.GPXDatabase.GpxDataItem;
|
import net.osmand.plus.GPXDatabase.GpxDataItem;
|
||||||
import net.osmand.plus.GPXUtilities;
|
import net.osmand.plus.GPXUtilities;
|
||||||
import net.osmand.plus.GPXUtilities.GPXFile;
|
import net.osmand.plus.GPXUtilities.GPXFile;
|
||||||
|
import net.osmand.plus.GPXUtilities.WptPt;
|
||||||
import net.osmand.plus.GpxSelectionHelper.GpxDisplayGroup;
|
import net.osmand.plus.GpxSelectionHelper.GpxDisplayGroup;
|
||||||
import net.osmand.plus.GpxSelectionHelper.GpxDisplayItem;
|
import net.osmand.plus.GpxSelectionHelper.GpxDisplayItem;
|
||||||
import net.osmand.plus.GpxSelectionHelper.GpxDisplayItemType;
|
import net.osmand.plus.GpxSelectionHelper.GpxDisplayItemType;
|
||||||
|
@ -58,21 +62,23 @@ import net.osmand.plus.activities.SavingTrackHelper;
|
||||||
import net.osmand.plus.activities.TrackActivity;
|
import net.osmand.plus.activities.TrackActivity;
|
||||||
import net.osmand.plus.base.FavoriteImageDrawable;
|
import net.osmand.plus.base.FavoriteImageDrawable;
|
||||||
import net.osmand.plus.base.OsmandExpandableListFragment;
|
import net.osmand.plus.base.OsmandExpandableListFragment;
|
||||||
import net.osmand.plus.dialogs.DirectionsDialogs;
|
|
||||||
import net.osmand.plus.myplaces.TrackBitmapDrawer.TrackBitmapDrawerListener;
|
import net.osmand.plus.myplaces.TrackBitmapDrawer.TrackBitmapDrawerListener;
|
||||||
import net.osmand.plus.widgets.TextViewEx;
|
import net.osmand.plus.widgets.TextViewEx;
|
||||||
import net.osmand.util.Algorithms;
|
import net.osmand.util.Algorithms;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.lang.ref.WeakReference;
|
import java.lang.ref.WeakReference;
|
||||||
|
import java.text.Collator;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.Comparator;
|
import java.util.Comparator;
|
||||||
|
import java.util.HashMap;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.LinkedHashMap;
|
import java.util.LinkedHashMap;
|
||||||
import java.util.LinkedHashSet;
|
import java.util.LinkedHashSet;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import java.util.Map.Entry;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
public class TrackPointFragment extends OsmandExpandableListFragment implements TrackBitmapDrawerListener {
|
public class TrackPointFragment extends OsmandExpandableListFragment implements TrackBitmapDrawerListener {
|
||||||
|
@ -100,7 +106,6 @@ public class TrackPointFragment extends OsmandExpandableListFragment implements
|
||||||
private boolean routePointsExpanded;
|
private boolean routePointsExpanded;
|
||||||
|
|
||||||
private View mainView;
|
private View mainView;
|
||||||
private PopupMenu popupItemMenu;
|
|
||||||
private Menu optionsMenu;
|
private Menu optionsMenu;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -145,9 +150,6 @@ public class TrackPointFragment extends OsmandExpandableListFragment implements
|
||||||
public void onPause() {
|
public void onPause() {
|
||||||
super.onPause();
|
super.onPause();
|
||||||
setUpdateEnable(false);
|
setUpdateEnable(false);
|
||||||
if (popupItemMenu != null) {
|
|
||||||
popupItemMenu.dismiss();
|
|
||||||
}
|
|
||||||
if (optionsMenu != null) {
|
if (optionsMenu != null) {
|
||||||
optionsMenu.close();
|
optionsMenu.close();
|
||||||
}
|
}
|
||||||
|
@ -453,15 +455,19 @@ public class TrackPointFragment extends OsmandExpandableListFragment implements
|
||||||
if (activity == null) {
|
if (activity == null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
GPXFile gpxFile = getGpx();
|
final GPXFile gpxFile = getGpx();
|
||||||
MapMarkersGroup markersSearch = markersHelper.getMarkersGroup(gpxFile);
|
MapMarkersGroup markersSearch = markersHelper.getMarkersGroup(gpxFile);
|
||||||
final MapMarkersGroup markersGr;
|
final MapMarkersGroup markersGr;
|
||||||
|
final boolean markersRemoved;
|
||||||
if (markersSearch != null) {
|
if (markersSearch != null) {
|
||||||
markersGr = markersSearch;
|
markersGr = markersSearch;
|
||||||
markersHelper.removeMarkersGroup(markersGr);
|
markersHelper.removeMarkersGroup(markersGr);
|
||||||
|
markersRemoved = true;
|
||||||
} else if (gpxFile != null) {
|
} else if (gpxFile != null) {
|
||||||
markersGr = markersHelper.addOrEnableGroup(gpxFile);
|
markersGr = markersHelper.addOrEnableGroup(gpxFile);
|
||||||
|
markersRemoved = false;
|
||||||
} else {
|
} else {
|
||||||
|
markersRemoved = false;
|
||||||
markersGr = null;
|
markersGr = null;
|
||||||
}
|
}
|
||||||
if (markersGr != null) {
|
if (markersGr != null) {
|
||||||
|
@ -474,14 +480,24 @@ public class TrackPointFragment extends OsmandExpandableListFragment implements
|
||||||
fragmentAdapter.closeFabMenu(activity);
|
fragmentAdapter.closeFabMenu(activity);
|
||||||
fragmentAdapter.updateMenuFabVisibility(false);
|
fragmentAdapter.updateMenuFabVisibility(false);
|
||||||
}
|
}
|
||||||
Snackbar snackbar = Snackbar.make(mainView, R.string.waypoints_removed_from_map_markers,
|
Snackbar snackbar = Snackbar.make(mainView, markersRemoved ?
|
||||||
|
R.string.waypoints_removed_from_map_markers : R.string.waypoints_added_to_map_markers,
|
||||||
Snackbar.LENGTH_LONG)
|
Snackbar.LENGTH_LONG)
|
||||||
.setAction(R.string.shared_string_undo, new View.OnClickListener() {
|
.setAction(R.string.shared_string_undo, new View.OnClickListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onClick(View v) {
|
public void onClick(View v) {
|
||||||
TrackActivity trackActivity = getTrackActivity();
|
TrackActivity trackActivity = getTrackActivity();
|
||||||
if (trackActivity != null) {
|
if (trackActivity != null) {
|
||||||
markersHelper.removeMarkersGroup(markersGr);
|
if (markersRemoved) {
|
||||||
|
if (gpxFile != null) {
|
||||||
|
markersHelper.addOrEnableGroup(gpxFile);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
MapMarkersGroup group = markersHelper.getMarkersGroup(gpxFile);
|
||||||
|
if (group != null) {
|
||||||
|
markersHelper.removeMarkersGroup(group);
|
||||||
|
}
|
||||||
|
}
|
||||||
trackActivity.invalidateOptionsMenu();
|
trackActivity.invalidateOptionsMenu();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -662,6 +678,18 @@ public class TrackPointFragment extends OsmandExpandableListFragment implements
|
||||||
List<GpxDisplayGroup> groups = new ArrayList<>();
|
List<GpxDisplayGroup> groups = new ArrayList<>();
|
||||||
Filter myFilter;
|
Filter myFilter;
|
||||||
private Set<?> filter;
|
private Set<?> filter;
|
||||||
|
Comparator<String> comparator;
|
||||||
|
|
||||||
|
PointGPXAdapter() {
|
||||||
|
final Collator collator = Collator.getInstance();
|
||||||
|
collator.setStrength(Collator.SECONDARY);
|
||||||
|
comparator = new Comparator<String>() {
|
||||||
|
@Override
|
||||||
|
public int compare(String s1, String s2) {
|
||||||
|
return collator.compare(s1, s2);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
public void synchronizeGroups(@NonNull List<GpxDisplayGroup> gs) {
|
public void synchronizeGroups(@NonNull List<GpxDisplayGroup> gs) {
|
||||||
itemGroups.clear();
|
itemGroups.clear();
|
||||||
|
@ -680,22 +708,82 @@ public class TrackPointFragment extends OsmandExpandableListFragment implements
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
boolean empty = true;
|
boolean empty = true;
|
||||||
|
List<GpxDisplayItem> displayItems = g.getModifiableList();
|
||||||
|
Map<String, List<GpxDisplayItem>> itemsMap = new HashMap<>();
|
||||||
|
for (GpxDisplayItem item : displayItems) {
|
||||||
|
String category;
|
||||||
|
if (item.locationStart != null && g.getType() == GpxDisplayItemType.TRACK_POINTS) {
|
||||||
|
category = item.locationStart.category;
|
||||||
|
if (TextUtils.isEmpty(category)) {
|
||||||
|
category = "";
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
category = "";
|
||||||
|
}
|
||||||
|
List<GpxDisplayItem> items = itemsMap.get(category);
|
||||||
|
if (items == null) {
|
||||||
|
items = new ArrayList<>();
|
||||||
|
itemsMap.put(category, items);
|
||||||
|
}
|
||||||
|
items.add(item);
|
||||||
|
}
|
||||||
if (flt == null) {
|
if (flt == null) {
|
||||||
empty = false;
|
empty = false;
|
||||||
itemGroups.put(g, new ArrayList<>(g.getModifiableList()));
|
|
||||||
} else {
|
} else {
|
||||||
ArrayList<GpxDisplayItem> list = new ArrayList<>();
|
Map<String, List<GpxDisplayItem>> itemsMapFiltered = new HashMap<>();
|
||||||
for (GpxDisplayItem i : g.getModifiableList()) {
|
for (Entry<String, List<GpxDisplayItem>> e : itemsMap.entrySet()) {
|
||||||
|
String category = e.getKey();
|
||||||
|
List<GpxDisplayItem> items = e.getValue();
|
||||||
|
if (flt.contains(category)) {
|
||||||
|
itemsMapFiltered.put(category, items);
|
||||||
|
empty = false;
|
||||||
|
} else {
|
||||||
|
for (GpxDisplayItem i : items) {
|
||||||
if (flt.contains(i)) {
|
if (flt.contains(i)) {
|
||||||
list.add(i);
|
List<GpxDisplayItem> itemsFiltered = itemsMapFiltered.get(category);
|
||||||
|
if (itemsFiltered == null) {
|
||||||
|
itemsFiltered = new ArrayList<>();
|
||||||
|
itemsMapFiltered.put(category, itemsFiltered);
|
||||||
|
}
|
||||||
|
itemsFiltered.add(i);
|
||||||
empty = false;
|
empty = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
itemGroups.put(g, list);
|
}
|
||||||
|
}
|
||||||
|
itemsMap = itemsMapFiltered;
|
||||||
}
|
}
|
||||||
if (!empty) {
|
if (!empty) {
|
||||||
|
List<GpxDisplayItem> items = new ArrayList<>();
|
||||||
|
List<String> categories = new ArrayList<>(itemsMap.keySet());
|
||||||
|
Collections.sort(categories, comparator);
|
||||||
|
if (g.getType() == GpxDisplayItemType.TRACK_POINTS) {
|
||||||
|
itemGroups.put(g, items);
|
||||||
groups.add(g);
|
groups.add(g);
|
||||||
}
|
}
|
||||||
|
for (String category : categories) {
|
||||||
|
List<GpxDisplayItem> values = itemsMap.get(category);
|
||||||
|
if (g.getType() == GpxDisplayItemType.TRACK_POINTS) {
|
||||||
|
GpxDisplayGroup headerGroup = g.cloneInstance();
|
||||||
|
headerGroup.setType(GpxDisplayItemType.TRACK_POINTS);
|
||||||
|
headerGroup.setName(category);
|
||||||
|
for (GpxDisplayItem i : values) {
|
||||||
|
if (i.locationStart != null && i.locationStart.getColor() != 0) {
|
||||||
|
headerGroup.setColor(i.locationStart.getColor(g.getColor()));
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
itemGroups.put(headerGroup, values);
|
||||||
|
groups.add(headerGroup);
|
||||||
|
} else {
|
||||||
|
items.addAll(values);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (items.size() > 0) {
|
||||||
|
itemGroups.put(g, items);
|
||||||
|
groups.add(g);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
notifyDataSetChanged();
|
notifyDataSetChanged();
|
||||||
}
|
}
|
||||||
|
@ -757,23 +845,94 @@ public class TrackPointFragment extends OsmandExpandableListFragment implements
|
||||||
public View getGroupView(final int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) {
|
public View getGroupView(final int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) {
|
||||||
View row = convertView;
|
View row = convertView;
|
||||||
final GpxDisplayGroup group = getGroup(groupPosition);
|
final GpxDisplayGroup group = getGroup(groupPosition);
|
||||||
boolean checkBox = row != null && row.findViewById(R.id.toggle_item) instanceof CheckBox;
|
IconsCache iconsCache = app.getIconsCache();
|
||||||
boolean same = (selectionMode && checkBox) || (!selectionMode && !checkBox);
|
if (row == null) {
|
||||||
if (row == null || !same) {
|
|
||||||
LayoutInflater inflater = getLayoutInflater();
|
LayoutInflater inflater = getLayoutInflater();
|
||||||
row = inflater.inflate(R.layout.wpt_list_item_category, parent, false);
|
row = inflater.inflate(R.layout.wpt_list_item, parent, false);
|
||||||
|
ImageView options = (ImageView) row.findViewById(R.id.options);
|
||||||
|
options.setFocusable(false);
|
||||||
|
options.setImageDrawable(iconsCache.getThemedIcon(R.drawable.ic_overflow_menu_white));
|
||||||
}
|
}
|
||||||
|
ImageView icon = (ImageView) row.findViewById(R.id.icon);
|
||||||
|
TextView groupTitle = (TextView) row.findViewById(R.id.bold_label);
|
||||||
|
TextView title = (TextView) row.findViewById(R.id.label);
|
||||||
|
TextViewEx button = (TextViewEx) row.findViewById(R.id.button);
|
||||||
|
TextView description = (TextView) row.findViewById(R.id.description);
|
||||||
|
ImageView expandImage = (ImageView) row.findViewById(R.id.expand_image);
|
||||||
|
ImageView options = (ImageView) row.findViewById(R.id.options);
|
||||||
|
|
||||||
|
button.setVisibility(View.GONE);
|
||||||
|
|
||||||
|
if (groupPosition == 0 || group.getType() == GpxDisplayItemType.TRACK_ROUTE_POINTS) {
|
||||||
|
icon.setVisibility(View.GONE);
|
||||||
|
options.setVisibility(View.GONE);
|
||||||
|
expandImage.setVisibility(View.GONE);
|
||||||
|
title.setVisibility(View.GONE);
|
||||||
|
groupTitle.setVisibility(View.VISIBLE);
|
||||||
|
description.setVisibility(View.VISIBLE);
|
||||||
|
row.findViewById(R.id.divider).setVisibility(View.GONE);
|
||||||
|
row.findViewById(R.id.list_divider).setVisibility(View.GONE);
|
||||||
row.setOnClickListener(null);
|
row.setOnClickListener(null);
|
||||||
row.findViewById(R.id.group_divider).setVisibility(groupPosition == 0 ? View.GONE : View.VISIBLE);
|
|
||||||
TextView label = (TextView) row.findViewById(R.id.category_name);
|
|
||||||
TextView description = (TextView) row.findViewById(R.id.category_desc);
|
|
||||||
if (group.getType() == GpxDisplayItemType.TRACK_POINTS) {
|
if (group.getType() == GpxDisplayItemType.TRACK_POINTS) {
|
||||||
label.setText(getString(R.string.waypoints));
|
groupTitle.setText(getString(R.string.waypoints));
|
||||||
description.setText(getString(R.string.track_points_category_name));
|
description.setText(getString(R.string.track_points_category_name));
|
||||||
} else {
|
} else {
|
||||||
label.setText(getString(R.string.route_points));
|
groupTitle.setText(getString(R.string.route_points));
|
||||||
description.setText(getString(R.string.route_points_category_name));
|
description.setText(getString(R.string.route_points_category_name));
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
icon.setVisibility(View.VISIBLE);
|
||||||
|
boolean expanded = listView.isGroupExpanded(groupPosition);
|
||||||
|
expandImage.setImageDrawable(iconsCache.getThemedIcon(
|
||||||
|
expanded ? R.drawable.ic_action_arrow_up : R.drawable.ic_action_arrow_down));
|
||||||
|
expandImage.setVisibility(View.VISIBLE);
|
||||||
|
description.setVisibility(View.GONE);
|
||||||
|
expandImage.setVisibility(View.VISIBLE);
|
||||||
|
options.setVisibility(View.VISIBLE);
|
||||||
|
row.findViewById(R.id.divider).setVisibility(View.VISIBLE);
|
||||||
|
row.findViewById(R.id.list_divider).setVisibility(View.GONE);
|
||||||
|
|
||||||
|
row.setOnClickListener(new View.OnClickListener() {
|
||||||
|
@Override
|
||||||
|
public void onClick(View v) {
|
||||||
|
if (listView.isGroupExpanded(groupPosition)) {
|
||||||
|
listView.collapseGroup(groupPosition);
|
||||||
|
} else {
|
||||||
|
listView.expandGroup(groupPosition);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
title.setVisibility(View.VISIBLE);
|
||||||
|
groupTitle.setVisibility(View.GONE);
|
||||||
|
|
||||||
|
String categoryName = group.getName();
|
||||||
|
if (TextUtils.isEmpty(categoryName)) {
|
||||||
|
categoryName = getString(R.string.waypoints);
|
||||||
|
}
|
||||||
|
SpannableStringBuilder text = new SpannableStringBuilder(categoryName).append(" — ").append(String.valueOf(getChildrenCount(groupPosition)));
|
||||||
|
text.setSpan(new ForegroundColorSpan(AndroidUtils.getColorFromAttr(app, R.attr.wikivoyage_primary_text_color)),
|
||||||
|
0, categoryName.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
|
||||||
|
text.setSpan(new ForegroundColorSpan(ContextCompat.getColor(app, R.color.wikivoyage_secondary_text)),
|
||||||
|
categoryName.length() + 1, text.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
|
||||||
|
title.setText(text);
|
||||||
|
|
||||||
|
int groupColor = group.getColor();
|
||||||
|
if (groupColor == 0) {
|
||||||
|
groupColor = ContextCompat.getColor(app, R.color.gpx_color_point);
|
||||||
|
}
|
||||||
|
icon.setImageDrawable(app.getIconsCache().getPaintedIcon(R.drawable.ic_action_folder, groupColor | 0xff000000));
|
||||||
|
options.setOnClickListener(new View.OnClickListener() {
|
||||||
|
@Override
|
||||||
|
public void onClick(View v) {
|
||||||
|
Activity activity = getActivity();
|
||||||
|
if (activity != null) {
|
||||||
|
// todo
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
row.findViewById(R.id.group_divider).setVisibility(group.getType() == GpxDisplayItemType.TRACK_ROUTE_POINTS ? View.VISIBLE : View.GONE);
|
||||||
|
|
||||||
final CheckBox ch = (CheckBox) row.findViewById(R.id.toggle_item);
|
final CheckBox ch = (CheckBox) row.findViewById(R.id.toggle_item);
|
||||||
if (selectionMode) {
|
if (selectionMode) {
|
||||||
|
@ -785,6 +944,43 @@ public class TrackPointFragment extends OsmandExpandableListFragment implements
|
||||||
public void onClick(View v) {
|
public void onClick(View v) {
|
||||||
List<GpxDisplayItem> items = itemGroups.get(group);
|
List<GpxDisplayItem> items = itemGroups.get(group);
|
||||||
if (ch.isChecked()) {
|
if (ch.isChecked()) {
|
||||||
|
if (groupPosition == 0) {
|
||||||
|
setTrackPointsSelection(true);
|
||||||
|
} else {
|
||||||
|
setGroupSelection(items, groupPosition, true);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (groupPosition == 0) {
|
||||||
|
setTrackPointsSelection(false);
|
||||||
|
} else {
|
||||||
|
setGroupSelection(items, groupPosition, false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
adapter.notifyDataSetInvalidated();
|
||||||
|
updateSelectionMode(actionMode);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
ch.setVisibility(View.GONE);
|
||||||
|
}
|
||||||
|
return row;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void setTrackPointsSelection(boolean select) {
|
||||||
|
if (groups.size() > 1) {
|
||||||
|
setGroupSelection(null, 0, select);
|
||||||
|
for (int i = 1; i < groups.size(); i++) {
|
||||||
|
GpxDisplayGroup g = groups.get(i);
|
||||||
|
if (g.getType() == GpxDisplayItemType.TRACK_POINTS) {
|
||||||
|
setGroupSelection(itemGroups.get(g), i, select);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void setGroupSelection(List<GpxDisplayItem> items, int groupPosition, boolean select) {
|
||||||
|
GpxDisplayGroup group = groups.get(groupPosition);
|
||||||
|
if (select) {
|
||||||
selectedGroups.add(groupPosition);
|
selectedGroups.add(groupPosition);
|
||||||
if (items != null) {
|
if (items != null) {
|
||||||
Set<GpxDisplayItem> set = selectedItems.get(group.getType());
|
Set<GpxDisplayItem> set = selectedItems.get(group.getType());
|
||||||
|
@ -799,16 +995,6 @@ public class TrackPointFragment extends OsmandExpandableListFragment implements
|
||||||
selectedGroups.remove(groupPosition);
|
selectedGroups.remove(groupPosition);
|
||||||
selectedItems.remove(group.getType());
|
selectedItems.remove(group.getType());
|
||||||
}
|
}
|
||||||
adapter.notifyDataSetInvalidated();
|
|
||||||
updateSelectionMode(actionMode);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
ch.setVisibility(View.GONE);
|
|
||||||
}
|
|
||||||
row.findViewById(R.id.category_icon).setVisibility(View.GONE);
|
|
||||||
row.findViewById(R.id.options).setVisibility(View.GONE);
|
|
||||||
return row;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -816,9 +1002,13 @@ public class TrackPointFragment extends OsmandExpandableListFragment implements
|
||||||
public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView,
|
public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView,
|
||||||
ViewGroup parent) {
|
ViewGroup parent) {
|
||||||
View row = convertView;
|
View row = convertView;
|
||||||
|
IconsCache iconsCache = getMyApplication().getIconsCache();
|
||||||
if (row == null) {
|
if (row == null) {
|
||||||
LayoutInflater inflater = getLayoutInflater();
|
LayoutInflater inflater = getLayoutInflater();
|
||||||
row = inflater.inflate(R.layout.wpt_list_item, parent, false);
|
row = inflater.inflate(R.layout.wpt_list_item, parent, false);
|
||||||
|
ImageView options = (ImageView) row.findViewById(R.id.options);
|
||||||
|
options.setFocusable(false);
|
||||||
|
options.setImageDrawable(iconsCache.getThemedIcon(R.drawable.ic_overflow_menu_white));
|
||||||
}
|
}
|
||||||
if (childPosition == 0) {
|
if (childPosition == 0) {
|
||||||
row.findViewById(R.id.divider).setVisibility(View.VISIBLE);
|
row.findViewById(R.id.divider).setVisibility(View.VISIBLE);
|
||||||
|
@ -832,76 +1022,29 @@ public class TrackPointFragment extends OsmandExpandableListFragment implements
|
||||||
TextView title = (TextView) row.findViewById(R.id.label);
|
TextView title = (TextView) row.findViewById(R.id.label);
|
||||||
TextViewEx button = (TextViewEx) row.findViewById(R.id.button);
|
TextViewEx button = (TextViewEx) row.findViewById(R.id.button);
|
||||||
TextView description = (TextView) row.findViewById(R.id.description);
|
TextView description = (TextView) row.findViewById(R.id.description);
|
||||||
|
ImageView expandImage = (ImageView) row.findViewById(R.id.expand_image);
|
||||||
final GpxDisplayItem gpxItem = getChild(groupPosition, childPosition);
|
|
||||||
boolean isWpt = gpxItem != null && gpxItem.group.getType() == GpxDisplayItemType.TRACK_POINTS;
|
|
||||||
ImageView options = (ImageView) row.findViewById(R.id.options);
|
ImageView options = (ImageView) row.findViewById(R.id.options);
|
||||||
if (isWpt) {
|
|
||||||
title.setVisibility(View.VISIBLE);
|
|
||||||
description.setVisibility(View.VISIBLE);
|
|
||||||
button.setVisibility(View.GONE);
|
|
||||||
|
|
||||||
options.setFocusable(false);
|
final GpxDisplayGroup group = getGroup(groupPosition);
|
||||||
options.setImageDrawable(getMyApplication().getIconsCache().getThemedIcon(
|
final GpxDisplayItem gpxItem = getChild(groupPosition, childPosition);
|
||||||
R.drawable.ic_overflow_menu_white));
|
final WptPt wpt = gpxItem != null ? gpxItem.locationStart : null;
|
||||||
options.setVisibility(View.VISIBLE);
|
boolean isWaypoint = gpxItem != null && group.getType() == GpxDisplayItemType.TRACK_POINTS;
|
||||||
options.setOnClickListener(new View.OnClickListener() {
|
if (isWaypoint) {
|
||||||
@Override
|
int groupColor = group.getColor();
|
||||||
public void onClick(View v) {
|
if (wpt != null) {
|
||||||
IconsCache iconsCache = getMyApplication().getIconsCache();
|
groupColor = wpt.getColor(groupColor);
|
||||||
Activity activity = getActivity();
|
|
||||||
if (activity != null) {
|
|
||||||
popupItemMenu = new PopupMenu(activity, v);
|
|
||||||
DirectionsDialogs.setupPopUpMenuIcon(popupItemMenu);
|
|
||||||
|
|
||||||
MenuItem menuItem = popupItemMenu.getMenu().add(R.string.shared_string_edit).setIcon(iconsCache.getThemedIcon(R.drawable.ic_action_edit_dark));
|
|
||||||
menuItem.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
|
|
||||||
@Override
|
|
||||||
public boolean onMenuItemClick(MenuItem mItem) {
|
|
||||||
final OsmandSettings settings = app.getSettings();
|
|
||||||
LatLon location = new LatLon(gpxItem.locationStart.lat, gpxItem.locationStart.lon);
|
|
||||||
if (gpxItem.group.getGpx() != null) {
|
|
||||||
app.getSelectedGpxHelper().setGpxFileToDisplay(gpxItem.group.getGpx());
|
|
||||||
}
|
|
||||||
settings.setMapLocationToShow(location.getLatitude(), location.getLongitude(),
|
|
||||||
settings.getLastKnownMapZoom(),
|
|
||||||
new PointDescription(PointDescription.POINT_TYPE_WPT, gpxItem.name),
|
|
||||||
false,
|
|
||||||
gpxItem.locationStart);
|
|
||||||
settings.setEditObjectToShow();
|
|
||||||
|
|
||||||
MapActivity.launchMapActivityMoveToTop(getActivity());
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
popupItemMenu.show();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
int groupColor = gpxItem.group.getColor();
|
|
||||||
if (gpxItem.locationStart != null) {
|
|
||||||
groupColor = gpxItem.locationStart.getColor(groupColor);
|
|
||||||
}
|
}
|
||||||
if (groupColor == 0) {
|
if (groupColor == 0) {
|
||||||
groupColor = ContextCompat.getColor(app, R.color.gpx_color_point);
|
groupColor = ContextCompat.getColor(app, R.color.gpx_color_point);
|
||||||
}
|
}
|
||||||
icon.setImageDrawable(FavoriteImageDrawable.getOrCreate(getActivity(), groupColor, false));
|
|
||||||
} else {
|
|
||||||
boolean showAll = gpxItem == null;
|
|
||||||
title.setVisibility(showAll ? View.GONE : View.VISIBLE);
|
|
||||||
description.setVisibility(showAll ? View.GONE : View.VISIBLE);
|
|
||||||
button.setVisibility(!showAll ? View.GONE : View.VISIBLE);
|
|
||||||
|
|
||||||
if (showAll) {
|
title.setVisibility(View.VISIBLE);
|
||||||
int count = itemGroups.get(groups.get(groupPosition)).size();
|
button.setVisibility(View.GONE);
|
||||||
button.setText(getString(R.string.shared_string_show_all) + " - " + count);
|
|
||||||
icon.setImageDrawable(null);
|
expandImage.setVisibility(View.GONE);
|
||||||
} else {
|
|
||||||
icon.setImageDrawable(app.getIconsCache().getThemedIcon(R.drawable.ic_action_marker_dark));
|
|
||||||
}
|
|
||||||
options.setVisibility(View.GONE);
|
options.setVisibility(View.GONE);
|
||||||
}
|
options.setOnClickListener(null);
|
||||||
if (gpxItem != null) {
|
|
||||||
title.setText(gpxItem.name);
|
title.setText(gpxItem.name);
|
||||||
if (!Algorithms.isEmpty(gpxItem.description)) {
|
if (!Algorithms.isEmpty(gpxItem.description)) {
|
||||||
description.setText(gpxItem.description);
|
description.setText(gpxItem.description);
|
||||||
|
@ -909,12 +1052,36 @@ public class TrackPointFragment extends OsmandExpandableListFragment implements
|
||||||
} else {
|
} else {
|
||||||
description.setVisibility(View.GONE);
|
description.setVisibility(View.GONE);
|
||||||
}
|
}
|
||||||
|
icon.setImageDrawable(FavoriteImageDrawable.getOrCreate(getActivity(), groupColor, false));
|
||||||
|
|
||||||
|
} else {
|
||||||
|
boolean showAll = gpxItem == null;
|
||||||
|
title.setVisibility(showAll ? View.GONE : View.VISIBLE);
|
||||||
|
description.setVisibility(showAll ? View.GONE : View.VISIBLE);
|
||||||
|
button.setVisibility(!showAll ? View.GONE : View.VISIBLE);
|
||||||
|
expandImage.setVisibility(View.GONE);
|
||||||
|
options.setVisibility(View.GONE);
|
||||||
|
|
||||||
|
if (showAll) {
|
||||||
|
int count = itemGroups.get(groups.get(groupPosition)).size();
|
||||||
|
button.setText(getString(R.string.shared_string_show_all) + " - " + count);
|
||||||
|
icon.setImageDrawable(null);
|
||||||
|
} else {
|
||||||
|
title.setText(gpxItem.name);
|
||||||
|
if (!Algorithms.isEmpty(gpxItem.description)) {
|
||||||
|
description.setText(gpxItem.description);
|
||||||
|
description.setVisibility(View.VISIBLE);
|
||||||
|
} else {
|
||||||
|
description.setVisibility(View.GONE);
|
||||||
|
}
|
||||||
|
icon.setImageDrawable(app.getIconsCache().getThemedIcon(R.drawable.ic_action_marker_dark));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
final CheckBox ch = (CheckBox) row.findViewById(R.id.toggle_item);
|
final CheckBox ch = (CheckBox) row.findViewById(R.id.toggle_item);
|
||||||
if (selectionMode && gpxItem != null) {
|
if (selectionMode && gpxItem != null) {
|
||||||
ch.setVisibility(View.VISIBLE);
|
ch.setVisibility(View.VISIBLE);
|
||||||
ch.setChecked(selectedItems.get(gpxItem.group.getType()) != null && selectedItems.get(gpxItem.group.getType()).contains(gpxItem));
|
ch.setChecked(selectedItems.get(group.getType()) != null && selectedItems.get(group.getType()).contains(gpxItem));
|
||||||
row.findViewById(R.id.icon).setVisibility(View.GONE);
|
row.findViewById(R.id.icon).setVisibility(View.GONE);
|
||||||
options.setVisibility(View.GONE);
|
options.setVisibility(View.GONE);
|
||||||
ch.setOnClickListener(new View.OnClickListener() {
|
ch.setOnClickListener(new View.OnClickListener() {
|
||||||
|
@ -922,16 +1089,16 @@ public class TrackPointFragment extends OsmandExpandableListFragment implements
|
||||||
@Override
|
@Override
|
||||||
public void onClick(View v) {
|
public void onClick(View v) {
|
||||||
if (ch.isChecked()) {
|
if (ch.isChecked()) {
|
||||||
Set<GpxDisplayItem> set = selectedItems.get(gpxItem.group.getType());
|
Set<GpxDisplayItem> set = selectedItems.get(group.getType());
|
||||||
if (set != null) {
|
if (set != null) {
|
||||||
set.add(gpxItem);
|
set.add(gpxItem);
|
||||||
} else {
|
} else {
|
||||||
set = new LinkedHashSet<>();
|
set = new LinkedHashSet<>();
|
||||||
set.add(gpxItem);
|
set.add(gpxItem);
|
||||||
selectedItems.put(gpxItem.group.getType(), set);
|
selectedItems.put(group.getType(), set);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
Set<GpxDisplayItem> set = selectedItems.get(gpxItem.group.getType());
|
Set<GpxDisplayItem> set = selectedItems.get(group.getType());
|
||||||
if (set != null) {
|
if (set != null) {
|
||||||
set.remove(gpxItem);
|
set.remove(gpxItem);
|
||||||
}
|
}
|
||||||
|
@ -979,6 +1146,8 @@ public class TrackPointFragment extends OsmandExpandableListFragment implements
|
||||||
for (GpxDisplayItem i : g.getModifiableList()) {
|
for (GpxDisplayItem i : g.getModifiableList()) {
|
||||||
if (i.name.toLowerCase().contains(cs)) {
|
if (i.name.toLowerCase().contains(cs)) {
|
||||||
filter.add(i);
|
filter.add(i);
|
||||||
|
} else if (i.locationStart != null && cs.equals(i.locationStart.category)) {
|
||||||
|
filter.add(i.locationStart.category);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -100,7 +100,7 @@ public class WikivoyageArticleNavigationFragment extends MenuBottomSheetDialogFr
|
||||||
public boolean onChildClick(ExpandableListView parent, View v,
|
public boolean onChildClick(ExpandableListView parent, View v,
|
||||||
int groupPosition, int childPosition, long id) {
|
int groupPosition, int childPosition, long id) {
|
||||||
WikivoyageSearchResult articleItem = listAdapter.getArticleItem(groupPosition, childPosition);
|
WikivoyageSearchResult articleItem = listAdapter.getArticleItem(groupPosition, childPosition);
|
||||||
sendResults(articleItem.getCityId());
|
sendResults(articleItem.getTripId());
|
||||||
dismiss();
|
dismiss();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -109,10 +109,10 @@ public class WikivoyageArticleNavigationFragment extends MenuBottomSheetDialogFr
|
||||||
@Override
|
@Override
|
||||||
public boolean onGroupClick(ExpandableListView parent, View v, int groupPosition, long id) {
|
public boolean onGroupClick(ExpandableListView parent, View v, int groupPosition, long id) {
|
||||||
WikivoyageSearchResult articleItem = (WikivoyageSearchResult) listAdapter.getGroup(groupPosition);
|
WikivoyageSearchResult articleItem = (WikivoyageSearchResult) listAdapter.getGroup(groupPosition);
|
||||||
if (articleItem.getCityId() == UNDEFINED) {
|
if (articleItem.getTripId() == UNDEFINED) {
|
||||||
Toast.makeText(getContext(), R.string.wiki_article_not_found, Toast.LENGTH_LONG).show();
|
Toast.makeText(getContext(), R.string.wiki_article_not_found, Toast.LENGTH_LONG).show();
|
||||||
} else {
|
} else {
|
||||||
sendResults(articleItem.getCityId());
|
sendResults(articleItem.getTripId());
|
||||||
dismiss();
|
dismiss();
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
|
@ -235,7 +235,7 @@ public class WikivoyageArticleNavigationFragment extends MenuBottomSheetDialogFr
|
||||||
boolean isLastChild, View convertView, ViewGroup parent) {
|
boolean isLastChild, View convertView, ViewGroup parent) {
|
||||||
WikivoyageSearchResult articleItem = getArticleItem(groupPosition, childPosition);
|
WikivoyageSearchResult articleItem = getArticleItem(groupPosition, childPosition);
|
||||||
String childTitle = articleItem.getArticleTitles().get(0);
|
String childTitle = articleItem.getArticleTitles().get(0);
|
||||||
boolean selected = cityId == articleItem.getCityId() || parentsList.contains(childTitle);
|
boolean selected = cityId == articleItem.getTripId() || parentsList.contains(childTitle);
|
||||||
|
|
||||||
if (convertView == null) {
|
if (convertView == null) {
|
||||||
convertView = LayoutInflater.from(context)
|
convertView = LayoutInflater.from(context)
|
||||||
|
|
|
@ -24,7 +24,7 @@ public class TravelArticle {
|
||||||
double lon;
|
double lon;
|
||||||
String imageTitle;
|
String imageTitle;
|
||||||
GPXFile gpxFile;
|
GPXFile gpxFile;
|
||||||
long cityId;
|
long tripId;
|
||||||
long originalId;
|
long originalId;
|
||||||
String lang;
|
String lang;
|
||||||
String contentsJson;
|
String contentsJson;
|
||||||
|
@ -62,8 +62,8 @@ public class TravelArticle {
|
||||||
return gpxFile;
|
return gpxFile;
|
||||||
}
|
}
|
||||||
|
|
||||||
public long getCityId() {
|
public long getTripId() {
|
||||||
return cityId;
|
return tripId;
|
||||||
}
|
}
|
||||||
|
|
||||||
public long getOriginalId() {
|
public long getOriginalId() {
|
||||||
|
|
|
@ -3,7 +3,6 @@ package net.osmand.plus.wikivoyage.data;
|
||||||
import android.support.annotation.NonNull;
|
import android.support.annotation.NonNull;
|
||||||
import android.support.annotation.Nullable;
|
import android.support.annotation.Nullable;
|
||||||
import android.text.TextUtils;
|
import android.text.TextUtils;
|
||||||
|
|
||||||
import net.osmand.Collator;
|
import net.osmand.Collator;
|
||||||
import net.osmand.CollatorStringMatcher;
|
import net.osmand.CollatorStringMatcher;
|
||||||
import net.osmand.CollatorStringMatcher.StringMatcherMode;
|
import net.osmand.CollatorStringMatcher.StringMatcherMode;
|
||||||
|
@ -33,9 +32,11 @@ import java.util.Collections;
|
||||||
import java.util.Comparator;
|
import java.util.Comparator;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
|
import java.util.Iterator;
|
||||||
import java.util.LinkedHashMap;
|
import java.util.LinkedHashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import java.util.Random;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
import gnu.trove.map.hash.TLongObjectHashMap;
|
import gnu.trove.map.hash.TLongObjectHashMap;
|
||||||
|
@ -44,10 +45,11 @@ public class TravelDbHelper {
|
||||||
|
|
||||||
private static final Log LOG = PlatformUtil.getLog(TravelDbHelper.class);
|
private static final Log LOG = PlatformUtil.getLog(TravelDbHelper.class);
|
||||||
|
|
||||||
private static final String ARTICLES_TABLE_NAME = "wikivoyage_articles";
|
private static final String ARTICLES_TABLE_NAME = "travel_articles";
|
||||||
private static final String POPULAR_TABLE_NAME = "popular_articles";
|
private static final String POPULAR_TABLE_NAME = "popular_articles";
|
||||||
private static final String ARTICLES_COL_ID = "article_id";
|
private static final String ARTICLES_COL_ID = "article_id";
|
||||||
private static final String ARTICLES_POP_INDEX = "popularity_index";
|
private static final String ARTICLES_POP_INDEX = "popularity_index";
|
||||||
|
private static final String ARTICLES_POP_ORDER = "order_index";
|
||||||
private static final String ARTICLES_COL_TITLE = "title";
|
private static final String ARTICLES_COL_TITLE = "title";
|
||||||
private static final String ARTICLES_COL_CONTENT = "content_gz";
|
private static final String ARTICLES_COL_CONTENT = "content_gz";
|
||||||
private static final String ARTICLES_COL_IS_PART_OF = "is_part_of";
|
private static final String ARTICLES_COL_IS_PART_OF = "is_part_of";
|
||||||
|
@ -55,7 +57,7 @@ public class TravelDbHelper {
|
||||||
private static final String ARTICLES_COL_LON = "lon";
|
private static final String ARTICLES_COL_LON = "lon";
|
||||||
private static final String ARTICLES_COL_IMAGE_TITLE = "image_title";
|
private static final String ARTICLES_COL_IMAGE_TITLE = "image_title";
|
||||||
private static final String ARTICLES_COL_GPX_GZ = "gpx_gz";
|
private static final String ARTICLES_COL_GPX_GZ = "gpx_gz";
|
||||||
private static final String ARTICLES_COL_CITY_ID = "city_id";
|
private static final String ARTICLES_COL_TRIP_ID = "trip_id";
|
||||||
private static final String ARTICLES_COL_ORIGINAL_ID = "original_id";
|
private static final String ARTICLES_COL_ORIGINAL_ID = "original_id";
|
||||||
private static final String ARTICLES_COL_LANG = "lang";
|
private static final String ARTICLES_COL_LANG = "lang";
|
||||||
private static final String ARTICLES_COL_CONTENTS_JSON = "contents_json";
|
private static final String ARTICLES_COL_CONTENTS_JSON = "contents_json";
|
||||||
|
@ -70,7 +72,7 @@ public class TravelDbHelper {
|
||||||
ARTICLES_COL_LON + ", " +
|
ARTICLES_COL_LON + ", " +
|
||||||
ARTICLES_COL_IMAGE_TITLE + ", " +
|
ARTICLES_COL_IMAGE_TITLE + ", " +
|
||||||
ARTICLES_COL_GPX_GZ + ", " +
|
ARTICLES_COL_GPX_GZ + ", " +
|
||||||
ARTICLES_COL_CITY_ID + ", " +
|
ARTICLES_COL_TRIP_ID + ", " +
|
||||||
ARTICLES_COL_ORIGINAL_ID + ", " +
|
ARTICLES_COL_ORIGINAL_ID + ", " +
|
||||||
ARTICLES_COL_LANG + ", " +
|
ARTICLES_COL_LANG + ", " +
|
||||||
ARTICLES_COL_CONTENTS_JSON + ", " +
|
ARTICLES_COL_CONTENTS_JSON + ", " +
|
||||||
|
@ -81,14 +83,15 @@ public class TravelDbHelper {
|
||||||
ARTICLES_COL_TITLE + ", " +
|
ARTICLES_COL_TITLE + ", " +
|
||||||
ARTICLES_COL_LAT + ", " +
|
ARTICLES_COL_LAT + ", " +
|
||||||
ARTICLES_COL_LON + ", " +
|
ARTICLES_COL_LON + ", " +
|
||||||
ARTICLES_COL_CITY_ID + ", " +
|
ARTICLES_COL_TRIP_ID + ", " +
|
||||||
ARTICLES_COL_LANG + ", " +
|
ARTICLES_COL_LANG + ", " +
|
||||||
|
ARTICLES_POP_ORDER + ", " +
|
||||||
ARTICLES_POP_INDEX +
|
ARTICLES_POP_INDEX +
|
||||||
" FROM " + POPULAR_TABLE_NAME;
|
" FROM " + POPULAR_TABLE_NAME;
|
||||||
|
|
||||||
private static final String SEARCH_TABLE_NAME = "wikivoyage_search";
|
private static final String SEARCH_TABLE_NAME = "travel_search";
|
||||||
private static final String SEARCH_COL_SEARCH_TERM = "search_term";
|
private static final String SEARCH_COL_SEARCH_TERM = "search_term";
|
||||||
private static final String SEARCH_COL_CITY_ID = "city_id";
|
private static final String SEARCH_COL_trip_id = "trip_id";
|
||||||
private static final String SEARCH_COL_ARTICLE_TITLE = "article_title";
|
private static final String SEARCH_COL_ARTICLE_TITLE = "article_title";
|
||||||
private static final String SEARCH_COL_LANG = "lang";
|
private static final String SEARCH_COL_LANG = "lang";
|
||||||
|
|
||||||
|
@ -194,9 +197,9 @@ public class TravelDbHelper {
|
||||||
String[] queries = searchQuery.replace('_', ' ').replace('/', ' ').split(" ");
|
String[] queries = searchQuery.replace('_', ' ').replace('/', ' ').split(" ");
|
||||||
if (conn != null) {
|
if (conn != null) {
|
||||||
List<String> params = new ArrayList<>();
|
List<String> params = new ArrayList<>();
|
||||||
String query = "SELECT distinct wa.city_id, wa.title, wa.lang, wa.is_part_of, wa.image_title "
|
String query = "SELECT distinct wa.trip_id, wa.title, wa.lang, wa.is_part_of, wa.image_title "
|
||||||
+ "FROM wikivoyage_articles wa WHERE wa.city_id in "
|
+ "FROM travel_articles wa WHERE wa.trip_id in "
|
||||||
+ " (SELECT city_id FROM wikivoyage_search WHERE search_term LIKE";
|
+ " (SELECT trip_id FROM travel_search WHERE search_term LIKE";
|
||||||
for (String q : queries) {
|
for (String q : queries) {
|
||||||
if (q.trim().length() > 0) {
|
if (q.trim().length() > 0) {
|
||||||
if (params.size() > 5) {
|
if (params.size() > 5) {
|
||||||
|
@ -204,7 +207,7 @@ public class TravelDbHelper {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (params.size() > 0) {
|
if (params.size() > 0) {
|
||||||
query += " AND city_id IN (SELECT city_id FROM wikivoyage_search WHERE search_term LIKE ?) ";
|
query += " AND trip_id IN (SELECT trip_id FROM travel_search WHERE search_term LIKE ?) ";
|
||||||
} else {
|
} else {
|
||||||
query += "?";
|
query += "?";
|
||||||
}
|
}
|
||||||
|
@ -217,7 +220,7 @@ public class TravelDbHelper {
|
||||||
if (cursor.moveToFirst()) {
|
if (cursor.moveToFirst()) {
|
||||||
do {
|
do {
|
||||||
WikivoyageSearchResult rs = new WikivoyageSearchResult();
|
WikivoyageSearchResult rs = new WikivoyageSearchResult();
|
||||||
rs.cityId = cursor.getLong(0);
|
rs.tripId = cursor.getLong(0);
|
||||||
rs.articleTitles.add(cursor.getString(1));
|
rs.articleTitles.add(cursor.getString(1));
|
||||||
rs.langs.add(cursor.getString(2));
|
rs.langs.add(cursor.getString(2));
|
||||||
rs.isPartOf.add(cursor.getString(3));
|
rs.isPartOf.add(cursor.getString(3));
|
||||||
|
@ -242,45 +245,107 @@ public class TravelDbHelper {
|
||||||
|
|
||||||
@NonNull
|
@NonNull
|
||||||
public List<TravelArticle> loadPopularArticles() {
|
public List<TravelArticle> loadPopularArticles() {
|
||||||
List<TravelArticle> res = new ArrayList<>();
|
|
||||||
String language = application.getLanguage();
|
String language = application.getLanguage();
|
||||||
List<PopularArticle> popReadArticles = new ArrayList<>();
|
|
||||||
SQLiteConnection conn = openConnection();
|
SQLiteConnection conn = openConnection();
|
||||||
if (conn == null) {
|
if (conn == null) {
|
||||||
return res;
|
popularArticles = new ArrayList<TravelArticle>();
|
||||||
|
return popularArticles;
|
||||||
}
|
}
|
||||||
String LANG_WHERE = " WHERE " + ARTICLES_COL_LANG + " = '" + language + "'";
|
String LANG_WHERE = " WHERE " + ARTICLES_COL_LANG + " = '" + language + "'";
|
||||||
SQLiteCursor cursor = conn.rawQuery(POP_ARTICLES_TABLE_SELECT + LANG_WHERE, null);
|
SQLiteCursor cursor = conn.rawQuery(POP_ARTICLES_TABLE_SELECT + LANG_WHERE, null);
|
||||||
|
// read popular articles
|
||||||
|
List<PopularArticle> popReadArticlesOrder = new ArrayList<>();
|
||||||
|
List<PopularArticle> popReadArticlesLocation = new ArrayList<>();
|
||||||
|
List<PopularArticle> popReadArticles = new ArrayList<>();
|
||||||
if (cursor.moveToFirst()) {
|
if (cursor.moveToFirst()) {
|
||||||
do {
|
do {
|
||||||
PopularArticle travelArticle = PopularArticle.readArticle(cursor);
|
PopularArticle travelArticle = PopularArticle.readArticle(cursor);
|
||||||
if (language.equals(travelArticle.lang)) {
|
if (language.equals(travelArticle.lang)) {
|
||||||
|
if(travelArticle.order != -1) {
|
||||||
|
popReadArticlesOrder.add(travelArticle);
|
||||||
|
} if(travelArticle.isLocationSpecified()) {
|
||||||
|
popReadArticlesLocation.add(travelArticle);
|
||||||
|
} else {
|
||||||
popReadArticles.add(travelArticle);
|
popReadArticles.add(travelArticle);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
} while (cursor.moveToNext());
|
} while (cursor.moveToNext());
|
||||||
}
|
}
|
||||||
cursor.close();
|
cursor.close();
|
||||||
sortPopArticlesByDistance(popReadArticles);
|
// shuffle, sort & mix
|
||||||
|
Random rm = new Random();
|
||||||
|
Collections.shuffle(popReadArticles, rm);
|
||||||
|
Collections.sort(popReadArticlesOrder, new Comparator<PopularArticle>() {
|
||||||
|
@Override
|
||||||
|
public int compare(PopularArticle article1, PopularArticle article2) {
|
||||||
|
return Integer.compare(article1.order, article2.order);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
sortPopArticlesByDistance(popReadArticlesLocation);
|
||||||
|
List<Long> resArticleOrder = new ArrayList<Long>();
|
||||||
|
Iterator<PopularArticle> orderIterator = popReadArticlesOrder.iterator();
|
||||||
|
Iterator<PopularArticle> locIterator = popReadArticlesLocation.iterator();
|
||||||
|
Iterator<PopularArticle> otherIterator = popReadArticles.iterator();
|
||||||
|
int initialLocationArticles = 2;
|
||||||
|
for (int i = 0; i < POPULAR_LIMIT; i++) {
|
||||||
|
PopularArticle pa = null;
|
||||||
|
if(orderIterator.hasNext()) {
|
||||||
|
pa = orderIterator.next();
|
||||||
|
} else if(initialLocationArticles-- > 0 && locIterator.hasNext()) {
|
||||||
|
// first 2 by location
|
||||||
|
pa = locIterator.next();
|
||||||
|
} else if((!otherIterator.hasNext() || (rm.nextDouble() > 0.4)) && locIterator.hasNext()) {
|
||||||
|
// 60% case we select location iterator
|
||||||
|
pa = locIterator.next();
|
||||||
|
} else if(otherIterator.hasNext()){
|
||||||
|
pa = otherIterator.next();
|
||||||
|
}
|
||||||
|
if (pa == null) {
|
||||||
|
break;
|
||||||
|
} else {
|
||||||
|
resArticleOrder.add(pa.tripId);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Map<Long, TravelArticle> ts = readTravelArticles(conn, LANG_WHERE, resArticleOrder);
|
||||||
|
popularArticles = sortArticlesToInitialOrder(resArticleOrder, ts);
|
||||||
|
return popularArticles;
|
||||||
|
}
|
||||||
|
|
||||||
|
private Map<Long, TravelArticle> readTravelArticles(SQLiteConnection conn, String whereCondition,
|
||||||
|
List<Long> articleIds) {
|
||||||
|
SQLiteCursor cursor;
|
||||||
StringBuilder bld = new StringBuilder();
|
StringBuilder bld = new StringBuilder();
|
||||||
bld.append(ARTICLES_TABLE_SELECT).append(LANG_WHERE)
|
bld.append(ARTICLES_TABLE_SELECT).append(whereCondition)
|
||||||
.append(" and ").append(ARTICLES_COL_CITY_ID).append(" IN (");
|
.append(" and ").append(ARTICLES_COL_TRIP_ID).append(" IN (");
|
||||||
for (int i = 0; i < popReadArticles.size() && i < POPULAR_LIMIT; i++) {
|
for (int i = 0; i < articleIds.size(); i++) {
|
||||||
if (i > 0) {
|
if (i > 0) {
|
||||||
bld.append(", ");
|
bld.append(", ");
|
||||||
}
|
}
|
||||||
bld.append(popReadArticles.get(i).cityId);
|
bld.append(articleIds.get(i));
|
||||||
}
|
}
|
||||||
bld.append(")");
|
bld.append(")");
|
||||||
cursor = conn.rawQuery(bld.toString(), null);
|
cursor = conn.rawQuery(bld.toString(), null);
|
||||||
|
Map<Long, TravelArticle> ts = new HashMap<Long, TravelArticle>();
|
||||||
if (cursor.moveToFirst()) {
|
if (cursor.moveToFirst()) {
|
||||||
do {
|
do {
|
||||||
TravelArticle travelArticle = readArticle(cursor);
|
TravelArticle travelArticle = readArticle(cursor);
|
||||||
res.add(travelArticle);
|
ts.put(travelArticle.tripId, travelArticle);
|
||||||
} while (cursor.moveToNext());
|
} while (cursor.moveToNext());
|
||||||
}
|
}
|
||||||
cursor.close();
|
cursor.close();
|
||||||
sortArticlesByDistance(res);
|
return ts;
|
||||||
popularArticles = res;
|
}
|
||||||
|
|
||||||
|
private List<TravelArticle> sortArticlesToInitialOrder(List<Long> resArticleOrder, Map<Long, TravelArticle> ts) {
|
||||||
|
List<TravelArticle> res = new ArrayList<>();
|
||||||
|
for (int i = 0; i < resArticleOrder.size(); i++) {
|
||||||
|
TravelArticle ta = ts.get(resArticleOrder.get(i));
|
||||||
|
if(ta != null) {
|
||||||
|
res.add(ta);
|
||||||
|
}
|
||||||
|
}
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -304,23 +369,16 @@ public class TravelDbHelper {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
private void sortArticlesByDistance(List<TravelArticle> list) {
|
|
||||||
Location location = application.getLocationProvider().getLastKnownLocation();
|
|
||||||
if (location != null) {
|
|
||||||
final LatLon loc = new LatLon(location.getLatitude(), location.getLongitude());
|
|
||||||
Collections.sort(list, new Comparator<TravelArticle>() {
|
|
||||||
@Override
|
|
||||||
public int compare(TravelArticle article1, TravelArticle article2) {
|
|
||||||
return Double.compare(MapUtils.getDistance(loc, article1.getLat(), article1.getLon()), MapUtils.getDistance(loc, article2.getLat(), article2.getLon()));
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void sortPopArticlesByDistance(List<PopularArticle> list) {
|
private void sortPopArticlesByDistance(List<PopularArticle> list) {
|
||||||
Location location = application.getLocationProvider().getLastKnownLocation();
|
Location location = application.getLocationProvider().getLastKnownLocation();
|
||||||
if (location != null) {
|
final LatLon loc ;
|
||||||
final LatLon loc = new LatLon(location.getLatitude(), location.getLongitude());
|
if(location == null) {
|
||||||
|
loc = application.getSettings().getLastKnownMapLocation();
|
||||||
|
} else {
|
||||||
|
loc = new LatLon(location.getLatitude(), location.getLongitude());
|
||||||
|
}
|
||||||
|
if (loc != null) {
|
||||||
Collections.sort(list, new Comparator<PopularArticle>() {
|
Collections.sort(list, new Comparator<PopularArticle>() {
|
||||||
@Override
|
@Override
|
||||||
public int compare(PopularArticle article1, PopularArticle article2) {
|
public int compare(PopularArticle article1, PopularArticle article2) {
|
||||||
|
@ -331,11 +389,12 @@ public class TravelDbHelper {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private Collection<WikivoyageSearchResult> groupSearchResultsByCityId(List<WikivoyageSearchResult> res) {
|
private Collection<WikivoyageSearchResult> groupSearchResultsByCityId(List<WikivoyageSearchResult> res) {
|
||||||
String baseLng = application.getLanguage();
|
String baseLng = application.getLanguage();
|
||||||
TLongObjectHashMap<WikivoyageSearchResult> wikivoyage = new TLongObjectHashMap<>();
|
TLongObjectHashMap<WikivoyageSearchResult> wikivoyage = new TLongObjectHashMap<>();
|
||||||
for (WikivoyageSearchResult rs : res) {
|
for (WikivoyageSearchResult rs : res) {
|
||||||
WikivoyageSearchResult prev = wikivoyage.get(rs.cityId);
|
WikivoyageSearchResult prev = wikivoyage.get(rs.tripId);
|
||||||
if (prev != null) {
|
if (prev != null) {
|
||||||
int insInd = prev.langs.size();
|
int insInd = prev.langs.size();
|
||||||
if (rs.langs.get(0).equals(baseLng)) {
|
if (rs.langs.get(0).equals(baseLng)) {
|
||||||
|
@ -351,7 +410,7 @@ public class TravelDbHelper {
|
||||||
prev.langs.add(insInd, rs.langs.get(0));
|
prev.langs.add(insInd, rs.langs.get(0));
|
||||||
prev.isPartOf.add(insInd, rs.isPartOf.get(0));
|
prev.isPartOf.add(insInd, rs.isPartOf.get(0));
|
||||||
} else {
|
} else {
|
||||||
wikivoyage.put(rs.cityId, rs);
|
wikivoyage.put(rs.tripId, rs);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return wikivoyage.valueCollection();
|
return wikivoyage.valueCollection();
|
||||||
|
@ -382,20 +441,20 @@ public class TravelDbHelper {
|
||||||
Map<String, WikivoyageSearchResult> headerObjs = new HashMap<>();
|
Map<String, WikivoyageSearchResult> headerObjs = new HashMap<>();
|
||||||
if (conn != null) {
|
if (conn != null) {
|
||||||
List<String> params = new ArrayList<>();
|
List<String> params = new ArrayList<>();
|
||||||
StringBuilder query = new StringBuilder("SELECT a.city_id, a.title, a.lang, a.is_part_of " +
|
StringBuilder query = new StringBuilder("SELECT a.trip_id, a.title, a.lang, a.is_part_of " +
|
||||||
"FROM wikivoyage_articles a WHERE is_part_of = ? and lang = ? ");
|
"FROM travel_articles a WHERE is_part_of = ? and lang = ? ");
|
||||||
params.add(title);
|
params.add(title);
|
||||||
params.add(lang);
|
params.add(lang);
|
||||||
if (parts != null && parts.length > 0) {
|
if (parts != null && parts.length > 0) {
|
||||||
headers = new HashSet<>(Arrays.asList(parts));
|
headers = new HashSet<>(Arrays.asList(parts));
|
||||||
headers.add(title);
|
headers.add(title);
|
||||||
query.append("UNION SELECT a.city_id, a.title, a.lang, a.is_part_of " +
|
query.append("UNION SELECT a.trip_id, a.title, a.lang, a.is_part_of " +
|
||||||
"FROM wikivoyage_articles a WHERE title = ? and lang = ? ");
|
"FROM travel_articles a WHERE title = ? and lang = ? ");
|
||||||
params.add(parts[0]);
|
params.add(parts[0]);
|
||||||
params.add(lang);
|
params.add(lang);
|
||||||
for (String part : parts) {
|
for (String part : parts) {
|
||||||
query.append("UNION SELECT a.city_id, a.title, a.lang, a.is_part_of " +
|
query.append("UNION SELECT a.trip_id, a.title, a.lang, a.is_part_of " +
|
||||||
"FROM wikivoyage_articles a WHERE is_part_of = ? and lang = ? ");
|
"FROM travel_articles a WHERE is_part_of = ? and lang = ? ");
|
||||||
params.add(part);
|
params.add(part);
|
||||||
params.add(lang);
|
params.add(lang);
|
||||||
}
|
}
|
||||||
|
@ -404,7 +463,7 @@ public class TravelDbHelper {
|
||||||
if (cursor.moveToFirst()) {
|
if (cursor.moveToFirst()) {
|
||||||
do {
|
do {
|
||||||
WikivoyageSearchResult rs = new WikivoyageSearchResult();
|
WikivoyageSearchResult rs = new WikivoyageSearchResult();
|
||||||
rs.cityId = cursor.getLong(0);
|
rs.tripId = cursor.getLong(0);
|
||||||
rs.articleTitles.add(cursor.getString(1));
|
rs.articleTitles.add(cursor.getString(1));
|
||||||
rs.langs.add(cursor.getString(2));
|
rs.langs.add(cursor.getString(2));
|
||||||
rs.isPartOf.add(cursor.getString(3));
|
rs.isPartOf.add(cursor.getString(3));
|
||||||
|
@ -436,7 +495,7 @@ public class TravelDbHelper {
|
||||||
});
|
});
|
||||||
WikivoyageSearchResult emptyResult = new WikivoyageSearchResult();
|
WikivoyageSearchResult emptyResult = new WikivoyageSearchResult();
|
||||||
emptyResult.articleTitles.add(header);
|
emptyResult.articleTitles.add(header);
|
||||||
emptyResult.cityId = -1;
|
emptyResult.tripId = -1;
|
||||||
searchResult = searchResult != null ? searchResult : emptyResult;
|
searchResult = searchResult != null ? searchResult : emptyResult;
|
||||||
res.put(searchResult, results);
|
res.put(searchResult, results);
|
||||||
}
|
}
|
||||||
|
@ -450,7 +509,7 @@ public class TravelDbHelper {
|
||||||
TravelArticle res = null;
|
TravelArticle res = null;
|
||||||
SQLiteConnection conn = openConnection();
|
SQLiteConnection conn = openConnection();
|
||||||
if (conn != null) {
|
if (conn != null) {
|
||||||
SQLiteCursor cursor = conn.rawQuery(ARTICLES_TABLE_SELECT + " WHERE " + ARTICLES_COL_CITY_ID + " = ? AND "
|
SQLiteCursor cursor = conn.rawQuery(ARTICLES_TABLE_SELECT + " WHERE " + ARTICLES_COL_TRIP_ID + " = ? AND "
|
||||||
+ ARTICLES_COL_LANG + " = ?", new String[]{String.valueOf(cityId), lang});
|
+ ARTICLES_COL_LANG + " = ?", new String[]{String.valueOf(cityId), lang});
|
||||||
if (cursor.moveToFirst()) {
|
if (cursor.moveToFirst()) {
|
||||||
res = readArticle(cursor);
|
res = readArticle(cursor);
|
||||||
|
@ -464,7 +523,7 @@ public class TravelDbHelper {
|
||||||
long res = 0;
|
long res = 0;
|
||||||
SQLiteConnection conn = openConnection();
|
SQLiteConnection conn = openConnection();
|
||||||
if (conn != null) {
|
if (conn != null) {
|
||||||
SQLiteCursor cursor = conn.rawQuery("SELECT " + ARTICLES_COL_CITY_ID + " FROM "
|
SQLiteCursor cursor = conn.rawQuery("SELECT " + ARTICLES_COL_TRIP_ID + " FROM "
|
||||||
+ ARTICLES_TABLE_NAME + " WHERE " + ARTICLES_COL_TITLE + " = ? AND "
|
+ ARTICLES_TABLE_NAME + " WHERE " + ARTICLES_COL_TITLE + " = ? AND "
|
||||||
+ ARTICLES_COL_LANG + " = ?", new String[]{title, lang});
|
+ ARTICLES_COL_LANG + " = ?", new String[]{title, lang});
|
||||||
if (cursor.moveToFirst()) {
|
if (cursor.moveToFirst()) {
|
||||||
|
@ -481,7 +540,7 @@ public class TravelDbHelper {
|
||||||
SQLiteConnection conn = openConnection();
|
SQLiteConnection conn = openConnection();
|
||||||
if (conn != null) {
|
if (conn != null) {
|
||||||
SQLiteCursor cursor = conn.rawQuery("SELECT " + ARTICLES_COL_LANG + " FROM " + ARTICLES_TABLE_NAME
|
SQLiteCursor cursor = conn.rawQuery("SELECT " + ARTICLES_COL_LANG + " FROM " + ARTICLES_TABLE_NAME
|
||||||
+ " WHERE " + ARTICLES_COL_CITY_ID + " = ?", new String[]{String.valueOf(cityId)});
|
+ " WHERE " + ARTICLES_COL_TRIP_ID + " = ?", new String[]{String.valueOf(cityId)});
|
||||||
if (cursor.moveToFirst()) {
|
if (cursor.moveToFirst()) {
|
||||||
String baseLang = application.getLanguage();
|
String baseLang = application.getLanguage();
|
||||||
do {
|
do {
|
||||||
|
@ -519,7 +578,7 @@ public class TravelDbHelper {
|
||||||
res.lat = cursor.isNull(4) ? Double.NaN : cursor.getDouble(4);
|
res.lat = cursor.isNull(4) ? Double.NaN : cursor.getDouble(4);
|
||||||
res.lon = cursor.isNull(5) ? Double.NaN : cursor.getDouble(5);
|
res.lon = cursor.isNull(5) ? Double.NaN : cursor.getDouble(5);
|
||||||
res.imageTitle = cursor.getString(6);
|
res.imageTitle = cursor.getString(6);
|
||||||
res.cityId = cursor.getLong(8);
|
res.tripId = cursor.getLong(8);
|
||||||
res.originalId = cursor.isNull(9) ? 0 : cursor.getLong(9);
|
res.originalId = cursor.isNull(9) ? 0 : cursor.getLong(9);
|
||||||
res.lang = cursor.getString(10);
|
res.lang = cursor.getString(10);
|
||||||
res.contentsJson = cursor.getString(11);
|
res.contentsJson = cursor.getString(11);
|
||||||
|
@ -556,10 +615,11 @@ public class TravelDbHelper {
|
||||||
}
|
}
|
||||||
|
|
||||||
private static class PopularArticle {
|
private static class PopularArticle {
|
||||||
long cityId;
|
long tripId;
|
||||||
String title;
|
String title;
|
||||||
String lang;
|
String lang;
|
||||||
int popIndex;
|
int popIndex;
|
||||||
|
int order;
|
||||||
double lat;
|
double lat;
|
||||||
double lon;
|
double lon;
|
||||||
|
|
||||||
|
@ -572,9 +632,10 @@ public class TravelDbHelper {
|
||||||
res.title = cursor.getString(0);
|
res.title = cursor.getString(0);
|
||||||
res.lat = cursor.isNull(1) ? Double.NaN : cursor.getDouble(1);
|
res.lat = cursor.isNull(1) ? Double.NaN : cursor.getDouble(1);
|
||||||
res.lon = cursor.isNull(2) ? Double.NaN : cursor.getDouble(2);
|
res.lon = cursor.isNull(2) ? Double.NaN : cursor.getDouble(2);
|
||||||
res.cityId = cursor.getLong(3);
|
res.tripId = cursor.getLong(3);
|
||||||
res.lang = cursor.getString(4);
|
res.lang = cursor.getString(4);
|
||||||
res.popIndex = cursor.isNull(5) ? 0 : cursor.getInt(5);
|
res.order = cursor.isNull(5) ? -1 : cursor.getInt(5);
|
||||||
|
res.popIndex = cursor.isNull(6) ? 0 : cursor.getInt(6);
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -62,7 +62,7 @@ public class TravelLocalDataHelper {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void addToHistory(@NonNull TravelArticle article) {
|
public void addToHistory(@NonNull TravelArticle article) {
|
||||||
addToHistory(article.getCityId(), article.getTitle(), article.getLang(), article.getIsPartOf());
|
addToHistory(article.getTripId(), article.getTitle(), article.getLang(), article.getIsPartOf());
|
||||||
}
|
}
|
||||||
|
|
||||||
public void addToHistory(long cityId, String title, String lang, String isPartOf) {
|
public void addToHistory(long cityId, String title, String lang, String isPartOf) {
|
||||||
|
@ -98,7 +98,7 @@ public class TravelLocalDataHelper {
|
||||||
public void addArticleToSaved(@NonNull TravelArticle article) {
|
public void addArticleToSaved(@NonNull TravelArticle article) {
|
||||||
if (!isArticleSaved(article)) {
|
if (!isArticleSaved(article)) {
|
||||||
TravelArticle saved = new TravelArticle();
|
TravelArticle saved = new TravelArticle();
|
||||||
saved.cityId = article.cityId;
|
saved.tripId = article.tripId;
|
||||||
saved.title = article.title;
|
saved.title = article.title;
|
||||||
saved.lang = article.lang;
|
saved.lang = article.lang;
|
||||||
saved.aggregatedPartOf = article.aggregatedPartOf;
|
saved.aggregatedPartOf = article.aggregatedPartOf;
|
||||||
|
@ -121,7 +121,7 @@ public class TravelLocalDataHelper {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void removeArticleFromSaved(@NonNull TravelArticle article) {
|
public void removeArticleFromSaved(@NonNull TravelArticle article) {
|
||||||
TravelArticle savedArticle = getArticle(article.cityId, article.lang);
|
TravelArticle savedArticle = getArticle(article.tripId, article.lang);
|
||||||
if (savedArticle != null) {
|
if (savedArticle != null) {
|
||||||
savedArticles.remove(savedArticle);
|
savedArticles.remove(savedArticle);
|
||||||
dbHelper.removeSavedArticle(savedArticle);
|
dbHelper.removeSavedArticle(savedArticle);
|
||||||
|
@ -130,7 +130,7 @@ public class TravelLocalDataHelper {
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isArticleSaved(@NonNull TravelArticle article) {
|
public boolean isArticleSaved(@NonNull TravelArticle article) {
|
||||||
return getArticle(article.cityId, article.lang) != null;
|
return getArticle(article.tripId, article.lang) != null;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void notifySavedUpdated() {
|
private void notifySavedUpdated() {
|
||||||
|
@ -142,7 +142,7 @@ public class TravelLocalDataHelper {
|
||||||
@Nullable
|
@Nullable
|
||||||
private TravelArticle getArticle(long cityId, String lang) {
|
private TravelArticle getArticle(long cityId, String lang) {
|
||||||
for (TravelArticle article : savedArticles) {
|
for (TravelArticle article : savedArticles) {
|
||||||
if (article.cityId == cityId && article.lang != null && article.lang.equals(lang)) {
|
if (article.tripId == cityId && article.lang != null && article.lang.equals(lang)) {
|
||||||
return article;
|
return article;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -402,7 +402,7 @@ public class TravelLocalDataHelper {
|
||||||
if (conn != null) {
|
if (conn != null) {
|
||||||
try {
|
try {
|
||||||
conn.execSQL("INSERT INTO " + BOOKMARKS_TABLE_NAME + " VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)",
|
conn.execSQL("INSERT INTO " + BOOKMARKS_TABLE_NAME + " VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)",
|
||||||
new Object[]{article.cityId, article.title, article.lang,
|
new Object[]{article.tripId, article.title, article.lang,
|
||||||
article.aggregatedPartOf, article.imageTitle, article.content,
|
article.aggregatedPartOf, article.imageTitle, article.content,
|
||||||
travelBook, article.lat, article.lon});
|
travelBook, article.lat, article.lon});
|
||||||
} finally {
|
} finally {
|
||||||
|
@ -423,7 +423,7 @@ public class TravelLocalDataHelper {
|
||||||
" WHERE " + BOOKMARKS_COL_CITY_ID + " = ?" +
|
" WHERE " + BOOKMARKS_COL_CITY_ID + " = ?" +
|
||||||
" AND " + BOOKMARKS_COL_LANG + " = ?" +
|
" AND " + BOOKMARKS_COL_LANG + " = ?" +
|
||||||
" AND " + BOOKMARKS_COL_TRAVEL_BOOK + " = ?",
|
" AND " + BOOKMARKS_COL_TRAVEL_BOOK + " = ?",
|
||||||
new Object[]{article.cityId, article.lang, travelBook});
|
new Object[]{article.tripId, article.lang, travelBook});
|
||||||
} finally {
|
} finally {
|
||||||
conn.close();
|
conn.close();
|
||||||
}
|
}
|
||||||
|
@ -454,7 +454,7 @@ public class TravelLocalDataHelper {
|
||||||
private TravelArticle readSavedArticle(SQLiteCursor cursor) {
|
private TravelArticle readSavedArticle(SQLiteCursor cursor) {
|
||||||
TravelArticle res = new TravelArticle();
|
TravelArticle res = new TravelArticle();
|
||||||
|
|
||||||
res.cityId = cursor.getLong(0);
|
res.tripId = cursor.getLong(0);
|
||||||
res.title = cursor.getString(1);
|
res.title = cursor.getString(1);
|
||||||
res.lang = cursor.getString(2);
|
res.lang = cursor.getString(2);
|
||||||
res.aggregatedPartOf = cursor.getString(3);
|
res.aggregatedPartOf = cursor.getString(3);
|
||||||
|
|
|
@ -9,14 +9,14 @@ public class WikivoyageSearchResult {
|
||||||
|
|
||||||
private static final int SHOW_LANGS = 3;
|
private static final int SHOW_LANGS = 3;
|
||||||
|
|
||||||
long cityId;
|
long tripId;
|
||||||
List<String> articleTitles = new ArrayList<>();
|
List<String> articleTitles = new ArrayList<>();
|
||||||
List<String> langs = new ArrayList<>();
|
List<String> langs = new ArrayList<>();
|
||||||
List<String> isPartOf = new ArrayList<>();
|
List<String> isPartOf = new ArrayList<>();
|
||||||
String imageTitle;
|
String imageTitle;
|
||||||
|
|
||||||
public long getCityId() {
|
public long getTripId() {
|
||||||
return cityId;
|
return tripId;
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<String> getArticleTitles() {
|
public List<String> getArticleTitles() {
|
||||||
|
|
|
@ -49,7 +49,7 @@ public class SavedArticlesTabFragment extends BaseOsmAndFragment implements Trav
|
||||||
FragmentActivity activity = getActivity();
|
FragmentActivity activity = getActivity();
|
||||||
if (activity != null) {
|
if (activity != null) {
|
||||||
FragmentManager fm = activity.getSupportFragmentManager();
|
FragmentManager fm = activity.getSupportFragmentManager();
|
||||||
WikivoyageArticleDialogFragment.showInstance(app, fm, article.getCityId(), article.getLang());
|
WikivoyageArticleDialogFragment.showInstance(app, fm, article.getTripId(), article.getLang());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -138,7 +138,7 @@ public class SavedArticlesTabFragment extends BaseOsmAndFragment implements Trav
|
||||||
}
|
}
|
||||||
TravelArticle oldArticle = (TravelArticle) oldItem;
|
TravelArticle oldArticle = (TravelArticle) oldItem;
|
||||||
TravelArticle newArticle = (TravelArticle) newItem;
|
TravelArticle newArticle = (TravelArticle) newItem;
|
||||||
return oldArticle.getCityId() == newArticle.getCityId()
|
return oldArticle.getTripId() == newArticle.getTripId()
|
||||||
&& oldArticle.getLang().equals(newArticle.getLang());
|
&& oldArticle.getLang().equals(newArticle.getLang());
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
|
|
|
@ -72,7 +72,7 @@ public class ArticleTravelCard extends BaseTravelCard {
|
||||||
@Override
|
@Override
|
||||||
public void onClick(View v) {
|
public void onClick(View v) {
|
||||||
if (fragmentManager != null) {
|
if (fragmentManager != null) {
|
||||||
WikivoyageArticleDialogFragment.showInstance(app, fragmentManager, article.getCityId(), article.getLang());
|
WikivoyageArticleDialogFragment.showInstance(app, fragmentManager, article.getTripId(), article.getLang());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
|
@ -112,7 +112,7 @@ public class WikivoyageSearchDialogFragment extends WikiBaseDialogFragment {
|
||||||
if (item instanceof WikivoyageSearchResult) {
|
if (item instanceof WikivoyageSearchResult) {
|
||||||
WikivoyageSearchResult res = (WikivoyageSearchResult) item;
|
WikivoyageSearchResult res = (WikivoyageSearchResult) item;
|
||||||
WikivoyageArticleDialogFragment
|
WikivoyageArticleDialogFragment
|
||||||
.showInstance(fm, res.getCityId(), new ArrayList<>(res.getLangs()));
|
.showInstance(fm, res.getTripId(), new ArrayList<>(res.getLangs()));
|
||||||
} else if (item instanceof WikivoyageSearchHistoryItem) {
|
} else if (item instanceof WikivoyageSearchHistoryItem) {
|
||||||
WikivoyageSearchHistoryItem historyItem = (WikivoyageSearchHistoryItem) item;
|
WikivoyageSearchHistoryItem historyItem = (WikivoyageSearchHistoryItem) item;
|
||||||
WikivoyageArticleDialogFragment
|
WikivoyageArticleDialogFragment
|
||||||
|
|