This commit is contained in:
Denis 2015-01-31 11:08:54 +02:00
commit 432bbc20b0
80 changed files with 717 additions and 347 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

View file

@ -0,0 +1,14 @@
<?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_card_shadow" />
</item>
<item>
<shape>
<solid
android:color="@color/card_bg_color_dark" />
<corners
android:radius="2dp" />
</shape>
</item>
</layer-list>

View file

@ -0,0 +1,14 @@
<?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_card_shadow" />
</item>
<item>
<shape>
<solid
android:color="@color/card_bg_color_light" />
<corners
android:radius="2dp" />
</shape>
</item>
</layer-list>

View file

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid
android:color="#ff8f00" />
<corners
android:radius="3dp" />
</shape>

View file

@ -1,6 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@color/dashboard_divider" android:state_selected="true"/>
<item android:drawable="@color/dashboard_divider" android:state_pressed="true"/>
</selector>

View file

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:drawable="@color/dashboard_divider_dark"
android:state_selected="true"/>
<item
android:drawable="@color/dashboard_divider_dark"
android:state_pressed="true"/>
</selector>

View file

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:drawable="@color/dashboard_divider_light"
android:state_selected="true"/>
<item
android:drawable="@color/dashboard_divider_light"
android:state_pressed="true"/>
</selector>

View file

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:top="6dp"
android:right="2dp">
<bitmap
android:src="@drawable/ic_overflow_menu_dark"
android:gravity="top|end" />
</item>
</layer-list>

View file

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:top="6dp"
android:right="2dp">
<bitmap
android:src="@drawable/ic_overflow_menu_light"
android:gravity="top|end" />
</item>
</layer-list>

View file

@ -3,7 +3,7 @@
android:id="@+id/search"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/bg_cardui"
android:background="?attr/card_bg"
android:orientation="vertical" >
<LinearLayout
@ -12,19 +12,19 @@
<TextView
android:id="@+id/search_for"
style="@style/DashboardSubHeader"
style="?attr/dashboardSubHeaderStyle"
android:layout_width="wrap_content"
android:text="@string/search_for" />
<Button
android:id="@+id/recents"
style="@style/DashboardGeneralButton"
style="?attr/dashboardGeneralButtonStyle"
android:text="@string/recents" />
</LinearLayout>
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="@color/dashboard_divider" />
android:background="?attr/dashboard_divider" />
<LinearLayout
android:layout_width="match_parent"
@ -40,7 +40,7 @@
<View
android:layout_width="1dp"
android:layout_height="match_parent"
android:background="@color/dashboard_divider" />
android:background="?attr/dashboard_divider" />
<Button
android:id="@+id/address"
@ -51,7 +51,7 @@
<View
android:layout_width="1dp"
android:layout_height="match_parent"
android:background="@color/dashboard_divider" />
android:background="?attr/dashboard_divider" />
<Button
android:id="@+id/coord"

View file

@ -2,7 +2,7 @@
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/main_notes"
android:background="@drawable/bg_cardui"
android:background="?attr/card_bg"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
@ -12,10 +12,10 @@
android:layout_height="@dimen/dashHeaderHeight">
<TextView android:id="@+id/notes_text"
android:text="@string/map_widget_av_notes"
style="@style/DashboardSubHeader"/>
style="?attr/dashboardSubHeaderStyle"/>
<Button android:id="@+id/show_all"
android:text="@string/show_all"
style="@style/DashboardGeneralButton"/>
style="?attr/dashboardGeneralButtonStyle"/>
</LinearLayout>
<LinearLayout android:id="@+id/notes"
android:orientation="vertical"

View file

@ -2,7 +2,7 @@
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/main_fav"
android:background="@drawable/bg_cardui"
android:background="?attr/card_bg"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
@ -11,10 +11,10 @@
android:layout_height="@dimen/dashHeaderHeight">
<TextView android:id="@+id/fav_text"
android:text="@string/my_data_Button"
style="@style/DashboardSubHeader"/>
style="?attr/dashboardSubHeaderStyle"/>
<Button android:id="@+id/show_all"
android:text="@string/show_all"
style="@style/DashboardGeneralButton"/>
style="?attr/dashboardGeneralButtonStyle"/>
</LinearLayout>
<LinearLayout android:id="@+id/items"
android:orientation="vertical"

View file

@ -2,7 +2,7 @@
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:background="@drawable/bg_cardui"
android:background="?attr/card_bg"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView android:id="@+id/message"
@ -13,7 +13,7 @@
android:textColor="@color/dashboard_black"
android:layout_gravity="center_horizontal"/>
<View android:layout_width="match_parent"
android:background="@color/dashboard_divider"
android:background="?attr/dashboard_divider"
android:layout_height="1dp"/>
<LinearLayout android:layout_width="fill_parent"
android:orientation="horizontal"
@ -24,7 +24,7 @@
android:text="@string/dash_download_manage"
style="@style/DashboardGeneralButton"/>
<View android:layout_width="1dp"
android:background="@color/dashboard_divider"
android:background="?attr/dashboard_divider"
android:layout_height="match_parent"/>
<Button android:id="@+id/download_new_map"
android:layout_width="0dp"

View file

@ -2,7 +2,7 @@
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:background="@drawable/bg_cardui"
android:background="?attr/card_bg"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<LinearLayout android:orientation="horizontal"
@ -26,7 +26,7 @@
</LinearLayout>
<View android:layout_width="match_parent"
android:background="@color/dashboard_divider"
android:background="?attr/dashboard_divider"
android:layout_height="1dp"/>
<LinearLayout android:layout_width="fill_parent"
android:orientation="horizontal"
@ -37,7 +37,7 @@
android:text="@string/send_report"
style="@style/DashboardGeneralButton"/>
<View android:layout_width="1dp"
android:background="@color/dashboard_divider"
android:background="?attr/dashboard_divider"
android:layout_height="match_parent"/>
<Button android:id="@+id/error_cancel"
android:layout_width="0dp"

View file

@ -3,10 +3,10 @@
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:background="@drawable/dashboard_button"
android:background="?attr/dashboard_button"
android:layout_height="@dimen/dashListItemHeight">
<View android:layout_width="match_parent"
android:background="@color/dashboard_divider"
android:background="?attr/dashboard_divider"
android:layout_height="1dp"/>
<LinearLayout android:orientation="horizontal"
android:layout_width="match_parent"
@ -59,7 +59,7 @@
<ImageButton android:id="@+id/navigate_to"
android:layout_gravity="center_vertical"
android:src="@drawable/ic_action_gdirections_light"
android:background="@drawable/dashboard_button"
android:background="?attr/dashboard_button"
android:layout_marginLeft="@dimen/dashFavIconMargin"
android:layout_width="@dimen/dashListItemHeight"
android:layout_height="@dimen/dashListItemHeight"/>

View file

@ -4,7 +4,7 @@
android:layout_width="match_parent"
android:layout_height="@dimen/dashListItemHeight">
<View android:layout_width="match_parent"
android:background="@color/dashboard_divider"
android:background="?attr/dashboard_divider"
android:layout_height="1dp"/>
<LinearLayout android:orientation="horizontal"
android:layout_width="match_parent"

View file

@ -2,7 +2,7 @@
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:background="@drawable/bg_cardui"
android:background="?attr/card_bg"
android:layout_width="fill_parent"
android:layout_height="wrap_content">

View file

@ -3,11 +3,11 @@
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:background="@drawable/dashboard_button"
android:background="?attr/dashboard_button"
android:layout_height="@dimen/dashListItemHeight">
<View android:layout_width="match_parent"
android:id="@+id/divider"
android:background="@color/dashboard_divider"
android:background="?attr/dashboard_divider"
android:layout_height="1dp"/>
<LinearLayout android:orientation="horizontal"
android:layout_width="match_parent"
@ -43,7 +43,7 @@
<ImageButton android:id="@+id/play"
android:src="@drawable/ic_play_light"
android:background="@drawable/dashboard_button"
android:background="?attr/dashboard_button"
android:layout_gravity="center_vertical"
android:layout_marginLeft="@dimen/dashFavIconMargin"
android:layout_width="@dimen/dashListItemHeight"

