Fix showing popup options with audio-only streams

This commit is contained in:
Stypox 2019-07-22 11:58:01 +02:00
parent bb5028364b
commit 8edc332a4e
No known key found for this signature in database
GPG Key ID: 4BDF1B40A49FDD23
3 changed files with 145 additions and 109 deletions

View File

@ -25,6 +25,7 @@ import org.schabi.newpipe.extractor.channel.ChannelInfoItem;
import org.schabi.newpipe.extractor.comments.CommentsInfoItem; import org.schabi.newpipe.extractor.comments.CommentsInfoItem;
import org.schabi.newpipe.extractor.playlist.PlaylistInfoItem; import org.schabi.newpipe.extractor.playlist.PlaylistInfoItem;
import org.schabi.newpipe.extractor.stream.StreamInfoItem; import org.schabi.newpipe.extractor.stream.StreamInfoItem;
import org.schabi.newpipe.extractor.stream.StreamType;
import org.schabi.newpipe.fragments.BaseStateFragment; import org.schabi.newpipe.fragments.BaseStateFragment;
import org.schabi.newpipe.fragments.OnScrollBelowItemsListener; import org.schabi.newpipe.fragments.OnScrollBelowItemsListener;
import org.schabi.newpipe.info_list.InfoItemDialog; import org.schabi.newpipe.info_list.InfoItemDialog;
@ -263,7 +264,18 @@ public abstract class BaseListFragment<I, N> extends BaseStateFragment<I> implem
final Activity activity = getActivity(); final Activity activity = getActivity();
if (context == null || context.getResources() == null || activity == null) return; if (context == null || context.getResources() == null || activity == null) return;
final String[] commands = new String[]{ boolean isAudioStream = (item.getStreamType() == StreamType.AUDIO_STREAM);
final String[] commands;
if (isAudioStream) {
commands = new String[]{
context.getResources().getString(R.string.enqueue_on_background),
context.getResources().getString(R.string.start_here_on_background),
context.getResources().getString(R.string.append_playlist),
context.getResources().getString(R.string.share)
};
} else {
commands = new String[]{
context.getResources().getString(R.string.enqueue_on_background), context.getResources().getString(R.string.enqueue_on_background),
context.getResources().getString(R.string.enqueue_on_popup), context.getResources().getString(R.string.enqueue_on_popup),
context.getResources().getString(R.string.start_here_on_background), context.getResources().getString(R.string.start_here_on_background),
@ -271,32 +283,30 @@ public abstract class BaseListFragment<I, N> extends BaseStateFragment<I> implem
context.getResources().getString(R.string.append_playlist), context.getResources().getString(R.string.append_playlist),
context.getResources().getString(R.string.share) context.getResources().getString(R.string.share)
}; };
}
final DialogInterface.OnClickListener actions = (dialogInterface, i) -> { final DialogInterface.OnClickListener actions = (dialogInterface, i) -> {
switch (i) { if (i == 0) {
case 0:
NavigationHelper.enqueueOnBackgroundPlayer(context, new SinglePlayQueue(item), false); NavigationHelper.enqueueOnBackgroundPlayer(context, new SinglePlayQueue(item), false);
break;
case 1: } else if (i == (isAudioStream ? -1 : 1)) { // disabled with audio streams
NavigationHelper.enqueueOnPopupPlayer(context, new SinglePlayQueue(item), false); NavigationHelper.enqueueOnPopupPlayer(context, new SinglePlayQueue(item), false);
break;
case 2: } else if (i == (isAudioStream ? 1 : 2)) {
NavigationHelper.playOnBackgroundPlayer(context, new SinglePlayQueue(item), true); NavigationHelper.playOnBackgroundPlayer(context, new SinglePlayQueue(item), true);
break;
case 3: } else if (i == (isAudioStream ? -1 : 3)) { // disabled with audio streams
NavigationHelper.playOnPopupPlayer(context, new SinglePlayQueue(item), true); NavigationHelper.playOnPopupPlayer(context, new SinglePlayQueue(item), true);
break;
case 4: } else if (i == (isAudioStream ? 2 : 4)) {
if (getFragmentManager() != null) { if (getFragmentManager() != null) {
PlaylistAppendDialog.fromStreamInfoItems(Collections.singletonList(item)) PlaylistAppendDialog.fromStreamInfoItems(Collections.singletonList(item))
.show(getFragmentManager(), TAG); .show(getFragmentManager(), TAG);
} }
break;
case 5: } else if (i == (isAudioStream ? 3 : 5)) {
ShareUtils.shareUrl(context, item.getName(), item.getUrl()); ShareUtils.shareUrl(context, item.getName(), item.getUrl());
break;
default:
break;
} }
}; };

View File

