Merge pull request #4909 from osmandapp/merged_transport_improvements
Merged transport improvements
This commit is contained in:
commit
ab1e2e2962
82 changed files with 1671 additions and 940 deletions
|
@ -40,7 +40,7 @@
|
||||||
<uses-feature android:name="com.sec.feature.spen_usp" android:required="false"/>
|
<uses-feature android:name="com.sec.feature.spen_usp" android:required="false"/>
|
||||||
|
|
||||||
<uses-sdk android:targetSdkVersion="21" android:minSdkVersion="9"
|
<uses-sdk android:targetSdkVersion="21" android:minSdkVersion="9"
|
||||||
tools:overrideLibrary="com.getkeepsafe.taptargetview, studio.carbonylgroup.textfieldboxes"/>
|
tools:overrideLibrary="com.getkeepsafe.taptargetview, studio.carbonylgroup.textfieldboxes, android.support.customtabs"/>
|
||||||
|
|
||||||
<supports-screens android:resizeable="true" android:smallScreens="true" android:normalScreens="true" android:largeScreens="true"
|
<supports-screens android:resizeable="true" android:smallScreens="true" android:normalScreens="true" android:largeScreens="true"
|
||||||
android:xlargeScreens="true" android:anyDensity="true" />
|
android:xlargeScreens="true" android:anyDensity="true" />
|
||||||
|
|
|
@ -389,6 +389,7 @@ dependencies {
|
||||||
compile 'com.android.support:cardview-v7:26.1.0'
|
compile 'com.android.support:cardview-v7:26.1.0'
|
||||||
compile 'com.android.support:appcompat-v7:26.1.0'
|
compile 'com.android.support:appcompat-v7:26.1.0'
|
||||||
compile 'com.android.support:design:26.1.0'
|
compile 'com.android.support:design:26.1.0'
|
||||||
|
compile 'com.android.support:customtabs:26.1.0'
|
||||||
compile fileTree(include: ['*.jar'], exclude: ['QtAndroid-bundled.jar', 'QtAndroidAccessibility-bundled.jar', 'OsmAndCore_android.jar', 'OsmAndCore_wrapper.jar', 'android-support-multidex.jar'], dir: 'libs')
|
compile fileTree(include: ['*.jar'], exclude: ['QtAndroid-bundled.jar', 'QtAndroidAccessibility-bundled.jar', 'OsmAndCore_android.jar', 'OsmAndCore_wrapper.jar', 'android-support-multidex.jar'], dir: 'libs')
|
||||||
legacyCompile "net.osmand:OsmAndCore_android:0.1-SNAPSHOT@jar"
|
legacyCompile "net.osmand:OsmAndCore_android:0.1-SNAPSHOT@jar"
|
||||||
qtcoredebugCompile "net.osmand:OsmAndCore_androidNativeDebug:0.1-SNAPSHOT@aar"
|
qtcoredebugCompile "net.osmand:OsmAndCore_androidNativeDebug:0.1-SNAPSHOT@aar"
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
|
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
<item>
|
<item>
|
||||||
<nine-patch android:src="@drawable/bg_contextmenu_dots_dark" />
|
<nine-patch android:src="@drawable/bg_contextmenu_shadow_top_light" />
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<shape>
|
<shape>
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
|
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
<item>
|
<item>
|
||||||
<nine-patch android:src="@drawable/bg_contextmenu_dots_light" />
|
<nine-patch android:src="@drawable/bg_contextmenu_shadow_top_light" />
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<shape>
|
<shape>
|
||||||
|
|
|
@ -0,0 +1,13 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<shape xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:shape="rectangle">
|
||||||
|
|
||||||
|
<solid android:color="@color/route_info_bg_dark" />
|
||||||
|
|
||||||
|
<stroke
|
||||||
|
android:width="1dp"
|
||||||
|
android:color="@color/route_info_divider_dark" />
|
||||||
|
|
||||||
|
<corners android:radius="3dp" />
|
||||||
|
|
||||||
|
</shape>
|
|
@ -0,0 +1,13 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<shape xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:shape="rectangle">
|
||||||
|
|
||||||
|
<solid android:color="@color/route_info_bg_light" />
|
||||||
|
|
||||||
|
<stroke
|
||||||
|
android:width="1dp"
|
||||||
|
android:color="@color/route_info_divider_light" />
|
||||||
|
|
||||||
|
<corners android:radius="3dp" />
|
||||||
|
|
||||||
|
</shape>
|
11
OsmAnd/res/drawable/multi_selection_menu_bg_dark.xml
Normal file
11
OsmAnd/res/drawable/multi_selection_menu_bg_dark.xml
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
|
<item>
|
||||||
|
<nine-patch android:src="@drawable/bg_contextmenu_shadow_top_light" />
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<shape>
|
||||||
|
<solid android:color="@color/ctx_menu_bg_dark" />
|
||||||
|
</shape>
|
||||||
|
</item>
|
||||||
|
</layer-list>
|
12
OsmAnd/res/drawable/multi_selection_menu_bg_dark_land.xml
Normal file
12
OsmAnd/res/drawable/multi_selection_menu_bg_dark_land.xml
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
|
<item>
|
||||||
|
<nine-patch android:src="@drawable/bg_contextmenu_shadow_right_light" />
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<shape>
|
||||||
|
<solid
|
||||||
|
android:color="@color/ctx_menu_bg_dark" />
|
||||||
|
</shape>
|
||||||
|
</item>
|
||||||
|
</layer-list>
|
11
OsmAnd/res/drawable/multi_selection_menu_bg_light.xml
Normal file
11
OsmAnd/res/drawable/multi_selection_menu_bg_light.xml
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
|
<item>
|
||||||
|
<nine-patch android:src="@drawable/bg_contextmenu_shadow_top_light" />
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<shape>
|
||||||
|
<solid android:color="@color/ctx_menu_bg_light" />
|
||||||
|
</shape>
|
||||||
|
</item>
|
||||||
|
</layer-list>
|
12
OsmAnd/res/drawable/multi_selection_menu_bg_light_land.xml
Normal file
12
OsmAnd/res/drawable/multi_selection_menu_bg_light_land.xml
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
|
<item>
|
||||||
|
<nine-patch android:src="@drawable/bg_contextmenu_shadow_right_light" />
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<shape>
|
||||||
|
<solid
|
||||||
|
android:color="@color/ctx_menu_bg_light" />
|
||||||
|
</shape>
|
||||||
|
</item>
|
||||||
|
</layer-list>
|
5
OsmAnd/res/drawable/wikipedia_select_lang_bg_dark.xml
Normal file
5
OsmAnd/res/drawable/wikipedia_select_lang_bg_dark.xml
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
|
<item android:drawable="@drawable/wikipedia_select_lang_bg_dark_p" android:state_pressed="true"/>
|
||||||
|
<item android:drawable="@drawable/wikipedia_select_lang_bg_dark_n"/>
|
||||||
|
</selector>
|
13
OsmAnd/res/drawable/wikipedia_select_lang_bg_dark_n.xml
Normal file
13
OsmAnd/res/drawable/wikipedia_select_lang_bg_dark_n.xml
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<shape xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:shape="rectangle">
|
||||||
|
|
||||||
|
<solid android:color="@color/ctx_menu_buttons_bg_dark" />
|
||||||
|
|
||||||
|
<stroke
|
||||||
|
android:width="1dp"
|
||||||
|
android:color="@color/ctx_menu_controller_button_outline_color_dark_n" />
|
||||||
|
|
||||||
|
<corners android:radius="3dp" />
|
||||||
|
|
||||||
|
</shape>
|
13
OsmAnd/res/drawable/wikipedia_select_lang_bg_dark_p.xml
Normal file
13
OsmAnd/res/drawable/wikipedia_select_lang_bg_dark_p.xml
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<shape xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:shape="rectangle">
|
||||||
|
|
||||||
|
<solid android:color="@color/ctx_menu_controller_button_bg_color_dark_p" />
|
||||||
|
|
||||||
|
<stroke
|
||||||
|
android:width="1dp"
|
||||||
|
android:color="@color/ctx_menu_controller_button_outline_color_dark_p" />
|
||||||
|
|
||||||
|
<corners android:radius="3dp" />
|
||||||
|
|
||||||
|
</shape>
|
5
OsmAnd/res/drawable/wikipedia_select_lang_bg_light.xml
Normal file
5
OsmAnd/res/drawable/wikipedia_select_lang_bg_light.xml
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
|
<item android:drawable="@drawable/wikipedia_select_lang_bg_light_p" android:state_pressed="true"/>
|
||||||
|
<item android:drawable="@drawable/wikipedia_select_lang_bg_light_n"/>
|
||||||
|
</selector>
|
13
OsmAnd/res/drawable/wikipedia_select_lang_bg_light_n.xml
Normal file
13
OsmAnd/res/drawable/wikipedia_select_lang_bg_light_n.xml
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<shape xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:shape="rectangle">
|
||||||
|
|
||||||
|
<solid android:color="@color/ctx_menu_buttons_bg_light" />
|
||||||
|
|
||||||
|
<stroke
|
||||||
|
android:width="1dp"
|
||||||
|
android:color="@color/ctx_menu_info_divider_light" />
|
||||||
|
|
||||||
|
<corners android:radius="3dp" />
|
||||||
|
|
||||||
|
</shape>
|
13
OsmAnd/res/drawable/wikipedia_select_lang_bg_light_p.xml
Normal file
13
OsmAnd/res/drawable/wikipedia_select_lang_bg_light_p.xml
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<shape xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:shape="rectangle">
|
||||||
|
|
||||||
|
<solid android:color="@color/ctx_menu_controller_button_bg_color_light_p" />
|
||||||
|
|
||||||
|
<stroke
|
||||||
|
android:width="1dp"
|
||||||
|
android:color="@color/ctx_menu_controller_button_outline_color_light_p" />
|
||||||
|
|
||||||
|
<corners android:radius="3dp" />
|
||||||
|
|
||||||
|
</shape>
|
|
@ -49,7 +49,7 @@
|
||||||
android:id="@+id/waypoints"
|
android:id="@+id/waypoints"
|
||||||
android:layout_width="@dimen/list_item_height"
|
android:layout_width="@dimen/list_item_height"
|
||||||
android:layout_height="@dimen/list_item_height"
|
android:layout_height="@dimen/list_item_height"
|
||||||
android:background="?attr/dashboard_button"
|
android:background="?attr/selectableItemBackground"
|
||||||
android:scaleType="center"
|
android:scaleType="center"
|
||||||
android:src="@drawable/map_action_waypoints"/>
|
android:src="@drawable/map_action_waypoints"/>
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
@ -74,16 +74,19 @@
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:orientation="vertical">
|
android:orientation="vertical">
|
||||||
|
|
||||||
<FrameLayout
|
<LinearLayout
|
||||||
|
android:orientation="horizontal"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content">
|
android:layout_height="wrap_content">
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:orientation="vertical"
|
android:orientation="vertical"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="0dp"
|
||||||
|
android:layout_weight="1"
|
||||||
android:layout_height="wrap_content">
|
android:layout_height="wrap_content">
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
|
android:background="?attr/selectableItemBackground"
|
||||||
android:id="@+id/FromLayout"
|
android:id="@+id/FromLayout"
|
||||||
android:layout_width="fill_parent"
|
android:layout_width="fill_parent"
|
||||||
android:layout_height="@dimen/list_item_height"
|
android:layout_height="@dimen/list_item_height"
|
||||||
|
@ -130,39 +133,19 @@
|
||||||
android:layout_marginRight="@dimen/list_header_text_left_margin"
|
android:layout_marginRight="@dimen/list_header_text_left_margin"
|
||||||
android:src="@drawable/ic_action_arrow_drop_down"/>
|
android:src="@drawable/ic_action_arrow_drop_down"/>
|
||||||
|
|
||||||
<View
|
|
||||||
android:id="@+id/from_layout_empty_view"
|
|
||||||
android:layout_width="@dimen/route_info_directions_margin"
|
|
||||||
android:layout_height="match_parent"/>
|
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
<FrameLayout
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content">
|
|
||||||
|
|
||||||
<View
|
<View
|
||||||
android:layout_marginStart="@dimen/route_info_divider_margin"
|
android:layout_marginStart="@dimen/route_info_divider_margin"
|
||||||
android:layout_marginLeft="@dimen/route_info_divider_margin"
|
android:layout_marginLeft="@dimen/route_info_divider_margin"
|
||||||
android:layout_marginRight="@dimen/route_info_directions_margin"
|
|
||||||
android:layout_marginEnd="@dimen/route_info_directions_margin"
|
|
||||||
android:id="@+id/dividerFromDropDown"
|
android:id="@+id/dividerFromDropDown"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="1dp"
|
android:layout_height="1dp"
|
||||||
android:background="@color/dashboard_divider_dark"
|
android:background="@color/dashboard_divider_dark"
|
||||||
android:focusable="false"/>
|
android:focusable="false"/>
|
||||||
|
|
||||||
<View
|
|
||||||
android:id="@+id/divider_from_drop_down_empty"
|
|
||||||
android:layout_gravity="end"
|
|
||||||
android:layout_width="@dimen/route_info_directions_margin"
|
|
||||||
android:layout_height="1dp"
|
|
||||||
android:focusable="false"
|
|
||||||
android:background="@color/dashboard_divider_dark"/>
|
|
||||||
|
|
||||||
</FrameLayout>
|
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
|
android:background="?attr/selectableItemBackground"
|
||||||
android:id="@+id/ViaLayout"
|
android:id="@+id/ViaLayout"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="@dimen/list_item_height"
|
android:layout_height="@dimen/list_item_height"
|
||||||
|
@ -216,6 +199,7 @@
|
||||||
android:focusable="false"/>
|
android:focusable="false"/>
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
|
android:background="?attr/selectableItemBackground"
|
||||||
android:id="@+id/ToLayout"
|
android:id="@+id/ToLayout"
|
||||||
android:layout_width="fill_parent"
|
android:layout_width="fill_parent"
|
||||||
android:layout_height="@dimen/list_item_height"
|
android:layout_height="@dimen/list_item_height"
|
||||||
|
@ -262,18 +246,13 @@
|
||||||
android:layout_marginRight="@dimen/list_header_text_left_margin"
|
android:layout_marginRight="@dimen/list_header_text_left_margin"
|
||||||
android:src="@drawable/ic_action_arrow_drop_down"/>
|
android:src="@drawable/ic_action_arrow_drop_down"/>
|
||||||
|
|
||||||
<View
|
|
||||||
android:id="@+id/to_layout_empty_view"
|
|
||||||
android:layout_width="@dimen/route_info_directions_margin"
|
|
||||||
android:layout_height="match_parent"/>
|
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
<ImageView
|
<ImageView
|
||||||
|
android:background="?attr/selectableItemBackground"
|
||||||
android:id="@+id/swap_direction_image_view"
|
android:id="@+id/swap_direction_image_view"
|
||||||
android:visibility="gone"
|
|
||||||
android:paddingRight="@dimen/route_info_icon_padding_right"
|
android:paddingRight="@dimen/route_info_icon_padding_right"
|
||||||
android:paddingLeft="@dimen/route_info_icon_padding_right"
|
android:paddingLeft="@dimen/route_info_icon_padding_right"
|
||||||
android:layout_gravity="end"
|
android:layout_gravity="end"
|
||||||
|
@ -281,7 +260,7 @@
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="match_parent"/>
|
android:layout_height="match_parent"/>
|
||||||
|
|
||||||
</FrameLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
<View
|
<View
|
||||||
android:id="@+id/dividerToDropDown"
|
android:id="@+id/dividerToDropDown"
|
||||||
|
@ -300,7 +279,7 @@
|
||||||
android:id="@+id/Info"
|
android:id="@+id/Info"
|
||||||
android:layout_width="fill_parent"
|
android:layout_width="fill_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:background="?attr/dashboard_button"
|
android:background="?attr/selectableItemBackground"
|
||||||
android:minHeight="@dimen/list_item_height"
|
android:minHeight="@dimen/list_item_height"
|
||||||
android:orientation="horizontal">
|
android:orientation="horizontal">
|
||||||
|
|
||||||
|
@ -308,7 +287,7 @@
|
||||||
android:id="@+id/Prev"
|
android:id="@+id/Prev"
|
||||||
android:layout_width="@dimen/list_item_height"
|
android:layout_width="@dimen/list_item_height"
|
||||||
android:layout_height="@dimen/list_item_height"
|
android:layout_height="@dimen/list_item_height"
|
||||||
android:background="?attr/dashboard_button"
|
android:background="?attr/selectableItemBackground"
|
||||||
android:contentDescription="@string/shared_string_previous"
|
android:contentDescription="@string/shared_string_previous"
|
||||||
android:scaleType="center"
|
android:scaleType="center"
|
||||||
android:src="@drawable/ic_prev"/>
|
android:src="@drawable/ic_prev"/>
|
||||||
|
@ -407,7 +386,7 @@
|
||||||
android:layout_width="@dimen/list_item_height"
|
android:layout_width="@dimen/list_item_height"
|
||||||
android:layout_height="@dimen/list_item_height"
|
android:layout_height="@dimen/list_item_height"
|
||||||
android:layout_marginLeft="5dp"
|
android:layout_marginLeft="5dp"
|
||||||
android:background="?attr/dashboard_button"
|
android:background="?attr/selectableItemBackground"
|
||||||
android:contentDescription="@string/shared_string_next"
|
android:contentDescription="@string/shared_string_next"
|
||||||
android:scaleType="center"
|
android:scaleType="center"
|
||||||
android:src="@drawable/ic_next"/>
|
android:src="@drawable/ic_next"/>
|
||||||
|
|
|
@ -1,65 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
|
||||||
xmlns:tools="http://schemas.android.com/tools"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
xmlns:osmand="http://schemas.android.com/apk/res-auto"
|
|
||||||
android:background="?attr/selectableItemBackground"
|
|
||||||
android:orientation="horizontal"
|
|
||||||
android:paddingBottom="12dp"
|
|
||||||
android:paddingLeft="16dp"
|
|
||||||
android:paddingRight="16dp"
|
|
||||||
android:paddingTop="16dp">
|
|
||||||
|
|
||||||
<net.osmand.plus.widgets.TextViewEx
|
|
||||||
android:textAllCaps="true"
|
|
||||||
osmand:typeface="@string/font_roboto_medium"
|
|
||||||
android:id="@+id/route_ref"
|
|
||||||
android:layout_width="32dp"
|
|
||||||
android:layout_height="18dp"
|
|
||||||
android:background="@drawable/transport_stop_route_bg"
|
|
||||||
android:gravity="center"
|
|
||||||
android:textColor="@color/color_white"
|
|
||||||
android:textSize="@dimen/default_sub_text_size_small"
|
|
||||||
tools:text="3"/>
|
|
||||||
|
|
||||||
<LinearLayout
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_marginLeft="16dp"
|
|
||||||
android:layout_marginStart="16dp"
|
|
||||||
android:orientation="vertical">
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:textSize="16sp"
|
|
||||||
android:id="@+id/route_desc"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
tools:text="№5: Льва Толстого площа - Белицкая улица (25м)"/>
|
|
||||||
|
|
||||||
<LinearLayout
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:gravity="center"
|
|
||||||
android:paddingTop="8dp">
|
|
||||||
|
|
||||||
<ImageView
|
|
||||||
android:id="@+id/route_type_icon"
|
|
||||||
android:layout_marginRight="@dimen/context_menu_transport_grid_spacing"
|
|
||||||
android:layout_marginEnd="@dimen/context_menu_transport_grid_spacing"
|
|
||||||
android:layout_width="@dimen/context_menu_transport_icon_size"
|
|
||||||
android:layout_height="@dimen/context_menu_transport_icon_size"
|
|
||||||
tools:src="@drawable/ic_action_polygom_dark"/>
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:id="@+id/route_type_text"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
tools:text="Метро "/>
|
|
||||||
|
|
||||||
</LinearLayout>
|
|
||||||
|
|
||||||
|
|
||||||
</LinearLayout>
|
|
||||||
|
|
||||||
</LinearLayout>
|
|
|
@ -97,20 +97,21 @@
|
||||||
android:layout_height="@dimen/context_menu_sub_info_height"
|
android:layout_height="@dimen/context_menu_sub_info_height"
|
||||||
android:orientation="horizontal">
|
android:orientation="horizontal">
|
||||||
|
|
||||||
<TextView
|
<net.osmand.plus.widgets.TextViewEx
|
||||||
android:layout_marginRight="@dimen/context_menu_padding_margin_small"
|
android:layout_marginRight="@dimen/context_menu_padding_margin_small"
|
||||||
android:layout_marginEnd="@dimen/context_menu_padding_margin_small"
|
android:layout_marginEnd="@dimen/context_menu_padding_margin_small"
|
||||||
tools:text="Museum"
|
tools:text="Museum"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:id="@+id/context_menu_line3"
|
android:id="@+id/context_menu_line3"
|
||||||
|
osmand:typeface="@string/font_roboto_medium"
|
||||||
style="@style/TextAppearance.ContextMenuSubtitle"/>
|
style="@style/TextAppearance.ContextMenuSubtitle"/>
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:layout_marginRight="@dimen/context_menu_padding_margin_small"
|
android:layout_marginRight="@dimen/context_menu_padding_margin_small"
|
||||||
android:layout_marginEnd="@dimen/context_menu_padding_margin_small"
|
android:layout_marginEnd="@dimen/context_menu_padding_margin_small"
|
||||||
tools:text="Closed till 10:00"
|
tools:text="Closed till 10:00"
|
||||||
android:id="@+id/opening_hours_text_view"
|
android:id="@+id/additional_info_text_view"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"/>
|
android:layout_height="wrap_content"/>
|
||||||
|
|
||||||
|
@ -174,7 +175,7 @@
|
||||||
android:paddingRight="@dimen/context_menu_button_padding_x"
|
android:paddingRight="@dimen/context_menu_button_padding_x"
|
||||||
android:textAllCaps="true"
|
android:textAllCaps="true"
|
||||||
android:text="@string/recording_context_menu_play"
|
android:text="@string/recording_context_menu_play"
|
||||||
tools:textColor="?attr/contextMenuButtonColor"
|
tools:textColor="?attr/ctx_menu_controller_text_color"
|
||||||
android:textSize="@dimen/default_desc_text_size"/>
|
android:textSize="@dimen/default_desc_text_size"/>
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
|
@ -209,7 +210,7 @@
|
||||||
android:paddingLeft="@dimen/context_menu_button_padding_x"
|
android:paddingLeft="@dimen/context_menu_button_padding_x"
|
||||||
android:paddingRight="@dimen/context_menu_button_padding_x"
|
android:paddingRight="@dimen/context_menu_button_padding_x"
|
||||||
android:text="@string/shared_string_delete"
|
android:text="@string/shared_string_delete"
|
||||||
tools:textColor="?attr/contextMenuButtonColor"
|
tools:textColor="?attr/ctx_menu_controller_text_color"
|
||||||
android:textSize="@dimen/default_desc_text_size"/>
|
android:textSize="@dimen/default_desc_text_size"/>
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
@ -246,7 +247,7 @@
|
||||||
android:paddingLeft="@dimen/context_menu_button_padding_x"
|
android:paddingLeft="@dimen/context_menu_button_padding_x"
|
||||||
android:paddingRight="@dimen/context_menu_button_padding_x"
|
android:paddingRight="@dimen/context_menu_button_padding_x"
|
||||||
android:text="@string/shared_string_download"
|
android:text="@string/shared_string_download"
|
||||||
tools:textColor="?attr/contextMenuButtonColor"
|
tools:textColor="?attr/ctx_menu_controller_text_color"
|
||||||
android:textSize="@dimen/default_desc_text_size"/>
|
android:textSize="@dimen/default_desc_text_size"/>
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
@ -270,8 +271,8 @@
|
||||||
android:gravity="center_vertical"
|
android:gravity="center_vertical"
|
||||||
android:paddingLeft="@dimen/context_menu_button_padding_x"
|
android:paddingLeft="@dimen/context_menu_button_padding_x"
|
||||||
android:paddingRight="@dimen/context_menu_button_padding_x"
|
android:paddingRight="@dimen/context_menu_button_padding_x"
|
||||||
android:text="@string/shared_string_delete"
|
android:text="@string/shared_string_others"
|
||||||
tools:textColor="?attr/contextMenuButtonColor"
|
tools:textColor="?attr/ctx_menu_controller_text_color"
|
||||||
android:textSize="@dimen/default_desc_text_size"/>
|
android:textSize="@dimen/default_desc_text_size"/>
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
@ -305,9 +306,9 @@
|
||||||
android:gravity="center_vertical"
|
android:gravity="center_vertical"
|
||||||
android:paddingLeft="@dimen/context_menu_button_padding_x"
|
android:paddingLeft="@dimen/context_menu_button_padding_x"
|
||||||
android:paddingRight="@dimen/context_menu_button_padding_x"
|
android:paddingRight="@dimen/context_menu_button_padding_x"
|
||||||
android:text="@string/shared_string_others"
|
android:text="@string/shared_string_delete"
|
||||||
android:textAllCaps="true"
|
android:textAllCaps="true"
|
||||||
tools:textColor="?attr/contextMenuButtonColor"
|
tools:textColor="?attr/ctx_menu_controller_text_color"
|
||||||
android:textSize="@dimen/default_desc_text_size"
|
android:textSize="@dimen/default_desc_text_size"
|
||||||
osmand:typeface="@string/font_roboto_medium"/>
|
osmand:typeface="@string/font_roboto_medium"/>
|
||||||
|
|
||||||
|
@ -382,8 +383,8 @@
|
||||||
android:background="?attr/ctx_menu_divider"/>
|
android:background="?attr/ctx_menu_divider"/>
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:paddingLeft="@dimen/context_menu_padding_margin_small"
|
android:paddingLeft="@dimen/map_widget_icon_margin"
|
||||||
android:paddingRight="@dimen/context_menu_padding_margin_small"
|
android:paddingRight="@dimen/map_widget_icon_margin"
|
||||||
android:id="@+id/context_menu_buttons"
|
android:id="@+id/context_menu_buttons"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
|
|
|
@ -18,7 +18,7 @@
|
||||||
android:paddingLeft="@dimen/route_info_buttons_padding_left_right"
|
android:paddingLeft="@dimen/route_info_buttons_padding_left_right"
|
||||||
android:paddingRight="@dimen/route_info_buttons_padding_left_right"
|
android:paddingRight="@dimen/route_info_buttons_padding_left_right"
|
||||||
android:layout_gravity="center_vertical"
|
android:layout_gravity="center_vertical"
|
||||||
android:background="?attr/dashboard_button"
|
android:background="?attr/selectableItemBackground"
|
||||||
android:src="@drawable/ic_action_test_light" />
|
android:src="@drawable/ic_action_test_light" />
|
||||||
|
|
||||||
<View
|
<View
|
||||||
|
@ -40,7 +40,7 @@
|
||||||
android:paddingLeft="@dimen/route_info_buttons_padding_left_right"
|
android:paddingLeft="@dimen/route_info_buttons_padding_left_right"
|
||||||
android:paddingRight="@dimen/route_info_buttons_padding_left_right"
|
android:paddingRight="@dimen/route_info_buttons_padding_left_right"
|
||||||
android:layout_gravity="center_vertical"
|
android:layout_gravity="center_vertical"
|
||||||
android:background="?attr/dashboard_button"
|
android:background="?attr/selectableItemBackground"
|
||||||
android:src="@drawable/ic_action_test_light" />
|
android:src="@drawable/ic_action_test_light" />
|
||||||
|
|
||||||
<View
|
<View
|
||||||
|
@ -62,7 +62,7 @@
|
||||||
android:paddingLeft="@dimen/route_info_buttons_padding_left_right"
|
android:paddingLeft="@dimen/route_info_buttons_padding_left_right"
|
||||||
android:paddingRight="@dimen/route_info_buttons_padding_left_right"
|
android:paddingRight="@dimen/route_info_buttons_padding_left_right"
|
||||||
android:layout_gravity="center_vertical"
|
android:layout_gravity="center_vertical"
|
||||||
android:background="?attr/dashboard_button"
|
android:background="?attr/selectableItemBackground"
|
||||||
android:src="@drawable/ic_action_test_light" />
|
android:src="@drawable/ic_action_test_light" />
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
|
|
|
@ -2,13 +2,14 @@
|
||||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
android:layout_width="fill_parent"
|
android:layout_width="fill_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
android:minHeight="@dimen/list_item_height"
|
android:minHeight="@dimen/list_item_height"
|
||||||
android:orientation="vertical"
|
android:orientation="vertical"
|
||||||
android:baselineAligned="false">
|
android:baselineAligned="false">
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:id="@+id/content"
|
android:id="@+id/content"
|
||||||
android:background="?attr/expandable_list_item_background"
|
android:background="?attr/selectableItemBackground"
|
||||||
android:paddingLeft="@dimen/list_content_padding"
|
android:paddingLeft="@dimen/list_content_padding"
|
||||||
android:paddingRight="@dimen/list_content_padding"
|
android:paddingRight="@dimen/list_content_padding"
|
||||||
android:orientation="horizontal"
|
android:orientation="horizontal"
|
||||||
|
@ -18,8 +19,8 @@
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:paddingBottom="@dimen/content_padding_small"
|
android:paddingBottom="@dimen/multi_selection_menu_padding_bottom"
|
||||||
android:paddingTop="@dimen/list_content_padding"
|
android:paddingTop="@dimen/multi_selection_menu_padding_top"
|
||||||
android:layout_weight="1"
|
android:layout_weight="1"
|
||||||
android:orientation="vertical">
|
android:orientation="vertical">
|
||||||
|
|
||||||
|
@ -42,7 +43,7 @@
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:paddingTop="@dimen/list_content_padding"
|
android:paddingTop="@dimen/multi_selection_menu_padding_top"
|
||||||
android:id="@+id/context_menu_icon_layout"
|
android:id="@+id/context_menu_icon_layout"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
|
@ -64,6 +65,6 @@
|
||||||
android:id="@+id/divider"
|
android:id="@+id/divider"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="1dp"
|
android:layout_height="1dp"
|
||||||
android:background="?attr/dashboard_divider"/>
|
tools:background="@color/multi_selection_menu_divider_dark"/>
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
|
@ -29,7 +29,7 @@
|
||||||
android:id="@+id/divider"
|
android:id="@+id/divider"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="1dp"
|
android:layout_height="1dp"
|
||||||
android:background="?attr/dashboard_divider"/>
|
tools:background="@color/multi_selection_menu_divider_dark"/>
|
||||||
|
|
||||||
<FrameLayout
|
<FrameLayout
|
||||||
android:id="@+id/cancel_row"
|
android:id="@+id/cancel_row"
|
||||||
|
@ -44,7 +44,6 @@
|
||||||
android:layout_gravity="center"
|
android:layout_gravity="center"
|
||||||
android:text="@string/shared_string_close"
|
android:text="@string/shared_string_close"
|
||||||
android:textAllCaps="true"
|
android:textAllCaps="true"
|
||||||
android:textColor="?attr/color_dialog_buttons"
|
|
||||||
android:textSize="@dimen/default_desc_text_size"
|
android:textSize="@dimen/default_desc_text_size"
|
||||||
android:textStyle="bold"/>
|
android:textStyle="bold"/>
|
||||||
</FrameLayout>
|
</FrameLayout>
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
<net.osmand.plus.widgets.TextViewEx
|
<net.osmand.plus.widgets.TextViewEx
|
||||||
android:id="@+id/header_title"
|
android:id="@+id/header_title"
|
||||||
android:textAppearance="@style/TextAppearance.ListItemTitle"
|
android:textAppearance="@style/TextAppearance.ListItemTitle"
|
||||||
osmand:typeface="@string/font_roboto_medium"
|
osmand:typeface="@string/font_roboto_regular"
|
||||||
android:gravity="center_vertical"
|
android:gravity="center_vertical"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
|
|
|
@ -49,7 +49,7 @@
|
||||||
android:id="@+id/waypoints"
|
android:id="@+id/waypoints"
|
||||||
android:layout_width="@dimen/list_item_height"
|
android:layout_width="@dimen/list_item_height"
|
||||||
android:layout_height="@dimen/list_item_height"
|
android:layout_height="@dimen/list_item_height"
|
||||||
android:background="?attr/dashboard_button"
|
android:background="?attr/selectableItemBackground"
|
||||||
android:scaleType="center"
|
android:scaleType="center"
|
||||||
android:src="@drawable/map_action_waypoints"/>
|
android:src="@drawable/map_action_waypoints"/>
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
@ -73,16 +73,19 @@
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:orientation="vertical">
|
android:orientation="vertical">
|
||||||
|
|
||||||
<FrameLayout
|
<LinearLayout
|
||||||
|
android:orientation="horizontal"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content">
|
android:layout_height="wrap_content">
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:orientation="vertical"
|
android:orientation="vertical"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="0dp"
|
||||||
|
android:layout_weight="1"
|
||||||
android:layout_height="wrap_content">
|
android:layout_height="wrap_content">
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
|
android:background="?attr/selectableItemBackground"
|
||||||
android:id="@+id/FromLayout"
|
android:id="@+id/FromLayout"
|
||||||
android:layout_width="fill_parent"
|
android:layout_width="fill_parent"
|
||||||
android:layout_height="@dimen/list_item_height"
|
android:layout_height="@dimen/list_item_height"
|
||||||
|
@ -131,39 +134,19 @@
|
||||||
android:layout_marginRight="@dimen/list_header_text_left_margin"
|
android:layout_marginRight="@dimen/list_header_text_left_margin"
|
||||||
android:src="@drawable/ic_action_arrow_drop_down"/>
|
android:src="@drawable/ic_action_arrow_drop_down"/>
|
||||||
|
|
||||||
<View
|
|
||||||
android:id="@+id/from_layout_empty_view"
|
|
||||||
android:layout_width="@dimen/route_info_directions_margin"
|
|
||||||
android:layout_height="match_parent"/>
|
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
<FrameLayout
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content">
|
|
||||||
|
|
||||||
<View
|
<View
|
||||||
android:layout_marginStart="@dimen/route_info_divider_margin"
|
android:layout_marginStart="@dimen/route_info_divider_margin"
|
||||||
android:layout_marginLeft="@dimen/route_info_divider_margin"
|
android:layout_marginLeft="@dimen/route_info_divider_margin"
|
||||||
android:layout_marginRight="@dimen/route_info_directions_margin"
|
|
||||||
android:layout_marginEnd="@dimen/route_info_directions_margin"
|
|
||||||
android:id="@+id/dividerFromDropDown"
|
android:id="@+id/dividerFromDropDown"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="1dp"
|
android:layout_height="1dp"
|
||||||
android:background="@color/dashboard_divider_dark"
|
android:background="@color/dashboard_divider_dark"
|
||||||
android:focusable="false"/>
|
android:focusable="false"/>
|
||||||
|
|
||||||
<View
|
|
||||||
android:id="@+id/divider_from_drop_down_empty"
|
|
||||||
android:layout_gravity="end"
|
|
||||||
android:layout_width="@dimen/route_info_directions_margin"
|
|
||||||
android:layout_height="1dp"
|
|
||||||
android:focusable="false"
|
|
||||||
android:background="@color/dashboard_divider_dark"/>
|
|
||||||
|
|
||||||
</FrameLayout>
|
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
|
android:background="?attr/selectableItemBackground"
|
||||||
android:id="@+id/ViaLayout"
|
android:id="@+id/ViaLayout"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="@dimen/list_item_height"
|
android:layout_height="@dimen/list_item_height"
|
||||||
|
@ -219,6 +202,7 @@
|
||||||
android:focusable="false"/>
|
android:focusable="false"/>
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
|
android:background="?attr/selectableItemBackground"
|
||||||
android:id="@+id/ToLayout"
|
android:id="@+id/ToLayout"
|
||||||
android:layout_width="fill_parent"
|
android:layout_width="fill_parent"
|
||||||
android:layout_height="@dimen/list_item_height"
|
android:layout_height="@dimen/list_item_height"
|
||||||
|
@ -267,16 +251,12 @@
|
||||||
android:layout_marginRight="@dimen/list_header_text_left_margin"
|
android:layout_marginRight="@dimen/list_header_text_left_margin"
|
||||||
android:src="@drawable/ic_action_arrow_drop_down"/>
|
android:src="@drawable/ic_action_arrow_drop_down"/>
|
||||||
|
|
||||||
<View
|
|
||||||
android:id="@+id/to_layout_empty_view"
|
|
||||||
android:layout_width="@dimen/route_info_directions_margin"
|
|
||||||
android:layout_height="match_parent"/>
|
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
<ImageView
|
<ImageView
|
||||||
|
android:background="?attr/selectableItemBackground"
|
||||||
android:id="@+id/swap_direction_image_view"
|
android:id="@+id/swap_direction_image_view"
|
||||||
android:paddingRight="@dimen/route_info_icon_padding_right"
|
android:paddingRight="@dimen/route_info_icon_padding_right"
|
||||||
android:paddingLeft="@dimen/route_info_icon_padding_right"
|
android:paddingLeft="@dimen/route_info_icon_padding_right"
|
||||||
|
@ -285,7 +265,7 @@
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="match_parent"/>
|
android:layout_height="match_parent"/>
|
||||||
|
|
||||||
</FrameLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
<View
|
<View
|
||||||
android:id="@+id/dividerToDropDown"
|
android:id="@+id/dividerToDropDown"
|
||||||
|
@ -304,7 +284,7 @@
|
||||||
android:id="@+id/Info"
|
android:id="@+id/Info"
|
||||||
android:layout_width="fill_parent"
|
android:layout_width="fill_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:background="?attr/dashboard_button"
|
android:background="?attr/selectableItemBackground"
|
||||||
android:minHeight="@dimen/list_item_height"
|
android:minHeight="@dimen/list_item_height"
|
||||||
android:orientation="horizontal">
|
android:orientation="horizontal">
|
||||||
|
|
||||||
|
@ -312,7 +292,7 @@
|
||||||
android:id="@+id/Prev"
|
android:id="@+id/Prev"
|
||||||
android:layout_width="@dimen/list_item_height"
|
android:layout_width="@dimen/list_item_height"
|
||||||
android:layout_height="@dimen/list_item_height"
|
android:layout_height="@dimen/list_item_height"
|
||||||
android:background="?attr/dashboard_button"
|
android:background="?attr/selectableItemBackground"
|
||||||
android:contentDescription="@string/shared_string_previous"
|
android:contentDescription="@string/shared_string_previous"
|
||||||
android:scaleType="center"
|
android:scaleType="center"
|
||||||
android:src="@drawable/ic_prev"/>
|
android:src="@drawable/ic_prev"/>
|
||||||
|
@ -366,7 +346,7 @@
|
||||||
android:layout_marginRight="@dimen/list_content_padding"
|
android:layout_marginRight="@dimen/list_content_padding"
|
||||||
android:contentDescription="@string/info_button"
|
android:contentDescription="@string/info_button"
|
||||||
android:scaleType="center"
|
android:scaleType="center"
|
||||||
android:src="@drawable/ic_action_time"/>
|
android:src="@drawable/ic_action_time_span"/>
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:id="@+id/InfoDuration"
|
android:id="@+id/InfoDuration"
|
||||||
|
@ -411,7 +391,7 @@
|
||||||
android:layout_width="@dimen/list_item_height"
|
android:layout_width="@dimen/list_item_height"
|
||||||
android:layout_height="@dimen/list_item_height"
|
android:layout_height="@dimen/list_item_height"
|
||||||
android:layout_marginLeft="5dp"
|
android:layout_marginLeft="5dp"
|
||||||
android:background="?attr/dashboard_button"
|
android:background="?attr/selectableItemBackground"
|
||||||
android:contentDescription="@string/shared_string_next"
|
android:contentDescription="@string/shared_string_next"
|
||||||
android:scaleType="center"
|
android:scaleType="center"
|
||||||
android:src="@drawable/ic_next"/>
|
android:src="@drawable/ic_next"/>
|
||||||
|
|
|
@ -7,6 +7,7 @@
|
||||||
android:layout_height="wrap_content">
|
android:layout_height="wrap_content">
|
||||||
|
|
||||||
<net.osmand.plus.widgets.TextViewEx
|
<net.osmand.plus.widgets.TextViewEx
|
||||||
|
android:foreground="?attr/selectableItemBackground"
|
||||||
android:textAllCaps="true"
|
android:textAllCaps="true"
|
||||||
osmand:typeface="@string/font_roboto_medium"
|
osmand:typeface="@string/font_roboto_medium"
|
||||||
android:textColor="@color/color_white"
|
android:textColor="@color/color_white"
|
||||||
|
|
106
OsmAnd/res/layout/wikipedia_dialog_fragment.xml
Normal file
106
OsmAnd/res/layout/wikipedia_dialog_fragment.xml
Normal file
|
@ -0,0 +1,106 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<android.support.design.widget.CoordinatorLayout 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">
|
||||||
|
|
||||||
|
<android.support.design.widget.AppBarLayout
|
||||||
|
android:id="@+id/app_bar"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content">
|
||||||
|
|
||||||
|
<android.support.v7.widget.Toolbar
|
||||||
|
osmand:layout_scrollFlags="scroll|enterAlways"
|
||||||
|
android:id="@+id/toolbar"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
osmand:contentInsetLeft="0dp"
|
||||||
|
osmand:contentInsetStart="0dp"
|
||||||
|
osmand:contentInsetRight="0dp"
|
||||||
|
osmand:contentInsetEnd="0dp">
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:orientation="vertical"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content">
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="@dimen/dashboard_map_toolbar"
|
||||||
|
android:gravity="center_vertical">
|
||||||
|
|
||||||
|
<ImageButton
|
||||||
|
android:id="@+id/back_button"
|
||||||
|
style="@style/Widget.AppCompat.ActionButton"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
tools:src="@drawable/ic_arrow_back"/>
|
||||||
|
|
||||||
|
<View
|
||||||
|
android:layout_width="0dp"
|
||||||
|
android:layout_weight="1"
|
||||||
|
android:layout_height="match_parent"/>
|
||||||
|
|
||||||
|
<net.osmand.plus.widgets.TextViewEx
|
||||||
|
android:id="@+id/select_language_text_view"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
android:layout_marginBottom="@dimen/content_padding_small"
|
||||||
|
android:layout_marginTop="@dimen/content_padding_small"
|
||||||
|
android:layout_marginLeft="@dimen/context_menu_padding_margin_small"
|
||||||
|
android:layout_marginRight="@dimen/context_menu_padding_margin_small"
|
||||||
|
tools:background="?attr/ctx_menu_controller_bg"
|
||||||
|
android:gravity="center_vertical"
|
||||||
|
android:padding="@dimen/context_menu_padding_margin_tiny"
|
||||||
|
android:textAllCaps="true"
|
||||||
|
tools:textColor="?attr/ctx_menu_controller_text_color"
|
||||||
|
android:textSize="@dimen/default_desc_text_size"
|
||||||
|
osmand:typeface="@string/font_roboto_medium"
|
||||||
|
tools:text="RU"/>
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/title_text_view"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:paddingLeft="@dimen/content_padding"
|
||||||
|
android:paddingRight="@dimen/content_padding"
|
||||||
|
android:paddingTop="@dimen/list_header_padding"
|
||||||
|
android:paddingBottom="@dimen/list_header_padding"
|
||||||
|
android:textSize="@dimen/map_button_text_size"
|
||||||
|
tools:text="Title"/>
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
</android.support.v7.widget.Toolbar>
|
||||||
|
|
||||||
|
</android.support.design.widget.AppBarLayout>
|
||||||
|
|
||||||
|
<android.support.v4.widget.NestedScrollView
|
||||||
|
osmand:layout_behavior="@string/appbar_scrolling_view_behavior"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent">
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/content"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:padding="@dimen/content_padding"/>
|
||||||
|
</android.support.v4.widget.NestedScrollView>
|
||||||
|
|
||||||
|
<net.osmand.plus.widgets.TextViewEx
|
||||||
|
osmand:typeface="@string/font_roboto_medium"
|
||||||
|
android:layout_margin="@dimen/content_padding"
|
||||||
|
android:id="@+id/read_full_article"
|
||||||
|
android:layout_gravity="bottom|center_horizontal"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
tools:background="@drawable/bt_round_long_night"
|
||||||
|
android:text="@string/read_full_article"
|
||||||
|
android:gravity="center_vertical"
|
||||||
|
android:textAllCaps="true"
|
||||||
|
tools:textColor="?attr/ctx_menu_controller_text_color"/>
|
||||||
|
|
||||||
|
</android.support.design.widget.CoordinatorLayout>
|
|
@ -175,4 +175,9 @@
|
||||||
|
|
||||||
<dimen name="multi_selection_header_height">78dp</dimen>
|
<dimen name="multi_selection_header_height">78dp</dimen>
|
||||||
|
|
||||||
|
<dimen name="wikipedia_button_left_padding">29dp</dimen>
|
||||||
|
|
||||||
|
<dimen name="multi_selection_menu_padding_top">20dp</dimen>
|
||||||
|
<dimen name="multi_selection_menu_padding_bottom">23dp</dimen>
|
||||||
|
|
||||||
</resources>
|
</resources>
|
|
@ -25,6 +25,7 @@
|
||||||
<attr name="bg_point_editor_view" format="reference" />
|
<attr name="bg_point_editor_view" format="reference" />
|
||||||
<attr name="ctx_menu_info_view_bg" format="reference" />
|
<attr name="ctx_menu_info_view_bg" format="reference" />
|
||||||
<attr name="ctx_menu_controller_bg" format="reference" />
|
<attr name="ctx_menu_controller_bg" format="reference" />
|
||||||
|
<attr name="ctx_menu_controller_text_color" format="reference" />
|
||||||
<attr name="ctx_menu_divider" format="reference" />
|
<attr name="ctx_menu_divider" format="reference" />
|
||||||
<attr name="bottom_menu_view_bg" format="reference" />
|
<attr name="bottom_menu_view_bg" format="reference" />
|
||||||
<attr name="left_menu_view_bg" format="reference" />
|
<attr name="left_menu_view_bg" format="reference" />
|
||||||
|
|
|
@ -341,7 +341,7 @@
|
||||||
<color name="ctx_menu_bottom_view_bg_light">#ffffff</color>
|
<color name="ctx_menu_bottom_view_bg_light">#ffffff</color>
|
||||||
<color name="ctx_menu_bottom_view_bg_dark">#17191a</color>
|
<color name="ctx_menu_bottom_view_bg_dark">#17191a</color>
|
||||||
<color name="ctx_menu_bottom_view_icon_light">#b3b3b3</color>
|
<color name="ctx_menu_bottom_view_icon_light">#b3b3b3</color>
|
||||||
<color name="ctx_menu_bottom_view_icon_dark">#536dfe</color>
|
<color name="ctx_menu_bottom_view_icon_dark">#454a4d</color>
|
||||||
<color name="ctx_menu_bottom_view_text_color_light">#212121</color>
|
<color name="ctx_menu_bottom_view_text_color_light">#212121</color>
|
||||||
<color name="ctx_menu_bottom_view_text_color_dark">#cccccc</color>
|
<color name="ctx_menu_bottom_view_text_color_dark">#cccccc</color>
|
||||||
<color name="ctx_menu_bottom_view_secondary_text_color_light">#a6a6a6</color>
|
<color name="ctx_menu_bottom_view_secondary_text_color_light">#a6a6a6</color>
|
||||||
|
@ -349,9 +349,11 @@
|
||||||
<color name="ctx_menu_amenity_opened_text_color">#5baf3f</color>
|
<color name="ctx_menu_amenity_opened_text_color">#5baf3f</color>
|
||||||
<color name="ctx_menu_amenity_closed_text_color">#c66545</color>
|
<color name="ctx_menu_amenity_closed_text_color">#c66545</color>
|
||||||
<color name="ctx_menu_bottom_view_divider_light">#f2f2f2</color>
|
<color name="ctx_menu_bottom_view_divider_light">#f2f2f2</color>
|
||||||
<color name="ctx_menu_bottom_view_divider_dark">#536dfe</color>
|
<color name="ctx_menu_bottom_view_divider_dark">#222526</color>
|
||||||
<color name="ctx_menu_bottom_view_url_color_light">#536dfe</color>
|
<color name="ctx_menu_bottom_view_url_color_light">#536dfe</color>
|
||||||
<color name="ctx_menu_bottom_view_url_color_dark">#d28521</color>
|
<color name="ctx_menu_bottom_view_url_color_dark">#d28521</color>
|
||||||
|
<color name="ctx_menu_controller_disabled_text_color_light">#b3b3b3</color>
|
||||||
|
<color name="ctx_menu_controller_disabled_text_color_dark">#666666</color>
|
||||||
|
|
||||||
<color name="route_info_bg_light">#ffffff</color>
|
<color name="route_info_bg_light">#ffffff</color>
|
||||||
<color name="route_info_bg_dark">#17191a</color>
|
<color name="route_info_bg_dark">#17191a</color>
|
||||||
|
@ -371,4 +373,9 @@
|
||||||
<color name="route_info_checked_mode_icon_color_dark">#d28521</color>
|
<color name="route_info_checked_mode_icon_color_dark">#d28521</color>
|
||||||
<color name="route_info_unchecked_mode_icon_color">#727272</color>
|
<color name="route_info_unchecked_mode_icon_color">#727272</color>
|
||||||
|
|
||||||
|
<color name="multi_selection_menu_divider_light">#f0f0f0</color>
|
||||||
|
<color name="multi_selection_menu_divider_dark">#222526</color>
|
||||||
|
<color name="multi_selection_menu_close_btn_light">#2f7af5</color>
|
||||||
|
<color name="multi_selection_menu_close_btn_dark">#e69122</color>
|
||||||
|
|
||||||
</resources>
|
</resources>
|
|
@ -247,4 +247,9 @@
|
||||||
<dimen name="route_info_modes_height">48dp</dimen>
|
<dimen name="route_info_modes_height">48dp</dimen>
|
||||||
|
|
||||||
<dimen name="multi_selection_header_height">52dp</dimen>
|
<dimen name="multi_selection_header_height">52dp</dimen>
|
||||||
|
|
||||||
|
<dimen name="wikipedia_button_left_padding">19dp</dimen>
|
||||||
|
|
||||||
|
<dimen name="multi_selection_menu_padding_top">13dp</dimen>
|
||||||
|
<dimen name="multi_selection_menu_padding_bottom">15dp</dimen>
|
||||||
</resources>
|
</resources>
|
|
@ -132,6 +132,7 @@
|
||||||
<item name="dashboard_button">@drawable/dashboard_button_light</item>
|
<item name="dashboard_button">@drawable/dashboard_button_light</item>
|
||||||
<item name="ctx_menu_info_view_bg">@color/ctx_menu_info_view_bg_light</item>
|
<item name="ctx_menu_info_view_bg">@color/ctx_menu_info_view_bg_light</item>
|
||||||
<item name="ctx_menu_controller_bg">@drawable/context_menu_controller_bg_light</item>
|
<item name="ctx_menu_controller_bg">@drawable/context_menu_controller_bg_light</item>
|
||||||
|
<item name="ctx_menu_controller_text_color">@drawable/context_menu_controller_text_color_light</item>
|
||||||
<item name="ctx_menu_divider">@color/ctx_menu_buttons_divider_light</item>
|
<item name="ctx_menu_divider">@color/ctx_menu_buttons_divider_light</item>
|
||||||
<item name="search_background">@color/search_background_dark</item>
|
<item name="search_background">@color/search_background_dark</item>
|
||||||
<item name="actionModeCloseDrawable">@drawable/ic_action_mode_back</item>
|
<item name="actionModeCloseDrawable">@drawable/ic_action_mode_back</item>
|
||||||
|
@ -321,6 +322,7 @@
|
||||||
<item name="dashboard_button">@drawable/dashboard_button_dark</item>
|
<item name="dashboard_button">@drawable/dashboard_button_dark</item>
|
||||||
<item name="ctx_menu_info_view_bg">@color/ctx_menu_info_view_bg_dark</item>
|
<item name="ctx_menu_info_view_bg">@color/ctx_menu_info_view_bg_dark</item>
|
||||||
<item name="ctx_menu_controller_bg">@drawable/context_menu_controller_bg_dark</item>
|
<item name="ctx_menu_controller_bg">@drawable/context_menu_controller_bg_dark</item>
|
||||||
|
<item name="ctx_menu_controller_text_color">@drawable/context_menu_controller_text_color_dark</item>
|
||||||
<item name="ctx_menu_divider">@color/ctx_menu_buttons_divider_dark</item>
|
<item name="ctx_menu_divider">@color/ctx_menu_buttons_divider_dark</item>
|
||||||
<item name="search_background">@color/color_white</item>
|
<item name="search_background">@color/color_white</item>
|
||||||
<item name="switch_ex_background">@drawable/switch_ex_background_dark</item>
|
<item name="switch_ex_background">@drawable/switch_ex_background_dark</item>
|
||||||
|
|
|
@ -4,6 +4,7 @@ package net.osmand;
|
||||||
import android.annotation.SuppressLint;
|
import android.annotation.SuppressLint;
|
||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
import android.content.res.ColorStateList;
|
||||||
import android.content.res.Configuration;
|
import android.content.res.Configuration;
|
||||||
import android.content.res.Resources;
|
import android.content.res.Resources;
|
||||||
import android.graphics.PointF;
|
import android.graphics.PointF;
|
||||||
|
@ -11,6 +12,7 @@ import android.graphics.drawable.Drawable;
|
||||||
import android.graphics.drawable.StateListDrawable;
|
import android.graphics.drawable.StateListDrawable;
|
||||||
import android.os.Build;
|
import android.os.Build;
|
||||||
import android.os.IBinder;
|
import android.os.IBinder;
|
||||||
|
import android.support.annotation.ColorRes;
|
||||||
import android.support.annotation.DrawableRes;
|
import android.support.annotation.DrawableRes;
|
||||||
import android.support.v4.content.ContextCompat;
|
import android.support.v4.content.ContextCompat;
|
||||||
import android.text.TextUtils;
|
import android.text.TextUtils;
|
||||||
|
@ -118,6 +120,21 @@ public class AndroidUtils {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static ColorStateList createColorStateList(Context ctx, boolean night,
|
||||||
|
@ColorRes int lightNormal, @ColorRes int lightPressed,
|
||||||
|
@ColorRes int darkNormal, @ColorRes int darkPressed) {
|
||||||
|
return new ColorStateList(
|
||||||
|
new int[][]{
|
||||||
|
new int[]{android.R.attr.state_pressed},
|
||||||
|
new int[]{}
|
||||||
|
},
|
||||||
|
new int[]{
|
||||||
|
ContextCompat.getColor(ctx, night ? darkPressed : lightPressed),
|
||||||
|
ContextCompat.getColor(ctx, night ? darkNormal : lightNormal)
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
public static StateListDrawable createStateListDrawable(Context ctx, boolean night,
|
public static StateListDrawable createStateListDrawable(Context ctx, boolean night,
|
||||||
@DrawableRes int lightNormal, @DrawableRes int lightPressed,
|
@DrawableRes int lightNormal, @DrawableRes int lightPressed,
|
||||||
@DrawableRes int darkNormal, @DrawableRes int darkPressed) {
|
@DrawableRes int darkNormal, @DrawableRes int darkPressed) {
|
||||||
|
@ -198,6 +215,12 @@ public class AndroidUtils {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static int resolveAttribute(Context ctx, int attribute) {
|
||||||
|
TypedValue outValue = new TypedValue();
|
||||||
|
ctx.getTheme().resolveAttribute(attribute, outValue, true);
|
||||||
|
return outValue.resourceId;
|
||||||
|
}
|
||||||
|
|
||||||
public static int getStatusBarHeight(Context ctx) {
|
public static int getStatusBarHeight(Context ctx) {
|
||||||
int result = 0;
|
int result = 0;
|
||||||
int resourceId = ctx.getResources().getIdentifier("status_bar_height", "dimen", "android");
|
int resourceId = ctx.getResources().getIdentifier("status_bar_height", "dimen", "android");
|
||||||
|
|
|
@ -842,9 +842,10 @@ public class MapActivity extends OsmandActionBarActivity implements DownloadEven
|
||||||
boolean mapControlsVisible = findViewById(R.id.MapHudButtonsOverlay).getVisibility() == View.VISIBLE;
|
boolean mapControlsVisible = findViewById(R.id.MapHudButtonsOverlay).getVisibility() == View.VISIBLE;
|
||||||
boolean night = app.getDaynightHelper().isNightModeForMapControls();
|
boolean night = app.getDaynightHelper().isNightModeForMapControls();
|
||||||
boolean quickSearchTopBar = getTopToolbarController(TopToolbarControllerType.QUICK_SEARCH) != null;
|
boolean quickSearchTopBar = getTopToolbarController(TopToolbarControllerType.QUICK_SEARCH) != null;
|
||||||
|
boolean contextMenuTopBar = getTopToolbarController(TopToolbarControllerType.CONTEXT_MENU) != null;
|
||||||
boolean mapTopBar = findViewById(R.id.map_top_bar).getVisibility() == View.VISIBLE;
|
boolean mapTopBar = findViewById(R.id.map_top_bar).getVisibility() == View.VISIBLE;
|
||||||
boolean markerTopBar = findViewById(R.id.map_markers_top_bar).getVisibility() == View.VISIBLE;
|
boolean markerTopBar = findViewById(R.id.map_markers_top_bar).getVisibility() == View.VISIBLE;
|
||||||
if ((quickSearchTopBar || mapTopBar) && mapControlsVisible) {
|
if (((quickSearchTopBar || mapTopBar) && mapControlsVisible) || contextMenuTopBar) {
|
||||||
colorId = night ? R.color.status_bar_route_dark : R.color.status_bar_route_light;
|
colorId = night ? R.color.status_bar_route_dark : R.color.status_bar_route_light;
|
||||||
} else if (markerTopBar && mapControlsVisible) {
|
} else if (markerTopBar && mapControlsVisible) {
|
||||||
colorId = R.color.status_bar_dark;
|
colorId = R.color.status_bar_dark;
|
||||||
|
@ -1885,11 +1886,13 @@ public class MapActivity extends OsmandActionBarActivity implements DownloadEven
|
||||||
public void showTopToolbar(TopToolbarController controller) {
|
public void showTopToolbar(TopToolbarController controller) {
|
||||||
MapInfoLayer mapInfoLayer = getMapLayers().getMapInfoLayer();
|
MapInfoLayer mapInfoLayer = getMapLayers().getMapInfoLayer();
|
||||||
mapInfoLayer.addTopToolbarController(controller);
|
mapInfoLayer.addTopToolbarController(controller);
|
||||||
|
updateStatusBarColor();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void hideTopToolbar(TopToolbarController controller) {
|
public void hideTopToolbar(TopToolbarController controller) {
|
||||||
MapInfoLayer mapInfoLayer = getMapLayers().getMapInfoLayer();
|
MapInfoLayer mapInfoLayer = getMapLayers().getMapInfoLayer();
|
||||||
mapInfoLayer.removeTopToolbarController(controller);
|
mapInfoLayer.removeTopToolbarController(controller);
|
||||||
|
updateStatusBarColor();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void registerActivityResultListener(ActivityResultListener listener) {
|
public void registerActivityResultListener(ActivityResultListener listener) {
|
||||||
|
|
|
@ -78,7 +78,7 @@ public class AppModeDialog {
|
||||||
} else {
|
} else {
|
||||||
if (useMapTheme) {
|
if (useMapTheme) {
|
||||||
iv.setImageDrawable(ctx.getIconsCache().getIcon(mode.getSmallIconDark(), R.color.route_info_unchecked_mode_icon_color));
|
iv.setImageDrawable(ctx.getIconsCache().getIcon(mode.getSmallIconDark(), R.color.route_info_unchecked_mode_icon_color));
|
||||||
AndroidUtils.setBackground(ctx, iv, nightMode, R.drawable.dashboard_button_light, R.drawable.dashboard_button_dark);
|
iv.setBackgroundResource(AndroidUtils.resolveAttribute(ctx, android.R.attr.selectableItemBackground));
|
||||||
} else {
|
} else {
|
||||||
iv.setImageDrawable(ctx.getIconsCache().getThemedIcon(mode.getSmallIconDark()));
|
iv.setImageDrawable(ctx.getIconsCache().getThemedIcon(mode.getSmallIconDark()));
|
||||||
}
|
}
|
||||||
|
|
|
@ -42,7 +42,7 @@ public class AudioVideoNoteMenuBuilder extends MenuBuilder {
|
||||||
DateFormat dateFormat = android.text.format.DateFormat.getMediumDateFormat(view.getContext());
|
DateFormat dateFormat = android.text.format.DateFormat.getMediumDateFormat(view.getContext());
|
||||||
DateFormat timeFormat = android.text.format.DateFormat.getTimeFormat(view.getContext());
|
DateFormat timeFormat = android.text.format.DateFormat.getTimeFormat(view.getContext());
|
||||||
Date date = new Date(recording.getFile().lastModified());
|
Date date = new Date(recording.getFile().lastModified());
|
||||||
buildRow(view, R.drawable.ic_action_data, dateFormat.format(date) + " — " + timeFormat.format(date),
|
buildRow(view, R.drawable.ic_action_data, null, dateFormat.format(date) + " — " + timeFormat.format(date),
|
||||||
0, false, null, false, 0, false, null, false);
|
0, false, null, false, 0, false, null, false);
|
||||||
|
|
||||||
buildPlainMenuItems(view);
|
buildPlainMenuItems(view);
|
||||||
|
|
|
@ -86,7 +86,7 @@ public class AudioVideoNoteMenuController extends MenuController {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Drawable getLeftIcon() {
|
public Drawable getRightIcon() {
|
||||||
if (mRecording.isPhoto()) {
|
if (mRecording.isPhoto()) {
|
||||||
return getIcon(R.drawable.ic_action_photo_dark, R.color.audio_video_icon_color);
|
return getIcon(R.drawable.ic_action_photo_dark, R.color.audio_video_icon_color);
|
||||||
} else if (mRecording.isAudio()) {
|
} else if (mRecording.isAudio()) {
|
||||||
|
|
|
@ -3,6 +3,7 @@ package net.osmand.plus.mapcontextmenu;
|
||||||
import android.app.Dialog;
|
import android.app.Dialog;
|
||||||
import android.app.ProgressDialog;
|
import android.app.ProgressDialog;
|
||||||
import android.content.DialogInterface;
|
import android.content.DialogInterface;
|
||||||
|
import android.graphics.drawable.Drawable;
|
||||||
import android.support.annotation.NonNull;
|
import android.support.annotation.NonNull;
|
||||||
import android.support.annotation.Nullable;
|
import android.support.annotation.Nullable;
|
||||||
import android.support.v4.app.Fragment;
|
import android.support.v4.app.Fragment;
|
||||||
|
@ -37,7 +38,7 @@ import net.osmand.plus.mapcontextmenu.MenuController.MenuType;
|
||||||
import net.osmand.plus.mapcontextmenu.MenuController.TitleButtonController;
|
import net.osmand.plus.mapcontextmenu.MenuController.TitleButtonController;
|
||||||
import net.osmand.plus.mapcontextmenu.MenuController.TitleProgressController;
|
import net.osmand.plus.mapcontextmenu.MenuController.TitleProgressController;
|
||||||
import net.osmand.plus.mapcontextmenu.controllers.MapDataMenuController;
|
import net.osmand.plus.mapcontextmenu.controllers.MapDataMenuController;
|
||||||
import net.osmand.plus.mapcontextmenu.controllers.TransportStopController.TransportStopRoute;
|
import net.osmand.plus.transport.TransportStopRoute;
|
||||||
import net.osmand.plus.mapcontextmenu.editors.FavoritePointEditor;
|
import net.osmand.plus.mapcontextmenu.editors.FavoritePointEditor;
|
||||||
import net.osmand.plus.mapcontextmenu.editors.PointEditor;
|
import net.osmand.plus.mapcontextmenu.editors.PointEditor;
|
||||||
import net.osmand.plus.mapcontextmenu.editors.RtePtEditor;
|
import net.osmand.plus.mapcontextmenu.editors.RtePtEditor;
|
||||||
|
@ -418,7 +419,10 @@ public class MapContextMenu extends MenuTitleController implements StateChangedL
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean navigateInPedestrianMode() {
|
public boolean navigateInPedestrianMode() {
|
||||||
return menuController instanceof ParkingPositionMenuController;
|
if (menuController != null) {
|
||||||
|
return menuController.navigateInPedestrianMode();
|
||||||
|
}
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean close() {
|
public boolean close() {
|
||||||
|
@ -597,7 +601,7 @@ public class MapContextMenu extends MenuTitleController implements StateChangedL
|
||||||
historyStack.add(menuData);
|
historyStack.add(menuData);
|
||||||
}
|
}
|
||||||
if (!(menuController instanceof MapDataMenuController)) {
|
if (!(menuController instanceof MapDataMenuController)) {
|
||||||
menuController.buildMapDownloadButton(latLon);
|
menuController.buildMapDownloadButtonAndSizeInfo(latLon);
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
} else {
|
} else {
|
||||||
|
@ -1135,13 +1139,37 @@ public class MapContextMenu extends MenuTitleController implements StateChangedL
|
||||||
return menuController != null && menuController.displayDistanceDirection();
|
return menuController != null && menuController.displayDistanceDirection();
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean displayAdditionalTypeStrInHours() {
|
public String getSubtypeStr() {
|
||||||
return menuController != null && menuController.displayAdditionalTypeStrInHours();
|
if (menuController != null) {
|
||||||
|
return menuController.getSubtypeStr();
|
||||||
|
}
|
||||||
|
return "";
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getTimeStrColor() {
|
public Drawable getSubtypeIcon() {
|
||||||
if (menuController != null) {
|
if (menuController != null) {
|
||||||
return menuController.getTimeStrColor();
|
return menuController.getSubtypeIcon();
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getAdditionalInfoColor() {
|
||||||
|
if (menuController != null) {
|
||||||
|
return menuController.getAdditionalInfoColor();
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getAdditionalInfo() {
|
||||||
|
if (menuController != null) {
|
||||||
|
return menuController.getAdditionalInfoStr();
|
||||||
|
}
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getAdditionalInfoIconRes() {
|
||||||
|
if (menuController != null) {
|
||||||
|
return menuController.getAdditionalInfoIconRes();
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,6 +14,7 @@ import android.support.v4.content.ContextCompat;
|
||||||
import android.text.TextUtils;
|
import android.text.TextUtils;
|
||||||
import android.util.TypedValue;
|
import android.util.TypedValue;
|
||||||
import android.view.GestureDetector;
|
import android.view.GestureDetector;
|
||||||
|
import android.view.Gravity;
|
||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
import android.view.MotionEvent;
|
import android.view.MotionEvent;
|
||||||
import android.view.VelocityTracker;
|
import android.view.VelocityTracker;
|
||||||
|
@ -34,6 +35,7 @@ import android.widget.TextView;
|
||||||
import net.osmand.AndroidUtils;
|
import net.osmand.AndroidUtils;
|
||||||
import net.osmand.Location;
|
import net.osmand.Location;
|
||||||
import net.osmand.data.LatLon;
|
import net.osmand.data.LatLon;
|
||||||
|
import net.osmand.data.PointDescription;
|
||||||
import net.osmand.data.QuadPoint;
|
import net.osmand.data.QuadPoint;
|
||||||
import net.osmand.data.RotatedTileBox;
|
import net.osmand.data.RotatedTileBox;
|
||||||
import net.osmand.plus.OsmandApplication;
|
import net.osmand.plus.OsmandApplication;
|
||||||
|
@ -46,10 +48,11 @@ import net.osmand.plus.download.DownloadIndexesThread.DownloadEvents;
|
||||||
import net.osmand.plus.mapcontextmenu.MenuController.MenuState;
|
import net.osmand.plus.mapcontextmenu.MenuController.MenuState;
|
||||||
import net.osmand.plus.mapcontextmenu.MenuController.TitleButtonController;
|
import net.osmand.plus.mapcontextmenu.MenuController.TitleButtonController;
|
||||||
import net.osmand.plus.mapcontextmenu.MenuController.TitleProgressController;
|
import net.osmand.plus.mapcontextmenu.MenuController.TitleProgressController;
|
||||||
import net.osmand.plus.mapcontextmenu.controllers.TransportStopController.TransportStopRoute;
|
import net.osmand.plus.transport.TransportStopRoute;
|
||||||
import net.osmand.plus.mapcontextmenu.other.MapRouteInfoMenu;
|
import net.osmand.plus.mapcontextmenu.other.MapRouteInfoMenu;
|
||||||
import net.osmand.plus.views.AnimateDraggingMapThread;
|
import net.osmand.plus.views.AnimateDraggingMapThread;
|
||||||
import net.osmand.plus.views.OsmandMapTileView;
|
import net.osmand.plus.views.OsmandMapTileView;
|
||||||
|
import net.osmand.plus.views.TransportStopsLayer;
|
||||||
import net.osmand.plus.views.controls.HorizontalSwipeConfirm;
|
import net.osmand.plus.views.controls.HorizontalSwipeConfirm;
|
||||||
import net.osmand.plus.views.controls.SingleTapConfirm;
|
import net.osmand.plus.views.controls.SingleTapConfirm;
|
||||||
import net.osmand.util.Algorithms;
|
import net.osmand.util.Algorithms;
|
||||||
|
@ -198,8 +201,8 @@ public class MapContextMenuFragment extends BaseOsmAndFragment implements Downlo
|
||||||
});
|
});
|
||||||
|
|
||||||
// Bottom title button
|
// Bottom title button
|
||||||
final View bottomTitleButton = view.findViewById(R.id.title_button_bottom_view);
|
final View bottomTitleButtonView = view.findViewById(R.id.title_button_bottom_view);
|
||||||
bottomTitleButton.setOnClickListener(new View.OnClickListener() {
|
bottomTitleButtonView.setOnClickListener(new View.OnClickListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onClick(View v) {
|
public void onClick(View v) {
|
||||||
TitleButtonController bottomTitleButtonController = menu.getBottomTitleButtonController();
|
TitleButtonController bottomTitleButtonController = menu.getBottomTitleButtonController();
|
||||||
|
@ -211,8 +214,7 @@ public class MapContextMenuFragment extends BaseOsmAndFragment implements Downlo
|
||||||
|
|
||||||
// Progress bar
|
// Progress bar
|
||||||
final ImageView progressButton = (ImageView) view.findViewById(R.id.progressButton);
|
final ImageView progressButton = (ImageView) view.findViewById(R.id.progressButton);
|
||||||
progressButton.setImageDrawable(getIcon(R.drawable.ic_action_remove_dark,
|
progressButton.setImageDrawable(getIcon(R.drawable.ic_action_remove_dark, R.color.ctx_menu_buttons_icon_color));
|
||||||
!nightMode ? R.color.icon_color : R.color.dashboard_subheader_text_dark));
|
|
||||||
progressButton.setOnClickListener(new View.OnClickListener() {
|
progressButton.setOnClickListener(new View.OnClickListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onClick(View v) {
|
public void onClick(View v) {
|
||||||
|
@ -388,7 +390,22 @@ public class MapContextMenuFragment extends BaseOsmAndFragment implements Downlo
|
||||||
GridView transportStopRoutesGrid = (GridView) view.findViewById(R.id.transport_stop_routes_grid);
|
GridView transportStopRoutesGrid = (GridView) view.findViewById(R.id.transport_stop_routes_grid);
|
||||||
List<TransportStopRoute> transportStopRoutes = menu.getTransportStopRoutes();
|
List<TransportStopRoute> transportStopRoutes = menu.getTransportStopRoutes();
|
||||||
if (transportStopRoutes != null && transportStopRoutes.size() > 0) {
|
if (transportStopRoutes != null && transportStopRoutes.size() > 0) {
|
||||||
TransportStopRouteAdapter adapter = new TransportStopRouteAdapter(getContext(), transportStopRoutes);
|
final TransportStopRouteAdapter adapter = new TransportStopRouteAdapter(getMyApplication(), transportStopRoutes, nightMode);
|
||||||
|
adapter.setListener(new TransportStopRouteAdapter.OnClickListener() {
|
||||||
|
@Override
|
||||||
|
public void onClick(int position) {
|
||||||
|
TransportStopRoute route = adapter.getItem(position);
|
||||||
|
if (route != null) {
|
||||||
|
PointDescription pd = new PointDescription(PointDescription.POINT_TYPE_TRANSPORT_ROUTE,
|
||||||
|
route.getDescription(getMapActivity().getMyApplication(), false));
|
||||||
|
menu.show(menu.getLatLon(), pd, route);
|
||||||
|
TransportStopsLayer stopsLayer = getMapActivity().getMapLayers().getTransportStopsLayer();
|
||||||
|
stopsLayer.setRoute(route);
|
||||||
|
int cz = route.calculateZoom(0, getMapActivity().getMapView().getCurrentRotatedTileBox());
|
||||||
|
getMapActivity().changeZoom(cz - getMapActivity().getMapView().getZoom());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
transportStopRoutesGrid.setAdapter(adapter);
|
transportStopRoutesGrid.setAdapter(adapter);
|
||||||
transportStopRoutesGrid.setVisibility(View.VISIBLE);
|
transportStopRoutesGrid.setVisibility(View.VISIBLE);
|
||||||
} else {
|
} else {
|
||||||
|
@ -513,6 +530,23 @@ public class MapContextMenuFragment extends BaseOsmAndFragment implements Downlo
|
||||||
return view;
|
return view;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void toggleDetailsHideButton() {
|
||||||
|
int menuState = menu.getCurrentMenuState();
|
||||||
|
final boolean showShowHideButton = menuState == MenuState.HALF_SCREEN || (!menu.isLandscapeLayout() && menuState == MenuState.FULL_SCREEN);
|
||||||
|
TextView detailsButton = (TextView) view.findViewById(R.id.context_menu_details_button);
|
||||||
|
detailsButton.setText(showShowHideButton ? R.string.shared_string_collapse : R.string.description);
|
||||||
|
detailsButton.setOnClickListener(new View.OnClickListener() {
|
||||||
|
@Override
|
||||||
|
public void onClick(View view) {
|
||||||
|
if (showShowHideButton) {
|
||||||
|
openMenuHeaderOnly();
|
||||||
|
} else {
|
||||||
|
openMenuFullScreen();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
private void deactivate(View view) {
|
private void deactivate(View view) {
|
||||||
view.setEnabled(false);
|
view.setEnabled(false);
|
||||||
view.setAlpha(0.5f);
|
view.setAlpha(0.5f);
|
||||||
|
@ -547,6 +581,10 @@ public class MapContextMenuFragment extends BaseOsmAndFragment implements Downlo
|
||||||
changeMenuState(getViewY(), true, true, false);
|
changeMenuState(getViewY(), true, true, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void openMenuHeaderOnly() {
|
||||||
|
changeMenuState(getViewY(), true, false, true);
|
||||||
|
}
|
||||||
|
|
||||||
public void openMenuHalfScreen() {
|
public void openMenuHalfScreen() {
|
||||||
int oldMenuState = menu.getCurrentMenuState();
|
int oldMenuState = menu.getCurrentMenuState();
|
||||||
if (oldMenuState == MenuState.HEADER_ONLY) {
|
if (oldMenuState == MenuState.HEADER_ONLY) {
|
||||||
|
@ -579,6 +617,7 @@ public class MapContextMenuFragment extends BaseOsmAndFragment implements Downlo
|
||||||
restoreCustomMapRatio();
|
restoreCustomMapRatio();
|
||||||
menu.updateControlsVisibility(true);
|
menu.updateControlsVisibility(true);
|
||||||
doBeforeMenuStateChange(oldMenuState, newMenuState);
|
doBeforeMenuStateChange(oldMenuState, newMenuState);
|
||||||
|
toggleDetailsHideButton();
|
||||||
}
|
}
|
||||||
|
|
||||||
applyPosY(currentY, needCloseMenu, needMapAdjust, oldMenuState, newMenuState, 0);
|
applyPosY(currentY, needCloseMenu, needMapAdjust, oldMenuState, newMenuState, 0);
|
||||||
|
@ -675,7 +714,22 @@ public class MapContextMenuFragment extends BaseOsmAndFragment implements Downlo
|
||||||
origMarkerY = box.getCenterPixelY();
|
origMarkerY = box.getCenterPixelY();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void updateButtonsAndProgress() {
|
private void enableDisableButtons(View buttonView, TextView button, boolean enabled) {
|
||||||
|
if (enabled) {
|
||||||
|
ColorStateList buttonColorStateList = AndroidUtils.createColorStateList(getContext(), nightMode,
|
||||||
|
R.color.ctx_menu_controller_button_text_color_light_n, R.color.ctx_menu_controller_button_text_color_light_p,
|
||||||
|
R.color.ctx_menu_controller_button_text_color_dark_n, R.color.ctx_menu_controller_button_text_color_dark_p);
|
||||||
|
|
||||||
|
buttonView.setBackgroundResource(nightMode ? R.drawable.context_menu_controller_bg_dark : R.drawable.context_menu_controller_bg_light);
|
||||||
|
button.setTextColor(buttonColorStateList);
|
||||||
|
} else {
|
||||||
|
buttonView.setBackgroundResource(nightMode ? R.drawable.context_menu_controller_disabled_bg_dark: R.drawable.context_menu_controller_disabled_bg_light);
|
||||||
|
button.setTextColor(ContextCompat.getColor(getContext(), nightMode ? R.color.ctx_menu_controller_disabled_text_color_dark : R.color.ctx_menu_controller_disabled_text_color_light));
|
||||||
|
}
|
||||||
|
button.setEnabled(enabled);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void updateButtonsAndProgress() {
|
||||||
if (view != null) {
|
if (view != null) {
|
||||||
TitleButtonController leftTitleButtonController = menu.getLeftTitleButtonController();
|
TitleButtonController leftTitleButtonController = menu.getLeftTitleButtonController();
|
||||||
TitleButtonController rightTitleButtonController = menu.getRightTitleButtonController();
|
TitleButtonController rightTitleButtonController = menu.getRightTitleButtonController();
|
||||||
|
@ -684,10 +738,6 @@ public class MapContextMenuFragment extends BaseOsmAndFragment implements Downlo
|
||||||
TitleButtonController rightDownloadButtonController = menu.getRightDownloadButtonController();
|
TitleButtonController rightDownloadButtonController = menu.getRightDownloadButtonController();
|
||||||
TitleProgressController titleProgressController = menu.getTitleProgressController();
|
TitleProgressController titleProgressController = menu.getTitleProgressController();
|
||||||
|
|
||||||
ColorStateList textColorStateList = ContextCompat.getColorStateList(getContext(),
|
|
||||||
nightMode ? R.color.context_menu_controller_text_color_dark : R.color.context_menu_controller_text_color_light);
|
|
||||||
int buttonViewBackgroundResId = nightMode ? R.drawable.context_menu_controller_bg_dark : R.drawable.context_menu_controller_bg_light;
|
|
||||||
|
|
||||||
// Title buttons
|
// Title buttons
|
||||||
boolean showTitleButtonsContainer = (leftTitleButtonController != null || rightTitleButtonController != null);
|
boolean showTitleButtonsContainer = (leftTitleButtonController != null || rightTitleButtonController != null);
|
||||||
final View titleButtonsContainer = view.findViewById(R.id.title_button_container);
|
final View titleButtonsContainer = view.findViewById(R.id.title_button_container);
|
||||||
|
@ -698,16 +748,15 @@ public class MapContextMenuFragment extends BaseOsmAndFragment implements Downlo
|
||||||
final TextView leftTitleButton = (TextView) view.findViewById(R.id.title_button);
|
final TextView leftTitleButton = (TextView) view.findViewById(R.id.title_button);
|
||||||
final TextView titleButtonRightText = (TextView) view.findViewById(R.id.title_button_right_text);
|
final TextView titleButtonRightText = (TextView) view.findViewById(R.id.title_button_right_text);
|
||||||
if (leftTitleButtonController != null) {
|
if (leftTitleButtonController != null) {
|
||||||
|
enableDisableButtons(leftTitleButtonView, leftTitleButton, leftTitleButtonController.enabled);
|
||||||
leftTitleButton.setText(leftTitleButtonController.caption);
|
leftTitleButton.setText(leftTitleButtonController.caption);
|
||||||
leftTitleButton.setTextColor(textColorStateList);
|
|
||||||
if (leftTitleButtonController.visible) {
|
if (leftTitleButtonController.visible) {
|
||||||
leftTitleButtonView.setVisibility(View.VISIBLE);
|
leftTitleButtonView.setVisibility(View.VISIBLE);
|
||||||
leftTitleButtonView.setBackgroundResource(buttonViewBackgroundResId);
|
|
||||||
Drawable leftIcon = leftTitleButtonController.getLeftIcon();
|
Drawable leftIcon = leftTitleButtonController.getLeftIcon();
|
||||||
if (leftIcon != null) {
|
Drawable rightIcon = leftTitleButtonController.getRightIcon();
|
||||||
leftTitleButton.setCompoundDrawablesWithIntrinsicBounds(leftIcon, null, null, null);
|
leftTitleButton.setCompoundDrawablesWithIntrinsicBounds(leftIcon, null, rightIcon, null);
|
||||||
leftTitleButton.setCompoundDrawablePadding(dpToPx(8f));
|
leftTitleButton.setCompoundDrawablePadding(dpToPx(8f));
|
||||||
}
|
((LinearLayout) leftTitleButtonView).setGravity(rightIcon != null ? Gravity.END : Gravity.START);
|
||||||
|
|
||||||
if (leftTitleButtonController.needRightText) {
|
if (leftTitleButtonController.needRightText) {
|
||||||
titleButtonRightText.setText(leftTitleButtonController.rightTextCaption);
|
titleButtonRightText.setText(leftTitleButtonController.rightTextCaption);
|
||||||
|
@ -727,16 +776,15 @@ public class MapContextMenuFragment extends BaseOsmAndFragment implements Downlo
|
||||||
final View rightTitleButtonView = view.findViewById(R.id.title_button_right_view);
|
final View rightTitleButtonView = view.findViewById(R.id.title_button_right_view);
|
||||||
final TextView rightTitleButton = (TextView) view.findViewById(R.id.title_button_right);
|
final TextView rightTitleButton = (TextView) view.findViewById(R.id.title_button_right);
|
||||||
if (rightTitleButtonController != null) {
|
if (rightTitleButtonController != null) {
|
||||||
|
enableDisableButtons(rightTitleButtonView, rightTitleButton, rightTitleButtonController.enabled);
|
||||||
rightTitleButton.setText(rightTitleButtonController.caption);
|
rightTitleButton.setText(rightTitleButtonController.caption);
|
||||||
rightTitleButton.setTextColor(textColorStateList);
|
|
||||||
rightTitleButtonView.setVisibility(rightTitleButtonController.visible ? View.VISIBLE : View.INVISIBLE);
|
rightTitleButtonView.setVisibility(rightTitleButtonController.visible ? View.VISIBLE : View.INVISIBLE);
|
||||||
if (rightTitleButtonController.visible) {
|
|
||||||
rightTitleButtonView.setBackgroundResource(buttonViewBackgroundResId);
|
|
||||||
}
|
|
||||||
|
|
||||||
Drawable leftIcon = rightTitleButtonController.getLeftIcon();
|
Drawable leftIcon = rightTitleButtonController.getLeftIcon();
|
||||||
rightTitleButton.setCompoundDrawablesWithIntrinsicBounds(leftIcon, null, null, null);
|
Drawable rightIcon = rightTitleButtonController.getRightIcon();
|
||||||
|
rightTitleButton.setCompoundDrawablesWithIntrinsicBounds(leftIcon, null, rightIcon, null);
|
||||||
rightTitleButton.setCompoundDrawablePadding(dpToPx(8f));
|
rightTitleButton.setCompoundDrawablePadding(dpToPx(8f));
|
||||||
|
((LinearLayout) rightTitleButtonView).setGravity(rightIcon != null ? Gravity.END : Gravity.START);
|
||||||
} else {
|
} else {
|
||||||
rightTitleButtonView.setVisibility(View.INVISIBLE);
|
rightTitleButtonView.setVisibility(View.INVISIBLE);
|
||||||
}
|
}
|
||||||
|
@ -745,16 +793,15 @@ public class MapContextMenuFragment extends BaseOsmAndFragment implements Downlo
|
||||||
final View bottomTitleButtonView = view.findViewById(R.id.title_button_bottom_view);
|
final View bottomTitleButtonView = view.findViewById(R.id.title_button_bottom_view);
|
||||||
final TextView bottomTitleButton = (TextView) view.findViewById(R.id.title_button_bottom);
|
final TextView bottomTitleButton = (TextView) view.findViewById(R.id.title_button_bottom);
|
||||||
if (bottomTitleButtonController != null) {
|
if (bottomTitleButtonController != null) {
|
||||||
|
enableDisableButtons(bottomTitleButtonView, bottomTitleButton, bottomTitleButtonController.enabled);
|
||||||
bottomTitleButton.setText(bottomTitleButtonController.caption);
|
bottomTitleButton.setText(bottomTitleButtonController.caption);
|
||||||
bottomTitleButton.setTextColor(textColorStateList);
|
|
||||||
bottomTitleButtonView.setVisibility(bottomTitleButtonController.visible ? View.VISIBLE : View.GONE);
|
bottomTitleButtonView.setVisibility(bottomTitleButtonController.visible ? View.VISIBLE : View.GONE);
|
||||||
if (bottomTitleButtonController.visible) {
|
|
||||||
bottomTitleButtonView.setBackgroundResource(buttonViewBackgroundResId);
|
|
||||||
}
|
|
||||||
|
|
||||||
Drawable leftIcon = bottomTitleButtonController.getLeftIcon();
|
Drawable leftIcon = bottomTitleButtonController.getLeftIcon();
|
||||||
bottomTitleButton.setCompoundDrawablesWithIntrinsicBounds(leftIcon, null, null, null);
|
Drawable rightIcon = bottomTitleButtonController.getRightIcon();
|
||||||
|
bottomTitleButton.setCompoundDrawablesWithIntrinsicBounds(leftIcon, null, rightIcon, null);
|
||||||
bottomTitleButton.setCompoundDrawablePadding(dpToPx(8f));
|
bottomTitleButton.setCompoundDrawablePadding(dpToPx(8f));
|
||||||
|
((LinearLayout) bottomTitleButtonView).setGravity(rightIcon != null ? Gravity.END : Gravity.START);
|
||||||
} else {
|
} else {
|
||||||
bottomTitleButtonView.setVisibility(View.GONE);
|
bottomTitleButtonView.setVisibility(View.GONE);
|
||||||
}
|
}
|
||||||
|
@ -771,18 +818,15 @@ public class MapContextMenuFragment extends BaseOsmAndFragment implements Downlo
|
||||||
final View leftDownloadButtonView = view.findViewById(R.id.download_button_left_view);
|
final View leftDownloadButtonView = view.findViewById(R.id.download_button_left_view);
|
||||||
final TextView leftDownloadButton = (TextView) view.findViewById(R.id.download_button_left);
|
final TextView leftDownloadButton = (TextView) view.findViewById(R.id.download_button_left);
|
||||||
if (leftDownloadButtonController != null) {
|
if (leftDownloadButtonController != null) {
|
||||||
|
enableDisableButtons(leftDownloadButtonView, leftDownloadButton, leftDownloadButtonController.enabled);
|
||||||
leftDownloadButton.setText(leftDownloadButtonController.caption);
|
leftDownloadButton.setText(leftDownloadButtonController.caption);
|
||||||
leftDownloadButton.setTextColor(textColorStateList);
|
|
||||||
leftDownloadButtonView.setVisibility(leftDownloadButtonController.visible ? View.VISIBLE : View.INVISIBLE);
|
leftDownloadButtonView.setVisibility(leftDownloadButtonController.visible ? View.VISIBLE : View.INVISIBLE);
|
||||||
if (leftDownloadButtonController.visible) {
|
|
||||||
leftDownloadButtonView.setBackgroundResource(buttonViewBackgroundResId);
|
|
||||||
}
|
|
||||||
|
|
||||||
Drawable leftIcon = leftDownloadButtonController.getLeftIcon();
|
Drawable leftIcon = leftDownloadButtonController.getLeftIcon();
|
||||||
if (leftIcon != null) {
|
Drawable rightIcon = leftDownloadButtonController.getRightIcon();
|
||||||
leftDownloadButton.setCompoundDrawablesWithIntrinsicBounds(leftIcon, null, null, null);
|
leftDownloadButton.setCompoundDrawablesWithIntrinsicBounds(leftIcon, null, rightIcon, null);
|
||||||
leftDownloadButton.setCompoundDrawablePadding(dpToPx(8f));
|
leftDownloadButton.setCompoundDrawablePadding(dpToPx(8f));
|
||||||
}
|
((LinearLayout) leftDownloadButtonView).setGravity(rightIcon != null ? Gravity.END : Gravity.START);
|
||||||
} else {
|
} else {
|
||||||
leftDownloadButtonView.setVisibility(View.INVISIBLE);
|
leftDownloadButtonView.setVisibility(View.INVISIBLE);
|
||||||
}
|
}
|
||||||
|
@ -791,16 +835,15 @@ public class MapContextMenuFragment extends BaseOsmAndFragment implements Downlo
|
||||||
final View rightDownloadButtonView = view.findViewById(R.id.download_button_right_view);
|
final View rightDownloadButtonView = view.findViewById(R.id.download_button_right_view);
|
||||||
final TextView rightDownloadButton = (TextView) view.findViewById(R.id.download_button_right);
|
final TextView rightDownloadButton = (TextView) view.findViewById(R.id.download_button_right);
|
||||||
if (rightDownloadButtonController != null) {
|
if (rightDownloadButtonController != null) {
|
||||||
|
enableDisableButtons(rightDownloadButtonView, rightDownloadButton, rightDownloadButtonController.enabled);
|
||||||
rightDownloadButton.setText(rightDownloadButtonController.caption);
|
rightDownloadButton.setText(rightDownloadButtonController.caption);
|
||||||
rightDownloadButton.setTextColor(textColorStateList);
|
|
||||||
rightDownloadButtonView.setVisibility(rightDownloadButtonController.visible ? View.VISIBLE : View.INVISIBLE);
|
rightDownloadButtonView.setVisibility(rightDownloadButtonController.visible ? View.VISIBLE : View.INVISIBLE);
|
||||||
if (rightDownloadButtonController.visible) {
|
|
||||||
rightDownloadButtonView.setBackgroundResource(buttonViewBackgroundResId);
|
|
||||||
}
|
|
||||||
|
|
||||||
Drawable leftIcon = rightDownloadButtonController.getLeftIcon();
|
Drawable leftIcon = rightDownloadButtonController.getLeftIcon();
|
||||||
rightDownloadButton.setCompoundDrawablesWithIntrinsicBounds(leftIcon, null, null, null);
|
Drawable rightIcon = rightDownloadButtonController.getRightIcon();
|
||||||
|
rightDownloadButton.setCompoundDrawablesWithIntrinsicBounds(leftIcon, null, rightIcon, null);
|
||||||
rightDownloadButton.setCompoundDrawablePadding(dpToPx(8f));
|
rightDownloadButton.setCompoundDrawablePadding(dpToPx(8f));
|
||||||
|
((LinearLayout) rightDownloadButtonView).setGravity(rightIcon != null ? Gravity.END : Gravity.START);
|
||||||
} else {
|
} else {
|
||||||
rightDownloadButtonView.setVisibility(View.INVISIBLE);
|
rightDownloadButtonView.setVisibility(View.INVISIBLE);
|
||||||
}
|
}
|
||||||
|
@ -835,8 +878,8 @@ public class MapContextMenuFragment extends BaseOsmAndFragment implements Downlo
|
||||||
OsmandApplication app = getMyApplication();
|
OsmandApplication app = getMyApplication();
|
||||||
if (app != null && view != null) {
|
if (app != null && view != null) {
|
||||||
final ImageView iconView = (ImageView) view.findViewById(R.id.context_menu_icon_view);
|
final ImageView iconView = (ImageView) view.findViewById(R.id.context_menu_icon_view);
|
||||||
Drawable icon = menu.getLeftIcon();
|
Drawable icon = menu.getRightIcon();
|
||||||
int iconId = menu.getLeftIconId();
|
int iconId = menu.getRightIconId();
|
||||||
if (icon != null) {
|
if (icon != null) {
|
||||||
iconView.setImageDrawable(icon);
|
iconView.setImageDrawable(icon);
|
||||||
iconView.setVisibility(View.VISIBLE);
|
iconView.setVisibility(View.VISIBLE);
|
||||||
|
@ -929,8 +972,7 @@ public class MapContextMenuFragment extends BaseOsmAndFragment implements Downlo
|
||||||
OsmandApplication app = getMyApplication();
|
OsmandApplication app = getMyApplication();
|
||||||
if (app != null && view != null) {
|
if (app != null && view != null) {
|
||||||
final ImageView buttonFavorite = (ImageView) view.findViewById(R.id.context_menu_fav_image_view);
|
final ImageView buttonFavorite = (ImageView) view.findViewById(R.id.context_menu_fav_image_view);
|
||||||
buttonFavorite.setImageDrawable(getIcon(menu.getFavActionIconId(),
|
buttonFavorite.setImageDrawable(getIcon(menu.getFavActionIconId(), R.color.ctx_menu_buttons_icon_color));
|
||||||
!nightMode ? R.color.icon_color : R.color.dashboard_subheader_text_dark));
|
|
||||||
String favActionString = getString(menu.getFavActionStringId());
|
String favActionString = getString(menu.getFavActionStringId());
|
||||||
buttonFavorite.setContentDescription(favActionString);
|
buttonFavorite.setContentDescription(favActionString);
|
||||||
((TextView) view.findViewById(R.id.context_menu_fav_text_view)).setText(favActionString);
|
((TextView) view.findViewById(R.id.context_menu_fav_text_view)).setText(favActionString);
|
||||||
|
@ -945,6 +987,7 @@ public class MapContextMenuFragment extends BaseOsmAndFragment implements Downlo
|
||||||
this.initLayout = true;
|
this.initLayout = true;
|
||||||
this.centered = true;
|
this.centered = true;
|
||||||
}
|
}
|
||||||
|
updateButtonsAndProgress();
|
||||||
runLayoutListener();
|
runLayoutListener();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1132,61 +1175,43 @@ public class MapContextMenuFragment extends BaseOsmAndFragment implements Downlo
|
||||||
}
|
}
|
||||||
line2Str.append(streetStr);
|
line2Str.append(streetStr);
|
||||||
}
|
}
|
||||||
|
if (!TextUtils.isEmpty(line2Str)) {
|
||||||
line2.setText(line2Str.toString());
|
line2.setText(line2Str.toString());
|
||||||
|
line2.setVisibility(View.VISIBLE);
|
||||||
|
} else {
|
||||||
|
line2.setVisibility(View.GONE);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
TextView line3 = (TextView) view.findViewById(R.id.context_menu_line3);
|
TextView line3 = (TextView) view.findViewById(R.id.context_menu_line3);
|
||||||
String additionalTypeStr = menu.getAdditionalTypeStr();
|
String subtypeStr = menu.getSubtypeStr();
|
||||||
boolean displayAdditionalTypeStrInHours = menu.displayAdditionalTypeStrInHours();
|
if (TextUtils.isEmpty(subtypeStr)) {
|
||||||
boolean emptyAdditionalTypeStr = TextUtils.isEmpty(additionalTypeStr);
|
|
||||||
if (emptyAdditionalTypeStr || displayAdditionalTypeStrInHours) {
|
|
||||||
line3.setVisibility(View.GONE);
|
line3.setVisibility(View.GONE);
|
||||||
} else {
|
} else {
|
||||||
line3.setVisibility(View.VISIBLE);
|
line3.setVisibility(View.VISIBLE);
|
||||||
line3.setText(additionalTypeStr);
|
line3.setText(subtypeStr);
|
||||||
Drawable icon = menu.getAdditionalLineTypeIcon();
|
Drawable icon = menu.getSubtypeIcon();
|
||||||
line3.setCompoundDrawablesWithIntrinsicBounds(icon, null, null, null);
|
line3.setCompoundDrawablesWithIntrinsicBounds(icon, null, null, null);
|
||||||
line3.setCompoundDrawablePadding(dpToPx(5f));
|
line3.setCompoundDrawablePadding(dpToPx(5f));
|
||||||
}
|
}
|
||||||
|
|
||||||
TextView openingHoursTextView = (TextView) view.findViewById(R.id.opening_hours_text_view);
|
TextView additionalInfoTextView = (TextView) view.findViewById(R.id.additional_info_text_view);
|
||||||
OpeningHoursInfo openingHoursInfo = menu.getOpeningHoursInfo();
|
String additionalInfoStr = menu.getAdditionalInfo();
|
||||||
boolean containsOpeningHours = openingHoursInfo != null && openingHoursInfo.containsInfo();
|
if (!TextUtils.isEmpty(additionalInfoStr)) {
|
||||||
if (containsOpeningHours || (displayAdditionalTypeStrInHours && !emptyAdditionalTypeStr)) {
|
int colorId = menu.getAdditionalInfoColor();
|
||||||
int colorId;
|
int additionalInfoIconRes = menu.getAdditionalInfoIconRes();
|
||||||
if (containsOpeningHours) {
|
|
||||||
colorId = openingHoursInfo.isOpened() ? R.color.ctx_menu_amenity_opened_text_color : R.color.ctx_menu_amenity_closed_text_color;
|
|
||||||
} else {
|
|
||||||
colorId = menu.getTimeStrColor();
|
|
||||||
}
|
|
||||||
String timeInfo = "";
|
|
||||||
if (containsOpeningHours) {
|
|
||||||
if (openingHoursInfo.isOpened24_7()) {
|
|
||||||
timeInfo = getString(R.string.shared_string_is_open_24_7);
|
|
||||||
} else if (!Algorithms.isEmpty(openingHoursInfo.getNearToOpeningTime())) {
|
|
||||||
timeInfo = getString(R.string.will_open_at) + " " + openingHoursInfo.getNearToOpeningTime();
|
|
||||||
} else if (!Algorithms.isEmpty(openingHoursInfo.getOpeningTime())) {
|
|
||||||
timeInfo = getString(R.string.open_from) + " " + openingHoursInfo.getOpeningTime();
|
|
||||||
} else if (!Algorithms.isEmpty(openingHoursInfo.getNearToClosingTime())) {
|
|
||||||
timeInfo = getString(R.string.will_close_at) + " " + openingHoursInfo.getNearToClosingTime();
|
|
||||||
} else if (!Algorithms.isEmpty(openingHoursInfo.getClosingTime())) {
|
|
||||||
timeInfo = getString(R.string.open_till) + " " + openingHoursInfo.getClosingTime();
|
|
||||||
} else if (!Algorithms.isEmpty(openingHoursInfo.getOpeningDay())) {
|
|
||||||
timeInfo = getString(R.string.will_open_on) + " " + openingHoursInfo.getOpeningDay() + ".";
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
timeInfo = additionalTypeStr;
|
|
||||||
}
|
|
||||||
if (colorId != 0) {
|
if (colorId != 0) {
|
||||||
openingHoursTextView.setTextColor(ContextCompat.getColor(getContext(), colorId));
|
additionalInfoTextView.setTextColor(ContextCompat.getColor(getContext(), colorId));
|
||||||
Drawable drawable = getIcon(R.drawable.ic_action_opening_hour_16, colorId);
|
if (additionalInfoIconRes != 0) {
|
||||||
openingHoursTextView.setCompoundDrawablesWithIntrinsicBounds(drawable, null, null, null);
|
Drawable additionalIcon = getIcon(additionalInfoIconRes, colorId);
|
||||||
openingHoursTextView.setCompoundDrawablePadding(dpToPx(8));
|
additionalInfoTextView.setCompoundDrawablesWithIntrinsicBounds(additionalIcon, null, null, null);
|
||||||
|
additionalInfoTextView.setCompoundDrawablePadding(dpToPx(8));
|
||||||
}
|
}
|
||||||
openingHoursTextView.setText(timeInfo);
|
}
|
||||||
openingHoursTextView.setVisibility(View.VISIBLE);
|
additionalInfoTextView.setText(additionalInfoStr);
|
||||||
|
additionalInfoTextView.setVisibility(View.VISIBLE);
|
||||||
} else {
|
} else {
|
||||||
openingHoursTextView.setVisibility(View.GONE);
|
additionalInfoTextView.setVisibility(View.GONE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
updateCompassVisibility();
|
updateCompassVisibility();
|
||||||
|
@ -1482,7 +1507,7 @@ public class MapContextMenuFragment extends BaseOsmAndFragment implements Downlo
|
||||||
boolean progressVisible = menu.getTitleProgressController() != null && menu.getTitleProgressController().visible;
|
boolean progressVisible = menu.getTitleProgressController() != null && menu.getTitleProgressController().visible;
|
||||||
updateButtonsAndProgress();
|
updateButtonsAndProgress();
|
||||||
if (wasProgressVisible != progressVisible) {
|
if (wasProgressVisible != progressVisible) {
|
||||||
runLayoutListener();
|
refreshTitle();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1491,7 +1516,7 @@ public class MapContextMenuFragment extends BaseOsmAndFragment implements Downlo
|
||||||
if (created) {
|
if (created) {
|
||||||
menu.updateData();
|
menu.updateData();
|
||||||
updateButtonsAndProgress();
|
updateButtonsAndProgress();
|
||||||
runLayoutListener();
|
refreshTitle();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -5,8 +5,10 @@ import android.content.Context;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.content.res.ColorStateList;
|
import android.content.res.ColorStateList;
|
||||||
import android.content.res.Resources;
|
import android.content.res.Resources;
|
||||||
|
import android.graphics.Color;
|
||||||
import android.graphics.PorterDuff;
|
import android.graphics.PorterDuff;
|
||||||
import android.graphics.drawable.Drawable;
|
import android.graphics.drawable.Drawable;
|
||||||
|
import android.graphics.drawable.GradientDrawable;
|
||||||
import android.net.Uri;
|
import android.net.Uri;
|
||||||
import android.os.AsyncTask;
|
import android.os.AsyncTask;
|
||||||
import android.support.annotation.NonNull;
|
import android.support.annotation.NonNull;
|
||||||
|
@ -17,7 +19,6 @@ import android.text.TextUtils;
|
||||||
import android.text.util.Linkify;
|
import android.text.util.Linkify;
|
||||||
import android.util.TypedValue;
|
import android.util.TypedValue;
|
||||||
import android.view.Gravity;
|
import android.view.Gravity;
|
||||||
import android.view.LayoutInflater;
|
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.View.OnClickListener;
|
import android.view.View.OnClickListener;
|
||||||
import android.view.ViewGroup;
|
import android.view.ViewGroup;
|
||||||
|
@ -27,6 +28,7 @@ import android.widget.LinearLayout;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
import android.widget.Toast;
|
import android.widget.Toast;
|
||||||
|
|
||||||
|
import net.osmand.AndroidUtils;
|
||||||
import net.osmand.binary.BinaryMapIndexReader;
|
import net.osmand.binary.BinaryMapIndexReader;
|
||||||
import net.osmand.data.Amenity;
|
import net.osmand.data.Amenity;
|
||||||
import net.osmand.data.FavouritePoint;
|
import net.osmand.data.FavouritePoint;
|
||||||
|
@ -51,7 +53,7 @@ import net.osmand.plus.mapcontextmenu.builders.cards.CardsRowBuilder;
|
||||||
import net.osmand.plus.mapcontextmenu.builders.cards.ImageCard;
|
import net.osmand.plus.mapcontextmenu.builders.cards.ImageCard;
|
||||||
import net.osmand.plus.mapcontextmenu.builders.cards.ImageCard.GetImageCardsTask;
|
import net.osmand.plus.mapcontextmenu.builders.cards.ImageCard.GetImageCardsTask;
|
||||||
import net.osmand.plus.mapcontextmenu.builders.cards.NoImagesCard;
|
import net.osmand.plus.mapcontextmenu.builders.cards.NoImagesCard;
|
||||||
import net.osmand.plus.mapcontextmenu.controllers.TransportStopController.TransportStopRoute;
|
import net.osmand.plus.transport.TransportStopRoute;
|
||||||
import net.osmand.plus.myplaces.FavoritesActivity;
|
import net.osmand.plus.myplaces.FavoritesActivity;
|
||||||
import net.osmand.plus.render.RenderingIcons;
|
import net.osmand.plus.render.RenderingIcons;
|
||||||
import net.osmand.plus.views.TransportStopsLayer;
|
import net.osmand.plus.views.TransportStopsLayer;
|
||||||
|
@ -99,6 +101,7 @@ public class MenuBuilder {
|
||||||
|
|
||||||
public class PlainMenuItem {
|
public class PlainMenuItem {
|
||||||
private int iconId;
|
private int iconId;
|
||||||
|
private String buttonText;
|
||||||
private String text;
|
private String text;
|
||||||
private boolean needLinks;
|
private boolean needLinks;
|
||||||
private boolean url;
|
private boolean url;
|
||||||
|
@ -106,10 +109,11 @@ public class MenuBuilder {
|
||||||
private CollapsableView collapsableView;
|
private CollapsableView collapsableView;
|
||||||
private OnClickListener onClickListener;
|
private OnClickListener onClickListener;
|
||||||
|
|
||||||
public PlainMenuItem(int iconId, String text, boolean needLinks, boolean url,
|
public PlainMenuItem(int iconId, String buttonText, String text, boolean needLinks, boolean url,
|
||||||
boolean collapsable, CollapsableView collapsableView,
|
boolean collapsable, CollapsableView collapsableView,
|
||||||
OnClickListener onClickListener) {
|
OnClickListener onClickListener) {
|
||||||
this.iconId = iconId;
|
this.iconId = iconId;
|
||||||
|
this.buttonText = buttonText;
|
||||||
this.text = text;
|
this.text = text;
|
||||||
this.needLinks = needLinks;
|
this.needLinks = needLinks;
|
||||||
this.url = url;
|
this.url = url;
|
||||||
|
@ -122,6 +126,10 @@ public class MenuBuilder {
|
||||||
return iconId;
|
return iconId;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getButtonText() {
|
||||||
|
return buttonText;
|
||||||
|
}
|
||||||
|
|
||||||
public String getText() {
|
public String getText() {
|
||||||
return text;
|
return text;
|
||||||
}
|
}
|
||||||
|
@ -289,7 +297,7 @@ public class MenuBuilder {
|
||||||
buildTitleRow(view);
|
buildTitleRow(view);
|
||||||
}
|
}
|
||||||
if (showTransportRoutes()) {
|
if (showTransportRoutes()) {
|
||||||
buildRow(view, 0, app.getString(R.string.transport_Routes), 0, true, getCollapsableTransportStopRoutesView(view.getContext(), false),
|
buildRow(view, 0, null, app.getString(R.string.transport_Routes), 0, true, getCollapsableTransportStopRoutesView(view.getContext(), false),
|
||||||
false, 0, false, null, true);
|
false, 0, false, null, true);
|
||||||
}
|
}
|
||||||
buildNearestWikiRow(view);
|
buildNearestWikiRow(view);
|
||||||
|
@ -324,7 +332,7 @@ public class MenuBuilder {
|
||||||
|
|
||||||
protected void buildPlainMenuItems(View view) {
|
protected void buildPlainMenuItems(View view) {
|
||||||
for (PlainMenuItem item : plainMenuItems) {
|
for (PlainMenuItem item : plainMenuItems) {
|
||||||
buildRow(view, item.getIconId(), item.getText(), 0, item.collapsable, item.collapsableView,
|
buildRow(view, item.getIconId(), item.getButtonText(), item.getText(), 0, item.collapsable, item.collapsableView,
|
||||||
item.isNeedLinks(), 0, item.isUrl(), item.getOnClickListener(), false);
|
item.isNeedLinks(), 0, item.isUrl(), item.getOnClickListener(), false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -349,14 +357,14 @@ public class MenuBuilder {
|
||||||
if (mapContextMenu != null) {
|
if (mapContextMenu != null) {
|
||||||
String title = mapContextMenu.getTitleStr();
|
String title = mapContextMenu.getTitleStr();
|
||||||
if (title.length() > TITLE_LIMIT) {
|
if (title.length() > TITLE_LIMIT) {
|
||||||
buildRow(view, R.drawable.ic_action_note_dark, title, 0, false, null, false, 0, false, null, false);
|
buildRow(view, R.drawable.ic_action_note_dark, null, title, 0, false, null, false, 0, false, null, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void buildNearestWikiRow(View view) {
|
protected void buildNearestWikiRow(View view) {
|
||||||
if (processNearstWiki() && nearestWiki.size() > 0) {
|
if (processNearstWiki() && nearestWiki.size() > 0) {
|
||||||
buildRow(view, R.drawable.ic_action_wikipedia, app.getString(R.string.wiki_around) + " (" + nearestWiki.size()+")", 0,
|
buildRow(view, R.drawable.ic_action_wikipedia, null, app.getString(R.string.wiki_around) + " (" + nearestWiki.size()+")", 0,
|
||||||
true, getCollapsableWikiView(view.getContext(), true),
|
true, getCollapsableWikiView(view.getContext(), true),
|
||||||
false, 0, false, null, false);
|
false, 0, false, null, false);
|
||||||
}
|
}
|
||||||
|
@ -380,7 +388,7 @@ public class MenuBuilder {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
buildRow(view, R.drawable.ic_action_photo_dark, app.getString(R.string.online_photos), 0, true,
|
buildRow(view, R.drawable.ic_action_photo_dark, null, app.getString(R.string.online_photos), 0, true,
|
||||||
collapsableView, false, 1, false, null, false);
|
collapsableView, false, 1, false, null, false);
|
||||||
|
|
||||||
if (needUpdateOnly && onlinePhotoCards != null) {
|
if (needUpdateOnly && onlinePhotoCards != null) {
|
||||||
|
@ -437,14 +445,14 @@ public class MenuBuilder {
|
||||||
firstRow = false;
|
firstRow = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public View buildRow(View view, int iconId, String text, int textColor,
|
public View buildRow(View view, int iconId, String buttonText, String text, int textColor,
|
||||||
boolean collapsable, final CollapsableView collapsableView,
|
boolean collapsable, final CollapsableView collapsableView,
|
||||||
boolean needLinks, int textLinesLimit, boolean isUrl, OnClickListener onClickListener, boolean matchWidthDivider) {
|
boolean needLinks, int textLinesLimit, boolean isUrl, OnClickListener onClickListener, boolean matchWidthDivider) {
|
||||||
return buildRow(view, iconId == 0 ? null : getRowIcon(iconId), text, textColor, null, collapsable, collapsableView,
|
return buildRow(view, iconId == 0 ? null : getRowIcon(iconId), buttonText, text, textColor, null, collapsable, collapsableView,
|
||||||
needLinks, textLinesLimit, isUrl, onClickListener, matchWidthDivider);
|
needLinks, textLinesLimit, isUrl, onClickListener, matchWidthDivider);
|
||||||
}
|
}
|
||||||
|
|
||||||
public View buildRow(final View view, Drawable icon, final String text, int textColor, String secondaryText,
|
public View buildRow(final View view, Drawable icon, final String buttonText, final String text, int textColor, String secondaryText,
|
||||||
boolean collapsable, final CollapsableView collapsableView, boolean needLinks,
|
boolean collapsable, final CollapsableView collapsableView, boolean needLinks,
|
||||||
int textLinesLimit, boolean isUrl, OnClickListener onClickListener, boolean matchWidthDivider) {
|
int textLinesLimit, boolean isUrl, OnClickListener onClickListener, boolean matchWidthDivider) {
|
||||||
|
|
||||||
|
@ -461,7 +469,7 @@ public class MenuBuilder {
|
||||||
ll.setOrientation(LinearLayout.HORIZONTAL);
|
ll.setOrientation(LinearLayout.HORIZONTAL);
|
||||||
LinearLayout.LayoutParams llParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
|
LinearLayout.LayoutParams llParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
|
||||||
ll.setLayoutParams(llParams);
|
ll.setLayoutParams(llParams);
|
||||||
ll.setBackgroundResource(resolveAttribute(view.getContext(), android.R.attr.selectableItemBackground));
|
ll.setBackgroundResource(AndroidUtils.resolveAttribute(view.getContext(), android.R.attr.selectableItemBackground));
|
||||||
ll.setOnLongClickListener(new View.OnLongClickListener() {
|
ll.setOnLongClickListener(new View.OnLongClickListener() {
|
||||||
@Override
|
@Override
|
||||||
public boolean onLongClick(View v) {
|
public boolean onLongClick(View v) {
|
||||||
|
@ -538,6 +546,20 @@ public class MenuBuilder {
|
||||||
llText.addView(textViewSecondary);
|
llText.addView(textViewSecondary);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//Button
|
||||||
|
if (!TextUtils.isEmpty(buttonText)) {
|
||||||
|
TextViewEx buttonTextView = new TextViewEx(view.getContext());
|
||||||
|
LinearLayout.LayoutParams buttonTextViewParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
|
||||||
|
buttonTextViewParams.gravity = Gravity.CENTER_VERTICAL;
|
||||||
|
buttonTextViewParams.setMargins(dpToPx(8), 0, dpToPx(8), 0);
|
||||||
|
buttonTextView.setLayoutParams(buttonTextViewParams);
|
||||||
|
buttonTextView.setTypeface(FontCache.getRobotoMedium(view.getContext()));
|
||||||
|
buttonTextView.setAllCaps(true);
|
||||||
|
buttonTextView.setTextColor(ContextCompat.getColor(view.getContext(), !light ? R.color.ctx_menu_controller_button_text_color_dark_n : R.color.ctx_menu_controller_button_text_color_light_n));
|
||||||
|
buttonTextView.setText(buttonText);
|
||||||
|
ll.addView(buttonTextView);
|
||||||
|
}
|
||||||
|
|
||||||
final ImageView iconViewCollapse = new ImageView(view.getContext());
|
final ImageView iconViewCollapse = new ImageView(view.getContext());
|
||||||
if (collapsable && collapsableView != null) {
|
if (collapsable && collapsableView != null) {
|
||||||
// Icon
|
// Icon
|
||||||
|
@ -614,7 +636,7 @@ public class MenuBuilder {
|
||||||
ll.setOrientation(LinearLayout.HORIZONTAL);
|
ll.setOrientation(LinearLayout.HORIZONTAL);
|
||||||
LinearLayout.LayoutParams llParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
|
LinearLayout.LayoutParams llParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
|
||||||
ll.setLayoutParams(llParams);
|
ll.setLayoutParams(llParams);
|
||||||
ll.setBackgroundResource(resolveAttribute(view.getContext(), android.R.attr.selectableItemBackground));
|
ll.setBackgroundResource(AndroidUtils.resolveAttribute(view.getContext(), android.R.attr.selectableItemBackground));
|
||||||
|
|
||||||
// Empty
|
// Empty
|
||||||
LinearLayout llIcon = new LinearLayout(view.getContext());
|
LinearLayout llIcon = new LinearLayout(view.getContext());
|
||||||
|
@ -635,7 +657,7 @@ public class MenuBuilder {
|
||||||
buttonView.setPadding(dpToPx(10f), 0, dpToPx(10f), 0);
|
buttonView.setPadding(dpToPx(10f), 0, dpToPx(10f), 0);
|
||||||
buttonView.setGravity(Gravity.START | Gravity.CENTER_VERTICAL);
|
buttonView.setGravity(Gravity.START | Gravity.CENTER_VERTICAL);
|
||||||
//buttonView.setTextSize(view.getResources().getDimension(resolveAttribute(view.getContext(), R.dimen.default_desc_text_size)));
|
//buttonView.setTextSize(view.getResources().getDimension(resolveAttribute(view.getContext(), R.dimen.default_desc_text_size)));
|
||||||
buttonView.setTextColor(view.getResources().getColor(resolveAttribute(view.getContext(), R.attr.contextMenuButtonColor)));
|
buttonView.setTextColor(view.getResources().getColor(AndroidUtils.resolveAttribute(view.getContext(), R.attr.contextMenuButtonColor)));
|
||||||
buttonView.setText(text);
|
buttonView.setText(text);
|
||||||
|
|
||||||
if (buttonIcon != null) {
|
if (buttonIcon != null) {
|
||||||
|
@ -671,13 +693,17 @@ public class MenuBuilder {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void addPlainMenuItem(int iconId, String text, boolean needLinks, boolean isUrl, OnClickListener onClickListener) {
|
public void addPlainMenuItem(int iconId, String text, boolean needLinks, boolean isUrl, OnClickListener onClickListener) {
|
||||||
plainMenuItems.add(new PlainMenuItem(iconId, text, needLinks, isUrl, false, null, onClickListener));
|
plainMenuItems.add(new PlainMenuItem(iconId, null, text, needLinks, isUrl, false, null, onClickListener));
|
||||||
|
}
|
||||||
|
|
||||||
|
public void addPlainMenuItem(int iconId, String buttonText, String text, boolean needLinks, boolean isUrl, OnClickListener onClickListener) {
|
||||||
|
plainMenuItems.add(new PlainMenuItem(iconId, buttonText, text, needLinks, isUrl, false, null, onClickListener));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void addPlainMenuItem(int iconId, String text, boolean needLinks, boolean isUrl,
|
public void addPlainMenuItem(int iconId, String text, boolean needLinks, boolean isUrl,
|
||||||
boolean collapsable, CollapsableView collapsableView,
|
boolean collapsable, CollapsableView collapsableView,
|
||||||
OnClickListener onClickListener) {
|
OnClickListener onClickListener) {
|
||||||
plainMenuItems.add(new PlainMenuItem(iconId, text, needLinks, isUrl, collapsable, collapsableView, onClickListener));
|
plainMenuItems.add(new PlainMenuItem(iconId, null, text, needLinks, isUrl, collapsable, collapsableView, onClickListener));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void clearPlainMenuItems() {
|
public void clearPlainMenuItems() {
|
||||||
|
@ -699,12 +725,6 @@ public class MenuBuilder {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public int resolveAttribute(Context ctx, int attribute) {
|
|
||||||
TypedValue outValue = new TypedValue();
|
|
||||||
ctx.getTheme().resolveAttribute(attribute, outValue, true);
|
|
||||||
return outValue.resourceId;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int dpToPx(float dp) {
|
public int dpToPx(float dp) {
|
||||||
Resources r = app.getResources();
|
Resources r = app.getResources();
|
||||||
return (int) TypedValue.applyDimension(
|
return (int) TypedValue.applyDimension(
|
||||||
|
@ -714,69 +734,90 @@ public class MenuBuilder {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void buildTransportRouteRow(ViewGroup parent, TransportStopRoute r, OnClickListener listener) {
|
private View buildTransportRowItem(View view, TransportStopRoute route, OnClickListener listener) {
|
||||||
if (!isFirstRow()) {
|
LinearLayout baseView = new LinearLayout(view.getContext());
|
||||||
|
baseView.setOrientation(LinearLayout.HORIZONTAL);
|
||||||
|
LinearLayout.LayoutParams llBaseViewParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
|
||||||
|
baseView.setLayoutParams(llBaseViewParams);
|
||||||
|
baseView.setPadding(dpToPx(16), 0, dpToPx(16), dpToPx(12));
|
||||||
|
baseView.setBackgroundResource(AndroidUtils.resolveAttribute(view.getContext(), android.R.attr.selectableItemBackground));
|
||||||
|
|
||||||
|
TextViewEx transportRect = new TextViewEx(view.getContext());
|
||||||
|
LinearLayout.LayoutParams trParams = new LinearLayout.LayoutParams(dpToPx(32), dpToPx(18));
|
||||||
|
trParams.setMargins(0, dpToPx(16), 0, 0);
|
||||||
|
transportRect.setLayoutParams(trParams);
|
||||||
|
transportRect.setGravity(Gravity.CENTER);
|
||||||
|
transportRect.setAllCaps(true);
|
||||||
|
transportRect.setTypeface(FontCache.getRobotoMedium(view.getContext()));
|
||||||
|
transportRect.setTextColor(Color.WHITE);
|
||||||
|
transportRect.setTextSize(10);
|
||||||
|
|
||||||
|
GradientDrawable shape = new GradientDrawable();
|
||||||
|
shape.setShape(GradientDrawable.RECTANGLE);
|
||||||
|
shape.setCornerRadius(dpToPx(3));
|
||||||
|
shape.setColor(route.getColor(mapActivity.getMyApplication(), !light));
|
||||||
|
|
||||||
|
transportRect.setBackgroundDrawable(shape);
|
||||||
|
transportRect.setText(route.route.getRef());
|
||||||
|
baseView.addView(transportRect);
|
||||||
|
|
||||||
|
LinearLayout infoView = new LinearLayout(view.getContext());
|
||||||
|
infoView.setOrientation(LinearLayout.VERTICAL);
|
||||||
|
LinearLayout.LayoutParams infoViewLayoutParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
|
||||||
|
infoViewLayoutParams.setMargins(dpToPx(16), dpToPx(12), dpToPx(16), 0);
|
||||||
|
infoView.setLayoutParams(infoViewLayoutParams);
|
||||||
|
baseView.addView(infoView);
|
||||||
|
|
||||||
|
TextView titleView = new TextView(view.getContext());
|
||||||
|
LinearLayout.LayoutParams titleParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
|
||||||
|
titleView.setLayoutParams(titleParams);
|
||||||
|
titleView.setTextSize(16);
|
||||||
|
titleView.setTextColor(app.getResources().getColor(light ? R.color.ctx_menu_bottom_view_text_color_light : R.color.ctx_menu_bottom_view_text_color_dark));
|
||||||
|
titleView.setText(route.getDescription(getMapActivity().getMyApplication(), true));
|
||||||
|
infoView.addView(titleView);
|
||||||
|
|
||||||
|
LinearLayout typeView = new LinearLayout(view.getContext());
|
||||||
|
typeView.setOrientation(LinearLayout.HORIZONTAL);
|
||||||
|
LinearLayout.LayoutParams typeViewParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
|
||||||
|
typeViewParams.setMargins(0, dpToPx(8), 0, 0);
|
||||||
|
typeView.setGravity(Gravity.CENTER);
|
||||||
|
typeView.setLayoutParams(typeViewParams);
|
||||||
|
infoView.addView(typeView);
|
||||||
|
|
||||||
|
ImageView typeImageView = new ImageView(view.getContext());
|
||||||
|
LinearLayout.LayoutParams typeImageParams = new LinearLayout.LayoutParams(dpToPx(16), dpToPx(16));
|
||||||
|
typeImageParams.setMargins(dpToPx(4), 0, dpToPx(4), 0);
|
||||||
|
typeImageView.setLayoutParams(typeImageParams);
|
||||||
|
int drawableResId = route.type == null ? R.drawable.ic_action_polygom_dark : route.type.getResourceId();
|
||||||
|
typeImageView.setImageDrawable(getRowIcon(drawableResId));
|
||||||
|
typeView.addView(typeImageView);
|
||||||
|
|
||||||
|
TextView typeTextView = new TextView(view.getContext());
|
||||||
|
LinearLayout.LayoutParams typeTextParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
|
||||||
|
typeTextView.setLayoutParams(typeTextParams);
|
||||||
|
typeTextView.setText(route.getTypeStrRes());
|
||||||
|
typeView.addView(typeTextView);
|
||||||
|
|
||||||
|
baseView.setOnClickListener(listener);
|
||||||
|
|
||||||
|
((ViewGroup) view).addView(baseView);
|
||||||
|
|
||||||
|
return baseView;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void buildTransportRouteRow(ViewGroup parent, TransportStopRoute r, OnClickListener listener, boolean showDivider) {
|
||||||
|
buildTransportRowItem(parent, r, listener);
|
||||||
|
|
||||||
|
if (showDivider) {
|
||||||
buildRowDivider(parent);
|
buildRowDivider(parent);
|
||||||
}
|
}
|
||||||
|
|
||||||
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.ctx_menu_transport_route_layout, parent, false);
|
|
||||||
TextView routeDesc = (TextView) view.findViewById(R.id.route_desc);
|
|
||||||
routeDesc.setText(r.getDescription(getMapActivity().getMyApplication(), true));
|
|
||||||
routeDesc.setTextColor(app.getResources().getColor(light ? R.color.ctx_menu_bottom_view_text_color_light : R.color.ctx_menu_bottom_view_text_color_dark));
|
|
||||||
int drawableResId = r.type == null ? R.drawable.ic_action_polygom_dark : r.type.getResourceId();
|
|
||||||
((ImageView) view.findViewById(R.id.route_type_icon)).setImageDrawable(getRowIcon(drawableResId));
|
|
||||||
((TextView) view.findViewById(R.id.route_ref)).setText(r.route.getRef());
|
|
||||||
view.setOnClickListener(listener);
|
|
||||||
int typeResId;
|
|
||||||
switch (r.type) {
|
|
||||||
case BUS:
|
|
||||||
typeResId = R.string.poi_route_bus_ref;
|
|
||||||
break;
|
|
||||||
case TRAM:
|
|
||||||
typeResId = R.string.poi_route_tram_ref;
|
|
||||||
break;
|
|
||||||
case FERRY:
|
|
||||||
typeResId = R.string.poi_route_ferry_ref;
|
|
||||||
break;
|
|
||||||
case TRAIN:
|
|
||||||
typeResId = R.string.poi_route_train_ref;
|
|
||||||
break;
|
|
||||||
case SHARE_TAXI:
|
|
||||||
typeResId = R.string.poi_route_share_taxi_ref;
|
|
||||||
break;
|
|
||||||
case FUNICULAR:
|
|
||||||
typeResId = R.string.poi_route_funicular_ref;
|
|
||||||
break;
|
|
||||||
case LIGHT_RAIL:
|
|
||||||
typeResId = R.string.poi_route_light_rail_ref;
|
|
||||||
break;
|
|
||||||
case MONORAIL:
|
|
||||||
typeResId = R.string.poi_route_monorail_ref;
|
|
||||||
break;
|
|
||||||
case TROLLEYBUS:
|
|
||||||
typeResId = R.string.poi_route_trolleybus_ref;
|
|
||||||
break;
|
|
||||||
case RAILWAY:
|
|
||||||
typeResId = R.string.poi_route_railway_ref;
|
|
||||||
break;
|
|
||||||
case SUBWAY:
|
|
||||||
typeResId = R.string.poi_route_subway_ref;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
typeResId = R.string.poi_filter_public_transport;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
((TextView) view.findViewById(R.id.route_type_text)).setText(typeResId);
|
|
||||||
|
|
||||||
parent.addView(view);
|
|
||||||
|
|
||||||
rowBuilt();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private CollapsableView getCollapsableTransportStopRoutesView(final Context context, boolean collapsed) {
|
private CollapsableView getCollapsableTransportStopRoutesView(final Context context, boolean collapsed) {
|
||||||
LinearLayout view = (LinearLayout) buildCollapsableContentView(context, collapsed, false);
|
LinearLayout view = (LinearLayout) buildCollapsableContentView(context, collapsed, false);
|
||||||
|
|
||||||
for (final TransportStopRoute r : routes) {
|
for (int i = 0; i < routes.size(); i++) {
|
||||||
|
final TransportStopRoute r = routes.get(i);
|
||||||
View.OnClickListener listener = new View.OnClickListener() {
|
View.OnClickListener listener = new View.OnClickListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onClick(View arg0) {
|
public void onClick(View arg0) {
|
||||||
|
@ -785,12 +826,13 @@ public class MenuBuilder {
|
||||||
r.getDescription(getMapActivity().getMyApplication(), false));
|
r.getDescription(getMapActivity().getMyApplication(), false));
|
||||||
mm.show(latLon, pd, r);
|
mm.show(latLon, pd, r);
|
||||||
TransportStopsLayer stopsLayer = getMapActivity().getMapLayers().getTransportStopsLayer();
|
TransportStopsLayer stopsLayer = getMapActivity().getMapLayers().getTransportStopsLayer();
|
||||||
stopsLayer.setRoute(r.route);
|
stopsLayer.setRoute(r);
|
||||||
int cz = r.calculateZoom(0, getMapActivity().getMapView().getCurrentRotatedTileBox());
|
int cz = r.calculateZoom(0, getMapActivity().getMapView().getCurrentRotatedTileBox());
|
||||||
getMapActivity().changeZoom(cz - getMapActivity().getMapView().getZoom());
|
getMapActivity().changeZoom(cz - getMapActivity().getMapView().getZoom());
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
buildTransportRouteRow(view, r, listener);
|
boolean showDivider = i < routes.size() - 1;
|
||||||
|
buildTransportRouteRow(view, r, listener, showDivider);
|
||||||
}
|
}
|
||||||
|
|
||||||
return new CollapsableView(view, collapsed);
|
return new CollapsableView(view, collapsed);
|
||||||
|
@ -949,16 +991,9 @@ public class MenuBuilder {
|
||||||
int paddingSides = dpToPx(10f);
|
int paddingSides = dpToPx(10f);
|
||||||
button.setPadding(paddingSides, 0, paddingSides, 0);
|
button.setPadding(paddingSides, 0, paddingSides, 0);
|
||||||
if (!selected) {
|
if (!selected) {
|
||||||
ColorStateList buttonColorStateList = new ColorStateList(
|
ColorStateList buttonColorStateList = AndroidUtils.createColorStateList(context, !light,
|
||||||
new int[][] {
|
R.color.ctx_menu_controller_button_text_color_light_n, R.color.ctx_menu_controller_button_text_color_light_p,
|
||||||
new int[]{android.R.attr.state_pressed},
|
R.color.ctx_menu_controller_button_text_color_dark_n, R.color.ctx_menu_controller_button_text_color_dark_p);
|
||||||
new int[]{}
|
|
||||||
},
|
|
||||||
new int[] {
|
|
||||||
context.getResources().getColor(light ? R.color.ctx_menu_controller_button_text_color_light_p : R.color.ctx_menu_controller_button_text_color_dark_p),
|
|
||||||
context.getResources().getColor(light ? R.color.ctx_menu_controller_button_text_color_light_n : R.color.ctx_menu_controller_button_text_color_dark_n)
|
|
||||||
}
|
|
||||||
);
|
|
||||||
button.setTextColor(buttonColorStateList);
|
button.setTextColor(buttonColorStateList);
|
||||||
} else {
|
} else {
|
||||||
button.setTextColor(ContextCompat.getColor(context, light ? R.color.ctx_menu_bottom_view_text_color_light : R.color.ctx_menu_bottom_view_text_color_dark));
|
button.setTextColor(ContextCompat.getColor(context, light ? R.color.ctx_menu_bottom_view_text_color_light : R.color.ctx_menu_bottom_view_text_color_dark));
|
||||||
|
|
|
@ -4,6 +4,7 @@ import android.graphics.drawable.Drawable;
|
||||||
import android.os.AsyncTask;
|
import android.os.AsyncTask;
|
||||||
import android.support.annotation.NonNull;
|
import android.support.annotation.NonNull;
|
||||||
import android.support.v4.content.ContextCompat;
|
import android.support.v4.content.ContextCompat;
|
||||||
|
import android.util.Log;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.View.OnClickListener;
|
import android.view.View.OnClickListener;
|
||||||
import android.widget.LinearLayout;
|
import android.widget.LinearLayout;
|
||||||
|
@ -51,7 +52,7 @@ import net.osmand.plus.mapcontextmenu.controllers.RenderedObjectMenuController;
|
||||||
import net.osmand.plus.mapcontextmenu.controllers.TargetPointMenuController;
|
import net.osmand.plus.mapcontextmenu.controllers.TargetPointMenuController;
|
||||||
import net.osmand.plus.mapcontextmenu.controllers.TransportRouteController;
|
import net.osmand.plus.mapcontextmenu.controllers.TransportRouteController;
|
||||||
import net.osmand.plus.mapcontextmenu.controllers.TransportStopController;
|
import net.osmand.plus.mapcontextmenu.controllers.TransportStopController;
|
||||||
import net.osmand.plus.mapcontextmenu.controllers.TransportStopController.TransportStopRoute;
|
import net.osmand.plus.transport.TransportStopRoute;
|
||||||
import net.osmand.plus.mapcontextmenu.controllers.WptPtMenuController;
|
import net.osmand.plus.mapcontextmenu.controllers.WptPtMenuController;
|
||||||
import net.osmand.plus.mapcontextmenu.other.ShareMenu;
|
import net.osmand.plus.mapcontextmenu.other.ShareMenu;
|
||||||
import net.osmand.plus.mapillary.MapillaryImage;
|
import net.osmand.plus.mapillary.MapillaryImage;
|
||||||
|
@ -225,8 +226,8 @@ public abstract class MenuController extends BaseMenuController {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void addPlainMenuItem(int iconId, String text, boolean needLinks, boolean isUrl, OnClickListener onClickListener) {
|
public void addPlainMenuItem(int iconId, String buttonText, String text, boolean needLinks, boolean isUrl, OnClickListener onClickListener) {
|
||||||
builder.addPlainMenuItem(iconId, text, needLinks, isUrl, onClickListener);
|
builder.addPlainMenuItem(iconId, buttonText, text, needLinks, isUrl, onClickListener);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void clearPlainMenuItems() {
|
public void clearPlainMenuItems() {
|
||||||
|
@ -239,7 +240,7 @@ public abstract class MenuController extends BaseMenuController {
|
||||||
|
|
||||||
protected void addMyLocationToPlainItems(LatLon latLon) {
|
protected void addMyLocationToPlainItems(LatLon latLon) {
|
||||||
OsmandSettings st = ((OsmandApplication) getMapActivity().getApplicationContext()).getSettings();
|
OsmandSettings st = ((OsmandApplication) getMapActivity().getApplicationContext()).getSettings();
|
||||||
addPlainMenuItem(R.drawable.ic_action_get_my_location, PointDescription.getLocationName(getMapActivity(),
|
addPlainMenuItem(R.drawable.ic_action_get_my_location, null, PointDescription.getLocationName(getMapActivity(),
|
||||||
latLon.getLatitude(), latLon.getLongitude(), true).replaceAll("\n", " "), false, false, null);
|
latLon.getLatitude(), latLon.getLongitude(), true).replaceAll("\n", " "), false, false, null);
|
||||||
//if (st.COORDINATES_FORMAT.get() != PointDescription.OLC_FORMAT)
|
//if (st.COORDINATES_FORMAT.get() != PointDescription.OLC_FORMAT)
|
||||||
// addPlainMenuItem(R.drawable.ic_action_get_my_location, PointDescription.getLocationOlcName(
|
// addPlainMenuItem(R.drawable.ic_action_get_my_location, PointDescription.getLocationOlcName(
|
||||||
|
@ -386,15 +387,11 @@ public abstract class MenuController extends BaseMenuController {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean displayAdditionalTypeStrInHours() {
|
public int getRightIconId() {
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getLeftIconId() {
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Drawable getLeftIcon() {
|
public Drawable getRightIcon() {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -402,10 +399,14 @@ public abstract class MenuController extends BaseMenuController {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Drawable getAdditionalLineTypeIcon() {
|
public Drawable getSubtypeIcon() {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean navigateInPedestrianMode() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
public int getFavActionIconId() {
|
public int getFavActionIconId() {
|
||||||
return R.drawable.map_action_fav_dark;
|
return R.drawable.map_action_fav_dark;
|
||||||
}
|
}
|
||||||
|
@ -432,16 +433,29 @@ public abstract class MenuController extends BaseMenuController {
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getAdditionalTypeStr() {
|
public String getSubtypeStr() {
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getTimeStrColor() {
|
public int getAdditionalInfoColor() {
|
||||||
|
if (indexItem != null) {
|
||||||
|
return R.color.icon_color;
|
||||||
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
public OpeningHoursInfo getOpeningHoursInfo() {
|
public String getAdditionalInfoStr() {
|
||||||
return null;
|
if (indexItem != null) {
|
||||||
|
return getMapActivity().getString(R.string.file_size_in_mb, indexItem.getArchiveSizeMB());
|
||||||
|
}
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getAdditionalInfoIconRes() {
|
||||||
|
if (indexItem != null) {
|
||||||
|
return R.drawable.ic_sdcard_16;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getCommonTypeStr() {
|
public String getCommonTypeStr() {
|
||||||
|
@ -531,11 +545,14 @@ public abstract class MenuController extends BaseMenuController {
|
||||||
public abstract class TitleButtonController {
|
public abstract class TitleButtonController {
|
||||||
public String caption = "";
|
public String caption = "";
|
||||||
public int leftIconId = 0;
|
public int leftIconId = 0;
|
||||||
|
public int rightIconId = 0;
|
||||||
public boolean needRightText = false;
|
public boolean needRightText = false;
|
||||||
public String rightTextCaption = "";
|
public String rightTextCaption = "";
|
||||||
public boolean visible = true;
|
public boolean visible = true;
|
||||||
public boolean needColorizeIcon = true;
|
public boolean needColorizeIcon = true;
|
||||||
public Drawable leftIcon;
|
public Drawable leftIcon;
|
||||||
|
public Drawable rightIcon;
|
||||||
|
public boolean enabled = true;
|
||||||
|
|
||||||
public Drawable getLeftIcon() {
|
public Drawable getLeftIcon() {
|
||||||
if (leftIcon != null) {
|
if (leftIcon != null) {
|
||||||
|
@ -543,7 +560,7 @@ public abstract class MenuController extends BaseMenuController {
|
||||||
}
|
}
|
||||||
if (leftIconId != 0) {
|
if (leftIconId != 0) {
|
||||||
if (needColorizeIcon) {
|
if (needColorizeIcon) {
|
||||||
return getIcon(leftIconId, isLight() ? R.color.map_widget_blue : R.color.osmand_orange);
|
return getIcon(leftIconId, getColorRes());
|
||||||
}
|
}
|
||||||
return ContextCompat.getDrawable(getMapActivity(), leftIconId);
|
return ContextCompat.getDrawable(getMapActivity(), leftIconId);
|
||||||
} else {
|
} else {
|
||||||
|
@ -551,6 +568,30 @@ public abstract class MenuController extends BaseMenuController {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Drawable getRightIcon() {
|
||||||
|
if (rightIcon != null) {
|
||||||
|
return rightIcon;
|
||||||
|
}
|
||||||
|
if (rightIconId != 0) {
|
||||||
|
if (needColorizeIcon) {
|
||||||
|
return getIcon(rightIconId, getColorRes());
|
||||||
|
}
|
||||||
|
return ContextCompat.getDrawable(getMapActivity(), rightIconId);
|
||||||
|
} else {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private int getColorRes() {
|
||||||
|
int colorRes;
|
||||||
|
if (enabled) {
|
||||||
|
colorRes = isLight() ? R.color.map_widget_blue : R.color.osmand_orange;
|
||||||
|
} else {
|
||||||
|
colorRes = isLight() ? R.color.ctx_menu_controller_disabled_text_color_light : R.color.ctx_menu_controller_disabled_text_color_dark;
|
||||||
|
}
|
||||||
|
return colorRes;
|
||||||
|
}
|
||||||
|
|
||||||
public abstract void buttonPressed();
|
public abstract void buttonPressed();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -619,7 +660,7 @@ public abstract class MenuController extends BaseMenuController {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void buildMapDownloadButton(final LatLon latLon) {
|
public void buildMapDownloadButtonAndSizeInfo(final LatLon latLon) {
|
||||||
new AsyncTask<Void, Void, BinaryMapDataObject>() {
|
new AsyncTask<Void, Void, BinaryMapDataObject>() {
|
||||||
|
|
||||||
ResourceManager rm;
|
ResourceManager rm;
|
||||||
|
@ -774,6 +815,11 @@ public abstract class MenuController extends BaseMenuController {
|
||||||
public ContextMenuToolbarController(MenuController menuController) {
|
public ContextMenuToolbarController(MenuController menuController) {
|
||||||
super(TopToolbarControllerType.CONTEXT_MENU);
|
super(TopToolbarControllerType.CONTEXT_MENU);
|
||||||
this.menuController = menuController;
|
this.menuController = menuController;
|
||||||
|
setBgIds(R.color.actionbar_light_color, R.color.actionbar_dark_color,
|
||||||
|
R.color.actionbar_light_color, R.color.actionbar_dark_color);
|
||||||
|
setBackBtnIconClrIds(R.color.color_white, R.color.color_white);
|
||||||
|
setCloseBtnIconClrIds(R.color.color_white, R.color.color_white);
|
||||||
|
setTitleTextClrIds(R.color.color_white, R.color.color_white);
|
||||||
}
|
}
|
||||||
|
|
||||||
public MenuController getMenuController() {
|
public MenuController getMenuController() {
|
||||||
|
|
|
@ -11,16 +11,13 @@ import net.osmand.util.Algorithms;
|
||||||
|
|
||||||
public abstract class MenuTitleController {
|
public abstract class MenuTitleController {
|
||||||
|
|
||||||
protected int leftIconId;
|
protected int rightIconId;
|
||||||
protected Drawable leftIcon;
|
protected Drawable rightIcon;
|
||||||
protected String nameStr = "";
|
protected String nameStr = "";
|
||||||
protected String typeStr = "";
|
protected String typeStr = "";
|
||||||
protected String additionalTypeStr = "";
|
|
||||||
protected String commonTypeStr = "";
|
protected String commonTypeStr = "";
|
||||||
protected Drawable secondLineTypeIcon;
|
protected Drawable secondLineTypeIcon;
|
||||||
protected Drawable additionalLineTypeIcon;
|
|
||||||
protected String streetStr = "";
|
protected String streetStr = "";
|
||||||
protected OpeningHoursInfo openingHoursInfo;
|
|
||||||
|
|
||||||
private AddressLookupRequest addressLookupRequest;
|
private AddressLookupRequest addressLookupRequest;
|
||||||
|
|
||||||
|
@ -68,22 +65,18 @@ public abstract class MenuTitleController {
|
||||||
return !addressNotFoundStr.equals(title) && !searchAddressStr.equals(title);
|
return !addressNotFoundStr.equals(title) && !searchAddressStr.equals(title);
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getLeftIconId() {
|
public int getRightIconId() {
|
||||||
return leftIconId;
|
return rightIconId;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Drawable getLeftIcon() {
|
public Drawable getRightIcon() {
|
||||||
return leftIcon;
|
return rightIcon;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Drawable getTypeIcon() {
|
public Drawable getTypeIcon() {
|
||||||
return secondLineTypeIcon;
|
return secondLineTypeIcon;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Drawable getAdditionalLineTypeIcon() {
|
|
||||||
return additionalLineTypeIcon;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getTypeStr() {
|
public String getTypeStr() {
|
||||||
MenuController menuController = getMenuController();
|
MenuController menuController = getMenuController();
|
||||||
if (menuController != null && menuController.needTypeStr()) {
|
if (menuController != null && menuController.needTypeStr()) {
|
||||||
|
@ -93,15 +86,6 @@ public abstract class MenuTitleController {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getAdditionalTypeStr() {
|
|
||||||
MenuController menuController = getMenuController();
|
|
||||||
if (menuController != null) {
|
|
||||||
return additionalTypeStr;
|
|
||||||
} else {
|
|
||||||
return "";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getStreetStr() {
|
public String getStreetStr() {
|
||||||
if (needStreetName()) {
|
if (needStreetName()) {
|
||||||
if (searchingAddress()) {
|
if (searchingAddress()) {
|
||||||
|
@ -114,10 +98,6 @@ public abstract class MenuTitleController {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public OpeningHoursInfo getOpeningHoursInfo() {
|
|
||||||
return openingHoursInfo;
|
|
||||||
}
|
|
||||||
|
|
||||||
protected void initTitle() {
|
protected void initTitle() {
|
||||||
searchAddressStr = PointDescription.getSearchAddressStr(getMapActivity());
|
searchAddressStr = PointDescription.getSearchAddressStr(getMapActivity());
|
||||||
addressNotFoundStr = PointDescription.getAddressNotFoundStr(getMapActivity());
|
addressNotFoundStr = PointDescription.getAddressNotFoundStr(getMapActivity());
|
||||||
|
@ -131,8 +111,6 @@ public abstract class MenuTitleController {
|
||||||
if (needStreetName()) {
|
if (needStreetName()) {
|
||||||
acquireStreetName();
|
acquireStreetName();
|
||||||
}
|
}
|
||||||
|
|
||||||
acquireOpeningHoursInfo();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected boolean needStreetName() {
|
protected boolean needStreetName() {
|
||||||
|
@ -147,16 +125,14 @@ public abstract class MenuTitleController {
|
||||||
protected void acquireIcons() {
|
protected void acquireIcons() {
|
||||||
MenuController menuController = getMenuController();
|
MenuController menuController = getMenuController();
|
||||||
|
|
||||||
leftIconId = 0;
|
rightIconId = 0;
|
||||||
leftIcon = null;
|
rightIcon = null;
|
||||||
secondLineTypeIcon = null;
|
secondLineTypeIcon = null;
|
||||||
additionalLineTypeIcon = null;
|
|
||||||
|
|
||||||
if (menuController != null) {
|
if (menuController != null) {
|
||||||
leftIconId = menuController.getLeftIconId();
|
rightIconId = menuController.getRightIconId();
|
||||||
leftIcon = menuController.getLeftIcon();
|
rightIcon = menuController.getRightIcon();
|
||||||
secondLineTypeIcon = menuController.getSecondLineTypeIcon();
|
secondLineTypeIcon = menuController.getSecondLineTypeIcon();
|
||||||
additionalLineTypeIcon = menuController.getAdditionalLineTypeIcon();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -170,7 +146,6 @@ public abstract class MenuTitleController {
|
||||||
if (menuController != null) {
|
if (menuController != null) {
|
||||||
nameStr = menuController.getNameStr();
|
nameStr = menuController.getNameStr();
|
||||||
typeStr = menuController.getTypeStr();
|
typeStr = menuController.getTypeStr();
|
||||||
additionalTypeStr = menuController.getAdditionalTypeStr();
|
|
||||||
commonTypeStr = menuController.getCommonTypeStr();
|
commonTypeStr = menuController.getCommonTypeStr();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -211,13 +186,6 @@ public abstract class MenuTitleController {
|
||||||
getMapActivity().getMyApplication().getGeocodingLookupService().lookupAddress(addressLookupRequest);
|
getMapActivity().getMyApplication().getGeocodingLookupService().lookupAddress(addressLookupRequest);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void acquireOpeningHoursInfo() {
|
|
||||||
MenuController menuController = getMenuController();
|
|
||||||
if (menuController != null) {
|
|
||||||
openingHoursInfo = menuController.getOpeningHoursInfo();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
protected void onSearchAddressDone() {
|
protected void onSearchAddressDone() {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,8 @@
|
||||||
package net.osmand.plus.mapcontextmenu;
|
package net.osmand.plus.mapcontextmenu;
|
||||||
|
|
||||||
|
import android.content.Context;
|
||||||
|
|
||||||
|
import net.osmand.plus.R;
|
||||||
import net.osmand.util.Algorithms;
|
import net.osmand.util.Algorithms;
|
||||||
|
|
||||||
public class OpeningHoursInfo {
|
public class OpeningHoursInfo {
|
||||||
|
@ -68,12 +71,20 @@ public class OpeningHoursInfo {
|
||||||
this.openingDay = openingDay;
|
this.openingDay = openingDay;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean containsInfo() {
|
public String getInfo(Context context) {
|
||||||
return opened24_7
|
if (isOpened24_7()) {
|
||||||
|| !Algorithms.isEmpty(openingTime)
|
return context.getString(R.string.shared_string_is_open_24_7);
|
||||||
|| !Algorithms.isEmpty(nearToOpeningTime)
|
} else if (!Algorithms.isEmpty(getNearToOpeningTime())) {
|
||||||
|| !Algorithms.isEmpty(closingTime)
|
return context.getString(R.string.will_open_at) + " " + getNearToOpeningTime();
|
||||||
|| !Algorithms.isEmpty(nearToClosingTime)
|
} else if (!Algorithms.isEmpty(getOpeningTime())) {
|
||||||
|| !Algorithms.isEmpty(openingDay);
|
return context.getString(R.string.open_from) + " " + getOpeningTime();
|
||||||
|
} else if (!Algorithms.isEmpty(getNearToClosingTime())) {
|
||||||
|
return context.getString(R.string.will_close_at) + " " + getNearToClosingTime();
|
||||||
|
} else if (!Algorithms.isEmpty(getClosingTime())) {
|
||||||
|
return context.getString(R.string.open_till) + " " + getClosingTime();
|
||||||
|
} else if (!Algorithms.isEmpty(getOpeningDay())) {
|
||||||
|
return context.getString(R.string.will_open_on) + " " + getOpeningDay() + ".";
|
||||||
|
}
|
||||||
|
return "";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
package net.osmand.plus.mapcontextmenu;
|
package net.osmand.plus.mapcontextmenu;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.graphics.drawable.GradientDrawable;
|
||||||
import android.support.annotation.NonNull;
|
import android.support.annotation.NonNull;
|
||||||
import android.support.annotation.Nullable;
|
import android.support.annotation.Nullable;
|
||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
|
@ -9,26 +9,56 @@ import android.view.ViewGroup;
|
||||||
import android.widget.ArrayAdapter;
|
import android.widget.ArrayAdapter;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
|
|
||||||
|
import net.osmand.plus.OsmandApplication;
|
||||||
import net.osmand.plus.R;
|
import net.osmand.plus.R;
|
||||||
import net.osmand.plus.mapcontextmenu.controllers.TransportStopController.TransportStopRoute;
|
import net.osmand.plus.transport.TransportStopRoute;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public class TransportStopRouteAdapter extends ArrayAdapter<TransportStopRoute> {
|
public class TransportStopRouteAdapter extends ArrayAdapter<TransportStopRoute> {
|
||||||
|
|
||||||
public TransportStopRouteAdapter(@NonNull Context context, @NonNull List<TransportStopRoute> objects) {
|
private boolean nightMode;
|
||||||
super(context, 0, objects);
|
private OnClickListener listener;
|
||||||
|
private OsmandApplication app;
|
||||||
|
|
||||||
|
public TransportStopRouteAdapter(@NonNull OsmandApplication application, @NonNull List<TransportStopRoute> objects, boolean nightMode) {
|
||||||
|
super(application, 0, objects);
|
||||||
|
this.nightMode = nightMode;
|
||||||
|
this.app = application;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setListener(OnClickListener listener) {
|
||||||
|
this.listener = listener;
|
||||||
}
|
}
|
||||||
|
|
||||||
@NonNull
|
@NonNull
|
||||||
@Override
|
@Override
|
||||||
public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
|
public View getView(final int position, @Nullable View convertView, @NonNull ViewGroup parent) {
|
||||||
if (convertView == null) {
|
if (convertView == null) {
|
||||||
convertView = LayoutInflater.from(getContext()).inflate(R.layout.transport_stop_route_item, parent, false);
|
convertView = LayoutInflater.from(getContext()).inflate(R.layout.transport_stop_route_item, parent, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
((TextView) convertView.findViewById(R.id.transport_stop_route_text)).setText(getItem(position).route.getRef());
|
TransportStopRoute transportStopRoute = getItem(position);
|
||||||
|
if (transportStopRoute != null) {
|
||||||
|
TextView transportStopRouteTextView = (TextView) convertView.findViewById(R.id.transport_stop_route_text);
|
||||||
|
transportStopRouteTextView.setText(transportStopRoute.route.getRef());
|
||||||
|
GradientDrawable gradientDrawableBg = (GradientDrawable) transportStopRouteTextView.getBackground();
|
||||||
|
gradientDrawableBg.setColor(transportStopRoute.getColor(app, nightMode));
|
||||||
|
}
|
||||||
|
|
||||||
|
convertView.setOnClickListener(new View.OnClickListener() {
|
||||||
|
@Override
|
||||||
|
public void onClick(View view) {
|
||||||
|
if (listener != null) {
|
||||||
|
listener.onClick(position);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
return convertView;
|
return convertView;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public interface OnClickListener {
|
||||||
|
void onClick(int position);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,291 @@
|
||||||
|
package net.osmand.plus.mapcontextmenu;
|
||||||
|
|
||||||
|
import android.app.Dialog;
|
||||||
|
import android.content.Intent;
|
||||||
|
import android.content.res.ColorStateList;
|
||||||
|
import android.graphics.drawable.Drawable;
|
||||||
|
import android.net.Uri;
|
||||||
|
import android.os.Build;
|
||||||
|
import android.os.Bundle;
|
||||||
|
import android.support.annotation.NonNull;
|
||||||
|
import android.support.annotation.Nullable;
|
||||||
|
import android.support.customtabs.CustomTabsIntent;
|
||||||
|
import android.support.design.widget.AppBarLayout;
|
||||||
|
import android.support.design.widget.CoordinatorLayout;
|
||||||
|
import android.support.v4.app.DialogFragment;
|
||||||
|
import android.support.v4.content.ContextCompat;
|
||||||
|
import android.support.v7.app.AppCompatActivity;
|
||||||
|
import android.support.v7.widget.PopupMenu;
|
||||||
|
import android.text.Html;
|
||||||
|
import android.text.Spannable;
|
||||||
|
import android.text.SpannableString;
|
||||||
|
import android.text.TextUtils;
|
||||||
|
import android.text.style.ForegroundColorSpan;
|
||||||
|
import android.text.style.RelativeSizeSpan;
|
||||||
|
import android.view.Gravity;
|
||||||
|
import android.view.LayoutInflater;
|
||||||
|
import android.view.MenuItem;
|
||||||
|
import android.view.View;
|
||||||
|
import android.view.ViewGroup;
|
||||||
|
import android.widget.ImageButton;
|
||||||
|
import android.widget.TextView;
|
||||||
|
|
||||||
|
import net.osmand.AndroidUtils;
|
||||||
|
import net.osmand.data.Amenity;
|
||||||
|
import net.osmand.plus.OsmandApplication;
|
||||||
|
import net.osmand.plus.R;
|
||||||
|
import net.osmand.plus.helpers.FileNameTranslationHelper;
|
||||||
|
import net.osmand.util.Algorithms;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Set;
|
||||||
|
import java.util.TreeSet;
|
||||||
|
|
||||||
|
public class WikipediaDialogFragment extends DialogFragment {
|
||||||
|
|
||||||
|
public static final String TAG = "WikipediaDialogFragment";
|
||||||
|
|
||||||
|
private View mainView;
|
||||||
|
private boolean darkMode;
|
||||||
|
private Amenity amenity;
|
||||||
|
private String lang;
|
||||||
|
|
||||||
|
public void setAmenity(Amenity amenity) {
|
||||||
|
this.amenity = amenity;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setLanguage(String lang) {
|
||||||
|
this.lang = lang;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onCreate(@Nullable Bundle savedInstanceState) {
|
||||||
|
super.onCreate(savedInstanceState);
|
||||||
|
OsmandApplication app = getMyApplication();
|
||||||
|
darkMode = app.getDaynightHelper().isNightMode() || !app.getSettings().isLightContent();
|
||||||
|
int themeId = darkMode ? R.style.OsmandDarkTheme : R.style.OsmandLightTheme;
|
||||||
|
setStyle(STYLE_NO_FRAME, themeId);
|
||||||
|
}
|
||||||
|
|
||||||
|
@NonNull
|
||||||
|
@Override
|
||||||
|
public Dialog onCreateDialog(Bundle savedInstanceState) {
|
||||||
|
Dialog dialog = new Dialog(getContext(), getTheme());
|
||||||
|
if (!getMyApplication().getSettings().DO_NOT_USE_ANIMATIONS.get()) {
|
||||||
|
dialog.getWindow().getAttributes().windowAnimations = R.style.Animations_Alpha;
|
||||||
|
}
|
||||||
|
return dialog;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Nullable
|
||||||
|
@Override
|
||||||
|
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
|
||||||
|
mainView = inflater.inflate(R.layout.wikipedia_dialog_fragment, container, false);
|
||||||
|
|
||||||
|
mainView.setBackgroundColor(ContextCompat.getColor(getContext(), darkMode ? R.color.ctx_menu_bottom_view_bg_dark : R.color.ctx_menu_bottom_view_bg_light));
|
||||||
|
|
||||||
|
AppBarLayout appBarLayout = (AppBarLayout) mainView.findViewById(R.id.app_bar);
|
||||||
|
appBarLayout.setBackgroundColor(ContextCompat.getColor(getContext(), darkMode ? R.color.ctx_menu_buttons_bg_dark: R.color.ctx_menu_buttons_bg_light));
|
||||||
|
|
||||||
|
int toolbarTextColor = ContextCompat.getColor(getContext(), R.color.dashboard_subheader_text_light);
|
||||||
|
|
||||||
|
ImageButton backButton = (ImageButton) mainView.findViewById(R.id.back_button);
|
||||||
|
backButton.setImageDrawable(getMyApplication().getIconsCache().getPaintedIcon(R.drawable.ic_arrow_back, toolbarTextColor));
|
||||||
|
backButton.setOnClickListener(new View.OnClickListener() {
|
||||||
|
@Override
|
||||||
|
public void onClick(View view) {
|
||||||
|
dismiss();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
TextView titleTextView = (TextView) mainView.findViewById(R.id.title_text_view);
|
||||||
|
titleTextView.setTextColor(toolbarTextColor);
|
||||||
|
|
||||||
|
ColorStateList buttonColorStateList = AndroidUtils.createColorStateList(getContext(), darkMode,
|
||||||
|
R.color.ctx_menu_controller_button_text_color_light_n, R.color.ctx_menu_controller_button_text_color_light_p,
|
||||||
|
R.color.ctx_menu_controller_button_text_color_dark_n, R.color.ctx_menu_controller_button_text_color_dark_p);
|
||||||
|
|
||||||
|
final TextView readFullArticleButton = (TextView) mainView.findViewById(R.id.read_full_article);
|
||||||
|
CoordinatorLayout.LayoutParams params = (CoordinatorLayout.LayoutParams) readFullArticleButton.getLayoutParams();
|
||||||
|
params.setBehavior(new CoordinatorLayout.Behavior() {
|
||||||
|
@Override
|
||||||
|
public boolean layoutDependsOn(CoordinatorLayout parent, View child, View dependency) {
|
||||||
|
return dependency instanceof AppBarLayout;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean onDependentViewChanged(CoordinatorLayout parent, View child, View dependency) {
|
||||||
|
if (dependency instanceof AppBarLayout) {
|
||||||
|
int readFullArticleButtonHeight = child.getMeasuredHeight();
|
||||||
|
if (readFullArticleButtonHeight != 0) {
|
||||||
|
CoordinatorLayout.LayoutParams lp = (CoordinatorLayout.LayoutParams) child.getLayoutParams();
|
||||||
|
int viewBottomMargin = lp.bottomMargin;
|
||||||
|
int distanceToScroll = child.getHeight() + viewBottomMargin;
|
||||||
|
float ratio = dependency.getY() / readFullArticleButtonHeight;
|
||||||
|
child.setTranslationY(-distanceToScroll * ratio);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
readFullArticleButton.setLayoutParams(params);
|
||||||
|
readFullArticleButton.setBackgroundResource(darkMode ? R.drawable.bt_round_long_night : R.drawable.bt_round_long_day);
|
||||||
|
readFullArticleButton.setTextColor(buttonColorStateList);
|
||||||
|
int paddingLeft = (int) getResources().getDimension(R.dimen.wikipedia_button_left_padding);
|
||||||
|
int paddingRight = (int) getResources().getDimension(R.dimen.dialog_content_margin);
|
||||||
|
readFullArticleButton.setPadding(paddingLeft, 0, paddingRight, 0);
|
||||||
|
readFullArticleButton.setCompoundDrawablesWithIntrinsicBounds(getIcon(R.drawable.ic_world_globe_dark), null, null, null);
|
||||||
|
readFullArticleButton.setCompoundDrawablePadding((int) getResources().getDimension(R.dimen.content_padding_small));
|
||||||
|
|
||||||
|
final TextView selectLanguageTextView = mainView.findViewById(R.id.select_language_text_view);
|
||||||
|
selectLanguageTextView.setTextColor(buttonColorStateList);
|
||||||
|
selectLanguageTextView.setCompoundDrawablesWithIntrinsicBounds(getIcon(R.drawable.ic_action_map_language), null, null, null);
|
||||||
|
selectLanguageTextView.setCompoundDrawablePadding((int) getResources().getDimension(R.dimen.context_menu_padding_margin_small));
|
||||||
|
selectLanguageTextView.setBackgroundResource(darkMode ? R.drawable.wikipedia_select_lang_bg_dark : R.drawable.wikipedia_select_lang_bg_light);
|
||||||
|
|
||||||
|
return mainView;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
|
||||||
|
populateWiki();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onDestroyView() {
|
||||||
|
Dialog dialog = getDialog();
|
||||||
|
if (dialog != null) {
|
||||||
|
dialog.setDismissMessage(null);
|
||||||
|
}
|
||||||
|
super.onDestroyView();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void populateWiki() {
|
||||||
|
if (amenity != null) {
|
||||||
|
String preferredLanguage = lang;
|
||||||
|
if (TextUtils.isEmpty(preferredLanguage)) {
|
||||||
|
preferredLanguage = getMyApplication().getLanguage();
|
||||||
|
}
|
||||||
|
|
||||||
|
final String title = TextUtils.isEmpty(preferredLanguage) ? amenity.getName() : amenity.getName(lang);
|
||||||
|
((TextView) mainView.findViewById(R.id.title_text_view)).setText(title);
|
||||||
|
|
||||||
|
String lng = amenity.getContentLanguage("content", preferredLanguage, "en");
|
||||||
|
if (Algorithms.isEmpty(lng)) {
|
||||||
|
lng = "en";
|
||||||
|
}
|
||||||
|
|
||||||
|
final String langSelected = lng;
|
||||||
|
|
||||||
|
mainView.findViewById(R.id.read_full_article).setOnClickListener(new View.OnClickListener() {
|
||||||
|
@Override
|
||||||
|
public void onClick(View view) {
|
||||||
|
String article = "https://" + langSelected.toLowerCase() + ".wikipedia.org/wiki/" + title.replace(' ', '_');
|
||||||
|
showFullArticle(Uri.parse(article));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
final TextView selectLanguageTextView = mainView.findViewById(R.id.select_language_text_view);
|
||||||
|
selectLanguageTextView.setText(langSelected);
|
||||||
|
selectLanguageTextView.setOnClickListener(new View.OnClickListener() {
|
||||||
|
@Override
|
||||||
|
public void onClick(View view) {
|
||||||
|
showPopupLangMenu(selectLanguageTextView, langSelected);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
String content = amenity.getDescription(langSelected);
|
||||||
|
|
||||||
|
TextView articleTextView = (TextView) mainView.findViewById(R.id.content);
|
||||||
|
Spannable spannableContent = new SpannableString(Html.fromHtml(content));
|
||||||
|
int length = spannableContent.length();
|
||||||
|
spannableContent.setSpan(new RelativeSizeSpan(1.2f), 0, length, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
|
||||||
|
int contentTextColor = ContextCompat.getColor(getContext(), darkMode ? R.color.ctx_menu_bottom_view_text_color_dark : R.color.ctx_menu_bottom_view_text_color_light);
|
||||||
|
spannableContent.setSpan(new ForegroundColorSpan(contentTextColor), 0, length, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
|
||||||
|
articleTextView.setText(spannableContent);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void showFullArticle(Uri uri) {
|
||||||
|
if (Build.VERSION.SDK_INT > Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
|
||||||
|
CustomTabsIntent customTabsIntent = new CustomTabsIntent.Builder()
|
||||||
|
.setToolbarColor(ContextCompat.getColor(getContext(), darkMode ? R.color.actionbar_dark_color : R.color.actionbar_light_color))
|
||||||
|
.build();
|
||||||
|
customTabsIntent.launchUrl(getContext(), uri);
|
||||||
|
} else {
|
||||||
|
Intent i = new Intent(Intent.ACTION_VIEW);
|
||||||
|
i.setData(uri);
|
||||||
|
startActivity(i);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void showPopupLangMenu(View view, final String langSelected) {
|
||||||
|
final PopupMenu optionsMenu = new PopupMenu(getContext(), view, Gravity.RIGHT);
|
||||||
|
Set<String> namesSet = new TreeSet<>();
|
||||||
|
namesSet.addAll(amenity.getNames("content", "en"));
|
||||||
|
namesSet.addAll(amenity.getNames("description", "en"));
|
||||||
|
|
||||||
|
Map<String, String> names = new HashMap<>();
|
||||||
|
for (String n : namesSet) {
|
||||||
|
names.put(n, FileNameTranslationHelper.getVoiceName(getContext(), n));
|
||||||
|
}
|
||||||
|
String selectedLangName = names.get(langSelected);
|
||||||
|
if (selectedLangName != null) {
|
||||||
|
names.remove(langSelected);
|
||||||
|
}
|
||||||
|
Map<String, String> sortedNames = AndroidUtils.sortByValue(names);
|
||||||
|
|
||||||
|
if (selectedLangName != null) {
|
||||||
|
MenuItem item = optionsMenu.getMenu().add(selectedLangName);
|
||||||
|
item.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
|
||||||
|
@Override
|
||||||
|
public boolean onMenuItemClick(MenuItem item) {
|
||||||
|
setLanguage(langSelected);
|
||||||
|
populateWiki();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
for (final Map.Entry<String, String> e : sortedNames.entrySet()) {
|
||||||
|
MenuItem item = optionsMenu.getMenu().add(e.getValue());
|
||||||
|
item.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
|
||||||
|
@Override
|
||||||
|
public boolean onMenuItemClick(MenuItem item) {
|
||||||
|
setLanguage(e.getKey());
|
||||||
|
populateWiki();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
optionsMenu.show();
|
||||||
|
}
|
||||||
|
|
||||||
|
private Drawable getIcon(int resId) {
|
||||||
|
int colorId = darkMode ? R.color.ctx_menu_controller_button_text_color_dark_n : R.color.ctx_menu_controller_button_text_color_light_n;
|
||||||
|
return getMyApplication().getIconsCache().getIcon(resId, colorId);
|
||||||
|
}
|
||||||
|
|
||||||
|
private OsmandApplication getMyApplication() {
|
||||||
|
return (OsmandApplication) getActivity().getApplication();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean showInstance(AppCompatActivity activity, Amenity amenity) {
|
||||||
|
try {
|
||||||
|
if (!amenity.getType().isWiki()) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
OsmandApplication app = (OsmandApplication) activity.getApplication();
|
||||||
|
String lang = app.getSettings().MAP_PREFERRED_LOCALE.get();
|
||||||
|
|
||||||
|
WikipediaDialogFragment wikipediaDialogFragment = new WikipediaDialogFragment();
|
||||||
|
wikipediaDialogFragment.setAmenity(amenity);
|
||||||
|
wikipediaDialogFragment.setLanguage(lang);
|
||||||
|
wikipediaDialogFragment.setRetainInstance(true);
|
||||||
|
wikipediaDialogFragment.show(activity.getSupportFragmentManager(), TAG);
|
||||||
|
return true;
|
||||||
|
} catch (RuntimeException e) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -19,6 +19,7 @@ import android.widget.ImageView;
|
||||||
import android.widget.LinearLayout;
|
import android.widget.LinearLayout;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
|
|
||||||
|
import net.osmand.AndroidUtils;
|
||||||
import net.osmand.data.Amenity;
|
import net.osmand.data.Amenity;
|
||||||
import net.osmand.data.PointDescription;
|
import net.osmand.data.PointDescription;
|
||||||
import net.osmand.osm.AbstractPoiType;
|
import net.osmand.osm.AbstractPoiType;
|
||||||
|
@ -31,6 +32,7 @@ import net.osmand.plus.R;
|
||||||
import net.osmand.plus.activities.MapActivity;
|
import net.osmand.plus.activities.MapActivity;
|
||||||
import net.osmand.plus.helpers.FontCache;
|
import net.osmand.plus.helpers.FontCache;
|
||||||
import net.osmand.plus.mapcontextmenu.MenuBuilder;
|
import net.osmand.plus.mapcontextmenu.MenuBuilder;
|
||||||
|
import net.osmand.plus.mapcontextmenu.WikipediaDialogFragment;
|
||||||
import net.osmand.plus.osmedit.OsmEditingPlugin;
|
import net.osmand.plus.osmedit.OsmEditingPlugin;
|
||||||
import net.osmand.plus.views.POIMapLayer;
|
import net.osmand.plus.views.POIMapLayer;
|
||||||
import net.osmand.plus.widgets.TextViewEx;
|
import net.osmand.plus.widgets.TextViewEx;
|
||||||
|
@ -92,7 +94,7 @@ public class AmenityMenuBuilder extends MenuBuilder {
|
||||||
ll.setOrientation(LinearLayout.HORIZONTAL);
|
ll.setOrientation(LinearLayout.HORIZONTAL);
|
||||||
LinearLayout.LayoutParams llParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
|
LinearLayout.LayoutParams llParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
|
||||||
ll.setLayoutParams(llParams);
|
ll.setLayoutParams(llParams);
|
||||||
ll.setBackgroundResource(resolveAttribute(view.getContext(), android.R.attr.selectableItemBackground));
|
ll.setBackgroundResource(AndroidUtils.resolveAttribute(view.getContext(), android.R.attr.selectableItemBackground));
|
||||||
ll.setOnLongClickListener(new View.OnLongClickListener() {
|
ll.setOnLongClickListener(new View.OnLongClickListener() {
|
||||||
@Override
|
@Override
|
||||||
public boolean onLongClick(View v) {
|
public boolean onLongClick(View v) {
|
||||||
|
@ -131,7 +133,7 @@ public class AmenityMenuBuilder extends MenuBuilder {
|
||||||
llTextParams.setMargins(icon == null ? dpToPx(16f) : 0, collapsable ? dpToPx(13f) : dpToPx(8f), 0, collapsable ? dpToPx(13f) : dpToPx(8f));
|
llTextParams.setMargins(icon == null ? dpToPx(16f) : 0, collapsable ? dpToPx(13f) : dpToPx(8f), 0, collapsable ? dpToPx(13f) : dpToPx(8f));
|
||||||
textView.setLayoutParams(llTextParams);
|
textView.setLayoutParams(llTextParams);
|
||||||
textView.setTextSize(16);
|
textView.setTextSize(16);
|
||||||
textView.setTextColor(app.getResources().getColor(light ? R.color.ctx_menu_info_text_light : R.color.ctx_menu_info_text_dark));
|
textView.setTextColor(app.getResources().getColor(light ? R.color.ctx_menu_bottom_view_text_color_light : R.color.ctx_menu_bottom_view_text_color_dark));
|
||||||
|
|
||||||
boolean textDefined = false;
|
boolean textDefined = false;
|
||||||
if (isPhoneNumber || isUrl) {
|
if (isPhoneNumber || isUrl) {
|
||||||
|
@ -217,16 +219,9 @@ public class AmenityMenuBuilder extends MenuBuilder {
|
||||||
button.setTextSize(14);
|
button.setTextSize(14);
|
||||||
int paddingSides = dpToPx(10f);
|
int paddingSides = dpToPx(10f);
|
||||||
button.setPadding(paddingSides, 0, paddingSides, 0);
|
button.setPadding(paddingSides, 0, paddingSides, 0);
|
||||||
ColorStateList buttonColorStateList = new ColorStateList(
|
ColorStateList buttonColorStateList = AndroidUtils.createColorStateList(view.getContext(), !light,
|
||||||
new int[][] {
|
R.color.ctx_menu_controller_button_text_color_light_n, R.color.ctx_menu_controller_button_text_color_light_p,
|
||||||
new int[]{android.R.attr.state_pressed},
|
R.color.ctx_menu_controller_button_text_color_dark_n, R.color.ctx_menu_controller_button_text_color_dark_p);
|
||||||
new int[]{}
|
|
||||||
},
|
|
||||||
new int[] {
|
|
||||||
view.getResources().getColor(light ? R.color.ctx_menu_controller_button_text_color_light_p : R.color.ctx_menu_controller_button_text_color_dark_p),
|
|
||||||
view.getResources().getColor(light ? R.color.ctx_menu_controller_button_text_color_light_n : R.color.ctx_menu_controller_button_text_color_dark_n)
|
|
||||||
}
|
|
||||||
);
|
|
||||||
button.setTextColor(buttonColorStateList);
|
button.setTextColor(buttonColorStateList);
|
||||||
button.setGravity(Gravity.LEFT | Gravity.CENTER_VERTICAL);
|
button.setGravity(Gravity.LEFT | Gravity.CENTER_VERTICAL);
|
||||||
button.setSingleLine(true);
|
button.setSingleLine(true);
|
||||||
|
@ -234,12 +229,12 @@ public class AmenityMenuBuilder extends MenuBuilder {
|
||||||
button.setOnClickListener(new View.OnClickListener() {
|
button.setOnClickListener(new View.OnClickListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onClick(View view) {
|
public void onClick(View view) {
|
||||||
POIMapLayer.showWikipediaDialog(view.getContext(), app, amenity);
|
WikipediaDialogFragment.showInstance(mapActivity, amenity);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
button.setAllCaps(true);
|
button.setAllCaps(true);
|
||||||
button.setText(R.string.context_menu_read_full_article);
|
button.setText(R.string.context_menu_read_full_article);
|
||||||
Drawable compoundDrawable = app.getIconsCache().getIcon(R.drawable.ic_action_note_dark, light ? R.color.ctx_menu_controller_button_text_color_light_n : R.color.ctx_menu_controller_button_text_color_dark_n);
|
Drawable compoundDrawable = app.getIconsCache().getIcon(R.drawable.ic_action_read_text, light ? R.color.ctx_menu_controller_button_text_color_light_n : R.color.ctx_menu_controller_button_text_color_dark_n);
|
||||||
button.setCompoundDrawablesWithIntrinsicBounds(compoundDrawable, null, null, null);
|
button.setCompoundDrawablesWithIntrinsicBounds(compoundDrawable, null, null, null);
|
||||||
button.setCompoundDrawablePadding(dpToPx(8f));
|
button.setCompoundDrawablePadding(dpToPx(8f));
|
||||||
llText.addView(button);
|
llText.addView(button);
|
||||||
|
@ -284,7 +279,7 @@ public class AmenityMenuBuilder extends MenuBuilder {
|
||||||
ll.setOnClickListener(new View.OnClickListener() {
|
ll.setOnClickListener(new View.OnClickListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onClick(View v) {
|
public void onClick(View v) {
|
||||||
POIMapLayer.showWikipediaDialog(view.getContext(), app, amenity);
|
WikipediaDialogFragment.showInstance(mapActivity, amenity);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
} else if (isText && text.length() > 200) {
|
} else if (isText && text.length() > 200) {
|
||||||
|
@ -516,10 +511,10 @@ public class AmenityMenuBuilder extends MenuBuilder {
|
||||||
} else {
|
} else {
|
||||||
link = "https://www.openstreetmap.org/way/";
|
link = "https://www.openstreetmap.org/way/";
|
||||||
}
|
}
|
||||||
buildRow(view, R.drawable.ic_action_info_dark, link + (amenity.getId() >> 1),
|
buildRow(view, R.drawable.ic_action_info_dark, null, link + (amenity.getId() >> 1),
|
||||||
0, false, null, true, 0, true, null, false);
|
0, false, null, true, 0, true, null, false);
|
||||||
}
|
}
|
||||||
buildRow(view, R.drawable.ic_action_get_my_location, PointDescription.getLocationName(app,
|
buildRow(view, R.drawable.ic_action_get_my_location, null, PointDescription.getLocationName(app,
|
||||||
amenity.getLocation().getLatitude(), amenity.getLocation().getLongitude(), true)
|
amenity.getLocation().getLatitude(), amenity.getLocation().getLongitude(), true)
|
||||||
.replaceAll("\n", " "), 0, false, null, false, 0, false, null, false);
|
.replaceAll("\n", " "), 0, false, null, false, 0, false, null, false);
|
||||||
//if (st.COORDINATES_FORMAT.get() != PointDescription.OLC_FORMAT)
|
//if (st.COORDINATES_FORMAT.get() != PointDescription.OLC_FORMAT)
|
||||||
|
|
|
@ -78,7 +78,7 @@ public class FavouritePointMenuBuilder extends MenuBuilder {
|
||||||
int disabledColor = light ? R.color.secondary_text_light : R.color.secondary_text_dark;
|
int disabledColor = light ? R.color.secondary_text_light : R.color.secondary_text_dark;
|
||||||
color = favoriteGroup.visible ? (color | 0xff000000) : view.getResources().getColor(disabledColor);
|
color = favoriteGroup.visible ? (color | 0xff000000) : view.getResources().getColor(disabledColor);
|
||||||
String name = view.getContext().getString(R.string.context_menu_points_of_group);
|
String name = view.getContext().getString(R.string.context_menu_points_of_group);
|
||||||
buildRow(view, app.getIconsCache().getPaintedIcon(R.drawable.ic_action_folder, color), name, 0, null,
|
buildRow(view, app.getIconsCache().getPaintedIcon(R.drawable.ic_action_folder, color), null, name, 0, null,
|
||||||
true, getCollapsableFavouritesView(view.getContext(), true, favoriteGroup, fav),
|
true, getCollapsableFavouritesView(view.getContext(), true, favoriteGroup, fav),
|
||||||
false, 0, false, null, false);
|
false, 0, false, null, false);
|
||||||
}
|
}
|
||||||
|
|
|
@ -34,7 +34,7 @@ public class GpxItemMenuBuilder extends MenuBuilder {
|
||||||
String description = GpxUiHelper.getDescription(app, item.analysis, false);
|
String description = GpxUiHelper.getDescription(app, item.analysis, false);
|
||||||
String[] lines = description.split("\n");
|
String[] lines = description.split("\n");
|
||||||
for (String line : lines) {
|
for (String line : lines) {
|
||||||
buildRow(view, R.drawable.ic_action_info_dark, line, 0, false, null, false, 0, false, null, false);
|
buildRow(view, R.drawable.ic_action_info_dark, null, line, 0, false, null, false, 0, false, null, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -44,23 +44,23 @@ public class WptPtMenuBuilder extends MenuBuilder {
|
||||||
DateFormat timeFormat = android.text.format.DateFormat.getTimeFormat(view.getContext());
|
DateFormat timeFormat = android.text.format.DateFormat.getTimeFormat(view.getContext());
|
||||||
Date date = new Date(wpt.time);
|
Date date = new Date(wpt.time);
|
||||||
buildRow(view, R.drawable.ic_action_data,
|
buildRow(view, R.drawable.ic_action_data,
|
||||||
dateFormat.format(date) + " — " + timeFormat.format(date), 0, false, null, false, 0, false, null, false);
|
null, dateFormat.format(date) + " — " + timeFormat.format(date), 0, false, null, false, 0, false, null, false);
|
||||||
}
|
}
|
||||||
if (wpt.speed > 0) {
|
if (wpt.speed > 0) {
|
||||||
buildRow(view, R.drawable.ic_action_speed,
|
buildRow(view, R.drawable.ic_action_speed,
|
||||||
OsmAndFormatter.getFormattedSpeed((float)wpt.speed, app), 0, false, null, false, 0, false, null, false);
|
null, OsmAndFormatter.getFormattedSpeed((float)wpt.speed, app), 0, false, null, false, 0, false, null, false);
|
||||||
}
|
}
|
||||||
if (!Double.isNaN(wpt.ele)) {
|
if (!Double.isNaN(wpt.ele)) {
|
||||||
buildRow(view, R.drawable.ic_action_altitude,
|
buildRow(view, R.drawable.ic_action_altitude,
|
||||||
OsmAndFormatter.getFormattedDistance((float) wpt.ele, app), 0, false, null, false, 0, false, null, false);
|
null, OsmAndFormatter.getFormattedDistance((float) wpt.ele, app), 0, false, null, false, 0, false, null, false);
|
||||||
}
|
}
|
||||||
if (!Double.isNaN(wpt.hdop)) {
|
if (!Double.isNaN(wpt.hdop)) {
|
||||||
buildRow(view, R.drawable.ic_action_gps_info,
|
buildRow(view, R.drawable.ic_action_gps_info,
|
||||||
Algorithms.capitalizeFirstLetterAndLowercase(app.getString(R.string.plugin_distance_point_hdop)) + ": " + (int)wpt.hdop, 0,
|
null, Algorithms.capitalizeFirstLetterAndLowercase(app.getString(R.string.plugin_distance_point_hdop)) + ": " + (int)wpt.hdop, 0,
|
||||||
false, null, false, 0, false, null, false);
|
false, null, false, 0, false, null, false);
|
||||||
}
|
}
|
||||||
if (!Algorithms.isEmpty(wpt.desc)) {
|
if (!Algorithms.isEmpty(wpt.desc)) {
|
||||||
final View row = buildRow(view, R.drawable.ic_action_note_dark, wpt.desc, 0, false, null, true, 10, false, null, false);
|
final View row = buildRow(view, R.drawable.ic_action_note_dark, null, wpt.desc, 0, false, null, true, 10, false, null, false);
|
||||||
row.setOnClickListener(new View.OnClickListener() {
|
row.setOnClickListener(new View.OnClickListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onClick(View v) {
|
public void onClick(View v) {
|
||||||
|
@ -70,7 +70,7 @@ public class WptPtMenuBuilder extends MenuBuilder {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
if (!Algorithms.isEmpty(wpt.comment)) {
|
if (!Algorithms.isEmpty(wpt.comment)) {
|
||||||
final View rowc = buildRow(view, R.drawable.ic_action_note_dark, wpt.comment, 0,
|
final View rowc = buildRow(view, R.drawable.ic_action_note_dark, null, wpt.comment, 0,
|
||||||
false, null, true, 10, false, null, false);
|
false, null, true, 10, false, null, false);
|
||||||
rowc.setOnClickListener(new View.OnClickListener() {
|
rowc.setOnClickListener(new View.OnClickListener() {
|
||||||
@Override
|
@Override
|
||||||
|
@ -96,7 +96,7 @@ public class WptPtMenuBuilder extends MenuBuilder {
|
||||||
File file = new File(gpx.path);
|
File file = new File(gpx.path);
|
||||||
String gpxName = file.getName().replace(".gpx", "").replace("/", " ").replace("_", " ");
|
String gpxName = file.getName().replace(".gpx", "").replace("/", " ").replace("_", " ");
|
||||||
int color = getPointColor(wpt, getFileColor(selectedGpxFile));
|
int color = getPointColor(wpt, getFileColor(selectedGpxFile));
|
||||||
buildRow(view, app.getIconsCache().getPaintedIcon(R.drawable.ic_type_waypoints_group, color), title, 0, gpxName,
|
buildRow(view, app.getIconsCache().getPaintedIcon(R.drawable.ic_type_waypoints_group, color), null, title, 0, gpxName,
|
||||||
true, getCollapsableWaypointsView(view.getContext(), true, gpx, wpt),
|
true, getCollapsableWaypointsView(view.getContext(), true, gpx, wpt),
|
||||||
false, 0, false, null, false);
|
false, 0, false, null, false);
|
||||||
}
|
}
|
||||||
|
|
|
@ -49,7 +49,7 @@ public class AMapPointMenuController extends MenuController {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Drawable getLeftIcon() {
|
public Drawable getRightIcon() {
|
||||||
return getIcon(R.drawable.ic_action_get_my_location);
|
return getIcon(R.drawable.ic_action_get_my_location);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,5 @@
|
||||||
package net.osmand.plus.mapcontextmenu.controllers;
|
package net.osmand.plus.mapcontextmenu.controllers;
|
||||||
|
|
||||||
import android.view.View;
|
|
||||||
|
|
||||||
import net.osmand.data.Amenity;
|
import net.osmand.data.Amenity;
|
||||||
import net.osmand.data.LatLon;
|
import net.osmand.data.LatLon;
|
||||||
import net.osmand.data.PointDescription;
|
import net.osmand.data.PointDescription;
|
||||||
|
@ -14,16 +12,15 @@ import net.osmand.osm.PoiType;
|
||||||
import net.osmand.plus.MapMarkersHelper.MapMarker;
|
import net.osmand.plus.MapMarkersHelper.MapMarker;
|
||||||
import net.osmand.plus.R;
|
import net.osmand.plus.R;
|
||||||
import net.osmand.plus.activities.MapActivity;
|
import net.osmand.plus.activities.MapActivity;
|
||||||
import net.osmand.plus.mapcontextmenu.MapContextMenu;
|
|
||||||
import net.osmand.plus.mapcontextmenu.MenuBuilder;
|
import net.osmand.plus.mapcontextmenu.MenuBuilder;
|
||||||
import net.osmand.plus.mapcontextmenu.MenuController;
|
import net.osmand.plus.mapcontextmenu.MenuController;
|
||||||
import net.osmand.plus.mapcontextmenu.OpeningHoursInfo;
|
import net.osmand.plus.mapcontextmenu.OpeningHoursInfo;
|
||||||
|
import net.osmand.plus.mapcontextmenu.WikipediaDialogFragment;
|
||||||
import net.osmand.plus.mapcontextmenu.builders.AmenityMenuBuilder;
|
import net.osmand.plus.mapcontextmenu.builders.AmenityMenuBuilder;
|
||||||
import net.osmand.plus.mapcontextmenu.controllers.TransportStopController.TransportStopRoute;
|
import net.osmand.plus.transport.TransportStopRoute;
|
||||||
import net.osmand.plus.render.RenderingIcons;
|
import net.osmand.plus.render.RenderingIcons;
|
||||||
import net.osmand.plus.resources.TransportIndexRepository;
|
import net.osmand.plus.resources.TransportIndexRepository;
|
||||||
import net.osmand.plus.views.POIMapLayer;
|
import net.osmand.plus.transport.TransportStopType;
|
||||||
import net.osmand.plus.views.TransportStopsLayer;
|
|
||||||
import net.osmand.util.Algorithms;
|
import net.osmand.util.Algorithms;
|
||||||
import net.osmand.util.MapUtils;
|
import net.osmand.util.MapUtils;
|
||||||
import net.osmand.util.OpeningHoursParser;
|
import net.osmand.util.OpeningHoursParser;
|
||||||
|
@ -39,6 +36,7 @@ public class AmenityMenuController extends MenuController {
|
||||||
|
|
||||||
private Amenity amenity;
|
private Amenity amenity;
|
||||||
private List<TransportStopRoute> routes = new ArrayList<>();
|
private List<TransportStopRoute> routes = new ArrayList<>();
|
||||||
|
private OpeningHoursInfo openingHoursInfo;
|
||||||
|
|
||||||
private MapMarker marker;
|
private MapMarker marker;
|
||||||
|
|
||||||
|
@ -71,12 +69,14 @@ public class AmenityMenuController extends MenuController {
|
||||||
leftTitleButtonController = new TitleButtonController() {
|
leftTitleButtonController = new TitleButtonController() {
|
||||||
@Override
|
@Override
|
||||||
public void buttonPressed() {
|
public void buttonPressed() {
|
||||||
POIMapLayer.showWikipediaDialog(mapActivity, mapActivity.getMyApplication(), amenity);
|
WikipediaDialogFragment.showInstance(mapActivity, amenity);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
leftTitleButtonController.caption = getMapActivity().getString(R.string.context_menu_read_article);
|
leftTitleButtonController.caption = getMapActivity().getString(R.string.context_menu_read_article);
|
||||||
leftTitleButtonController.leftIcon = getIcon(R.drawable.ic_action_note_dark, isLight() ? R.color.ctx_menu_controller_button_text_color_light_n : R.color.ctx_menu_controller_button_text_color_dark_n);
|
leftTitleButtonController.leftIcon = getIcon(R.drawable.ic_action_read_text, isLight() ? R.color.ctx_menu_controller_button_text_color_light_n : R.color.ctx_menu_controller_button_text_color_dark_n);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
openingHoursInfo = processOpeningHours(amenity);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -108,11 +108,11 @@ public class AmenityMenuController extends MenuController {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getLeftIconId() {
|
public int getRightIconId() {
|
||||||
return getLeftIconId(amenity);
|
return getRightIconId(amenity);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static int getLeftIconId(Amenity amenity) {
|
private static int getRightIconId(Amenity amenity) {
|
||||||
String id = null;
|
String id = null;
|
||||||
PoiType st = amenity.getType().getPoiTypeByKeyName(amenity.getSubType());
|
PoiType st = amenity.getType().getPoiTypeByKeyName(amenity.getSubType());
|
||||||
if (st != null) {
|
if (st != null) {
|
||||||
|
@ -146,8 +146,27 @@ public class AmenityMenuController extends MenuController {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public OpeningHoursInfo getOpeningHoursInfo() {
|
public int getAdditionalInfoColor() {
|
||||||
return processOpeningHours(amenity);
|
if (openingHoursInfo != null) {
|
||||||
|
return openingHoursInfo.isOpened() ? R.color.ctx_menu_amenity_opened_text_color : R.color.ctx_menu_amenity_closed_text_color;
|
||||||
|
}
|
||||||
|
return super.getAdditionalInfoColor();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getAdditionalInfoStr() {
|
||||||
|
if (openingHoursInfo != null) {
|
||||||
|
return openingHoursInfo.getInfo(getMapActivity());
|
||||||
|
}
|
||||||
|
return super.getAdditionalInfoStr();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getAdditionalInfoIconRes() {
|
||||||
|
if (openingHoursInfo != null) {
|
||||||
|
return R.drawable.ic_action_opening_hour_16;
|
||||||
|
}
|
||||||
|
return super.getAdditionalInfoIconRes();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static String getTypeStr(Amenity amenity) {
|
public static String getTypeStr(Amenity amenity) {
|
||||||
|
@ -201,7 +220,7 @@ public class AmenityMenuController extends MenuController {
|
||||||
|
|
||||||
public static void addPlainMenuItems(Amenity amenity, String typeStr, MenuBuilder builder) {
|
public static void addPlainMenuItems(Amenity amenity, String typeStr, MenuBuilder builder) {
|
||||||
if (!Algorithms.isEmpty(typeStr)) {
|
if (!Algorithms.isEmpty(typeStr)) {
|
||||||
int resId = getLeftIconId(amenity);
|
int resId = getRightIconId(amenity);
|
||||||
if (resId == 0) {
|
if (resId == 0) {
|
||||||
PoiCategory pc = amenity.getType();
|
PoiCategory pc = amenity.getType();
|
||||||
resId = RenderingIcons.getBigIconResourceId(pc.getIconKeyName());
|
resId = RenderingIcons.getBigIconResourceId(pc.getIconKeyName());
|
||||||
|
@ -254,7 +273,7 @@ public class AmenityMenuController extends MenuController {
|
||||||
if (rts != null) {
|
if (rts != null) {
|
||||||
for (TransportRoute rs : rts) {
|
for (TransportRoute rs : rts) {
|
||||||
if (!containsRef(rs)) {
|
if (!containsRef(rs)) {
|
||||||
TransportStopController.TransportStopType type = TransportStopController.TransportStopType.findType(rs.getType());
|
TransportStopType type = TransportStopType.findType(rs.getType());
|
||||||
TransportStopRoute r = new TransportStopRoute();
|
TransportStopRoute r = new TransportStopRoute();
|
||||||
r.type = type;
|
r.type = type;
|
||||||
r.desc = useEnglishNames ? rs.getEnName(true) : rs.getName();
|
r.desc = useEnglishNames ? rs.getEnName(true) : rs.getName();
|
||||||
|
|
|
@ -18,6 +18,7 @@ import net.osmand.plus.mapcontextmenu.OpeningHoursInfo;
|
||||||
import net.osmand.plus.mapcontextmenu.builders.FavouritePointMenuBuilder;
|
import net.osmand.plus.mapcontextmenu.builders.FavouritePointMenuBuilder;
|
||||||
import net.osmand.plus.mapcontextmenu.editors.FavoritePointEditor;
|
import net.osmand.plus.mapcontextmenu.editors.FavoritePointEditor;
|
||||||
import net.osmand.plus.mapcontextmenu.editors.FavoritePointEditorFragment;
|
import net.osmand.plus.mapcontextmenu.editors.FavoritePointEditorFragment;
|
||||||
|
import net.osmand.plus.transport.TransportStopRoute;
|
||||||
import net.osmand.util.Algorithms;
|
import net.osmand.util.Algorithms;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
@ -27,7 +28,8 @@ public class FavouritePointMenuController extends MenuController {
|
||||||
|
|
||||||
private FavouritePoint fav;
|
private FavouritePoint fav;
|
||||||
private MapMarker mapMarker;
|
private MapMarker mapMarker;
|
||||||
private List<TransportStopController.TransportStopRoute> routes = new ArrayList<>();
|
private List<TransportStopRoute> routes = new ArrayList<>();
|
||||||
|
private OpeningHoursInfo openingHoursInfo;
|
||||||
|
|
||||||
public FavouritePointMenuController(MapActivity mapActivity, PointDescription pointDescription, final FavouritePoint fav) {
|
public FavouritePointMenuController(MapActivity mapActivity, PointDescription pointDescription, final FavouritePoint fav) {
|
||||||
super(new FavouritePointMenuBuilder(mapActivity, fav), pointDescription, mapActivity);
|
super(new FavouritePointMenuBuilder(mapActivity, fav), pointDescription, mapActivity);
|
||||||
|
@ -50,6 +52,11 @@ public class FavouritePointMenuController extends MenuController {
|
||||||
routes = transportStopController.processTransportStop();
|
routes = transportStopController.processTransportStop();
|
||||||
builder.setRoutes(routes);
|
builder.setRoutes(routes);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Object originObject = getBuilder().getOriginObject();
|
||||||
|
if (originObject instanceof Amenity) {
|
||||||
|
openingHoursInfo = AmenityMenuController.processOpeningHours((Amenity) originObject);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -65,7 +72,7 @@ public class FavouritePointMenuController extends MenuController {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<TransportStopController.TransportStopRoute> getTransportStopRoutes() {
|
public List<TransportStopRoute> getTransportStopRoutes() {
|
||||||
return routes;
|
return routes;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -95,7 +102,7 @@ public class FavouritePointMenuController extends MenuController {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Drawable getLeftIcon() {
|
public Drawable getRightIcon() {
|
||||||
return FavoriteImageDrawable.getOrCreate(getMapActivity().getMyApplication(), fav.getColor(), false);
|
return FavoriteImageDrawable.getOrCreate(getMapActivity().getMyApplication(), fav.getColor(), false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -106,7 +113,7 @@ public class FavouritePointMenuController extends MenuController {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Drawable getSecondLineTypeIcon() {
|
public Drawable getSecondLineTypeIcon() {
|
||||||
return getIcon(R.drawable.ic_action_group_name_16);
|
return getIcon(R.drawable.ic_action_group_name_16, isLight() ? R.color.icon_color : R.color.ctx_menu_bottom_view_icon_dark);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -132,7 +139,7 @@ public class FavouritePointMenuController extends MenuController {
|
||||||
@Override
|
@Override
|
||||||
public void addPlainMenuItems(String typeStr, PointDescription pointDescription, LatLon latLon) {
|
public void addPlainMenuItems(String typeStr, PointDescription pointDescription, LatLon latLon) {
|
||||||
if (!Algorithms.isEmpty(fav.getDescription())) {
|
if (!Algorithms.isEmpty(fav.getDescription())) {
|
||||||
addPlainMenuItem(R.drawable.ic_action_note_dark, fav.getDescription(), true, false, null);
|
addPlainMenuItem(R.drawable.ic_action_note_dark, null, fav.getDescription(), true, false, null);
|
||||||
}
|
}
|
||||||
Object originObject = getBuilder().getOriginObject();
|
Object originObject = getBuilder().getOriginObject();
|
||||||
if (originObject != null) {
|
if (originObject != null) {
|
||||||
|
@ -146,11 +153,26 @@ public class FavouritePointMenuController extends MenuController {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public OpeningHoursInfo getOpeningHoursInfo() {
|
public int getAdditionalInfoColor() {
|
||||||
Object originObject = getBuilder().getOriginObject();
|
if (openingHoursInfo != null) {
|
||||||
if (originObject instanceof Amenity) {
|
return openingHoursInfo.isOpened() ? R.color.ctx_menu_amenity_opened_text_color : R.color.ctx_menu_amenity_closed_text_color;
|
||||||
return AmenityMenuController.processOpeningHours((Amenity) originObject);
|
|
||||||
}
|
}
|
||||||
return null;
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getAdditionalInfoStr() {
|
||||||
|
if (openingHoursInfo != null) {
|
||||||
|
return openingHoursInfo.getInfo(getMapActivity());
|
||||||
|
}
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getAdditionalInfoIconRes() {
|
||||||
|
if (openingHoursInfo != null) {
|
||||||
|
return R.drawable.ic_action_opening_hour_16;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -45,7 +45,7 @@ public class GpxItemMenuController extends MenuController {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Drawable getLeftIcon() {
|
public Drawable getRightIcon() {
|
||||||
return getIcon(R.drawable.ic_action_polygom_dark, R.color.osmand_orange);
|
return getIcon(R.drawable.ic_action_polygom_dark, R.color.osmand_orange);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -52,7 +52,7 @@ public class HistoryMenuController extends MenuController {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Drawable getLeftIcon() {
|
public Drawable getRightIcon() {
|
||||||
return getIcon(SearchHistoryFragment.getItemIcon(entry.getName()));
|
return getIcon(SearchHistoryFragment.getItemIcon(entry.getName()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -53,7 +53,7 @@ public class ImpassibleRoadsMenuController extends MenuController {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Drawable getLeftIcon() {
|
public Drawable getRightIcon() {
|
||||||
return ContextCompat.getDrawable(getMapActivity(), R.drawable.map_pin_avoid_road);
|
return ContextCompat.getDrawable(getMapActivity(), R.drawable.map_pin_avoid_road);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -118,23 +118,6 @@ public class MapDataMenuController extends MenuController {
|
||||||
leftDownloadButtonController.leftIconId = R.drawable.ic_action_import;
|
leftDownloadButtonController.leftIconId = R.drawable.ic_action_import;
|
||||||
|
|
||||||
rightDownloadButtonController = new TitleButtonController() {
|
rightDownloadButtonController = new TitleButtonController() {
|
||||||
@Override
|
|
||||||
public void buttonPressed() {
|
|
||||||
if (indexItem != null) {
|
|
||||||
if (backuped) {
|
|
||||||
deleteItem(indexItem.getBackupFile(app));
|
|
||||||
} else {
|
|
||||||
deleteItem(indexItem.getTargetFile(app));
|
|
||||||
}
|
|
||||||
} else if (localIndexInfo != null) {
|
|
||||||
deleteItem(new File(localIndexInfo.getPathToData()));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
rightDownloadButtonController.caption = getMapActivity().getString(R.string.shared_string_delete);
|
|
||||||
rightDownloadButtonController.leftIconId = R.drawable.ic_action_delete_dark;
|
|
||||||
|
|
||||||
bottomTitleButtonController = new TitleButtonController() {
|
|
||||||
@Override
|
@Override
|
||||||
public void buttonPressed() {
|
public void buttonPressed() {
|
||||||
getMapActivity().getContextMenu().close();
|
getMapActivity().getContextMenu().close();
|
||||||
|
@ -158,7 +141,25 @@ public class MapDataMenuController extends MenuController {
|
||||||
mapActivity.getContextMenu().getLatLon(), selectedObjects);
|
mapActivity.getContextMenu().getLatLon(), selectedObjects);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
bottomTitleButtonController.caption = getMapActivity().getString(R.string.download_select_map_types);
|
rightDownloadButtonController.caption = getMapActivity().getString(R.string.download_select_map_types);
|
||||||
|
rightDownloadButtonController.leftIconId = R.drawable.ic_plugin_srtm;
|
||||||
|
|
||||||
|
bottomTitleButtonController = new TitleButtonController() {
|
||||||
|
@Override
|
||||||
|
public void buttonPressed() {
|
||||||
|
if (indexItem != null) {
|
||||||
|
if (backuped) {
|
||||||
|
deleteItem(indexItem.getBackupFile(app));
|
||||||
|
} else {
|
||||||
|
deleteItem(indexItem.getTargetFile(app));
|
||||||
|
}
|
||||||
|
} else if (localIndexInfo != null) {
|
||||||
|
deleteItem(new File(localIndexInfo.getPathToData()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
bottomTitleButtonController.caption = getMapActivity().getString(R.string.shared_string_delete);
|
||||||
|
bottomTitleButtonController.leftIconId = R.drawable.ic_action_delete_dark;
|
||||||
|
|
||||||
titleProgressController = new TitleProgressController() {
|
titleProgressController = new TitleProgressController() {
|
||||||
@Override
|
@Override
|
||||||
|
@ -178,6 +179,39 @@ public class MapDataMenuController extends MenuController {
|
||||||
updateData();
|
updateData();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean displayDistanceDirection() {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getAdditionalInfoColor() {
|
||||||
|
return R.color.icon_color;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getAdditionalInfoStr() {
|
||||||
|
double mb = 0;
|
||||||
|
if (backuped) {
|
||||||
|
if (localIndexInfo != null) {
|
||||||
|
mb = localIndexInfo.getSize();
|
||||||
|
} else if (indexItem != null) {
|
||||||
|
mb = indexItem.getArchiveSizeMB();
|
||||||
|
}
|
||||||
|
} else if (indexItem != null) {
|
||||||
|
mb = indexItem.getArchiveSizeMB();
|
||||||
|
}
|
||||||
|
if (mb != 0) {
|
||||||
|
return getMapActivity().getString(R.string.file_size_in_mb, mb);
|
||||||
|
}
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getAdditionalInfoIconRes() {
|
||||||
|
return R.drawable.ic_sdcard_16;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void setObject(Object object) {
|
protected void setObject(Object object) {
|
||||||
if (object instanceof DownloadMapObject) {
|
if (object instanceof DownloadMapObject) {
|
||||||
|
@ -197,7 +231,7 @@ public class MapDataMenuController extends MenuController {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Drawable getLeftIcon() {
|
public Drawable getRightIcon() {
|
||||||
int iconResId;
|
int iconResId;
|
||||||
if (getDownloadActivityType() != null) {
|
if (getDownloadActivityType() != null) {
|
||||||
iconResId = getDownloadActivityType().getIconResource();
|
iconResId = getDownloadActivityType().getIconResource();
|
||||||
|
@ -219,6 +253,10 @@ public class MapDataMenuController extends MenuController {
|
||||||
} else {
|
} else {
|
||||||
res = getMapActivity().getString(R.string.shared_string_map);
|
res = getMapActivity().getString(R.string.shared_string_map);
|
||||||
}
|
}
|
||||||
|
DownloadActivityType downloadActivityType = getDownloadActivityType();
|
||||||
|
if (downloadActivityType != null) {
|
||||||
|
res += ", " + downloadActivityType.getString(getMapActivity());
|
||||||
|
}
|
||||||
if (getMenuType() == MenuType.STANDARD) {
|
if (getMenuType() == MenuType.STANDARD) {
|
||||||
res += "\n";
|
res += "\n";
|
||||||
}
|
}
|
||||||
|
@ -233,16 +271,16 @@ public class MapDataMenuController extends MenuController {
|
||||||
@Override
|
@Override
|
||||||
public void addPlainMenuItems(String typeStr, PointDescription pointDescription, LatLon latLon) {
|
public void addPlainMenuItems(String typeStr, PointDescription pointDescription, LatLon latLon) {
|
||||||
if (indexItem != null) {
|
if (indexItem != null) {
|
||||||
addPlainMenuItem(R.drawable.ic_action_info_dark, indexItem.getType().getString(getMapActivity()), false, false, null);
|
addPlainMenuItem(R.drawable.ic_action_info_dark, null, indexItem.getType().getString(getMapActivity()), false, false, null);
|
||||||
StringBuilder sizeStr = new StringBuilder();
|
StringBuilder sizeStr = new StringBuilder();
|
||||||
sizeStr.append(indexItem.getSizeDescription(getMapActivity()));
|
sizeStr.append(indexItem.getSizeDescription(getMapActivity()));
|
||||||
if (backuped) {
|
if (backuped) {
|
||||||
sizeStr.append(" — ").append(LocalIndexType.DEACTIVATED.getHumanString(getMapActivity()));
|
sizeStr.append(" — ").append(LocalIndexType.DEACTIVATED.getHumanString(getMapActivity()));
|
||||||
}
|
}
|
||||||
addPlainMenuItem(R.drawable.ic_action_info_dark, sizeStr.toString(), false, false, null);
|
addPlainMenuItem(R.drawable.ic_action_info_dark, null, sizeStr.toString(), false, false, null);
|
||||||
} else if (localIndexInfo != null) {
|
} else if (localIndexInfo != null) {
|
||||||
if (getDownloadActivityType() != null) {
|
if (getDownloadActivityType() != null) {
|
||||||
addPlainMenuItem(R.drawable.ic_action_info_dark, getDownloadActivityType().getString(getMapActivity()), false, false, null);
|
addPlainMenuItem(R.drawable.ic_action_info_dark, null, getDownloadActivityType().getString(getMapActivity()), false, false, null);
|
||||||
}
|
}
|
||||||
StringBuilder sizeStr = new StringBuilder();
|
StringBuilder sizeStr = new StringBuilder();
|
||||||
if (localIndexInfo.getSize() >= 0) {
|
if (localIndexInfo.getSize() >= 0) {
|
||||||
|
@ -259,7 +297,7 @@ public class MapDataMenuController extends MenuController {
|
||||||
sizeStr.append(LocalIndexType.DEACTIVATED.getHumanString(getMapActivity()));
|
sizeStr.append(LocalIndexType.DEACTIVATED.getHumanString(getMapActivity()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
addPlainMenuItem(R.drawable.ic_action_info_dark, sizeStr.toString(), false, false, null);
|
addPlainMenuItem(R.drawable.ic_action_info_dark, null, sizeStr.toString(), false, false, null);
|
||||||
}
|
}
|
||||||
if (!Algorithms.isEmpty(mapObject.getWorldRegion().getParams().getWikiLink())) {
|
if (!Algorithms.isEmpty(mapObject.getWorldRegion().getParams().getWikiLink())) {
|
||||||
String[] items = mapObject.getWorldRegion().getParams().getWikiLink().split(":");
|
String[] items = mapObject.getWorldRegion().getParams().getWikiLink().split(":");
|
||||||
|
@ -269,7 +307,7 @@ public class MapDataMenuController extends MenuController {
|
||||||
} else {
|
} else {
|
||||||
url = "https://wikipedia.org/wiki/" + items[0].replace(' ', '_');
|
url = "https://wikipedia.org/wiki/" + items[0].replace(' ', '_');
|
||||||
}
|
}
|
||||||
addPlainMenuItem(R.drawable.ic_world_globe_dark, url, false, true, null);
|
addPlainMenuItem(R.drawable.ic_world_globe_dark, null, url, false, true, null);
|
||||||
}
|
}
|
||||||
if (!Algorithms.isEmpty(mapObject.getWorldRegion().getParams().getPopulation())) {
|
if (!Algorithms.isEmpty(mapObject.getWorldRegion().getParams().getPopulation())) {
|
||||||
String population = mapObject.getWorldRegion().getParams().getPopulation();
|
String population = mapObject.getWorldRegion().getParams().getPopulation();
|
||||||
|
@ -283,14 +321,14 @@ public class MapDataMenuController extends MenuController {
|
||||||
b.insert(0, population.charAt(i));
|
b.insert(0, population.charAt(i));
|
||||||
k++;
|
k++;
|
||||||
}
|
}
|
||||||
addPlainMenuItem(R.drawable.ic_action_info_dark, getMapActivity().getResources().getString(R.string.poi_population)
|
addPlainMenuItem(R.drawable.ic_action_info_dark, null, getMapActivity().getResources().getString(R.string.poi_population)
|
||||||
+ ": " + b, false, false, null);
|
+ ": " + b, false, false, null);
|
||||||
}
|
}
|
||||||
if (indexItem != null) {
|
if (indexItem != null) {
|
||||||
DateFormat dateFormat = android.text.format.DateFormat.getMediumDateFormat(getMapActivity());
|
DateFormat dateFormat = android.text.format.DateFormat.getMediumDateFormat(getMapActivity());
|
||||||
addPlainMenuItem(R.drawable.ic_action_data, indexItem.getRemoteDate(dateFormat), false, false, null);
|
addPlainMenuItem(R.drawable.ic_action_data, null, indexItem.getRemoteDate(dateFormat), false, false, null);
|
||||||
} else if (localIndexInfo != null) {
|
} else if (localIndexInfo != null) {
|
||||||
addPlainMenuItem(R.drawable.ic_action_data, localIndexInfo.getDescription(), false, false, null);
|
addPlainMenuItem(R.drawable.ic_action_data, null, localIndexInfo.getDescription(), false, false, null);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -349,8 +387,8 @@ public class MapDataMenuController extends MenuController {
|
||||||
leftDownloadButtonController.visible = false;
|
leftDownloadButtonController.visible = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
rightDownloadButtonController.visible = downloaded;
|
bottomTitleButtonController.visible = downloaded;
|
||||||
bottomTitleButtonController.visible = (otherIndexItems != null && otherIndexItems.size() > 0)
|
rightDownloadButtonController.visible = (otherIndexItems != null && otherIndexItems.size() > 0)
|
||||||
|| (otherLocalIndexInfos != null && otherLocalIndexInfos.size() > 0);
|
|| (otherLocalIndexInfos != null && otherLocalIndexInfos.size() > 0);
|
||||||
|
|
||||||
boolean internetConnectionAvailable =
|
boolean internetConnectionAvailable =
|
||||||
|
|
|
@ -89,7 +89,7 @@ public class MapMarkerMenuController extends MenuController {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Drawable getLeftIcon() {
|
public Drawable getRightIcon() {
|
||||||
return MapMarkerDialogHelper.getMapMarkerIcon(getMapActivity().getMyApplication(), mapMarker.colorIndex);
|
return MapMarkerDialogHelper.getMapMarkerIcon(getMapActivity().getMyApplication(), mapMarker.colorIndex);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -42,7 +42,7 @@ public class MyLocationMenuController extends MenuController {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Drawable getLeftIcon() {
|
public Drawable getRightIcon() {
|
||||||
ApplicationMode appMode = getMapActivity().getMyApplication().getSettings().getApplicationMode();
|
ApplicationMode appMode = getMapActivity().getMyApplication().getSettings().getApplicationMode();
|
||||||
return getMapActivity().getResources().getDrawable(appMode.getResourceLocationDay());
|
return getMapActivity().getResources().getDrawable(appMode.getResourceLocationDay());
|
||||||
}
|
}
|
||||||
|
|
|
@ -46,7 +46,7 @@ public class PointDescriptionMenuController extends MenuController {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Drawable getLeftIcon() {
|
public Drawable getRightIcon() {
|
||||||
return getIcon(SearchHistoryFragment.getItemIcon(getPointDescription()));
|
return getIcon(SearchHistoryFragment.getItemIcon(getPointDescription()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -49,7 +49,7 @@ public class RenderedObjectMenuController extends MenuController {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getLeftIconId() {
|
public int getRightIconId() {
|
||||||
if (renderedObject.getIconRes() != null && RenderingIcons.containsBigIcon(renderedObject.getIconRes())) {
|
if (renderedObject.getIconRes() != null && RenderingIcons.containsBigIcon(renderedObject.getIconRes())) {
|
||||||
return RenderingIcons.getBigIconResourceId(renderedObject.getIconRes());
|
return RenderingIcons.getBigIconResourceId(renderedObject.getIconRes());
|
||||||
} else {
|
} else {
|
||||||
|
@ -95,7 +95,7 @@ public class RenderedObjectMenuController extends MenuController {
|
||||||
if (entry.getKey().equalsIgnoreCase("maxheight")) {
|
if (entry.getKey().equalsIgnoreCase("maxheight")) {
|
||||||
AbstractPoiType pt = poiTypes.getAnyPoiAdditionalTypeByKey(entry.getKey());
|
AbstractPoiType pt = poiTypes.getAnyPoiAdditionalTypeByKey(entry.getKey());
|
||||||
if (pt != null) {
|
if (pt != null) {
|
||||||
addPlainMenuItem(R.drawable.ic_action_note_dark, pt.getTranslation() + ": " + entry.getValue(), false, false, null);
|
addPlainMenuItem(R.drawable.ic_action_note_dark, null, pt.getTranslation() + ": " + entry.getValue(), false, false, null);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -110,7 +110,7 @@ public class RenderedObjectMenuController extends MenuController {
|
||||||
} else {
|
} else {
|
||||||
link = "https://www.openstreetmap.org/way/";
|
link = "https://www.openstreetmap.org/way/";
|
||||||
}
|
}
|
||||||
addPlainMenuItem(R.drawable.ic_action_info_dark, link + (renderedObject.getId() >> 7), true, true, null);
|
addPlainMenuItem(R.drawable.ic_action_info_dark, null, link + (renderedObject.getId() >> 7), true, true, null);
|
||||||
}
|
}
|
||||||
addMyLocationToPlainItems(latLon);
|
addMyLocationToPlainItems(latLon);
|
||||||
}
|
}
|
||||||
|
|
|
@ -79,7 +79,7 @@ public class TargetPointMenuController extends MenuController {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Drawable getLeftIcon() {
|
public Drawable getRightIcon() {
|
||||||
if (targetPoint.start) {
|
if (targetPoint.start) {
|
||||||
return getIconOrig(R.drawable.list_startpoint);
|
return getIconOrig(R.drawable.list_startpoint);
|
||||||
} else if (!targetPoint.intermediate) {
|
} else if (!targetPoint.intermediate) {
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
package net.osmand.plus.mapcontextmenu.controllers;
|
package net.osmand.plus.mapcontextmenu.controllers;
|
||||||
|
|
||||||
|
import android.text.TextUtils;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.View.OnClickListener;
|
import android.view.View.OnClickListener;
|
||||||
|
|
||||||
|
@ -12,7 +13,7 @@ import net.osmand.plus.activities.MapActivity;
|
||||||
import net.osmand.plus.mapcontextmenu.MapContextMenu;
|
import net.osmand.plus.mapcontextmenu.MapContextMenu;
|
||||||
import net.osmand.plus.mapcontextmenu.MenuBuilder;
|
import net.osmand.plus.mapcontextmenu.MenuBuilder;
|
||||||
import net.osmand.plus.mapcontextmenu.MenuController;
|
import net.osmand.plus.mapcontextmenu.MenuController;
|
||||||
import net.osmand.plus.mapcontextmenu.controllers.TransportStopController.TransportStopRoute;
|
import net.osmand.plus.transport.TransportStopRoute;
|
||||||
import net.osmand.plus.views.TransportStopsLayer;
|
import net.osmand.plus.views.TransportStopsLayer;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
@ -46,6 +47,30 @@ public class TransportRouteController extends MenuController {
|
||||||
mapActivity.getContextMenu().closeToolbar(TransportRouteController.this);
|
mapActivity.getContextMenu().closeToolbar(TransportRouteController.this);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
leftTitleButtonController = new TitleButtonController() {
|
||||||
|
@Override
|
||||||
|
public void buttonPressed() {
|
||||||
|
final int previousStop = getPreviousStop();
|
||||||
|
if (previousStop != -1) {
|
||||||
|
showTransportStop(transportRoute.route.getForwardStops().get(previousStop));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
leftTitleButtonController.caption = mapActivity.getString(R.string.shared_string_previous);
|
||||||
|
leftTitleButtonController.leftIconId = R.drawable.ic_arrow_back;
|
||||||
|
|
||||||
|
rightTitleButtonController = new TitleButtonController() {
|
||||||
|
@Override
|
||||||
|
public void buttonPressed() {
|
||||||
|
final int nextStop = getNextStop();
|
||||||
|
if (nextStop != -1) {
|
||||||
|
showTransportStop(transportRoute.route.getForwardStops().get(nextStop));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
rightTitleButtonController.caption = mapActivity.getString(R.string.shared_string_next);
|
||||||
|
rightTitleButtonController.rightIconId = R.drawable.ic_arrow_forward;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -55,13 +80,18 @@ public class TransportRouteController extends MenuController {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean navigateInPedestrianMode() {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected Object getObject() {
|
protected Object getObject() {
|
||||||
return transportRoute;
|
return transportRoute;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getLeftIconId() {
|
public int getRightIconId() {
|
||||||
return this.transportRoute.type == null ?
|
return this.transportRoute.type == null ?
|
||||||
R.drawable.mx_public_transport :
|
R.drawable.mx_public_transport :
|
||||||
this.transportRoute.type.getTopResourceId();
|
this.transportRoute.type.getTopResourceId();
|
||||||
|
@ -77,11 +107,6 @@ public class TransportRouteController extends MenuController {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean navigateButtonVisible() {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isClosable() {
|
public boolean isClosable() {
|
||||||
return false;
|
return false;
|
||||||
|
@ -94,13 +119,17 @@ public class TransportRouteController extends MenuController {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getTypeStr() {
|
public String getTypeStr() {
|
||||||
if (transportRoute.refStop != null) {
|
return getPointDescription().getName();
|
||||||
return transportRoute.refStop.getName();
|
|
||||||
} else if (transportRoute.stop != null) {
|
|
||||||
return transportRoute.stop.getName();
|
|
||||||
} else {
|
|
||||||
return getPointDescription().getTypeName();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private String getStopType() {
|
||||||
|
return getMapActivity().getString(transportRoute.getTypeStrRes()) + " " + getMapActivity().getString(R.string.transport_Stop).toLowerCase();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void updateData() {
|
||||||
|
super.updateData();
|
||||||
|
updateControllers();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -121,49 +150,31 @@ public class TransportRouteController extends MenuController {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
private void updateControllers() {
|
||||||
public void addPlainMenuItems(String typeStr, PointDescription pointDescription, final LatLon latLon) {
|
boolean previousStopEnabled = false;
|
||||||
super.addPlainMenuItems(typeStr, pointDescription, latLon);
|
final int previousStop = getPreviousStop();
|
||||||
List<TransportStop> stops = transportRoute.route.getForwardStops();
|
if (previousStop != -1) {
|
||||||
boolean useEnglishNames = getMapActivity().getMyApplication().getSettings().usingEnglishNames();
|
previousStopEnabled = true;
|
||||||
int currentStop = -1;
|
|
||||||
for (int i = 0; i < stops.size(); i++) {
|
|
||||||
final TransportStop stop = stops.get(i);
|
|
||||||
if (stop.getName().equals(transportRoute.stop.getName())) {
|
|
||||||
currentStop = i;
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
}
|
leftTitleButtonController.enabled = previousStopEnabled;
|
||||||
int defaultIcon = transportRoute.type == null ? R.drawable.mx_route_bus_ref : transportRoute.type.getResourceId();
|
|
||||||
int startPosition = 0;
|
|
||||||
if (!transportRoute.showWholeRoute) {
|
|
||||||
startPosition = (currentStop == -1 ? 0 : currentStop);
|
|
||||||
if (currentStop > 0) {
|
|
||||||
addPlainMenuItem(defaultIcon, getMapActivity().getString(R.string.route_stops_before, currentStop),
|
|
||||||
false, false, new OnClickListener() {
|
|
||||||
|
|
||||||
@Override
|
boolean nextStopEnabled = false;
|
||||||
public void onClick(View arg0) {
|
final int nextStop = getNextStop();
|
||||||
MapContextMenu menu = getMapActivity().getContextMenu();
|
if (nextStop != -1) {
|
||||||
menu.showOrUpdate(latLon, getPointDescription(), transportRoute);
|
nextStopEnabled = true;
|
||||||
}
|
}
|
||||||
});
|
rightTitleButtonController.enabled = nextStopEnabled;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
for (int i = startPosition; i < stops.size(); i++) {
|
|
||||||
final TransportStop stop = stops.get(i);
|
|
||||||
final String name = useEnglishNames ? stop.getEnName(true) : stop.getName();
|
|
||||||
addPlainMenuItem(currentStop == i ? R.drawable.ic_action_marker_dark : defaultIcon,
|
|
||||||
name, false, false, new OnClickListener() {
|
|
||||||
|
|
||||||
@Override
|
private void showTransportStop(TransportStop stop) {
|
||||||
public void onClick(View arg0) {
|
|
||||||
if (mapContextMenu != null) {
|
if (mapContextMenu != null) {
|
||||||
transportRoute.stop = stop;
|
transportRoute.stop = stop;
|
||||||
transportRoute.refStop = stop;
|
transportRoute.refStop = stop;
|
||||||
PointDescription pd = new PointDescription(PointDescription.POINT_TYPE_TRANSPORT_ROUTE,
|
PointDescription pd = new PointDescription(PointDescription.POINT_TYPE_TRANSPORT_ROUTE,
|
||||||
transportRoute.getDescription(getMapActivity().getMyApplication(), false));
|
transportRoute.getDescription(getMapActivity().getMyApplication(), false));
|
||||||
|
|
||||||
|
updateControllers();
|
||||||
|
|
||||||
LatLon stopLocation = stop.getLocation();
|
LatLon stopLocation = stop.getLocation();
|
||||||
if (mapContextMenu.isVisible()) {
|
if (mapContextMenu.isVisible()) {
|
||||||
mapContextMenu.updateMapCenter(stopLocation);
|
mapContextMenu.updateMapCenter(stopLocation);
|
||||||
|
@ -175,6 +186,84 @@ public class TransportRouteController extends MenuController {
|
||||||
mapContextMenu.setMapZoom(15);
|
mapContextMenu.setMapZoom(15);
|
||||||
mapContextMenu.showOrUpdate(stopLocation, pd, transportRoute);
|
mapContextMenu.showOrUpdate(stopLocation, pd, transportRoute);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private int getCurrentStop() {
|
||||||
|
List<TransportStop> stops = transportRoute.route.getForwardStops();
|
||||||
|
for (int i = 0; i < stops.size(); i++) {
|
||||||
|
final TransportStop stop = stops.get(i);
|
||||||
|
if (stop.getName().equals(transportRoute.stop.getName())) {
|
||||||
|
return i;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
private int getNextStop() {
|
||||||
|
List<TransportStop> stops = transportRoute.route.getForwardStops();
|
||||||
|
int currentPos = getCurrentStop();
|
||||||
|
if (currentPos != -1 && currentPos + 1 < stops.size()) {
|
||||||
|
return currentPos + 1;
|
||||||
|
}
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
private int getPreviousStop() {
|
||||||
|
int currentPos = getCurrentStop();
|
||||||
|
if (currentPos > 0) {
|
||||||
|
return currentPos - 1;
|
||||||
|
}
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getNameStr() {
|
||||||
|
if (transportRoute.refStop != null && !TextUtils.isEmpty(transportRoute.refStop.getName())) {
|
||||||
|
return transportRoute.refStop.getName();
|
||||||
|
} else if (transportRoute.stop != null && !TextUtils.isEmpty(transportRoute.stop.getName())) {
|
||||||
|
return transportRoute.stop.getName();
|
||||||
|
} else if (!TextUtils.isEmpty(getPointDescription().getTypeName())) {
|
||||||
|
return getPointDescription().getTypeName();
|
||||||
|
} else {
|
||||||
|
return getStopType();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void addPlainMenuItems(String typeStr, PointDescription pointDescription, final LatLon latLon) {
|
||||||
|
super.addPlainMenuItems(typeStr, pointDescription, latLon);
|
||||||
|
List<TransportStop> stops = transportRoute.route.getForwardStops();
|
||||||
|
boolean useEnglishNames = getMapActivity().getMyApplication().getSettings().usingEnglishNames();
|
||||||
|
int currentStop = getCurrentStop();
|
||||||
|
int defaultIcon = transportRoute.type == null ? R.drawable.mx_route_bus_ref : transportRoute.type.getResourceId();
|
||||||
|
int startPosition = 0;
|
||||||
|
if (!transportRoute.showWholeRoute) {
|
||||||
|
startPosition = (currentStop == -1 ? 0 : currentStop);
|
||||||
|
if (currentStop > 0) {
|
||||||
|
addPlainMenuItem(defaultIcon, getMapActivity().getString(R.string.shared_string_show),
|
||||||
|
getMapActivity().getString(R.string.route_stops_before, currentStop),
|
||||||
|
false, false, new OnClickListener() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onClick(View arg0) {
|
||||||
|
MapContextMenu menu = getMapActivity().getContextMenu();
|
||||||
|
menu.showOrUpdate(latLon, getPointDescription(), transportRoute);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for (int i = startPosition; i < stops.size(); i++) {
|
||||||
|
final TransportStop stop = stops.get(i);
|
||||||
|
String name = useEnglishNames ? stop.getEnName(true) : stop.getName();
|
||||||
|
if (TextUtils.isEmpty(name)) {
|
||||||
|
name = getStopType();
|
||||||
|
}
|
||||||
|
addPlainMenuItem(currentStop == i ? R.drawable.ic_action_marker_dark : defaultIcon,
|
||||||
|
null, name, false, false, new OnClickListener() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onClick(View arg0) {
|
||||||
|
showTransportStop(stop);
|
||||||
/*
|
/*
|
||||||
PointDescription pd = new PointDescription(PointDescription.POINT_TYPE_TRANSPORT_STOP,
|
PointDescription pd = new PointDescription(PointDescription.POINT_TYPE_TRANSPORT_STOP,
|
||||||
getMapActivity().getString(R.string.transport_Stop), name);
|
getMapActivity().getString(R.string.transport_Stop), name);
|
||||||
|
@ -202,7 +291,7 @@ public class TransportRouteController extends MenuController {
|
||||||
TransportStopsLayer stopsLayer = getMapActivity().getMapLayers().getTransportStopsLayer();
|
TransportStopsLayer stopsLayer = getMapActivity().getMapLayers().getTransportStopsLayer();
|
||||||
int cz = transportRoute.calculateZoom(0, getMapActivity().getMapView().getCurrentRotatedTileBox());
|
int cz = transportRoute.calculateZoom(0, getMapActivity().getMapView().getCurrentRotatedTileBox());
|
||||||
getMapActivity().changeZoom(cz - getMapActivity().getMapView().getZoom());
|
getMapActivity().changeZoom(cz - getMapActivity().getMapView().getZoom());
|
||||||
stopsLayer.setRoute(transportRoute.route);
|
stopsLayer.setRoute(transportRoute);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void resetRoute() {
|
private void resetRoute() {
|
||||||
|
|
|
@ -6,17 +6,16 @@ import android.view.View.OnClickListener;
|
||||||
import net.osmand.data.LatLon;
|
import net.osmand.data.LatLon;
|
||||||
import net.osmand.data.PointDescription;
|
import net.osmand.data.PointDescription;
|
||||||
import net.osmand.data.QuadRect;
|
import net.osmand.data.QuadRect;
|
||||||
import net.osmand.data.RotatedTileBox;
|
|
||||||
import net.osmand.data.TransportRoute;
|
import net.osmand.data.TransportRoute;
|
||||||
import net.osmand.data.TransportStop;
|
import net.osmand.data.TransportStop;
|
||||||
import net.osmand.plus.OsmAndFormatter;
|
|
||||||
import net.osmand.plus.OsmandApplication;
|
|
||||||
import net.osmand.plus.R;
|
import net.osmand.plus.R;
|
||||||
|
import net.osmand.plus.transport.TransportStopRoute;
|
||||||
import net.osmand.plus.activities.MapActivity;
|
import net.osmand.plus.activities.MapActivity;
|
||||||
import net.osmand.plus.mapcontextmenu.MapContextMenu;
|
import net.osmand.plus.mapcontextmenu.MapContextMenu;
|
||||||
import net.osmand.plus.mapcontextmenu.MenuBuilder;
|
import net.osmand.plus.mapcontextmenu.MenuBuilder;
|
||||||
import net.osmand.plus.mapcontextmenu.MenuController;
|
import net.osmand.plus.mapcontextmenu.MenuController;
|
||||||
import net.osmand.plus.resources.TransportIndexRepository;
|
import net.osmand.plus.resources.TransportIndexRepository;
|
||||||
|
import net.osmand.plus.transport.TransportStopType;
|
||||||
import net.osmand.plus.views.TransportStopsLayer;
|
import net.osmand.plus.views.TransportStopsLayer;
|
||||||
import net.osmand.util.Algorithms;
|
import net.osmand.util.Algorithms;
|
||||||
import net.osmand.util.MapUtils;
|
import net.osmand.util.MapUtils;
|
||||||
|
@ -29,51 +28,6 @@ import java.util.List;
|
||||||
|
|
||||||
public class TransportStopController extends MenuController {
|
public class TransportStopController extends MenuController {
|
||||||
|
|
||||||
public enum TransportStopType {
|
|
||||||
BUS(R.drawable.mx_route_bus_ref, R.drawable.mx_route_bus_ref),
|
|
||||||
FERRY(R.drawable.mx_route_ferry_ref, R.drawable.mx_route_ferry_ref),
|
|
||||||
FUNICULAR(R.drawable.mx_route_funicular_ref, R.drawable.mx_route_funicular_ref),
|
|
||||||
LIGHT_RAIL(R.drawable.mx_route_light_rail_ref, R.drawable.mx_route_light_rail_ref),
|
|
||||||
MONORAIL(R.drawable.mx_route_monorail_ref, R.drawable.mx_route_monorail_ref),
|
|
||||||
RAILWAY(R.drawable.mx_route_railway_ref, R.drawable.mx_route_railway_ref),
|
|
||||||
SHARE_TAXI(R.drawable.mx_route_share_taxi_ref, R.drawable.mx_route_share_taxi_ref),
|
|
||||||
TRAIN(R.drawable.mx_route_train_ref, R.drawable.mx_route_train_ref),
|
|
||||||
TRAM(R.drawable.mx_route_tram_ref, R.drawable.mx_railway_tram_stop),
|
|
||||||
TROLLEYBUS(R.drawable.mx_route_trolleybus_ref, R.drawable.mx_route_trolleybus_ref),
|
|
||||||
SUBWAY(R.drawable.mx_subway_station, R.drawable.mx_subway_station);
|
|
||||||
|
|
||||||
final int resId;
|
|
||||||
final int topResId;
|
|
||||||
|
|
||||||
TransportStopType(int resId, int topResId) {
|
|
||||||
this.resId = resId;
|
|
||||||
this.topResId = topResId;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getResourceId() {
|
|
||||||
return resId;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getTopResourceId() {
|
|
||||||
return topResId;
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isTopType() {
|
|
||||||
return this == TRAM || this == SUBWAY;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static TransportStopType findType(String typeName) {
|
|
||||||
String tName = typeName.toUpperCase();
|
|
||||||
for (TransportStopType t : values()) {
|
|
||||||
if (t.name().equals(tName)) {
|
|
||||||
return t;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
private TransportStop transportStop;
|
private TransportStop transportStop;
|
||||||
private List<TransportStopRoute> routes = new ArrayList<>();
|
private List<TransportStopRoute> routes = new ArrayList<>();
|
||||||
private TransportStopType topType;
|
private TransportStopType topType;
|
||||||
|
@ -82,18 +36,21 @@ public class TransportStopController extends MenuController {
|
||||||
PointDescription pointDescription, TransportStop transportStop) {
|
PointDescription pointDescription, TransportStop transportStop) {
|
||||||
super(new MenuBuilder(mapActivity), pointDescription, mapActivity);
|
super(new MenuBuilder(mapActivity), pointDescription, mapActivity);
|
||||||
this.transportStop = transportStop;
|
this.transportStop = transportStop;
|
||||||
routes = processTransportStop();
|
processRoutes();
|
||||||
builder.setRoutes(routes);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void setObject(Object object) {
|
protected void setObject(Object object) {
|
||||||
if (object instanceof TransportStop) {
|
if (object instanceof TransportStop) {
|
||||||
this.transportStop = (TransportStop) object;
|
this.transportStop = (TransportStop) object;
|
||||||
|
processRoutes();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void processRoutes() {
|
||||||
routes = processTransportStop();
|
routes = processTransportStop();
|
||||||
builder.setRoutes(routes);
|
builder.setRoutes(routes);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected Object getObject() {
|
protected Object getObject() {
|
||||||
|
@ -101,7 +58,7 @@ public class TransportStopController extends MenuController {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getLeftIconId() {
|
public int getRightIconId() {
|
||||||
if (topType == null) {
|
if (topType == null) {
|
||||||
return R.drawable.mx_public_transport;
|
return R.drawable.mx_public_transport;
|
||||||
} else {
|
} else {
|
||||||
|
@ -204,42 +161,4 @@ public class TransportStopController extends MenuController {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static class TransportStopRoute {
|
|
||||||
public TransportStop refStop;
|
|
||||||
public TransportStopType type;
|
|
||||||
public String desc;
|
|
||||||
public TransportRoute route;
|
|
||||||
public TransportStop stop;
|
|
||||||
public int distance;
|
|
||||||
public boolean showWholeRoute;
|
|
||||||
|
|
||||||
public String getDescription(OsmandApplication ctx, boolean useDistance) {
|
|
||||||
if (useDistance && distance > 0) {
|
|
||||||
String nm = OsmAndFormatter.getFormattedDistance(distance, ctx);
|
|
||||||
if (refStop != null && !refStop.getName().equals(stop.getName())) {
|
|
||||||
nm = refStop.getName() + ", " + nm;
|
|
||||||
}
|
|
||||||
return desc + " (" + nm + ")";
|
|
||||||
}
|
|
||||||
return desc;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int calculateZoom(int startPosition, RotatedTileBox currentRotatedTileBox) {
|
|
||||||
RotatedTileBox cp = currentRotatedTileBox.copy();
|
|
||||||
boolean notContains = true;
|
|
||||||
while (cp.getZoom() > 12 && notContains) {
|
|
||||||
notContains = false;
|
|
||||||
List<TransportStop> sts = route.getForwardStops();
|
|
||||||
for(int i = startPosition; i < sts.size(); i++) {
|
|
||||||
TransportStop st = sts.get(startPosition);
|
|
||||||
if (!cp.containsLatLon(st.getLocation())) {
|
|
||||||
notContains = true;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
cp.setZoom(cp.getZoom() - 1);
|
|
||||||
}
|
|
||||||
return cp.getZoom();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -76,17 +76,17 @@ public class WptPtMenuController extends MenuController {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Drawable getLeftIcon() {
|
public Drawable getRightIcon() {
|
||||||
return FavoriteImageDrawable.getOrCreate(getMapActivity().getMyApplication(),
|
return FavoriteImageDrawable.getOrCreate(getMapActivity().getMyApplication(),
|
||||||
wpt.getColor(ContextCompat.getColor(getMapActivity(), R.color.gpx_color_point)), false);
|
wpt.getColor(ContextCompat.getColor(getMapActivity(), R.color.gpx_color_point)), false);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Drawable getAdditionalLineTypeIcon() {
|
public Drawable getSubtypeIcon() {
|
||||||
if (Algorithms.isEmpty(getAdditionalTypeStr())) {
|
if (Algorithms.isEmpty(getSubtypeStr())) {
|
||||||
return null;
|
return null;
|
||||||
} else {
|
} else {
|
||||||
return getIcon(R.drawable.ic_action_group_name_16);
|
return getIcon(R.drawable.ic_action_group_name_16, isLight() ? R.color.icon_color : R.color.ctx_menu_bottom_view_icon_dark);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -111,7 +111,7 @@ public class WptPtMenuController extends MenuController {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getAdditionalTypeStr() {
|
public String getSubtypeStr() {
|
||||||
return wpt.category != null ? wpt.category : "";
|
return wpt.category != null ? wpt.category : "";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -4,6 +4,7 @@ import android.os.Build;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.support.annotation.Nullable;
|
import android.support.annotation.Nullable;
|
||||||
import android.support.v4.app.Fragment;
|
import android.support.v4.app.Fragment;
|
||||||
|
import android.support.v4.content.ContextCompat;
|
||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.ViewGroup;
|
import android.view.ViewGroup;
|
||||||
|
@ -38,10 +39,10 @@ public class MapMultiSelectionMenuFragment extends Fragment implements MultiSele
|
||||||
view = inflater.inflate(R.layout.menu_obj_selection_fragment, container, false);
|
view = inflater.inflate(R.layout.menu_obj_selection_fragment, container, false);
|
||||||
if (menu.isLandscapeLayout()) {
|
if (menu.isLandscapeLayout()) {
|
||||||
AndroidUtils.setBackground(view.getContext(), view, !menu.isLight(),
|
AndroidUtils.setBackground(view.getContext(), view, !menu.isLight(),
|
||||||
R.drawable.bg_left_menu_light, R.drawable.bg_left_menu_dark);
|
R.drawable.multi_selection_menu_bg_light_land, R.drawable.multi_selection_menu_bg_dark_land);
|
||||||
} else {
|
} else {
|
||||||
AndroidUtils.setBackground(view.getContext(), view, !menu.isLight(),
|
AndroidUtils.setBackground(view.getContext(), view, !menu.isLight(),
|
||||||
R.drawable.bg_bottom_menu_light, R.drawable.bg_bottom_menu_dark);
|
R.drawable.multi_selection_menu_bg_light, R.drawable.multi_selection_menu_bg_dark);
|
||||||
}
|
}
|
||||||
|
|
||||||
ListView listView = (ListView) view.findViewById(R.id.list);
|
ListView listView = (ListView) view.findViewById(R.id.list);
|
||||||
|
@ -49,11 +50,6 @@ public class MapMultiSelectionMenuFragment extends Fragment implements MultiSele
|
||||||
AndroidUtils.addStatusBarPadding21v(getActivity(), listView);
|
AndroidUtils.addStatusBarPadding21v(getActivity(), listView);
|
||||||
}
|
}
|
||||||
View headerView = inflater.inflate(R.layout.menu_obj_selection_header, listView, false);
|
View headerView = inflater.inflate(R.layout.menu_obj_selection_header, listView, false);
|
||||||
if (!menu.isLight()) {
|
|
||||||
((TextViewEx) headerView.findViewById(R.id.header_title)).setTextColor(getResources().getColor(R.color.ctx_menu_info_text_dark));
|
|
||||||
((TextView) view.findViewById(R.id.cancel_row_text)).setTextColor(getResources().getColor(R.color.color_dialog_buttons_dark));
|
|
||||||
view.findViewById(R.id.divider).setBackgroundResource(R.color.dashboard_divider_dark);
|
|
||||||
}
|
|
||||||
headerView.setOnClickListener(null);
|
headerView.setOnClickListener(null);
|
||||||
listView.addHeaderView(headerView);
|
listView.addHeaderView(headerView);
|
||||||
listAdapter = createAdapter();
|
listAdapter = createAdapter();
|
||||||
|
@ -62,6 +58,9 @@ public class MapMultiSelectionMenuFragment extends Fragment implements MultiSele
|
||||||
|
|
||||||
runLayoutListener();
|
runLayoutListener();
|
||||||
|
|
||||||
|
view.findViewById(R.id.divider).setBackgroundColor(ContextCompat.getColor(getContext(), menu.isLight() ? R.color.multi_selection_menu_divider_light : R.color.multi_selection_menu_divider_dark));
|
||||||
|
|
||||||
|
((TextView) view.findViewById(R.id.cancel_row_text)).setTextColor(ContextCompat.getColor(getContext(), menu.isLight() ? R.color.multi_selection_menu_close_btn_light : R.color.multi_selection_menu_close_btn_dark));
|
||||||
view.findViewById(R.id.cancel_row).setOnClickListener(new View.OnClickListener() {
|
view.findViewById(R.id.cancel_row).setOnClickListener(new View.OnClickListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onClick(View view) {
|
public void onClick(View view) {
|
||||||
|
|
|
@ -259,24 +259,16 @@ public class MapRouteInfoMenu implements IRouteInformationListener {
|
||||||
private void updateViaView(final View parentView) {
|
private void updateViaView(final View parentView) {
|
||||||
String via = generateViaDescription();
|
String via = generateViaDescription();
|
||||||
View viaLayout = parentView.findViewById(R.id.ViaLayout);
|
View viaLayout = parentView.findViewById(R.id.ViaLayout);
|
||||||
View fromLayoutEmptyView = parentView.findViewById(R.id.from_layout_empty_view);
|
View viaLayoutDivider = parentView.findViewById(R.id.viaLayoutDivider);
|
||||||
View toLayoutEmptyView = parentView.findViewById(R.id.to_layout_empty_view);
|
|
||||||
View dividerFromDropDownEmpty = parentView.findViewById(R.id.divider_from_drop_down_empty);
|
|
||||||
ImageView swapDirectionView = (ImageView) parentView.findViewById(R.id.swap_direction_image_view);
|
ImageView swapDirectionView = (ImageView) parentView.findViewById(R.id.swap_direction_image_view);
|
||||||
if (via.length() == 0) {
|
if (via.length() == 0) {
|
||||||
viaLayout.setVisibility(View.GONE);
|
viaLayout.setVisibility(View.GONE);
|
||||||
parentView.findViewById(R.id.viaLayoutDivider).setVisibility(View.GONE);
|
viaLayoutDivider.setVisibility(View.GONE);
|
||||||
dividerFromDropDownEmpty.setVisibility(View.GONE);
|
|
||||||
fromLayoutEmptyView.setVisibility(View.VISIBLE);
|
|
||||||
toLayoutEmptyView.setVisibility(View.VISIBLE);
|
|
||||||
swapDirectionView.setVisibility(View.VISIBLE);
|
swapDirectionView.setVisibility(View.VISIBLE);
|
||||||
} else {
|
} else {
|
||||||
fromLayoutEmptyView.setVisibility(View.GONE);
|
|
||||||
toLayoutEmptyView.setVisibility(View.GONE);
|
|
||||||
swapDirectionView.setVisibility(View.GONE);
|
swapDirectionView.setVisibility(View.GONE);
|
||||||
dividerFromDropDownEmpty.setVisibility(View.VISIBLE);
|
|
||||||
viaLayout.setVisibility(View.VISIBLE);
|
viaLayout.setVisibility(View.VISIBLE);
|
||||||
parentView.findViewById(R.id.viaLayoutDivider).setVisibility(View.VISIBLE);
|
viaLayoutDivider.setVisibility(View.VISIBLE);
|
||||||
((TextView) parentView.findViewById(R.id.ViaView)).setText(via);
|
((TextView) parentView.findViewById(R.id.ViaView)).setText(via);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -294,7 +286,6 @@ public class MapRouteInfoMenu implements IRouteInformationListener {
|
||||||
|
|
||||||
swapDirectionView.setImageDrawable(mapActivity.getMyApplication().getIconsCache().getIcon(R.drawable.ic_action_change_navigation_points,
|
swapDirectionView.setImageDrawable(mapActivity.getMyApplication().getIconsCache().getIcon(R.drawable.ic_action_change_navigation_points,
|
||||||
isLight() ? R.color.route_info_control_icon_color_light : R.color.route_info_control_icon_color_dark));
|
isLight() ? R.color.route_info_control_icon_color_light : R.color.route_info_control_icon_color_dark));
|
||||||
AndroidUtils.setBackground(mapActivity, swapDirectionView, nightMode, R.drawable.dashboard_button_light, R.drawable.dashboard_button_dark);
|
|
||||||
swapDirectionView.setOnClickListener(new View.OnClickListener() {
|
swapDirectionView.setOnClickListener(new View.OnClickListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onClick(View view) {
|
public void onClick(View view) {
|
||||||
|
@ -638,7 +629,7 @@ public class MapRouteInfoMenu implements IRouteInformationListener {
|
||||||
} else {
|
} else {
|
||||||
infoIcon.setImageDrawable(ctx.getIconsCache().getIcon(R.drawable.ic_action_route_distance, R.color.route_info_unchecked_mode_icon_color));
|
infoIcon.setImageDrawable(ctx.getIconsCache().getIcon(R.drawable.ic_action_route_distance, R.color.route_info_unchecked_mode_icon_color));
|
||||||
infoIcon.setVisibility(View.VISIBLE);
|
infoIcon.setVisibility(View.VISIBLE);
|
||||||
durationIcon.setImageDrawable(ctx.getIconsCache().getIcon(R.drawable.ic_action_time, R.color.route_info_unchecked_mode_icon_color));
|
durationIcon.setImageDrawable(ctx.getIconsCache().getIcon(R.drawable.ic_action_time_span, R.color.route_info_unchecked_mode_icon_color));
|
||||||
durationIcon.setVisibility(View.VISIBLE);
|
durationIcon.setVisibility(View.VISIBLE);
|
||||||
infoDistanceView.setVisibility(View.VISIBLE);
|
infoDistanceView.setVisibility(View.VISIBLE);
|
||||||
infoDurationView.setVisibility(View.VISIBLE);
|
infoDurationView.setVisibility(View.VISIBLE);
|
||||||
|
|
|
@ -150,8 +150,6 @@ public class MapRouteInfoMenuFragment extends BaseOsmAndFragment {
|
||||||
R.color.route_info_divider_light, R.color.route_info_divider_dark);
|
R.color.route_info_divider_light, R.color.route_info_divider_dark);
|
||||||
AndroidUtils.setBackground(ctx, mainView.findViewById(R.id.dividerFromDropDown), nightMode,
|
AndroidUtils.setBackground(ctx, mainView.findViewById(R.id.dividerFromDropDown), nightMode,
|
||||||
R.color.route_info_divider_light, R.color.route_info_divider_dark);
|
R.color.route_info_divider_light, R.color.route_info_divider_dark);
|
||||||
AndroidUtils.setBackground(ctx, mainView.findViewById(R.id.divider_from_drop_down_empty), nightMode,
|
|
||||||
R.color.route_info_divider_light, R.color.route_info_divider_dark);
|
|
||||||
AndroidUtils.setBackground(ctx, mainView.findViewById(R.id.viaLayoutDivider), nightMode,
|
AndroidUtils.setBackground(ctx, mainView.findViewById(R.id.viaLayoutDivider), nightMode,
|
||||||
R.color.route_info_divider_light, R.color.route_info_divider_dark);
|
R.color.route_info_divider_light, R.color.route_info_divider_dark);
|
||||||
AndroidUtils.setBackground(ctx, mainView.findViewById(R.id.dividerToDropDown), nightMode,
|
AndroidUtils.setBackground(ctx, mainView.findViewById(R.id.dividerToDropDown), nightMode,
|
||||||
|
@ -170,14 +168,6 @@ public class MapRouteInfoMenuFragment extends BaseOsmAndFragment {
|
||||||
AndroidUtils.setTextSecondaryColor(ctx, (TextView) mainView.findViewById(R.id.fromTitle), nightMode);
|
AndroidUtils.setTextSecondaryColor(ctx, (TextView) mainView.findViewById(R.id.fromTitle), nightMode);
|
||||||
AndroidUtils.setTextPrimaryColor(ctx, (TextView) mainView.findViewById(R.id.InfoTextView), nightMode);
|
AndroidUtils.setTextPrimaryColor(ctx, (TextView) mainView.findViewById(R.id.InfoTextView), nightMode);
|
||||||
|
|
||||||
AndroidUtils.setDashButtonBackground(ctx, mainView.findViewById(R.id.FromLayout), nightMode);
|
|
||||||
AndroidUtils.setDashButtonBackground(ctx, mainView.findViewById(R.id.ViaLayout), nightMode);
|
|
||||||
AndroidUtils.setDashButtonBackground(ctx, mainView.findViewById(R.id.ToLayout), nightMode);
|
|
||||||
AndroidUtils.setDashButtonBackground(ctx, mainView.findViewById(R.id.Info), nightMode);
|
|
||||||
|
|
||||||
AndroidUtils.setDashButtonBackground(ctx, mainView.findViewById(R.id.Next), nightMode);
|
|
||||||
AndroidUtils.setDashButtonBackground(ctx, mainView.findViewById(R.id.Prev), nightMode);
|
|
||||||
|
|
||||||
AndroidUtils.setTextPrimaryColor(ctx, (TextView) mainView.findViewById(R.id.DistanceText), nightMode);
|
AndroidUtils.setTextPrimaryColor(ctx, (TextView) mainView.findViewById(R.id.DistanceText), nightMode);
|
||||||
AndroidUtils.setTextSecondaryColor(ctx, (TextView) mainView.findViewById(R.id.DistanceTitle), nightMode);
|
AndroidUtils.setTextSecondaryColor(ctx, (TextView) mainView.findViewById(R.id.DistanceTitle), nightMode);
|
||||||
AndroidUtils.setTextPrimaryColor(ctx, (TextView) mainView.findViewById(R.id.DurationText), nightMode);
|
AndroidUtils.setTextPrimaryColor(ctx, (TextView) mainView.findViewById(R.id.DurationText), nightMode);
|
||||||
|
|
|
@ -38,8 +38,6 @@ public class MultiSelectionArrayAdapter extends ArrayAdapter<MapMultiSelectionMe
|
||||||
}
|
}
|
||||||
final MapMultiSelectionMenu.MenuObject item = getItem(position);
|
final MapMultiSelectionMenu.MenuObject item = getItem(position);
|
||||||
if (item != null) {
|
if (item != null) {
|
||||||
convertView.findViewById(R.id.content).setBackgroundResource(menu.isLight()
|
|
||||||
? R.drawable.expandable_list_item_background_light : R.drawable.expandable_list_item_background_dark);
|
|
||||||
convertView.setOnClickListener(new View.OnClickListener() {
|
convertView.setOnClickListener(new View.OnClickListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onClick(View view) {
|
public void onClick(View view) {
|
||||||
|
@ -51,8 +49,8 @@ public class MultiSelectionArrayAdapter extends ArrayAdapter<MapMultiSelectionMe
|
||||||
IconsCache iconsCache = menu.getMapActivity().getMyApplication().getIconsCache();
|
IconsCache iconsCache = menu.getMapActivity().getMyApplication().getIconsCache();
|
||||||
final View iconLayout = convertView.findViewById(R.id.context_menu_icon_layout);
|
final View iconLayout = convertView.findViewById(R.id.context_menu_icon_layout);
|
||||||
final ImageView iconView = (ImageView) convertView.findViewById(R.id.context_menu_icon_view);
|
final ImageView iconView = (ImageView) convertView.findViewById(R.id.context_menu_icon_view);
|
||||||
Drawable icon = item.getLeftIcon();
|
Drawable icon = item.getRightIcon();
|
||||||
int iconId = item.getLeftIconId();
|
int iconId = item.getRightIconId();
|
||||||
if (icon != null) {
|
if (icon != null) {
|
||||||
iconView.setImageDrawable(icon);
|
iconView.setImageDrawable(icon);
|
||||||
iconLayout.setVisibility(View.VISIBLE);
|
iconLayout.setVisibility(View.VISIBLE);
|
||||||
|
@ -66,7 +64,7 @@ public class MultiSelectionArrayAdapter extends ArrayAdapter<MapMultiSelectionMe
|
||||||
|
|
||||||
// Text line 1
|
// Text line 1
|
||||||
TextView line1 = (TextView) convertView.findViewById(R.id.context_menu_line1);
|
TextView line1 = (TextView) convertView.findViewById(R.id.context_menu_line1);
|
||||||
((TextView) convertView.findViewById(R.id.context_menu_line1)).setTextColor(ContextCompat.getColor(getContext(),
|
line1.setTextColor(ContextCompat.getColor(getContext(),
|
||||||
!menu.isLight() ? R.color.ctx_menu_title_color_dark : R.color.ctx_menu_title_color_light));
|
!menu.isLight() ? R.color.ctx_menu_title_color_dark : R.color.ctx_menu_title_color_light));
|
||||||
line1.setText(item.getTitleStr());
|
line1.setText(item.getTitleStr());
|
||||||
|
|
||||||
|
@ -80,9 +78,7 @@ public class MultiSelectionArrayAdapter extends ArrayAdapter<MapMultiSelectionMe
|
||||||
|
|
||||||
// Divider
|
// Divider
|
||||||
View divider = convertView.findViewById(R.id.divider);
|
View divider = convertView.findViewById(R.id.divider);
|
||||||
if (!menu.isLight()) {
|
divider.setBackgroundColor(ContextCompat.getColor(getContext(), menu.isLight() ? R.color.multi_selection_menu_divider_light : R.color.multi_selection_menu_divider_dark));
|
||||||
divider.setBackgroundResource(R.color.dashboard_divider_dark);
|
|
||||||
}
|
|
||||||
divider.setVisibility(position != getCount() - 1 ? View.VISIBLE : View.GONE);
|
divider.setVisibility(position != getCount() - 1 ? View.VISIBLE : View.GONE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -56,7 +56,7 @@ public class MapillaryMenuController extends MenuController {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Drawable getLeftIcon() {
|
public Drawable getRightIcon() {
|
||||||
return getIcon(R.drawable.ic_action_mapillary, R.color.mapillary_color);
|
return getIcon(R.drawable.ic_action_mapillary, R.color.mapillary_color);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -754,26 +754,12 @@ public class CoordinateInputDialogFragment extends DialogFragment implements Osm
|
||||||
|
|
||||||
private class KeyboardAdapter extends ArrayAdapter<Object> {
|
private class KeyboardAdapter extends ArrayAdapter<Object> {
|
||||||
|
|
||||||
private ColorStateList dividerControlColorStateList = new ColorStateList(
|
private ColorStateList dividerControlColorStateList = AndroidUtils.createColorStateList(getContext(), false,
|
||||||
new int[][]{
|
R.color.keyboard_item_divider_control_color_light, R.color.keyboard_item_divider_control_color_light_pressed,
|
||||||
new int[]{android.R.attr.state_pressed},
|
0, 0);
|
||||||
new int[]{}
|
private ColorStateList numberColorStateList = AndroidUtils.createColorStateList(getContext(), false,
|
||||||
},
|
R.color.keyboard_item_text_color_light, R.color.keyboard_item_text_color_light_pressed,
|
||||||
new int[] {
|
0, 0);
|
||||||
getResources().getColor(R.color.keyboard_item_divider_control_color_light_pressed),
|
|
||||||
getResources().getColor(R.color.keyboard_item_divider_control_color_light)
|
|
||||||
}
|
|
||||||
);
|
|
||||||
private ColorStateList numberColorStateList = new ColorStateList(
|
|
||||||
new int[][]{
|
|
||||||
new int[]{android.R.attr.state_pressed},
|
|
||||||
new int[]{}
|
|
||||||
},
|
|
||||||
new int[] {
|
|
||||||
getResources().getColor(R.color.keyboard_item_text_color_light_pressed),
|
|
||||||
getResources().getColor(R.color.keyboard_item_text_color_light)
|
|
||||||
}
|
|
||||||
);
|
|
||||||
|
|
||||||
KeyboardAdapter(@NonNull Context context, @NonNull Object[] objects) {
|
KeyboardAdapter(@NonNull Context context, @NonNull Object[] objects) {
|
||||||
super(context, 0, objects);
|
super(context, 0, objects);
|
||||||
|
|
|
@ -30,8 +30,8 @@ public class EditPOIMenuBuilder extends MenuBuilder {
|
||||||
if (osmPoint instanceof OsmNotesPoint) {
|
if (osmPoint instanceof OsmNotesPoint) {
|
||||||
OsmNotesPoint notes = (OsmNotesPoint) osmPoint;
|
OsmNotesPoint notes = (OsmNotesPoint) osmPoint;
|
||||||
|
|
||||||
buildRow(view, R.drawable.ic_action_note_dark, notes.getText(), 0, false, null, false, 0, false, null, false);
|
buildRow(view, R.drawable.ic_action_note_dark, null, notes.getText(), 0, false, null, false, 0, false, null, false);
|
||||||
buildRow(view, R.drawable.ic_group, notes.getAuthor(), 0, false, null, false, 0, false, null, false);
|
buildRow(view, R.drawable.ic_group, null, notes.getAuthor(), 0, false, null, false, 0, false, null, false);
|
||||||
|
|
||||||
} else if (osmPoint instanceof OpenstreetmapPoint) {
|
} else if (osmPoint instanceof OpenstreetmapPoint) {
|
||||||
OpenstreetmapPoint point = (OpenstreetmapPoint) osmPoint;
|
OpenstreetmapPoint point = (OpenstreetmapPoint) osmPoint;
|
||||||
|
@ -56,7 +56,7 @@ public class EditPOIMenuBuilder extends MenuBuilder {
|
||||||
if (resId == 0) {
|
if (resId == 0) {
|
||||||
resId = R.drawable.ic_action_folder_stroke;
|
resId = R.drawable.ic_action_folder_stroke;
|
||||||
}
|
}
|
||||||
buildRow(view, resId, poiTranslation, 0, false, null, false, 0, false, null, false);
|
buildRow(view, resId, null, poiTranslation, 0, false, null, false, 0, false, null, false);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -67,11 +67,11 @@ public class EditPOIMenuBuilder extends MenuBuilder {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
String text = e.getKey() + "=" + e.getValue();
|
String text = e.getKey() + "=" + e.getValue();
|
||||||
buildRow(view, R.drawable.ic_action_info_dark, text, 0, false, null, false, 0, false, null, false);
|
buildRow(view, R.drawable.ic_action_info_dark, null, text, 0, false, null, false, 0, false, null, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
buildRow(view, R.drawable.ic_action_get_my_location, PointDescription.getLocationName(app,
|
buildRow(view, R.drawable.ic_action_get_my_location, null, PointDescription.getLocationName(app,
|
||||||
osmPoint.getLatitude(), osmPoint.getLongitude(), true)
|
osmPoint.getLatitude(), osmPoint.getLongitude(), true)
|
||||||
.replaceAll("\n", " "), 0, false, null, false, 0, false, null, false);
|
.replaceAll("\n", " "), 0, false, null, false, 0, false, null, false);
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,19 +5,24 @@ import android.graphics.drawable.Drawable;
|
||||||
import android.support.v7.app.AlertDialog;
|
import android.support.v7.app.AlertDialog;
|
||||||
|
|
||||||
import net.osmand.data.PointDescription;
|
import net.osmand.data.PointDescription;
|
||||||
|
import net.osmand.osm.PoiType;
|
||||||
import net.osmand.plus.OsmandPlugin;
|
import net.osmand.plus.OsmandPlugin;
|
||||||
import net.osmand.plus.R;
|
import net.osmand.plus.R;
|
||||||
import net.osmand.plus.activities.MapActivity;
|
import net.osmand.plus.activities.MapActivity;
|
||||||
import net.osmand.plus.mapcontextmenu.MenuController;
|
import net.osmand.plus.mapcontextmenu.MenuController;
|
||||||
import net.osmand.plus.osmedit.OsmPoint.Action;
|
import net.osmand.plus.osmedit.OsmPoint.Action;
|
||||||
import net.osmand.plus.osmedit.dialogs.SendPoiDialogFragment;
|
import net.osmand.plus.osmedit.dialogs.SendPoiDialogFragment;
|
||||||
|
import net.osmand.plus.render.RenderingIcons;
|
||||||
import net.osmand.util.Algorithms;
|
import net.osmand.util.Algorithms;
|
||||||
|
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
public class EditPOIMenuController extends MenuController {
|
public class EditPOIMenuController extends MenuController {
|
||||||
|
|
||||||
private OsmPoint osmPoint;
|
private OsmPoint osmPoint;
|
||||||
private OsmEditingPlugin plugin;
|
private OsmEditingPlugin plugin;
|
||||||
private String pointTypeStr;
|
private String category;
|
||||||
|
private String actionStr;
|
||||||
|
|
||||||
public EditPOIMenuController(final MapActivity mapActivity, PointDescription pointDescription, OsmPoint osmPoint) {
|
public EditPOIMenuController(final MapActivity mapActivity, PointDescription pointDescription, OsmPoint osmPoint) {
|
||||||
super(new EditPOIMenuBuilder(mapActivity, osmPoint), pointDescription, mapActivity);
|
super(new EditPOIMenuBuilder(mapActivity, osmPoint), pointDescription, mapActivity);
|
||||||
|
@ -70,30 +75,36 @@ public class EditPOIMenuController extends MenuController {
|
||||||
rightTitleButtonController.caption = getMapActivity().getString(R.string.shared_string_delete);
|
rightTitleButtonController.caption = getMapActivity().getString(R.string.shared_string_delete);
|
||||||
rightTitleButtonController.leftIconId = R.drawable.ic_action_delete_dark;
|
rightTitleButtonController.leftIconId = R.drawable.ic_action_delete_dark;
|
||||||
|
|
||||||
|
category = getCategory();
|
||||||
|
|
||||||
if (osmPoint.getGroup() == OsmPoint.Group.POI) {
|
if (osmPoint.getGroup() == OsmPoint.Group.POI) {
|
||||||
if(osmPoint.getAction() == Action.DELETE) {
|
if(osmPoint.getAction() == Action.DELETE) {
|
||||||
pointTypeStr = getMapActivity().getString(R.string.osm_edit_deleted_poi);
|
actionStr = getMapActivity().getString(R.string.osm_edit_deleted_poi);
|
||||||
} else if(osmPoint.getAction() == Action.MODIFY) {
|
} else if(osmPoint.getAction() == Action.MODIFY) {
|
||||||
pointTypeStr = getMapActivity().getString(R.string.osm_edit_modified_poi);
|
actionStr = getMapActivity().getString(R.string.osm_edit_modified_poi);
|
||||||
} else/* if(osmPoint.getAction() == Action.CREATE) */{
|
} else/* if(osmPoint.getAction() == Action.CREATE) */{
|
||||||
pointTypeStr = getMapActivity().getString(R.string.osm_edit_created_poi);
|
actionStr = getMapActivity().getString(R.string.osm_edit_created_poi);
|
||||||
}
|
}
|
||||||
|
|
||||||
} else if (osmPoint.getGroup() == OsmPoint.Group.BUG) {
|
} else if (osmPoint.getGroup() == OsmPoint.Group.BUG) {
|
||||||
if(osmPoint.getAction() == Action.DELETE) {
|
if(osmPoint.getAction() == Action.DELETE) {
|
||||||
pointTypeStr = getMapActivity().getString(R.string.osm_edit_removed_note);
|
actionStr = getMapActivity().getString(R.string.osm_edit_removed_note);
|
||||||
} else if(osmPoint.getAction() == Action.MODIFY) {
|
} else if(osmPoint.getAction() == Action.MODIFY) {
|
||||||
pointTypeStr = getMapActivity().getString(R.string.osm_edit_commented_note);
|
actionStr = getMapActivity().getString(R.string.osm_edit_commented_note);
|
||||||
} else if(osmPoint.getAction() == Action.REOPEN) {
|
} else if(osmPoint.getAction() == Action.REOPEN) {
|
||||||
pointTypeStr = getMapActivity().getString(R.string.osm_edit_reopened_note);
|
actionStr = getMapActivity().getString(R.string.osm_edit_reopened_note);
|
||||||
} else/* if(osmPoint.getAction() == Action.CREATE) */{
|
} else/* if(osmPoint.getAction() == Action.CREATE) */{
|
||||||
pointTypeStr = getMapActivity().getString(R.string.osm_edit_created_note);
|
actionStr = getMapActivity().getString(R.string.osm_edit_created_note);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
pointTypeStr = "";
|
actionStr = "";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getTypeStr() {
|
||||||
|
return category;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void setObject(Object object) {
|
protected void setObject(Object object) {
|
||||||
if (object instanceof OsmPoint) {
|
if (object instanceof OsmPoint) {
|
||||||
|
@ -112,21 +123,85 @@ public class EditPOIMenuController extends MenuController {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean needTypeStr() {
|
public boolean needTypeStr() {
|
||||||
return !Algorithms.isEmpty(pointTypeStr);
|
return !Algorithms.isEmpty(category);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Drawable getLeftIcon() {
|
public boolean displayDistanceDirection() {
|
||||||
return getIcon(R.drawable.ic_action_gabout_dark, R.color.created_poi_icon_color);
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getTypeStr() {
|
public String getAdditionalInfoStr() {
|
||||||
return pointTypeStr;
|
return actionStr;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getAdditionalInfoColor() {
|
||||||
|
if (osmPoint.getAction() == Action.DELETE) {
|
||||||
|
return R.color.color_osm_edit_delete;
|
||||||
|
} else if (osmPoint.getAction() == Action.MODIFY || osmPoint.getAction() == Action.REOPEN) {
|
||||||
|
return R.color.color_osm_edit_modify;
|
||||||
|
} else {
|
||||||
|
return R.color.color_osm_edit_create;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getRightIconId() {
|
||||||
|
if (osmPoint.getGroup() == OsmPoint.Group.POI) {
|
||||||
|
OpenstreetmapPoint osmP = (OpenstreetmapPoint) osmPoint;
|
||||||
|
int iconResId = 0;
|
||||||
|
String poiTranslation = osmP.getEntity().getTag(EditPoiData.POI_TYPE_TAG);
|
||||||
|
if (poiTranslation != null) {
|
||||||
|
Map<String, PoiType> poiTypeMap = getMapActivity().getMyApplication().getPoiTypes().getAllTranslatedNames(false);
|
||||||
|
PoiType poiType = poiTypeMap.get(poiTranslation.toLowerCase());
|
||||||
|
if (poiType != null) {
|
||||||
|
String id = null;
|
||||||
|
if (RenderingIcons.containsBigIcon(poiType.getIconKeyName())) {
|
||||||
|
id = poiType.getIconKeyName();
|
||||||
|
} else if (RenderingIcons.containsBigIcon(poiType.getOsmTag() + "_" + poiType.getOsmValue())) {
|
||||||
|
id = poiType.getOsmTag() + "_" + poiType.getOsmValue();
|
||||||
|
}
|
||||||
|
if (id != null) {
|
||||||
|
iconResId = RenderingIcons.getBigIconResourceId(id);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (iconResId == 0) {
|
||||||
|
iconResId = R.drawable.ic_type_info;
|
||||||
|
}
|
||||||
|
return iconResId;
|
||||||
|
} else if (osmPoint.getGroup() == OsmPoint.Group.BUG) {
|
||||||
|
return R.drawable.ic_type_bug;
|
||||||
|
} else {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getAdditionalInfoIconRes() {
|
||||||
|
if (osmPoint.getAction() == Action.DELETE) {
|
||||||
|
return R.drawable.ic_action_type_delete_16;
|
||||||
|
} else if (osmPoint.getAction() == Action.MODIFY || osmPoint.getAction() == Action.REOPEN) {
|
||||||
|
return R.drawable.ic_action_type_edit_16;
|
||||||
|
} else {
|
||||||
|
return R.drawable.ic_action_type_add_16;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean needStreetName() {
|
public boolean needStreetName() {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private String getCategory() {
|
||||||
|
String category = "";
|
||||||
|
if (osmPoint.getGroup() == OsmPoint.Group.POI) {
|
||||||
|
category = ((OpenstreetmapPoint) osmPoint).getEntity().getTag(EditPoiData.POI_TYPE_TAG);
|
||||||
|
} else if (osmPoint.getGroup() == OsmPoint.Group.BUG) {
|
||||||
|
category = getMapActivity().getString(R.string.osn_bug_name);
|
||||||
|
}
|
||||||
|
return category;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -73,7 +73,7 @@ public class OsmBugMenuController extends MenuController {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Drawable getLeftIcon() {
|
public Drawable getRightIcon() {
|
||||||
if (bug.isOpened()) {
|
if (bug.isOpened()) {
|
||||||
return getIcon(R.drawable.ic_action_gabout_dark, R.color.osm_bug_unresolved_icon_color);
|
return getIcon(R.drawable.ic_action_gabout_dark, R.color.osm_bug_unresolved_icon_color);
|
||||||
} else {
|
} else {
|
||||||
|
@ -95,7 +95,7 @@ public class OsmBugMenuController extends MenuController {
|
||||||
public void addPlainMenuItems(String typeStr, PointDescription pointDescription, LatLon latLon) {
|
public void addPlainMenuItems(String typeStr, PointDescription pointDescription, LatLon latLon) {
|
||||||
super.addPlainMenuItems(typeStr, pointDescription, latLon);
|
super.addPlainMenuItems(typeStr, pointDescription, latLon);
|
||||||
for (String description : bug.getCommentDescriptionList()) {
|
for (String description : bug.getCommentDescriptionList()) {
|
||||||
addPlainMenuItem(R.drawable.ic_action_note_dark, description, true, false, null);
|
addPlainMenuItem(R.drawable.ic_action_note_dark, null, description, true, false, null);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -96,7 +96,7 @@ public class OsMoMenuController extends MenuController {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Drawable getLeftIcon() {
|
public Drawable getRightIcon() {
|
||||||
if (isLight()) {
|
if (isLight()) {
|
||||||
return getIconOrig(R.drawable.widget_osmo_connected_location_day);
|
return getIconOrig(R.drawable.widget_osmo_connected_location_day);
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -64,17 +64,17 @@ public class ParkingPositionMenuController extends MenuController {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getAdditionalTypeStr() {
|
public int getAdditionalInfoIconRes() {
|
||||||
|
return R.drawable.ic_action_opening_hour_16;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getAdditionalInfoStr() {
|
||||||
return parkingLeftDescription;
|
return parkingLeftDescription;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean displayAdditionalTypeStrInHours() {
|
public int getAdditionalInfoColor() {
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int getTimeStrColor() {
|
|
||||||
return plugin.getParkingType() ? R.color.ctx_menu_amenity_closed_text_color : isLight() ? R.color.icon_color : R.color.dash_search_icon_dark;
|
return plugin.getParkingType() ? R.color.ctx_menu_amenity_closed_text_color : isLight() ? R.color.icon_color : R.color.dash_search_icon_dark;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -83,13 +83,18 @@ public class ParkingPositionMenuController extends MenuController {
|
||||||
return parkingTitle;
|
return parkingTitle;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean navigateInPedestrianMode() {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean displayDistanceDirection() {
|
public boolean displayDistanceDirection() {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Drawable getLeftIcon() {
|
public Drawable getRightIcon() {
|
||||||
return getIcon(R.drawable.ic_action_parking_dark, R.color.map_widget_blue);
|
return getIcon(R.drawable.ic_action_parking_dark, R.color.map_widget_blue);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
105
OsmAnd/src/net/osmand/plus/transport/TransportStopRoute.java
Normal file
105
OsmAnd/src/net/osmand/plus/transport/TransportStopRoute.java
Normal file
|
@ -0,0 +1,105 @@
|
||||||
|
package net.osmand.plus.transport;
|
||||||
|
|
||||||
|
import net.osmand.data.RotatedTileBox;
|
||||||
|
import net.osmand.data.TransportRoute;
|
||||||
|
import net.osmand.data.TransportStop;
|
||||||
|
import net.osmand.plus.OsmAndFormatter;
|
||||||
|
import net.osmand.plus.OsmandApplication;
|
||||||
|
import net.osmand.plus.R;
|
||||||
|
import net.osmand.render.RenderingRuleSearchRequest;
|
||||||
|
import net.osmand.render.RenderingRulesStorage;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public class TransportStopRoute {
|
||||||
|
public TransportStop refStop;
|
||||||
|
public TransportStopType type;
|
||||||
|
public String desc;
|
||||||
|
public TransportRoute route;
|
||||||
|
public TransportStop stop;
|
||||||
|
public int distance;
|
||||||
|
public boolean showWholeRoute;
|
||||||
|
private int cachedColor;
|
||||||
|
private boolean cachedNight;
|
||||||
|
|
||||||
|
public String getDescription(OsmandApplication ctx, boolean useDistance) {
|
||||||
|
if (useDistance && distance > 0) {
|
||||||
|
String nm = OsmAndFormatter.getFormattedDistance(distance, ctx);
|
||||||
|
if (refStop != null && !refStop.getName().equals(stop.getName())) {
|
||||||
|
nm = refStop.getName() + ", " + nm;
|
||||||
|
}
|
||||||
|
return desc + " (" + nm + ")";
|
||||||
|
}
|
||||||
|
return desc;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int calculateZoom(int startPosition, RotatedTileBox currentRotatedTileBox) {
|
||||||
|
RotatedTileBox cp = currentRotatedTileBox.copy();
|
||||||
|
boolean notContains = true;
|
||||||
|
while (cp.getZoom() > 12 && notContains) {
|
||||||
|
notContains = false;
|
||||||
|
List<TransportStop> sts = route.getForwardStops();
|
||||||
|
for (int i = startPosition; i < sts.size(); i++) {
|
||||||
|
TransportStop st = sts.get(startPosition);
|
||||||
|
if (!cp.containsLatLon(st.getLocation())) {
|
||||||
|
notContains = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
cp.setZoom(cp.getZoom() - 1);
|
||||||
|
}
|
||||||
|
return cp.getZoom();
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getColor(OsmandApplication ctx, boolean nightMode) {
|
||||||
|
if (cachedColor == 0 || cachedNight != nightMode) {
|
||||||
|
cachedColor = ctx.getResources().getColor(R.color.transport_route_line);
|
||||||
|
cachedNight = nightMode;
|
||||||
|
if (type != null) {
|
||||||
|
RenderingRulesStorage rrs = ctx.getRendererRegistry().getCurrentSelectedRenderer();
|
||||||
|
RenderingRuleSearchRequest req = new RenderingRuleSearchRequest(rrs);
|
||||||
|
req.setBooleanFilter(rrs.PROPS.R_NIGHT_MODE, nightMode);
|
||||||
|
String typeStr = type.getRendeAttr();
|
||||||
|
if (req.searchRenderingAttribute(typeStr)) {
|
||||||
|
cachedColor = req.getIntPropertyValue(rrs.PROPS.R_ATTR_COLOR_VALUE);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return cachedColor;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getTypeStrRes() {
|
||||||
|
if (type != null) {
|
||||||
|
switch (type) {
|
||||||
|
case BUS:
|
||||||
|
return R.string.poi_route_bus_ref;
|
||||||
|
case TRAM:
|
||||||
|
return R.string.poi_route_tram_ref;
|
||||||
|
case FERRY:
|
||||||
|
return R.string.poi_route_ferry_ref;
|
||||||
|
case TRAIN:
|
||||||
|
return R.string.poi_route_train_ref;
|
||||||
|
case SHARE_TAXI:
|
||||||
|
return R.string.poi_route_share_taxi_ref;
|
||||||
|
case FUNICULAR:
|
||||||
|
return R.string.poi_route_funicular_ref;
|
||||||
|
case LIGHT_RAIL:
|
||||||
|
return R.string.poi_route_light_rail_ref;
|
||||||
|
case MONORAIL:
|
||||||
|
return R.string.poi_route_monorail_ref;
|
||||||
|
case TROLLEYBUS:
|
||||||
|
return R.string.poi_route_trolleybus_ref;
|
||||||
|
case RAILWAY:
|
||||||
|
return R.string.poi_route_railway_ref;
|
||||||
|
case SUBWAY:
|
||||||
|
return R.string.poi_route_subway_ref;
|
||||||
|
default:
|
||||||
|
return R.string.poi_filter_public_transport;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
return R.string.poi_filter_public_transport;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
54
OsmAnd/src/net/osmand/plus/transport/TransportStopType.java
Normal file
54
OsmAnd/src/net/osmand/plus/transport/TransportStopType.java
Normal file
|
@ -0,0 +1,54 @@
|
||||||
|
package net.osmand.plus.transport;
|
||||||
|
|
||||||
|
import net.osmand.plus.R;
|
||||||
|
|
||||||
|
public enum TransportStopType {
|
||||||
|
BUS(R.drawable.mx_route_bus_ref, R.drawable.mx_route_bus_ref, "routeBusColor"),
|
||||||
|
FERRY(R.drawable.mx_route_ferry_ref, R.drawable.mx_route_ferry_ref, "routeFerryColor"),
|
||||||
|
FUNICULAR(R.drawable.mx_route_funicular_ref, R.drawable.mx_route_funicular_ref, "routeFunicularColor"),
|
||||||
|
LIGHT_RAIL(R.drawable.mx_route_light_rail_ref, R.drawable.mx_route_light_rail_ref, "routeLightrailColor"),
|
||||||
|
MONORAIL(R.drawable.mx_route_monorail_ref, R.drawable.mx_route_monorail_ref, "routeLightrailColor"),
|
||||||
|
RAILWAY(R.drawable.mx_route_railway_ref, R.drawable.mx_route_railway_ref, "routeTrainColor"),
|
||||||
|
SHARE_TAXI(R.drawable.mx_route_share_taxi_ref, R.drawable.mx_route_share_taxi_ref, "routeShareTaxiColor"),
|
||||||
|
TRAIN(R.drawable.mx_route_train_ref, R.drawable.mx_route_train_ref, "routeTrainColor"),
|
||||||
|
TRAM(R.drawable.mx_route_tram_ref, R.drawable.mx_railway_tram_stop, "routeTramColor"),
|
||||||
|
TROLLEYBUS(R.drawable.mx_route_trolleybus_ref, R.drawable.mx_route_trolleybus_ref, "routeTrolleybusColor"),
|
||||||
|
SUBWAY(R.drawable.mx_subway_station, R.drawable.mx_subway_station, "routeTrainColor");
|
||||||
|
|
||||||
|
final int resId;
|
||||||
|
final int topResId;
|
||||||
|
final String renderAttr;
|
||||||
|
|
||||||
|
TransportStopType(int resId, int topResId, String renderAttr) {
|
||||||
|
this.resId = resId;
|
||||||
|
this.topResId = topResId;
|
||||||
|
this.renderAttr = renderAttr;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getResourceId() {
|
||||||
|
return resId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getTopResourceId() {
|
||||||
|
return topResId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getRendeAttr() {
|
||||||
|
return renderAttr;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isTopType() {
|
||||||
|
return this == TRAM || this == SUBWAY;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static TransportStopType findType(String typeName) {
|
||||||
|
String tName = typeName.toUpperCase();
|
||||||
|
for (TransportStopType t : values()) {
|
||||||
|
if (t.name().equals(tName)) {
|
||||||
|
return t;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -504,7 +504,7 @@ public class ContextMenuLayer extends OsmandMapLayer {
|
||||||
view.setLatLon(lat, lon);
|
view.setLatLon(lat, lon);
|
||||||
|
|
||||||
mInChangeMarkerPositionMode = true;
|
mInChangeMarkerPositionMode = true;
|
||||||
mMoveMarkerBottomSheetHelper.show(menu.getLeftIcon());
|
mMoveMarkerBottomSheetHelper.show(menu.getRightIcon());
|
||||||
mark(View.INVISIBLE, R.id.map_ruler_layout,
|
mark(View.INVISIBLE, R.id.map_ruler_layout,
|
||||||
R.id.map_left_widgets_panel, R.id.map_right_widgets_panel, R.id.map_center_info);
|
R.id.map_left_widgets_panel, R.id.map_right_widgets_panel, R.id.map_center_info);
|
||||||
|
|
||||||
|
|
|
@ -295,7 +295,6 @@ public class MapControlsLayer extends OsmandMapLayer {
|
||||||
boolean nightMode = mapActivity.getMyApplication().getDaynightHelper().isNightModeForMapControls();
|
boolean nightMode = mapActivity.getMyApplication().getDaynightHelper().isNightModeForMapControls();
|
||||||
ImageView cancelRouteButton = (ImageView) main.findViewById(R.id.map_cancel_route_button);
|
ImageView cancelRouteButton = (ImageView) main.findViewById(R.id.map_cancel_route_button);
|
||||||
cancelRouteButton.setImageDrawable(app.getIconsCache().getIcon(R.drawable.map_action_cancel, nightMode ? R.color.route_info_control_icon_color_dark : R.color.route_info_control_icon_color_light));
|
cancelRouteButton.setImageDrawable(app.getIconsCache().getIcon(R.drawable.map_action_cancel, nightMode ? R.color.route_info_control_icon_color_dark : R.color.route_info_control_icon_color_light));
|
||||||
AndroidUtils.setBackground(mapActivity, cancelRouteButton, nightMode, R.drawable.dashboard_button_light, R.drawable.dashboard_button_dark);
|
|
||||||
cancelRouteButton.setOnClickListener(new View.OnClickListener() {
|
cancelRouteButton.setOnClickListener(new View.OnClickListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onClick(View v) {
|
public void onClick(View v) {
|
||||||
|
@ -305,7 +304,6 @@ public class MapControlsLayer extends OsmandMapLayer {
|
||||||
|
|
||||||
ImageView waypointsButton = (ImageView) main.findViewById(R.id.map_waypoints_route_button);
|
ImageView waypointsButton = (ImageView) main.findViewById(R.id.map_waypoints_route_button);
|
||||||
waypointsButton.setImageDrawable(app.getIconsCache().getIcon(R.drawable.map_action_flag_dark, nightMode ? R.color.route_info_control_icon_color_dark : R.color.route_info_control_icon_color_light));
|
waypointsButton.setImageDrawable(app.getIconsCache().getIcon(R.drawable.map_action_flag_dark, nightMode ? R.color.route_info_control_icon_color_dark : R.color.route_info_control_icon_color_light));
|
||||||
AndroidUtils.setBackground(mapActivity, waypointsButton, nightMode, R.drawable.dashboard_button_light, R.drawable.dashboard_button_dark);
|
|
||||||
waypointsButton.setOnClickListener(new View.OnClickListener() {
|
waypointsButton.setOnClickListener(new View.OnClickListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onClick(View v) {
|
public void onClick(View v) {
|
||||||
|
@ -316,7 +314,6 @@ public class MapControlsLayer extends OsmandMapLayer {
|
||||||
ImageView options = (ImageView) main.findViewById(R.id.map_options_route_button);
|
ImageView options = (ImageView) main.findViewById(R.id.map_options_route_button);
|
||||||
options.setImageDrawable(!routeInfo ? app.getIconsCache().getIcon(R.drawable.map_action_settings,
|
options.setImageDrawable(!routeInfo ? app.getIconsCache().getIcon(R.drawable.map_action_settings,
|
||||||
R.color.osmand_orange) : app.getIconsCache().getIcon(R.drawable.map_action_settings, nightMode ? R.color.route_info_control_icon_color_dark : R.color.route_info_control_icon_color_light));
|
R.color.osmand_orange) : app.getIconsCache().getIcon(R.drawable.map_action_settings, nightMode ? R.color.route_info_control_icon_color_dark : R.color.route_info_control_icon_color_light));
|
||||||
AndroidUtils.setBackground(mapActivity, options, nightMode, R.drawable.dashboard_button_light, R.drawable.dashboard_button_dark);
|
|
||||||
options.setOnClickListener(new View.OnClickListener() {
|
options.setOnClickListener(new View.OnClickListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onClick(View v) {
|
public void onClick(View v) {
|
||||||
|
|
|
@ -18,6 +18,7 @@ import android.support.v4.content.ContextCompat;
|
||||||
import android.support.v4.view.MenuItemCompat;
|
import android.support.v4.view.MenuItemCompat;
|
||||||
import android.support.v7.widget.PopupMenu;
|
import android.support.v7.widget.PopupMenu;
|
||||||
import android.support.v7.widget.Toolbar;
|
import android.support.v7.widget.Toolbar;
|
||||||
|
import android.text.Html;
|
||||||
import android.text.util.Linkify;
|
import android.text.util.Linkify;
|
||||||
import android.util.TypedValue;
|
import android.util.TypedValue;
|
||||||
import android.view.Gravity;
|
import android.view.Gravity;
|
||||||
|
@ -289,13 +290,6 @@ public class POIMapLayer extends OsmandMapLayer implements ContextMenuLayer.ICon
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void showWikipediaDialog(Context ctx, OsmandApplication app, Amenity a) {
|
|
||||||
String lang = app.getSettings().MAP_PREFERRED_LOCALE.get();
|
|
||||||
if (a.getType().isWiki()) {
|
|
||||||
showWiki(ctx, app, a, lang);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void showDescriptionDialog(Context ctx, OsmandApplication app, String text, String title) {
|
public static void showDescriptionDialog(Context ctx, OsmandApplication app, String text, String title) {
|
||||||
showText(ctx, app, text, title);
|
showText(ctx, app, text, title);
|
||||||
}
|
}
|
||||||
|
@ -309,122 +303,6 @@ public class POIMapLayer extends OsmandMapLayer implements ContextMenuLayer.ICon
|
||||||
return typedvalueattr.resourceId;
|
return typedvalueattr.resourceId;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@SuppressWarnings("deprecation")
|
|
||||||
private static void showWiki(final Context ctx, final OsmandApplication app, final Amenity a, final String lang) {
|
|
||||||
String preferredLang = lang;
|
|
||||||
if (Algorithms.isEmpty(preferredLang)) {
|
|
||||||
preferredLang = app.getLanguage();
|
|
||||||
}
|
|
||||||
final Dialog dialog = new Dialog(ctx,
|
|
||||||
app.getSettings().isLightContent() ?
|
|
||||||
R.style.OsmandLightTheme :
|
|
||||||
R.style.OsmandDarkTheme);
|
|
||||||
final String title = Algorithms.isEmpty(preferredLang) ? a.getName() : a.getName(preferredLang);
|
|
||||||
LinearLayout ll = new LinearLayout(ctx);
|
|
||||||
ll.setOrientation(LinearLayout.VERTICAL);
|
|
||||||
|
|
||||||
final Toolbar topBar = new Toolbar(ctx);
|
|
||||||
topBar.setClickable(true);
|
|
||||||
Drawable back = app.getIconsCache().getIcon(R.drawable.ic_arrow_back);
|
|
||||||
topBar.setNavigationIcon(back);
|
|
||||||
topBar.setNavigationContentDescription(R.string.access_shared_string_navigate_up);
|
|
||||||
topBar.setTitle(title);
|
|
||||||
topBar.setBackgroundColor(ContextCompat.getColor(ctx, getResIdFromAttribute(ctx, R.attr.pstsTabBackground)));
|
|
||||||
topBar.setTitleTextColor(ContextCompat.getColor(ctx, getResIdFromAttribute(ctx, R.attr.pstsTextColor)));
|
|
||||||
|
|
||||||
String lng = a.getContentLanguage("content", preferredLang, "en");
|
|
||||||
if (Algorithms.isEmpty(lng)) {
|
|
||||||
lng = "en";
|
|
||||||
}
|
|
||||||
|
|
||||||
final String langSelected = lng;
|
|
||||||
String content = a.getDescription(langSelected);
|
|
||||||
final Button bottomBar = new Button(ctx);
|
|
||||||
bottomBar.setText(R.string.read_full_article);
|
|
||||||
bottomBar.setOnClickListener(new View.OnClickListener() {
|
|
||||||
@Override
|
|
||||||
public void onClick(View v) {
|
|
||||||
String article = "https://" + langSelected.toLowerCase() + ".wikipedia.org/wiki/" + title.replace(' ', '_');
|
|
||||||
Intent i = new Intent(Intent.ACTION_VIEW);
|
|
||||||
i.setData(Uri.parse(article));
|
|
||||||
ctx.startActivity(i);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
MenuItem mi = topBar.getMenu().add(langSelected.toUpperCase()).setOnMenuItemClickListener(new OnMenuItemClickListener() {
|
|
||||||
@Override
|
|
||||||
public boolean onMenuItemClick(final MenuItem item) {
|
|
||||||
showPopupLangMenu(ctx, topBar, app, a, dialog, langSelected);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
MenuItemCompat.setShowAsAction(mi, MenuItem.SHOW_AS_ACTION_ALWAYS);
|
|
||||||
topBar.setNavigationOnClickListener(new View.OnClickListener() {
|
|
||||||
@Override
|
|
||||||
public void onClick(final View v) {
|
|
||||||
dialog.dismiss();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
final WebView wv = new WebView(ctx);
|
|
||||||
WebSettings settings = wv.getSettings();
|
|
||||||
settings.setDefaultTextEncodingName("utf-8");
|
|
||||||
|
|
||||||
settings.setBuiltInZoomControls(true);
|
|
||||||
settings.setDisplayZoomControls(false);
|
|
||||||
settings.setSupportZoom(true);
|
|
||||||
|
|
||||||
//Scale web view font size with system font size
|
|
||||||
float scale = ctx.getResources().getConfiguration().fontScale;
|
|
||||||
if (android.os.Build.VERSION.SDK_INT >= 14) {
|
|
||||||
settings.setTextZoom((int) (scale * 100f));
|
|
||||||
} else {
|
|
||||||
if (scale <= 0.7f) {
|
|
||||||
settings.setTextSize(WebSettings.TextSize.SMALLEST);
|
|
||||||
} else if (scale <= 0.85f) {
|
|
||||||
settings.setTextSize(WebSettings.TextSize.SMALLER);
|
|
||||||
} else if (scale <= 1.0f) {
|
|
||||||
settings.setTextSize(WebSettings.TextSize.NORMAL);
|
|
||||||
} else if (scale <= 1.15f) {
|
|
||||||
settings.setTextSize(WebSettings.TextSize.LARGER);
|
|
||||||
} else {
|
|
||||||
settings.setTextSize(WebSettings.TextSize.LARGEST);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
wv.loadDataWithBaseURL(null, content, "text/html", "UTF-8", null);
|
|
||||||
// wv.loadUrl(OsMoService.SIGN_IN_URL + app.getSettings().OSMO_DEVICE_KEY.get());
|
|
||||||
//For pinch zooming to work WebView must not be inside ScrollView
|
|
||||||
//ScrollView scrollView = new ScrollView(ctx);
|
|
||||||
ll.addView(topBar);
|
|
||||||
LayoutParams lp = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, 0);
|
|
||||||
lp.weight = 1;
|
|
||||||
//ll.addView(scrollView, lp);
|
|
||||||
//scrollView.addView(wv);
|
|
||||||
ll.addView(wv, lp);
|
|
||||||
ll.addView(bottomBar, new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT));
|
|
||||||
dialog.setContentView(ll);
|
|
||||||
wv.setFocusable(true);
|
|
||||||
wv.setFocusableInTouchMode(true);
|
|
||||||
wv.requestFocus(View.FOCUS_DOWN);
|
|
||||||
wv.setOnTouchListener(new View.OnTouchListener() {
|
|
||||||
@Override
|
|
||||||
public boolean onTouch(View v, MotionEvent event) {
|
|
||||||
switch (event.getAction()) {
|
|
||||||
case MotionEvent.ACTION_DOWN:
|
|
||||||
case MotionEvent.ACTION_UP:
|
|
||||||
if (!v.hasFocus()) {
|
|
||||||
v.requestFocus();
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
dialog.setCancelable(true);
|
|
||||||
dialog.show();
|
|
||||||
}
|
|
||||||
|
|
||||||
private static void showText(final Context ctx, final OsmandApplication app, final String text, String title) {
|
private static void showText(final Context ctx, final OsmandApplication app, final String text, String title) {
|
||||||
final Dialog dialog = new Dialog(ctx,
|
final Dialog dialog = new Dialog(ctx,
|
||||||
app.getSettings().isLightContent() ? R.style.OsmandLightTheme : R.style.OsmandDarkTheme);
|
app.getSettings().isLightContent() ? R.style.OsmandLightTheme : R.style.OsmandDarkTheme);
|
||||||
|
@ -471,50 +349,6 @@ public class POIMapLayer extends OsmandMapLayer implements ContextMenuLayer.ICon
|
||||||
dialog.show();
|
dialog.show();
|
||||||
}
|
}
|
||||||
|
|
||||||
protected static void showPopupLangMenu(final Context ctx, Toolbar tb,
|
|
||||||
final OsmandApplication app, final Amenity a,
|
|
||||||
final Dialog dialog, final String langSelected) {
|
|
||||||
final PopupMenu optionsMenu = new PopupMenu(ctx, tb, Gravity.RIGHT);
|
|
||||||
Set<String> namesSet = new TreeSet<>();
|
|
||||||
namesSet.addAll(a.getNames("content", "en"));
|
|
||||||
namesSet.addAll(a.getNames("description", "en"));
|
|
||||||
|
|
||||||
Map<String, String> names = new HashMap<>();
|
|
||||||
for (String n : namesSet) {
|
|
||||||
names.put(n, FileNameTranslationHelper.getVoiceName(ctx, n));
|
|
||||||
}
|
|
||||||
String selectedLangName = names.get(langSelected);
|
|
||||||
if (selectedLangName != null) {
|
|
||||||
names.remove(langSelected);
|
|
||||||
}
|
|
||||||
Map<String, String> sortedNames = AndroidUtils.sortByValue(names);
|
|
||||||
|
|
||||||
if (selectedLangName != null) {
|
|
||||||
MenuItem item = optionsMenu.getMenu().add(selectedLangName);
|
|
||||||
item.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
|
|
||||||
@Override
|
|
||||||
public boolean onMenuItemClick(MenuItem item) {
|
|
||||||
dialog.dismiss();
|
|
||||||
showWiki(ctx, app, a, langSelected);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
for (final Map.Entry<String, String> e : sortedNames.entrySet()) {
|
|
||||||
MenuItem item = optionsMenu.getMenu().add(e.getValue());
|
|
||||||
item.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
|
|
||||||
@Override
|
|
||||||
public boolean onMenuItemClick(MenuItem item) {
|
|
||||||
dialog.dismiss();
|
|
||||||
showWiki(ctx, app, a, e.getKey());
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
optionsMenu.show();
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public PointDescription getObjectName(Object o) {
|
public PointDescription getObjectName(Object o) {
|
||||||
if (o instanceof Amenity) {
|
if (o instanceof Amenity) {
|
||||||
|
|
|
@ -16,11 +16,11 @@ import net.osmand.data.PointDescription;
|
||||||
import net.osmand.data.QuadRect;
|
import net.osmand.data.QuadRect;
|
||||||
import net.osmand.data.QuadTree;
|
import net.osmand.data.QuadTree;
|
||||||
import net.osmand.data.RotatedTileBox;
|
import net.osmand.data.RotatedTileBox;
|
||||||
import net.osmand.data.TransportRoute;
|
|
||||||
import net.osmand.data.TransportStop;
|
import net.osmand.data.TransportStop;
|
||||||
import net.osmand.osm.edit.Node;
|
import net.osmand.osm.edit.Node;
|
||||||
import net.osmand.osm.edit.Way;
|
import net.osmand.osm.edit.Way;
|
||||||
import net.osmand.plus.R;
|
import net.osmand.plus.R;
|
||||||
|
import net.osmand.plus.transport.TransportStopRoute;
|
||||||
import net.osmand.plus.activities.MapActivity;
|
import net.osmand.plus.activities.MapActivity;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
@ -44,7 +44,7 @@ public class TransportStopsLayer extends OsmandMapLayer implements ContextMenuLa
|
||||||
private RenderingLineAttributes attrs;
|
private RenderingLineAttributes attrs;
|
||||||
|
|
||||||
private MapLayerData<List<TransportStop>> data;
|
private MapLayerData<List<TransportStop>> data;
|
||||||
private TransportRoute route = null;
|
private TransportStopRoute stopRoute = null;
|
||||||
|
|
||||||
private boolean showTransportStops;
|
private boolean showTransportStops;
|
||||||
private Path path;
|
private Path path;
|
||||||
|
@ -66,8 +66,7 @@ public class TransportStopsLayer extends OsmandMapLayer implements ContextMenuLa
|
||||||
stopBus = BitmapFactory.decodeResource(view.getResources(), R.drawable.map_transport_stop_bus);
|
stopBus = BitmapFactory.decodeResource(view.getResources(), R.drawable.map_transport_stop_bus);
|
||||||
stopSmall = BitmapFactory.decodeResource(view.getResources(), R.drawable.map_transport_stop_small);
|
stopSmall = BitmapFactory.decodeResource(view.getResources(), R.drawable.map_transport_stop_small);
|
||||||
attrs = new RenderingLineAttributes("transport_route");
|
attrs = new RenderingLineAttributes("transport_route");
|
||||||
attrs.defaultWidth = (int) (12 * view.getDensity());
|
attrs.defaultWidth = (int) (6 * view.getDensity());
|
||||||
attrs.defaultColor = view.getResources().getColor(R.color.transport_route_line);
|
|
||||||
data = new OsmandMapLayer.MapLayerData<List<TransportStop>>() {
|
data = new OsmandMapLayer.MapLayerData<List<TransportStop>>() {
|
||||||
{
|
{
|
||||||
ZOOM_THRESHOLD = 0;
|
ZOOM_THRESHOLD = 0;
|
||||||
|
@ -143,12 +142,12 @@ public class TransportStopsLayer extends OsmandMapLayer implements ContextMenuLa
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public TransportRoute getRoute() {
|
public TransportStopRoute getRoute() {
|
||||||
return route;
|
return stopRoute;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setRoute(TransportRoute route) {
|
public void setRoute(TransportStopRoute route) {
|
||||||
this.route = route;
|
this.stopRoute = route;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isShowTransportStops() {
|
public boolean isShowTransportStops() {
|
||||||
|
@ -176,17 +175,18 @@ public class TransportStopsLayer extends OsmandMapLayer implements ContextMenuLa
|
||||||
return (int) (r * tb.getDensity());
|
return (int) (r * tb.getDensity());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onPrepareBufferImage(Canvas canvas, RotatedTileBox tb, DrawSettings settings) {
|
public void onPrepareBufferImage(Canvas canvas, RotatedTileBox tb, DrawSettings settings) {
|
||||||
List<TransportStop> objects = null;
|
List<TransportStop> objects = null;
|
||||||
if (tb.getZoom() >= startZoomRoute) {
|
if (tb.getZoom() >= startZoomRoute) {
|
||||||
if (route != null) {
|
if (stopRoute != null) {
|
||||||
objects = route.getForwardStops();
|
objects = stopRoute.route.getForwardStops();
|
||||||
|
int color = stopRoute.getColor(mapActivity.getMyApplication(), settings.isNightMode());
|
||||||
|
attrs.paint.setColor(color);
|
||||||
attrs.updatePaints(view, settings, tb);
|
attrs.updatePaints(view, settings, tb);
|
||||||
try {
|
try {
|
||||||
path.reset();
|
path.reset();
|
||||||
List<Way> ws = route.getForwardWays();
|
List<Way> ws = stopRoute.route.getForwardWays();
|
||||||
if (ws != null) {
|
if (ws != null) {
|
||||||
for (Way w : ws) {
|
for (Way w : ws) {
|
||||||
TIntArrayList tx = new TIntArrayList();
|
TIntArrayList tx = new TIntArrayList();
|
||||||
|
@ -286,8 +286,8 @@ public class TransportStopsLayer extends OsmandMapLayer implements ContextMenuLa
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void collectObjectsFromPoint(PointF point, RotatedTileBox tileBox, List<Object> res, boolean unknownLocation) {
|
public void collectObjectsFromPoint(PointF point, RotatedTileBox tileBox, List<Object> res, boolean unknownLocation) {
|
||||||
if(tileBox.getZoom() >= startZoomRoute && route != null) {
|
if(tileBox.getZoom() >= startZoomRoute && stopRoute != null) {
|
||||||
getFromPoint(tileBox, point, res, route.getForwardStops());
|
getFromPoint(tileBox, point, res, stopRoute.route.getForwardStops());
|
||||||
} else if (tileBox.getZoom() >= startZoom && data.getResults() != null) {
|
} else if (tileBox.getZoom() >= startZoom && data.getResults() != null) {
|
||||||
getFromPoint(tileBox, point, res, data.getResults());
|
getFromPoint(tileBox, point, res, data.getResults());
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue