Add channel details option to long-press menu (#5851)
Add dialog item to open channel details Use `List` as type of `entries` Put channel details item last Only show channel option when channel is present
This commit is contained in:
parent
9f59d4baa3
commit
6a9cae3de8
|
@ -45,6 +45,7 @@ import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Queue;
|
import java.util.Queue;
|
||||||
|
|
||||||
|
import static org.schabi.newpipe.extractor.utils.Utils.isNullOrEmpty;
|
||||||
import static org.schabi.newpipe.ktx.ViewUtils.animate;
|
import static org.schabi.newpipe.ktx.ViewUtils.animate;
|
||||||
import static org.schabi.newpipe.ktx.ViewUtils.animateHideRecyclerViewAllowingScrolling;
|
import static org.schabi.newpipe.ktx.ViewUtils.animateHideRecyclerViewAllowingScrolling;
|
||||||
|
|
||||||
|
@ -124,8 +125,8 @@ public abstract class BaseListFragment<I, N> extends BaseStateFragment<I>
|
||||||
/**
|
/**
|
||||||
* If the default implementation of {@link StateSaver.WriteRead} should be used.
|
* If the default implementation of {@link StateSaver.WriteRead} should be used.
|
||||||
*
|
*
|
||||||
* @see StateSaver
|
|
||||||
* @param useDefaultStateSaving Whether the default implementation should be used
|
* @param useDefaultStateSaving Whether the default implementation should be used
|
||||||
|
* @see StateSaver
|
||||||
*/
|
*/
|
||||||
public void setUseDefaultStateSaving(final boolean useDefaultStateSaving) {
|
public void setUseDefaultStateSaving(final boolean useDefaultStateSaving) {
|
||||||
this.useDefaultStateSaving = useDefaultStateSaving;
|
this.useDefaultStateSaving = useDefaultStateSaving;
|
||||||
|
@ -350,7 +351,7 @@ public abstract class BaseListFragment<I, N> extends BaseStateFragment<I>
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
final ArrayList<StreamDialogEntry> entries = new ArrayList<>();
|
final List<StreamDialogEntry> entries = new ArrayList<>();
|
||||||
|
|
||||||
if (PlayerHolder.getType() != null) {
|
if (PlayerHolder.getType() != null) {
|
||||||
entries.add(StreamDialogEntry.enqueue);
|
entries.add(StreamDialogEntry.enqueue);
|
||||||
|
@ -361,7 +362,7 @@ public abstract class BaseListFragment<I, N> extends BaseStateFragment<I>
|
||||||
StreamDialogEntry.append_playlist,
|
StreamDialogEntry.append_playlist,
|
||||||
StreamDialogEntry.share
|
StreamDialogEntry.share
|
||||||
));
|
));
|
||||||
} else {
|
} else {
|
||||||
entries.addAll(Arrays.asList(
|
entries.addAll(Arrays.asList(
|
||||||
StreamDialogEntry.start_here_on_background,
|
StreamDialogEntry.start_here_on_background,
|
||||||
StreamDialogEntry.start_here_on_popup,
|
StreamDialogEntry.start_here_on_popup,
|
||||||
|
@ -372,6 +373,11 @@ public abstract class BaseListFragment<I, N> extends BaseStateFragment<I>
|
||||||
if (KoreUtil.shouldShowPlayWithKodi(context, item.getServiceId())) {
|
if (KoreUtil.shouldShowPlayWithKodi(context, item.getServiceId())) {
|
||||||
entries.add(StreamDialogEntry.play_with_kodi);
|
entries.add(StreamDialogEntry.play_with_kodi);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!isNullOrEmpty(item.getUploaderUrl())) {
|
||||||
|
entries.add(StreamDialogEntry.show_channel_details);
|
||||||
|
}
|
||||||
|
|
||||||
StreamDialogEntry.setEnabledEntries(entries);
|
StreamDialogEntry.setEnabledEntries(entries);
|
||||||
|
|
||||||
new InfoItemDialog(activity, item, StreamDialogEntry.getCommands(context),
|
new InfoItemDialog(activity, item, StreamDialogEntry.getCommands(context),
|
||||||
|
|
|
@ -24,6 +24,12 @@ public enum StreamDialogEntry {
|
||||||
// enum values with DEFAULT actions //
|
// enum values with DEFAULT actions //
|
||||||
//////////////////////////////////////
|
//////////////////////////////////////
|
||||||
|
|
||||||
|
show_channel_details(R.string.show_channel_details, (fragment, item) ->
|
||||||
|
// For some reason `getParentFragmentManager()` doesn't work, but this does.
|
||||||
|
NavigationHelper.openChannelFragment(fragment.getActivity().getSupportFragmentManager(),
|
||||||
|
item.getServiceId(), item.getUploaderUrl(), item.getUploaderName())
|
||||||
|
),
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Enqueues the stream automatically to the current PlayerType.<br>
|
* Enqueues the stream automatically to the current PlayerType.<br>
|
||||||
* <br>
|
* <br>
|
||||||
|
|
|
@ -466,6 +466,7 @@
|
||||||
<string name="play_queue_stream_detail">Details</string>
|
<string name="play_queue_stream_detail">Details</string>
|
||||||
<string name="play_queue_audio_settings">Audio Settings</string>
|
<string name="play_queue_audio_settings">Audio Settings</string>
|
||||||
<string name="hold_to_append">Hold to enqueue</string>
|
<string name="hold_to_append">Hold to enqueue</string>
|
||||||
|
<string name="show_channel_details">Show channel details</string>
|
||||||
<string name="enqueue_stream">Enqueue</string>
|
<string name="enqueue_stream">Enqueue</string>
|
||||||
<string name="enqueued">Enqueued</string>
|
<string name="enqueued">Enqueued</string>
|
||||||
<string name="start_here_on_main">Start playing here</string>
|
<string name="start_here_on_main">Start playing here</string>
|
||||||
|
|
Loading…
Reference in New Issue