View file

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:background="@drawable/bg_cardui"
android:background="?attr/card_bg"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout android:id="@+id/header_layout"
@ -10,10 +10,10 @@
android:layout_height="@dimen/dashHeaderHeight">
<TextView android:id="@+id/osmo_text"
android:text="@string/map_widget_av_notes"
style="@style/DashboardSubHeader"/>
style="?attr/dashboardSubHeaderStyle"/>
<Button android:id="@+id/manage"
android:text="@string/show_all"
style="@style/DashboardGeneralButton"/>
style="?attr/dashboardGeneralButtonStyle"/>
</LinearLayout>
<LinearLayout android:orientation="vertical"
@ -23,17 +23,18 @@
android:layout_width="fill_parent"
android:layout_height="@dimen/dashHeaderHeight">
<TextView android:text="@string/my_location"
style="@style/DashboardSubHeader"
style="?attr/dashboardSubHeaderStyle"
android:layout_weight="1"/>
<Button android:id="@+id/share"
android:text="@string/show_all"
style="@style/DashboardGeneralButton"/>
style="?attr/dashboardGeneralButtonStyle"/>
<include layout="@layout/check_item_rel" />
</LinearLayout>
<View android:background="@color/dashboard_divider"
android:layout_width="match_parent"
android:layout_height="1dp"/>
<View
android:background="?attr/dashboard_divider"
android:layout_width="match_parent"
android:layout_height="1dp"/>
<LinearLayout android:orientation="horizontal"
android:layout_width="match_parent"

View file

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:background="@drawable/bg_cardui"
android:background="?attr/card_bg"
android:layout_width="match_parent"
android:layout_height="match_parent">

View file

@ -1,48 +1,44 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="@color/dashboard_divider" />
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:osmand="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="?attr/dashboard_divider" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:paddingLeft="@dimen/dashFavIconMargin"
android:paddingBottom="@dimen/dashPluginPadding"
android:paddingRight="@dimen/dashFavIconMargin" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="54dp"
android:orientation="horizontal">
<ImageView
android:id="@+id/plugin_logo"
android:layout_width="32dp"
android:layout_height="32dp"
android:layout_margin="11dp"
android:background="@drawable/bg_plugin_logo"
android:scaleType="center"
tools:src="@drawable/ic_extension_dark"/>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:layout_gravity="center_vertical"
android:orientation="horizontal" >
<net.osmand.plus.widgets.TextViewEx
android:id="@+id/plugin_name"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="match_parent"
android:layout_marginTop="4dp"
android:layout_marginBottom="4dp"
android:gravity="center_vertical"
android:ellipsize="end"
android:maxLines="2"
android:textColor="?android:textColorPrimary"
android:textSize="16sp"
osmand:typeface="@string/font_roboto_regular"
tools:text="@string/lorem_ipsum" />
<TextView
android:id="@+id/plugin_name"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/dashPluginMargin"
android:ellipsize="end"
android:lines="1"
android:layout_gravity="center_vertical"
android:gravity="center_vertical"
android:textColor="@color/dashboard_black" />
<include layout="@layout/check_item_rel" />
</LinearLayout>
<TextView
android:id="@+id/plugin_descr"
android:textColor="@color/dashboard_descr_colol"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ellipsize="end"
android:maxLines="3" />
</LinearLayout>
</LinearLayout>
<include layout="@layout/check_item_rel" />
</LinearLayout>
</LinearLayout>

View file

@ -1,25 +1,31 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="?attr/card_bg"
android:orientation="vertical">
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:background="@drawable/bg_cardui"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="@dimen/dashHeaderHeight">
<TextView android:id="@+id/plugin_text"
android:text="@string/prefs_plugins"
style="@style/DashboardSubHeader"/>
<Button android:id="@+id/show_all"
android:text="@string/show_all"
style="@style/DashboardGeneralButton"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="@dimen/dashHeaderHeight"
android:orientation="horizontal">
<net.osmand.plus.widgets.TextViewEx
android:id="@+id/plugin_text"
style="?attr/dashboardSubHeaderStyle"
android:text="@string/prefs_plugins"/>
<net.osmand.plus.widgets.ButtonEx
android:id="@+id/show_all"
style="?attr/dashboardGeneralButtonStyle"
android:text="@string/show_all"
/>
</LinearLayout>
<LinearLayout android:id="@+id/plugins"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
</LinearLayout>
</LinearLayout>
<LinearLayout
android:id="@+id/plugins"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" />
</LinearLayout>

View file

@ -3,7 +3,7 @@
android:id="@+id/search"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/bg_cardui"
android:background="?attr/card_bg"
android:orientation="vertical" >
<LinearLayout
@ -12,20 +12,20 @@
<TextView
android:id="@+id/search_for"
style="@style/DashboardSubHeader"
style="?attr/dashboardSubHeaderStyle"
android:layout_width="wrap_content"
android:text="@string/search_for" />
<Button
android:id="@+id/recents"
style="@style/DashboardGeneralButton"
style="?attr/dashboardGeneralButtonStyle"
android:text="@string/recents" />
</LinearLayout>
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="@color/dashboard_divider" />
android:background="?attr/dashboard_divider" />
<LinearLayout
android:layout_width="match_parent"
@ -41,7 +41,7 @@
<View
android:layout_width="1dp"
android:layout_height="match_parent"
android:background="@color/dashboard_divider" />
android:background="?attr/dashboard_divider" />
<Button
android:id="@+id/address"
@ -52,7 +52,7 @@
<View
android:layout_width="1dp"
android:layout_height="match_parent"
android:background="@color/dashboard_divider" />
android:background="?attr/dashboard_divider" />
<Button
android:id="@+id/coord"

View file

@ -3,7 +3,7 @@
<LinearLayout android:id="@+id/maps"
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:background="@drawable/bg_cardui"
android:background="?attr/card_bg"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<LinearLayout
@ -12,10 +12,10 @@
android:layout_height="@dimen/dashHeaderHeight">
<TextView android:text="@string/map_update"
android:id="@+id/header"
style="@style/DashboardSubHeader"/>
style="?attr/dashboardSubHeaderStyle"/>
<Button android:id="@+id/show_all"
android:text="@string/show_all"
style="@style/DashboardGeneralButton"/>
style="?attr/dashboardGeneralButtonStyle"/>
</LinearLayout>
<LinearLayout android:id="@+id/updates_items"

View file

@ -7,7 +7,7 @@
android:layout_marginRight="@dimen/dashFavIconMargin"
android:layout_height="@dimen/dashListItemHeight">
<View android:layout_width="match_parent"
android:background="@color/dashboard_divider"
android:background="?attr/dashboard_divider"
android:layout_height="1dp"/>
<LinearLayout android:orientation="horizontal"
android:layout_marginLeft="@dimen/subHeaderMarginLeft"
@ -36,7 +36,7 @@
<ImageButton android:id="@+id/btn_download"
android:layout_gravity="center_vertical"
android:src="@drawable/download_button"
android:background="@drawable/dashboard_button"
android:background="?attr/dashboard_button"
android:layout_width="@dimen/dashListItemHeight"
android:layout_height="@dimen/dashListItemHeight"/>
</LinearLayout>

View file

@ -1,21 +1,19 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="?attr/actionBarSize"
android:orientation="vertical">
<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="match_parent"
android:layout_marginTop="?attr/actionBarSize"
android:orientation="vertical">
<TextView
android:id="@+id/Label"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:text="@string/select_plugin_to_activate"/>
<ListView
android:id="@android:id/list"
android:layout_width="fill_parent"
android:layout_weight="1"
android:layout_height="0dp"
android:layout_marginTop="10dp"/>
<ListView
android:id="@android:id/list"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_margin="6dp"
android:layout_weight="1"
android:divider="@null"
android:dividerHeight="4dp"
tools:listitem="@layout/plugins_list_item"/>
</LinearLayout>

View file

@ -1,72 +1,88 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:osmand="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="84dp"
android:background="?attr/card_bg"
android:descendantFocusability="blocksDescendants"
android:padding="2dp">
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:background="?attr/expandable_category_color"
android:paddingBottom="3dp"
android:paddingTop="6dp" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingLeft="5dp" >
<ImageView
android:id="@+id/plugin_logo"
android:layout_width="64dp"
android:layout_height="64dp"
android:layout_margin="8dp"
android:background="@drawable/bg_plugin_logo"
android:scaleType="center"
tools:src="@drawable/ic_extension_dark"/>
<CheckBox
android:id="@+id/check_item"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:focusable="false"
android:gravity="top" />
</LinearLayout>
<LinearLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_marginBottom="8dp"
android:layout_marginLeft="6dp"
android:layout_marginStart="6dp"
android:layout_marginRight="16dp"
android:layout_marginEnd="16dp"
android:layout_marginTop="8dp"
android:layout_weight="1"
android:orientation="vertical">
<TextView
android:id="@+id/plugin_name"
style="@style/ListText"
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:gravity="top"
android:paddingRight="10dp"
android:text="@string/extra_settings"
android:textColor="?android:textColorPrimary"
android:textStyle="bold" />
<net.osmand.plus.widgets.TextViewEx
android:id="@+id/plugin_name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="4dp"
android:layout_marginRight="50dp"
android:layout_marginEnd="50dp"
android:ellipsize="end"
android:lines="1"
android:maxLines="1"
android:textColor="?android:textColorPrimary"
android:textSize="19sp"
osmand:typeface="@string/font_roboto_medium"
tools:text="@string/lorem_ipsum" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_marginLeft="4dp"
android:layout_marginRight="10dp"
android:layout_gravity="center_vertical" >
<net.osmand.plus.widgets.TextViewEx
android:id="@+id/plugin_description"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ellipsize="end"
android:lines="2"
android:maxLines="2"
android:textColor="?android:textColorSecondary"
android:textSize="14sp"
osmand:typeface="@string/font_roboto_regular"
tools:text="@string/lorem_ipsum" />
</LinearLayout>
</LinearLayout>
<ImageView
android:id="@+id/settings"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:focusable="false"
android:src="@drawable/ic_action_settings_dark" />
</LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="top|end"
android:orientation="horizontal">
<TextView
android:id="@+id/plugin_descr"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:maxLines="7"
android:paddingBottom="5dp"
android:paddingLeft="10dp"
android:paddingRight="10dp"
android:paddingTop="5dp"
android:text="@string/osmand_extra_settings_description"
android:textColor="?android:textColorSecondary"
android:textSize="14sp"
android:visibility="gone" >
</TextView>
<ImageView
android:id="@+id/plugin_is_enabled"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="6dp"
android:src="?attr/ic_action_check"
android:visibility="invisible"
tools:visibility="visible"/>
</LinearLayout>
<ImageButton
android:id="@+id/plugin_options"
android:layout_width="36dp"
android:layout_height="36dp"
android:background="?attr/ic_plugin_options"/>
</LinearLayout>
</FrameLayout>

View file

@ -1900,4 +1900,6 @@
<string name="gps_status">GPS status</string>
<string name="parking_place">Parkeringsplads</string>
<string name="remove_the_tag">FJERN MÆRKET</string>
</resources>
<string name="enable_plugin">Aktiver</string>
<string name="disable_plugin">Deaktiver</string>
</resources>

View file

@ -1696,4 +1696,11 @@
<string name="use_displayed_track_for_navigation">Θέλετε να χρησιμοποιήσετε το εμφανιζόμενο ίχνος για πλοήγηση;</string>
<string name="route_descr_destination">Προορισμός</string>
<string name="voices">Φωνητικές οδηγίες</string>
<string name="parking_place">Χώρος στάθμευσης</string>
<string name="gps_status">Κατάσταση GPS</string>
<string name="points">Σημεία</string>
<string name="tracks">Ίχνη</string>
<string name="my_location">Η τοποθεσία μου</string>
<string name="recents">ΠΡΟΣΦΑΤΑ</string>
<string name="navigation_over_track">Έναρξη πλοήγησης βάσει ίχνους;</string>
</resources>

View file

@ -1888,13 +1888,13 @@
<string name="rendering_value__name">Por defecto</string>
<string name="save_track_to_gpx_globally_headline">Registro de trazas bajo demanda</string>
<string name="navigation_over_track">¿Empezar navegación sobre traza?</string>
<string name="avoid_roads_msg">Puedes cambiar la ruta seleccionando los caminos a evitar</string>
<string name="avoid_roads_msg">Puedes obtener una ruta alternativa seleccionando las carreteras a evitar</string>
<string name="proxy_pref_title">Proxy</string>
<string name="proxy_pref_descr">Configurar un proxy de acceso a Internet</string>
<string name="settings_privacy">Privacidad</string>
<string name="recents">RECIENTES</string>
<string name="enable_proxy_title">Activar Proxy HTTP</string>
<string name="enable_proxy_descr">Configurar Proxy HTTP para todas las peticiones de red</string>
<string name="enable_proxy_descr">Configura Proxy HTTP para todas las peticiones de red</string>
<string name="proxy_host_title">Host proxy</string>
<string name="proxy_port_title">Puerto del proxy</string>
<string name="proxy_port_descr">Configurar el número de puerto de tu proxy (p.e. 8118)</string>
@ -1904,8 +1904,8 @@
<string name="gps_status">Estado GPS</string>
<string name="rendering_attr_streetLighting_name">Iluminación de la calle</string>
<string name="points">Puntos</string>
<string name="tracks">Pistas</string>
<string name="my_location">Mi localización</string>
<string name="tracks">Trazas</string>
<string name="my_location">Mi ubicación</string>
<string name="osm_editing_manage">Administrar</string>
<string name="parking_place">Área de aparcamiento</string>
<string name="remove_the_tag">QUITA LA ETIQUETA</string>

View file

