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

This commit is contained in:
PavelRatushny 2017-08-03 12:49:31 +03:00
commit e22361495d
52 changed files with 791 additions and 102 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

View file

@ -0,0 +1,66 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
android:id="@+id/add_gpx_waypoint_bottom_sheet"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:background="?attr/bottom_menu_view_bg"
android:clickable="true"
android:visibility="gone"
tools:visibility="visible">
<ImageView
android:id="@+id/icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="16dp"
android:src="@drawable/ic_action_photo_dark"/>
<LinearLayout
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:id="@+id/add_gpx_waypoint_bottom_sheet_title"
style="@style/TextAppearance.ContextMenuTitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="16dp"
android:layout_marginRight="16dp"
android:layout_marginTop="16dp"
android:text="@string/add_gpx_waypoint_bottom_sheet_title"/>
<TextView
android:id="@+id/description"
style="@style/TextAppearance.ContextMenuSubtitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="8dp"
android:layout_marginLeft="16dp"
android:layout_marginRight="16dp"
android:layout_marginTop="8dp"
tools:text="Lat: 50.45375 Lon: 30.48693"/>
</LinearLayout>
<android.support.v7.widget.AppCompatButton
android:id="@+id/create_button"
style="@style/Widget.AppCompat.Button.Colored"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:text="@string/shared_string_create"/>
<android.support.v7.widget.AppCompatButton
android:id="@+id/cancel_button"
style="@style/Widget.AppCompat.Button.Borderless.Colored"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="16dp"
android:layout_gravity="center_vertical"
android:text="@string/shared_string_cancel"/>
</LinearLayout>

View file

@ -261,4 +261,11 @@
android:layout_gravity="bottom|left" android:layout_gravity="bottom|left"
tools:visibility="visible"/> tools:visibility="visible"/>
<include
layout="@layout/add_gpx_waypoint_bottom_sheet"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|left"
tools:visibility="visible"/>
</LinearLayout> </LinearLayout>

View file

@ -0,0 +1,68 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
android:id="@+id/add_gpx_waypoint_bottom_sheet"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:background="?attr/bottom_menu_view_bg"
android:clickable="true"
android:visibility="gone"
tools:visibility="visible">
<ImageView
android:id="@+id/icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="16dp"
android:src="@drawable/ic_action_photo_dark"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:id="@+id/add_gpx_waypoint_bottom_sheet_title"
style="@style/TextAppearance.ContextMenuTitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="16dp"
android:layout_marginRight="16dp"
android:layout_marginTop="16dp"
android:text="@string/add_gpx_waypoint_bottom_sheet_title"/>
<TextView
android:id="@+id/description"
style="@style/TextAppearance.ContextMenuSubtitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="8dp"
android:layout_marginLeft="16dp"
android:layout_marginRight="16dp"
android:layout_marginTop="8dp"
tools:text="Lat: 50.45375\nLon: 30.48693"/>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="16dp"
android:layout_marginLeft="12dp"
android:layout_marginRight="12dp">
<Button
android:id="@+id/create_button"
style="@style/DialogActionButton"
android:layout_marginRight="8dp"
android:text="@string/shared_string_create"/>
<Button
android:id="@+id/cancel_button"
style="@style/DialogCancelButton"
android:text="@string/shared_string_cancel"/>
</LinearLayout>
</LinearLayout>
</LinearLayout>

View file

@ -22,7 +22,7 @@
android:paddingBottom="12dp" android:paddingBottom="12dp"
android:paddingTop="12dp"> android:paddingTop="12dp">
<ImageButton <ImageView
android:id="@+id/ruler_icon" android:id="@+id/ruler_icon"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
@ -37,7 +37,7 @@
tools:src="@drawable/ic_action_ruler"/> tools:src="@drawable/ic_action_ruler"/>
<ImageButton <ImageButton
android:id="@+id/up_down_icon" android:id="@+id/up_down_button"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_alignParentEnd="true" android:layout_alignParentEnd="true"
@ -70,9 +70,9 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_centerVertical="true" android:layout_centerVertical="true"
android:layout_toEndOf="@id/measurement_distance_text_view" android:layout_toEndOf="@id/measurement_distance_text_view"
android:layout_toLeftOf="@id/up_down_icon" android:layout_toLeftOf="@id/up_down_button"
android:layout_toRightOf="@id/measurement_distance_text_view" android:layout_toRightOf="@id/measurement_distance_text_view"
android:layout_toStartOf="@id/up_down_icon" android:layout_toStartOf="@id/up_down_button"
android:textColor="?android:textColorSecondary" android:textColor="?android:textColorSecondary"
android:textSize="@dimen/default_list_text_size" android:textSize="@dimen/default_list_text_size"
tools:text="points: 3"/> tools:text="points: 3"/>
@ -88,7 +88,7 @@
android:layout_height="wrap_content"> android:layout_height="wrap_content">
<ImageButton <ImageButton
android:id="@+id/previous_dot_icon" android:id="@+id/undo_point_button"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_alignParentLeft="true" android:layout_alignParentLeft="true"
@ -102,14 +102,14 @@
tools:src="@drawable/ic_action_undo_dark"/> tools:src="@drawable/ic_action_undo_dark"/>
<ImageButton <ImageButton
android:id="@+id/next_dot_icon" android:id="@+id/redo_point_button"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_centerVertical="true" android:layout_centerVertical="true"
android:layout_marginLeft="8dp" android:layout_marginLeft="8dp"
android:layout_marginStart="8dp" android:layout_marginStart="8dp"
android:layout_toEndOf="@id/previous_dot_icon" android:layout_toEndOf="@id/undo_point_button"
android:layout_toRightOf="@id/previous_dot_icon" android:layout_toRightOf="@id/undo_point_button"
android:background="@null" android:background="@null"
tools:src="@drawable/ic_action_redo_dark"/> tools:src="@drawable/ic_action_redo_dark"/>

View file

@ -223,6 +223,9 @@
<include layout="@layout/move_marker_bottom_sheet" <include layout="@layout/move_marker_bottom_sheet"
tools:visibility="gone"/> tools:visibility="gone"/>
<include layout="@layout/add_gpx_waypoint_bottom_sheet"
tools:visibility="gone"/>
<FrameLayout <FrameLayout
android:id="@+id/bottomFragmentContainer" android:id="@+id/bottomFragmentContainer"
android:layout_width="match_parent" android:layout_width="match_parent"

View file

@ -0,0 +1,32 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/MainLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<ExpandableListView
android:id="@android:id/list"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginLeft="0dp"
android:layout_marginRight="0dp"
android:layout_marginTop="0dp"
android:divider="@null"
android:dividerHeight="0dp"
android:drawSelectorOnTop="false"
android:groupIndicator="@android:color/transparent" />
<android.support.design.widget.FloatingActionButton
android:id="@+id/fabButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:layout_margin="16dp"
android:src="@drawable/ic_action_plus"
android:contentDescription="@string/quick_action_new_action"
app:backgroundTint="@color/dashboard_blue"/>
</RelativeLayout>

View file

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/action_save_as_gpx"
android:icon="@drawable/ic_action_polygom_dark"
android:title="@string/shared_string_save_as_gpx"/>
<item
android:id="@+id/action_clear_all"
android:icon="@drawable/ic_action_reset_to_default_dark"
android:title="@string/shared_string_clear_all"/>
</menu>

View file

@ -1559,4 +1559,8 @@
<string name="poi_direction_all">الاتجاه: الكل</string> <string name="poi_direction_all">الاتجاه: الكل</string>
<string name="poi_direction_exit">الاتجاه: مخرج</string> <string name="poi_direction_exit">الاتجاه: مخرج</string>
</resources> <string name="poi_piste_grooming">تعبيد الطريق الثلجي</string>
<string name="poi_animal_shelter_type">الحيوانات مسموح بها</string>
<string name="poi_animal_shelter_purpose">الغرض</string>
</resources>

View file

@ -2718,4 +2718,8 @@
<string name="live_monitoring_max_interval_to_send_desrc">تحديد الوقت الإضافي المخزن للحفاظ على المواقع وإرسالها دون اتصال</string> <string name="live_monitoring_max_interval_to_send_desrc">تحديد الوقت الإضافي المخزن للحفاظ على المواقع وإرسالها دون اتصال</string>
<string name="mappilary_no_internet_desc">أنت بحاجة إلى إنترنت لعرض الصور من Mapillary</string> <string name="mappilary_no_internet_desc">أنت بحاجة إلى إنترنت لعرض الصور من Mapillary</string>
<string name="retry">اعد المحاولة</string> <string name="retry">اعد المحاولة</string>
<string name="measurement_tool_action_bar">حدد موقعا على الخريطة وانقر على إضافة لإضافة نقطة إلى المسطرة.</string>
<string name="measurement_tool">أداة القياس</string>
<string name="add_gpx_waypoint_bottom_sheet_title">إضافة إحداثية وجهة gpx</string>
<string name="shared_string_create">إنشاء</string>
</resources> </resources>

View file

@ -1699,4 +1699,7 @@
<string name="pref_vector_map">Vektor xəritə parametrləri</string> <string name="pref_vector_map">Vektor xəritə parametrləri</string>
<string name="file_with_name_already_exists">Bu adda fayl artıq mövcuddur.</string> <string name="file_with_name_already_exists">Bu adda fayl artıq mövcuddur.</string>
<string name="gpx_navigation">GPX marşrut</string> <string name="gpx_navigation">GPX marşrut</string>
</resources> <string name="measurement_tool">Ölçmə aləti</string>
<string name="add_gpx_waypoint_bottom_sheet_title">GPX yol nöqtəsi əlavə et</string>
<string name="shared_string_create">Yarat</string>
</resources>

View file

@ -2419,8 +2419,8 @@ U vypadku, kali vy lubіcie OsmAnd і OSM і chočacie padtrymać jaho, heta іd
<string name="full_version_thanks">Dziakuj Vam za nabyćcio poŭnaj versii OsmAnd!</string> <string name="full_version_thanks">Dziakuj Vam za nabyćcio poŭnaj versii OsmAnd!</string>
<string name="routing_attr_relief_smoothness_factor_hills_name">Ŭzhorysty</string> <string name="routing_attr_relief_smoothness_factor_hills_name">Ŭzhorysty</string>
<string name="routing_attr_relief_smoothness_factor_more_plains_name">Raŭninny</string> <string name="routing_attr_relief_smoothness_factor_more_plains_name">Raŭninny</string>
<string name="routing_attr_driving_style_safety_name">Biaśpiečny</string> <string name="routing_attr_driving_style_safety_name">Addavać pieravahu vakolnym daroham</string>
<string name="routing_attr_driving_style_speed_name">Chutkasny</string> <string name="routing_attr_driving_style_speed_name">Bolš za karotkija maršruty</string>
<string name="routing_attr_driving_style_balance_name">Zbałansavany</string> <string name="routing_attr_driving_style_balance_name">Zbałansavany</string>
<string name="shared_string_slope">Schił</string> <string name="shared_string_slope">Schił</string>
<string name="add_new_folder">Dadać novuju tečku</string> <string name="add_new_folder">Dadać novuju tečku</string>
@ -2750,14 +2750,27 @@ U vypadku, kali vy lubіcie OsmAnd і OSM і chočacie padtrymać jaho, heta іd
<string name="range_min_max">Adliehlasć = Min./Maks.</string> <string name="range_min_max">Adliehlasć = Min./Maks.</string>
<string name="min_max">Min./Maks.</string> <string name="min_max">Min./Maks.</string>
<string name="release_2_7">\\022 Dadatak Mapillary z vuličnymi vyjavami <string name="release_2_7">• Dadatak Mapillary z vuličnymi vyjavami
\n
\n • Vidžet-liniejka dlia vymiarenniaŭ dystancyj
\n
\n • Razdzielienyja GPX-intervaly z padrabiaznaj infarmacyjaj ab vašym treku
\n \n
\n • Vidžet-liniejka dlia vymiarenniaŭ dystancyj
\n
\n • Razdzielienyja GPX-intervaly z padrabiaznaj infarmacyjaj ab vašym treku
\n
\n • Inšyja paliapšenni i vypraŭlienni chibaŭ \n • Inšyja paliapšenni i vypraŭlienni chibaŭ
\n \n
\n</string> \n</string>
<string name="rendering_value_translucent_pink_name">Paŭprazrysty ružovy</string> <string name="rendering_value_translucent_pink_name">Paŭprazrysty ružovy</string>
<string name="measurement_tool">Vymiareńnie</string>
<string name="quick_action_resume_pause_navigation">Adnavić/Prypynić Navihacyju</string>
<string name="quick_action_resume_pause_navigation_descr">Naciśnicie hetuju knopku, kab prypynić navihacyju ci adnavić jaje, kali jana ŭžo była prypynienaja.</string>
<string name="quick_action_show_navigation_finish_dialog">Pakazvać dyjałoh Zaviaršeńnie navihacyi</string>
<string name="quick_action_start_stop_navigation">Start/Finiš Navihacyi</string>
<string name="quick_action_start_stop_navigation_descr">Naciśnicie hetuju knopku, kab pačać navihacyju ci spynić jaje, kali jana ŭžo pačałasia.</string>
<string name="mappilary_no_internet_desc">Vam patrebien Internet dla prahladu fatahrafij z Mapillary</string>
<string name="retry">Paŭtaryć sprobu</string>
<string name="add_gpx_waypoint_bottom_sheet_title">Dadać GPX šlach</string>
<string name="shared_string_create">Stvaryć</string>
<string name="measurement_tool_action_bar">Vyłučycie miesća na mapie i naćisnicie knopku Dadać, kab dadać kropku da liniejcy.</string>
<string name="live_monitoring_max_interval_to_send">Čas bufieryzacyi dlia anlajn sačennia</string>
<string name="live_monitoring_max_interval_to_send_desrc">Zadaje čas bufieryzacyi dlia zbieražennia miescaŭ dlia adpraŭki biez zlučennia</string>
</resources> </resources>

