-Modified selected play queue item to highlight entire item instead of text.
-Added selected item bullet. -Modified play queue panel darker on main video player. -Fixed color issue on play queue panel on light-themed main video player. -Fixed hold-to-enqueue tooltip flashing when clicked on earlier sdk versions. -Fixed queue item removal causing metadata for currently playing to refresh.
| @@ -483,9 +483,12 @@ public class VideoDetailFragment extends BaseStateFragment<StreamInfo> implement | |||||||
|                 if (!PreferenceManager.getDefaultSharedPreferences(activity).getBoolean(getString(R.string.show_hold_to_append_key), true)) return false; |                 if (!PreferenceManager.getDefaultSharedPreferences(activity).getBoolean(getString(R.string.show_hold_to_append_key), true)) return false; | ||||||
|  |  | ||||||
|                 if (motionEvent.getAction() == MotionEvent.ACTION_DOWN) { |                 if (motionEvent.getAction() == MotionEvent.ACTION_DOWN) { | ||||||
|                     appendControlsDetail.setVisibility(View.VISIBLE); |                     animateView(appendControlsDetail, true, 250, 0, new Runnable() { | ||||||
|                 } else { |                         @Override | ||||||
|                     appendControlsDetail.setVisibility(View.GONE); |                         public void run() { | ||||||
|  |                             animateView(appendControlsDetail, false, 1500, 1000); | ||||||
|  |                         } | ||||||
|  |                     }); | ||||||
|                 } |                 } | ||||||
|                 return false; |                 return false; | ||||||
|             } |             } | ||||||
|   | |||||||
| @@ -178,7 +178,8 @@ public class MediaSourceManager { | |||||||
|             case REMOVE: |             case REMOVE: | ||||||
|                 final RemoveEvent removeEvent = (RemoveEvent) event; |                 final RemoveEvent removeEvent = (RemoveEvent) event; | ||||||
|                 remove(removeEvent.getRemoveIndex()); |                 remove(removeEvent.getRemoveIndex()); | ||||||
|                 sync(); |                 // Sync only when the currently playing is removed | ||||||
|  |                 if (removeEvent.getQueueIndex() == removeEvent.getRemoveIndex()) sync(); | ||||||
|                 break; |                 break; | ||||||
|             case MOVE: |             case MOVE: | ||||||
|                 final MoveEvent moveEvent = (MoveEvent) event; |                 final MoveEvent moveEvent = (MoveEvent) event; | ||||||
|   | |||||||
| @@ -188,10 +188,15 @@ public class PlayQueueAdapter extends RecyclerView.Adapter<RecyclerView.ViewHold | |||||||
|     @Override |     @Override | ||||||
|     public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { |     public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { | ||||||
|         if(holder instanceof PlayQueueItemHolder) { |         if(holder instanceof PlayQueueItemHolder) { | ||||||
|  |             final PlayQueueItemHolder itemHolder = (PlayQueueItemHolder) holder; | ||||||
|  |  | ||||||
|             // Build the list item |             // Build the list item | ||||||
|             playQueueItemBuilder.buildStreamInfoItem((PlayQueueItemHolder) holder, playQueue.getStreams().get(position)); |             playQueueItemBuilder.buildStreamInfoItem(itemHolder, playQueue.getStreams().get(position)); | ||||||
|  |  | ||||||
|             // Check if the current item should be selected/highlighted |             // Check if the current item should be selected/highlighted | ||||||
|             holder.itemView.setSelected(playQueue.getIndex() == position); |             final boolean isSelected = playQueue.getIndex() == position; | ||||||
|  |             itemHolder.itemSelected.setVisibility(isSelected ? View.VISIBLE : View.INVISIBLE); | ||||||
|  |             itemHolder.itemView.setSelected(isSelected); | ||||||
|         } else if(holder instanceof HFHolder && position == playQueue.getStreams().size() && footer != null && showFooter) { |         } else if(holder instanceof HFHolder && position == playQueue.getStreams().size() && footer != null && showFooter) { | ||||||
|             ((HFHolder) holder).view = footer; |             ((HFHolder) holder).view = footer; | ||||||
|         } |         } | ||||||
|   | |||||||
| @@ -32,7 +32,7 @@ import org.schabi.newpipe.info_list.holder.InfoItemHolder; | |||||||
| public class PlayQueueItemHolder extends RecyclerView.ViewHolder { | public class PlayQueueItemHolder extends RecyclerView.ViewHolder { | ||||||
|  |  | ||||||
|     public final TextView itemVideoTitleView, itemDurationView, itemAdditionalDetailsView; |     public final TextView itemVideoTitleView, itemDurationView, itemAdditionalDetailsView; | ||||||
|     public final ImageView itemThumbnailView, itemHandle; |     public final ImageView itemSelected, itemThumbnailView, itemHandle; | ||||||
|  |  | ||||||
|     public final View itemRoot; |     public final View itemRoot; | ||||||
|  |  | ||||||
| @@ -42,6 +42,7 @@ public class PlayQueueItemHolder extends RecyclerView.ViewHolder { | |||||||
|         itemVideoTitleView = v.findViewById(R.id.itemVideoTitleView); |         itemVideoTitleView = v.findViewById(R.id.itemVideoTitleView); | ||||||
|         itemDurationView = v.findViewById(R.id.itemDurationView); |         itemDurationView = v.findViewById(R.id.itemDurationView); | ||||||
|         itemAdditionalDetailsView = v.findViewById(R.id.itemAdditionalDetails); |         itemAdditionalDetailsView = v.findViewById(R.id.itemAdditionalDetails); | ||||||
|  |         itemSelected = v.findViewById(R.id.itemSelected); | ||||||
|         itemThumbnailView = v.findViewById(R.id.itemThumbnailView); |         itemThumbnailView = v.findViewById(R.id.itemThumbnailView); | ||||||
|         itemHandle = v.findViewById(R.id.itemHandle); |         itemHandle = v.findViewById(R.id.itemHandle); | ||||||
|     } |     } | ||||||
|   | |||||||
| @@ -1,5 +0,0 @@ | |||||||
| <?xml version="1.0" encoding="utf-8"?> |  | ||||||
| <selector xmlns:android="http://schemas.android.com/apk/res/android"> |  | ||||||
|     <item android:state_selected="true" android:color="@color/dark_youtube_primary_color"/> |  | ||||||
|     <item android:color="@color/dark_youtube_accent_color"/> |  | ||||||
| </selector> |  | ||||||
| @@ -1,5 +0,0 @@ | |||||||
| <?xml version="1.0" encoding="utf-8"?> |  | ||||||
| <selector xmlns:android="http://schemas.android.com/apk/res/android"> |  | ||||||
|     <item android:state_selected="true" android:color="@color/light_youtube_primary_color"/> |  | ||||||
|     <item android:color="@color/light_youtube_accent_color"/> |  | ||||||
| </selector> |  | ||||||
| After Width: | Height: | Size: 256 B | 
| After Width: | Height: | Size: 252 B | 
| After Width: | Height: | Size: 184 B | 
| After Width: | Height: | Size: 181 B | 
| After Width: | Height: | Size: 335 B | 
| After Width: | Height: | Size: 328 B | 
| After Width: | Height: | Size: 468 B | 
| After Width: | Height: | Size: 461 B | 
| After Width: | Height: | Size: 618 B | 
| After Width: | Height: | Size: 614 B | 
							
								
								
									
										5
									
								
								app/src/main/res/drawable/dark_selector.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:state_selected="true" android:drawable="@color/selected_background_color"/> | ||||||
|  |     <item android:drawable="@color/transparent_background_color"/> | ||||||
|  | </selector> | ||||||
							
								
								
									
										5
									
								
								app/src/main/res/drawable/light_selector.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:state_selected="true" android:drawable="@color/selected_background_color"/> | ||||||
|  |     <item android:drawable="@color/transparent_background_color"/> | ||||||
|  | </selector> | ||||||
| @@ -46,8 +46,8 @@ | |||||||
|         android:id="@+id/playQueuePanel" |         android:id="@+id/playQueuePanel" | ||||||
|         android:layout_width="match_parent" |         android:layout_width="match_parent" | ||||||
|         android:layout_height="match_parent" |         android:layout_height="match_parent" | ||||||
|         android:background="#64000000" |  | ||||||
|         android:visibility="gone" |         android:visibility="gone" | ||||||
|  |         android:background="?attr/queue_background_color" | ||||||
|         tools:visibility="visible"> |         tools:visibility="visible"> | ||||||
|  |  | ||||||
|         <RelativeLayout |         <RelativeLayout | ||||||
| @@ -68,6 +68,7 @@ | |||||||
|                 android:clickable="true" |                 android:clickable="true" | ||||||
|                 android:focusable="true" |                 android:focusable="true" | ||||||
|                 android:scaleType="fitXY" |                 android:scaleType="fitXY" | ||||||
|  |                 android:tint="?attr/colorAccent" | ||||||
|                 android:src="@drawable/ic_close_white_24dp" |                 android:src="@drawable/ic_close_white_24dp" | ||||||
|                 android:background="?android:selectableItemBackground" |                 android:background="?android:selectableItemBackground" | ||||||
|                 tools:ignore="ContentDescription"/> |                 tools:ignore="ContentDescription"/> | ||||||
| @@ -85,6 +86,7 @@ | |||||||
|                 android:clickable="true" |                 android:clickable="true" | ||||||
|                 android:focusable="true" |                 android:focusable="true" | ||||||
|                 android:scaleType="fitXY" |                 android:scaleType="fitXY" | ||||||
|  |                 android:tint="?attr/colorAccent" | ||||||
|                 android:src="@drawable/exo_controls_repeat_off" |                 android:src="@drawable/exo_controls_repeat_off" | ||||||
|                 android:background="?android:selectableItemBackground" |                 android:background="?android:selectableItemBackground" | ||||||
|                 tools:ignore="ContentDescription,RtlHardcoded"/> |                 tools:ignore="ContentDescription,RtlHardcoded"/> | ||||||
| @@ -99,6 +101,7 @@ | |||||||
|                 android:clickable="true" |                 android:clickable="true" | ||||||
|                 android:focusable="true" |                 android:focusable="true" | ||||||
|                 android:scaleType="fitXY" |                 android:scaleType="fitXY" | ||||||
|  |                 android:tint="?attr/colorAccent" | ||||||
|                 android:src="@drawable/ic_shuffle_white_24dp" |                 android:src="@drawable/ic_shuffle_white_24dp" | ||||||
|                 android:background="?android:selectableItemBackground" |                 android:background="?android:selectableItemBackground" | ||||||
|                 tools:ignore="ContentDescription,RtlHardcoded"/> |                 tools:ignore="ContentDescription,RtlHardcoded"/> | ||||||
|   | |||||||
| @@ -5,17 +5,32 @@ | |||||||
|     android:id="@+id/itemRoot" |     android:id="@+id/itemRoot" | ||||||
|     android:layout_width="match_parent" |     android:layout_width="match_parent" | ||||||
|     android:layout_height="48dp" |     android:layout_height="48dp" | ||||||
|     android:background="?attr/selectableItemBackground" |     android:foreground="?attr/selectableItemBackground" | ||||||
|  |     android:background="?attr/selector_drawable" | ||||||
|     android:clickable="true" |     android:clickable="true" | ||||||
|     android:focusable="true" |     android:focusable="true" | ||||||
|     android:padding="6dp"> |     android:paddingTop="6dp" | ||||||
|  |     android:paddingBottom="6dp"> | ||||||
|  |  | ||||||
|  |     <ImageView | ||||||
|  |         android:id="@+id/itemSelected" | ||||||
|  |         android:layout_width="10dp" | ||||||
|  |         android:layout_height="10dp" | ||||||
|  |         android:layout_centerInParent="true" | ||||||
|  |         android:layout_alignParentLeft="true" | ||||||
|  |         android:layout_alignParentStart="true" | ||||||
|  |         android:layout_marginLeft="2dp" | ||||||
|  |         android:layout_marginRight="2dp" | ||||||
|  |         android:scaleType="fitXY" | ||||||
|  |         android:src="?attr/selected" | ||||||
|  |         tools:ignore="ContentDescription,RtlHardcoded"/> | ||||||
|  |  | ||||||
|     <ImageView |     <ImageView | ||||||
|         android:id="@+id/itemThumbnailView" |         android:id="@+id/itemThumbnailView" | ||||||
|         android:layout_width="@dimen/play_queue_thumbnail_width" |         android:layout_width="@dimen/play_queue_thumbnail_width" | ||||||
|         android:layout_height="@dimen/play_queue_thumbnail_height" |         android:layout_height="@dimen/play_queue_thumbnail_height" | ||||||
|         android:layout_alignParentLeft="true" |         android:layout_toRightOf="@+id/itemSelected" | ||||||
|         android:layout_alignParentStart="true" |         android:layout_toEndOf="@+id/itemSelected" | ||||||
|         android:layout_alignParentTop="true" |         android:layout_alignParentTop="true" | ||||||
|         android:layout_marginRight="@dimen/video_item_search_image_right_margin" |         android:layout_marginRight="@dimen/video_item_search_image_right_margin" | ||||||
|         android:contentDescription="@string/list_thumbnail_view_description" |         android:contentDescription="@string/list_thumbnail_view_description" | ||||||
| @@ -29,8 +44,7 @@ | |||||||
|         android:layout_height="match_parent" |         android:layout_height="match_parent" | ||||||
|         android:layout_gravity="center_vertical" |         android:layout_gravity="center_vertical" | ||||||
|         android:layout_alignParentRight="true" |         android:layout_alignParentRight="true" | ||||||
|         android:layout_marginLeft="10dp" |         android:padding="@dimen/video_item_search_image_right_margin" | ||||||
|         android:layout_marginRight="5dp" |  | ||||||
|         android:scaleType="center" |         android:scaleType="center" | ||||||
|         android:src="?attr/drag_handle" |         android:src="?attr/drag_handle" | ||||||
|         tools:ignore="ContentDescription,RtlHardcoded"/> |         tools:ignore="ContentDescription,RtlHardcoded"/> | ||||||
| @@ -69,7 +83,6 @@ | |||||||
|         android:maxLines="1" |         android:maxLines="1" | ||||||
|         android:textAppearance="?android:attr/textAppearanceLarge" |         android:textAppearance="?android:attr/textAppearanceLarge" | ||||||
|         android:textSize="@dimen/video_item_search_title_text_size" |         android:textSize="@dimen/video_item_search_title_text_size" | ||||||
|         android:textColor="?attr/selector_color" |  | ||||||
|         tools:text="Lorem ipsum dolor sit amet, consectetur adipiscing elit. "/> |         tools:text="Lorem ipsum dolor sit amet, consectetur adipiscing elit. "/> | ||||||
|  |  | ||||||
|     <TextView |     <TextView | ||||||
| @@ -84,7 +97,6 @@ | |||||||
|         android:lines="1" |         android:lines="1" | ||||||
|         android:textAppearance="?android:attr/textAppearanceSmall" |         android:textAppearance="?android:attr/textAppearanceSmall" | ||||||
|         android:textSize="@dimen/video_item_search_upload_date_text_size" |         android:textSize="@dimen/video_item_search_upload_date_text_size" | ||||||
|         android:textColor="?attr/selector_color" |  | ||||||
|         tools:text="Uploader"/> |         tools:text="Uploader"/> | ||||||
|  |  | ||||||
| </RelativeLayout> | </RelativeLayout> | ||||||
| @@ -19,11 +19,13 @@ | |||||||
|     <attr name="language" format="reference"/> |     <attr name="language" format="reference"/> | ||||||
|     <attr name="history" format="reference"/> |     <attr name="history" format="reference"/> | ||||||
|     <attr name="drag_handle" format="reference"/> |     <attr name="drag_handle" format="reference"/> | ||||||
|  |     <attr name="selected" format="reference"/> | ||||||
|  |  | ||||||
|     <!-- Can't refer to colors directly into drawable's xml--> |     <!-- Can't refer to colors directly into drawable's xml--> | ||||||
|     <attr name="toolbar_shadow_drawable" format="reference"/> |     <attr name="toolbar_shadow_drawable" format="reference"/> | ||||||
|  |     <attr name="selector_drawable" format="reference"/> | ||||||
|  |  | ||||||
|     <attr name="selector_color" format="color"/> |  | ||||||
|     <attr name="separator_color" format="color"/> |     <attr name="separator_color" format="color"/> | ||||||
|  |     <attr name="queue_background_color" format="color"/> | ||||||
|     <attr name="contrast_background_color" format="color"/> |     <attr name="contrast_background_color" format="color"/> | ||||||
| </resources> | </resources> | ||||||
| @@ -12,6 +12,7 @@ | |||||||
|     <color name="light_shadow_start_color">#5a000000</color> |     <color name="light_shadow_start_color">#5a000000</color> | ||||||
|     <color name="light_license_background_color">#ffffff</color> |     <color name="light_license_background_color">#ffffff</color> | ||||||
|     <color name="light_license_text_color">#212121</color> |     <color name="light_license_text_color">#212121</color> | ||||||
|  |     <color name="light_queue_background_color">#c8ffffff</color> | ||||||
|  |  | ||||||
|     <!-- Dark Theme --> |     <!-- Dark Theme --> | ||||||
|     <color name="dark_background_color">#222222</color> |     <color name="dark_background_color">#222222</color> | ||||||
| @@ -24,6 +25,7 @@ | |||||||
|     <color name="dark_shadow_start_color">#82000000</color> |     <color name="dark_shadow_start_color">#82000000</color> | ||||||
|     <color name="dark_license_background_color">#424242</color> |     <color name="dark_license_background_color">#424242</color> | ||||||
|     <color name="dark_license_text_color">#ffffff</color> |     <color name="dark_license_text_color">#ffffff</color> | ||||||
|  |     <color name="dark_queue_background_color">#af000000</color> | ||||||
|  |  | ||||||
|     <!-- Black Theme --> |     <!-- Black Theme --> | ||||||
|     <color name="black_background_color">#000</color> |     <color name="black_background_color">#000</color> | ||||||
| @@ -44,6 +46,9 @@ | |||||||
|     <color name="subscribed_background_color">#d6d6d6</color> |     <color name="subscribed_background_color">#d6d6d6</color> | ||||||
|     <color name="subscribed_text_color">#717171</color> |     <color name="subscribed_text_color">#717171</color> | ||||||
|  |  | ||||||
|  |     <color name="transparent_background_color">#00000000</color> | ||||||
|  |     <color name="selected_background_color">#96717171</color> | ||||||
|  |  | ||||||
|     <!-- GigaGet theme --> |     <!-- GigaGet theme --> | ||||||
|     <color name="bluegray">#607D8B</color> |     <color name="bluegray">#607D8B</color> | ||||||
|  |  | ||||||
|   | |||||||
| @@ -26,11 +26,13 @@ | |||||||
|         <item name="language">@drawable/ic_language_black_24dp</item> |         <item name="language">@drawable/ic_language_black_24dp</item> | ||||||
|         <item name="history">@drawable/ic_history_black_24dp</item> |         <item name="history">@drawable/ic_history_black_24dp</item> | ||||||
|         <item name="drag_handle">@drawable/ic_drag_handle_black_24dp</item> |         <item name="drag_handle">@drawable/ic_drag_handle_black_24dp</item> | ||||||
|  |         <item name="selected">@drawable/ic_fiber_manual_record_black_24dp</item> | ||||||
|  |  | ||||||
|         <item name="selector_color">@color/light_selector</item> |  | ||||||
|         <item name="separator_color">@color/light_separator_color</item> |         <item name="separator_color">@color/light_separator_color</item> | ||||||
|         <item name="contrast_background_color">@color/light_contrast_background_color</item> |         <item name="contrast_background_color">@color/light_contrast_background_color</item> | ||||||
|  |         <item name="queue_background_color">@color/light_queue_background_color</item> | ||||||
|         <item name="toolbar_shadow_drawable">@drawable/toolbar_shadow_light</item> |         <item name="toolbar_shadow_drawable">@drawable/toolbar_shadow_light</item> | ||||||
|  |         <item name="selector_drawable">@drawable/light_selector</item> | ||||||
|         <item name="colorControlHighlight">@color/light_ripple_color</item> |         <item name="colorControlHighlight">@color/light_ripple_color</item> | ||||||
|  |  | ||||||
|         <item name="preferenceTheme">@style/PreferenceThemeOverlay.v14.Material</item> |         <item name="preferenceTheme">@style/PreferenceThemeOverlay.v14.Material</item> | ||||||
| @@ -62,11 +64,13 @@ | |||||||
|         <item name="language">@drawable/ic_language_white_24dp</item> |         <item name="language">@drawable/ic_language_white_24dp</item> | ||||||
|         <item name="history">@drawable/ic_history_white_24dp</item> |         <item name="history">@drawable/ic_history_white_24dp</item> | ||||||
|         <item name="drag_handle">@drawable/ic_drag_handle_white_24dp</item> |         <item name="drag_handle">@drawable/ic_drag_handle_white_24dp</item> | ||||||
|  |         <item name="selected">@drawable/ic_fiber_manual_record_white_24dp</item> | ||||||
|  |  | ||||||
|         <item name="selector_color">@color/dark_selector</item> |  | ||||||
|         <item name="separator_color">@color/dark_separator_color</item> |         <item name="separator_color">@color/dark_separator_color</item> | ||||||
|         <item name="contrast_background_color">@color/dark_contrast_background_color</item> |         <item name="contrast_background_color">@color/dark_contrast_background_color</item> | ||||||
|  |         <item name="queue_background_color">@color/dark_queue_background_color</item> | ||||||
|         <item name="toolbar_shadow_drawable">@drawable/toolbar_shadow_dark</item> |         <item name="toolbar_shadow_drawable">@drawable/toolbar_shadow_dark</item> | ||||||
|  |         <item name="selector_drawable">@drawable/dark_selector</item> | ||||||
|         <item name="colorControlHighlight">@color/dark_ripple_color</item> |         <item name="colorControlHighlight">@color/dark_ripple_color</item> | ||||||
|  |  | ||||||
|         <item name="preferenceTheme">@style/PreferenceThemeOverlay.v14.Material</item> |         <item name="preferenceTheme">@style/PreferenceThemeOverlay.v14.Material</item> | ||||||
|   | |||||||
 John Zhen Mo
					John Zhen Mo