@ -59,7 +59,7 @@
<string name="rendering_out_of_memory">선택 영역을 표시할 충분한 프로세스 메모리가 없습니다</string>
<string name="use_fluorescent_overlays">형광색상 중첩(오버레이)</string>
<string name="use_fluorescent_overlays_descr">형광색상으로 경로를 표시합니다</string>
<string name="use_fluorescent_overlays_descr">경로(트랙과 루트)를 표시하기 위해 형광색을 사용합니다</string>
<string name="offline_edition">오프라인 편집</string>
<string name="offline_edition_descr">오프라인 편집을 항상 사용합니다</string>
@ -92,7 +92,7 @@
<string name="live_monitoring_interval">온라인 트래킹 시간 간격</string>
<string name="live_monitoring_url_descr">온라인 트래킹할 웹 주소를 지정합니다. 매개변수 형식 : 위도={0}, 경도={1}, 시간={2}, hdop={3}, 고도={4}, 속도={5}, bearing={6}</string>
<string name="live_monitoring_url">온라인 트래킹 웹 주소</string>
<string name="gpx_monitoring_disabled_warn">"GPX 위젯을 사용하거나 \'경로 레코딩\' 설정을 통해서 경로를 기록하세요."</string>
<string name="gpx_monitoring_disabled_warn">"GPX 위젯을 사용하거나 \'트랙 레코딩\' 설정을 통해서 트랙을 기록하세요."</string>
<string name="show_current_gpx_title">현재의 GPX 경로를 표시합니다</string>
<string name="tip_recent_changes_0_7_0_t">0.7.0 버전에 대한 변경 사항들 :
\n\t- 오프라인 위키피디아 기사 포함 데이터
@ -145,7 +145,7 @@
<string name="tip_rotation_switching">지도 방향</string>
<string name="binary_map_download_success">"성공적으로 다운로드하였습니다.\n\n 사용하려면 [메뉴-&gt;지도 구성-&gt;지도 소스-&gt;오프라인 벡터 지도] 를 활성화 하세요. "</string>
<string name="binary_map_download_success">"성공적으로 다운로드하였습니다.\n\n 사용하려면 [메뉴-&gt;맵 구성-&gt;맵 소스-&gt;오프라인 벡터 맵] 을 체크하세요. "</string>
<string name="tip_day_night_mode">주간/야간 모드</string>
@ -379,7 +379,7 @@
<string name="tip_favorites_t">"자주 사용되는 포인트는 아래처럼 즐겨 찾기에 저장할 수 있습니다. ↵
\n\n포인트를 즐겨 찾기에 저장하려면 맵 컨텍스트 메뉴로 이동하여 \'즐겨 찾기에 추가\'옵션을 선택하고 이름을 붙여주세요.
\n\n즐겨 찾기 저장 후 \'메인 메뉴\'-&gt; \'저장소\'를 통해 사용할 수 있습니다. \'즐겨 찾기\'메뉴에서 즐겨 찾기를 길게 누르면 탐색 할 옵션이 나타나고, 편집 및 삭제할 수 있습니다. ↵
\n\n지도에 직접 모든 즐겨 찾기 지점을 표시하려면 \'맵 컨텍스트 메뉴\'-&gt; \'지도 구성\'의 \'즐겨 찾기\'레이어를 활성화하십시오. "</string>
\n\n지도에 직접 모든 즐겨 찾기 지점을 표시하려면 \'맵 컨텍스트 메뉴\'-&gt; \'맵 구성\' ~ \'즐겨 찾기\' 를 체크하세요. "</string>
<string name="create_poi_link_to_osm_doc">이미지와 함께 <u>온라인 OSM</u> 맵 분류</string>
<string name="error_doing_search">오프라인 검색에서 오류가 발생하였습니다</string>
@ -515,7 +515,7 @@
<string name="continuous_rendering">연속 렌더링</string>
<string name="continuous_rendering_descr">전체 이미지 대신 연속 렌더링을 표시합니다</string>
<string name="rendering_exception">선택 영역을 렌더링하는 도중 오류가 발생하였습니다</string>
<string name="show_point_options">포인트</string>
<string name="show_point_options">위치</string>
<string name="renderer_load_sucess">렌더러가 성공적으로 적재되었습니다</string>
<string name="renderer_load_exception">예외발생: 렌더러가 적재되지 않았습니다</string>
<string name="renderers">벡터 렌더러</string>
@ -702,7 +702,7 @@
<string name="recalculate_route_to_your_location">전송 모드 :</string>
<string name="mark_final_location_first">먼저 도착지를 선택하세요</string>
<string name="get_directions">운행시작</string>
<string name="show_gps_status">GPS Status 표시</string>
<string name="show_gps_status">GPS 상태 표시</string>
<string name="opening_hours">오프닝 시간</string>
<string name="opening_changeset">변경사항 여는중…</string>
<string name="closing_changeset">변경사항 닫는중…</string>
@ -720,7 +720,7 @@
<string name="error_occurred_saving_gpx">GPX를 저장하는 도중 오류가 발생하였습니다</string>
<string name="error_calculating_route">경로 탐색 도중 오류</string>
<string name="error_calculating_route_occured">경로를 찾는 도중 오류가 발생하였습니다</string>
<string name="empty_route_calculated">경로를 찾지 못하였습니다</string>
<string name="empty_route_calculated">탐색한 경로를 찾지 못하였습니다</string>
<string name="new_route_calculated_dist">새로운 경로를 찾았습니다, 거리</string>
<string name="arrived_at_destination">도착지에 도착하였습니다</string>
<string name="invalid_locations">좌표가 유효하지 않습니다!</string>
@ -802,7 +802,7 @@
<string name="choose_available_region">목록에서 지역을 선택합니다</string>
<string name="choose_intersected_street">교차로를 선택합니다</string>
<string name="Closest_Amenities">근접한 시설들</string>
<string name="app_mode_default">지도 찾아보기</string>
<string name="app_mode_default">지도 보기</string>
<string name="app_mode_car">자동차</string>
<string name="app_mode_bicycle">자전거</string>
<string name="app_mode_pedestrian">보행자</string>
@ -823,7 +823,7 @@
<string name="search_address_building">빌딩</string>
<string name="search_address_building_option">빌딩</string>
<string name="search_address_street_option">교차로</string>
<string name="search_tabs_location">위치</string>
<string name="search_tabs_location">좌표</string>
<string name="context_menu_item_add_favorite">즐겨찾기에 추가</string>
<string name="context_menu_item_update_map">지도 업데이트</string>
<string name="context_menu_item_open_bug">OSM 버그 열기</string>
@ -1118,8 +1118,8 @@
         \n\t* 나침반을 안정화하기 위해 추가 설정
         \n\t* 지도 화면에서 좌상단 버튼는 메뉴버튼을 대체
</string>
<string name="monitoring_settings">경로 레코딩</string>
<string name="monitoring_settings_descr">경로를 기록하는 방법을 구성합니다</string>
<string name="monitoring_settings">트랙 레코딩</string>
<string name="monitoring_settings_descr">트랙을 기록하는 방법을 구성합니다</string>
<string name="osmand_monitoring_plugin_description">절전모드(스크린 끄기)에서 트래킹 및 경로탐색 활성화, 주기적으로 GPS 장치가 작동중일 때 . 표시 설정은 로컬 GPX 파일이나 웹 서비스를 사용하는 온라인에 트랙을 기록하는 설비 가능.</string>
<string name="osmand_monitoring_plugin_name">로깅 서비스</string>
<string name="osmand_background_plugin_description">주기적으로 GPS 장치를 On 시켜 절전모드(스크린 끄기)에서 트래킹 및 운행을 가능하게 합니다.</string>
@ -1429,7 +1429,7 @@
<string name="show_traffic_warnings">교통 경고 표시</string>
<string name="avoid_toll_roads">유료 도로 회피</string>
<string name="continue_follow_previous_route_auto">이전 운행은 아직 끝나지 안났습니다. 계속 운행을 하시겠습니까? (%1$s 초)</string>
<string name="route_updated_loc_found">위치가 확정되면 경로를 탐색합니다</string>
<string name="route_updated_loc_found">현재 위치가 확정되면 경로를 탐색합니다</string>
<string name="osmand_parking_hours">시간</string>
<string name="osmand_parking_minutes"></string>
<string name="osmand_parking_position_description_add_time">자동차를 ~에 주차했습니다 :</string>
@ -1512,7 +1512,7 @@
<string name="osmand_accessibility_description">접근성(내게 필요한) 기능에 대한 설정을 표시하기.</string>
<string name="extra_settings">고급 설정</string>
<string name="osmand_monitoring_description">로컬 GPX 파일이나 웹 서비스를 사용하는 온라인에 경로를 기록하기 위한 설정 기능을 표시합니다.</string>
<string name="osmand_extra_settings_description">고급 지도 구성(지도 상세보기) 및 일부 장치 특성에 대한 설정을 표시합니다.</string>
<string name="osmand_extra_settings_description">고급 구성(지도 상세보기) 및 일부 장치 특성에 대한 설정을 표시합니다.</string>
<string name="osmand_development_plugin_description">모의 주행이나 렌더링 성능 표시와 같은 개발 및 디버깅 기능에 대한 설정을 표시합니다.</string>
<string name="plugins_screen">플러그인</string>
<string name="select_plugin_to_activate">활성화 또는 비활성화 하기위해 플러그인을 터치합니다.(OsmAnd는 재시작해야 합니다)</string>
@ -1984,7 +1984,7 @@
<string name="av_camera_pic_size">카메라 사진 크기</string>
<string name="av_camera_pic_size_descr">내부 카메라 사진 크기 선택</string>
<string name="announce_nearby_favorites">가까운 즐겨찾기 알리기</string>
<string name="rendering_value_browse_map_name">지도 찾아보기</string>
<string name="rendering_value_browse_map_name">지도 보기</string>
<string name="rendering_value_car_name">자동차</string>
<string name="rendering_value_bicycle_name">자전거</string>
<string name="rendering_value_pedestrian_name">보행자</string>
@ -2040,7 +2040,7 @@
<string name="map_widget_right">오른쪽 패널</string>
<string name="map_widget_left">왼쪽 패널</string>
<string name="layers_category_show">표시</string>
<string name="configure_map">지도 구성</string>
<string name="configure_map"> 구성</string>
<string name="search_radius_proximity">근접에서</string>
<string name="tip_recent_changes_1_9_t">"버전 1.9 변경사항 :
\n* 도로 표면 렌더링으로 지도 스타일 업데이트\n* 전송 계층 및 기호 하이킹 심볼 업데이트\n* 경로를 따라 POI 검색
@ -2130,4 +2130,6 @@
<string name="gps_status">GPS status</string>
<string name="parking_place">주차장</string>
<string name="remove_the_tag">태그를 제거</string>
</resources>
<string name="enable_plugin">사용가능</string>
<string name="disable_plugin">사용안함</string>
</resources>