View file

@ -3464,4 +3464,30 @@
<string name="poi_spaceport">Касмадром</string> <string name="poi_spaceport">Касмадром</string>
<string name="poi_direction_n">Напрамак: поўнач</string>
<string name="poi_direction_nne">Напрамак: паўночна-паўночны ўсход</string>
<string name="poi_direction_ne">Напрамак: паўночны ўсход</string>
<string name="poi_direction_ene">Напрамак: усходне-паўночны ўсход</string>
<string name="poi_direction_e">Напрамак: усход</string>
<string name="poi_direction_ese">Напрамак: усходне-паўднёвы ўсход</string>
<string name="poi_direction_se">Напрамак: паўднёвы ўсход</string>
<string name="poi_direction_sse">Напрамак: паўднёва-паўднёвы ўсход</string>
<string name="poi_direction_s">Напрамак: поўдзень</string>
<string name="poi_direction_ssw">Напрамак: паўднёва-паўднёвы захад</string>
<string name="poi_direction_sw">Напрамак: паўднёвы захад</string>
<string name="poi_direction_wsw">Напрамак: заходне-паўднёвы захад</string>
<string name="poi_direction_w">Напрамак: захад</string>
<string name="poi_direction_wnw">Напрамак: заходне-паўночны захад</string>
<string name="poi_direction_nw">Напрамак: паўночны захад</string>
<string name="poi_direction_nnw">Напрамак: паўночна-паўночны захад</string>
<string name="poi_direction_forward">Напрамак: уперад</string>
<string name="poi_direction_backward">Напрамак: назад</string>
<string name="poi_direction_clockwise">Напрамак: па гадзіннікавай стрэлцы</string>
<string name="poi_direction_anticlockwise">Напрамак: супраць гадзіннікавай стрэлцы</string>
<string name="poi_direction_up">Напрамак: уверх</string>
<string name="poi_direction_down">Напрамак: уніз</string>
<string name="poi_direction_entrance">Напрамак: уваход</string>
<string name="poi_direction_exit">Напрамак: выхад</string>
<string name="poi_direction_all">Напрамак: на ўсе бакі</string>
</resources> </resources>

View file

@ -2637,9 +2637,9 @@
<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="do_not_send_anonymous_app_usage">На адсылаць ананімнай статыстыкі выкарыстання</string> <string name="do_not_send_anonymous_app_usage">На адсылаць ананімнай статыстыкі выкарыстання</string>
<string name="do_not_send_anonymous_app_usage_desc">OsmAnd збірае інфармацыю аб тым, які часткі праграмы выкарыстоўваюцца вамі. Ваша месцазнаходжанне ніколі не адпраўляецца, як і ўсё, што вы ўводзіце, якія вобласці праглядаеце, што шукаеце ці спампоўваеце.</string> <string name="do_not_send_anonymous_app_usage_desc">OsmAnd збірае інфармацыю аб тым, які часткі праграмы выкарыстоўваюцца вамі. Ваша месцазнаходжанне ніколі не адпраўляецца, як і ўсё, што вы ўводзіце, якія вобласці праглядаеце, што шукаеце ці спампоўваеце.</string>
<string name="do_not_show_startup_messages">Не паказваць паведамленні пры старце</string> <string name="do_not_show_startup_messages">Не паказваць паведамленні пры старце</string>
@ -2809,4 +2809,17 @@
\n • Іншыя паляпшэнні і выпраўленні хібаў \n • Іншыя паляпшэнні і выпраўленні хібаў
\n \n
\n</string> \n</string>
</resources> <string name="measurement_tool_action_bar">Вылучыце месца на мапе і націсніце кнопку Дадаць, каб дадаць кропку да лінейкі.</string>
<string name="measurement_tool">Вымярэнне</string>
<string name="quick_action_resume_pause_navigation">Аднавіць/прыпыніць навігацыю</string>
<string name="quick_action_resume_pause_navigation_descr">Націсніце гэтую кропку, каб прыпыніць навігацыю ці аднавіць яе, калі яна ўжо была прыпынена.</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_descr">Націсніце гэтую кнопку, каб пачаць навігацыю ці спыніць яе, калі яна ўжо пачалася.</string>
<string name="live_monitoring_max_interval_to_send">Час буферызацыі для анлайн сачэння</string>
<string name="live_monitoring_max_interval_to_send_desrc">Задае час буферызацыі для зберажэння месцаў для адпраўкі без злучэння</string>
<string name="mappilary_no_internet_desc">Вам патрэбен Інтэрнэт для прагляду фатаграфій з Mapillary</string>
<string name="retry">Паўтарыць</string>
<string name="add_gpx_waypoint_bottom_sheet_title">Дадаць GPX-кропку</string>
<string name="shared_string_create">Стварыць</string>
</resources>

View file

@ -2814,4 +2814,8 @@ Tidligere destination bliver sidste mellemliggende punkt.</string>
<string name="live_monitoring_max_interval_to_send_desrc">Angiv en buffer for hvor lang tid positioner skal gemmes, når der ingen internetforbindelse er</string> <string name="live_monitoring_max_interval_to_send_desrc">Angiv en buffer for hvor lang tid positioner skal gemmes, når der ingen internetforbindelse er</string>
<string name="retry">Prøv igen</string> <string name="retry">Prøv igen</string>
<string name="mappilary_no_internet_desc">Internetforbindelse er nødvendig for at se fotos fra Mapillary</string> <string name="mappilary_no_internet_desc">Internetforbindelse er nødvendig for at se fotos fra Mapillary</string>
</resources> <string name="measurement_tool">Måleværktøj</string>
<string name="measurement_tool_action_bar">Vælg en placering på kortet og klik på Tilføj for at føje et punkt til linealen.</string>
<string name="add_gpx_waypoint_bottom_sheet_title">Tilføj gpx rutepunkt</string>
<string name="shared_string_create">Opret</string>
</resources>

View file

@ -79,7 +79,7 @@
<string name="poi_boutique">Galanteriejo</string> <string name="poi_boutique">Galanteriejo</string>
<string name="poi_camera">Fotiloj-k-lensoj vendejo</string> <string name="poi_camera">Fotiloj-k-lensoj vendejo</string>
<string name="poi_carpet">Tapiŝ-vendejo</string> <string name="poi_carpet">Tapiŝ-vendejo</string>
<string name="poi_chemist">Drogejo</string> <string name="poi_chemist">Purigaĵ-vendejo</string>
<string name="poi_charity">Almoza vendejo</string> <string name="poi_charity">Almoza vendejo</string>
<string name="poi_clothes">Vest-vendejo</string> <string name="poi_clothes">Vest-vendejo</string>
<string name="poi_clothes_children">Infanvest-vendejo</string> <string name="poi_clothes_children">Infanvest-vendejo</string>
@ -1775,19 +1775,19 @@
<string name="poi_bin_yes">Kun rubujo</string> <string name="poi_bin_yes">Kun rubujo</string>
<string name="poi_bin_no">Sen rubujo</string> <string name="poi_bin_no">Sen rubujo</string>
<string name="poi_shelter_type_public_transport">Publik-transporta</string> <string name="poi_shelter_type_public_transport">publik-transporta</string>
<string name="poi_shelter_type_tent">Ŝirmeja-speco: tendo</string> <string name="poi_shelter_type_tent">Ŝirmeja-speco: tendo</string>
<string name="poi_shelter_type_abandoned">Ŝirmeja-speco: forlasita objekto</string> <string name="poi_shelter_type_abandoned">Ŝirmeja-speco: forlasita objekto</string>
<string name="poi_shelter_type_sun_shelter">Kontraŭ-suna</string> <string name="poi_shelter_type_sun_shelter">kontraŭsuna</string>
<string name="poi_shelter_type_building">Konstruaĵo</string> <string name="poi_shelter_type_building">konstruaĵo</string>
<string name="poi_shelter_type_wildlife_hide">Best-observejo</string> <string name="poi_shelter_type_wildlife_hide">best-observejo</string>
<string name="poi_shelter_type_rock_shelter">Groto</string> <string name="poi_shelter_type_rock_shelter">groto</string>
<string name="poi_shelter_type_picnic_shelter">Senflankmura (piknika)</string> <string name="poi_shelter_type_picnic_shelter">senflankmura (piknika)</string>
<string name="poi_shelter_type_lean_to">Duon-ferma</string> <string name="poi_shelter_type_lean_to">duon-ferma</string>
<string name="poi_shelter_type_weather_shelter">Budo kontraŭ-vetera</string> <string name="poi_shelter_type_weather_shelter">budo kontraŭvetera</string>
<string name="poi_shelter_type_basic_hut">Kabano</string> <string name="poi_shelter_type_basic_hut">kabano</string>
<string name="poi_shelter_type_field_shelter">Best-ŝirmejo</string> <string name="poi_shelter_type_field_shelter">best-ŝirmejo</string>
<string name="poi_internet_access_type_wlan">sendrata</string> <string name="poi_internet_access_type_wlan">sendrata</string>
<string name="poi_internet_access_type_terminal">terminalo</string> <string name="poi_internet_access_type_terminal">terminalo</string>
<string name="poi_internet_access_type_wired">drata</string> <string name="poi_internet_access_type_wired">drata</string>

View file

@ -2734,4 +2734,10 @@ Indikas lokon: %1$s x %2$s"</string>
<string name="quick_action_start_stop_navigation_descr">Premu tiun ĉi butonon por ekigi navigadon aŭ por ĉesigi ĝin se ĝi estas jam aktivigita.</string> <string name="quick_action_start_stop_navigation_descr">Premu tiun ĉi butonon por ekigi navigadon aŭ por ĉesigi ĝin se ĝi estas jam aktivigita.</string>
<string name="live_monitoring_max_interval_to_send">Temp-bufro por enreta registrado</string> <string name="live_monitoring_max_interval_to_send">Temp-bufro por enreta registrado</string>
<string name="live_monitoring_max_interval_to_send_desrc">Difini temp-bufron por konservi sendendajn poziciojn seninterrete</string> <string name="live_monitoring_max_interval_to_send_desrc">Difini temp-bufron por konservi sendendajn poziciojn seninterrete</string>
</resources> <string name="measurement_tool">Mezurilo</string>
<string name="mappilary_no_internet_desc">Vi bezonas interret-konekton por vidi fotojn de Mapillary</string>
<string name="retry">Reprovi</string>
<string name="measurement_tool_action_bar">Elektu pozicion sur la mapo kaj premu Aldoni por aldoni punkton al mezuri.</string>
<string name="add_gpx_waypoint_bottom_sheet_title">Aldoni GPX-navigadpunkton</string>
<string name="shared_string_create">Krei</string>
</resources>

