Improve tabs UX and saving/loading
- Show icons in the tabs list and dialog chooser - Add a "restore to defaults" button - Make removing gesture more user intuitive
This commit is contained in:
parent
c066ebd76f
commit
43674ae80a
26 changed files with 1493 additions and 606 deletions
9
app/src/main/res/drawable/ic_blank_page_black_24dp.xml
Normal file
9
app/src/main/res/drawable/ic_blank_page_black_24dp.xml
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="24.0"
|
||||
android:viewportHeight="24.0">
|
||||
<path
|
||||
android:fillColor="#FF000000"
|
||||
android:pathData="M17,3L7,3c-1.1,0 -2,0.9 -2,2v14c0,1.1 0.9,2 2,2h10c1.1,0 2,-0.9 2,-2L19,5c0,-1.1 -0.9,-2 -2,-2zM17,19L7,19L7,5h10v14z"/>
|
||||
</vector>
|
||||
9
app/src/main/res/drawable/ic_blank_page_white_24dp.xml
Normal file
9
app/src/main/res/drawable/ic_blank_page_white_24dp.xml
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="24.0"
|
||||
android:viewportHeight="24.0">
|
||||
<path
|
||||
android:fillColor="#FFFFFFFF"
|
||||
android:pathData="M17,3L7,3c-1.1,0 -2,0.9 -2,2v14c0,1.1 0.9,2 2,2h10c1.1,0 2,-0.9 2,-2L19,5c0,-1.1 -0.9,-2 -2,-2zM17,19L7,19L7,5h10v14z"/>
|
||||
</vector>
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="24.0"
|
||||
android:viewportHeight="24.0">
|
||||
<path
|
||||
android:fillColor="#FF000000"
|
||||
android:pathData="M14,12c0,-1.1 -0.9,-2 -2,-2s-2,0.9 -2,2 0.9,2 2,2 2,-0.9 2,-2zM12,3c-4.97,0 -9,4.03 -9,9L0,12l4,4 4,-4L5,12c0,-3.87 3.13,-7 7,-7s7,3.13 7,7 -3.13,7 -7,7c-1.51,0 -2.91,-0.49 -4.06,-1.3l-1.42,1.44C8.04,20.3 9.94,21 12,21c4.97,0 9,-4.03 9,-9s-4.03,-9 -9,-9z"/>
|
||||
</vector>
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="24.0"
|
||||
android:viewportHeight="24.0">
|
||||
<path
|
||||
android:fillColor="#FFFFFFFF"
|
||||
android:pathData="M14,12c0,-1.1 -0.9,-2 -2,-2s-2,0.9 -2,2 0.9,2 2,2 2,-0.9 2,-2zM12,3c-4.97,0 -9,4.03 -9,9L0,12l4,4 4,-4L5,12c0,-3.87 3.13,-7 7,-7s7,3.13 7,7 -3.13,7 -7,7c-1.51,0 -2.91,-0.49 -4.06,-1.3l-1.42,1.44C8.04,20.3 9.94,21 12,21c4.97,0 9,-4.03 9,-9s-4.03,-9 -9,-9z"/>
|
||||
</vector>
|
||||
|
|
@ -1,32 +1,32 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
<RelativeLayout
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:id="@+id/relLay"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:orientation="vertical">
|
||||
|
||||
<android.support.v7.widget.RecyclerView
|
||||
android:id="@+id/usedTabs"
|
||||
android:id="@+id/selectedTabs"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_margin="0dp"
|
||||
android:paddingBottom="0dp"
|
||||
android:paddingTop="0dp" >
|
||||
|
||||
</android.support.v7.widget.RecyclerView>
|
||||
tools:listitem="@layout/list_choose_tabs"/>
|
||||
|
||||
<android.support.design.widget.FloatingActionButton
|
||||
android:id="@+id/floatingActionButton"
|
||||
android:id="@+id/addTabsButton"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignParentBottom="true"
|
||||
android:layout_alignParentEnd="true"
|
||||
android:layout_alignParentRight="true"
|
||||
android:layout_marginBottom="16dp"
|
||||
android:layout_marginEnd="16dp"
|
||||
android:clickable="true"
|
||||
android:layout_alignParentRight="true"
|
||||
android:layout_marginRight="16dp"
|
||||
android:focusable="true" />
|
||||
android:clickable="true"
|
||||
android:focusable="true"
|
||||
app:backgroundTint="?attr/colorPrimary"
|
||||
app:fabSize="auto"
|
||||
app:srcCompat="?attr/ic_add"/>
|
||||
|
||||
</RelativeLayout>
|
||||
62
app/src/main/res/layout/list_choose_tabs.xml
Normal file
62
app/src/main/res/layout/list_choose_tabs.xml
Normal file
|
|
@ -0,0 +1,62 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<android.support.v7.widget.CardView
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:id="@+id/layoutCard"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginBottom="3dp"
|
||||
android:layout_marginLeft="5dp"
|
||||
android:layout_marginRight="5dp"
|
||||
android:layout_marginTop="3dp"
|
||||
android:minHeight="?listPreferredItemHeightSmall"
|
||||
android:orientation="horizontal"
|
||||
app:cardCornerRadius="5dp"
|
||||
app:cardElevation="4dp">
|
||||
|
||||
<RelativeLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_gravity="center_vertical">
|
||||
|
||||
<android.support.v7.widget.AppCompatImageView
|
||||
android:id="@+id/tabIcon"
|
||||
android:layout_width="24dp"
|
||||
android:layout_height="24dp"
|
||||
android:layout_alignParentLeft="true"
|
||||
android:layout_centerVertical="true"
|
||||
android:layout_marginLeft="16dp"
|
||||
tools:ignore="ContentDescription,RtlHardcoded"
|
||||
tools:src="?attr/ic_hot"/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tabName"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_centerVertical="true"
|
||||
android:layout_marginBottom="6dp"
|
||||
android:layout_marginLeft="16dp"
|
||||
android:layout_marginTop="6dp"
|
||||
android:layout_toLeftOf="@+id/handle"
|
||||
android:layout_toRightOf="@+id/tabIcon"
|
||||
android:ellipsize="end"
|
||||
android:maxLines="2"
|
||||
android:textAppearance="?textAppearanceListItem"
|
||||
tools:ignore="RtlHardcoded"
|
||||
tools:text="Lorem ipsum dolor sit amet"/>
|
||||
|
||||
<android.support.v7.widget.AppCompatImageView
|
||||
android:id="@+id/handle"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignParentRight="true"
|
||||
android:layout_centerVertical="true"
|
||||
android:paddingBottom="12dp"
|
||||
android:paddingLeft="16dp"
|
||||
android:paddingRight="16dp"
|
||||
android:paddingTop="12dp"
|
||||
android:src="?attr/drag_handle"
|
||||
tools:ignore="ContentDescription,RtlHardcoded"/>
|
||||
</RelativeLayout>
|
||||
</android.support.v7.widget.CardView>
|
||||
33
app/src/main/res/layout/list_choose_tabs_dialog.xml
Normal file
33
app/src/main/res/layout/list_choose_tabs_dialog.xml
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<RelativeLayout
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:minHeight="?listPreferredItemHeightSmall"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<android.support.v7.widget.AppCompatImageView
|
||||
android:id="@+id/tabIcon"
|
||||
android:layout_width="24dp"
|
||||
android:layout_height="24dp"
|
||||
android:layout_alignParentLeft="true"
|
||||
android:layout_centerVertical="true"
|
||||
android:layout_marginLeft="?dialogPreferredPadding"
|
||||
tools:ignore="ContentDescription,RtlHardcoded"
|
||||
tools:src="?attr/ic_hot"/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tabName"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_centerVertical="true"
|
||||
android:layout_marginLeft="?dialogPreferredPadding"
|
||||
android:layout_marginRight="?dialogPreferredPadding"
|
||||
android:layout_toRightOf="@+id/tabIcon"
|
||||
android:ellipsize="end"
|
||||
android:maxLines="2"
|
||||
android:textAppearance="?textAppearanceListItem"
|
||||
tools:ignore="RtlHardcoded"
|
||||
tools:text="Lorem ipsum dolor sit amet"/>
|
||||
</RelativeLayout>
|
||||
|
|
@ -1,40 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:id="@+id/layoutCard"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginBottom="3dp"
|
||||
android:layout_marginLeft="5dp"
|
||||
android:layout_marginRight="5dp"
|
||||
android:layout_marginTop="3dp"
|
||||
android:orientation="horizontal"
|
||||
android:paddingBottom="4dp"
|
||||
android:paddingTop="4dp"
|
||||
app:cardCornerRadius="5dp"
|
||||
app:cardElevation="4dp">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/handle"
|
||||
android:layout_width="30dp"
|
||||
android:layout_height="30dp"
|
||||
android:layout_gravity="center_vertical|end"
|
||||
android:layout_marginRight="10dp" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tabName"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignParentEnd="true"
|
||||
android:layout_alignParentLeft="true"
|
||||
android:layout_alignParentStart="true"
|
||||
android:layout_centerVertical="true"
|
||||
android:paddingBottom="9dp"
|
||||
android:paddingLeft="15dp"
|
||||
android:paddingRight="15dp"
|
||||
android:paddingStart="3dp"
|
||||
android:paddingTop="9dp"
|
||||
android:textAppearance="?android:attr/textAppearanceListItem"
|
||||
android:textSize="16sp" />
|
||||
|
||||
</android.support.v7.widget.CardView>
|
||||
|
|
@ -36,6 +36,8 @@
|
|||
<attr name="ic_save" format="reference"/>
|
||||
<attr name="ic_backup" format="reference"/>
|
||||
<attr name="ic_add" format="reference"/>
|
||||
<attr name="ic_restore_defaults" format="reference"/>
|
||||
<attr name="ic_blank_page" format="reference"/>
|
||||
|
||||
<!-- Can't refer to colors directly in drawable's xml-->
|
||||
<attr name="toolbar_shadow_drawable" format="reference"/>
|
||||
|
|
|
|||
|
|
@ -8,6 +8,8 @@
|
|||
<string name="current_service_key" translatable="false">service</string>
|
||||
<string name="default_service_value" translatable="false">@string/youtube</string>
|
||||
|
||||
<string name="saved_tabs_key" translatable="false">saved_tabs_key</string>
|
||||
|
||||
<!-- Key values -->
|
||||
<string name="download_path_key" translatable="false">download_path</string>
|
||||
<string name="download_path_audio_key" translatable="false">download_path_audio</string>
|
||||
|
|
@ -143,22 +145,7 @@
|
|||
<string name="enable_search_history_key" translatable="false">enable_search_history</string>
|
||||
<string name="enable_watch_history_key" translatable="false">enable_watch_history</string>
|
||||
<string name="main_page_content_key" translatable="false">main_page_content</string>
|
||||
<string name="blank_page_key" translatable="false">blank_page</string>
|
||||
<string name="feed_page_key" translatable="false">feed_page</string>
|
||||
<string name="subscription_page_key" translatable="false">subscription_page_key</string>
|
||||
<string name="kiosk_page_key" translatable="false">kiosk_page</string>
|
||||
<string name="channel_page_key" translatable="false">channel_page</string>
|
||||
<string-array name="main_page_content_pages" translatable="false">
|
||||
<item>@string/blank_page_key</item>
|
||||
<item>@string/kiosk_page_key</item>
|
||||
<item>@string/feed_page_key</item>
|
||||
<item>@string/subscription_page_key</item>
|
||||
<item>@string/channel_page_key</item>
|
||||
</string-array>
|
||||
<string name="main_page_selected_service" translatable="false">main_page_selected_service</string>
|
||||
<string name="main_page_selected_channel_name" translatable="false">main_page_selected_channel_name</string>
|
||||
<string name="main_page_selected_channel_url" translatable="false">main_page_selected_channel_url</string>
|
||||
<string name="main_page_selectd_kiosk_id" translatable="false">main_page_selectd_kiosk_id</string>
|
||||
|
||||
<string name="import_data">import_data</string>
|
||||
<string name="export_data">export_data</string>
|
||||
|
||||
|
|
|
|||
|
|
@ -36,7 +36,7 @@
|
|||
<string name="tab_subscriptions">Subscriptions</string>
|
||||
<string name="tab_bookmarks">Bookmarks</string>
|
||||
<string name="tab_new">New Tab</string>
|
||||
<string name="tab_chose">Chose Tab</string>
|
||||
<string name="tab_choose">Choose Tab</string>
|
||||
|
||||
<string name="fragment_whats_new">What\'s New</string>
|
||||
|
||||
|
|
@ -197,6 +197,9 @@
|
|||
<string name="file_name_empty_error">File name cannot be empty</string>
|
||||
<string name="error_occurred_detail">An error occurred: %1$s</string>
|
||||
<string name="no_streams_available_download">No streams available to download</string>
|
||||
<string name="saved_tabs_invalid_json">Using default tabs, error while reading saved tabs</string>
|
||||
<string name="restore_defaults">Restore defaults</string>
|
||||
<string name="restore_defaults_confirmation">Do you want to restore the defaults?</string>
|
||||
|
||||
<!-- error activity -->
|
||||
<string name="sorry_string">Sorry, that should not have happened.</string>
|
||||
|
|
@ -363,19 +366,11 @@
|
|||
<string name="main_page_content">Content of main page</string>
|
||||
<string name="main_page_content_summary">What tabs are shown on the main page</string>
|
||||
<string name="selection">Selection</string>
|
||||
<string name="chosenTabs">Your tabs</string>
|
||||
<string name="blank_page_summary">Blank Page</string>
|
||||
<string name="kiosk_page_summary">Kiosk Page</string>
|
||||
<string name="subscription_page_summary">Subscription Page</string>
|
||||
<string name="feed_page_summary">Feed Page</string>
|
||||
<string name="channel_page_summary">Channel Page</string>
|
||||
<string-array name="main_page_content_names">
|
||||
<item>@string/blank_page_summary</item>
|
||||
<item>@string/kiosk_page_summary</item>
|
||||
<item>@string/feed_page_summary</item>
|
||||
<item>@string/subscription_page_summary</item>
|
||||
<item>@string/channel_page_summary</item>
|
||||
</string-array>
|
||||
<string name="select_a_channel">Select a channel</string>
|
||||
<string name="no_channel_subscribed_yet">No channel subscribed yet</string>
|
||||
<string name="select_a_kiosk">Select a kiosk</string>
|
||||
|
|
|
|||
|
|
@ -52,6 +52,8 @@
|
|||
<item name="ic_save">@drawable/ic_save_black_24dp</item>
|
||||
<item name="ic_backup">@drawable/ic_backup_black_24dp</item>
|
||||
<item name="ic_add">@drawable/ic_add_black_24dp</item>
|
||||
<item name="ic_restore_defaults">@drawable/ic_settings_backup_restore_black_24dp</item>
|
||||
<item name="ic_blank_page">@drawable/ic_blank_page_black_24dp</item>
|
||||
|
||||
<item name="separator_color">@color/light_separator_color</item>
|
||||
<item name="contrast_background_color">@color/light_contrast_background_color</item>
|
||||
|
|
@ -110,6 +112,8 @@
|
|||
<item name="ic_save">@drawable/ic_save_white_24dp</item>
|
||||
<item name="ic_backup">@drawable/ic_backup_white_24dp</item>
|
||||
<item name="ic_add">@drawable/ic_add_white_24dp</item>
|
||||
<item name="ic_restore_defaults">@drawable/ic_settings_backup_restore_white_24dp</item>
|
||||
<item name="ic_blank_page">@drawable/ic_blank_page_white_24dp</item>
|
||||
|
||||
<item name="separator_color">@color/dark_separator_color</item>
|
||||
<item name="contrast_background_color">@color/dark_contrast_background_color</item>
|
||||
|
|
|
|||
|
|
@ -28,7 +28,7 @@
|
|||
android:summary="@string/caption_setting_description"/>
|
||||
|
||||
<PreferenceScreen
|
||||
android:fragment="org.schabi.newpipe.settings.ChoseTabsFragment"
|
||||
android:fragment="org.schabi.newpipe.settings.tabs.ChooseTabsFragment"
|
||||
android:summary="@string/main_page_content_summary"
|
||||
android:key="@string/main_page_content_key"
|
||||
android:title="@string/main_page_content"/>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue