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

This commit is contained in:
Victor Shcherb 2015-09-14 01:00:02 +08:00
commit ee226bb53b
79 changed files with 1737 additions and 754 deletions

View file

@ -600,11 +600,12 @@ public class RouteResultPreparation {
// mpi = MapUtils.degreesDiff(prev.getBearingEnd(), begin);
}
if (mpi >= TURN_DEGREE_MIN) {
if (mpi < 60) {
if (mpi < 45) {
// Slight turn detection here causes many false positives where drivers would expect a "normal" TL. Best use limit-angle=TURN_DEGREE_MIN, this reduces TSL to the turn-lanes cases.
t = TurnType.valueOf(TurnType.TSLL, leftSide);
} else if (mpi < 120) {
t = TurnType.valueOf(TurnType.TL, leftSide);
} else if (mpi < 135 || leftSide) {
} else if (mpi < 150 || leftSide) {
t = TurnType.valueOf(TurnType.TSHL, leftSide);
} else {
t = TurnType.valueOf(TurnType.TU, leftSide);
@ -612,11 +613,11 @@ public class RouteResultPreparation {
int[] lanes = getTurnLanesInfo(prev, t.getValue());
t.setLanes(lanes);
} else if (mpi < -TURN_DEGREE_MIN) {
if (mpi > -60) {
if (mpi > -45) {
t = TurnType.valueOf(TurnType.TSLR, leftSide);
} else if (mpi > -120) {
t = TurnType.valueOf(TurnType.TR, leftSide);
} else if (mpi > -135 || !leftSide) {
} else if (mpi > -150 || !leftSide) {
t = TurnType.valueOf(TurnType.TSHR, leftSide);
} else {
t = TurnType.valueOf(TurnType.TRU, leftSide);

Binary file not shown.

After

Width:  |  Height:  |  Size: 2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

View file

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

View file

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

View file

@ -6,6 +6,21 @@
android:paddingRight="7dp"
android:stretchColumns="1">
<TableRow>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/favourites_edit_dialog_name" />
<EditText
android:id="@+id/nameEditText"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="5dp"
android:layout_marginRight="5dp" />
</TableRow>
<TableRow>
<TextView

View file

@ -4,7 +4,7 @@
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="?attr/bg_color"
android:background="?attr/spinnerListBackground"
android:clickable="true"
android:orientation="vertical"
tools:context="net.osmand.plus.osmedit.EditPoiFragment">
@ -97,7 +97,7 @@
android:id="@+id/tab_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/pstsTabBackground"
android:background="?attr/bg_color"
app:layout_scrollFlags="scroll"
app:tabIndicatorColor="?attr/pstsIndicatorColor"
app:tabSelectedTextColor="?attr/pstsIndicatorColor"
@ -117,7 +117,7 @@
android:id="@+id/buttonDivider"
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="@color/divider_color"/>
android:background="?attr/dashboard_divider"/>
<LinearLayout
android:layout_width="fill_parent"
@ -128,18 +128,16 @@
<net.osmand.plus.widgets.ButtonEx
android:id="@+id/cancelButton"
style="@style/DashboardGeneralButton"
android:height="48dp"
android:layout_height="48dp"
android:gravity="center"
android:text="@string/shared_string_cancel"
android:textColor="@color/dashboard_general_button_text_light"
app:textAllCapsCompat="true"/>
<net.osmand.plus.widgets.ButtonEx
android:id="@+id/saveButton"
style="@style/DashboardGeneralButton"
android:height="48dp"
android:layout_height="48dp"
android:gravity="center"
android:textColor="@color/dashboard_general_button_text_light"
app:textAllCapsCompat="true"
tools:text="Save"/>
</LinearLayout>

View file

@ -2,117 +2,122 @@
<android.support.v4.widget.NestedScrollView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:osmand="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:tools="http://schemas.android.com/tools"
android:theme="?attr/new_app_theme">
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
android:layout_height="wrap_content">
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="14dp"
android:layout_marginRight="14dp"
android:layout_marginTop="14dp"
android:background="?attr/bg_card"
android:layout_height="match_parent"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="37dp"
android:gravity="center">
android:layout_height="wrap_content"
android:layout_marginLeft="14dp"
android:layout_marginRight="14dp"
android:layout_marginTop="14dp"
android:background="?attr/bg_card"
android:orientation="vertical">
<net.osmand.plus.widgets.TextViewEx
android:layout_width="120dp"
android:layout_height="wrap_content"
android:layout_marginLeft="16dp"
android:layout_marginRight="16dp"
android:text="@string/tag_poi_name"
android:textColor="?android:attr/textColorPrimary"
android:textSize="@dimen/default_desc_text_size"
osmand:typeface="@string/font_roboto_regular"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="37dp"
android:gravity="center">
<net.osmand.plus.widgets.TextViewEx
android:layout_width="120dp"
android:layout_height="wrap_content"
android:layout_marginLeft="16dp"
android:layout_marginRight="16dp"
android:text="@string/tag_poi_name"
android:textColor="?android:attr/textColorPrimary"
android:textSize="@dimen/default_desc_text_size"
osmand:typeface="@string/font_roboto_regular"/>
<View
android:layout_width="1dp"
android:layout_height="match_parent"
android:background="?attr/dashboard_divider"/>
<net.osmand.plus.widgets.TextViewEx
android:id="@+id/nameTextView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="16dp"
android:layout_marginRight="16dp"
android:textColor="?android:attr/textColorPrimary"
android:textSize="@dimen/default_desc_text_size"
osmand:typeface="@string/font_roboto_medium"
tools:text="poi name"/>
</LinearLayout>
<View
android:layout_width="1dp"
android:layout_height="match_parent"
android:background="@color/divider_color"/>
<net.osmand.plus.widgets.TextViewEx
android:id="@+id/nameTextView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="16dp"
android:layout_marginRight="16dp"
android:textColor="?android:attr/textColorPrimary"
android:textSize="@dimen/default_desc_text_size"
osmand:typeface="@string/font_roboto_medium"
tools:text="poi name"/>
</LinearLayout>
android:layout_height="1dp"
android:background="?attr/dashboard_divider"/>
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="@color/divider_color"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="37dp"
android:gravity="center">
<net.osmand.plus.widgets.TextViewEx
android:id="@+id/amenityTagTextView"
android:layout_width="120dp"
android:layout_height="wrap_content"
android:layout_marginLeft="16dp"
android:layout_marginRight="16dp"
android:text="@string/tag_poi_amenity"
android:textColor="?android:attr/textColorPrimary"
android:textSize="@dimen/default_desc_text_size"
osmand:typeface="@string/font_roboto_regular"/>
<View
android:layout_width="1dp"
android:layout_height="match_parent"
android:background="?attr/dashboard_divider"/>
<net.osmand.plus.widgets.TextViewEx
android:id="@+id/amenityTextView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="16dp"
android:layout_marginRight="16dp"
android:textColor="?android:attr/textColorPrimary"
android:textSize="@dimen/default_desc_text_size"
osmand:typeface="@string/font_roboto_medium"
tools:text="landmark"/>
</LinearLayout>
</LinearLayout>
<LinearLayout
android:id="@+id/editTagsList"
android:layout_width="match_parent"
android:layout_height="37dp"
android:gravity="center">
android:layout_height="wrap_content"
android:orientation="vertical"
android:saveEnabled="false"/>
<net.osmand.plus.widgets.TextViewEx
android:id="@+id/amenityTagTextView"
android:layout_width="120dp"
android:layout_height="wrap_content"
android:layout_marginLeft="16dp"
android:layout_marginRight="16dp"
android:text="@string/tag_poi_amenity"
android:textColor="?android:attr/textColorPrimary"
android:textSize="@dimen/default_desc_text_size"
osmand:typeface="@string/font_roboto_regular"/>
<View
android:layout_width="1dp"
android:layout_height="match_parent"
android:background="@color/divider_color"/>
<net.osmand.plus.widgets.TextViewEx
android:id="@+id/amenityTextView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="16dp"
android:layout_marginRight="16dp"
android:textColor="?android:attr/textColorPrimary"
android:textSize="@dimen/default_desc_text_size"
osmand:typeface="@string/font_roboto_medium"
tools:text="landmark"/>
</LinearLayout>
<net.osmand.plus.widgets.ButtonEx
android:id="@+id/addTagButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="12dp"
android:layout_marginTop="16dp"
android:text="@string/add_tag"
android:textSize="@dimen/default_sub_text_size"
osmand:typeface="@string/font_roboto_medium"/>
</LinearLayout>
<LinearLayout
android:id="@+id/editTagsList"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:saveEnabled="false"/>
<net.osmand.plus.widgets.ButtonEx
android:id="@+id/addTagButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="12dp"
android:layout_marginTop="16dp"
android:text="@string/add_tag"
android:textSize="@dimen/default_sub_text_size"
osmand:typeface="@string/font_roboto_medium"/>
<!--XXX due to bug in NestedScroolView-->
<Space
android:id="@+id/screenFiller"
android:layout_width="match_parent"
android:layout_height="500dp"/>
</LinearLayout>
android:layout_height="match_parent"/>
</FrameLayout>
</android.support.v4.widget.NestedScrollView>

View file

@ -4,12 +4,12 @@
xmlns:osmand="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">
android:layout_height="wrap_content">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="@attr/new_app_theme">
osmand:theme="?attr/new_app_theme">
<net.osmand.plus.widgets.TextViewEx
android:id="@+id/contactInfoTextView"
@ -124,10 +124,11 @@
android:textSize="@dimen/default_sub_text_size"
osmand:typeface="@string/font_roboto_medium"/>
<!--XXX due to bug in NestedScroolView-->
<!--XXX due to bug in NestedScrollView-->
<Space
android:id="@+id/screenFiller"
android:layout_width="match_parent"
android:layout_height="500dp"
tools:visibility="gone"/>
android:layout_height="match_parent"
tools:visibility="visible"/>
</RelativeLayout>
</android.support.v4.widget.NestedScrollView>

View file

@ -1,32 +1,31 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
<LinearLayout
android:id="@+id/LinearLayout1"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_marginLeft="5dip"
android:layout_marginRight="5dip">
android:orientation="horizontal">
<ImageView
android:layout_marginLeft="14dip"
android:id="@+id/icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:visibility="gone"
android:layout_gravity="center_vertical"
android:layout_marginLeft="24dp"
android:gravity="center"
android:layout_gravity="center_vertical" />
android:visibility="gone"/>
<TextView
android:id="@+id/title"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginLeft="12dip"
android:layout_marginTop="11dip"
android:layout_marginBottom="11dip"
android:layout_marginLeft="12dp"
android:layout_marginTop="11dp"
android:layout_weight="1"
android:gravity="center_vertical"
android:text="@string/layer_poi"
android:textSize="@dimen/default_list_text_size"
android:layout_weight="1" />
android:textSize="@dimen/default_list_text_size"/>
<LinearLayout
android:layout_width="wrap_content"
@ -37,17 +36,17 @@
android:id="@+id/icon_settings"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:focusable="false"
android:gravity="center_vertical"
android:visibility="gone"
android:focusable="false" />
android:visibility="gone"/>
<!-- android:button="@drawable/ic_btn_wocheckbox" -->
<CheckBox
android:id="@+id/check_item"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="6dip"
android:focusable="false" />
android:layout_marginRight="24dp"
android:focusable="false"/>
</LinearLayout>
</LinearLayout>

View file

@ -1,195 +1,205 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout android:id="@+id/context_menu_layout"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@android:color/transparent"
android:orientation="vertical">
<FrameLayout
android:id="@+id/context_menu_layout"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@android:color/transparent"
android:orientation="vertical">
<LinearLayout
android:id="@+id/context_menu_shadow_view"
android:layout_width="fill_parent"
android:layout_height="0dp"
android:layout_weight="0"
android:layout_height="fill_parent"
android:gravity="center"
android:orientation="vertical"/>
<LinearLayout
android:id="@+id/context_menu_main"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:background="?attr/bg_map_context_menu"
android:layout_height="fill_parent"
android:orientation="vertical">
<LinearLayout
android:id="@+id/context_menu_top_view"
android:baselineAligned="false"
android:id="@+id/context_menu_top_shadow"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_height="20dp"
android:orientation="horizontal">
<LinearLayout
android:id="@+id/context_menu_icon_layout"
android:orientation="horizontal"
android:layout_width="42dp"
android:layout_height="match_parent">
<ImageView
android:id="@+id/context_menu_icon_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:scaleType="center"
android:layout_marginStart="12dp"
android:layout_marginLeft="12dp"
android:layout_marginTop="18dp"
android:src="@drawable/ic_action_building_number"/>
</LinearLayout>
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_marginTop="15dp"
android:layout_marginBottom="16dp"
android:orientation="vertical">
<TextView
android:id="@+id/context_menu_line1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="12dp"
android:layout_marginRight="12dp"
android:text="@string/search_address_building"
android:textSize="@dimen/default_list_text_size_large"
android:textColor="?android:textColorPrimary"
android:textStyle="bold"/>
<TextView
android:id="@+id/context_menu_line2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="12dp"
android:layout_marginRight="12dp"
android:layout_marginTop="4dp"
android:text="@string/other_location"
android:textColor="?android:textColorSecondary"
android:textSize="@dimen/default_desc_text_size"/>
</LinearLayout>
<LinearLayout
android:id="@+id/context_menu_close_btn_layout"
android:orientation="horizontal"
android:layout_width="32dp"
android:layout_height="match_parent">
<ImageView
android:id="@+id/context_menu_close_btn_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="top"
android:layout_marginTop="12dp"
android:scaleType="center"
android:src="@drawable/ic_action_remove_dark"/>
</LinearLayout>
</LinearLayout>
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="?attr/dashboard_divider"/>
<LinearLayout
android:id="@+id/context_menu_buttons"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="54dp">
<ImageButton
android:id="@+id/context_menu_route_button"
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:layout_gravity="center_vertical"
android:layout_weight="1"
android:scaleType="center"
android:background="?attr/dashboard_button"
android:src="@drawable/map_directions"/>
<View
android:layout_height="match_parent"
android:layout_width="1dp"
android:background="?attr/dashboard_divider"/>
<ImageButton
android:id="@+id/context_menu_fav_button"
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:layout_gravity="center_vertical"
android:layout_weight="1"
android:scaleType="center"
android:background="?attr/dashboard_button"
android:src="@drawable/ic_action_fav_dark"/>
<View
android:layout_height="match_parent"
android:layout_width="1dp"
android:background="?attr/dashboard_divider"/>
<ImageButton
android:id="@+id/context_menu_share_button"
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:layout_gravity="center_vertical"
android:layout_weight="1"
android:scaleType="center"
android:background="?attr/dashboard_button"
android:src="@drawable/abc_ic_menu_share_mtrl_alpha"/>
<View
android:layout_height="match_parent"
android:layout_width="1dp"
android:background="?attr/dashboard_divider"/>
<ImageButton
android:id="@+id/context_menu_more_button"
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:layout_gravity="center_vertical"
android:layout_weight="1"
android:scaleType="center"
android:background="?attr/dashboard_button"
android:src="@drawable/ic_overflow_menu_white"/>
</LinearLayout>
<LinearLayout
android:id="@+id/context_menu_bottom_view"
android:id="@+id/context_menu_top_shadow_all"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:background="?attr/ctx_menu_info_view_bg">
android:background="?attr/bg_map_context_menu"
android:orientation="vertical">
<LinearLayout
android:id="@+id/context_menu_top_view"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:baselineAligned="false"
android:orientation="horizontal">
<LinearLayout
android:id="@+id/context_menu_icon_layout"
android:layout_width="42dp"
android:layout_height="match_parent"
android:orientation="horizontal">
<ImageView
android:id="@+id/context_menu_icon_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="12dp"
android:layout_marginStart="12dp"
android:layout_marginTop="18dp"
android:scaleType="center"
android:src="@drawable/ic_action_building_number"/>
</LinearLayout>
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginBottom="16dp"
android:layout_marginTop="15dp"
android:layout_weight="1"
android:orientation="vertical">
<TextView
android:id="@+id/context_menu_line1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="12dp"
android:layout_marginRight="12dp"
android:text="@string/search_address_building"
android:textColor="?android:textColorPrimary"
android:textSize="@dimen/default_list_text_size_large"/>
<TextView
android:id="@+id/context_menu_line2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="12dp"
android:layout_marginRight="12dp"
android:layout_marginTop="4dp"
android:text="@string/other_location"
android:textColor="?android:textColorSecondary"
android:textSize="@dimen/default_desc_text_size"/>
</LinearLayout>
<LinearLayout
android:id="@+id/context_menu_close_btn_layout"
android:layout_width="32dp"
android:layout_height="match_parent"
android:orientation="horizontal">
<ImageView
android:id="@+id/context_menu_close_btn_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="top"
android:layout_marginTop="12dp"
android:scaleType="center"
android:src="@drawable/ic_action_remove_dark"/>
</LinearLayout>
</LinearLayout>
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="?attr/dashboard_divider"/>
<LinearLayout
android:id="@+id/context_menu_buttons"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="54dp">
<ImageButton
android:id="@+id/context_menu_route_button"
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:layout_gravity="center_vertical"
android:layout_weight="1"
android:background="?attr/dashboard_button"
android:scaleType="center"
android:src="@drawable/map_directions"/>
<View
android:layout_width="1dp"
android:layout_height="match_parent"
android:background="?attr/dashboard_divider"/>
<ImageButton
android:id="@+id/context_menu_fav_button"
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:layout_gravity="center_vertical"
android:layout_weight="1"
android:background="?attr/dashboard_button"
android:scaleType="center"
android:src="@drawable/ic_action_fav_dark"/>
<View
android:layout_width="1dp"
android:layout_height="match_parent"
android:background="?attr/dashboard_divider"/>
<ImageButton
android:id="@+id/context_menu_share_button"
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:layout_gravity="center_vertical"
android:layout_weight="1"
android:background="?attr/dashboard_button"
android:scaleType="center"
android:src="@drawable/abc_ic_menu_share_mtrl_alpha"/>
<View
android:layout_width="1dp"
android:layout_height="match_parent"
android:background="?attr/dashboard_divider"/>
<ImageButton
android:id="@+id/context_menu_more_button"
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:layout_gravity="center_vertical"
android:layout_weight="1"
android:background="?attr/dashboard_button"
android:scaleType="center"
android:src="@drawable/ic_overflow_menu_white"/>
</LinearLayout>
</LinearLayout>
</LinearLayout>
<ScrollView
android:id="@+id/context_menu_bottom_scroll"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="?attr/ctx_menu_info_view_bg"
android:fillViewport="true">
<LinearLayout
android:id="@+id/context_menu_bottom_border"
android:layout_width="fill_parent"
android:layout_height="0dp"
android:background="?attr/ctx_menu_info_view_bg"
android:orientation="vertical">
<LinearLayout
android:id="@+id/context_menu_bottom_view"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
</LinearLayout>
</ScrollView>
</LinearLayout>
</LinearLayout>
</FrameLayout>

View file

@ -32,7 +32,7 @@
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="@color/divider_color"/>
android:background="?android:textColorSecondary"/>
</LinearLayout>
<LinearLayout
@ -59,13 +59,13 @@
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="@color/divider_color"/>
android:background="?android:textColorSecondary"/>
</LinearLayout>
<View
android:layout_width="16dp"
android:layout_height="1dp"
android:background="@color/divider_color"/>
android:background="?android:textColorSecondary"/>
<LinearLayout
android:layout_width="wrap_content"
@ -84,7 +84,7 @@
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="@color/divider_color"/>
android:background="?android:textColorSecondary"/>
</LinearLayout>
</LinearLayout>

View file

@ -396,14 +396,14 @@
<string name="poi_chalet">Шале</string>
<string name="poi_place_of_worship">Месца пакланеньня</string>
<string name="poi_religion_christian">Храм, царква (капліца)</string>
<string name="poi_religion_jewish">Сынагога</string>
<string name="poi_religion_muslim">Мячэт</string>
<string name="poi_religion_sikh">Месца пакланеньня: сыкхізм</string>
<string name="poi_religion_buddhist">Месца пакланеньня: будызм</string>
<string name="poi_religion_hindu">Месца пакланеньня: індуізм</string>
<string name="poi_religion_shinto">Месца пакланеньня: сінтаізм</string>
<string name="poi_religion_taoist">Месца пакланеньня: даасізм</string>
<string name="poi_religion_christian">Хрысьціянства</string>
<string name="poi_religion_jewish">Юдаізм</string>
<string name="poi_religion_muslim">Іслам</string>
<string name="poi_religion_sikh">Сыкхізм</string>
<string name="poi_religion_buddhist">Будызм</string>
<string name="poi_religion_hindu">Індуізм</string>
<string name="poi_religion_shinto">Сінтаізм</string>
<string name="poi_religion_taoist">Даасізм</string>
<string name="poi_monastery">Кляштар</string>
<string name="poi_historic_monastery">Гістарычны кляштар</string>
<string name="poi_wayside_cross">Прыдарожны крыж</string>
@ -1065,4 +1065,57 @@
<string name="poi_military_office">Ваенкамат</string>
<string name="poi_notary">Натарыўс</string>
<string name="poi_landfill_waste_nuclear">Ядравыя адыходы</string>
<string name="poi_population">Насельніцтва</string>
<string name="poi_trees_pomegranate">Гранат</string>
<string name="poi_trees_coffea">Кава</string>
<string name="poi_trees_rubber">Каўчук</string>
<string name="poi_trees_mango">Манга</string>
<string name="poi_trees_nectorine">Нэктарын</string>
<string name="poi_religion_voodoo">Вуду</string>
<string name="poi_religion_pagan">Паганства</string>
<string name="poi_religion_zoroastrian">Зараастрызм</string>
<string name="poi_denomination_catholic">Каталіцызм</string>
<string name="poi_denomination_baptist">Баптызм</string>
<string name="poi_denomination_roman_catholic">Рымскі каталіцызм</string>
<string name="poi_denomination_orthodox">Праваслаўе</string>
<string name="poi_denomination_lutheran">Лютэранства</string>
<string name="poi_denomination_sunni">Сунізм</string>
<string name="poi_denomination_protestant">Пратэстантызм</string>
<string name="poi_denomination_methodist">Мэтадызм</string>
<string name="poi_denomination_anglican">Англіканства</string>
<string name="poi_denomination_russian_orthodox">Расейкае праваслаўе</string>
<string name="poi_denomination_greek_orthodox">Грэцкае праваслаўе</string>
<string name="poi_denomination_reformed">Кальвінізм</string>
<string name="poi_denomination_seventh_day_adventist">Адвентысты сёмага дня</string>
<string name="poi_denomination_new_apostolic">Новаапостальская царква</string>
<string name="poi_denomination_church_of_england">Царква Ангельшчыны</string>
<string name="poi_denomination_episcopal">Епіскапальная царква</string>
<string name="poi_denomination_united">Аб\'яднаная царква</string>
<string name="poi_denomination_greek_catholic">Грэка-каталіцызм</string>
<string name="poi_denomination_tibetan">Тыбецкі будызм</string>
<string name="poi_denomination_church_of_scotland">Царква Шатляндыі</string>
<string name="poi_denomination_salvation_army">Армія выратаваньня</string>
<string name="poi_denomination_iglesia_ni_cristo">Царква Хрыста</string>
<string name="poi_denomination_quaker">Квакерства</string>
<string name="poi_denomination_bulgarian_orthodox">Баўгарскае праваслаўе</string>
<string name="poi_denomination_nondenominational">Без дэнамінацыі</string>
<string name="poi_denomination_old_believers">Стараверства</string>
<string name="poi_denomination_serbian_orthodox">Сербскае праваслаўе</string>
<string name="poi_denomination_spiritist">Сьпірытызм</string>
<string name="poi_denomination_armenian_apostolic">Армянская апостальская царква</string>
<string name="poi_height">Вышыня</string>
<string name="poi_ele">Вышыня над узроўнем мора</string>
<string name="poi_start_date">Дата пачатку будаўніцтва</string>
<string name="poi_wheelchair">Даступна для інвалідных крэслаў</string>
<string name="poi_parking_underground">Падземная</string>
<string name="poi_parking_multi_storey">Шматпавярховая</string>
<string name="poi_trees_kiwi">Ківі</string>
<string name="poi_trees_coca">Кока</string>
<string name="poi_trees_tea">Гарбата</string>
<string name="poi_trees_peach">Персік</string>
</resources>

View file

@ -2088,4 +2088,7 @@
<string name="working_days">Працоўныя дні</string>
<string name="recent_places">Нядаўнія месцы</string>
<string name="favourites">Упадабанае</string>
</resources>
<string name="saved_at_time">Пасьпяхова захаваны ў: %1$s</string>
<string name="show_gpx">Паказаць GPX</string>
<string name="poi_deleted_localy">POI будуць выдаленыя, як толькі вы загрузіце вашы зьмены</string>
</resources>

View file

@ -2113,4 +2113,9 @@ Per retornar a l\'estil habitual dels mapes d\'OsmAnd, només cal desactivar aqu
<string name="please_specify_poi_type">Especifiqueu el tipus de PDI</string>
<string name="tag_poi_amenity">instal·lació comunitària</string>
<string name="number_of_rows_in_dash">Nombre de files al tauler %1$s</string>
</resources>
<string name="poi_action_delete">Suprimeix</string>
<string name="working_days">Dies laborables</string>
<string name="recent_places">Llocs recents</string>
<string name="favourites">Favorits</string>
<string name="saved_at_time">S\'ha desat correctament a: %1$s</string>
</resources>

View file

@ -2007,4 +2007,7 @@ s často kladenými otázkami.</string>
<string name="rate_this_app_long">Ohodnoťte prosím aplikaci OsmAnd na Google Play</string>
<string name="user_hates_app_get_feedback">Řekněte nám proč.</string>
<string name="user_hates_app_get_feedback_long">Sdělte nám prosím, co byste chtěli v této aplikaci změnit.</string>
<string name="shared_string_skip">Přeskočit</string>
<string name="app_name_osmand">OsmAnd</string>
<string name="plugin_settings">Moduly</string>
</resources>

View file

@ -355,14 +355,14 @@
<string name="poi_chalet">Udlejningshytte</string>
<string name="poi_place_of_worship">Sted for tilbedelse</string>
<string name="poi_religion_christian">Sted for tilbedelse: Kristen</string>
<string name="poi_religion_jewish">Sted for tilbedelse: Jødisk</string>
<string name="poi_religion_muslim">Sted for tilbedelse: Muslim</string>
<string name="poi_religion_sikh">Sted for tilbedelse: Sikh</string>
<string name="poi_religion_buddhist">Sted for tilbedelse: Buddhist</string>
<string name="poi_religion_hindu">Sted for tilbedelse: Hindu</string>
<string name="poi_religion_shinto">Sted for tilbedelse: Shinto</string>
<string name="poi_religion_taoist">Sted for tilbedelse: Taoistisk</string>
<string name="poi_religion_christian">Kristendom</string>
<string name="poi_religion_jewish">Jødedom</string>
<string name="poi_religion_muslim">Islam</string>
<string name="poi_religion_sikh">Sikhisme</string>
<string name="poi_religion_buddhist">Buddhisme</string>
<string name="poi_religion_hindu">Hinduisme</string>
<string name="poi_religion_shinto">Shinto</string>
<string name="poi_religion_taoist">Taoisme</string>
<string name="poi_monastery">Kloster</string>
<string name="poi_historic_monastery">Historisk kloster</string>
<string name="poi_wayside_cross">Vejside kors</string>
@ -1080,7 +1080,7 @@
<string name="poi_financial">Finansiel kontor</string>
<string name="poi_foundation">Fondskontor</string>
<string name="poi_religion_voodoo">Voodoo</string>
<string name="poi_religion_scientologist">Scientolog</string>
<string name="poi_religion_scientologist">Scientology</string>
<string name="poi_denomination_catholic">Katolsk</string>
<string name="poi_denomination_baptist">Baptist</string>
<string name="poi_denomination_roman_catholic">Romersk-katolsk</string>
@ -1117,11 +1117,11 @@
<string name="poi_denomination_coptic_orthodox">Koptisk-ortodoks</string>
<string name="poi_denomination_mahayana">Mahayana</string>
<string name="poi_religion_unitarian_universalist">Unitarisk universalistisk</string>
<string name="poi_religion_unitarian_universalist">Unitarisk universalisme</string>
<string name="poi_religion_multifaith">Multireligiøs</string>
<string name="poi_religion_jain">Jainisme</string>
<string name="poi_religion_spiritualist">Spiritist</string>
<string name="poi_religion_bahai">Bahai</string>
<string name="poi_religion_spiritualist">Spiritisme</string>
<string name="poi_religion_bahai">Bahaism</string>
<string name="poi_religion_pagan">Hedenskab</string>
<string name="poi_religion_tenrikyo">Tenrikyo</string>
<string name="poi_religion_zoroastrian">Zarathustrisme</string>
@ -1129,10 +1129,10 @@
<string name="poi_denomination_greek_orthodox">Græsk-ortodoks</string>
<string name="poi_denomination_seventh_day_adventist">Syvende Dags Adventist</string>
<string name="poi_denomination_new_apostolic">Nyapostolsk</string>
<string name="poi_denomination_church_of_england">Den engelske kirke</string>
<string name="poi_denomination_church_of_england">Den Engelske kirke</string>
<string name="poi_denomination_shia">Shiisme</string>
<string name="poi_denomination_united_reformed">Forenede reformerte kirke</string>
<string name="poi_denomination_church_of_scotland">Den skotske kirke</string>
<string name="poi_denomination_church_of_scotland">Den Skotske kirke</string>
<string name="poi_denomination_iglesia_ni_cristo">Iglesia ni cristo</string>
<string name="poi_denomination_mennonite">Mennonit</string>
<string name="poi_denomination_assemblies_of_god">Assemblies of god</string>
@ -1183,4 +1183,82 @@
<string name="poi_trade_agricultural_supplies">Landbrugsmaterialer</string>
<string name="poi_trade_tile">Flisematerialer</string>
<string name="poi_population">Befolkning</string>
<string name="poi_parking_multi_storey">P-hus</string>
<string name="poi_bicycle_parking_stands">Cykelsstativ</string>
<string name="poi_bicycle_parking_wall_loops">Væg sløjfer</string>
<string name="poi_bicycle_parking_building">Særlig bygning</string>
<string name="poi_bicycle_parking_shed">Cykelskur</string>
<string name="poi_bicycle_parking_bollard">Pullert</string>
<string name="poi_bicycle_parking_informal">Uformel</string>
<string name="poi_leaf_type_broadleaved">Bredbladet</string>
<string name="poi_leaf_type_needleleaved">Nålebladet</string>
<string name="poi_leaf_type_mixed">Blandet</string>
<string name="poi_leaf_type_leafless">Bladløs</string>
<string name="poi_trees_olive">Oliven</string>
<string name="poi_trees_apple">Æble</string>
<string name="poi_trees_oil">Palmeolie</string>
<string name="poi_trees_orange">Appelsin</string>
<string name="poi_trees_almond">Mandel</string>
<string name="poi_trees_banana">Banan</string>
<string name="poi_trees_hazel">Hassel</string>
<string name="poi_trees_coconut">Kokospalme</string>
<string name="poi_trees_persimmon">Ibenholt</string>
<string name="poi_trees_cherry">Kirsebær</string>
<string name="poi_trees_walnut">Valnød</string>
<string name="poi_trees_plum">Blommetræ</string>
<string name="poi_trees_peach">Fersken</string>
<string name="poi_trees_tea">Te</string>
<string name="poi_trees_coca">Cocabuske</string>
<string name="poi_trees_kiwi">Kiwi</string>
<string name="poi_trees_meadow_orchard">Eng med frugtplantage</string>
<string name="poi_trees_nectorine">Nektarin</string>
<string name="poi_trees_mango">Mango</string>
<string name="poi_trees_rubber">Gummitræ</string>
<string name="poi_trees_date">Daddelpalmeq</string>
<string name="poi_trees_coffea">Kaffetræ</string>
<string name="poi_trees_pomegranate">Granatæble</string>
<string name="poi_parking_underground">Párkeringskælder</string>
<string name="poi_bicycle_parking_rack">Reol</string>
<string name="poi_nudism_yes">Naturisme: tilladt</string>
<string name="poi_nudism_no">Naturisme: forbudt</string>
<string name="poi_nudism_obligatory">Naturisme: obligatorisk</string>
<string name="poi_nudism_customary">Naturisme: sædvane</string>
<string name="poi_nudism_permissive">Naturisme: liberalt</string>
<string name="poi_height">Højde</string>
<string name="poi_ele">Højde over havoverfladen</string>
<string name="poi_cooling_tower">Køletårn</string>
<string name="poi_rural">Landlig</string>
<string name="poi_seats">Sæder</string>
<string name="poi_backrest_yes">Ryglæn: Ja</string>
<string name="poi_backrest_no">Ryglæn: nej</string>
<string name="poi_intermittent">Intermitterende</string>
<string name="poi_deadlock">Blindgyde</string>
<string name="poi_generator_source_coal">Energikilde: kul</string>
<string name="poi_generator_source_gas">Energikilde: gas</string>
<string name="poi_generator_source_nuclear">Energikilde: nuklear</string>
<string name="poi_generator_source_solar">Energikilde: solar</string>
<string name="poi_generator_source_hydro">Energikilde: hydro</string>
<string name="poi_generator_source_wind">Energikilde: vind</string>
<string name="poi_generator_source_geothermal">Energikilde: geotermisk</string>
<string name="poi_generator_source_oil">Energikilde: olie</string>
<string name="poi_generator_source_diesel">Energikilde: diesel</string>
<string name="poi_aerialway_pylon">Svævebane pylon</string>
<string name="poi_power_tower">Soltårn</string>
<string name="poi_power_pole">Elmast</string>
<string name="poi_lighting_tower">Lysmast</string>
<string name="poi_urban">Bymæssig</string>
</resources>

View file

@ -2128,4 +2128,7 @@
<string name="recent_places">Seneste steder</string>
<string name="favourites">Favoritter</string>
<string name="poi_action_delete">slet</string>
</resources>
<string name="saved_at_time">Gemt korrekt: %1$s</string>
<string name="poi_deleted_localy">Interessepunkt (IP) vil blive slettet, når ændringer overføres</string>
<string name="show_gpx">Vis GPX</string>
</resources>

View file

@ -507,14 +507,14 @@
<string name="poi_hunting_lodge">Pabellón de caza</string>
<string name="poi_place_of_worship">Lugar de culto</string>
<string name="poi_religion_christian">Lugar de culto: cristiano</string>
<string name="poi_religion_jewish">Lugar de culto: judio</string>
<string name="poi_religion_muslim">Lugar de culto: musulmán</string>
<string name="poi_religion_sikh">Lugar de culto: sijista</string>
<string name="poi_religion_buddhist">Lugar de culto: budista</string>
<string name="poi_religion_hindu">Lugar de culto: hindú</string>
<string name="poi_religion_shinto">Lugar de culto: sintoísta</string>
<string name="poi_religion_taoist">Lugar de culto: taoísta</string>
<string name="poi_religion_christian">Cristianismo</string>
<string name="poi_religion_jewish">Judaísmo</string>
<string name="poi_religion_muslim">Islámismo</string>
<string name="poi_religion_sikh">Sijismo</string>
<string name="poi_religion_buddhist">Budismo</string>
<string name="poi_religion_hindu">Hinduismo</string>
<string name="poi_religion_shinto">Sintoísmo</string>
<string name="poi_religion_taoist">Taoísmo</string>
<string name="poi_internet_access_wlan">Internet inalámbrico</string>
<string name="poi_internet_access_terminal">PC con Internet</string>
@ -862,7 +862,7 @@
<string name="poi_garden_furniture">Almacén de jardinería</string>
<string name="poi_leather">Marroquinería</string>
<string name="poi_tyres">Neumáticos</string>
<string name="poi_watches">Relojería (watches)</string>
<string name="poi_watches">Relojería</string>
<string name="poi_games">Juegos</string>
<string name="poi_model">Modelos a escala</string>
<string name="poi_trophy">Trofeos, premios</string>
@ -1040,7 +1040,7 @@
<string name="poi_recycling_cardboard">Cartón</string>
<string name="poi_recycling_hardcore">Escombros</string>
<string name="poi_recycling_chipboard">Conglomerado</string>
<string name="poi_recycling_chipboard">Cartón prensado</string>
<string name="poi_mill_pond">Laguna de molino</string>
<string name="poi_twitter">Twitter</string>
<string name="poi_skype">Skype</string>
@ -1062,15 +1062,15 @@
<string name="poi_military_office">Oficina militar</string>
<string name="poi_religion_voodoo">Vudú</string>
<string name="poi_religion_unitarian_universalist">Unitariano universalista</string>
<string name="poi_religion_unitarian_universalist">Unitarianismo universal</string>
<string name="poi_religion_multifaith">Multireligioso</string>
<string name="poi_religion_jain">Jainista</string>
<string name="poi_religion_spiritualist">Espiritualista</string>
<string name="poi_religion_bahai">Bahaísta</string>
<string name="poi_religion_scientologist">Cienciologísta</string>
<string name="poi_religion_pagan">Pagano</string>
<string name="poi_religion_jain">Jainismo</string>
<string name="poi_religion_spiritualist">Espiritualismo</string>
<string name="poi_religion_bahai">Bahaísmo</string>
<string name="poi_religion_scientologist">Cienciologísmo</string>
<string name="poi_religion_pagan">Paganismo</string>
<string name="poi_religion_tenrikyo">Tenrikyō</string>
<string name="poi_religion_zoroastrian">Zoroástrica</string>
<string name="poi_religion_zoroastrian">Zoroástrismo</string>
<string name="poi_denomination_catholic">Católica</string>
<string name="poi_denomination_baptist">Bautista</string>
@ -1128,7 +1128,7 @@
<string name="poi_denomination_united_reformed">Reformada unida</string>
<string name="poi_denomination_reformed">Reformado</string>
<string name="poi_denomination_united">Unido</string>
<string name="poi_denomination_quaker">cuáquero</string>
<string name="poi_denomination_quaker">Cuáquero</string>
<string name="poi_denomination_shaktism">Shaktismo</string>
<string name="poi_denomination_uniting">Uniendo</string>
<string name="poi_denomination_wesleyan">Wesleyan</string>
@ -1165,4 +1165,81 @@
<string name="poi_trade_agricultural_supplies">Suministros agrícolas</string>
<string name="poi_trade_tile">Venta de azulejos</string>
</resources>
<string name="poi_population">Población</string>
<string name="poi_parking_underground">Subterráneo</string>
<string name="poi_parking_multi_storey">Varios pisos</string>
<string name="poi_bicycle_parking_stands">Anclajes</string>
<string name="poi_bicycle_parking_wall_loops">Anclajes de pared</string>
<string name="poi_bicycle_parking_informal">Informal</string>
<string name="poi_leaf_type_broadleaved">Hoja ancha</string>
<string name="poi_leaf_type_needleleaved">Hoja acicular</string>
<string name="poi_leaf_type_mixed">Mixto</string>
<string name="poi_leaf_type_leafless">Sin hojas</string>
<string name="poi_trees_olive">Olivo</string>
<string name="poi_trees_apple">Manzano</string>
<string name="poi_trees_oil">Aceite de palma</string>
<string name="poi_trees_orange">Naranjo</string>
<string name="poi_trees_almond">Almendro</string>
<string name="poi_trees_banana">Banano</string>
<string name="poi_trees_hazel">Avellano</string>
<string name="poi_trees_coconut">Cocotero</string>
<string name="poi_nudism_yes">Nudismo permitido</string>
<string name="poi_nudism_no">Nudismo prohibido</string>
<string name="poi_nudism_obligatory">Nudismo obligatorio</string>
<string name="poi_nudism_customary">Nudismo habitual</string>
<string name="poi_nudism_permissive">Nudismo permisivo</string>
<string name="poi_bicycle_parking_rack">Bastidor</string>
<string name="poi_bicycle_parking_building">Edificio especial</string>
<string name="poi_bicycle_parking_shed">Caseta</string>
<string name="poi_bicycle_parking_bollard">Bolardo</string>
<string name="poi_trees_persimmon">Caqui</string>
<string name="poi_trees_cherry">Cerezo</string>
<string name="poi_trees_walnut">Nogal</string>
<string name="poi_trees_plum">Ciruelo</string>
<string name="poi_trees_peach">Duraznero</string>
<string name="poi_trees_tea"></string>
<string name="poi_trees_coca">Coca</string>
<string name="poi_trees_kiwi">Kiwi</string>
<string name="poi_trees_meadow_orchard">Huerto</string>
<string name="poi_trees_mango">Mango</string>
<string name="poi_trees_rubber">Caucho</string>
<string name="poi_trees_date">Fecha</string>
<string name="poi_trees_coffea">Café</string>
<string name="poi_trees_pomegranate">Granada</string>
<string name="poi_trees_nectorine">Nectarina</string>
<string name="poi_height">Altura</string>
<string name="poi_ele">Elevación sobre el nivel del mar</string>
<string name="poi_aerialway_pylon">Torre de teleférico</string>
<string name="poi_power_tower">Torre de alta tensión</string>
<string name="poi_power_pole">Poste de energía</string>
<string name="poi_cooling_tower">Torre de enfriamiento</string>
<string name="poi_lighting_tower">Torre de iluminación</string>
<string name="poi_urban">Urbano</string>
<string name="poi_rural">Rural</string>
<string name="poi_seats">Asientos</string>
<string name="poi_backrest_yes">Con respaldo</string>
<string name="poi_backrest_no">Sin respaldo</string>
<string name="poi_intermittent">Intermitente</string>
<string name="poi_deadlock">Punto muerto</string>
<string name="poi_generator_source_coal">Fuente de energía: carbón</string>
<string name="poi_generator_source_gas">Fuente de energía: gas</string>
<string name="poi_generator_source_nuclear">Fuente de energía: nuclear</string>
<string name="poi_generator_source_solar">Fuente de energía: solar</string>
<string name="poi_generator_source_hydro">Fuente de energía: hidroeléctrica</string>
<string name="poi_generator_source_wind">Fuente de energía: viento</string>
<string name="poi_generator_source_geothermal">Fuente de energía: geotérmica</string>
<string name="poi_generator_source_oil">Fuente de energía: petróleo</string>
<string name="poi_generator_source_diesel">Fuente de energía: diésel</string>
</resources>

View file

@ -2048,4 +2048,7 @@
<string name="recent_places">Lugares recientes</string>
<string name="favourites">Favoritos</string>
<string name="poi_action_delete">borrar</string>
</resources>
<string name="saved_at_time">Guardado exitosamente como: %1$s</string>
<string name="poi_deleted_localy">El PDI se eliminará una vez subido los cambios</string>
<string name="show_gpx">Mostrar GPX</string>
</resources>

View file

@ -290,7 +290,7 @@
<string name="poi_chalet">Chalé</string>
<string name="poi_apartment">Apartamento</string>
<string name="poi_place_of_worship">Lugar de culto</string>
<string name="poi_religion_christian">Lugar de culto: cristiano</string>
<string name="poi_religion_christian">Cristianismo</string>
<string name="poi_internet_access_wlan">Acceso a Internet: inalámbrico</string>
<string name="poi_internet_access_wired">Acceso a Internet: cableado</string>
<string name="poi_internet_access_public">Acceso a Internet: público</string>
@ -559,12 +559,12 @@
<string name="poi_lodging">Alojamiento</string>
<string name="poi_wilderness_hut">Cabaña</string>
<string name="poi_religion_muslim">Lugar de culto: musulmán</string>
<string name="poi_religion_sikh">Lugar de culto: sijista</string>
<string name="poi_religion_buddhist">Lugar de culto: budista</string>
<string name="poi_religion_hindu">Lugar de culto: hindú</string>
<string name="poi_religion_shinto">Lugar de culto: sintoísta</string>
<string name="poi_religion_taoist">Lugar de culto: taoísta</string>
<string name="poi_religion_muslim">Islamismo</string>
<string name="poi_religion_sikh">Sijismo</string>
<string name="poi_religion_buddhist">Budismo</string>
<string name="poi_religion_hindu">Hinduismo</string>
<string name="poi_religion_shinto">Sintoísmo</string>
<string name="poi_religion_taoist">Taoísmo</string>
<string name="poi_wayside_cross">Crucero</string>
<string name="poi_wayside_shrine">Ermita en el camino</string>
@ -692,7 +692,7 @@
<string name="poi_attraction_amusement_ride">Atracción de feria</string>
<string name="poi_attraction_big_wheel">Noria</string>
<string name="poi_attraction_swing_carousel">Carrusel de oscilación</string>
<string name="poi_religion_jewish">Lugar de culto: judio</string>
<string name="poi_religion_jewish">Judaísmo</string>
<string name="poi_internet_access_service">Acceso a Internet: servicio</string>
<string name="poi_spring">Manantial</string>
@ -912,7 +912,7 @@
<string name="poi_enforcement_check">Control</string>
<string name="poi_enforcement_toll">Control de peaje</string>
<string name="poi_kissing_gate">Portilla giratoria</string>
<string name="poi_kissing_gate">Portilla en V</string>
<string name="poi_sally_port">Portón de muralla</string>
<string name="poi_ncn_ref">Red de nodos ciclista nacional</string>
<string name="poi_rcn_ref">Red de nodos ciclista regional</string>
@ -1065,15 +1065,15 @@
<string name="poi_military_office">Oficina militar</string>
<string name="poi_religion_voodoo">Vudú</string>
<string name="poi_religion_unitarian_universalist">Unitariano universalista</string>
<string name="poi_religion_unitarian_universalist">Unitarismo universal</string>
<string name="poi_religion_multifaith">Multireligioso</string>
<string name="poi_religion_jain">Jainista</string>
<string name="poi_religion_spiritualist">Espiritualista</string>
<string name="poi_religion_bahai">Bahaísta</string>
<string name="poi_religion_scientologist">Cienciologísta</string>
<string name="poi_religion_pagan">Pagano</string>
<string name="poi_religion_jain">Jainismo</string>
<string name="poi_religion_spiritualist">Espiritismo</string>
<string name="poi_religion_bahai">Bahaísmo</string>
<string name="poi_religion_scientologist">Cienciologísmo</string>
<string name="poi_religion_pagan">Paganismo</string>
<string name="poi_religion_tenrikyo">Tenrikyō</string>
<string name="poi_religion_zoroastrian">Zoroástrica</string>
<string name="poi_religion_zoroastrian">Zoroastrismo</string>
<string name="poi_denomination_catholic">Católica</string>
<string name="poi_denomination_baptist">Bautista</string>
@ -1111,7 +1111,7 @@
<string name="poi_denomination_congregational">Congregacional</string>
<string name="poi_denomination_old_believers">Antiguos creyentes</string>
<string name="poi_denomination_serbian_orthodox">Ortodoxa Serbia</string>
<string name="poi_denomination_spiritist">Espírita</string>
<string name="poi_denomination_spiritist">Espiritista</string>
<string name="poi_denomination_armenian_apostolic">Apostólico armenio</string>
<string name="poi_denomination_dutch_reformed">Holandés reformado</string>
<string name="poi_denomination_apostolic">Apostólica</string>
@ -1151,7 +1151,7 @@
<string name="poi_content_sewage">Aguas residuales (contenido)</string>
<string name="poi_content_gas">Gas (contenido)</string>
<string name="poi_content_biomass">Biomasa (contenido)</string>
<string name="poi_content_wastewater">Aguas residuales (contenido)</string>
<string name="poi_content_wastewater">Agua residual (contenido)</string>
<string name="poi_content_crop">Cultivo (contenido)</string>
<string name="poi_content_fodder">Forraje (contenido)</string>
<string name="poi_content_beer">Cerveza (contenido)</string>
@ -1168,4 +1168,80 @@
<string name="poi_trade_agricultural_supplies">Insumos agrícolas</string>
<string name="poi_trade_tile">Azulejos</string>
</resources>
<string name="poi_population">Población</string>
<string name="poi_parking_underground">Subterráneo</string>
<string name="poi_parking_multi_storey">Varios pisos</string>
<string name="poi_bicycle_parking_stands">Soportes</string>
<string name="poi_leaf_type_broadleaved">Hoja ancha</string>
<string name="poi_leaf_type_needleleaved">Hoja acicular</string>
<string name="poi_leaf_type_mixed">Mixto</string>
<string name="poi_leaf_type_leafless">Sin hojas</string>
<string name="poi_trees_olive">Olivo</string>
<string name="poi_trees_apple">Manzano</string>
<string name="poi_trees_oil">Aceite de palma</string>
<string name="poi_trees_orange">Naranjo</string>
<string name="poi_trees_almond">Almendro</string>
<string name="poi_trees_banana">Banano / Plátano</string>
<string name="poi_trees_hazel">Avellano</string>
<string name="poi_trees_coconut">Cocotéro</string>
<string name="poi_trees_persimmon">Caqui</string>
<string name="poi_trees_cherry">Cerezo</string>
<string name="poi_trees_walnut">Nogal</string>
<string name="poi_trees_plum">Ciruelo</string>
<string name="poi_trees_peach">Melocotón</string>
<string name="poi_trees_tea"></string>
<string name="poi_trees_coca">Coca</string>
<string name="poi_trees_kiwi">Kiwi</string>
<string name="poi_trees_meadow_orchard">Prado con huertos</string>
<string name="poi_trees_mango">Mango</string>
<string name="poi_trees_date">Fecha</string>
<string name="poi_trees_coffea">Café</string>
<string name="poi_trees_pomegranate">Granada</string>
<string name="poi_nudism_yes">Nudismo permitido</string>
<string name="poi_nudism_no">Nudismo prohibido</string>
<string name="poi_nudism_obligatory">Nudismo obligatorio</string>
<string name="poi_nudism_customary">Nudismo habitual</string>
<string name="poi_nudism_permissive">Nudismo permisivo</string>
<string name="poi_bicycle_parking_wall_loops">Anclajes de pared</string>
<string name="poi_bicycle_parking_rack">Bastidores</string>
<string name="poi_bicycle_parking_building">Edificio especial</string>
<string name="poi_bicycle_parking_shed">Caseta</string>
<string name="poi_bicycle_parking_bollard">Bolardo</string>
<string name="poi_bicycle_parking_informal">Informal</string>
<string name="poi_trees_rubber">Caucho</string>
<string name="poi_aerialway_pylon">Torre de teleférico</string>
<string name="poi_power_tower">Torre de alta tensión</string>
<string name="poi_power_pole">Poste de energía</string>
<string name="poi_cooling_tower">Torre de enfriamiento</string>
<string name="poi_lighting_tower">Torre de iluminación</string>
<string name="poi_height">Altura</string>
<string name="poi_ele">Altura sobre el nivel del mar</string>
<string name="poi_urban">Urbano</string>
<string name="poi_rural">Rural</string>
<string name="poi_seats">Asientos</string>
<string name="poi_backrest_yes">Con respaldo</string>
<string name="poi_backrest_no">Sin respaldo</string>
<string name="poi_intermittent">Intermitente</string>
<string name="poi_deadlock">Punto muerto</string>
<string name="poi_generator_source_coal">Fuente de energía: carbón</string>
<string name="poi_generator_source_gas">Fuente de energía: gas</string>
<string name="poi_generator_source_nuclear">Fuente de energía: nuclear</string>
<string name="poi_generator_source_solar">Fuente de energía: solar</string>
<string name="poi_generator_source_hydro">Fuente de energía: hidroeléctrica</string>
<string name="poi_generator_source_wind">Fuente de energía: viento</string>
<string name="poi_generator_source_geothermal">Fuente de energía: geotérmica</string>
<string name="poi_generator_source_oil">Fuente de energía: petróleo</string>
<string name="poi_generator_source_diesel">Fuente de energía: diésel</string>
</resources>

View file

@ -2161,7 +2161,7 @@
<string name="shared_string_undo">Deshacer</string>
<string name="shared_string_skip">Omitir</string>
<string name="app_name_osmand">OsmAnd</string>
<string name="offline_maps_and_navigation">Mapas y navegación fuera de línea</string>
<string name="offline_maps_and_navigation">Mapas y navegación\nfuera de línea</string>
<string name="commit_poi">Enviar PDI</string>
<string name="routing_attr_avoid_shuttle_train_name">Evitar tren de enlace</string>
<string name="routing_attr_avoid_shuttle_train_description">Evite tomar trenes de enlace</string>
@ -2186,4 +2186,7 @@
<string name="recent_places">Lugares recientes</string>
<string name="favourites">Favoritos</string>
<string name="poi_action_delete">borrar</string>
</resources>
<string name="saved_at_time">Guardado exitosamente en: %1$s</string>
<string name="poi_deleted_localy">El PDI se eliminará una vez subido los cambios</string>
<string name="show_gpx">Mostrar GPX</string>
</resources>

View file

@ -434,8 +434,8 @@
<string name="install_selected_build">Telepíted az OsmAnd alkalmazást - {0} innen: {1} {2} MB?</string>
<string name="loading_builds_failed">Az OsmAnd verziók listájának letöltése nem sikerült</string>
<string name="loading_builds">OsmAnd összeállítások töltése…</string>
<string name="select_build_to_install">A telepítéshez válassz egy OsmAnd buildet</string>
<string name="contribution_activity">Telepítési verzió</string>
<string name="select_build_to_install">Válassz egy OsmAnd buildet</string>
<string name="contribution_activity">Verzió telepítése</string>
<string name="gps_status_app_not_found">A GPS-állapot alkalmazás nincs telepítve. Megkeresi a piactéren?</string>
<string name="voice_is_not_available_msg">A beszéd alapú navigáció nem érhető el. A Beállítások → \'Általános\' → \'Hangutasítás\' menüben kiválaszthatsz, vagy letölthetsz hangcsomagokat.</string>
<string name="voice_is_not_available_title">Nincs kiválasztva hang adat</string>
@ -1186,7 +1186,7 @@
\n\t* Pebble óra támogatás "
</string>
<string name="street_name">Utca</string>
<string name="street_name">Utcanév</string>
<string name="hno">Házszám</string>
<string name="monitoring_settings">Útvonalrögzítés</string>
<string name="monitoring_settings_descr">Az útvonalaid felvételének beállításai</string>
@ -2044,4 +2044,24 @@
<string name="next_proceed">Tovább</string>
<string name="dahboard_options_dialog_title">Kezdőlap beállításai</string>
<string name="traffic_warning_hazard">Veszély</string>
</resources>
<string name="poi_action_delete">törlés</string>
<string name="shared_string_undo">VISSZAVON</string>
<string name="commit_poi">POI beküldése</string>
<string name="tab_title_basic">Alap</string>
<string name="tab_title_advanced">Haladó</string>
<string name="building_number">Házszám</string>
<string name="opening_at">Nyitás</string>
<string name="closing_at">Zárás</string>
<string name="tag_poi_name">név</string>
<string name="tag_poi_amenity">szolgáltatás</string>
<string name="contact_info">Elérhetőségek</string>
<string name="description">Leírás</string>
<string name="add_opening_hours">Nyitva tartás hozzáadása</string>
<string name="poi_dialog_poi_type">POI típus</string>
<string name="number_of_rows_in_dash">Sorok száma a kezdőlapon %1$s</string>
<string name="please_specify_poi_type">Kérlek add meg a POI típusát.</string>
<string name="working_days">Munkanapok</string>
<string name="recent_places">Gyakori helyek</string>
<string name="favourites">Kedvencek</string>
<string name="saved_at_time">Sikeresen mentve ekkor: %1$s</string>
</resources>

View file

@ -2170,4 +2170,7 @@ Si consiglia di aggiungere uno o più punti intermedi per migliorarne le prestaz
<string name="working_days">Giorni lavorativi</string>
<string name="recent_places">Luoghi recenti</string>
<string name="favourites">Preferiti</string>
<string name="saved_at_time">Salvato con successo in: %1$s</string>
<string name="poi_deleted_localy">I PDI verranno cancellati una volta caricate le modiche</string>
<string name="show_gpx">Visualizza GPX</string>
</resources>

View file

@ -751,7 +751,7 @@ POIの更新は利用できません</string>
<string name="cancel_navigation">ナビを停止</string>
<string name="clear_destination">選択した目的地、経由地点を削除します、よろしいですか?</string>
<string name="download_using_mobile_internet">現在Wi-Fiに接続されていません。現在のインターネット接続を使用したままダウンロードを続行しますか</string>
<string name="street_name">通り</string>
<string name="street_name">道路名称</string>
<string name="hno">家屋番号</string>
<string name="monitoring_settings">旅程の記録</string>
<string name="monitoring_settings_descr">移動中の経路記録に関する設定</string>
@ -2134,4 +2134,26 @@ POIの更新は利用できません</string>
<string name="app_name_osmand">OsmAnd</string>
<string name="offline_maps_and_navigation">Offline Maps\n&amp; Navigation</string>
<string name="commit_poi">POIを申請する</string>
<string name="av_locations_descr">GPXファイルに位置に関するメモを付ける</string>
<string name="av_locations">位置</string>
<string name="poi_action_delete">削除</string>
<string name="shared_string_card_was_hidden">項目は非表示</string>
<string name="building_number">棟の番号</string>
<string name="next_proceed"></string>
<string name="opening_at">~で開く</string>
<string name="closing_at">~で閉じる</string>
<string name="tag_poi_name">名称</string>
<string name="tag_poi_amenity">施設</string>
<string name="contact_info">連絡先</string>
<string name="description">説明</string>
<string name="add_opening_hours">開店時間を追記</string>
<string name="poi_dialog_poi_type">POIの種類</string>
<string name="number_of_rows_in_dash">ダッシュボード内の表示行数 %1$s</string>
<string name="please_specify_poi_type">POIの種類を指定してください。</string>
<string name="working_days">営業日</string>
<string name="recent_places">最近表示した場所</string>
<string name="favourites">お気に入り</string>
<string name="saved_at_time">正常に保存されました: %1$s</string>
<string name="poi_deleted_localy">POIをアップロードすると変更前の情報は削除されます</string>
<string name="show_gpx">GPXを表示</string>
</resources>

View file

@ -9,7 +9,7 @@
<string name="pref_raster_map">Zasoby mapy</string>
<string name="pref_vector_map">Ustawienia mapy wektorowej</string>
<string name="choose_auto_follow_route">Automatyczne środkowanie mapy</string>
<string name="choose_auto_follow_route_descr">Określ opóźnienie podążania mapy za aktualną lokalizacją</string>
<string name="choose_auto_follow_route_descr">Ustala opóźnienie podążania mapy za aktualną lokalizacją</string>
<string name="auto_follow_route_never">Nigdy (dotknij \'Idź\', aby rozpocząć ręcznie)</string>
<string name="auto_follow_route_navigation">Auto-podążanie za pozycją</string>
<string name="auto_follow_route_navigation_descr">Włącz podążanie za pozycją tylko w trybie nawigacji.</string>
@ -278,7 +278,7 @@
<string name="select_build_to_install">Wybierz, którą kompilację OsmAnd zainstalować</string>
<string name="contribution_activity">Specialne opcje dla wersji \"contribution\"</string>
<string name="gps_status_app_not_found">Nie zainstalowano aplikacji GPS status. Wyszukać ją w Market?</string>
<string name="voice_is_not_available_msg">Nawigacja głosowa jest niedostępna. Proszę przejść do „Ustawienia”→„Ogólne”→„Nawigacja głosowa”, wybrać zestaw poleceń głosowych i zainstalować go.</string>
<string name="voice_is_not_available_msg">Nawigacja głosowa jest niedostępna. Proszę przejść do „Ustawienia”→„Ogólne”→„Głos komunikatów”, wybrać zestaw komunikatów głosowych i zainstalować go.</string>
<string name="voice_is_not_available_title">Nie wybrano nawigacji głosowej</string>
<string name="daynight_mode_day">Dzień</string>
<string name="daynight_mode_night">Noc</string>
@ -395,7 +395,7 @@
<string name="menu_mute_off">Wyłącz dźwięk</string>
<string name="menu_mute_on">Włącz dźwięk</string>
<string name="voice_provider_descr">Wybiera głos komunikatów nawigatora</string>
<string name="voice_provider">Nawigacja głosowa</string>
<string name="voice_provider">Głos komunikatów</string>
<string name="voice_data_initializing">Inicjowanie danych głosowych…</string>
<string name="voice_data_not_supported">Niewspierana wersja danych głosowych</string>
<string name="voice_data_corrupted">Wybrane dane z głosem są uszkodzone</string>
@ -2086,7 +2086,7 @@ Afganistan, Afryka Południowa, Albania, Algieria, Andora, Angola, Anguilla, Ant
<string name="plugin_nautical_descr">"Umożliwia tworzenie map nawigacyjnych dla łodzi, żaglówek oraz innych sportów wodnych.\n\nSpecjalny dodatek do Osm And wstawia znaki nawigacyjne i oznaczenia map morskich dla nawigacji śródlądowej oraz przybrzeżnej. Opis każdego znaku dostarcza szczegółów potrzebnych do ich identyfikacji oraz ich przeznaczenia (kategoria, kształt, kolor, kolejność, odniesienie itd.).\n\nW razie potrzeby należy wyłączyć tę wtyczkę lub zmienić styl w opcjach \"Styl mapy\" w menu \"Konfiguracja mapy\", aby powrócić do jednego z typowych stylów map OsmAnd. "</string>
<string name="plugin_ski_descr">"Dodaje do OsmAnd szczegóły dotyczące stoków narciarskich, tras biegowych, tras skitour, kolejek linowych i wyciągów narciarskich na świecie. Trasy i szlaki są pokolorowane według trudności i przedstawione w specjalnym zimowym stylu mapy, imitującym krajobraz pokryty śniegiem.\n\nWłączenie tego widoku zmienia styl mapy na „Zima i narty”, ukazujący teren pokryty śniegiem. Widok można wyłączyć przez wyłączenie wtyczki lub zmianę stylu w menu „Styl mapy” w „Konfiguracji mapy”. "</string>
<string name="shared_string_message">Wiadomość</string>
<string name="shared_string_do_not_use">Nie używaj</string>
<string name="shared_string_do_not_use">Brak</string>
<string name="shared_string_address">Adres</string>
<string name="shared_string_show_description">Wyświetl opis</string>
<string name="shared_string_places">Miejsca</string>
@ -2215,4 +2215,25 @@ Afganistan, Afryka Południowa, Albania, Algieria, Andora, Angola, Anguilla, Ant
<string name="number_of_rows_in_dash">Ilość wierszy na ekranie głównym %1$s</string>
<string name="description">Opis</string>
<string name="poi_dialog_poi_type">Rodzaj POI</string>
</resources>
<string name="poi_action_delete">usuń</string>
<string name="building_number">Numer wersji</string>
<string name="av_locations_descr">Plik gpx z notatkami o lokalizacjach</string>
<string name="rendering_value_boldOutline_name">Pogrubione kontury</string>
<string name="download_live_updates">Aktualizacje na żywo</string>
<string name="commit_poi">Wyślij POI</string>
<string name="tab_title_basic">Podstawowe</string>
<string name="tab_title_advanced">Zaawansowane</string>
<string name="next_proceed">Następny</string>
<string name="opening_at">Otwarte od</string>
<string name="closing_at">Zamknięte od</string>
<string name="tag_poi_name">Nazwa</string>
<string name="tag_poi_amenity">Udogodnienia</string>
<string name="contact_info">Informacje kontaktowe</string>
<string name="add_opening_hours">Dodaj godziny otwarcia</string>
<string name="working_days">Dni robocze</string>
<string name="recent_places">Ostatnie miejsca</string>
<string name="favourites">Ulubione</string>
<string name="saved_at_time">Zapisano o: %1$s</string>
<string name="poi_deleted_localy">POI zostanie usunięty gdy tylko wyślesz swoje zmiany</string>
<string name="show_gpx">Pokaż GPX</string>
</resources>

View file

@ -517,14 +517,14 @@
<string name="poi_hunting_lodge">Pavilhão de caça</string>
<string name="poi_place_of_worship">Lugar de prática religiosa</string>
<string name="poi_religion_christian">Lugar de culto: cristão</string>
<string name="poi_religion_jewish">Lugar de culto: judaico</string>
<string name="poi_religion_muslim">Lugar de culto: muçulmano</string>
<string name="poi_religion_sikh">Lugar de culto: siquista</string>
<string name="poi_religion_buddhist">Lugar de culto: budista</string>
<string name="poi_religion_hindu">Lugar de culto: hindu</string>
<string name="poi_religion_shinto">Lugar de culto: xintoísta</string>
<string name="poi_religion_taoist">Lugar de culto: taoísta</string>
<string name="poi_religion_christian">Cristianismo</string>
<string name="poi_religion_jewish">Judaísmo</string>
<string name="poi_religion_muslim">Islamismo</string>
<string name="poi_religion_sikh">Sikhismo</string>
<string name="poi_religion_buddhist">Budismo</string>
<string name="poi_religion_hindu">Hinduísmo</string>
<string name="poi_religion_shinto">Xintoísmo</string>
<string name="poi_religion_taoist">Taoísmo</string>
<string name="poi_internet_access_wlan">Acesso à Internet: wlan</string>
<string name="poi_internet_access_terminal">Acesso à Internet: terminal</string>
@ -1064,18 +1064,18 @@
<string name="poi_religion_voodoo">Voodoo</string>
<string name="poi_religion_multifaith">Multirreligiosa</string>
<string name="poi_religion_spiritualist">Espiritualista</string>
<string name="poi_religion_bahai">Bahai</string>
<string name="poi_religion_scientologist">Cientologista</string>
<string name="poi_religion_pagan">Pagão</string>
<string name="poi_religion_spiritualist">Espiritualismo</string>
<string name="poi_religion_bahai">Bahaísmo</string>
<string name="poi_religion_scientologist">Cientologismo</string>
<string name="poi_religion_pagan">Paganismo</string>
<string name="poi_religion_zoroastrian">Zoroastrismo</string>
<string name="poi_denomination_catholic">Católica</string>
<string name="poi_denomination_baptist">Batista</string>
<string name="poi_denomination_roman_catholic">Católica romana</string>
<string name="poi_denomination_orthodox">Ortodoxo</string>
<string name="poi_religion_unitarian_universalist">Unitário-Universalista</string>
<string name="poi_religion_jain">Jainista</string>
<string name="poi_religion_unitarian_universalist">Unitário-Universalismo</string>
<string name="poi_religion_jain">Jainismo</string>
<string name="poi_religion_tenrikyo">Tenrikyo</string>
<string name="poi_denomination_lutheran">Luterana</string>
<string name="poi_denomination_sunni">Sunita</string>
@ -1166,4 +1166,52 @@
<string name="poi_trade_wood">Suprimentos de madeira</string>
<string name="poi_trade_tile">Suprimentos de telha</string>
<string name="poi_population">População</string>
<string name="poi_parking_underground">Subterrâneo</string>
<string name="poi_parking_multi_storey">Vários andares</string>
<string name="poi_bicycle_parking_stands">U-invertido</string>
<string name="poi_bicycle_parking_building">Edifício especial</string>
<string name="poi_bicycle_parking_shed">Galpão</string>
<string name="poi_bicycle_parking_bollard">Poste de amarração</string>
<string name="poi_bicycle_parking_informal">Informal</string>
<string name="poi_leaf_type_broadleaved">Latifoliadas</string>
<string name="poi_leaf_type_mixed">Mista</string>
<string name="poi_leaf_type_needleleaved">Acicular</string>
<string name="poi_leaf_type_leafless">Desfolhada</string>
<string name="poi_trees_olive">Oliveira</string>
<string name="poi_trees_apple">Macieira</string>
<string name="poi_trees_oil">Palmeira oleaginosa</string>
<string name="poi_trees_orange">Laranjeira</string>
<string name="poi_trees_almond">Amendoeira</string>
<string name="poi_trees_banana">Bananeira</string>
<string name="poi_trees_hazel">Aveleira</string>
<string name="poi_trees_coconut">Coqueiro</string>
<string name="poi_trees_persimmon">Caquizeiro</string>
<string name="poi_trees_cherry">Cerejeira</string>
<string name="poi_trees_walnut">Nogueira</string>
<string name="poi_trees_plum">Ameixeira</string>
<string name="poi_trees_peach">Pessegueiro</string>
<string name="poi_trees_kiwi">Kiwizeiro</string>
<string name="poi_trees_nectorine">Nectarineira</string>
<string name="poi_trees_mango">Mangueira</string>
<string name="poi_trees_rubber">Seringueira</string>
<string name="poi_trees_coffea">Cafeeiro</string>
<string name="poi_trees_pomegranate">Romãzeira</string>
<string name="poi_nudism_yes">Nudismo: autorizado</string>
<string name="poi_nudism_no">Nudismo: proibido</string>
<string name="poi_nudism_obligatory">Nudismo: obrigatório</string>
<string name="poi_nudism_customary">Nudismo: habitual</string>
<string name="poi_nudism_permissive">Nudismo: permissido</string>
<string name="poi_trees_date">Tamareira</string>
<string name="poi_trees_tea">Erveira</string>
<string name="poi_trees_coca">Coca</string>
<string name="poi_trees_meadow_orchard">Prado com pomar</string>
<string name="poi_height">Altura</string>
<string name="poi_ele">Altura acima do nível do mar</string>
</resources>

View file

@ -1817,4 +1817,7 @@
<string name="recent_places">Locais recentes</string>
<string name="favourites">Favoritos</string>
<string name="poi_action_delete">apagar</string>
</resources>
<string name="saved_at_time">Salvo com sucesso em: %1$s</string>
<string name="poi_deleted_localy">POI será apagado quando você enviar suas alterações</string>
<string name="show_gpx">Mostrar GPX</string>
</resources>

View file

@ -1677,4 +1677,38 @@
<string name="rendering_value_default13_name">Implicit(13)</string>
<string name="rendering_value_defaultTranslucentCyan_name">Implicit(cyan transparent)</string>
<string name="rendering_attr_currentTrackColor_name">Culoare GPX</string>
<string name="plugin_settings">Pluginuri</string>
<string name="routing_attr_avoid_shuttle_train_name">Evită transfer tren</string>
<string name="traffic_warning_hazard">Pericol</string>
<string name="routing_attr_avoid_shuttle_train_description">Evită transfer tren</string>
<string name="no_updates_available">Nu sunt disponibile update-uri.</string>
<string name="rendering_attr_currentTrackWidth_name">Lățime GPX</string>
<string name="download_live_updates">Update-uri in timp real</string>
<string name="rendering_value_boldOutline_name">Bold contur</string>
<string name="av_locations">Locații</string>
<string name="av_locations_descr">Fișier GPX cu notări locații</string>
<string name="rendering_value_red_name">Roșu</string>
<string name="rendering_value_translucent_red_name">Roșu transparent</string>
<string name="rendering_value_translucent_orange_name">Portocaliu transparent</string>
<string name="rendering_value_yellow_name">Galben</string>
<string name="rendering_value_translucent_yellow_name">Galben transparent</string>
<string name="rendering_value_lightgreen_name">Verde deschis</string>
<string name="rendering_value_translucent_lightgreen_name">Verde deschis transparent</string>
<string name="rendering_value_green_name">Verde</string>
<string name="rendering_value_translucent_green_name">Verde transparent</string>
<string name="rendering_value_lightblue_name">Albastru deschis</string>
<string name="rendering_value_translucent_lightblue_name">Albastru deschis transparent</string>
<string name="rendering_value_blue_name">Albastru</string>
<string name="rendering_value_translucent_blue_name">Albastru transparent</string>
<string name="rendering_value_purple_name">Violet</string>
<string name="rendering_value_translucent_purple_name">Violet transparent</string>
<string name="restart_is_required">Pentru a aplica modificările, este nevoie să restartați aplicația.</string>
<string name="light_theme">Deschisă</string>
<string name="dark_theme">Închisă</string>
<string name="lang_pms">Piemontez</string>
<string name="lang_bn">Bengali</string>
<string name="lang_sh">Sărbă-Croată</string>
<string name="archive_wikipedia_data">Aveți descărcate informații vechi din Wikipedia, incompatibile. Doriți să le arhivați?</string>
<string name="download_wikipedia_files">Doriți să descărcați informații adiționale din Wikipedia (%1$s MB) ?</string>
<string name="gps_network_not_enabled">Serviciul de localizare este oprit. Doriți să îl activați?</string>
</resources>

View file

@ -173,6 +173,7 @@
<string name="poi_aerialway_rope_tow">Движущийся канат</string>
<string name="poi_aerialway_goods">Грузовой подъёмник</string>
<string name="poi_aerialway_magic_carpet">Ленточный подъёмник</string>
<string name="poi_aerialway_pylon">Опора канатной дороги</string>
<string name="poi_tunnel">Туннель</string>
<string name="poi_bridge">Мост</string>
@ -196,11 +197,15 @@
<string name="poi_power_transformer">Трансформатор</string>
<string name="poi_power_plant">Электростанция</string>
<string name="poi_power_generator">Генератор</string>
<string name="poi_power_tower">Опора линии электропередач</string>
<string name="poi_power_pole">Столб линии электропередач</string>
<string name="poi_post_office">Почта</string>
<string name="poi_post_box">Почтовый ящик</string>
<string name="poi_telephone">Телефон</string>
<string name="poi_communication_tower">Вышка связи</string>
<string name="poi_cooling_tower">Градирня</string>
<string name="poi_lighting_tower">Осветительная вышка</string>
<string name="poi_telephone_exchange">АТС</string>
<string name="poi_recycling">Переработка отходов</string>
@ -437,14 +442,14 @@
<string name="poi_chalet">Шале</string>
<string name="poi_place_of_worship">Место поклонения</string>
<string name="poi_religion_christian">Храм, церковь (часовня)</string>
<string name="poi_religion_jewish">Синагога</string>
<string name="poi_religion_muslim">Мечеть</string>
<string name="poi_religion_sikh">Место поклонения: сикхизм</string>
<string name="poi_religion_buddhist">Место поклонения: буддизм</string>
<string name="poi_religion_hindu">Место поклонения: индуизм</string>
<string name="poi_religion_shinto">Место поклонения: синтоизм</string>
<string name="poi_religion_taoist">Место поклонения: даосизм</string>
<string name="poi_religion_christian">Христианство</string>
<string name="poi_religion_jewish">Иудаизм</string>
<string name="poi_religion_muslim">Мусульманство</string>
<string name="poi_religion_sikh">Сикхизм</string>
<string name="poi_religion_buddhist">Буддизм</string>
<string name="poi_religion_hindu">Индуизм</string>
<string name="poi_religion_shinto">Синтоизм</string>
<string name="poi_religion_taoist">Даосизм</string>
<string name="poi_monastery">Монастырь</string>
<string name="poi_historic_monastery">Исторический монастырь</string>
<string name="poi_wayside_cross">Придорожный крест</string>
@ -662,6 +667,7 @@
<string name="poi_town">Город (небольшой)</string>
<string name="poi_village">Деревня</string>
<string name="poi_hamlet">Деревня (небольшая)</string>
<string name="poi_suburb">Район</string>
<string name="poi_isolated_dwelling">Хутор</string>
<string name="poi_locality">Урочище</string>
@ -801,6 +807,7 @@
<string name="poi_neighbourhood">Микрорайон</string>
<string name="poi_residential">Жилой район</string>
<string name="poi_religious">Религиозное землепользование</string>
<string name="poi_general_tourist_attraction_yes">Основная туристическая достопримечательность</string>
<string name="poi_attraction_amusement_ride">Парк атракционов</string>
@ -851,6 +858,21 @@
<string name="poi_crossing_uncontrolled">Нерегулируемый</string>
<string name="poi_crossing_unmarked">Неразмеченный</string>
<string name="poi_population">Население</string>
<string name="poi_start_date">Дата начала постройки</string>
<string name="poi_wheelchair">Доступно для инвалидных кресел</string>
<string name="poi_wholesale">Опт</string>
<string name="poi_parking_underground">Подземная</string>
<string name="poi_parking_multi_storey">Многоэтажная</string>
<string name="poi_bicycle_parking_stands">Стойка</string>
<string name="poi_bicycle_parking_wall_loops">Крепление только для переднего колеса</string>
<string name="poi_bicycle_parking_rack">Рама</string>
<string name="poi_bicycle_parking_building">Специальное здание</string>
<string name="poi_bicycle_parking_shed">Навес</string>
<string name="poi_bicycle_parking_bollard">Столбик с креплением</string>
<string name="poi_bicycle_parking_informal">Неофициальная</string>
<string name="poi_access_private">Частный доступ</string>
<string name="poi_access_no">Нет доступа</string>
<string name="poi_access_destination">Доступ: пункт назначения</string>
@ -859,4 +881,96 @@
<string name="poi_access_delivery">Доступ только для доставки</string>
<string name="poi_access_agricultural">Доступ только для с/х техники</string>
</resources>
<string name="poi_denomination_catholic">Католицизм</string>
<string name="poi_denomination_baptist">Баптизм</string>
<string name="poi_denomination_roman_catholic">Римский католицизм</string>
<string name="poi_denomination_orthodox">Православие</string>
<string name="poi_denomination_lutheran">Лютеранство</string>
<string name="poi_denomination_sunni">Суннизм</string>
<string name="poi_denomination_protestant">Протестантизм</string>
<string name="poi_denomination_methodist">Методизм</string>
<string name="poi_denomination_anglican">Англиканство</string>
<string name="poi_denomination_presbyterian">Пресвитерианство</string>
<string name="poi_denomination_evangelical">Евангелизм</string>
<string name="poi_denomination_russian_orthodox">Русское православие</string>
<string name="poi_denomination_pentecostal">Пятидесятничество</string>
<string name="poi_denomination_mormon">Мормонизм</string>
<string name="poi_denomination_jehovahs_witness">Свидетели Иеговы</string>
<string name="poi_denomination_greek_orthodox">Греческое православие</string>
<string name="poi_denomination_reformed">Кальвинизм</string>
<string name="poi_denomination_seventh_day_adventist">Адвентисты седьмого дня</string>
<string name="poi_denomination_new_apostolic">Новоапостольская церковь</string>
<string name="poi_denomination_church_of_england">Церковь Англии</string>
<string name="poi_denomination_episcopal">Епископальная церковь</string>
<string name="poi_denomination_shia">Шиизм</string>
<string name="poi_denomination_united">Объединённая церковь</string>
<string name="poi_denomination_greek_catholic">Греческий католицизм</string>
<string name="poi_denomination_tibetan">Тибетский буддизм</string>
<string name="poi_denomination_church_of_scotland">Церковь Шотландии</string>
<string name="poi_denomination_salvation_army">Армия спасения</string>
<string name="poi_denomination_iglesia_ni_cristo">Церковь Христа</string>
<string name="poi_denomination_mennonite">Меннонитство</string>
<string name="poi_denomination_quaker">Квакерство</string>
<string name="poi_denomination_bulgarian_orthodox">Болгарское православие</string>
<string name="poi_denomination_assemblies_of_god">Ассамблеи Бога</string>
<string name="poi_denomination_nondenominational">Без деноминации</string>
<string name="poi_denomination_adventist">Адвентисты</string>
<string name="poi_denomination_old_believers">Старообрядчество</string>
<string name="poi_denomination_serbian_orthodox">Сербское православие</string>
<string name="poi_denomination_spiritist">Спиритизм</string>
<string name="poi_denomination_armenian_apostolic">Армянская апостольская церковь</string>
<string name="poi_leaf_type_broadleaved">Широколиственная растительность</string>
<string name="poi_leaf_type_needleleaved">Хвойная растительность</string>
<string name="poi_leaf_type_mixed">Смешанного типа</string>
<string name="poi_leaf_type_leafless">Безлистная растительность</string>
<string name="poi_trees_olive">Оливка</string>
<string name="poi_trees_apple">Яблоко</string>
<string name="poi_trees_oil">Пальмовое масло</string>
<string name="poi_trees_orange">Апельсин</string>
<string name="poi_trees_almond">Миндаль</string>
<string name="poi_trees_banana">Банан</string>
<string name="poi_trees_hazel">Лесной орех</string>
<string name="poi_trees_coconut">Кокос</string>
<string name="poi_trees_persimmon">Хурма</string>
<string name="poi_trees_cherry">Вишня</string>
<string name="poi_trees_walnut">Грецкий орех</string>
<string name="poi_trees_plum">Слива</string>
<string name="poi_trees_peach">Персик</string>
<string name="poi_trees_tea">Чай</string>
<string name="poi_trees_coca">Кока</string>
<string name="poi_trees_kiwi">Киви</string>
<string name="poi_trees_meadow_orchard">Плодовый сад</string>
<string name="poi_trees_nectorine">Нектарин</string>
<string name="poi_trees_mango">Манго</string>
<string name="poi_trees_rubber">Каучук</string>
<string name="poi_trees_date">Финики</string>
<string name="poi_trees_coffea">Кофe</string>
<string name="poi_trees_pomegranate">Гранат</string>
<string name="poi_height">Высота</string>
<string name="poi_ele">Высота над уровнем моря</string>
<string name="poi_seats">Сиденья</string>
<string name="poi_backrest_yes">Со спинкой</string>
<string name="poi_backrest_no">Без спинки</string>
<string name="poi_urban">Городского типа</string>
<string name="poi_rural">Сельского типа</string>
<string name="poi_intermittent">Пересыхающий(ая)</string>
<string name="poi_building">Здание</string>
<string name="poi_hiking_routes">Туристические маршруты</string>
<string name="poi_deadlock">Тупик</string>
<string name="poi_generator_source_coal">Источник энергии: уголь</string>
<string name="poi_generator_source_gas">Источник энергии: газ</string>
<string name="poi_generator_source_nuclear">Источник энергии: ядерное топливо</string>
<string name="poi_generator_source_solar">Источник энергии: солнце</string>
<string name="poi_generator_source_hydro">Источник энергии: вода</string>
<string name="poi_generator_source_wind">Источник энергии: ветер</string>
<string name="poi_generator_source_geothermal">Источник энергии: геотермальный</string>
<string name="poi_generator_source_oil">Источник энергии: мазут</string>
<string name="poi_generator_source_diesel">Источник энергии: дизельное топливо</string>
</resources>

View file

@ -843,7 +843,7 @@
<string name="poi_error_unexpected_template">Произошла неожиданная ошибка при выполнении действия {0}.</string>
<string name="poi_error_io_error_template">Произошла ошибка ввода/вывода при выполнении действия {0}.</string>
<string name="poi_error_info_not_loaded">Произошла ошибка при загрузке информации о POI</string>
<string name="poi_dialog_name">Имя</string>
<string name="poi_dialog_name">Название</string>
<string name="poi_dialog_opening_hours">Время работы</string>
<string name="poi_dialog_comment">Комментарий</string>
<string name="poi_dialog_comment_default">Изменение POI</string>
@ -2090,4 +2090,10 @@
<string name="rendering_value_boldOutline_name">Жирный контур</string>
<string name="working_days">Рабочие дни</string>
<string name="favourites">Избранное</string>
</resources>
<string name="saved_at_time">Успешно сохранён в: %1$s</string>
<string name="poi_deleted_localy">POI будут удалены после того как вы загрузите ваши изменения</string>
<string name="show_gpx">Показать GPX</string>
<string name="poi_action_delete">удалить</string>
<string name="tag_poi_amenity">инфраструктура</string>
<string name="recent_places">Недавние места</string>
</resources>

View file

@ -2082,4 +2082,7 @@
<string name="working_days">Dies de traballu</string>
<string name="recent_places">Logos reghentes</string>
<string name="favourites">Prefèrridos</string>
</resources>
<string name="poi_deleted_localy">Su PDI at a èssere burradu a pustis de su carrigamentu de sas modìficas tuas</string>
<string name="show_gpx">Ammustra GPX</string>
<string name="saved_at_time">Sarbada resèssida in: %1$s</string>
</resources>

View file

@ -354,14 +354,14 @@
<string name="poi_apartment">Apartmány</string>
<string name="poi_place_of_worship">Náboženské miesto</string>
<string name="poi_religion_christian">Náboženské miesto: kresťanské</string>
<string name="poi_religion_jewish">Náboženské miesto: židovské</string>
<string name="poi_religion_muslim">Náboženské miesto: moslimské</string>
<string name="poi_religion_sikh">Náboženské miesto: sikhovia</string>
<string name="poi_religion_buddhist">Náboženské miesto: budhistické</string>
<string name="poi_religion_hindu">Náboženské miesto: hinduistické</string>
<string name="poi_religion_shinto">Náboženské miesto: šintoistické</string>
<string name="poi_religion_taoist">Náboženské miesto: taoistické</string>
<string name="poi_religion_christian">Kresťanstvo</string>
<string name="poi_religion_jewish">Judaizmus</string>
<string name="poi_religion_muslim">Islam</string>
<string name="poi_religion_sikh">Sikhizmus</string>
<string name="poi_religion_buddhist">Budhizmus</string>
<string name="poi_religion_hindu">Hinduizmus</string>
<string name="poi_religion_shinto">Šintoizmus</string>
<string name="poi_religion_taoist">Taoizmus</string>
<string name="poi_internet_access_wlan">Internetové pripojenie: Wifi</string>
<string name="poi_internet_access_terminal">Internetové pripojenie: terminál</string>
@ -1044,8 +1044,8 @@
<string name="poi_religion_voodoo">Voodoo</string>
<string name="poi_religion_multifaith">Multináboženské</string>
<string name="poi_religion_scientologist">Scientologický</string>
<string name="poi_religion_pagan">Pohans</string>
<string name="poi_religion_scientologist">Scientológia</string>
<string name="poi_religion_pagan">Pohanstvo</string>
<string name="poi_denomination_catholic">Katolícke</string>
<string name="poi_denomination_baptist">Baptistické</string>
<string name="poi_denomination_roman_catholic">Rímskokatolícke</string>
@ -1060,11 +1060,11 @@
<string name="poi_denomination_russian_orthodox">Ruské ortodoxné</string>
<string name="poi_denomination_mormon">Mormónske</string>
<string name="poi_denomination_jehovahs_witness">Svedkovia Jehovovi</string>
<string name="poi_denomination_greek_orthodox">Grécke ortodoxné</string>
<string name="poi_denomination_greek_orthodox">Pravoslávna cirkev</string>
<string name="poi_denomination_reformed">Reformované</string>
<string name="poi_denomination_seventh_day_adventist">Adventisti siedmeho dňa</string>
<string name="poi_denomination_new_apostolic">Novoapoštolské</string>
<string name="poi_denomination_church_of_england">Anglická cirkev</string>
<string name="poi_denomination_new_apostolic">Novoapoštolská cirkev</string>
<string name="poi_denomination_church_of_england">Anglikánska cirkev</string>
<string name="poi_denomination_episcopal">Episkopálne</string>
<string name="poi_denomination_greek_catholic">Grékokatolícke</string>
<string name="poi_denomination_tibetan">Tibetské</string>
@ -1082,4 +1082,92 @@
<string name="poi_vk">VKontakte</string>
<string name="poi_google_plus">Google+</string>
<string name="poi_military_office">Vojenský úrad</string>
<string name="poi_landfill_waste_nuclear">Jadrový odpad</string>
<string name="poi_brownfield">Zanedbaná plocha</string>
<string name="poi_greenfield">Stavebné pozemky \"na zelenej lúke\"</string>
<string name="poi_bunker_silo">Silážna jama</string>
<string name="poi_denomination_salvation_army">Armáda spásy</string>
<string name="poi_denomination_bulgarian_orthodox">Bulharská ortodoxná cirkev</string>
<string name="poi_denomination_nazarene">Nazaréni</string>
<string name="poi_denomination_serbian_orthodox">Srbská ortodoxná cirkev</string>
<string name="poi_denomination_latter_day_saints">Svätí posledných dní</string>
<string name="poi_denomination_georgian_orthodox">Gruzínska ortodoxná cirkev</string>
<string name="poi_denomination_romanian_orthodox">Rumunská ortodoxná cirkev</string>
<string name="poi_denomination_ethiopian_orthodox_tewahedo">Etiópska ortodoxná cirkev</string>
<string name="poi_denomination_coptic_orthodox">Koptská ortodoxná cirkev</string>
<string name="poi_start_date">Začiatočný dátum</string>
<string name="poi_wheelchair">Invalidný vozík</string>
<string name="poi_wholesale">Veľkoobchod</string>
<string name="poi_content_silage">Siláž (obsah)</string>
<string name="poi_content_water">Voda (obsah)</string>
<string name="poi_content_slurry">Minerálny olej (obsah)</string>
<string name="poi_content_oil">Ropa (obsah)</string>
<string name="poi_content_fuel">Palivo (obsah)</string>
<string name="poi_content_manure">Hnoj (obsah)</string>
<string name="poi_content_wine">Víno (obsah)</string>
<string name="poi_content_sewage">Kanalizácia (obsah)</string>
<string name="poi_content_gas">Plyn (obsah)</string>
<string name="poi_content_biomass">Biomasa (obsah)</string>
<string name="poi_content_wastewater">Odpadová voda (obsah)</string>
<string name="poi_content_crop">Plodiny (obsah)</string>
<string name="poi_content_fodder">Krmivo (obsah)</string>
<string name="poi_content_beer">Pivo (obsah)</string>
<string name="poi_content_salt">Soľ (obsah)</string>
<string name="poi_content_grain">Zrno (obsah)</string>
<string name="poi_nudism_yes">Nudizmus: povolený</string>
<string name="poi_nudism_no">Nudizmus: zakázaný</string>
<string name="poi_nudism_obligatory">Nudizmus: povinný</string>
<string name="poi_nudism_customary">Nudizmus: obvyklý</string>
<string name="poi_nudism_permissive">Nudizmus: dovolený</string>
<string name="poi_trade_building_supplies">Stavebný materiál</string>
<string name="poi_trade_plumbing">Inštalačný materiál</string>
<string name="poi_trade_wood">Drevo</string>
<string name="poi_trade_agricultural_supplies">Poľnohospodárske potreby</string>
<string name="poi_trade_tile">Kachličky</string>
<string name="poi_population">Počet obyvateľov</string>
<string name="poi_parking_underground">Podzemné</string>
<string name="poi_parking_multi_storey">Poschodové</string>
<string name="poi_bicycle_parking_stands">Stojany</string>
<string name="poi_bicycle_parking_wall_loops">Držiaky na kolesá</string>
<string name="poi_bicycle_parking_rack">Regál</string>
<string name="poi_bicycle_parking_building">Špecializovaná budova</string>
<string name="poi_bicycle_parking_shed">Prístrešok</string>
<string name="poi_bicycle_parking_bollard">Stĺpik</string>
<string name="poi_bicycle_parking_informal">Neoficiálne</string>
<string name="poi_leaf_type_broadleaved">Listnatý</string>
<string name="poi_leaf_type_needleleaved">Ihličnatý</string>
<string name="poi_leaf_type_mixed">Zmiešaný</string>
<string name="poi_leaf_type_leafless">Bezlistý</string>
<string name="poi_trees_olive">Olivy</string>
<string name="poi_trees_apple">Jablká</string>
<string name="poi_trees_oil">Palmový olej</string>
<string name="poi_trees_orange">Pomaranče</string>
<string name="poi_trees_almond">Mandle</string>
<string name="poi_trees_banana">Banány</string>
<string name="poi_trees_hazel">Lieskovce</string>
<string name="poi_trees_coconut">Kokosové orechy</string>
<string name="poi_trees_persimmon">Persimon (Kaki)</string>
<string name="poi_trees_cherry">Višne</string>
<string name="poi_trees_walnut">Vlašské orechy</string>
<string name="poi_trees_plum">Slivky</string>
<string name="poi_trees_peach">Broskyne</string>
<string name="poi_trees_tea">Čaj</string>
<string name="poi_trees_coca">Koka</string>
<string name="poi_trees_kiwi">Kiwi</string>
<string name="poi_trees_nectorine">Nektarinky</string>
<string name="poi_trees_mango">Mango</string>
<string name="poi_trees_rubber">Gumovníky</string>
<string name="poi_trees_date">Ďatle</string>
<string name="poi_trees_coffea">Káva</string>
<string name="poi_trees_pomegranate">Granátové jablká</string>
<string name="poi_ele">Nadmorská výška</string>
<string name="poi_height">Výška</string>
</resources>

View file

@ -2276,10 +2276,13 @@ Afganistan, Albánsko, Alžírsko, Andora, Angola, Anguilla, Antigua a Barbuda,
<string name="description">Popis</string>
<string name="add_opening_hours">Pridať otváracie hodiny</string>
<string name="poi_dialog_poi_type">Typ bodu záujmu</string>
<string name="number_of_rows_in_dash">Počet riadkov v pomlčke %1$s</string>
<string name="number_of_rows_in_dash">Počet riadkov v bloku %1$s</string>
<string name="please_specify_poi_type">Prosím zadajte typ bodu záujmu.</string>
<string name="poi_action_delete">odstrániť</string>
<string name="working_days">Pracovné dni</string>
<string name="recent_places">História miest</string>
<string name="favourites">Obľúbené</string>
<string name="saved_at_time">Úspešne uložené na: %1$s</string>
<string name="poi_deleted_localy">Bod POI bude vymazaný keď zmeny odošlete</string>
<string name="show_gpx">Zobraziť GPX</string>
</resources>

View file

@ -1978,4 +1978,7 @@
<string name="please_specify_poi_type">Določiti je treba vrsto točke POI.</string>
<string name="working_days">Delovni dnevi</string>
<string name="recent_places">Nedavna mesta</string>
</resources>
<string name="saved_at_time">Uspešno shranjeno ob: %1$s</string>
<string name="poi_deleted_localy">Točka POI bo izbrisana po pošiljanju sprememb</string>
<string name="show_gpx">Pokaži GPX</string>
</resources>

View file

@ -1994,4 +1994,7 @@
<string name="working_days">Arbetsdagar</string>
<string name="recent_places">Nyliga platser</string>
<string name="poi_action_delete">ta bort</string>
</resources>
<string name="saved_at_time">Sparades utan problem kl. %1$s</string>
<string name="poi_deleted_localy">POI tas bort så snart du laddat upp dina ändringar</string>
<string name="show_gpx">Visa GPX</string>
</resources>

View file

@ -508,14 +508,14 @@
<string name="poi_hunting_lodge">狩獵小屋</string>
<string name="poi_place_of_worship">宗教場所</string>
<string name="poi_religion_christian">宗教場所:基督教</string>
<string name="poi_religion_jewish">宗教場所:猶太教</string>
<string name="poi_religion_muslim">宗教場所:回教</string>
<string name="poi_religion_sikh">宗教場所:錫克教</string>
<string name="poi_religion_buddhist">宗教場所:佛教</string>
<string name="poi_religion_hindu">宗教場所:印度教</string>
<string name="poi_religion_shinto">宗教場所:日本神道教</string>
<string name="poi_religion_taoist">宗教場所:道教</string>
<string name="poi_religion_christian">基督教</string>
<string name="poi_religion_jewish">猶太教</string>
<string name="poi_religion_muslim">回教</string>
<string name="poi_religion_sikh">錫克教</string>
<string name="poi_religion_buddhist">佛教</string>
<string name="poi_religion_hindu">印度教</string>
<string name="poi_religion_shinto">神道教</string>
<string name="poi_religion_taoist">道教</string>
<string name="poi_internet_access_wlan">網際網路存取:無線網路</string>
<string name="poi_internet_access_terminal">網際網路存取:終端</string>
@ -1164,4 +1164,54 @@
<string name="poi_trade_agricultural_supplies">農藝供應商</string>
<string name="poi_trade_tile">磚瓦供應商</string>
<string name="poi_population">人口數</string>
<string name="poi_parking_underground">地下</string>
<string name="poi_parking_multi_storey">多層</string>
<string name="poi_bicycle_parking_stands">立台</string>
<string name="poi_bicycle_parking_wall_loops">壁掛架</string>
<string name="poi_bicycle_parking_rack">擱物架</string>
<string name="poi_bicycle_parking_building">獨特建築物</string>
<string name="poi_bicycle_parking_shed">車棚</string>
<string name="poi_bicycle_parking_bollard">系船柱</string>
<string name="poi_bicycle_parking_informal">非正式的</string>
<string name="poi_leaf_type_broadleaved">闊葉樹</string>
<string name="poi_leaf_type_needleleaved">針葉樹</string>
<string name="poi_leaf_type_mixed">混合林</string>
<string name="poi_leaf_type_leafless">無葉植物</string>
<string name="poi_trees_olive">橄欖樹</string>
<string name="poi_trees_apple">蘋果樹</string>
<string name="poi_trees_oil">棕櫚油</string>
<string name="poi_height">高度</string>
<string name="poi_ele">海拔高度</string>
<string name="poi_nudism_yes">天體主義:允許</string>
<string name="poi_nudism_no">天體主義:禁止</string>
<string name="poi_nudism_obligatory">天體主義:強制</string>
<string name="poi_nudism_customary">天體主義:慣常</string>
<string name="poi_nudism_permissive">天體主義:容許</string>
<string name="poi_trees_orange">橙色</string>
<string name="poi_trees_almond">杏仁</string>
<string name="poi_trees_banana">香蕉</string>
<string name="poi_trees_hazel">榛樹</string>
<string name="poi_trees_coconut">椰子</string>
<string name="poi_trees_persimmon">柿子</string>
<string name="poi_trees_cherry">櫻桃</string>
<string name="poi_trees_walnut">核桃</string>
<string name="poi_trees_plum">李子</string>
<string name="poi_trees_peach">桃子</string>
<string name="poi_trees_tea"></string>
<string name="poi_trees_coca">古柯</string>
<string name="poi_trees_kiwi">獼猴桃</string>
<string name="poi_trees_meadow_orchard">草甸果樹園</string>
<string name="poi_trees_nectorine">油桃</string>
<string name="poi_trees_mango">芒果</string>
<string name="poi_trees_rubber">橡膠</string>
<string name="poi_trees_date">日期</string>
<string name="poi_trees_coffea">咖啡</string>
<string name="poi_trees_pomegranate">石榴</string>
</resources>

View file

@ -2105,4 +2105,7 @@
<string name="working_days">工作日</string>
<string name="recent_places">最近的地點</string>
<string name="favourites">我的最愛</string>
<string name="saved_at_time">已順利的儲存於:%1$s</string>
<string name="poi_deleted_localy">一旦您上傳您的變更,興趣點會被刪除</string>
<string name="show_gpx">顯示 GPX</string>
</resources>

View file

@ -274,6 +274,7 @@
<string name="poi_aerialway_rope_tow">Rope tow lift</string>
<string name="poi_aerialway_goods">Goods lift</string>
<string name="poi_aerialway_magic_carpet">Carpet lift</string>
<string name="poi_aerialway_pylon">Aerial lift pylon</string>
<string name="poi_tunnel">Tunnel</string>
<string name="poi_bridge">Bridge</string>
@ -304,6 +305,8 @@
<string name="poi_power_cable_distribution_cabinet">Cable distribution cabinet</string>
<string name="poi_power_plant">Power plant</string>
<string name="poi_power_generator">Power generator</string>
<string name="poi_power_tower">Power tower</string>
<string name="poi_power_pole">Power pole</string>
<string name="poi_post_office">Post office</string>
<string name="poi_post_box">Post box</string>
@ -311,6 +314,8 @@
<string name="poi_communication_tower">Communication tower</string>
<string name="poi_observation_tower">Observation tower</string>
<string name="poi_bell_tower">Bell tower</string>
<string name="poi_cooling_tower">Cooling tower</string>
<string name="poi_lighting_tower">Lighting tower</string>
<string name="poi_telephone_exchange">Telephone exchange</string>
<string name="poi_recycling">Recycling</string>
@ -627,24 +632,24 @@
<string name="poi_hunting_lodge">Hunting lodge</string>
<string name="poi_place_of_worship">Place of worship</string>
<string name="poi_religion_christian">Place of worship: christian</string>
<string name="poi_religion_jewish">Place of worship: jewish</string>
<string name="poi_religion_muslim">Place of worship: muslim</string>
<string name="poi_religion_sikh">Place of worship: sikh</string>
<string name="poi_religion_buddhist">Place of worship: buddhist</string>
<string name="poi_religion_hindu">Place of worship: hindu</string>
<string name="poi_religion_shinto">Place of worship: shinto</string>
<string name="poi_religion_taoist">Place of worship: taoist</string>
<string name="poi_religion_christian">Сhristianity</string>
<string name="poi_religion_jewish">Judaism</string>
<string name="poi_religion_muslim">Islam</string>
<string name="poi_religion_sikh">Sikhism</string>
<string name="poi_religion_buddhist">Buddhism</string>
<string name="poi_religion_hindu">Hinduism</string>
<string name="poi_religion_shinto">Shinto</string>
<string name="poi_religion_taoist">Taoism</string>
<string name="poi_religion_voodoo">Voodoo</string>
<string name="poi_religion_unitarian_universalist">Unitarian universalist</string>
<string name="poi_religion_unitarian_universalist">Unitarian universalism</string>
<string name="poi_religion_multifaith">Multifaith</string>
<string name="poi_religion_jain">Jain</string>
<string name="poi_religion_spiritualist">Spiritualist</string>
<string name="poi_religion_bahai">Bahai</string>
<string name="poi_religion_scientologist">Scientologist</string>
<string name="poi_religion_pagan">Pagan</string>
<string name="poi_religion_jain">Jainism</string>
<string name="poi_religion_spiritualist">Spiritualism</string>
<string name="poi_religion_bahai">Bahaism</string>
<string name="poi_religion_scientologist">Scientologism</string>
<string name="poi_religion_pagan">Paganism</string>
<string name="poi_religion_tenrikyo">Tenrikyo</string>
<string name="poi_religion_zoroastrian">Zoroastrian</string>
<string name="poi_religion_zoroastrian">Zoroastrism</string>
<string name="poi_denomination_catholic">Catholic</string>
<string name="poi_denomination_baptist">Baptist</string>
@ -661,18 +666,18 @@
<string name="poi_denomination_pentecostal">Pentecostal</string>
<string name="poi_denomination_mormon">Mormon</string>
<string name="poi_denomination_jehovahs_witness">Jehovahs witness</string>
<string name="poi_denomination_greek_orthodox">Greek_orthodox</string>
<string name="poi_denomination_greek_orthodox">Greek orthodox</string>
<string name="poi_denomination_reformed">Reformed</string>
<string name="poi_denomination_seventh_day_adventist">Seventh_day_adventist</string>
<string name="poi_denomination_new_apostolic">New_apostolic</string>
<string name="poi_denomination_church_of_england">Church_of_england</string>
<string name="poi_denomination_seventh_day_adventist">Seventh day adventist</string>
<string name="poi_denomination_new_apostolic">New apostolic</string>
<string name="poi_denomination_church_of_england">Church of england</string>
<string name="poi_denomination_episcopal">Episcopal</string>
<string name="poi_denomination_shia">Shia</string>
<string name="poi_denomination_united">United</string>
<string name="poi_denomination_greek_catholic">Greek catholic</string>
<string name="poi_denomination_tibetan">Tibetan</string>
<string name="poi_denomination_united_reformed">United reformed</string>
<string name="poi_denomination_church_of_scotland">Church of scotland</string>
<string name="poi_denomination_church_of_scotland">Church of Scotland</string>
<string name="poi_denomination_salvation_army">Salvation army</string>
<string name="poi_denomination_iglesia_ni_cristo">Iglesia ni cristo</string>
<string name="poi_denomination_uniting">Uniting</string>
@ -1082,6 +1087,8 @@
<string name="poi_service_times">Service times</string>
<string name="poi_maxheight">Maximum height</string>
<string name="poi_maxweight">Maximum weight</string>
<string name="poi_height">Height</string>
<string name="poi_ele">Height above sea level</string>
<string name="poi_abandoned">Abandoned</string>
<string name="poi_abandoned_poi">Abandoned object</string>
<string name="poi_disused">Disused</string>
@ -1134,12 +1141,62 @@
<string name="poi_content_salt">Salt (content)</string>
<string name="poi_content_grain">Grain (content)</string>
<string name="poi_nudism_yes">Nudism: allowed</string>
<string name="poi_nudism_no">Nudism: prohibited</string>
<string name="poi_nudism_obligatory">Nudism: obligatory</string>
<string name="poi_nudism_customary">Nudism: customary</string>
<string name="poi_nudism_permissive">Nudism: permissive</string>
<string name="poi_trade_building_supplies">Building supplies</string>
<string name="poi_trade_plumbing">Plumbing supplies</string>
<string name="poi_trade_wood">Wood supplies</string>
<string name="poi_trade_agricultural_supplies">Agricultural supplies</string>
<string name="poi_trade_tile">Tile supplies</string>
<string name="poi_population">Population</string>
<string name="poi_parking_underground">Underground</string>
<string name="poi_parking_multi_storey">Multi-storey</string>
<string name="poi_bicycle_parking_stands">Stands</string>
<string name="poi_bicycle_parking_wall_loops">Wall loops</string>
<string name="poi_bicycle_parking_rack">Rack</string>
<string name="poi_bicycle_parking_building">Special building</string>
<string name="poi_bicycle_parking_shed">Shed</string>
<string name="poi_bicycle_parking_bollard">Bollard</string>
<string name="poi_bicycle_parking_informal">Informal</string>
<string name="poi_leaf_type_broadleaved">Broadleaved</string>
<string name="poi_leaf_type_needleleaved">Needleleaved</string>
<string name="poi_leaf_type_mixed">Mixed</string>
<string name="poi_leaf_type_leafless">Leafless</string>
<string name="poi_trees_olive">Olive</string>
<string name="poi_trees_apple">Apple</string>
<string name="poi_trees_oil">Palm oil</string>
<string name="poi_trees_orange">Orange</string>
<string name="poi_trees_almond">Almond</string>
<string name="poi_trees_banana">Banana</string>
<string name="poi_trees_hazel">Hazel</string>
<string name="poi_trees_coconut">Coconut</string>
<string name="poi_trees_persimmon">Persimmon</string>
<string name="poi_trees_cherry">Cherry</string>
<string name="poi_trees_walnut">Walnut</string>
<string name="poi_trees_plum">Plum</string>
<string name="poi_trees_peach">Peach</string>
<string name="poi_trees_tea">Tea</string>
<string name="poi_trees_coca">Coca</string>
<string name="poi_trees_kiwi">Kiwi</string>
<string name="poi_trees_meadow_orchard">Meadow orchard</string>
<string name="poi_trees_nectorine">Nectorine</string>
<string name="poi_trees_mango">Mango</string>
<string name="poi_trees_rubber">Rubber</string>
<string name="poi_trees_date">Date</string>
<string name="poi_trees_coffea">Coffee</string>
<string name="poi_trees_pomegranate">Pomegranate</string>
<string name="poi_urban">Urban</string>
<string name="poi_rural">Rural</string>
<string name="poi_enforcement_traffic_signals">Enforcement:traffic signals</string>
<string name="poi_enforcement_maxspeed">Enforcement:maxspeed</string>
<string name="poi_enforcement_maxheight">Enforcement:maxheight</string>
@ -1153,6 +1210,23 @@
<string name="poi_animal_shelter_dog_cat">Shelter for dogs and cats</string>
<string name="poi_animal_shelter_bird">Shelter for birds</string>
<string name="poi_seats">Seats</string>
<string name="poi_backrest_yes">Backrest: yes</string>
<string name="poi_backrest_no">Backrest: no</string>
<string name="poi_intermittent">Intermittent</string>
<string name="poi_building">Building</string>
<string name="poi_deadlock">Deadlock</string>
<string name="poi_generator_source_coal">Energy source: coal</string>
<string name="poi_generator_source_gas">Energy source: gas</string>
<string name="poi_generator_source_nuclear">Energy source: nuclear</string>
<string name="poi_generator_source_solar">Energy source: solar</string>
<string name="poi_generator_source_hydro">Energy source: hydro</string>
<string name="poi_generator_source_wind">Energy source: wind</string>
<string name="poi_generator_source_geothermal">Energy source: geothermal</string>
<string name="poi_generator_source_oil">Energy source: oil</string>
<string name="poi_generator_source_diesel">Energy source: diesel</string>
</resources>

View file

@ -2260,4 +2260,7 @@ Afghanistan, Albania, Algeria, Andorra, Angola, Anguilla, Antigua and Barbuda, A
<string name="working_days">Working days</string>
<string name="recent_places">Recent places</string>
<string name="favourites">Favourites</string>
<string name="saved_at_time">Successfully saved at: %1$s</string>
<string name="poi_deleted_localy">POI will be deleted once you upload your changes</string>
<string name="show_gpx">Show GPX</string>
</resources>

View file

@ -116,6 +116,7 @@
<item name="android:textColorPrimary">@color/color_white</item>
<item name="android:textColorSecondary">@color/inactive_item_orange</item>
<item name="android:textColorHint">@color/inactive_item_orange</item>
<item name="pstsIndicatorColor">@color/osmand_orange</item>
<item name="colorAccent">@color/color_white</item>
<!--<item name="actionMenuTextColor">@color/color_white</item>-->
</style>
@ -131,21 +132,17 @@
</style>
<style name="OsmandDarkTheme.DarkActionbar">
<item name="android:textColorPrimary">@color/color_white</item>
<item name="android:textColorSecondary">@color/inactive_item_orange</item>
<item name="android:textColorHint">@color/inactive_item_orange</item>
<item name="colorAccent">@color/color_white</item>
<!--<item name="actionMenuTextColor">@color/color_white</item>-->
<item name="android:textColorSecondary">@color/dash_search_icon_dark</item>
</style>
<style name="OsmandDarkTheme.Toolbar">
<item name="android:textColorPrimary">@color/color_white</item>
<item name="android:textColorSecondary">@color/color_white</item>
<item name="android:textColorSecondary">@color/dash_search_icon_dark</item>
</style>
<style name="OsmandDarkTheme.NewAppTheme">
<item name="android:textColorSecondary">@color/dash_search_icon_dark</item>
<item name="colorAccent">@color/osmand_orange</item>
<item name="android:textColorSecondary">@color/divider_color</item>
</style>
<style name="OsmandDarkTheme" parent="Theme.AppCompat">
@ -186,7 +183,7 @@
<item name="android:textColorPrimary">@color/color_white</item>
<item name="spinnerItemTextColor">@color/color_white</item>
<item name="spinnerListBackground">@color/spinner_list_background_dark</item>
<item name="colorButtonNormal">@color/bg_color_dark</item>
<item name="colorButtonNormal">@color/actionbar_dark_color</item>
<item name="android:actionModeBackground">@color/actionbar_dark_color</item>
<item name="android:actionBarStyle">@style/Widget.Styled.ActionBarDark</item>

View file

@ -1,5 +1,6 @@
package net.osmand.data;
import java.io.Serializable;
import java.text.DecimalFormat;
import java.text.DecimalFormatSymbols;
import java.util.Locale;
@ -15,7 +16,7 @@ import net.osmand.util.Algorithms;
import android.content.Context;
import android.support.annotation.NonNull;
public class PointDescription {
public class PointDescription implements Serializable {
private String type = "";
private String name = "";
private String typeName;
@ -23,6 +24,8 @@ public class PointDescription {
private double lat = 0;
private double lon = 0;
private static final long serialVersionUID = 4078409090417168638L;
public static final String POINT_TYPE_FAVORITE = "favorite";
public static final String POINT_TYPE_WPT = "wpt";
public static final String POINT_TYPE_POI = "poi";

View file

@ -346,7 +346,7 @@ public class ContextMenuAdapter {
if (layoutId == R.layout.simple_list_menu_item) {
int color = activity.getResources()
.getColor(holoLight ? R.color.icon_color : R.color.dash_search_icon_dark);
.getColor(holoLight ? R.color.icon_color : R.color.dashboard_subheader_text_dark);
Drawable imageId = app.getIconsCache().getPaintedContentIcon(
iconListLight.get(position), color);
float density = activity.getResources().getDisplayMetrics().density;

View file

@ -520,7 +520,7 @@ public class FavouritesDbHelper {
return null;
}
public void editFavouriteGroup(FavoriteGroup group, int color, boolean visible) {
public void editFavouriteGroup(FavoriteGroup group, String newName, int color, boolean visible) {
if(color != 0 && group.color != color) {
FavoriteGroup gr = flatGroups.get(group.name);
group.color = color;
@ -535,6 +535,13 @@ public class FavouritesDbHelper {
p.setVisible(visible);
}
}
if (!group.name.equals(newName)) {
FavoriteGroup gr = flatGroups.get(group.name);
group.name = newName;
for(FavouritePoint p : gr.points) {
p.setCategory(newName);
}
}
saveCurrentPointsIntoFile();
}

View file

@ -493,31 +493,38 @@ public class FavoritesTreeFragment extends OsmandExpandableListFragment {
}
protected void openChangeGroupDialog(final FavoriteGroup group) {
Builder bld = new AlertDialog.Builder(getActivity());
View favEdit = getActivity().getLayoutInflater().inflate(R.layout.fav_group_edit, null);
final TIntArrayList list = new TIntArrayList();
final Spinner colorSpinner = (Spinner) favEdit.findViewById(R.id.ColorSpinner);
final int intColor = group.color == 0? getResources().getColor(R.color.color_favorite) : group.color;
ColorDialogs.setupColorSpinner(getActivity(), intColor, colorSpinner, list);
final CheckBox checkBox = (CheckBox) favEdit.findViewById(R.id.Visibility);
Builder builder = new AlertDialog.Builder(getActivity());
View view = getActivity().getLayoutInflater().inflate(R.layout.fav_group_edit, null);
final EditText nameEditText = (EditText) view.findViewById(R.id.nameEditText);
nameEditText.setText(group.name);
final CheckBox checkBox = (CheckBox) view.findViewById(R.id.Visibility);
checkBox.setChecked(group.visible);
bld.setTitle(R.string.edit_group);
bld.setView(favEdit);
bld.setNegativeButton(R.string.shared_string_cancel, null);
bld.setPositiveButton(R.string.shared_string_ok, new DialogInterface.OnClickListener() {
final Spinner colorSpinner = (Spinner) view.findViewById(R.id.ColorSpinner);
final TIntArrayList list = new TIntArrayList();
final int intColor = group.color == 0? getResources().getColor(R.color.color_favorite) : group.color;
ColorDialogs.setupColorSpinner(getActivity(), intColor, colorSpinner, list);
builder.setTitle(R.string.edit_group);
builder.setView(view);
builder.setNegativeButton(R.string.shared_string_cancel, null);
builder.setPositiveButton(R.string.shared_string_ok, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
int clr = list.get(colorSpinner.getSelectedItemPosition());
if(clr != intColor || group.visible != checkBox.isChecked()) {
getMyApplication().getFavorites().editFavouriteGroup(group, clr, checkBox.isChecked());
String name = nameEditText.getText().toString();
if (clr != intColor || group.visible != checkBox.isChecked()) {
getMyApplication().getFavorites().editFavouriteGroup(group, name, clr,
checkBox.isChecked());
favouritesAdapter.notifyDataSetInvalidated();
}
}
});
bld.show();
builder.show();
}

View file

@ -125,6 +125,7 @@ public class MapActivity extends AccessibleActivity {
private boolean intentLocation = false;
private DashboardOnMap dashboardOnMap = new DashboardOnMap(this);
private MapContextMenu contextMenuOnMap;
private AppInitializeListener initListener;
private IMapDownloaderCallback downloaderCallback;
private DrawerLayout drawerLayout;
@ -156,6 +157,7 @@ public class MapActivity extends AccessibleActivity {
app = getMyApplication();
settings = app.getSettings();
app.applyTheme(this);
contextMenuOnMap = new MapContextMenu(app);
supportRequestWindowFeature(Window.FEATURE_NO_TITLE);
super.onCreate(savedInstanceState);
// Full screen is not used here
@ -249,9 +251,6 @@ public class MapActivity extends AccessibleActivity {
});
drawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
MapContextMenu.getInstance().setApp(app);
MapContextMenu.getInstance().setMapActivity(this);
}
@ -975,6 +974,10 @@ public class MapActivity extends AccessibleActivity {
return dashboardOnMap;
}
public MapContextMenu getContextMenu() {
return contextMenuOnMap;
}
public void openDrawer() {
drawerLayout.openDrawer(Gravity.LEFT);
}

View file

@ -218,7 +218,8 @@ public class MapActivityLayers {
if (g.showCurrentTrack) {
if (!settings.SAVE_TRACK_TO_GPX.get() && !
settings.SAVE_GLOBAL_TRACK_TO_GPX.get()) {
AccessibleToast.makeText(activity, R.string.gpx_monitoring_disabled_warn, Toast.LENGTH_LONG).show();
AccessibleToast.makeText(activity,
R.string.gpx_monitoring_disabled_warn, Toast.LENGTH_LONG).show();
} else {
g.path = getString(R.string.show_current_gpx_title);
}

View file

@ -60,7 +60,7 @@ public class DashSearchFragment extends DashBaseFragment {
}
});
btn.setCompoundDrawablesWithIntrinsicBounds(null, iconsCache.getIcon(R.drawable.ic_action_info2,
light ? R.color.dash_search_icon_light : R.color.dash_search_icon_dark), null, null);
light ? R.color.dash_search_icon_light : R.color.dashboard_subheader_text_dark), null, null);
btn = (Button)view.findViewById(R.id.address);
btn.setOnClickListener(new View.OnClickListener() {
@ -71,7 +71,7 @@ public class DashSearchFragment extends DashBaseFragment {
}
});
btn.setCompoundDrawablesWithIntrinsicBounds(null, iconsCache.getIcon(R.drawable.ic_action_home2,
light ? R.color.dash_search_icon_light : R.color.dash_search_icon_dark), null, null);
light ? R.color.dash_search_icon_light : R.color.dashboard_subheader_text_dark), null, null);
btn = (Button) view.findViewById(R.id.coord);
btn.setOnClickListener(new View.OnClickListener() {
@ -82,7 +82,7 @@ public class DashSearchFragment extends DashBaseFragment {
}
});
btn.setCompoundDrawablesWithIntrinsicBounds(null, iconsCache.getIcon(R.drawable.ic_action_marker2,
light ? R.color.dash_search_icon_light : R.color.dash_search_icon_dark), null, null);
light ? R.color.dash_search_icon_light : R.color.dashboard_subheader_text_dark), null, null);
(view.findViewById(R.id.recents)).setOnClickListener(new View.OnClickListener() {
@Override

View file

@ -5,7 +5,6 @@ import android.app.Application;
import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.os.Build;
import android.support.v7.app.AlertDialog;
import android.util.TypedValue;
import android.view.View;
@ -47,27 +46,26 @@ public class GpxUiHelper {
GPXTrackAnalysis analysis = result.getAnalysis(f == null ? 0 : f.lastModified());
return getDescription(app, analysis, html);
}
public static String getDescription(OsmandApplication app, TrkSegment t, boolean html) {
return getDescription(app, GPXTrackAnalysis.segment(0, t), html);
}
public static String getColorValue(String clr, String value, boolean html) {
if(!html) {
if (!html) {
return value;
}
return "<font color=\"" + clr + "\">" + value + "</font>";
}
public static String getColorValue(String clr, String value) {
return getColorValue(clr, value, true);
}
public static String getDescription(OsmandApplication app, GPXTrackAnalysis analysis, boolean html) {
StringBuilder description = new StringBuilder();
String nl = html?"<br/>":"\n";
String nl = html ? "<br/>" : "\n";
String timeSpanClr = Algorithms.colorToString(app.getResources().getColor(R.color.gpx_time_span_color));
String distanceClr = Algorithms.colorToString(app.getResources().getColor(R.color.gpx_distance_color));
String speedClr = Algorithms.colorToString(app.getResources().getColor(R.color.gpx_speed));
@ -75,32 +73,32 @@ public class GpxUiHelper {
String descClr = Algorithms.colorToString(app.getResources().getColor(R.color.gpx_altitude_desc));
// OUTPUT:
// 1. Total distance, Start time, End time
description.append(app.getString(R.string.gpx_info_distance, getColorValue(distanceClr,
OsmAndFormatter.getFormattedDistance(analysis.totalDistance, app), html),
getColorValue(distanceClr, analysis.points+"", html) ));
if(analysis.totalTracks > 1) {
description.append(nl).append(app.getString(R.string.gpx_info_subtracks, getColorValue(speedClr, analysis.totalTracks+"", html)));
description.append(app.getString(R.string.gpx_info_distance, getColorValue(distanceClr,
OsmAndFormatter.getFormattedDistance(analysis.totalDistance, app), html),
getColorValue(distanceClr, analysis.points + "", html)));
if (analysis.totalTracks > 1) {
description.append(nl).append(app.getString(R.string.gpx_info_subtracks, getColorValue(speedClr, analysis.totalTracks + "", html)));
}
if(analysis.wptPoints > 0) {
description.append(nl).append(app.getString(R.string.gpx_info_waypoints, getColorValue(speedClr, analysis.wptPoints+"", html)));
if (analysis.wptPoints > 0) {
description.append(nl).append(app.getString(R.string.gpx_info_waypoints, getColorValue(speedClr, analysis.wptPoints + "", html)));
}
if(analysis.isTimeSpecified()) {
description.append(nl).append(app.getString(R.string.gpx_info_start_time, analysis.startTime));
description.append(nl).append(app.getString(R.string.gpx_info_end_time, analysis.endTime));
if (analysis.isTimeSpecified()) {
description.append(nl).append(app.getString(R.string.gpx_info_start_time, analysis.startTime));
description.append(nl).append(app.getString(R.string.gpx_info_end_time, analysis.endTime));
}
// 2. Time span
if(analysis.timeSpan > 0 && analysis.timeSpan / 1000 != analysis.timeMoving / 1000) {
final String formatDuration = Algorithms.formatDuration((int) (analysis.timeSpan/1000)
);
if (analysis.timeSpan > 0 && analysis.timeSpan / 1000 != analysis.timeMoving / 1000) {
final String formatDuration = Algorithms.formatDuration((int) (analysis.timeSpan / 1000)
);
description.append(nl).append(app.getString(R.string.gpx_timespan,
getColorValue(timeSpanClr, formatDuration, html)));
}
// 3. Time moving, if any
if(analysis.isTimeMoving()){
final String formatDuration = Algorithms.formatDuration((int) (analysis.timeMoving/1000)
);
if (analysis.isTimeMoving()) {
final String formatDuration = Algorithms.formatDuration((int) (analysis.timeMoving / 1000)
);
description.append(nl).append(app.getString(R.string.gpx_timemoving,
getColorValue(timeSpanClr, formatDuration, html)));
}
@ -115,32 +113,32 @@ public class GpxUiHelper {
String max = getColorValue(ascClr, OsmAndFormatter.getFormattedAlt(analysis.maxElevation, app), html);
String asc = getColorValue(ascClr, OsmAndFormatter.getFormattedAlt(analysis.diffElevationUp, app), html);
String desc = getColorValue(descClr, OsmAndFormatter.getFormattedAlt(analysis.diffElevationDown, app), html);
description.append(app.getString(R.string.gpx_info_diff_altitude,min +" - " + max ));
description.append(app.getString(R.string.gpx_info_diff_altitude, min + " - " + max));
description.append(nl);
description.append(app.getString(R.string.gpx_info_asc_altitude,"\u2193 " + desc + " \u2191 " + asc + ""));
description.append(app.getString(R.string.gpx_info_asc_altitude, "\u2193 " + desc + " \u2191 " + asc + ""));
}
if(analysis.isSpeedSpecified()){
if (analysis.isSpeedSpecified()) {
String avg = getColorValue(speedClr, OsmAndFormatter.getFormattedSpeed(analysis.avgSpeed, app), html);
String max = getColorValue(ascClr, OsmAndFormatter.getFormattedSpeed(analysis.maxSpeed, app), html);
description.append(nl).append(app.getString(R.string.gpx_info_average_speed,avg));
description.append(nl).append(app.getString(R.string.gpx_info_maximum_speed,max));
description.append(nl).append(app.getString(R.string.gpx_info_average_speed, avg));
description.append(nl).append(app.getString(R.string.gpx_info_maximum_speed, max));
}
return description.toString();
}
public static AlertDialog selectGPXFile(List<String> selectedGpxList, final Activity activity,
final boolean showCurrentGpx, final boolean multipleChoice, final CallbackWithObject<GPXFile[]> callbackWithObject){
final boolean showCurrentGpx, final boolean multipleChoice, final CallbackWithObject<GPXFile[]> callbackWithObject) {
OsmandApplication app = (OsmandApplication) activity.getApplication();
final File dir = app.getAppPath(IndexConstants.GPX_INDEX_DIR);
final List<String> allGpxList = getSortedGPXFilenames(dir, false);
if(allGpxList.isEmpty()){
if (allGpxList.isEmpty()) {
AccessibleToast.makeText(activity, R.string.gpx_files_not_found, Toast.LENGTH_LONG).show();
}
if(!allGpxList.isEmpty() || showCurrentGpx){
if(showCurrentGpx){
if (!allGpxList.isEmpty() || showCurrentGpx) {
if (showCurrentGpx) {
allGpxList.add(0, activity.getString(R.string.show_current_gpx_title));
}
final ContextMenuAdapter adapter = createGpxContextMenuAdapter(activity, allGpxList, selectedGpxList, multipleChoice,
@ -150,17 +148,17 @@ public class GpxUiHelper {
}
return null;
}
public static AlertDialog selectGPXFile(final Activity activity,
final boolean showCurrentGpx, final boolean multipleChoice, final CallbackWithObject<GPXFile[]> callbackWithObject) {
final boolean showCurrentGpx, final boolean multipleChoice, final CallbackWithObject<GPXFile[]> callbackWithObject) {
OsmandApplication app = (OsmandApplication) activity.getApplication();
final File dir = app.getAppPath(IndexConstants.GPX_INDEX_DIR);
final List<String> list = getSortedGPXFilenames(dir, false);
if(list.isEmpty()){
if (list.isEmpty()) {
AccessibleToast.makeText(activity, R.string.gpx_files_not_found, Toast.LENGTH_LONG).show();
}
if(!list.isEmpty() || showCurrentGpx){
if(showCurrentGpx){
if (!list.isEmpty() || showCurrentGpx) {
if (showCurrentGpx) {
list.add(0, activity.getString(R.string.show_current_gpx_title));
}
@ -172,7 +170,7 @@ public class GpxUiHelper {
}
private static ContextMenuAdapter createGpxContextMenuAdapter(Activity activity, List<String> allGpxList,
List<String> selectedGpxList, boolean multipleChoice,
List<String> selectedGpxList, boolean multipleChoice,
boolean showCurrentTrack) {
final ContextMenuAdapter adapter = new ContextMenuAdapter(activity);
//element position in adapter
@ -197,9 +195,9 @@ public class GpxUiHelper {
}
protected static void updateSelection(List<String> selectedGpxList, boolean showCurrentTrack,
final ContextMenuAdapter adapter, int i, String fileName) {
if(i == 0 && showCurrentTrack) {
if(selectedGpxList.contains("")) {
final ContextMenuAdapter adapter, int i, String fileName) {
if (i == 0 && showCurrentTrack) {
if (selectedGpxList.contains("")) {
adapter.setSelection(i, 1);
}
} else {
@ -211,13 +209,13 @@ public class GpxUiHelper {
}
}
}
private static void setDescripionInDialog(final ArrayAdapter<?> adapter, final ContextMenuAdapter cmAdapter, Activity activity,
final File dir, String filename, final int position) {
final File dir, String filename, final int position) {
final Application app = activity.getApplication();
final File f = new File(dir, filename);
loadGPXFileInDifferentThread(activity, new CallbackWithObject<GPXUtilities.GPXFile[]>() {
@Override
public boolean processResult(GPXFile[] result) {
cmAdapter.setItemName(position, cmAdapter.getItemName(position) + "\n" + getDescription((OsmandApplication) app, result[0], f, false));
@ -228,19 +226,14 @@ public class GpxUiHelper {
}
private static AlertDialog createDialog(final Activity activity, final boolean showCurrentGpx,
final boolean multipleChoice, final CallbackWithObject<GPXFile[]> callbackWithObject,
final List<String> list, final ContextMenuAdapter adapter) {
final boolean multipleChoice, final CallbackWithObject<GPXFile[]> callbackWithObject,
final List<String> list, final ContextMenuAdapter adapter) {
final OsmandApplication app = (OsmandApplication) activity.getApplication();
final File dir = app.getAppPath(IndexConstants.GPX_INDEX_DIR);
AlertDialog.Builder b = new AlertDialog.Builder(activity);
AlertDialog.Builder builder = new AlertDialog.Builder(activity);
// final int padding = (int) (12 * activity.getResources().getDisplayMetrics().density + 0.5f);
final boolean light = app.getSettings().isLightContent();
final int layout;
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) {
layout = R.layout.list_menu_item;
} else {
layout = R.layout.list_menu_item_native;
}
final int layout = R.layout.list_menu_item_native;
final ArrayAdapter<String> listAdapter = new ArrayAdapter<String>(activity, layout, R.id.title,
adapter.getItemNames()) {
@ -258,7 +251,7 @@ public class GpxUiHelper {
return;
}
int nline = adapter.getItemName(position).indexOf('\n');
if(nline == -1) {
if (nline == -1) {
setDescripionInDialog(arrayAdapter, adapter, activity, dir, list.get(position), position);
} else {
adapter.setItemName(position, adapter.getItemName(position).substring(0, nline));
@ -267,7 +260,7 @@ public class GpxUiHelper {
}
});
if(showCurrentGpx && position == 0) {
if (showCurrentGpx && position == 0) {
icon.setVisibility(View.INVISIBLE);
} else {
icon.setVisibility(View.VISIBLE);
@ -303,35 +296,37 @@ public class GpxUiHelper {
public void onClick(DialogInterface dialog, int position) {
}
};
b.setAdapter(listAdapter, onClickListener);
builder.setAdapter(listAdapter, onClickListener);
if (multipleChoice) {
b.setPositiveButton(R.string.shared_string_ok, new DialogInterface.OnClickListener() {
builder.setTitle(R.string.show_gpx)
.setPositiveButton(R.string.shared_string_ok, new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
GPXFile currentGPX = null;
//clear all previously selected files before adding new one
OsmandApplication app = (OsmandApplication) activity.getApplication();
if(app != null && app.getSelectedGpxHelper() != null){
app.getSelectedGpxHelper().clearAllGpxFileToShow();
}
if (showCurrentGpx && adapter.getSelection(0) > 0) {
currentGPX = app.getSavingTrackHelper().getCurrentGpx();
}
List<String> s = new ArrayList<String>();
for (int i = (showCurrentGpx ? 1 : 0); i < adapter.length(); i++) {
if (adapter.getSelection(i) > 0) {
s.add(list.get(i));
@Override
public void onClick(DialogInterface dialog, int which) {
GPXFile currentGPX = null;
//clear all previously selected files before adding new one
OsmandApplication app = (OsmandApplication) activity.getApplication();
if (app != null && app.getSelectedGpxHelper() != null) {
app.getSelectedGpxHelper().clearAllGpxFileToShow();
}
if (showCurrentGpx && adapter.getSelection(0) > 0) {
currentGPX = app.getSavingTrackHelper().getCurrentGpx();
}
List<String> s = new ArrayList<>();
for (int i = (showCurrentGpx ? 1 : 0); i < adapter.length(); i++) {
if (adapter.getSelection(i) > 0) {
s.add(list.get(i));
}
}
dialog.dismiss();
loadGPXFileInDifferentThread(activity, callbackWithObject, dir, currentGPX,
s.toArray(new String[s.size()]));
}
}
dialog.dismiss();
loadGPXFileInDifferentThread(activity, callbackWithObject, dir, currentGPX,
s.toArray(new String[s.size()]));
}
});
})
.setNegativeButton(R.string.shared_string_cancel, null);
}
final AlertDialog dlg = b.create();
final AlertDialog dlg = builder.create();
dlg.setCanceledOnTouchOutside(true);
dlg.getListView().setOnItemClickListener(new OnItemClickListener() {
@Override
@ -360,27 +355,27 @@ public class GpxUiHelper {
}
public static List<String> getSortedGPXFilenamesByDate(File dir, boolean absolutePath) {
final Map<String, Long> mp = new HashMap<String, Long>();
final Map<String, Long> mp = new HashMap<>();
readGpxDirectory(dir, mp, "", absolutePath);
ArrayList<String> list = new ArrayList<String>(mp.keySet());
ArrayList<String> list = new ArrayList<>(mp.keySet());
Collections.sort(list, new Comparator<String>() {
@Override
public int compare(String object1, String object2) {
Long l1 = mp.get(object1);
Long l2 = mp.get(object2);
long lhs = l1 == null ? 0 : l1.longValue();
long rhs = l2 == null ? 0 : l2.longValue();
long lhs = l1 == null ? 0 : l1;
long rhs = l2 == null ? 0 : l2;
return lhs < rhs ? 1 : (lhs == rhs ? 0 : -1);
}
});
return list;
}
public static List<String> getSortedGPXFilenames(File dir, boolean absolutePath) {
final Map<String, Long> mp = new HashMap<String, Long>();
final Map<String, Long> mp = new HashMap<>();
readGpxDirectory(dir, mp, "", absolutePath);
ArrayList<String> list = new ArrayList<String>(mp.keySet());
ArrayList<String> list = new ArrayList<>(mp.keySet());
Collections.sort(list, new Comparator<String>() {
@Override
public int compare(String object1, String object2) {
@ -391,8 +386,8 @@ public class GpxUiHelper {
return list;
}
private static void readGpxDirectory(File dir, final Map<String, Long> map, String parent,
boolean absolutePath) {
private static void readGpxDirectory(File dir, final Map<String, Long> map, String parent,
boolean absolutePath) {
if (dir != null && dir.canRead()) {
File[] files = dir.listFiles();
if (files != null) {
@ -407,9 +402,9 @@ public class GpxUiHelper {
}
}
}
private static void loadGPXFileInDifferentThread(final Activity activity, final CallbackWithObject<GPXFile[]> callbackWithObject,
final File dir, final GPXFile currentFile, final String... filename) {
final File dir, final GPXFile currentFile, final String... filename) {
final ProgressDialog dlg = ProgressDialog.show(activity, activity.getString(R.string.loading_smth, ""),
activity.getString(R.string.loading_data));
new Thread(new Runnable() {

View file

@ -1,5 +1,6 @@
package net.osmand.plus.mapcontextmenu;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import net.osmand.binary.RouteDataObject;
@ -21,7 +22,6 @@ import net.osmand.util.Algorithms;
public class MapContextMenu {
private MapActivity mapActivity;
private OsmandApplication app;
private OsmandSettings settings;
@ -30,7 +30,10 @@ public class MapContextMenu {
private String foundStreetName;
public boolean isMenuVisible() {
private static final String KEY_CTX_MENU_OBJECT = "key_ctx_menu_object";
private static final String KEY_CTX_MENU_POINT_DESC = "key_ctx_menu_point_desc";
public boolean isMenuVisible(MapActivity mapActivity) {
return mapActivity.getSupportFragmentManager().findFragmentByTag("MapContextMenuFragment") != null;
}
@ -42,29 +45,15 @@ public class MapContextMenu {
return object;
}
public void setMapActivity(MapActivity mapActivity) {
this.mapActivity = mapActivity;
}
public void setApp(OsmandApplication app) {
public MapContextMenu(OsmandApplication app) {
this.app = app;
settings = app.getSettings();
}
private static MapContextMenu ourInstance = new MapContextMenu();
public void show(MapActivity mapActivity, PointDescription pointDescription, Object object) {
public static MapContextMenu getInstance() {
return ourInstance;
}
private MapContextMenu() {
}
public void show(PointDescription pointDescription, Object object) {
if (isMenuVisible())
hide();
if (isMenuVisible(mapActivity))
hide(mapActivity);
this.pointDescription = pointDescription;
this.object = object;
@ -75,7 +64,7 @@ public class MapContextMenu {
}
public void hide() {
public void hide(MapActivity mapActivity) {
Fragment fragment = mapActivity.getSupportFragmentManager().findFragmentByTag("MapContextMenuFragment");
if (fragment != null)
@ -139,7 +128,7 @@ public class MapContextMenu {
return Algorithms.isEmpty(res) ? "Address is unknown yet" : res; // todo: text constant
}
public String getLocationStr() {
public String getLocationStr(MapActivity mapActivity) {
if (foundStreetName == null)
return pointDescription.getLocationName(mapActivity, true).replaceAll("\n", "");
else
@ -157,11 +146,11 @@ public class MapContextMenu {
return null;
}
public void buttonNavigatePressed() {
public void buttonNavigatePressed(MapActivity mapActivity) {
mapActivity.getMapActions().showNavigationContextMenuPoint(pointDescription.getLat(), pointDescription.getLon());
}
public void buttonFavoritePressed() {
public void buttonFavoritePressed(MapActivity mapActivity) {
if (object != null && object instanceof FavouritePoint) {
mapActivity.getMapActions().editFavoritePoint((FavouritePoint)object);
} else {
@ -169,11 +158,11 @@ public class MapContextMenu {
}
}
public void buttonSharePressed() {
public void buttonSharePressed(MapActivity mapActivity) {
mapActivity.getMapActions().shareLocation(pointDescription.getLat(), pointDescription.getLon());
}
public void buttonMorePressed() {
public void buttonMorePressed(MapActivity mapActivity) {
final ContextMenuAdapter menuAdapter = new ContextMenuAdapter(mapActivity);
if (object != null) {
for (OsmandMapLayer layer : mapActivity.getMapView().getLayers()) {
@ -183,4 +172,19 @@ public class MapContextMenu {
mapActivity.getMapActions().contextMenuPoint(pointDescription.getLat(), pointDescription.getLon(), menuAdapter, object);
}
public void saveMenuState(Bundle bundle) {
if (object != null) {
if (object instanceof Amenity)
bundle.putSerializable(KEY_CTX_MENU_OBJECT, (Amenity)object);
}
bundle.putSerializable(KEY_CTX_MENU_POINT_DESC, pointDescription);
}
public void restoreMenuState(Bundle bundle) {
object = bundle.getSerializable(KEY_CTX_MENU_OBJECT);
Object pDescObj = bundle.getSerializable(KEY_CTX_MENU_POINT_DESC);
if (pDescObj != null)
pointDescription = (PointDescription)pDescObj;
}
}

View file

@ -1,5 +1,7 @@
package net.osmand.plus.mapcontextmenu;
import android.animation.Animator;
import android.animation.AnimatorListenerAdapter;
import android.annotation.TargetApi;
import android.app.Activity;
import android.content.res.Resources;
@ -25,10 +27,13 @@ import net.osmand.plus.OsmandApplication;
import net.osmand.plus.R;
import net.osmand.plus.activities.MapActivity;
import net.osmand.plus.mapcontextmenu.sections.MenuController;
import net.osmand.plus.views.OsmandMapTileView;
import org.apache.commons.logging.Log;
import static android.util.TypedValue.COMPLEX_UNIT_DIP;
import static net.osmand.plus.mapcontextmenu.sections.MenuBuilder.SHADOW_HEIGHT_BOTTOM_DP;
import static net.osmand.plus.mapcontextmenu.sections.MenuBuilder.SHADOW_HEIGHT_TOP_DP;
public class MapContextMenuFragment extends Fragment {
@ -40,14 +45,17 @@ public class MapContextMenuFragment extends Fragment {
private View mainView;
private View bottomView;
private View shadowView;
private View bottomBorder;
MenuController menuController;
private int menuTopHeight;
private int menuTopShadowHeight;
private int menuTopShadowAllHeight;
private int menuTitleHeight;
private int menuButtonsHeight;
private int menuBottomViewHeight;
private int menuFullHeight;
private int menuFullHeightMax;
@Override
public void onAttach(Activity activity) {
@ -83,11 +91,20 @@ public class MapContextMenuFragment extends Fragment {
*/
}
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
getCtxMenu().saveMenuState(outState);
}
@TargetApi(Build.VERSION_CODES.HONEYCOMB)
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
if (savedInstanceState != null)
getCtxMenu().restoreMenuState(savedInstanceState);
view = inflater.inflate(R.layout.map_context_menu_fragment, container, false);
ViewTreeObserver vto = view.getViewTreeObserver();
@ -97,10 +114,14 @@ public class MapContextMenuFragment extends Fragment {
public void onGlobalLayout() {
menuTopHeight = view.findViewById(R.id.context_menu_top_view).getHeight();
menuTopShadowHeight = view.findViewById(R.id.context_menu_top_shadow).getHeight();
menuTopShadowAllHeight = view.findViewById(R.id.context_menu_top_shadow_all).getHeight();
menuButtonsHeight = view.findViewById(R.id.context_menu_buttons).getHeight();
menuBottomViewHeight = view.findViewById(R.id.context_menu_bottom_view).getHeight();
menuFullHeight = view.findViewById(R.id.context_menu_main).getHeight();
menuTitleHeight = menuTopShadowHeight + menuTopShadowAllHeight;
menuFullHeightMax = menuTitleHeight + (menuBottomViewHeight > 0 ? menuBottomViewHeight + dpToPx(2f) : -dpToPx(SHADOW_HEIGHT_BOTTOM_DP));
ViewTreeObserver obs = view.getViewTreeObserver();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
@ -114,14 +135,6 @@ public class MapContextMenuFragment extends Fragment {
});
bottomBorder = view.findViewById(R.id.context_menu_bottom_border);
bottomBorder.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
return true;
}
});
shadowView = view.findViewById(R.id.context_menu_shadow_view);
shadowView.setOnTouchListener(new View.OnTouchListener() {
public boolean onTouch(View view, MotionEvent event) {
@ -130,118 +143,152 @@ public class MapContextMenuFragment extends Fragment {
}
});
View topView = view.findViewById(R.id.context_menu_top_view);
mainView = view.findViewById(R.id.context_menu_main);
topView.setOnTouchListener(new View.OnTouchListener() {
final View.OnTouchListener slideTouchListener = new View.OnTouchListener() {
private float dy;
private float dyMain;
private int destinationState;
private VelocityTracker velocity;
private boolean slidingUp;
private boolean slidingDown;
private float velocityX;
private float velocityY;
private float maxVelocityY;
private float startX;
private float startY;
private long lastTouchDown;
private final int CLICK_ACTION_THRESHHOLD = 200;
private boolean isClick(float endX, float endY) {
float differenceX = Math.abs(startX - endX);
float differenceY = Math.abs(startY - endY);
if (differenceX > 1 ||
differenceY > 1 ||
Math.abs(velocityX) > 10 ||
Math.abs(velocityY) > 10 ||
System.currentTimeMillis() - lastTouchDown > CLICK_ACTION_THRESHHOLD) {
return false;
}
return true;
}
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
startX = event.getX();
startY = event.getY();
lastTouchDown = System.currentTimeMillis();
dy = event.getY();
dyMain = mainView.getY();
velocity = VelocityTracker.obtain();
velocityX = 0;
velocityY = 0;
maxVelocityY = 0;
velocity.addMovement(event);
break;
case MotionEvent.ACTION_MOVE:
float y = event.getY();
float newY = mainView.getY() + (y - dy);
mainView.setY(newY);
mainView.setY((int)newY);
ViewGroup.LayoutParams lp = bottomBorder.getLayoutParams();
lp.height = (int)(view.getHeight() - newY - menuFullHeight) + 10;
bottomBorder.setLayoutParams(lp);
bottomBorder.setY(newY + menuFullHeight);
bottomBorder.requestLayout();
menuFullHeight = view.getHeight() - (int) newY + 10;
ViewGroup.LayoutParams lp = mainView.getLayoutParams();
lp.height = Math.max(menuFullHeight, menuTitleHeight);
mainView.setLayoutParams(lp);
mainView.requestLayout();
velocity.addMovement(event);
velocity.computeCurrentVelocity(1000);
float vel = Math.abs(velocity.getYVelocity());
if (vel > velocityY)
velocityY = vel;
velocityX = Math.abs(velocity.getXVelocity());
velocityY = Math.abs(velocity.getYVelocity());
if (velocityY > maxVelocityY)
maxVelocityY = velocityY;
break;
case MotionEvent.ACTION_UP:
case MotionEvent.ACTION_CANCEL:
float endX = event.getX();
float endY = event.getY();
slidingUp = Math.abs(velocityY) > 500 && (mainView.getY() - dyMain) < -50;
slidingDown = Math.abs(velocityY) > 500 && (mainView.getY() - dyMain) > 50;
slidingUp = Math.abs(maxVelocityY) > 500 && (mainView.getY() - dyMain) < -50;
slidingDown = Math.abs(maxVelocityY) > 500 && (mainView.getY() - dyMain) > 50;
velocity.recycle();
if (menuController != null) {
if (slidingUp) {
if (menuBottomViewHeight > 0 && slidingUp) {
menuController.slideUp();
} else if (slidingDown) {
menuController.slideDown();
}
destinationState = menuController.getCurrentMenuState();
} else {
destinationState = MenuController.MenuState.HEADER_ONLY;
}
float posY = 0;
switch (destinationState) {
case MenuController.MenuState.HEADER_ONLY:
posY = view.getHeight() - (menuFullHeight - menuBottomViewHeight);
break;
case MenuController.MenuState.HALF_SCREEN:
posY = view.getHeight() - menuFullHeight;
break;
case MenuController.MenuState.FULL_SCREEN:
posY = 0;
break;
default:
break;
}
float minY = Math.min(posY, mainView.getY());
lp = bottomBorder.getLayoutParams();
lp.height = (int)(view.getHeight() - minY - menuFullHeight) + 10;
if (lp.height < 0)
lp.height = 0;
bottomBorder.setLayoutParams(lp);
bottomBorder.requestLayout();
final int posY = getPosY();
if (mainView.getY() != posY) {
mainView.animate().y(posY).setDuration(200).setInterpolator(new DecelerateInterpolator()).start();
bottomBorder.animate().y(posY + menuFullHeight).setDuration(200).setInterpolator(new DecelerateInterpolator()).start();
if (posY < mainView.getY()) {
updateMainViewLayout(posY);
}
mainView.animate().y(posY)
.setDuration(200)
.setInterpolator(new DecelerateInterpolator())
.setListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationCancel(Animator animation) {
updateMainViewLayout(posY);
}
@Override
public void onAnimationEnd(Animator animation) {
updateMainViewLayout(posY);
}
})
.start();
}
/*
lp = shadowView.getLayoutParams();
lp.height = view.getHeight() - (int)posY;
shadowView.setLayoutParams(lp);
shadowView.requestLayout();
*/
// OnClick event
if (isClick(endX, endY)) {
OsmandMapTileView mapView = getMapActivity().getMapView();
mapView.getAnimatedDraggingThread().startMoving(getCtxMenu().getPointDescription().getLat(), getCtxMenu().getPointDescription().getLon(),
mapView.getZoom(), true);
}
break;
}
return true;
}
};
View topView = view.findViewById(R.id.context_menu_top_view);
topView.setOnTouchListener(slideTouchListener);
View topShadowView = view.findViewById(R.id.context_menu_top_shadow);
topShadowView.setOnTouchListener(slideTouchListener);
View topShadowAllView = view.findViewById(R.id.context_menu_top_shadow_all);
topShadowAllView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if (event.getY() <= dpToPx(SHADOW_HEIGHT_TOP_DP) || event.getAction() != MotionEvent.ACTION_DOWN)
return slideTouchListener.onTouch(v, event);
else
return false;
}
});
// Left icon
IconsCache iconsCache = getMyApplication().getIconsCache();
boolean light = getMyApplication().getSettings().isLightContent();
int iconId = MapContextMenu.getInstance().getLeftIconId();
int iconId = getCtxMenu().getLeftIconId();
final View iconLayout = view.findViewById(R.id.context_menu_icon_layout);
final ImageView iconView = (ImageView)view.findViewById(R.id.context_menu_icon_view);
@ -254,11 +301,11 @@ public class MapContextMenuFragment extends Fragment {
// Text line 1
TextView line1 = (TextView) view.findViewById(R.id.context_menu_line1);
line1.setText(MapContextMenu.getInstance().getAddressStr());
line1.setText(getCtxMenu().getAddressStr());
// Text line 2
TextView line2 = (TextView) view.findViewById(R.id.context_menu_line2);
line2.setText(MapContextMenu.getInstance().getLocationStr());
line2.setText(getCtxMenu().getLocationStr(getMapActivity()));
// Close button
final ImageView closeButtonView = (ImageView)view.findViewById(R.id.context_menu_close_btn_view);
@ -275,46 +322,46 @@ public class MapContextMenuFragment extends Fragment {
// Action buttons
final ImageButton buttonNavigate = (ImageButton) view.findViewById(R.id.context_menu_route_button);
buttonNavigate.setImageDrawable(iconsCache.getIcon(R.drawable.map_directions,
light ? R.color.icon_color : R.color.dash_search_icon_dark));
light ? R.color.icon_color : R.color.dashboard_subheader_text_dark));
buttonNavigate.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
MapContextMenu.getInstance().buttonNavigatePressed();
getCtxMenu().buttonNavigatePressed(getMapActivity());
}
});
final ImageButton buttonFavorite = (ImageButton) view.findViewById(R.id.context_menu_fav_button);
buttonFavorite.setImageDrawable(iconsCache.getIcon(R.drawable.ic_action_fav_dark,
light ? R.color.icon_color : R.color.dash_search_icon_dark));
light ? R.color.icon_color : R.color.dashboard_subheader_text_dark));
buttonFavorite.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
MapContextMenu.getInstance().buttonFavoritePressed();
getCtxMenu().buttonFavoritePressed(getMapActivity());
}
});
final ImageButton buttonShare = (ImageButton) view.findViewById(R.id.context_menu_share_button);
buttonShare.setImageDrawable(iconsCache.getIcon(R.drawable.abc_ic_menu_share_mtrl_alpha,
light ? R.color.icon_color : R.color.dash_search_icon_dark));
light ? R.color.icon_color : R.color.dashboard_subheader_text_dark));
buttonShare.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
MapContextMenu.getInstance().buttonSharePressed();
getCtxMenu().buttonSharePressed(getMapActivity());
}
});
final ImageButton buttonMore = (ImageButton) view.findViewById(R.id.context_menu_more_button);
buttonMore.setImageDrawable(iconsCache.getIcon(R.drawable.ic_overflow_menu_white,
light ? R.color.icon_color : R.color.dash_search_icon_dark));
light ? R.color.icon_color : R.color.dashboard_subheader_text_dark));
buttonMore.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
MapContextMenu.getInstance().buttonMorePressed();
getCtxMenu().buttonMorePressed(getMapActivity());
}
});
// Menu controller
menuController = MapContextMenu.getInstance().getMenuController();
menuController = getCtxMenu().getMenuController();
bottomView = view.findViewById(R.id.context_menu_bottom_view);
if (menuController != null) {
bottomView.setOnTouchListener(new View.OnTouchListener() {
@ -326,56 +373,54 @@ public class MapContextMenuFragment extends Fragment {
menuController.build(bottomView);
}
bottomView.measure(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
menuBottomViewHeight = bottomView.getMeasuredHeight();
return view;
}
private void doLayoutMenu() {
int shadowViewHeight = 0;
int bottomBorderHeight = 0;
private int getPosY() {
int destinationState;
int minHalfY;
if (menuController != null) {
destinationState = menuController.getCurrentMenuState();
minHalfY = view.getHeight() - (int)(view.getHeight() * menuController.getHalfScreenMaxHeightKoef());
} else {
destinationState = MenuController.MenuState.HEADER_ONLY;
minHalfY = view.getHeight();
}
int menuState;
if (menuController != null)
menuState = menuController.getCurrentMenuState();
else
menuState = MenuController.MenuState.HEADER_ONLY;
switch (menuState) {
int posY = 0;
switch (destinationState) {
case MenuController.MenuState.HEADER_ONLY:
shadowViewHeight = view.getHeight() - (menuFullHeight - menuBottomViewHeight);
bottomBorderHeight = 0;
posY = view.getHeight() - (menuTitleHeight - dpToPx(SHADOW_HEIGHT_BOTTOM_DP));
break;
case MenuController.MenuState.HALF_SCREEN:
int maxHeight = (int)(menuController.getHalfScreenMaxHeightKoef() * view.getHeight());
if (maxHeight > menuFullHeight) {
shadowViewHeight = view.getHeight() - menuFullHeight;
bottomBorderHeight = 0;
} else {
shadowViewHeight = view.getHeight() - maxHeight;
bottomBorderHeight = 0;
mainView.setY(shadowViewHeight);
}
posY = view.getHeight() - menuFullHeightMax;
posY = Math.max(posY, minHalfY);
break;
case MenuController.MenuState.FULL_SCREEN:
shadowViewHeight = 0;
bottomBorderHeight = view.getHeight() - menuFullHeight;
posY = -menuTopShadowHeight - dpToPx(SHADOW_HEIGHT_TOP_DP);
break;
default:
break;
}
return posY;
}
ViewGroup.LayoutParams lp = bottomBorder.getLayoutParams();
lp.height = bottomBorderHeight + 10;
bottomBorder.setLayoutParams(lp);
bottomBorder.setY(view.getHeight() - bottomBorderHeight);
lp = shadowView.getLayoutParams();
lp.height = shadowViewHeight;
shadowView.setLayoutParams(lp);
private void updateMainViewLayout(int posY) {
ViewGroup.LayoutParams lp;
menuFullHeight = view.getHeight() - posY;
lp = mainView.getLayoutParams();
lp.height = menuFullHeight;
lp.height = Math.max(menuFullHeight, menuTitleHeight);
mainView.setLayoutParams(lp);
mainView.requestLayout();
}
private void doLayoutMenu() {
final int posY = getPosY();
mainView.setY(posY);
updateMainViewLayout(posY);
}
public void dismissMenu() {
@ -397,14 +442,22 @@ public class MapContextMenuFragment extends Fragment {
.addToBackStack(null).commit();
}
private MapContextMenu getCtxMenu() {
return getMapActivity().getContextMenu();
}
private MapActivity getMapActivity() {
return (MapActivity)getActivity();
}
// Utils
public int getScreenHeight() {
private int getScreenHeight() {
DisplayMetrics dm = new DisplayMetrics();
getActivity().getWindowManager().getDefaultDisplay().getMetrics(dm);
return dm.heightPixels;
}
public int dpToPx(float dp) {
private int dpToPx(float dp) {
Resources r = getActivity().getResources();
return (int) TypedValue.applyDimension(
COMPLEX_UNIT_DIP,

View file

@ -1,6 +1,7 @@
package net.osmand.plus.mapcontextmenu.sections;
import android.content.res.Resources;
import android.text.util.Linkify;
import android.util.TypedValue;
import android.view.Gravity;
import android.view.View;
@ -30,7 +31,7 @@ public class AmenityInfoMenuBuilder extends MenuBuilder {
this.amenity = amenity;
}
private void buildRow(View view, int iconId, String text) {
private void buildRow(View view, int iconId, String text, boolean firstRow) {
boolean light = app.getSettings().isLightContent();
LinearLayout ll = new LinearLayout(view.getContext());
@ -42,13 +43,13 @@ public class AmenityInfoMenuBuilder extends MenuBuilder {
// Icon
LinearLayout llIcon = new LinearLayout(view.getContext());
llIcon.setOrientation(LinearLayout.HORIZONTAL);
llIcon.setLayoutParams(new LinearLayout.LayoutParams(dpToPx(72f), dpToPx(48f)));
llIcon.setLayoutParams(new LinearLayout.LayoutParams(dpToPx(72f), firstRow ? dpToPx(48f) - dpToPx(SHADOW_HEIGHT_BOTTOM_DP) : dpToPx(48f)));
llIcon.setGravity(Gravity.CENTER_VERTICAL);
ll.addView(llIcon);
ImageView icon = new ImageView(view.getContext());
LinearLayout.LayoutParams llIconParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT) ;
llIconParams.setMargins(dpToPx(16f), dpToPx(12f), dpToPx(32f), dpToPx(12f));
llIconParams.setMargins(dpToPx(16f), firstRow ? dpToPx(12f) - dpToPx(SHADOW_HEIGHT_BOTTOM_DP / 2f) : dpToPx(12f), dpToPx(32f), dpToPx(12f));
llIconParams.gravity = Gravity.CENTER_VERTICAL;
icon.setLayoutParams(llIconParams);
icon.setScaleType(ImageView.ScaleType.CENTER);
@ -58,15 +59,25 @@ public class AmenityInfoMenuBuilder extends MenuBuilder {
// Text
LinearLayout llText = new LinearLayout(view.getContext());
llText.setOrientation(LinearLayout.VERTICAL);
LinearLayout.LayoutParams llTextParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
llTextParams.setMargins(0, dpToPx(4f), 0, dpToPx(4f));
llText.setLayoutParams(llTextParams);
ll.addView(llText);
TextView textView = new TextView(view.getContext());
textView.setTextSize(18); // todo: create constant
LinearLayout.LayoutParams llTextParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
llTextParams.setMargins(0, firstRow ? dpToPx(8f) - dpToPx(SHADOW_HEIGHT_BOTTOM_DP) : dpToPx(8f), 0, dpToPx(8f));
textView.setLayoutParams(llTextParams);
textView.setTextSize(16); // todo: create constant
textView.setTextColor(app.getResources().getColor(light ? R.color.ctx_menu_info_text_light : R.color.ctx_menu_info_text_dark));
//text = "http://ru.wikipedia.org/wiki/Храм Святого Розария (Владимир)";
//SpannableString spannable = new SpannableString(text);
//Linkify.addLinks(spannable, Linkify.ALL);
//textView.setClickable(true);
//textView.setMovementMethod(LinkMovementMethod.getInstance());
textView.setAutoLinkMask(Linkify.ALL);
//textView.setSingleLine();
textView.setLinksClickable(true);
textView.setText(text);
//textView.setText("sdf dsaf fsdasdfg adsf asdsfd asdf sdf adsfg asdf sdfa sdf dsf agsfdgd fgsfd sdf asdf adg adf sdf asdf dfgdfsg sdfg adsf asdf asdf sdf SDF ASDF ADSF ASDF ASDF DAF SDAF dfg dsfg dfg sdfg rg rth sfghs dfgs dfgsdfg adfg dfg sdfg dfs ");
@ -100,6 +111,8 @@ public class AmenityInfoMenuBuilder extends MenuBuilder {
@Override
public void build(View view) {
boolean firstRow = true;
MapPoiTypes poiTypes = app.getPoiTypes();
for(Map.Entry<String, String> e : amenity.getAdditionalInfo().entrySet()) {
int iconId;
@ -132,7 +145,8 @@ public class AmenityInfoMenuBuilder extends MenuBuilder {
}
}
buildRow(view, iconId, vl);
buildRow(view, iconId, vl, firstRow);
firstRow = false;
}
}
}

View file

@ -9,6 +9,11 @@ public class AmenityInfoMenuController extends MenuController {
super(new AmenityInfoMenuBuilder(app, amenity));
}
@Override
public int getInitialMenuState() {
return MenuState.HEADER_ONLY;
}
@Override
public int getSupportedMenuStates() {
return MenuState.HEADER_ONLY | MenuState.HALF_SCREEN | MenuState.FULL_SCREEN;

View file

@ -9,6 +9,9 @@ import net.osmand.plus.R;
public abstract class MenuBuilder {
public static final float SHADOW_HEIGHT_TOP_DP = 16f;
public static final float SHADOW_HEIGHT_BOTTOM_DP = 6f;
protected OsmandApplication app;
public MenuBuilder(OsmandApplication app) {

View file

@ -63,7 +63,7 @@ public abstract class MenuController {
}
public float getHalfScreenMaxHeightKoef() {
return .6f;
return .7f;
}
public boolean shouldShowButtons() {

View file

@ -45,6 +45,8 @@ import net.osmand.plus.views.OsmandMapLayer.DrawSettings;
import net.osmand.plus.views.OsmandMapTileView;
import net.osmand.plus.views.mapwidgets.TextInfoWidget;
import java.text.DateFormat;
import java.util.Date;
import java.util.List;
import gnu.trove.list.array.TIntArrayList;
@ -325,6 +327,11 @@ public class OsmandMonitoringPlugin extends OsmandPlugin {
SavingTrackHelper helper = app.getSavingTrackHelper();
helper.saveDataToGpx(app.getAppCustomization().getTracksDir());
helper.close();
DateFormat timeFormat = android.text.format.DateFormat.getTimeFormat(app);
final String formattedTime =
timeFormat.format(new Date(helper.getLastTimeUpdated()));
showNotification(app, String.format(app.getString(R.string.saved_at_time),
formattedTime));
} finally {
isSaving = false;
}
@ -345,7 +352,7 @@ public class OsmandMonitoringPlugin extends OsmandPlugin {
}
}
public void startGPXMonitoring(Activity map) {
public void startGPXMonitoring(final Activity map) {
final ValueHolder<Integer> vs = new ValueHolder<Integer>();
final ValueHolder<Boolean> choice = new ValueHolder<Boolean>();
vs.value = settings.SAVE_GLOBAL_TRACK_INTERVAL.get();
@ -364,7 +371,11 @@ public class OsmandMonitoringPlugin extends OsmandPlugin {
settings.SERVICE_OFF_INTERVAL.set(settings.SAVE_GLOBAL_TRACK_INTERVAL.get());
}
app.startNavigationService(NavigationService.USED_BY_GPX);
app.startNavigationService(NavigationService.USED_BY_GPX);
showNotification(map, null);
}
};
if(choice.value) {
@ -379,38 +390,32 @@ public class OsmandMonitoringPlugin extends OsmandPlugin {
}
});
}
}
String stop = map.getResources().getString(R.string.shared_string_control_stop);
private static void showNotification(Context context, String contentText) {
String stop = context.getResources().getString(R.string.shared_string_control_stop);
Intent stopIntent = new Intent(NavigationService.OSMAND_STOP_SERVICE_ACTION);
PendingIntent stopPendingIntent = PendingIntent.getBroadcast(map, 0, stopIntent,
PendingIntent stopPendingIntent = PendingIntent.getBroadcast(context, 0, stopIntent,
PendingIntent.FLAG_UPDATE_CURRENT);
String save = map.getResources().getString(R.string.shared_string_save);
String save = context.getResources().getString(R.string.shared_string_save);
Intent saveIntent = new Intent(OSMAND_SAVE_SERVICE_ACTION);
PendingIntent savePendingIntent = PendingIntent.getBroadcast(map, 0, saveIntent,
PendingIntent savePendingIntent = PendingIntent.getBroadcast(context, 0, saveIntent,
PendingIntent.FLAG_UPDATE_CURRENT);
BroadcastReceiver saveBroadcastReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
final OsmandMonitoringPlugin plugin = OsmandPlugin
.getEnabledPlugin(OsmandMonitoringPlugin.class);
if (plugin != null) {
plugin.saveCurrentTrack();
}
}
};
map.registerReceiver(saveBroadcastReceiver, new IntentFilter(OSMAND_SAVE_SERVICE_ACTION));
BroadcastReceiver saveBroadcastReceiver = new SaveBroadcastReceiver();
context.registerReceiver(saveBroadcastReceiver, new IntentFilter(OSMAND_SAVE_SERVICE_ACTION));
final NotificationCompat.Builder notificationBuilder =
new android.support.v7.app.NotificationCompat.Builder(map)
.setContentTitle(map.getResources().getString(R.string.map_widget_monitoring))
.setSmallIcon(R.drawable.ic_action_polygom_dark)
new android.support.v7.app.NotificationCompat.Builder(context)
.setContentTitle(context.getResources().getString(R.string.map_widget_monitoring))
.setContentText(contentText)
.setSmallIcon(R.drawable.ic_action_polygom_dark)
// .setLargeIcon(Helpers.getBitmap(R.drawable.mirakel, getBaseContext()))
.setOngoing(true)
.addAction(R.drawable.ic_action_rec_stop, stop, stopPendingIntent)
.addAction(R.drawable.ic_action_save, save, savePendingIntent);
.setOngoing(true)
.addAction(R.drawable.ic_action_rec_stop, stop, stopPendingIntent)
.addAction(R.drawable.ic_action_save, save, savePendingIntent);
NotificationManager mNotificationManager =
(NotificationManager) map.getSystemService(Context.NOTIFICATION_SERVICE);
(NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
mNotificationManager.notify(notificationId, notificationBuilder.build());
}
@ -513,4 +518,15 @@ public class OsmandMonitoringPlugin extends OsmandPlugin {
return new DashFragmentData(DashTrackFragment.TAG, DashTrackFragment.class,
R.string.record_plugin_name, 11);
}
private static class SaveBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
final OsmandMonitoringPlugin plugin = OsmandPlugin
.getEnabledPlugin(OsmandMonitoringPlugin.class);
if (plugin != null) {
plugin.saveCurrentTrack();
}
}
}
}

View file

@ -2,6 +2,7 @@ package net.osmand.plus.osmedit;
import android.app.Dialog;
import android.content.DialogInterface;
import android.graphics.Point;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.support.annotation.Nullable;
@ -9,6 +10,7 @@ import android.support.v4.app.Fragment;
import android.support.v7.app.AlertDialog;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.Display;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
@ -54,9 +56,15 @@ public class AdvancedDataFragment extends Fragment {
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
final View view = inflater.inflate(R.layout.fragment_edit_poi_advanced, container, false);
Display display = getActivity().getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);
int height = size.y;
view.findViewById(R.id.screenFiller).setMinimumHeight(height);
deleteDrawable = ((OsmandApplication) getActivity().getApplication()).getIconsCache()
.getPaintedContentIcon(R.drawable.ic_action_remove_dark,
getActivity().getResources().getColor(R.color.icon_color_light));
getActivity().getResources().getColor(R.color.dash_search_icon_dark));
TextView nameTextView = (TextView) view.findViewById(R.id.nameTextView);
TextView amenityTagTextView = (TextView) view.findViewById(R.id.amenityTagTextView);
TextView amenityTextView = (TextView) view.findViewById(R.id.amenityTextView);
@ -205,7 +213,7 @@ public class AdvancedDataFragment extends Fragment {
editPoiData.notifyDatasetChanged(mTagsChangedListener);
}
});
final Set<String> tagKeys = new TreeSet<String>();
final Set<String> tagKeys = new TreeSet<>();
for (OSMSettings.OSMTagKey t : OSMSettings.OSMTagKey.values()) {
if ((t != OSMSettings.OSMTagKey.NAME) && (t != OSMSettings.OSMTagKey.OPENING_HOURS) && (t != OSMSettings.OSMTagKey.PHONE)
&& (t != OSMSettings.OSMTagKey.WEBSITE)) {
@ -213,7 +221,7 @@ public class AdvancedDataFragment extends Fragment {
}
}
ArrayAdapter<Object> adapter = new ArrayAdapter<Object>(linearLayout.getContext(),
ArrayAdapter<Object> adapter = new ArrayAdapter<>(linearLayout.getContext(),
R.layout.list_textview, tagKeys.toArray());
tagEditText.setAdapter(adapter);
tagEditText.setThreshold(1);

View file

@ -1,5 +1,6 @@
package net.osmand.plus.osmedit;
import android.graphics.Point;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.support.annotation.Nullable;
@ -7,6 +8,7 @@ import android.support.v4.app.Fragment;
import android.text.Editable;
import android.text.TextUtils;
import android.text.TextWatcher;
import android.view.Display;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
@ -52,21 +54,35 @@ public class BasicDataFragment extends Fragment {
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
IconsCache iconsCache = ((OsmandApplication) getActivity().getApplication()).getIconsCache();
View view = inflater.inflate(R.layout.fragment_edit_poi_normal, container, false);
Display display = getActivity().getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);
int height = size.y;
view.findViewById(R.id.screenFiller).setMinimumHeight(height);
IconsCache iconsCache = getMyApplication().getIconsCache();
int iconColor = getResources().getColor(R.color.dash_search_icon_dark);
ImageView streetImageView = (ImageView) view.findViewById(R.id.streetImageView);
streetImageView.setImageDrawable(iconsCache.getContentIcon(R.drawable.ic_action_street_name));
streetImageView.setImageDrawable(
iconsCache.getPaintedContentIcon(R.drawable.ic_action_street_name, iconColor));
ImageView houseNumberImageView = (ImageView) view.findViewById(R.id.houseNumberImageView);
houseNumberImageView.setImageDrawable(iconsCache.getContentIcon(R.drawable.ic_action_building_number));
houseNumberImageView.setImageDrawable(
iconsCache.getPaintedContentIcon(R.drawable.ic_action_building_number, iconColor));
ImageView phoneImageView = (ImageView) view.findViewById(R.id.phoneImageView);
phoneImageView.setImageDrawable(iconsCache.getContentIcon(R.drawable.ic_action_call_dark));
phoneImageView.setImageDrawable(
iconsCache.getPaintedContentIcon(R.drawable.ic_action_call_dark, iconColor));
ImageView webSiteImageView = (ImageView) view.findViewById(R.id.webSiteImageView);
webSiteImageView.setImageDrawable(iconsCache.getContentIcon(R.drawable.ic_world_globe_dark));
webSiteImageView.setImageDrawable(
iconsCache.getPaintedContentIcon(R.drawable.ic_world_globe_dark, iconColor));
ImageView descriptionImageView = (ImageView) view.findViewById(R.id.descriptionImageView);
descriptionImageView.setImageDrawable(iconsCache.getContentIcon(R.drawable.ic_action_description));
descriptionImageView.setImageDrawable(
iconsCache.getPaintedContentIcon(R.drawable.ic_action_description, iconColor));
ImageView openingHoursImageView = (ImageView) view.findViewById(R.id.openingHoursImageView);
openingHoursImageView.setImageDrawable(iconsCache.getContentIcon(R.drawable.ic_action_time));
openingHoursImageView.setImageDrawable(
iconsCache.getPaintedContentIcon(R.drawable.ic_action_time, iconColor));
streetEditText = (EditText) view.findViewById(R.id.streetEditText);
streetEditText.addTextChangedListener(new MyOnFocusChangeListener(getData(),
@ -96,10 +112,10 @@ public class BasicDataFragment extends Fragment {
}
});
LinearLayout openHoursContainer = (LinearLayout) view.findViewById(R.id.openHoursContainer);
Drawable clockDrawable = iconsCache.getContentIcon(R.drawable.ic_action_time);
Drawable clockDrawable = iconsCache
.getPaintedContentIcon(R.drawable.ic_action_time, iconColor);
Drawable deleteDrawable = iconsCache
.getPaintedContentIcon(R.drawable.ic_action_remove_dark,
getActivity().getResources().getColor(R.color.icon_color_light));
.getPaintedContentIcon(R.drawable.ic_action_remove_dark, iconColor);
if (savedInstanceState != null && savedInstanceState.containsKey(OPENING_HOURS)) {
mOpeningHoursAdapter = new OpeningHoursAdapter(
(OpeningHoursParser.OpeningHours) savedInstanceState.getSerializable(OPENING_HOURS),
@ -112,6 +128,10 @@ public class BasicDataFragment extends Fragment {
return view;
}
private OsmandApplication getMyApplication() {
return (OsmandApplication) getActivity().getApplication();
}
@Override
public void onResume() {
super.onResume();

View file

@ -27,6 +27,7 @@ import android.text.TextUtils;
import android.text.TextWatcher;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
@ -117,6 +118,10 @@ public class EditPoiFragment extends DialogFragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
final View view = inflater.inflate(R.layout.fragment_edit_poi, container, false);
final OsmandSettings settings = getMyApplication().getSettings();
boolean isLightTheme = settings.OSMAND_THEME.get() == settings.OSMAND_LIGHT_THEME;
if (savedInstanceState != null) {
editPoiData.tags = (LinkedHashSet<Tag>) savedInstanceState.getSerializable(TAGS_LIST);
} else {
@ -151,8 +156,6 @@ public class EditPoiFragment extends DialogFragment {
editPoiData.tags.add(tag);
}
View view = inflater.inflate(R.layout.fragment_edit_poi, container, false);
Toolbar toolbar = (Toolbar) view.findViewById(R.id.toolbar);
toolbar.setTitle(R.string.poi_create_title);
toolbar.setNavigationIcon(R.drawable.abc_ic_ab_back_mtrl_am_alpha);
@ -200,7 +203,9 @@ public class EditPoiFragment extends DialogFragment {
onlineDocumentationButton.setImageDrawable(
getMyApplication().getIconsCache()
.getPaintedContentIcon(R.drawable.ic_action_help,
getResources().getColor(R.color.inactive_item_orange)));
getResources().getColor(
isLightTheme ? R.color.dash_search_icon_dark
: R.color.inactive_item_orange)));
final ImageButton poiTypeButton = (ImageButton) view.findViewById(R.id.poiTypeButton);
poiTypeButton.setOnClickListener(new View.OnClickListener() {
@Override
@ -252,14 +257,25 @@ public class EditPoiFragment extends DialogFragment {
}
}
});
poiTypeEditText.setOnClickListener(new View.OnClickListener() {
poiTypeEditText.setOnTouchListener(new View.OnTouchListener() {
@Override
public void onClick(View v) {
if (poiTypeEditText.getText().length() == 0 && editPoiData.amenity.getType() != null) {
DialogFragment dialogFragment =
PoiSubTypeDialogFragment.createInstance(editPoiData.amenity);
dialogFragment.show(getChildFragmentManager(), "PoiSubTypeDialogFragment");
public boolean onTouch(final View v, MotionEvent event) {
final EditText editText = (EditText) v;
final int DRAWABLE_RIGHT = 2;
if (event.getAction() == MotionEvent.ACTION_UP) {
if (event.getX() >= (editText.getRight()
- editText.getCompoundDrawables()[DRAWABLE_RIGHT].getBounds().width()
- editText.getPaddingRight())) {
if (editPoiData.amenity.getType() != null) {
DialogFragment dialogFragment =
PoiSubTypeDialogFragment.createInstance(editPoiData.amenity);
dialogFragment.show(getChildFragmentManager(), "PoiSubTypeDialogFragment");
}
return true;
}
}
return false;
}
});

View file

@ -20,9 +20,6 @@ import net.osmand.plus.osmedit.OpenstreetmapUtil;
import net.osmand.plus.osmedit.OsmEditingPlugin;
import net.osmand.plus.osmedit.OsmPoint;
/**
* Created by GaidamakUA on 8/28/15.
*/
public class DeletePoiDialogFragment extends DialogFragment {
private static final String KEY_AMENITY_NODE = "amenity_node";
@ -37,7 +34,7 @@ public class DeletePoiDialogFragment extends DialogFragment {
final Bundle args = getArguments();
AlertDialog.Builder builder = new AlertDialog.Builder(activity);
builder.setTitle(R.string.poi_remove_title);;
builder.setTitle(R.string.poi_remove_title);
builder.setNegativeButton(R.string.shared_string_cancel, null);
builder.setPositiveButton(R.string.shared_string_delete, new DialogInterface.OnClickListener() {
@Override
@ -48,7 +45,8 @@ public class DeletePoiDialogFragment extends DialogFragment {
new Runnable() {
@Override
public void run() {
AccessibleToast.makeText(activity, R.string.poi_remove_success,
AccessibleToast.makeText(activity,
getString(R.string.poi_deleted_localy),
Toast.LENGTH_LONG).show();
if (activity instanceof MapActivity) {
((MapActivity) activity).getMapView().refreshMap(true);

View file

@ -23,7 +23,6 @@ import net.osmand.data.RotatedTileBox;
import net.osmand.plus.ContextMenuAdapter;
import net.osmand.plus.R;
import net.osmand.plus.activities.MapActivity;
import net.osmand.plus.mapcontextmenu.MapContextMenu;
import java.util.ArrayList;
import java.util.Iterator;
@ -511,7 +510,7 @@ public class ContextMenuLayer extends OsmandMapLayer {
this.latLon = new LatLon(pointDescription.getLat(), pointDescription.getLon());
showMapContextMenuMarker();
MapContextMenu.getInstance().show(pointDescription, selectedObj);
activity.getContextMenu().show(activity, pointDescription, selectedObj);
}