View file

@ -2698,4 +2698,8 @@ Proporciona un código completo</string>
<string name="live_monitoring_max_interval_to_send_desrc">Especifica el tiempo que el búfer mantendrá los lugares para enviar sin conexión</string> <string name="live_monitoring_max_interval_to_send_desrc">Especifica el tiempo que el búfer mantendrá los lugares para enviar sin conexión</string>
<string name="mappilary_no_internet_desc">Debes tener conexión a Internet para ver fotos de Mapillary</string> <string name="mappilary_no_internet_desc">Debes tener conexión a Internet para ver fotos de Mapillary</string>
<string name="retry">Reintentar</string> <string name="retry">Reintentar</string>
<string name="measurement_tool_action_bar">Elige una ubicación en el mapa y pulsa «Añadir» para añadir un punto en la regla.</string>
<string name="measurement_tool">Herramienta de medición</string>
<string name="add_gpx_waypoint_bottom_sheet_title">Añadir punto de ruta GPX</string>
<string name="shared_string_create">Crear</string>
</resources> </resources>

View file

@ -2699,4 +2699,8 @@ Proporciona un código completo</string>
<string name="live_monitoring_max_interval_to_send_desrc">Especifica el tiempo que el búfer mantendrá los lugares para enviar sin conexión</string> <string name="live_monitoring_max_interval_to_send_desrc">Especifica el tiempo que el búfer mantendrá los lugares para enviar sin conexión</string>
<string name="mappilary_no_internet_desc">Debes tener conexión a Internet para ver fotos de Mapillary</string> <string name="mappilary_no_internet_desc">Debes tener conexión a Internet para ver fotos de Mapillary</string>
<string name="retry">Reintentar</string> <string name="retry">Reintentar</string>
<string name="measurement_tool_action_bar">Elige una ubicación en el mapa y pulsa «Añadir» para añadir un punto en la regla.</string>
<string name="measurement_tool">Herramienta de medición</string>
<string name="add_gpx_waypoint_bottom_sheet_title">Añadir punto de ruta GPX</string>
<string name="shared_string_create">Crear</string>
</resources> </resources>

View file

@ -2748,4 +2748,8 @@ Area honi dagokio: %1$s x %2$s</string>
<string name="live_monitoring_max_interval_to_send_desrc">Zehaztu bidaltzeke dauden kokalekuak gordetzeko denbora-buffer bat</string> <string name="live_monitoring_max_interval_to_send_desrc">Zehaztu bidaltzeke dauden kokalekuak gordetzeko denbora-buffer bat</string>
<string name="mappilary_no_internet_desc">Internet behar duzu Mapillary-ko argazkiak ikusteko</string> <string name="mappilary_no_internet_desc">Internet behar duzu Mapillary-ko argazkiak ikusteko</string>
<string name="retry">Saiatu berriro</string> <string name="retry">Saiatu berriro</string>
<string name="measurement_tool">Neurtzeko tresna</string>
<string name="measurement_tool_action_bar">Hautatu kokaleku bat mapan eta egin klik Gehitu botoian erregelan puntu bat gehitzeko.</string>
<string name="add_gpx_waypoint_bottom_sheet_title">Gehitu gpx bide-puntua</string>
<string name="shared_string_create">Sortu</string>
</resources> </resources>

View file

@ -2763,4 +2763,5 @@ Tai yra puikus būdas paremti OsmAnd ir OSM, jei jie jums patinka.</string>
<string name="moving_time">Judėjimo laikas</string> <string name="moving_time">Judėjimo laikas</string>
<string name="max_min">Maks/Min</string> <string name="max_min">Maks/Min</string>
<string name="min_max">Min/Maks</string> <string name="min_max">Min/Maks</string>
<string name="osmand_plus_extended_description_part8">Apytikslė žemėlapių aprėptis ir kokybė: • Vakarų Europa: **** • Rytų Europa: *** • Rusija: *** • Šiaurės Amerika: *** • Pietų Amerika: ** • Azija: ** • Japonija ir Korėja: *** • Artimieji Rytai: ** • Afrika: ** • Antarktika: * Daugelį šalių visame pasaulyje galima atsisiųsti! Nuo Afganistano iki Zimbabvės, nuo Australijos iki JAV. Argentina, Brazilija, Kanada, Prancūzija, Vokietija, Meksika, Jungtinė Karalystė, Ispanija…</string>
</resources> </resources>

View file