@ -25,6 +25,7 @@ import org.schabi.newpipe.R;
import org.schabi.newpipe.database.LocalItem; import org.schabi.newpipe.database.LocalItem;
import org.schabi.newpipe.database.stream.StreamStatisticsEntry; import org.schabi.newpipe.database.stream.StreamStatisticsEntry;
import org.schabi.newpipe.extractor.stream.StreamInfoItem; import org.schabi.newpipe.extractor.stream.StreamInfoItem;
import org.schabi.newpipe.extractor.stream.StreamType;
import org.schabi.newpipe.info_list.InfoItemDialog; import org.schabi.newpipe.info_list.InfoItemDialog;
import org.schabi.newpipe.local.BaseLocalListFragment; import org.schabi.newpipe.local.BaseLocalListFragment;
import org.schabi.newpipe.local.dialog.PlaylistAppendDialog; import org.schabi.newpipe.local.dialog.PlaylistAppendDialog;
@ -362,9 +363,21 @@ public class StatisticsPlaylistFragment
final Context context = getContext(); final Context context = getContext();
final Activity activity = getActivity(); final Activity activity = getActivity();
if (context == null || context.getResources() == null || activity == null) return; if (context == null || context.getResources() == null || activity == null) return;
final StreamInfoItem infoItem = item.toStreamInfoItem();
final String[] commands = new String[]{ final StreamInfoItem infoItem = item.toStreamInfoItem();
boolean isAudioStream = (infoItem.getStreamType() == StreamType.AUDIO_STREAM);
final String[] commands;
if (isAudioStream) {
commands = new String[]{
context.getResources().getString(R.string.enqueue_on_background),
context.getResources().getString(R.string.start_here_on_background),
context.getResources().getString(R.string.delete),
context.getResources().getString(R.string.append_playlist),
context.getResources().getString(R.string.share)
};
} else {
commands = new String[]{
context.getResources().getString(R.string.enqueue_on_background), context.getResources().getString(R.string.enqueue_on_background),
context.getResources().getString(R.string.enqueue_on_popup), context.getResources().getString(R.string.enqueue_on_popup),
context.getResources().getString(R.string.start_here_on_background), context.getResources().getString(R.string.start_here_on_background),
@ -373,36 +386,36 @@ public class StatisticsPlaylistFragment
context.getResources().getString(R.string.append_playlist), context.getResources().getString(R.string.append_playlist),
context.getResources().getString(R.string.share) context.getResources().getString(R.string.share)
}; };
}
final DialogInterface.OnClickListener actions = (dialogInterface, i) -> { final DialogInterface.OnClickListener actions = (dialogInterface, i) -> {
final int index = Math.max(itemListAdapter.getItemsList().indexOf(item), 0); final int index = Math.max(itemListAdapter.getItemsList().indexOf(item), 0);
switch (i) {
case 0: if (i == 0) {
NavigationHelper.enqueueOnBackgroundPlayer(context, new SinglePlayQueue(infoItem), false); NavigationHelper.enqueueOnBackgroundPlayer(context, new SinglePlayQueue(infoItem), false);
break;
case 1: } else if (i == (isAudioStream ? -1 : 1)) { // disabled with audio streams
NavigationHelper.enqueueOnPopupPlayer(context, new SinglePlayQueue(infoItem), false); NavigationHelper.enqueueOnPopupPlayer(context, new SinglePlayQueue(infoItem), false);
break;
case 2: } else if (i == (isAudioStream ? 1 : 2)) {
NavigationHelper.playOnBackgroundPlayer(context, getPlayQueue(index), true); NavigationHelper.playOnBackgroundPlayer(context, new SinglePlayQueue(infoItem), true);
break;
case 3: } else if (i == (isAudioStream ? -1 : 3)) { // disabled with audio streams
NavigationHelper.playOnPopupPlayer(context, getPlayQueue(index), true); NavigationHelper.playOnPopupPlayer(context, new SinglePlayQueue(infoItem), true);
break;
case 4: } else if (i == (isAudioStream ? 2 : 4)) {
deleteEntry(index); deleteEntry(index);
break;
case 5: } else if (i == (isAudioStream ? 3 : 5)) {
if (getFragmentManager() != null) { if (getFragmentManager() != null) {
PlaylistAppendDialog.fromStreamInfoItems(Collections.singletonList(infoItem)) PlaylistAppendDialog.fromStreamInfoItems(Collections.singletonList(infoItem))
.show(getFragmentManager(), TAG); .show(getFragmentManager(), TAG);
} }
break;
case 6: } else if (i == (isAudioStream ? 4 : 6)) {
ShareUtils.shareUrl(context, infoItem.getName(), infoItem.getUrl()); ShareUtils.shareUrl(context, infoItem.getName(), infoItem.getUrl());
break;
default:
break;
} }
}; };

View File