View file

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="lorem_ipsum">لوريم أيبسزم, أول كلمات من نص لاتيني يستعمل بتصميم مواقع الإنترنت بدلا من الإنجليزية للتشديد على أهمية عناصر التصميم على الفحوى </string>
</resources>

View file

@ -293,7 +293,7 @@
<string name="init_native_library">Inicializuojama aparatinė biblioteka…</string>
<string name="choose_auto_follow_route">Automatinis žemėlapio centravimas</string>
<string name="choose_auto_follow_route_descr">Laikas po kurio žemėlapio vaizdas bus sinchronizuotas su dabartine pozicija</string>
<string name="auto_follow_route_never">Niekada</string>
<string name="auto_follow_route_never">Niekada (spauskite mėlyną rodyklę,jei norite naviguoti rankiniu būdu)</string>
<string name="auto_follow_route_navigation">Automatiškai centruoti tik navigacijos metu</string>
<string name="auto_follow_route_navigation_descr">Automatiškai centruoti žemėlapį tik, kai veikia navigacija.</string>
<string name="auto_follow_location_enabled">Naudojamas automatinis žemėlapio centravimas.</string>
@ -1192,7 +1192,7 @@
<string name="recording_context_menu_delete">Ištrinti įrašą</string>
<string name="recording_context_menu_play">Groti</string>
<string name="recording_description">Įrašas %1$s %2$s prie %3$s</string>
<string name="recording_default_name">įrašas</string>
<string name="recording_default_name">Įrašas</string>
<string name="av_control_start">Įrašyti</string>
<string name="map_widget_av_notes">Audio užrašai</string>
<string name="av_control_stop">Stop</string>
@ -1561,7 +1561,7 @@
<string name="osmo_plugin_description">"OpenStreetMap-Monitoring - pažangus tiesioginis stebėjimas http://osmo.mobi. Suteikia daug galimybių būti stebimam ir stebėti kitus įrenginius. Susikurkite anonimines grupes, bendrinkite vienas kito vietą ir bendraukite. Ši paslauga turi įvairių nustatymų vienkartiniam ir pastoviam sekimui. Anoniminės grupės gyvuoja tik kelias dienas su ribotomis funkcijomis, t.y. nėra nuotolinio valdymo ar grupės administratoriaus. Viso funkcionalumo grupes galima susikurti interneto svetainėje ir tik registruoti vartotojai galės prie jų prieiti. "</string>
<string name="osmo_plugin_name">OsMo (Pažangus tiesioginis stebėjimas)</string>
<string name="osmo_settings">OpenStreetMap stebėjimas</string>
<string name="keep_informing_never">Niekada</string>
<string name="keep_informing_never">Tik rankiniu būdu (spauskite rodyklę)</string>
<string name="keep_informing_descr">Maršruto instrukcijas pakartotinai pranešinėti reguliariais intervalais</string>
<string name="keep_informing">Pakartoti maršruto instrukcijas</string>
<string name="arrival_distance">Pranešimas apie atvykimą</string>
@ -1838,7 +1838,7 @@
<string name="rendering_attr_shareTaxiRoutes_name">Maršrutinis taksi</string>
<string name="rendering_category_hide">Slėpti</string>
<string name="wake_on_voice">Įjungti ekraną</string>
<string name="wake_on_voice_descr">Įjungti ekraną artėjant prie posūkio</string>
<string name="wake_on_voice_descr">Įjungti ekraną (jei išjungtas) artėjant prie posūkio</string>
<string name="lock_screen_request_explanation">%1$s prašo leidimo išjungti ekraną tausojant energiją.</string>
<string name="wake_on_voice_never">Niekada</string>
<string name="osmo_use_https">Naudoti HTTPS</string>
@ -1883,4 +1883,27 @@
<string name="speak_pedestrian">Pranešti apie perėjas</string>
<string name="traffic_warning_pedestrian">Pėčiųjų perėja</string>
<string name="rendering_value__name">Numatytasis</string>
<string name="parking_place">Parkavimo vieta</string>
<string name="remove_the_tag">PAŠALINTI ŽYMĄ</string>
<string name="gps_status">GPS statusas</string>
<string name="version_settings_descr">Atsisiųsti nightly sąrankas</string>
<string name="version_settings">Sąrankos</string>
<string name="rendering_attr_streetLighting_name">Gatvės apšvietimas</string>
<string name="proxy_pref_title">Proksi serveris</string>
<string name="proxy_pref_descr">Prisijungimo prie interneto per proksi serverį nustatymai</string>
<string name="settings_privacy">Privatumas</string>
<string name="points">Taškai</string>
<string name="tracks">Keliai</string>
<string name="my_location">Mano dabatinė vieta</string>
<string name="osm_editing_manage">Valdyti</string>
<string name="recents">PASTARIEJI</string>
<string name="navigation_over_track">Pradėti navigaciją keliu?</string>
<string name="avoid_roads_msg">Galite pasirinkti kitą maršrutą, pažymėdami norimus aplenkti kelius</string>
<string name="save_track_to_gpx_globally_headline">Privalomas kelio log įrašymas</string>
<string name="enable_proxy_title">Įjungti HTTP proksi serverį</string>
<string name="proxy_host_title">Proksi serverio adresas</string>
<string name="proxy_host_descr">Nurodykite jūsų proksi serverio pavadinimą (pvz., 127.0.0.1)</string>
<string name="proxy_port_title">Proksi serverio portas</string>
<string name="proxy_port_descr">Nurodykite jūsų proksi serverio porto numerį (pvz., 8118)</string>
<string name="enable_proxy_descr">Configure HTTP Proxy for all network requests</string>
</resources>

View file

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="DashboardSubHeader.Compat" parent="DashboardSubHeader">
<item name="android:layout_marginStart">@dimen/subHeaderMarginLeft</item>
</style>
<style name="DashboardGeneralButton.Compat" parent="DashboardGeneralButton">
<item name="android:layout_marginEnd">@dimen/showAllButtonMarginRight</item>
</style>
</resources>

View file

@ -1892,4 +1892,6 @@
<string name="gps_status">GPS 狀態</string>
<string name="parking_place">停車地點</string>
<string name="remove_the_tag">移除標記</string>
</resources>
<string name="enable_plugin">啟用</string>
<string name="disable_plugin">停用</string>
</resources>

View file

@ -8,6 +8,15 @@
<attr name="reset_image" format="reference"/>
<attr name="bottomToolBarColor" format="color" />
<attr name="downloadButtonBackground" format="reference" />
<attr name="card_bg" format="reference" />
<attr name="ic_action_check" format="reference" />
<attr name="ic_extension" format="reference" />
<attr name="ic_overflow_menu" format="reference" />
<attr name="ic_plugin_options" format="reference" />
<attr name="dashboardGeneralButtonStyle" format="reference" />
<attr name="dashboardSubHeaderStyle" format="reference" />
<attr name="dashboard_divider" format="reference" />
<attr name="dashboard_button" format="reference" />
</declare-styleable>
<declare-styleable name="PagerSlidingTabStrip">
@ -38,4 +47,8 @@
<attr name="pstsTextAlpha" format="float"/>
<attr name="pstsTextSelectedAlpha" format="float"/>
</declare-styleable>
</resources>
<declare-styleable name="OsmandWidgets">
<attr name="typeface" format="string|reference"/>
</declare-styleable>
</resources>

View file

@ -11,9 +11,14 @@
<color name="dashboard_descr_colol">#727272</color>
<color name="dashboard_background">#eaeaea</color>
<color name="dashboard_divider">#F0F0F0</color>
<color name="dashboard_divider_light">#F0F0F0</color>
<color name="dashboard_divider_dark">#3d474c</color>
<color name="dashboard_black">#212121</color>
<color name="dashboard_blue">#536DFE</color>
<color name="dashboard_subheader_text_dark">#b4c3cc</color>
<color name="dashboard_subheader_text_light">#212121</color>
<color name="dashboard_general_button_dark">#ff8f00</color>
<color name="dashboard_general_button_light">#536DFE</color>
<color name="gpx_color_point">#cd2c33</color>
<color name="gpx_speed">#c79c00</color>
<color name="gpx_altitude_desc">#32CD32</color>
@ -86,5 +91,7 @@
<color name="sherpafy_add_text">#b9b9b9</color>
<color name="dark_drawer_bg_color">#303030</color>
<color name="card_bg_color_light">#ffffff</color>
<color name="card_bg_color_dark">#333b40</color>
</resources>

View file

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="lorem_ipsum">
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut gravida purus quis enim
consequat tristique. Vestibulum euismod laoreet semper. Proin pretium vulputate maximus.
Curabitur accumsan pretium consectetur. Donec vehicula tincidunt molestie. Duis dignissim
commodo nunc efficitur posuere. Proin in ultrices tellus. Morbi a efficitur leo. Etiam
dapibus, ante ac fringilla.</string>
</resources>

View file

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="font_roboto_regular">fonts/Roboto-Regular.ttf</string>
<string name="font_roboto_medium">fonts/Roboto-Medium.ttf</string>
</resources>

View file

@ -1237,7 +1237,6 @@ Afghanistan, Albania, Algeria, Andorra, Angola, Anguilla, Antigua and Barbuda, A
<string name="osmand_extra_settings_description">Display settings for advanced map configuration (like increase map details) and some device-specifics.</string>
<string name="osmand_development_plugin_description">Show settings for development and debugging features like route simulation or rendering performance display.</string>
<string name="plugins_screen">Plugins</string>
<string name="select_plugin_to_activate">Touch a Plugin to activate or deactivate it. (Restarting OsmAnd may be required.)</string>
<string name="prefs_plugins_descr">Plugins activate advanced settings and additional functionality</string>
<string name="prefs_plugins">Plugins</string>
<string name="tip_recent_changes_0_8_0_t">Changes in 0.8.0:
@ -2085,4 +2084,6 @@ Afghanistan, Albania, Algeria, Andorra, Angola, Anguilla, Antigua and Barbuda, A
<string name="av_camera_pic_size_descr">Select internal camera Picture Size</string>
<string name="navigation_intent_invalid">Invalid format: %s</string>
<string name="hide_all_waypoints">Remove all</string>
<string name="enable_plugin">Enable</string>
<string name="disable_plugin">Disable</string>
</resources>

View file

@ -14,26 +14,51 @@
<item name="android:layout_height">fill_parent</item>
<item name="android:paddingBottom">@dimen/subHeaderPadding</item>
<item name="android:gravity">center_vertical</item>
<item name="android:textColor">@color/dashboard_black</item>
<item name="android:layout_marginLeft">@dimen/subHeaderMarginLeft</item>
<item name="android:textSize">@dimen/subHeaderTextSize</item>
<item name="typeface">@string/font_roboto_medium</item>
</style>
<!-- Pre-v17 version -->
<style name="DashboardSubHeader.Compat" parent="DashboardSubHeader">
<item name="android:layout_marginLeft">@dimen/subHeaderMarginLeft</item>
</style>
<style name="DashboardSubHeader.Light" parent="DashboardSubHeader.Compat">
<item name="android:textColor">@color/dashboard_subheader_text_light</item>
</style>
<style name="DashboardSubHeader.Dark" parent="DashboardSubHeader.Compat">
<item name="android:textColor">@color/dashboard_subheader_text_dark</item>
</style>
<style name="DashParkingText">
<item name="android:textStyle">bold</item>
<item name="android:textSize">@dimen/dashParkingTextSize</item>
</style>
<style name="DashboardGeneralButton">
<item name="android:layout_marginRight">@dimen/showAllButtonMarginRight</item>
<style name="DashboardGeneralButton">
<item name="android:layout_width">wrap_content</item>
<item name="android:layout_height">@dimen/showAllButtonHeight</item>
<item name="android:layout_gravity">center_vertical</item>
<item name="android:textSize">@dimen/showAllButtonTextSize</item>
<item name="android:textColor">@color/dashboard_blue</item>
<item name="android:background">@drawable/dashboard_button</item>
<item name="typeface">@string/font_roboto_medium</item>
</style>
<!-- Pre-v17 version -->
<style name="DashboardGeneralButton.Compat" parent="DashboardGeneralButton">
<item name="android:layout_marginRight">@dimen/showAllButtonMarginRight</item>
</style>
<style name="DashboardGeneralButton.Light" parent="DashboardGeneralButton.Compat">
<item name="android:textColor">@color/dashboard_general_button_light</item>
<item name="android:background">@drawable/dashboard_button_light</item>
</style>
<style name="DashboardGeneralButton.Dark" parent="DashboardGeneralButton.Compat">
<item name="android:textColor">@color/dashboard_general_button_dark</item>
<item name="android:background">@drawable/dashboard_button_dark</item>
</style>
<style name="DashboardSearchButton">
<item name="android:paddingTop">@dimen/dashSearchPaddingTop</item>
<item name="android:layout_width">0dp</item>
@ -41,7 +66,7 @@
<item name="android:layout_weight">1</item>
<item name="android:textSize">@dimen/showAllButtonTextSize</item>
<item name="android:textColor">@color/dashboard_black</item>
<item name="android:background">@drawable/dashboard_button</item>
<item name="android:background">@drawable/dashboard_button_light</item>
<item name="android:gravity">bottom|center_horizontal</item>
<item name="android:paddingBottom">@dimen/dashSearchPaddingBot</item>
</style>
@ -98,6 +123,15 @@
<item name="actionMenuTextColor">@color/color_white</item>
<item name="android:actionBarStyle">@style/Widget.Styled.ActionBarLight</item>
<item name="actionBarStyle">@style/Widget.Styled.ActionBarLight</item>
<item name="card_bg">@drawable/bg_card_light</item>
<item name="ic_action_check">@drawable/ic_action_check_light</item>
<item name="ic_extension">@drawable/ic_extension_light</item>
<item name="ic_overflow_menu">@drawable/ic_overflow_menu_light</item>
<item name="ic_plugin_options">@drawable/ic_plugin_options_light</item>
<item name="dashboardGeneralButtonStyle">@style/DashboardGeneralButton.Light</item>
<item name="dashboardSubHeaderStyle">@style/DashboardSubHeader.Light</item>
<item name="dashboard_divider">@color/dashboard_divider_light</item>
<item name="dashboard_button">@drawable/dashboard_button_light</item>
</style>
<style name="OsmandDarkTheme" parent="Theme.AppCompat">
@ -114,6 +148,15 @@
<item name="actionModeBackground">@color/actionbar_dark_color</item>
<item name="actionBarStyle">@style/Widget.Styled.ActionBarDark</item>
<item name="android:actionBarStyle">@style/Widget.Styled.ActionBarDark</item>
<item name="card_bg">@drawable/bg_card_dark</item>
<item name="ic_action_check">@drawable/ic_action_check_dark</item>
<item name="ic_extension">@drawable/ic_extension_dark</item>
<item name="ic_overflow_menu">@drawable/ic_overflow_menu_dark</item>
<item name="ic_plugin_options">@drawable/ic_plugin_options_dark</item>
<item name="dashboardGeneralButtonStyle">@style/DashboardGeneralButton.Dark</item>
<item name="dashboardSubHeaderStyle">@style/DashboardSubHeader.Dark</item>
<item name="dashboard_divider">@color/dashboard_divider_dark</item>
<item name="dashboard_button">@drawable/dashboard_button_dark</item>
</style>
<style name="OsmandLightDarkActionBarTheme" parent="Theme.AppCompat.Light.DarkActionBar">

View file