@ -638,7 +638,7 @@
<string name="osmand_accessibility_description">Umożliwia korzystanie ze specjalnych ułatwień dostępu urządzenia bezpośrednio w OsmAnd. Pozwala na np. dostosowanie szybkości mowy syntezowanych komunikatów głosowych, skonfigurowanie poruszania się po ekranie za pomocą pada kierunkowego, użycie trackballa do zmiany przybliżenia lub użycie syntezowanych komunikatów głosowych np. do automatycznego powiadamiania o położeniu.</string> <string name="osmand_accessibility_description">Umożliwia korzystanie ze specjalnych ułatwień dostępu urządzenia bezpośrednio w OsmAnd. Pozwala na np. dostosowanie szybkości mowy syntezowanych komunikatów głosowych, skonfigurowanie poruszania się po ekranie za pomocą pada kierunkowego, użycie trackballa do zmiany przybliżenia lub użycie syntezowanych komunikatów głosowych np. do automatycznego powiadamiania o położeniu.</string>
<string name="osmand_development_plugin_description">Wyświetla ustawienia dotyczące rozwoju i diagnozowania błędów. Dodaje możliwość symulacji nawigacji, wyświetlania informacji o wydajności renderowania, czy też testowania wskazówek głosowych. Te funkcje oraz ustawienia przeznaczone są dla twórców oprogramowania. Zwykły użytkownik nie potrzebuje ich do prawidłowego działania programu.</string> <string name="osmand_development_plugin_description">Wyświetla ustawienia dotyczące rozwoju i diagnozowania błędów. Dodaje możliwość symulacji nawigacji, wyświetlania informacji o wydajności renderowania, czy też testowania komunikatów głosowych. Te funkcje oraz ustawienia przeznaczone są dla twórców oprogramowania. Zwykły użytkownik nie potrzebuje ich do prawidłowego działania programu.</string>
<string name="plugins_screen">Wtyczki</string> <string name="plugins_screen">Wtyczki</string>
<string name="prefs_plugins_descr">Aktywuje zaawansowane ustawienia i dodatkową funkcjonalność</string> <string name="prefs_plugins_descr">Aktywuje zaawansowane ustawienia i dodatkową funkcjonalność</string>
@ -859,7 +859,7 @@ Miejsce parkowania oraz czas można znaleźć na karcie w panelu oraz na widżec
<string name="map_widget_speed">Prędkość</string> <string name="map_widget_speed">Prędkość</string>
<string name="map_widget_distance">Cel trasy</string> <string name="map_widget_distance">Cel trasy</string>
<string name="map_widget_altitude">Wysokość</string> <string name="map_widget_altitude">Wysokość</string>
<string name="map_widget_time">Czas do celu</string> <string name="map_widget_time">Czas do osiągnięcia celu</string>
<string name="map_widget_next_turn">Następny zakręt</string> <string name="map_widget_next_turn">Następny zakręt</string>
<string name="map_widget_next_turn_small">Następny zakręt (mały)</string> <string name="map_widget_next_turn_small">Następny zakręt (mały)</string>
<string name="map_widget_next_next_turn">Drugi zakręt</string> <string name="map_widget_next_next_turn">Drugi zakręt</string>
@ -946,26 +946,24 @@ OsmAnd jest otwarto-źródłowym programem do nawigacji z dostępem do szerokiej
<string name="poi_filter_accomodation">Zakwaterowanie</string> <string name="poi_filter_accomodation">Zakwaterowanie</string>
<string name="poi_filter_restaurants">Restauracje</string> <string name="poi_filter_restaurants">Restauracje</string>
<string name="poi_filter_sightseeing">Zwiedzanie</string> <string name="poi_filter_sightseeing">Zwiedzanie</string>
<string name="osmand_plus_long_description_1000_chars">" <string name="osmand_plus_long_description_1000_chars">OsmAnd+ (OSM Automatyczne Nawigowanie Do celu)
OsmAnd+ (OSM Automatyczne Nawigowanie Do celu) \n
\n OsmAnd jest otwarto-źródłowym programem do nawigacji z dostępem do szerokiej gamy globalnych map OpenStreetMap (OSM). Wszystkie dane map (wektorowe lub kafelkowe) mogą być przechowywane na karcie pamięci telefonu do użycia bez połączenia z siecią. OsmAnd umożliwia również wyznaczanie tras zarówno w trybie offline i online z komunikatami głosowymi.
OsmAnd jest otwarto-źródłowym programem do nawigacji z dostępem do szerokiej gamy globalnych map OpenStreetMap (OSM). Wszystkie dane map (wektorowe lub kafelkowe) mogą być przechowywane na karcie pamięci telefonu w użycia offline. OsmAnd oferuje również funkcjonalność wyznaczania tras w trybie offline i online z zapowiedziami głosowymi. \n
\nOsmAnd+ jest płatną wersją programu, kupując program wspierasz projekt, nowe funkcje i otrzymujesz najnowsze uaktualnienia.
OsmAnd+ jest płatną wersją programu, kupując program wspierasz projekt, nowe funkcje i otrzymujesz najnowsze uaktualnienia. \n
\nNiektóre z podstawowych funkcji:
Niektóre z podstawowych funkcji: \n - Działa trybie offline (przechowuje pobrane mapy wektorowych lub kafelkowe w pamięci urządzenia)
- Działa trybie offline (przechowuje pobrane mapy wektorowych lub kafelkowe w pamięci urządzenia) \n - Dostępne kompaktowe mapy w trybie offlinie dla całego świata
- Dostępne kompaktowe mapy w trybie offlinie dla całego świata \n - Pobieranie map kraju lub regionu bezpośrednio z aplikacji
- Pobieranie map kraju lub regionu bezpośrednio z aplikacji \n - Możliwość nakładania kilku warstw map, takich jak GPX lub tras nawigacji, ciekawe miejsc, ulubionych, linii konturu, przystanków komunikacji miejskiej, dodatkowe mapy z konfigurowalną przejrzystością
- Możliwość nakładania kilku warstw map, takich jak GPX lub tras nawigacji, ciekawe miejsc, ulubionych, linii konturu, przystanków komunikacji miejskiej, dodatkowe mapy z konfigurowalną przejrzystością \n - Wyszukiwanie Offline adresów i miejsc (POI)
- Wyszukiwanie Offline adresów i miejsc (POI) \n - Wyznaczanie w trybie Offline tras na średnich dystansach
- Wyznaczanie w trybie Offline tras na średnich dystansach \n - Tryby samochodowy, rowerowy i pieszy z:
- Tryby samochodowy, rowerowy i pieszy z: \n - opcjonalnym automatycznym przełączaniem widoku dzień/noc
- opcjonalnym automatycznym przełączaniem widoku dzień/noc \n - opcjonalnie skalowanie map w zależności od prędkości
- opcjonalnie skalowanie map w zależności od prędkości \n - opcjonalne wyrównanie map według kompasu lub kierunku ruchu
- opcjonalne wyrównanie map według kompasu lub kierunku ruchu \n - opcjonalne wyświetlanie wskazywanie pasów, ograniczeń prędkości, nagrane i syntezowane komunikaty głosowe.</string>
- opcjonalne wyświetlanie wskazywanie pasów, ograniczeń prędkości, nagrane i syntezowane komunikaty głosowe.
"</string>
<string name="select_navigation_mode">Wybierz tryb poruszania się</string> <string name="select_navigation_mode">Wybierz tryb poruszania się</string>
@ -1010,7 +1008,7 @@ Niektóre z podstawowych funkcji:
<string name="map_widget_max_speed">Ograniczenie prędkości</string> <string name="map_widget_max_speed">Ograniczenie prędkości</string>
<string name="monitoring_control_start">GPX</string> <string name="monitoring_control_start">Ślad GPX</string>
<string name="download_srtm_maps">Poziomice</string> <string name="download_srtm_maps">Poziomice</string>
<string name="download_select_map_types">Inne mapy</string> <string name="download_select_map_types">Inne mapy</string>
@ -1138,8 +1136,8 @@ Niektóre z podstawowych funkcji:
<string name="plugin_distance_point_ele">wysokość</string> <string name="plugin_distance_point_ele">wysokość</string>
<string name="plugin_distance_point">Punkt</string> <string name="plugin_distance_point">Punkt</string>
<string name="gpx_file_name">Nazwa pliku GPX</string> <string name="gpx_file_name">Nazwa pliku GPX</string>
<string name="gpx_saved_sucessfully">Plik GPX został pomyślnie zapisany do {0}</string> <string name="gpx_saved_sucessfully">Zapisano plik GPX do {0}</string>
<string name="osmand_distance_planning_plugin_description">Dodaje widżet za pomocą, którego można tworzyć ślady klikając na mapie. Dostarcza również możliwość użycia lub modyfikacji istniejących już plików GPX, co przydaje się do planowania wycieczek lub mierzenia odległości pomiędzy punktami. Wynik może zostać zapisany jako plik GPX i użyty ponownie.</string> <string name="osmand_distance_planning_plugin_description">Dodaje widżet za pomocą, którego można tworzyć ślady klikając na mapie. Dostarcza również możliwość użycia lub modyfikowania istniejących już plików GPX, co przydaje się do planowania wycieczek lub mierzenia odległości pomiędzy punktami. Wynik może zostać zapisany jako plik GPX i użyty ponownie.</string>
<string name="osmand_distance_planning_plugin_name">Kalkulator odległości i narzędzie planowania</string> <string name="osmand_distance_planning_plugin_name">Kalkulator odległości i narzędzie planowania</string>
<string name="use_distance_measurement_help">* Naciśnij, aby zaznaczyć punkt. <string name="use_distance_measurement_help">* Naciśnij, aby zaznaczyć punkt.
\n * Naciśnij i przytrzymaj mapę, aby usunąć poprzedni punkt. \n * Naciśnij i przytrzymaj mapę, aby usunąć poprzedni punkt.
@ -1205,7 +1203,7 @@ Niektóre z podstawowych funkcji:
<string name="driving_region_descr">Wybiera region poruszania się: Stany Zjednoczone, Europa, Wielka Brytania, Azja oraz inne</string> <string name="driving_region_descr">Wybiera region poruszania się: Stany Zjednoczone, Europa, Wielka Brytania, Azja oraz inne</string>
<string name="driving_region">Region ruchu</string> <string name="driving_region">Region ruchu</string>
<string name="driving_region_canada">Kanada</string> <string name="driving_region_canada">Kanada</string>
<string name="map_widget_fps_info">Informacje diagnozowania błędów FPS</string> <string name="map_widget_fps_info">Diagnozowanie błędów FPS</string>
<string name="local_index_tile_data_zooms">Pobrane stopnie przybliżenia: %1$s</string> <string name="local_index_tile_data_zooms">Pobrane stopnie przybliżenia: %1$s</string>
<string name="local_index_tile_data_expire">Wygaśnięcie (minuty): %1$s</string> <string name="local_index_tile_data_expire">Wygaśnięcie (minuty): %1$s</string>
<string name="local_index_tile_data_downloadable">Do pobrania: %1$s</string> <string name="local_index_tile_data_downloadable">Do pobrania: %1$s</string>
@ -1294,7 +1292,7 @@ Niektóre z podstawowych funkcji:
<string name="routing_attr_avoid_motorway_description">Omijanie autostrad</string> <string name="routing_attr_avoid_motorway_description">Omijanie autostrad</string>
<string name="routing_attr_weight_name">Ograniczenie wagi</string> <string name="routing_attr_weight_name">Ograniczenie wagi</string>
<string name="routing_attr_weight_description">Określa maksymalną, dozwoloną masę pojazdu</string> <string name="routing_attr_weight_description">Określa maksymalną, dozwoloną masę pojazdu</string>
<string name="select_gpx">Wybierz GPX…</string> <string name="select_gpx">Wybierz ślad GPX…</string>
<string name="route_descr_select_destination">Proszę wybrać cel trasy</string> <string name="route_descr_select_destination">Proszę wybrać cel trasy</string>
<string name="shared_string_select_on_map">Wskaż na mapie</string> <string name="shared_string_select_on_map">Wskaż na mapie</string>
<string name="shared_string_favorite">Ulubione</string> <string name="shared_string_favorite">Ulubione</string>
@ -1395,7 +1393,7 @@ Niektóre z podstawowych funkcji:
<string name="osmo_auth_pending">Oczekiwanie na uwierzytelnienie…</string> <string name="osmo_auth_pending">Oczekiwanie na uwierzytelnienie…</string>
<string name="osmo_conn_successfull">Nawiązano połączenie: %1$s</string> <string name="osmo_conn_successfull">Nawiązano połączenie: %1$s</string>
<string name="osmo_mode_restart">Uruchom ponownie sesję OsMo</string> <string name="osmo_mode_restart">Uruchom ponownie sesję OsMo</string>
<string name="osmo_settings_debug">Informacje diagnozowania błędów</string> <string name="osmo_settings_debug">Diagnozowanie błędów</string>
<string name="hours_ago">godzin temu</string> <string name="hours_ago">godzin temu</string>
<string name="minutes_ago">minut temu</string> <string name="minutes_ago">minut temu</string>
<string name="seconds_ago">sekund temu</string> <string name="seconds_ago">sekund temu</string>
@ -1462,7 +1460,7 @@ Niektóre z podstawowych funkcji:
<string name="osmo_user_left">Użytkownik %1$s opuścił grupę %2$s</string> <string name="osmo_user_left">Użytkownik %1$s opuścił grupę %2$s</string>
<string name="osmo_show_group_notifications">Wyświetlanie powiadomień grup</string> <string name="osmo_show_group_notifications">Wyświetlanie powiadomień grup</string>
<string name="osmo_show_group_notifications_descr">Wyświetla powiadomienia, gdy użytkownik dołącza do grupy lub opuszcza grupę</string> <string name="osmo_show_group_notifications_descr">Wyświetla powiadomienia, gdy użytkownik dołącza do grupy lub opuszcza grupę</string>
<string name="gpx_file_is_empty">Plik GPX jest pusty</string> <string name="gpx_file_is_empty">Ślad GPX jest pusty</string>
<string name="shared_string_my_tracks">Ślady</string> <string name="shared_string_my_tracks">Ślady</string>
<string name="shared_string_my_favorites">Ulubione</string> <string name="shared_string_my_favorites">Ulubione</string>
@ -1545,8 +1543,8 @@ Niektóre z podstawowych funkcji:
<string name="live_monitoring_m">Śledzenie online (wymagane GPX)</string> <string name="live_monitoring_m">Śledzenie online (wymagane GPX)</string>
<string name="live_monitoring_start">Rozpocznij śledzenie online</string> <string name="live_monitoring_start">Rozpocznij śledzenie online</string>
<string name="live_monitoring_stop">Zatrzymaj śledzenie online</string> <string name="live_monitoring_stop">Zatrzymaj śledzenie online</string>
<string name="gpx_monitoring_start">Rozpocznij rejestrowanie GPX</string> <string name="gpx_monitoring_start">Rozpocznij rejestrowanie śladu GPX</string>
<string name="gpx_monitoring_stop">Zatrzymaj rejestrowanie GPX</string> <string name="gpx_monitoring_stop">Zatrzymaj rejestrowanie śladu GPX</string>
<string name="gpx_start_new_segment">Rozpocznij nowy segment</string> <string name="gpx_start_new_segment">Rozpocznij nowy segment</string>
<string name="rendering_attr_hideBuildings_name">Budynki</string> <string name="rendering_attr_hideBuildings_name">Budynki</string>
<string name="rendering_attr_hideNonVehicleHighways_name">Trasy niedostępne dla aut</string> <string name="rendering_attr_hideNonVehicleHighways_name">Trasy niedostępne dla aut</string>
@ -1608,11 +1606,11 @@ Niektóre z podstawowych funkcji:
<string name="save_track_to_gpx_globally">Rejestrowanie śladu do pliku GPX</string> <string name="save_track_to_gpx_globally">Rejestrowanie śladu do pliku GPX</string>
<string name="save_track_to_gpx_globally_descr">Rejestrowanie położenia do pliku GPX można włączyć lub wyłączyć używając widżetu rejestrowania GPX na ekranie mapy</string> <string name="save_track_to_gpx_globally_descr">Rejestrowanie położenia do pliku GPX można włączyć lub wyłączyć używając widżetu rejestrowania GPX na ekranie mapy</string>
<string name="save_track_interval_globally">Częstość rejestrowania</string> <string name="save_track_interval_globally">Częstość rejestrowania</string>
<string name="record_plugin_description">Aktywuje funkcje rejestrowania i zapisywania śladów za pomocą widżetu rejestrowania śladów GPX na ekranie mapy lub automatyczne rejestruje przebiegi wszystkich tras do plików GPX. <string name="record_plugin_description">Aktywuje funkcje rejestrowania i zapisywania śladów za pomocą widżetu rejestrowania śladów GPX na ekranie mapy lub automatyczne rejestruje przebiegi wszystkich tras do plików GPX.
\n \n
\nNagrane ślady można udostępnić znajomym lub wykorzystać na rzecz rozwoju mapy OpenStreetMap. Sportowcy mogą korzystać z nagranych śladów do monitorowania treningów. W tym celu OsmAnd udostępnia podstawowe informacje takie jak czasy okrążeń, średnia prędkość itp. Ślady mogą być później analizowane w specjalnych narzędziach do analizy przygotowanych przez innych dostawców.</string> \nZarejestrowane ślady można udostępnić znajomym lub wykorzystać na rzecz rozwoju mapy OpenStreetMap. Sportowcy mogą korzystać ze śladów do monitorowania treningów. W tym celu OsmAnd udostępnia podstawowe informacje takie jak czasy okrążeń, średnia prędkość itp. Ślady mogą być później analizowane w specjalnych narzędziach do analizy przygotowanych przez innych dostawców oprogramowania.</string>
<string name="confirm_every_run">Ponawianie pytania</string> <string name="confirm_every_run">Ponawianie pytania</string>
<string name="save_global_track_interval_descr">Wybierz tempo rejestrowania dla nagrywania ścieżki (włączonego poprzez widżet rejestrowania GPX na mapie)</string> <string name="save_global_track_interval_descr">Wybierz tempo rejestrowania śladu (włączonego poprzez widżet rejestrowania GPX na mapie)</string>
<string name="save_global_track_interval">Ogólna częstość rejestrowania</string> <string name="save_global_track_interval">Ogólna częstość rejestrowania</string>
<string name="traffic_warning_speed_limit">Ograniczenie prędkości</string> <string name="traffic_warning_speed_limit">Ograniczenie prędkości</string>
<string name="traffic_warning_border_control">Kontrola graniczna</string> <string name="traffic_warning_border_control">Kontrola graniczna</string>
@ -1957,7 +1955,7 @@ Długość %2$s</string>
<string name="poi_dialog_poi_type">Rodzaj użytecznego miejsca</string> <string name="poi_dialog_poi_type">Rodzaj użytecznego miejsca</string>
<string name="poi_action_delete">usuń</string> <string name="poi_action_delete">usuń</string>
<string name="building_number">Numer budynku</string> <string name="building_number">Numer budynku</string>
<string name="av_locations_descr">Plik GPS z notatkami o położeniach</string> <string name="av_locations_descr">Plik śladu GPX z notatkami o położeniach</string>
<string name="rendering_value_boldOutline_name">Pogrubione kontury</string> <string name="rendering_value_boldOutline_name">Pogrubione kontury</string>
<string name="download_live_updates">Aktualizowanie na bieżąco</string> <string name="download_live_updates">Aktualizowanie na bieżąco</string>
<string name="commit_poi">Wyślij użyteczne miejsce</string> <string name="commit_poi">Wyślij użyteczne miejsce</string>
@ -2100,7 +2098,7 @@ Długość %2$s</string>
<string name="osn_reopen_dialog_title">Otwórz notatkę ponownie</string> <string name="osn_reopen_dialog_title">Otwórz notatkę ponownie</string>
<string name="osn_close_dialog_title">Zamknij notatkę</string> <string name="osn_close_dialog_title">Zamknij notatkę</string>
<string name="osn_add_dialog_success">Utworzono uwagę</string> <string name="osn_add_dialog_success">Utworzono uwagę</string>
<string name="context_menu_item_delete_waypoint">Usunąć punkt GPX?</string> <string name="context_menu_item_delete_waypoint">Usunąć punkt śladu GPX?</string>
<string name="shared_string_location">Położenie</string> <string name="shared_string_location">Położenie</string>
<string name="share_osm_edits_subject">Edycje OSM udostępnione przez OsmAnd</string> <string name="share_osm_edits_subject">Edycje OSM udostępnione przez OsmAnd</string>
<string name="lang_fy">Fryzyjski</string> <string name="lang_fy">Fryzyjski</string>
@ -2124,7 +2122,7 @@ Długość %2$s</string>
<string name="osn_close_dialog_error">Wystąpił błąd: nie zamknięto uwagi</string> <string name="osn_close_dialog_error">Wystąpił błąd: nie zamknięto uwagi</string>
<string name="shared_string_commit">Zatwierdź</string> <string name="shared_string_commit">Zatwierdź</string>
<string name="context_menu_item_edit_waypoint">Edytuj punkt GPX</string> <string name="context_menu_item_edit_waypoint">Edytuj punkt śladu GPX</string>
<string name="lang_nds">Dolno Saksoński</string> <string name="lang_nds">Dolno Saksoński</string>
<string name="lang_mk">Macedoński</string> <string name="lang_mk">Macedoński</string>
<string name="lang_als">Albański (Tosk)</string> <string name="lang_als">Albański (Tosk)</string>
@ -2777,4 +2775,13 @@ Reprezentuje obszar: %1$s x %2$s</string>
<string name="quick_action_start_stop_navigation">Rozpocznij/zakończ nawigowanie</string> <string name="quick_action_start_stop_navigation">Rozpocznij/zakończ nawigowanie</string>
<string name="quick_action_start_stop_navigation_descr">Rozpoczyna lub zatrzymuje rozpoczęte nawigowanie.</string> <string name="quick_action_start_stop_navigation_descr">Rozpoczyna lub zatrzymuje rozpoczęte nawigowanie.</string>
<string name="quick_action_show_navigation_finish_dialog">Wyświetl ekran kończenia nawigowania</string> <string name="quick_action_show_navigation_finish_dialog">Wyświetl ekran kończenia nawigowania</string>
<string name="release_2_7">• Wtyczka Mapillary z obrazami miejsc
\n
\n • Widżet linijki do mierzenia odległości
\n
\n • Interwały podziału śladu GPX ze szczegółowymi informacjami na temat śladu
\n
\n • Inne ulepszenia i naprawione błędy
\n
\n</string>
</resources> </resources>