@ -26,6 +26,7 @@ import org.schabi.newpipe.R;
import org.schabi.newpipe.database.LocalItem; import org.schabi.newpipe.database.LocalItem;
import org.schabi.newpipe.database.playlist.PlaylistStreamEntry; import org.schabi.newpipe.database.playlist.PlaylistStreamEntry;
import org.schabi.newpipe.extractor.stream.StreamInfoItem; import org.schabi.newpipe.extractor.stream.StreamInfoItem;
import org.schabi.newpipe.extractor.stream.StreamType;
import org.schabi.newpipe.local.BaseLocalListFragment; import org.schabi.newpipe.local.BaseLocalListFragment;
import org.schabi.newpipe.info_list.InfoItemDialog; import org.schabi.newpipe.info_list.InfoItemDialog;
import org.schabi.newpipe.local.dialog.PlaylistAppendDialog; import org.schabi.newpipe.local.dialog.PlaylistAppendDialog;
@ -518,8 +519,20 @@ public class LocalPlaylistFragment extends BaseLocalListFragment<List<PlaylistSt
if (context == null || context.getResources() == null || activity == null) return; if (context == null || context.getResources() == null || activity == null) return;
final StreamInfoItem infoItem = item.toStreamInfoItem(); final StreamInfoItem infoItem = item.toStreamInfoItem();
boolean isAudioStream = (infoItem.getStreamType() == StreamType.AUDIO_STREAM);
final String[] commands = new String[]{ final String[] commands;
if (isAudioStream) {
commands = new String[]{
context.getResources().getString(R.string.enqueue_on_background),
context.getResources().getString(R.string.start_here_on_background),
context.getResources().getString(R.string.set_as_playlist_thumbnail),
context.getResources().getString(R.string.delete),
context.getResources().getString(R.string.append_playlist),
context.getResources().getString(R.string.share),
};
} else {
commands = new String[]{
context.getResources().getString(R.string.enqueue_on_background), context.getResources().getString(R.string.enqueue_on_background),
context.getResources().getString(R.string.enqueue_on_popup), context.getResources().getString(R.string.enqueue_on_popup),
context.getResources().getString(R.string.start_here_on_background), context.getResources().getString(R.string.start_here_on_background),
@ -529,39 +542,39 @@ public class LocalPlaylistFragment extends BaseLocalListFragment<List<PlaylistSt
context.getResources().getString(R.string.append_playlist), context.getResources().getString(R.string.append_playlist),
context.getResources().getString(R.string.share), context.getResources().getString(R.string.share),
}; };
}
final DialogInterface.OnClickListener actions = (dialogInterface, i) -> { final DialogInterface.OnClickListener actions = (dialogInterface, i) -> {
final int index = Math.max(itemListAdapter.getItemsList().indexOf(item), 0); final int index = Math.max(itemListAdapter.getItemsList().indexOf(item), 0);
switch (i) {
case 0: if (i == 0) {
NavigationHelper.enqueueOnBackgroundPlayer(context, new SinglePlayQueue(infoItem), false); NavigationHelper.enqueueOnBackgroundPlayer(context, new SinglePlayQueue(infoItem), false);
break;
case 1: } else if (i == (isAudioStream ? -1 : 1)) { // disabled with audio streams
NavigationHelper.enqueueOnPopupPlayer(context, new SinglePlayQueue(infoItem), false); NavigationHelper.enqueueOnPopupPlayer(context, new SinglePlayQueue(infoItem), false);
break;
case 2: } else if (i == (isAudioStream ? 1 : 2)) {
NavigationHelper.playOnBackgroundPlayer(context, getPlayQueue(index), true); NavigationHelper.playOnBackgroundPlayer(context, getPlayQueue(index), true);
break;
case 3: } else if (i == (isAudioStream ? -1 : 3)) { // disabled with audio streams
NavigationHelper.playOnPopupPlayer(context, getPlayQueue(index), true); NavigationHelper.playOnPopupPlayer(context, getPlayQueue(index), true);
break;
case 4: } else if (i == (isAudioStream ? 2 : 4)) {
changeThumbnailUrl(item.thumbnailUrl); changeThumbnailUrl(item.thumbnailUrl);
break;
case 5: } else if (i == (isAudioStream ? 3 : 5)) {
deleteItem(item); deleteItem(item);
break;
case 6: } else if (i == (isAudioStream ? 4 : 6)) {
if (getFragmentManager() != null) { if (getFragmentManager() != null) {
PlaylistAppendDialog.fromStreamInfoItems(Collections.singletonList(infoItem)) PlaylistAppendDialog.fromStreamInfoItems(Collections.singletonList(infoItem))
.show(getFragmentManager(), TAG); .show(getFragmentManager(), TAG);
} }
break;
case 7: } else if (i == (isAudioStream ? 5 : 7)) {
ShareUtils.shareUrl(context, infoItem.getName(), infoItem.getUrl()); ShareUtils.shareUrl(context, infoItem.getName(), infoItem.getUrl());
break;
default:
break;
} }
}; };