@ -47,6 +47,10 @@ public abstract class OsmandPlugin {
public abstract String getDescription();
public abstract String getName();
public int getLogoResourceId() {
return R.drawable.ic_extension_dark;
}
public abstract Class<? extends Activity> getSettingsActivity();

View file

@ -1,126 +1,148 @@
package net.osmand.plus.activities;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Set;
import net.osmand.plus.OsmandApplication;
import net.osmand.plus.OsmandPlugin;
import net.osmand.plus.R;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.support.v7.widget.PopupMenu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.CheckBox;
import android.widget.ImageView;
import android.widget.TextView;
public class PluginsActivity extends OsmandListActivity {
public static final int ACTIVE_PLUGINS_LIST_MODIFIED = 1;
private List<OsmandPlugin> availablePlugins;
private Set<String> clickedPlugins = new LinkedHashSet<String>();
private Set<String> restartPlugins = new LinkedHashSet<String>();
private boolean activePluginsListModified = false;
@Override
protected void onCreate(Bundle savedInstanceState) {
((OsmandApplication) getApplication()).applyTheme(this);
super.onCreate(savedInstanceState);
setContentView(R.layout.plugins);
getSupportActionBar().setTitle(R.string.plugins_screen);
availablePlugins = OsmandPlugin.getAvailablePlugins();
List<OsmandPlugin> enabledPlugins = OsmandPlugin.getEnabledPlugins();
for(OsmandPlugin p : enabledPlugins) {
restartPlugins.add(p.getId());
}
setListAdapter(new OsmandPluginsAdapter(availablePlugins));
setListAdapter(new PluginsListAdapter());
}
private void click(int position) {
OsmandPlugin item = getListAdapter().getItem(position);
boolean enable = !restartPlugins.contains(item.getId());
boolean ok = OsmandPlugin.enablePlugin(((OsmandApplication) getApplication()), item, enable);
if (ok) {
if (!enable) {
restartPlugins.remove(item.getId());
} else {
restartPlugins.add(item.getId());
}
setResult(ACTIVE_PLUGINS_LIST_MODIFIED);
}
clickedPlugins.add(item.getId());
getListAdapter().notifyDataSetChanged();
}
@Override
public OsmandPluginsAdapter getListAdapter() {
return (OsmandPluginsAdapter) super.getListAdapter();
public PluginsListAdapter getListAdapter() {
return (PluginsListAdapter) super.getListAdapter();
}
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
click(position);
OsmandPlugin plugin = view.getTag() instanceof OsmandPlugin
? (OsmandPlugin)view.getTag()
: null;
if (plugin == null) {
return;
}
//TODO: open details
togglePluginEnabled(plugin);
}
protected class OsmandPluginsAdapter extends ArrayAdapter<OsmandPlugin> {
public OsmandPluginsAdapter(List<OsmandPlugin> plugins) {
super(PluginsActivity.this, R.layout.plugins_list_item, plugins);
private void togglePluginEnabled(OsmandPlugin plugin) {
boolean isEnabled = OsmandPlugin.getEnabledPlugins().contains(plugin);
enableDisablePlugin(plugin, !isEnabled);
}
private void enableDisablePlugin(OsmandPlugin plugin, boolean enable) {
boolean ok = OsmandPlugin.enablePlugin(((OsmandApplication) getApplication()), plugin,
enable);
if (!ok) {
return;
}
if (!activePluginsListModified) {
setResult(ACTIVE_PLUGINS_LIST_MODIFIED);
activePluginsListModified = true;
}
getListAdapter().notifyDataSetChanged();
}
protected class PluginsListAdapter extends ArrayAdapter<OsmandPlugin> {
public PluginsListAdapter() {
super(PluginsActivity.this, R.layout.plugins_list_item,
OsmandPlugin.getAvailablePlugins());
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
View v = convertView;
if (v == null) {
LayoutInflater inflater = getLayoutInflater();
v = inflater.inflate(net.osmand.plus.R.layout.plugins_list_item, parent, false);
public View getView(int position, View convertView, ViewGroup parent) {
View view = convertView;
if (view == null) {
view = getLayoutInflater().inflate(R.layout.plugins_list_item, parent, false);
}
OsmandPlugin plugin = getItem(position);
boolean toBeEnabled = restartPlugins.contains(plugin.getId());
final View row = v;
CheckBox ch = (CheckBox) row.findViewById(R.id.check_item);
ch.setOnClickListener(null);
ch.setChecked(toBeEnabled);
ch.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
click(position);
}
});
TextView nameView = (TextView) row.findViewById(R.id.plugin_name);
nameView.setText(plugin.getName());
nameView.setContentDescription(plugin.getName() + " " + getString(toBeEnabled ? R.string.item_checked : R.string.item_unchecked));
View rw = row.findViewById(R.id.settings);
final Class<? extends Activity> st = plugin.getSettingsActivity();
rw.setVisibility(toBeEnabled && st != null ? View.VISIBLE : View.GONE);
rw.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (st != null) {
startActivity(new Intent(PluginsActivity.this, st));
}
}
});
TextView description = (TextView) row.findViewById(R.id.plugin_descr);
description.setText(plugin.getDescription());
description.setVisibility(clickedPlugins.contains(plugin.getId()) ||
!restartPlugins.contains(plugin.getId()) ? View.VISIBLE : View.GONE);
return row;
final OsmandPlugin plugin = getItem(position);
final boolean isEnabled = OsmandPlugin.getEnabledPlugins().contains(plugin);
view.setTag(plugin);
ImageView pluginLogo = (ImageView)view.findViewById(R.id.plugin_logo);
pluginLogo.setImageResource(plugin.getLogoResourceId());
TextView pluginName = (TextView)view.findViewById(R.id.plugin_name);
pluginName.setText(plugin.getName());
pluginName.setContentDescription(plugin.getName() + " " + getString(isEnabled
? R.string.item_checked
: R.string.item_unchecked));
TextView pluginDescription = (TextView)view.findViewById(R.id.plugin_description);
pluginDescription.setText(plugin.getDescription());
View pluginIsEnabled = view.findViewById(R.id.plugin_is_enabled);
pluginIsEnabled.setVisibility(isEnabled ? View.VISIBLE : View.INVISIBLE);
View pluginOptions = view.findViewById(R.id.plugin_options);
pluginOptions.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
showOptionsMenu(v, plugin);
}
});
return view;
}
}
private void showOptionsMenu(View v, final OsmandPlugin plugin) {
final boolean isEnabled = OsmandPlugin.getEnabledPlugins().contains(plugin);
final Class<? extends Activity> settingsActivity = plugin.getSettingsActivity();
final PopupMenu optionsMenu = new PopupMenu(this, v);
MenuItem enableDisableItem = optionsMenu.getMenu().add(isEnabled
? R.string.disable_plugin
: R.string.enable_plugin);
enableDisableItem.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
enableDisablePlugin(plugin, !isEnabled);
optionsMenu.dismiss();
return true;
}
});
if (settingsActivity != null) {
MenuItem settingsItem = optionsMenu.getMenu().add(R.string.settings);
settingsItem.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
startActivity(new Intent(PluginsActivity.this, settingsActivity));
optionsMenu.dismiss();
return true;
}
});
settingsItem.setEnabled(isEnabled);
}
optionsMenu.show();
}
}

View file