View file

@ -2719,4 +2719,8 @@ Pro praghere iscrie su còdighe intreu</string>
<string name="live_monitoring_max_interval_to_send_desrc">Dislinda un\'intervallu de tempus pro mantènnere sas positziones de imbiare cando non b\'est connessione</string> <string name="live_monitoring_max_interval_to_send_desrc">Dislinda un\'intervallu de tempus pro mantènnere sas positziones de imbiare cando non b\'est connessione</string>
<string name="mappilary_no_internet_desc">Tenes bisòngiu de ìnternet pro bìdere sas fotografias de Mapillary</string> <string name="mappilary_no_internet_desc">Tenes bisòngiu de ìnternet pro bìdere sas fotografias de Mapillary</string>
<string name="retry">Torra a proare</string> <string name="retry">Torra a proare</string>
<string name="measurement_tool_action_bar">Issèbera una positzione in sa mapa e incarca Annanghe pro annànghere unu puntu a su righellu.</string>
<string name="measurement_tool">Aina de medidura</string>
<string name="add_gpx_waypoint_bottom_sheet_title">Annanghe unu puntu de coladòrgiu gpx</string>
<string name="shared_string_create">Crea</string>
</resources> </resources>

View file

@ -2807,4 +2807,7 @@ OsmAnd (Automated Navigation Directions) 是一個地圖和導航的應用程式
<string name="mappilary_no_internet_desc">您需要網際網路才能從 Mapillary 檢視照片</string> <string name="mappilary_no_internet_desc">您需要網際網路才能從 Mapillary 檢視照片</string>
<string name="retry">重試</string> <string name="retry">重試</string>
<string name="measurement_tool">測量工具</string> <string name="measurement_tool">測量工具</string>
</resources> <string name="measurement_tool_action_bar">在地圖上選擇一個位置,然後輕點增加以便增加一個標點到尺規。</string>
<string name="add_gpx_waypoint_bottom_sheet_title">增加 gpx 航點</string>
<string name="shared_string_create">建立</string>
</resources>

View file

@ -9,6 +9,7 @@
3. All your modified/created strings are in the top of the file (to make easier find what\'s translated). 3. All your modified/created strings are in the top of the file (to make easier find what\'s translated).
PLEASE: Have a look at http://code.google.com/p/osmand/wiki/UIConsistency, it may really improve your and our work :-) Thx - Hardy PLEASE: Have a look at http://code.google.com/p/osmand/wiki/UIConsistency, it may really improve your and our work :-) Thx - Hardy
--> -->
<string name="measurement_tool_action_bar">Select a location on the map and click "Add" to add a point to the ruler.</string>
<string name="measurement_tool">Measurement tool</string> <string name="measurement_tool">Measurement tool</string>
<string name="quick_action_resume_pause_navigation">Resume/Pause Navigation</string> <string name="quick_action_resume_pause_navigation">Resume/Pause Navigation</string>
<string name="quick_action_resume_pause_navigation_descr">Press this button to pause the navigation, or to resume it if it was already paused.</string> <string name="quick_action_resume_pause_navigation_descr">Press this button to pause the navigation, or to resume it if it was already paused.</string>
@ -2659,4 +2660,6 @@
<string name="shared_string_action_name">Action name</string> <string name="shared_string_action_name">Action name</string>
<string name="mappilary_no_internet_desc">You need internet to view photos from Mapillary</string> <string name="mappilary_no_internet_desc">You need internet to view photos from Mapillary</string>
<string name="retry">Retry</string> <string name="retry">Retry</string>
<string name="add_gpx_waypoint_bottom_sheet_title">Add gpx waypoint</string>
<string name="shared_string_create">Create</string>
</resources> </resources>

View file

@ -102,6 +102,18 @@ public class GPXUtilities {
public float speed; public float speed;
} }
public static class NewGpxWaypoint {
private GPXFile gpx;
public NewGpxWaypoint(GPXFile gpx) {
this.gpx = gpx;
}
public GPXFile getGpx() {
return gpx;
}
}
public static class WptPt extends GPXExtensions implements LocationPoint { public static class WptPt extends GPXExtensions implements LocationPoint {
public boolean firstPoint = false; public boolean firstPoint = false;
public boolean lastPoint = false; public boolean lastPoint = false;

View file

@ -57,6 +57,8 @@ import net.osmand.plus.AppInitializer;
import net.osmand.plus.AppInitializer.AppInitializeListener; import net.osmand.plus.AppInitializer.AppInitializeListener;
import net.osmand.plus.AppInitializer.InitEvents; import net.osmand.plus.AppInitializer.InitEvents;
import net.osmand.plus.ApplicationMode; import net.osmand.plus.ApplicationMode;
import net.osmand.plus.GPXUtilities;
import net.osmand.plus.GPXUtilities.NewGpxWaypoint;
import net.osmand.plus.GpxSelectionHelper.GpxDisplayItem; import net.osmand.plus.GpxSelectionHelper.GpxDisplayItem;
import net.osmand.plus.MapMarkersHelper.MapMarker; import net.osmand.plus.MapMarkersHelper.MapMarker;
import net.osmand.plus.MapMarkersHelper.MapMarkerChangedListener; import net.osmand.plus.MapMarkersHelper.MapMarkerChangedListener;
@ -916,6 +918,9 @@ public class MapActivity extends OsmandActionBarActivity implements DownloadEven
} else if (toShow instanceof QuadRect) { } else if (toShow instanceof QuadRect) {
QuadRect qr = (QuadRect) toShow; QuadRect qr = (QuadRect) toShow;
mapView.fitRectToMap(qr.left, qr.right, qr.top, qr.bottom, (int) qr.width(), (int) qr.height(), 0); mapView.fitRectToMap(qr.left, qr.right, qr.top, qr.bottom, (int) qr.width(), (int) qr.height(), 0);
} else if (toShow instanceof NewGpxWaypoint) {
NewGpxWaypoint newGpxWaypoint = (NewGpxWaypoint) toShow;
getMapLayers().getContextMenuLayer().enterAddGpxWaypointMode(newGpxWaypoint);
} else { } else {
mapContextMenu.show(latLonToShow, mapLabelToShow, toShow); mapContextMenu.show(latLonToShow, mapLabelToShow, toShow);
} }

View file

@ -884,7 +884,7 @@ public class MapContextMenuFragment extends Fragment implements DownloadEvents {
newMenuTopViewHeight = menuTopViewHeightExcludingTitle + titleHeight + titleButtonHeight + downloadButtonsHeight + titleProgressHeight; newMenuTopViewHeight = menuTopViewHeightExcludingTitle + titleHeight + titleButtonHeight + downloadButtonsHeight + titleProgressHeight;
dy = Math.max(0, newMenuTopViewHeight - menuTopViewHeight - (newMenuTopShadowAllHeight - menuTopShadowAllHeight)); dy = Math.max(0, newMenuTopViewHeight - menuTopViewHeight - (newMenuTopShadowAllHeight - menuTopShadowAllHeight));
} else { } else {
menuTopViewHeightExcludingTitle = newMenuTopViewHeight - line1.getMeasuredHeight() - line2MeasuredHeight; menuTopViewHeightExcludingTitle = newMenuTopViewHeight - line1.getMeasuredHeight() - line2MeasuredHeight - titleButtonHeight - downloadButtonsHeight - titleProgressHeight;
menuTitleTopBottomPadding = (line1.getMeasuredHeight() - line1.getLineCount() * line1.getLineHeight()) menuTitleTopBottomPadding = (line1.getMeasuredHeight() - line1.getLineCount() * line1.getLineHeight())
+ (line2MeasuredHeight - line2LineCount * line2LineHeight); + (line2MeasuredHeight - line2LineCount * line2LineHeight);
} }
@ -1128,8 +1128,13 @@ public class MapContextMenuFragment extends Fragment implements DownloadEvents {
RotatedTileBox box = map.getCurrentRotatedTileBox().copy(); RotatedTileBox box = map.getCurrentRotatedTileBox().copy();
box.setCenterLocation(0.5f, map.getMapPosition() == OsmandSettings.BOTTOM_CONSTANT ? 0.15f : 0.5f); box.setCenterLocation(0.5f, map.getMapPosition() == OsmandSettings.BOTTOM_CONSTANT ? 0.15f : 0.5f);
box.setZoom(zoom); box.setZoom(zoom);
int markerMapCenterX = (int) box.getPixXFromLatLon(mapCenter.getLatitude(), mapCenter.getLongitude()); boolean hasMapCenter = mapCenter != null;
int markerMapCenterY = (int) box.getPixYFromLatLon(mapCenter.getLatitude(), mapCenter.getLongitude()); int markerMapCenterX = 0;
int markerMapCenterY = 0;
if (hasMapCenter) {
markerMapCenterX = (int) box.getPixXFromLatLon(mapCenter.getLatitude(), mapCenter.getLongitude());
markerMapCenterY = (int) box.getPixYFromLatLon(mapCenter.getLatitude(), mapCenter.getLongitude());
}
float cpyOrig = box.getCenterPixelPoint().y; float cpyOrig = box.getCenterPixelPoint().y;
box.setCenterLocation(0.5f, 0.5f); box.setCenterLocation(0.5f, 0.5f);
@ -1146,7 +1151,7 @@ public class MapContextMenuFragment extends Fragment implements DownloadEvents {
float origMarkerY = this.origMarkerY + cpyDelta; float origMarkerY = this.origMarkerY + cpyDelta;
LatLon latlon; LatLon latlon;
if (center) { if (center || !hasMapCenter) {
latlon = reqMarkerLocation; latlon = reqMarkerLocation;
} else { } else {
latlon = box.getLatLonFromPixel(markerMapCenterX, markerMapCenterY); latlon = box.getLatLonFromPixel(markerMapCenterX, markerMapCenterY);

View file

@ -5,20 +5,29 @@ import android.support.annotation.Nullable;
import android.support.v4.app.Fragment; import android.support.v4.app.Fragment;
import android.view.ContextThemeWrapper; import android.view.ContextThemeWrapper;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.widget.ImageButton;
import android.widget.ImageView; import android.widget.ImageView;
import android.widget.TextView; import android.widget.TextView;
import android.widget.Toast;
import net.osmand.AndroidUtils; import net.osmand.AndroidUtils;
import net.osmand.plus.IconsCache; import net.osmand.plus.IconsCache;
import net.osmand.plus.R; import net.osmand.plus.R;
import net.osmand.plus.activities.MapActivity; import net.osmand.plus.activities.MapActivity;
import net.osmand.plus.helpers.AndroidUiHelper;
import net.osmand.plus.views.mapwidgets.MapInfoWidgetsFactory;
import net.osmand.plus.views.mapwidgets.MapInfoWidgetsFactory.TopToolbarController;
import net.osmand.plus.widgets.IconPopupMenu;
public class MeasurementToolFragment extends Fragment { public class MeasurementToolFragment extends Fragment {
public static final String TAG = "MeasurementToolFragment"; public static final String TAG = "MeasurementToolFragment";
private MeasurementToolBarController toolBarController;
private TextView distanceTv; private TextView distanceTv;
private TextView pointsTv; private TextView pointsTv;
private String pointsSt; private String pointsSt;
@ -28,11 +37,12 @@ public class MeasurementToolFragment extends Fragment {
@Nullable @Nullable
@Override @Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
MapActivity mapActivity = (MapActivity) getActivity(); final MapActivity mapActivity = (MapActivity) getActivity();
final MeasurementToolLayer measurementLayer = mapActivity.getMapLayers().getMeasurementToolLayer(); final MeasurementToolLayer measurementLayer = mapActivity.getMapLayers().getMeasurementToolLayer();
IconsCache iconsCache = mapActivity.getMyApplication().getIconsCache(); IconsCache iconsCache = mapActivity.getMyApplication().getIconsCache();
final boolean nightMode = mapActivity.getMyApplication().getDaynightHelper().isNightModeForMapControls(); final boolean nightMode = mapActivity.getMyApplication().getDaynightHelper().isNightModeForMapControls();
final int themeRes = nightMode ? R.style.OsmandDarkTheme : R.style.OsmandLightTheme; final int themeRes = nightMode ? R.style.OsmandDarkTheme : R.style.OsmandLightTheme;
boolean portrait = AndroidUiHelper.isOrientationPortrait(mapActivity);
pointsSt = mapActivity.getString(R.string.points).toLowerCase(); pointsSt = mapActivity.getString(R.string.points).toLowerCase();
@ -46,23 +56,101 @@ public class MeasurementToolFragment extends Fragment {
((ImageView) mainView.findViewById(R.id.ruler_icon)) ((ImageView) mainView.findViewById(R.id.ruler_icon))
.setImageDrawable(iconsCache.getIcon(R.drawable.ic_action_ruler, R.color.color_myloc_distance)); .setImageDrawable(iconsCache.getIcon(R.drawable.ic_action_ruler, R.color.color_myloc_distance));
((ImageView) mainView.findViewById(R.id.up_down_icon))
.setImageDrawable(iconsCache.getThemedIcon(R.drawable.ic_action_arrow_up)); final ImageButton upDownBtn = ((ImageButton) mainView.findViewById(R.id.up_down_button));
((ImageView) mainView.findViewById(R.id.previous_dot_icon)) upDownBtn.setImageDrawable(iconsCache.getThemedIcon(R.drawable.ic_action_arrow_up));
.setImageDrawable(iconsCache.getThemedIcon(R.drawable.ic_action_undo_dark)); upDownBtn.setOnClickListener(new View.OnClickListener() {
((ImageView) mainView.findViewById(R.id.next_dot_icon)) @Override
.setImageDrawable(iconsCache.getThemedIcon(R.drawable.ic_action_redo_dark)); public void onClick(View view) {
Toast.makeText(getActivity(), "Up / Down", Toast.LENGTH_SHORT).show();
}
});
final ImageButton undoBtn = ((ImageButton) mainView.findViewById(R.id.undo_point_button));
final ImageButton redoBtn = ((ImageButton) mainView.findViewById(R.id.redo_point_button));
undoBtn.setImageDrawable(iconsCache.getThemedIcon(R.drawable.ic_action_undo_dark));
undoBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (measurementLayer.undoPointOnClick()) {
enable(undoBtn);
} else {
disable(undoBtn);
}
enable(redoBtn);
updateText();
}
});
redoBtn.setImageDrawable(iconsCache.getThemedIcon(R.drawable.ic_action_redo_dark));
redoBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (measurementLayer.redoPointOnClick()) {
enable(redoBtn);
} else {
disable(redoBtn);
}
enable(undoBtn);
updateText();
}
});
mainView.findViewById(R.id.add_point_button).setOnClickListener(new View.OnClickListener() { mainView.findViewById(R.id.add_point_button).setOnClickListener(new View.OnClickListener() {
@Override @Override
public void onClick(View view) { public void onClick(View view) {
measurementLayer.addPointOnClick(); measurementLayer.addPointOnClick();
enable(undoBtn);
disable(redoBtn);
updateText(); updateText();
} }
}); });
disable(undoBtn, redoBtn);
enterMeasurementMode(); enterMeasurementMode();
if (portrait) {
toolBarController = new MeasurementToolBarController();
toolBarController.setTitle(mapActivity.getString(R.string.measurement_tool_action_bar));
toolBarController.setOnBackButtonClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mapActivity.onBackPressed();
}
});
toolBarController.setOnCloseButtonClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
IconPopupMenu popup = new IconPopupMenu(mapActivity, mapActivity.findViewById(R.id.widget_top_bar_close_button));
popup.getMenuInflater().inflate(R.menu.measurement_tool_menu, popup.getMenu());
final Menu menu = popup.getMenu();
IconsCache ic = mapActivity.getMyApplication().getIconsCache();
menu.findItem(R.id.action_save_as_gpx).setIcon(ic.getThemedIcon(R.drawable.ic_action_polygom_dark));
menu.findItem(R.id.action_clear_all).setIcon(ic.getThemedIcon(R.drawable.ic_action_reset_to_default_dark));
popup.setOnMenuItemClickListener(new IconPopupMenu.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem menuItem) {
switch (menuItem.getItemId()) {
case R.id.action_save_as_gpx:
Toast.makeText(mapActivity, "Save as gpx", Toast.LENGTH_SHORT).show();
return true;
case R.id.action_clear_all:
measurementLayer.clearPoints();
disable(undoBtn, redoBtn);
updateText();
return true;
}
return false;
}
});
popup.show();
}
});
mapActivity.showTopToolbar(toolBarController);
}
return view; return view;
} }
@ -84,6 +172,20 @@ public class MeasurementToolFragment extends Fragment {
return null; return null;
} }
private void enable(View... views) {
for (View view : views) {
view.setEnabled(true);
view.setAlpha(1);
}
}
private void disable(View... views) {
for (View view : views) {
view.setEnabled(false);
view.setAlpha(.5f);
}
}
private void updateText() { private void updateText() {
MeasurementToolLayer measurementLayer = getMeasurementLayer(); MeasurementToolLayer measurementLayer = getMeasurementLayer();
if (measurementLayer != null) { if (measurementLayer != null) {
@ -119,6 +221,9 @@ public class MeasurementToolFragment extends Fragment {
MapActivity mapActivity = getMapActivity(); MapActivity mapActivity = getMapActivity();
MeasurementToolLayer measurementLayer = getMeasurementLayer(); MeasurementToolLayer measurementLayer = getMeasurementLayer();
if (mapActivity != null && measurementLayer != null) { if (mapActivity != null && measurementLayer != null) {
if (toolBarController != null) {
mapActivity.hideTopToolbar(toolBarController);
}
measurementLayer.setInMeasurementMode(false); measurementLayer.setInMeasurementMode(false);
mapActivity.refreshMap(); mapActivity.refreshMap();
mapActivity.enableDrawer(); mapActivity.enableDrawer();
@ -146,4 +251,26 @@ public class MeasurementToolFragment extends Fragment {
} }
} }
} }
private static class MeasurementToolBarController extends TopToolbarController {
MeasurementToolBarController() {
super(MapInfoWidgetsFactory.TopToolbarControllerType.MEASUREMENT_TOOL);
setBackBtnIconClrIds(0, 0);
setCloseBtnIconClrIds(0, 0);
setTitleTextClrIds(R.color.primary_text_dark, R.color.primary_text_dark);
setDescrTextClrIds(R.color.primary_text_dark, R.color.primary_text_dark);
setBgIds(R.drawable.gradient_toolbar, R.drawable.gradient_toolbar,
R.drawable.gradient_toolbar, R.drawable.gradient_toolbar);
setCloseBtnIconIds(R.drawable.ic_overflow_menu_white, R.drawable.ic_overflow_menu_white);
setBackBtnIconIds(R.drawable.ic_action_remove_dark, R.drawable.ic_action_remove_dark);
setSingleLineTitle(false);
}
@Override
public void updateToolbar(MapInfoWidgetsFactory.TopToolbarView view) {
super.updateToolbar(view);
view.getShadowView().setVisibility(View.GONE);
}
}
} }

View file

@ -25,6 +25,7 @@ public class MeasurementToolLayer extends OsmandMapLayer {
private OsmandMapTileView view; private OsmandMapTileView view;
private boolean inMeasurementMode; private boolean inMeasurementMode;
private LinkedList<WptPt> measurementPoints = new LinkedList<>(); private LinkedList<WptPt> measurementPoints = new LinkedList<>();
private LinkedList<WptPt> cacheMeasurementPoints;
private Bitmap centerIconDay; private Bitmap centerIconDay;
private Bitmap centerIconNight; private Bitmap centerIconNight;
private Bitmap pointIcon; private Bitmap pointIcon;
@ -78,6 +79,8 @@ public class MeasurementToolLayer extends OsmandMapLayer {
void clearPoints() { void clearPoints() {
measurementPoints.clear(); measurementPoints.clear();
cacheMeasurementPoints.clear();
view.refreshMap();
} }
@Override @Override
@ -133,10 +136,31 @@ public class MeasurementToolLayer extends OsmandMapLayer {
WptPt pt = new WptPt(); WptPt pt = new WptPt();
pt.lat = l.getLatitude(); pt.lat = l.getLatitude();
pt.lon = l.getLongitude(); pt.lon = l.getLongitude();
measurementPoints.add(pt); if (measurementPoints.size() > 0) {
if (!measurementPoints.get(measurementPoints.size() - 1).equals(pt)) {
measurementPoints.add(pt);
}
} else {
measurementPoints.add(pt);
}
cacheMeasurementPoints = new LinkedList<>(measurementPoints);
view.refreshMap(); view.refreshMap();
} }
boolean undoPointOnClick() {
measurementPoints.remove(measurementPoints.size() - 1);
WptPt pt = measurementPoints.get(measurementPoints.size() - 1);
view.getAnimatedDraggingThread().startMoving(pt.getLatitude(), pt.getLongitude(), view.getZoom(), true);
return measurementPoints.size() > 0;
}
boolean redoPointOnClick() {
WptPt pt = cacheMeasurementPoints.get(measurementPoints.size());
measurementPoints.add(pt);
view.getAnimatedDraggingThread().startMoving(pt.getLatitude(), pt.getLongitude(), view.getZoom(), true);
return cacheMeasurementPoints.size() > measurementPoints.size();
}
@Override @Override
public void destroyLayer() { public void destroyLayer() {

View file

@ -187,7 +187,7 @@ public class AvailableGPXFragment extends OsmandExpandableListFragment {
allGpxAdapter.notifyDataSetChanged(); allGpxAdapter.notifyDataSetChanged();
} }
asyncProcessor = new ProcessGpxTask(); asyncProcessor = new ProcessGpxTask();
asyncProcessor.execute(); asyncProcessor.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
} }
updateCurrentTrack(); updateCurrentTrack();