@ -8,16 +8,15 @@ import java.util.Random;
import net.osmand.plus.OsmandPlugin;
import net.osmand.plus.R;
import net.osmand.plus.development.OsmandDevelopmentPlugin;
import net.osmand.plus.helpers.FontCache;
import android.content.Intent;
import android.graphics.Typeface;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.CompoundButton;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
@ -31,15 +30,15 @@ public class DashPluginsFragment extends DashBaseFragment {
private ArrayList<CompoundButton> checks;
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = getActivity().getLayoutInflater().inflate(R.layout.dash_plugins_fragment, container, false);
Typeface typeface = FontCache.getRobotoMedium(getActivity());
((TextView) view.findViewById(R.id.plugin_text)).setTypeface(typeface);
((Button) view.findViewById(R.id.show_all)).setTypeface(typeface);
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container,
@Nullable Bundle savedInstanceState) {
View view = getActivity().getLayoutInflater().inflate(R.layout.dash_plugins_fragment,
container, false);
view.findViewById(R.id.show_all).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
startActivityForResult(new Intent(getActivity(), getMyApplication().getAppCustomization().getPluginsActivity()), 1);
startActivityForResult(new Intent(getActivity(),
getMyApplication().getAppCustomization().getPluginsActivity()), 1);
}
});
LinearLayout layout = (LinearLayout) view.findViewById(R.id.plugins);
@ -92,10 +91,12 @@ public class DashPluginsFragment extends DashBaseFragment {
for (int i = 0; i < showedPlugins.size(); i++) {
final OsmandPlugin plugin = showedPlugins.get(i);
View view = inflater.inflate(R.layout.dash_plugin_item, null, false);
View view = inflater.inflate(R.layout.dash_plugin_item, layout, false);
((TextView) view.findViewById(R.id.plugin_name)).setText(plugin.getName());
((TextView) view.findViewById(R.id.plugin_descr)).setText(plugin.getDescription());
((ImageView) view.findViewById(R.id.plugin_logo)).setImageResource(
plugin.getLogoResourceId());
CompoundButton check = (CompoundButton) view.findViewById(R.id.check_item);
checks.add(check);
check.setChecked(enabledPlugins.contains(plugin));

View file

@ -77,9 +77,9 @@ public class SettingsDevelopmentActivity extends SettingsBaseActivity {
long javaTotal = Runtime.getRuntime().totalMemory() / (1024*1024l);
long dalvikSize = android.os.Debug.getNativeHeapAllocatedSize() / (1024*1024l);
pref.setSummary(getString(R.string.global_app_allocated_memory_descr, javaAvailMem, javaTotal, dalvikSize));
pref.setEnabled(false);
//Use setEnabled(false) only, this way you can produce more contrast by/while tapping it when needed
//pref.setSelectable(false);
pref.setSelectable(false);
//setEnabled(false) creates bad readability on some devices
//pref.setEnabled(false);
cat.addPreference(pref);
// ActivityManager activityManager = (ActivityManager)getSystemService(Context.ACTIVITY_SERVICE);
@ -93,9 +93,9 @@ public class SettingsDevelopmentActivity extends SettingsBaseActivity {
pref.setSummary(getString(R.string.native_app_allocated_memory_descr
, mem.nativePrivateDirty / 1024, mem.dalvikPrivateDirty / 1024 , mem.otherPrivateDirty / 1024
, mem.nativePss / 1024, mem.dalvikPss / 1024 , mem.otherPss / 1024));
pref.setEnabled(false);
//Use setEnabled(false) only, this way you can produce more contrast by/while tapping it when needed
//pref.setSelectable(false);
pref.setSelectable(false);
//setEnabled(false) creates bad readability on some devices
//pref.setEnabled(false);
cat.addPreference(pref);
@ -110,9 +110,9 @@ public class SettingsDevelopmentActivity extends SettingsBaseActivity {
pref.setSummary(getString(R.string.day_night_info_description, "null",
"null"));
}
pref.setEnabled(false);
//Use setEnabled(false) only, this way you can produce more contrast by/while tapping it when needed
//pref.setSelectable(false);
pref.setSelectable(false);
//setEnabled(false) creates bad readability on some devices
//pref.setEnabled(false);
cat.addPreference(pref);
}

View file

@ -63,9 +63,9 @@ public class SettingsMonitoringActivity extends SettingsBaseActivity {
Preference globalrecord = new Preference(this);
globalrecord.setTitle(R.string.save_track_to_gpx_globally_headline);
globalrecord.setSummary(R.string.save_track_to_gpx_globally_descr);
globalrecord.setEnabled(false);
//Use setEnabled(false) only, this way you can produce more contrast by/while tapping it when needed
//globalrecord.setSelectable(false);
globalrecord.setSelectable(false);
//setEnabled(false) creates bad readability on some devices
//globalrecord.setEnabled(false);
cat.addPreference(globalrecord);
if(settings.SAVE_GLOBAL_TRACK_REMEMBER.get()) {

View file

@ -117,7 +117,10 @@ public class OsMoPlugin extends OsmandPlugin implements MonitoringInfoControlSer
return app.getString(R.string.osmo_plugin_name);
}
@Override
public int getLogoResourceId() {
return R.drawable.ic_osmo_dark;
}
@Override
public void updateLayers(OsmandMapTileView mapView, MapActivity activity) {

View file

@ -46,6 +46,7 @@ public class RendererRegistry {
internalRenderers.put("LightRS", "LightRS" + ".render.xml");
internalRenderers.put("High-contrast-roads", "High-contrast-roads" + ".render.xml");
internalRenderers.put("Winter-and-ski", "Winter-and-ski" + ".render.xml");
internalRenderers.put("Nautical", "nautical" + ".render.xml");
}
public RenderingRulesStorage defaultRender() {

View file

@ -0,0 +1,63 @@
package net.osmand.plus.widgets;
import android.annotation.TargetApi;
import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.Typeface;
import android.util.AttributeSet;
import android.widget.Button;
import net.osmand.plus.R;
import net.osmand.plus.helpers.FontCache;
/**
* Created by Alexey Pelykh on 30.01.2015.
*/
public class ButtonEx extends Button {
public ButtonEx(Context context) {
super(context);
}
public ButtonEx(Context context, AttributeSet attrs) {
super(context, attrs);
if (attrs != null) {
TypedArray resolvedAttrs = context.getTheme().obtainStyledAttributes(attrs,
R.styleable.OsmandWidgets, 0, 0);
parseAttributes(resolvedAttrs);
resolvedAttrs.recycle();
}
}
public ButtonEx(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
if (attrs != null) {
TypedArray resolvedAttrs = context.getTheme().obtainStyledAttributes(attrs,
R.styleable.OsmandWidgets, 0, 0);
parseAttributes(resolvedAttrs);
resolvedAttrs.recycle();
}
}
@TargetApi(21)
public ButtonEx(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
super(context, attrs, defStyleAttr, defStyleRes);
if (attrs != null) {
TypedArray resolvedAttrs = context.getTheme().obtainStyledAttributes(attrs,
R.styleable.OsmandWidgets, defStyleAttr, defStyleRes);
parseAttributes(resolvedAttrs);
resolvedAttrs.recycle();
}
}
private void parseAttributes(TypedArray resolvedAttributes) {
if (resolvedAttributes.hasValue(R.styleable.OsmandWidgets_typeface) && !isInEditMode()) {
String typefaceName = resolvedAttributes.getString(R.styleable.OsmandWidgets_typeface);
Typeface typeface = FontCache.getFont(getContext(), typefaceName);
if (typeface != null)
setTypeface(typeface);
}
}
}

View file

@ -0,0 +1,63 @@
package net.osmand.plus.widgets;
import android.annotation.TargetApi;
import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.Typeface;
import android.util.AttributeSet;
import android.widget.TextView;
import net.osmand.plus.R;
import net.osmand.plus.helpers.FontCache;
/**
* Created by Alexey Pelykh on 30.01.2015.
*/
public class TextViewEx extends TextView {
public TextViewEx(Context context) {
super(context);
}
public TextViewEx(Context context, AttributeSet attrs) {
super(context, attrs);
if (attrs != null) {
TypedArray resolvedAttrs = context.getTheme().obtainStyledAttributes(attrs,
R.styleable.OsmandWidgets, 0, 0);
parseAttributes(resolvedAttrs);
resolvedAttrs.recycle();
}
}
public TextViewEx(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
if (attrs != null) {
TypedArray resolvedAttrs = context.getTheme().obtainStyledAttributes(attrs,
R.styleable.OsmandWidgets, 0, 0);
parseAttributes(resolvedAttrs);
resolvedAttrs.recycle();
}
}
@TargetApi(21)
public TextViewEx(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
super(context, attrs, defStyleAttr, defStyleRes);
if (attrs != null) {
TypedArray resolvedAttrs = context.getTheme().obtainStyledAttributes(attrs,
R.styleable.OsmandWidgets, defStyleAttr, defStyleRes);
parseAttributes(resolvedAttrs);
resolvedAttrs.recycle();
}
}
private void parseAttributes(TypedArray resolvedAttributes) {
if (resolvedAttributes.hasValue(R.styleable.OsmandWidgets_typeface) && !isInEditMode()) {
String typefaceName = resolvedAttributes.getString(R.styleable.OsmandWidgets_typeface);
Typeface typeface = FontCache.getFont(getContext(), typefaceName);
if (typeface != null)
setTypeface(typeface);
}
}
}