View file

@ -8,6 +8,7 @@ import android.os.Bundle;
import android.os.Handler; import android.os.Handler;
import android.support.annotation.NonNull; import android.support.annotation.NonNull;
import android.support.annotation.Nullable; import android.support.annotation.Nullable;
import android.support.design.widget.FloatingActionButton;
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;
@ -29,13 +30,16 @@ import android.widget.ListView;
import android.widget.TextView; import android.widget.TextView;
import net.osmand.AndroidUtils; import net.osmand.AndroidUtils;
import net.osmand.Location;
import net.osmand.data.FavouritePoint; import net.osmand.data.FavouritePoint;
import net.osmand.data.LatLon; import net.osmand.data.LatLon;
import net.osmand.data.PointDescription; import net.osmand.data.PointDescription;
import net.osmand.plus.FavouritesDbHelper; 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.WptPt;
import net.osmand.plus.GPXUtilities.GPXFile; import net.osmand.plus.GPXUtilities.GPXFile;
import net.osmand.plus.GPXUtilities.NewGpxWaypoint;
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;
@ -89,6 +93,7 @@ public class TrackPointFragment extends OsmandExpandableListFragment {
private Set<Integer> selectedGroups = new LinkedHashSet<>(); private Set<Integer> selectedGroups = new LinkedHashSet<>();
private ActionMode actionMode; private ActionMode actionMode;
private SearchView searchView; private SearchView searchView;
private FloatingActionButton fab;
@Override @Override
public void onCreate(@Nullable Bundle savedInstanceState) { public void onCreate(@Nullable Bundle savedInstanceState) {
@ -106,10 +111,30 @@ public class TrackPointFragment extends OsmandExpandableListFragment {
@Override @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.favorites_tree, container, false); View view = inflater.inflate(R.layout.points_tree, container, false);
ExpandableListView listView = (ExpandableListView) view.findViewById(android.R.id.list); ExpandableListView listView = (ExpandableListView) view.findViewById(android.R.id.list);
setHasOptionsMenu(true); setHasOptionsMenu(true);
fab = (FloatingActionButton) view.findViewById(R.id.fabButton);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
final OsmandSettings settings = app.getSettings();
GPXFile gpx = getGpx();
Location location = app.getLocationProvider().getLastKnownLocation();
if (location != null) {
settings.setMapLocationToShow(location.getLatitude(), location.getLongitude(),
settings.getLastKnownMapZoom(),
new PointDescription(PointDescription.POINT_TYPE_WPT, getString(R.string.context_menu_item_add_waypoint)),
false,
new NewGpxWaypoint(gpx));
MapActivity.launchMapActivityMoveToTop(getActivity());
}
}
});
TextView tv = new TextView(getActivity()); TextView tv = new TextView(getActivity());
tv.setText(R.string.none_selected_gpx); tv.setText(R.string.none_selected_gpx);
tv.setTextSize(24); tv.setTextSize(24);

View file

@ -0,0 +1,102 @@
package net.osmand.plus.views;
import android.content.Context;
import android.graphics.PointF;
import android.graphics.drawable.Drawable;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
import net.osmand.data.LatLon;
import net.osmand.data.PointDescription;
import net.osmand.data.RotatedTileBox;
import net.osmand.plus.GPXUtilities;
import net.osmand.plus.GPXUtilities.GPXFile;
import net.osmand.plus.GPXUtilities.NewGpxWaypoint;
import net.osmand.plus.IconsCache;
import net.osmand.plus.R;
import net.osmand.plus.activities.MapActivity;
import net.osmand.plus.mapcontextmenu.MapContextMenu;
public class AddWaypointBottomSheetHelper {
private final View view;
private final TextView title;
private String titleText = "";
private final TextView description;
private final Context context;
private final MapContextMenu contextMenu;
private final ContextMenuLayer contextMenuLayer;
private boolean applyingPositionMode;
private NewGpxWaypoint newGpxWaypoint;
public AddWaypointBottomSheetHelper(final MapActivity activity, ContextMenuLayer ctxMenuLayer) {
this.contextMenuLayer = ctxMenuLayer;
view = activity.findViewById(R.id.add_gpx_waypoint_bottom_sheet);
title = (TextView) view.findViewById(R.id.add_gpx_waypoint_bottom_sheet_title);
description = (TextView) view.findViewById(R.id.description);
context = activity;
contextMenu = activity.getContextMenu();
ImageView icon = (ImageView) view.findViewById(R.id.icon);
IconsCache iconsCache = activity.getMyApplication().getIconsCache();
icon.setImageDrawable(iconsCache.getIcon(R.drawable.ic_action_photo_dark, R.color.marker_green));
view.findViewById(R.id.create_button).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
contextMenuLayer.createGpxWaypoint();
GPXFile gpx = newGpxWaypoint.getGpx();
LatLon latLon = contextMenu.getLatLon();
activity.getContextMenu().getWptPtPointEditor().add(gpx, latLon, titleText);
}
});
view.findViewById(R.id.cancel_button).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
hide();
contextMenuLayer.cancelAddGpxWaypoint();
}
});
}
public void onDraw(RotatedTileBox rt) {
PointF point = contextMenuLayer.getMovableCenterPoint(rt);
double lat = rt.getLatFromPixel(point.x, point.y);
double lon = rt.getLonFromPixel(point.x, point.y);
description.setText(PointDescription.getLocationName(context, lat, lon, true));
}
public void setTitle(String title) {
titleText = title;
this.title.setText(titleText);
}
public boolean isVisible() {
return view.getVisibility() == View.VISIBLE;
}
public void show(Drawable drawable, NewGpxWaypoint newGpxWaypoint) {
this.newGpxWaypoint = newGpxWaypoint;
exitApplyPositionMode();
view.setVisibility(View.VISIBLE);
((ImageView) view.findViewById(R.id.icon)).setImageDrawable(drawable);
}
public void hide() {
exitApplyPositionMode();
view.setVisibility(View.GONE);
}
public void enterApplyPositionMode() {
if (!applyingPositionMode) {
applyingPositionMode = true;
view.findViewById(R.id.create_button).setEnabled(false);
}
}
public void exitApplyPositionMode() {
if (applyingPositionMode) {
applyingPositionMode = false;
view.findViewById(R.id.create_button).setEnabled(true);
}
}
}

View file

@ -35,6 +35,7 @@ import net.osmand.osm.PoiFilter;
import net.osmand.osm.PoiType; import net.osmand.osm.PoiType;
import net.osmand.plus.ContextMenuAdapter; import net.osmand.plus.ContextMenuAdapter;
import net.osmand.plus.ContextMenuItem; import net.osmand.plus.ContextMenuItem;
import net.osmand.plus.GPXUtilities.NewGpxWaypoint;
import net.osmand.plus.R; import net.osmand.plus.R;
import net.osmand.plus.activities.MapActivity; import net.osmand.plus.activities.MapActivity;
import net.osmand.plus.mapcontextmenu.MapContextMenu; import net.osmand.plus.mapcontextmenu.MapContextMenu;
@ -75,12 +76,14 @@ public class ContextMenuLayer extends OsmandMapLayer {
private GestureDetector movementListener; private GestureDetector movementListener;
private final MoveMarkerBottomSheetHelper mMoveMarkerBottomSheetHelper; private final MoveMarkerBottomSheetHelper mMoveMarkerBottomSheetHelper;
private final AddWaypointBottomSheetHelper mAddWaypointBottomSheetHelper;
private boolean mInChangeMarkerPositionMode; private boolean mInChangeMarkerPositionMode;
private IContextMenuProvider selectedObjectContextMenuProvider; private IContextMenuProvider selectedObjectContextMenuProvider;
private boolean cancelApplyingNewMarkerPosition; private boolean cancelApplyingNewMarkerPosition;
private LatLon applyingMarkerLatLon; private LatLon applyingMarkerLatLon;
private boolean wasCollapseButtonVisible; private boolean wasCollapseButtonVisible;
private boolean mInGpxDetailsMode; private boolean mInGpxDetailsMode;
private boolean mInAddGpxWaypointMode;
private List<String> publicTransportTypes; private List<String> publicTransportTypes;
private Object selectedObject; private Object selectedObject;
@ -91,6 +94,7 @@ public class ContextMenuLayer extends OsmandMapLayer {
multiSelectionMenu = menu.getMultiSelectionMenu(); multiSelectionMenu = menu.getMultiSelectionMenu();
movementListener = new GestureDetector(activity, new MenuLayerOnGestureListener()); movementListener = new GestureDetector(activity, new MenuLayerOnGestureListener());
mMoveMarkerBottomSheetHelper = new MoveMarkerBottomSheetHelper(activity, this); mMoveMarkerBottomSheetHelper = new MoveMarkerBottomSheetHelper(activity, this);
mAddWaypointBottomSheetHelper = new AddWaypointBottomSheetHelper(activity, this);
} }
@Override @Override
@ -194,7 +198,7 @@ public class ContextMenuLayer extends OsmandMapLayer {
canvas.drawBitmap(pressedBitmap, x - pressedBitmap.getWidth() / 2, y - pressedBitmap.getHeight() / 2, paint); canvas.drawBitmap(pressedBitmap, x - pressedBitmap.getWidth() / 2, y - pressedBitmap.getHeight() / 2, paint);
} }
if (mapQuickActionLayer!= null && mapQuickActionLayer.isInChangeMarkerPositionMode()) if (mapQuickActionLayer!= null && mapQuickActionLayer.isInMovingMarkerMode())
return; return;
if (mInChangeMarkerPositionMode) { if (mInChangeMarkerPositionMode) {
@ -203,6 +207,10 @@ public class ContextMenuLayer extends OsmandMapLayer {
contextMarker.draw(canvas); contextMarker.draw(canvas);
} }
mMoveMarkerBottomSheetHelper.onDraw(box); mMoveMarkerBottomSheetHelper.onDraw(box);
} else if (mInAddGpxWaypointMode) {
canvas.translate(box.getPixWidth() / 2 - contextMarker.getWidth() / 2, box.getPixHeight() / 2 - contextMarker.getHeight());
contextMarker.draw(canvas);
mAddWaypointBottomSheetHelper.onDraw(box);
} else if (menu.isActive()) { } else if (menu.isActive()) {
LatLon latLon = menu.getLatLon(); LatLon latLon = menu.getLatLon();
int x = (int) box.getPixXFromLatLon(latLon.getLatitude(), latLon.getLongitude()); int x = (int) box.getPixXFromLatLon(latLon.getLatitude(), latLon.getLongitude());
@ -281,7 +289,7 @@ public class ContextMenuLayer extends OsmandMapLayer {
} }
public Object getMoveableObject() { public Object getMoveableObject() {
return mInChangeMarkerPositionMode ? menu.getObject() : null; return mInChangeMarkerPositionMode || mInAddGpxWaypointMode ? menu.getObject() : null;
} }
public boolean isInChangeMarkerPositionMode() { public boolean isInChangeMarkerPositionMode() {
@ -292,6 +300,10 @@ public class ContextMenuLayer extends OsmandMapLayer {
return mInGpxDetailsMode; return mInGpxDetailsMode;
} }
public boolean isInAddGpxWaypointMode() {
return mInAddGpxWaypointMode;
}
public boolean isObjectMoveable(Object o) { public boolean isObjectMoveable(Object o) {
if (o == null) { if (o == null) {
return true; return true;
@ -313,7 +325,7 @@ public class ContextMenuLayer extends OsmandMapLayer {
l.applyNewObjectPosition(o, position, callback); l.applyNewObjectPosition(o, position, callback);
} }
} }
} else if (mInChangeMarkerPositionMode) { } else if (mInChangeMarkerPositionMode || mInAddGpxWaypointMode) {
callback.onApplyMovedObject(true, null); callback.onApplyMovedObject(true, null);
} }
} }
@ -357,6 +369,45 @@ public class ContextMenuLayer extends OsmandMapLayer {
}); });
} }
public void createGpxWaypoint() {
if (!mInAddGpxWaypointMode) {
throw new IllegalStateException("Not in add gpx waypoint mode");
}
RotatedTileBox tileBox = activity.getMapView().getCurrentRotatedTileBox();
PointF newMarkerPosition = getMovableCenterPoint(tileBox);
final LatLon ll = tileBox.getLatLonFromPixel(newMarkerPosition.x, newMarkerPosition.y);
applyingMarkerLatLon = ll;
Object obj = getMoveableObject();
cancelApplyingNewMarkerPosition = false;
mAddWaypointBottomSheetHelper.enterApplyPositionMode();
applyMovedObject(obj, ll, new ApplyMovedObjectCallback() {
@Override
public void onApplyMovedObject(boolean success, @Nullable Object newObject) {
mAddWaypointBottomSheetHelper.exitApplyPositionMode();
if (success && !cancelApplyingNewMarkerPosition) {
mAddWaypointBottomSheetHelper.hide();
quitAddGpxWaipoint();
PointDescription pointDescription = null;
if (selectedObjectContextMenuProvider != null) {
pointDescription = selectedObjectContextMenuProvider.getObjectName(newObject);
}
menu.show(ll, pointDescription, newObject);
view.refreshMap();
}
selectedObjectContextMenuProvider = null;
applyingMarkerLatLon = null;
}
@Override
public boolean isCancelled() {
return cancelApplyingNewMarkerPosition;
}
});
}
public void enterGpxDetailsMode() { public void enterGpxDetailsMode() {
menu.updateMapCenter(null); menu.updateMapCenter(null);
menu.hide(); menu.hide();
@ -398,6 +449,39 @@ public class ContextMenuLayer extends OsmandMapLayer {
} }
} }
private void quitAddGpxWaipoint() {
mInAddGpxWaypointMode = false;
mark(View.VISIBLE, R.id.map_ruler_layout,
R.id.map_left_widgets_panel, R.id.map_right_widgets_panel, R.id.map_center_info);
View collapseButton = activity.findViewById(R.id.map_collapse_button);
if (collapseButton != null && wasCollapseButtonVisible) {
collapseButton.setVisibility(View.VISIBLE);
}
}
public void enterAddGpxWaypointMode(NewGpxWaypoint newGpxWaypoint) {
menu.updateMapCenter(null);
menu.hide();
activity.disableDrawer();
mInAddGpxWaypointMode = true;
mAddWaypointBottomSheetHelper.show(menu.getLeftIcon(), newGpxWaypoint);
mark(View.INVISIBLE, R.id.map_ruler_layout,
R.id.map_left_widgets_panel, R.id.map_right_widgets_panel, R.id.map_center_info);
View collapseButton = activity.findViewById(R.id.map_collapse_button);
if (collapseButton != null && collapseButton.getVisibility() == View.VISIBLE) {
wasCollapseButtonVisible = true;
collapseButton.setVisibility(View.INVISIBLE);
} else {
wasCollapseButtonVisible = false;
}
view.refreshMap();
}
private void enterMovingMode(RotatedTileBox tileBox) { private void enterMovingMode(RotatedTileBox tileBox) {
Vibrator vibrator = (Vibrator) activity.getSystemService(Context.VIBRATOR_SERVICE); Vibrator vibrator = (Vibrator) activity.getSystemService(Context.VIBRATOR_SERVICE);
vibrator.vibrate(VIBRATE_SHORT); vibrator.vibrate(VIBRATE_SHORT);
@ -445,6 +529,13 @@ public class ContextMenuLayer extends OsmandMapLayer {
applyingMarkerLatLon = null; applyingMarkerLatLon = null;
} }
public void cancelAddGpxWaypoint() {
cancelApplyingNewMarkerPosition = true;
quitAddGpxWaipoint();
activity.getContextMenu().show();
applyingMarkerLatLon = null;
}
public boolean showContextMenu(double latitude, double longitude, boolean showUnknownLocation) { public boolean showContextMenu(double latitude, double longitude, boolean showUnknownLocation) {
RotatedTileBox cp = activity.getMapView().getCurrentRotatedTileBox(); RotatedTileBox cp = activity.getMapView().getCurrentRotatedTileBox();
float x = cp.getPixXFromLatLon(latitude, longitude); float x = cp.getPixXFromLatLon(latitude, longitude);
@ -550,7 +641,14 @@ public class ContextMenuLayer extends OsmandMapLayer {
if (latLon == null) { if (latLon == null) {
latLon = getLatLon(point, tileBox); latLon = getLatLon(point, tileBox);
} }
showContextMenu(latLon, pointDescription, selectedObj, provider); if (mInAddGpxWaypointMode) {
if (pointDescription != null) {
mAddWaypointBottomSheetHelper.setTitle(pointDescription.getName());
}
view.getAnimatedDraggingThread().startMoving(latLon.getLatitude(), latLon.getLongitude(), view.getZoom(), true);
} else {
showContextMenu(latLon, pointDescription, selectedObj, provider);
}
return true; return true;
} else if (selectedObjects.size() > 1) { } else if (selectedObjects.size() > 1) {
@ -592,7 +690,7 @@ public class ContextMenuLayer extends OsmandMapLayer {
} }
public boolean disableLongPressOnMap() { public boolean disableLongPressOnMap() {
if (mInChangeMarkerPositionMode || mInGpxDetailsMode) { if (mInChangeMarkerPositionMode || mInGpxDetailsMode || mInAddGpxWaypointMode) {
return true; return true;
} }
boolean res = false; boolean res = false;

View file

@ -712,7 +712,7 @@ public class MapControlsLayer extends OsmandMapLayer {
((app.accessibilityEnabled() || (System.currentTimeMillis() - touchEvent < TIMEOUT_TO_SHOW_BUTTONS)) && routeFollowingMode); ((app.accessibilityEnabled() || (System.currentTimeMillis() - touchEvent < TIMEOUT_TO_SHOW_BUTTONS)) && routeFollowingMode);
updateMyLocation(rh, routeDialogOpened || trackDialogOpened); updateMyLocation(rh, routeDialogOpened || trackDialogOpened);
boolean showButtons = (showRouteCalculationControls || !routeFollowingMode) boolean showButtons = (showRouteCalculationControls || !routeFollowingMode)
&& !isInChangeMarkerPositionMode() && !isInGpxDetailsMode() && !isInMeasurementToolMode(); && !isInMovingMarkerMode() && !isInGpxDetailsMode() && !isInMeasurementToolMode();
//routePlanningBtn.setIconResId(routeFollowingMode ? R.drawable.ic_action_gabout_dark : R.drawable.map_directions); //routePlanningBtn.setIconResId(routeFollowingMode ? R.drawable.ic_action_gabout_dark : R.drawable.map_directions);
if (rh.isFollowingMode()) { if (rh.isFollowingMode()) {
routePlanningBtn.setIconResId(R.drawable.map_start_navigation); routePlanningBtn.setIconResId(R.drawable.map_start_navigation);
@ -1119,9 +1119,9 @@ public class MapControlsLayer extends OsmandMapLayer {
this.mapQuickActionLayer = mapQuickActionLayer; this.mapQuickActionLayer = mapQuickActionLayer;
} }
private boolean isInChangeMarkerPositionMode(){ private boolean isInMovingMarkerMode(){
return mapQuickActionLayer == null ? contextMenuLayer.isInChangeMarkerPositionMode() : return mapQuickActionLayer == null ? contextMenuLayer.isInChangeMarkerPositionMode() || contextMenuLayer.isInAddGpxWaypointMode():
mapQuickActionLayer.isInChangeMarkerPositionMode() || contextMenuLayer.isInChangeMarkerPositionMode(); mapQuickActionLayer.isInMovingMarkerMode() || contextMenuLayer.isInChangeMarkerPositionMode() || contextMenuLayer.isInAddGpxWaypointMode();
} }
private boolean isInGpxDetailsMode() { private boolean isInGpxDetailsMode() {

View file

@ -54,7 +54,7 @@ public class MapQuickActionLayer extends OsmandMapLayer implements QuickActionRe
private boolean wasCollapseButtonVisible; private boolean wasCollapseButtonVisible;
private int previousMapPosition; private int previousMapPosition;
private boolean inChangeMarkerPositionMode; private boolean inMovingMarkerMode;
private boolean isLayerOn; private boolean isLayerOn;
private boolean nightMode; private boolean nightMode;
@ -236,7 +236,7 @@ public class MapQuickActionLayer extends OsmandMapLayer implements QuickActionRe
double lon = rb.getLonFromPixel(tileBox.getCenterPixelX(), tileBox.getCenterPixelY()); double lon = rb.getLonFromPixel(tileBox.getCenterPixelX(), tileBox.getCenterPixelY());
view.setLatLon(lat, lon); view.setLatLon(lat, lon);
inChangeMarkerPositionMode = true; inMovingMarkerMode = true;
mark(View.INVISIBLE, R.id.map_ruler_layout, mark(View.INVISIBLE, R.id.map_ruler_layout,
R.id.map_left_widgets_panel, R.id.map_right_widgets_panel, R.id.map_center_info); R.id.map_left_widgets_panel, R.id.map_right_widgets_panel, R.id.map_center_info);
@ -271,7 +271,7 @@ public class MapQuickActionLayer extends OsmandMapLayer implements QuickActionRe
} }
view.setMapPosition(previousMapPosition); view.setMapPosition(previousMapPosition);
inChangeMarkerPositionMode = false; inMovingMarkerMode = false;
mark(View.VISIBLE, R.id.map_ruler_layout, mark(View.VISIBLE, R.id.map_ruler_layout,
R.id.map_left_widgets_panel, R.id.map_right_widgets_panel, R.id.map_center_info); R.id.map_left_widgets_panel, R.id.map_right_widgets_panel, R.id.map_center_info);
@ -293,7 +293,7 @@ public class MapQuickActionLayer extends OsmandMapLayer implements QuickActionRe
@Override @Override
public boolean onSingleTap(PointF point, RotatedTileBox tileBox) { public boolean onSingleTap(PointF point, RotatedTileBox tileBox) {
if (isInChangeMarkerPositionMode() && !pressedQuickActionWidget(point.x, point.y)) { if (isInMovingMarkerMode() && !pressedQuickActionWidget(point.x, point.y)) {
setLayerState(false); setLayerState(false);
return true; return true;
} else } else
@ -307,7 +307,7 @@ public class MapQuickActionLayer extends OsmandMapLayer implements QuickActionRe
@Override @Override
public void onDraw(Canvas canvas, RotatedTileBox box, DrawSettings settings) { public void onDraw(Canvas canvas, RotatedTileBox box, DrawSettings settings) {
boolean nightMode = settings != null && settings.isNightMode(); boolean nightMode = settings != null && settings.isNightMode();
if (isInChangeMarkerPositionMode()) { if (isInMovingMarkerMode()) {
canvas.translate(box.getCenterPixelX() - contextMarker.getWidth() / 2, box.getCenterPixelY() - contextMarker.getHeight()); canvas.translate(box.getCenterPixelX() - contextMarker.getWidth() / 2, box.getCenterPixelY() - contextMarker.getHeight());
contextMarker.draw(canvas); contextMarker.draw(canvas);
} }
@ -356,8 +356,8 @@ public class MapQuickActionLayer extends OsmandMapLayer implements QuickActionRe
return new PointF(tb.getPixWidth() / 2, tb.getPixHeight() / 2); return new PointF(tb.getPixWidth() / 2, tb.getPixHeight() / 2);
} }
public boolean isInChangeMarkerPositionMode() { public boolean isInMovingMarkerMode() {
return isLayerOn && inChangeMarkerPositionMode; return isLayerOn && inMovingMarkerMode;
} }
public boolean isLayerOn() { public boolean isLayerOn() {

View file

@ -46,6 +46,7 @@ public class MapInfoWidgetsFactory {
CONTEXT_MENU, CONTEXT_MENU,
TRACK_DETAILS, TRACK_DETAILS,
DISCOUNT, DISCOUNT,
MEASUREMENT_TOOL
} }
public TextInfoWidget createAltitudeControl(final MapActivity map) { public TextInfoWidget createAltitudeControl(final MapActivity map) {