From 8edc332a4ebcc98e7611e50e61af5595e2bf729c Mon Sep 17 00:00:00 2001 From: Stypox Date: Mon, 22 Jul 2019 11:58:01 +0200 Subject: [PATCH] Fix showing popup options with audio-only streams --- .../fragments/list/BaseListFragment.java | 74 ++++++++------- .../history/StatisticsPlaylistFragment.java | 87 +++++++++-------- .../local/playlist/LocalPlaylistFragment.java | 93 +++++++++++-------- 3 files changed, 145 insertions(+), 109 deletions(-) diff --git a/app/src/main/java/org/schabi/newpipe/fragments/list/BaseListFragment.java b/app/src/main/java/org/schabi/newpipe/fragments/list/BaseListFragment.java index 6a304dc1f..de4c17c3d 100644 --- a/app/src/main/java/org/schabi/newpipe/fragments/list/BaseListFragment.java +++ b/app/src/main/java/org/schabi/newpipe/fragments/list/BaseListFragment.java @@ -25,6 +25,7 @@ import org.schabi.newpipe.extractor.channel.ChannelInfoItem; import org.schabi.newpipe.extractor.comments.CommentsInfoItem; import org.schabi.newpipe.extractor.playlist.PlaylistInfoItem; 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.OnScrollBelowItemsListener; import org.schabi.newpipe.info_list.InfoItemDialog; @@ -263,40 +264,49 @@ public abstract class BaseListFragment extends BaseStateFragment implem final Activity activity = getActivity(); if (context == null || context.getResources() == null || activity == null) return; - final String[] commands = new String[]{ - context.getResources().getString(R.string.enqueue_on_background), - 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_popup), - context.getResources().getString(R.string.append_playlist), - context.getResources().getString(R.string.share) - }; + 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_popup), + context.getResources().getString(R.string.start_here_on_background), + context.getResources().getString(R.string.start_here_on_popup), + context.getResources().getString(R.string.append_playlist), + context.getResources().getString(R.string.share) + }; + } final DialogInterface.OnClickListener actions = (dialogInterface, i) -> { - switch (i) { - case 0: - NavigationHelper.enqueueOnBackgroundPlayer(context, new SinglePlayQueue(item), false); - break; - case 1: - NavigationHelper.enqueueOnPopupPlayer(context, new SinglePlayQueue(item), false); - break; - case 2: - NavigationHelper.playOnBackgroundPlayer(context, new SinglePlayQueue(item), true); - break; - case 3: - NavigationHelper.playOnPopupPlayer(context, new SinglePlayQueue(item), true); - break; - case 4: - if (getFragmentManager() != null) { - PlaylistAppendDialog.fromStreamInfoItems(Collections.singletonList(item)) - .show(getFragmentManager(), TAG); - } - break; - case 5: - ShareUtils.shareUrl(context, item.getName(), item.getUrl()); - break; - default: - break; + if (i == 0) { + NavigationHelper.enqueueOnBackgroundPlayer(context, new SinglePlayQueue(item), false); + + } else if (i == (isAudioStream ? -1 : 1)) { // disabled with audio streams + NavigationHelper.enqueueOnPopupPlayer(context, new SinglePlayQueue(item), false); + + } else if (i == (isAudioStream ? 1 : 2)) { + NavigationHelper.playOnBackgroundPlayer(context, new SinglePlayQueue(item), true); + + } else if (i == (isAudioStream ? -1 : 3)) { // disabled with audio streams + NavigationHelper.playOnPopupPlayer(context, new SinglePlayQueue(item), true); + + } else if (i == (isAudioStream ? 2 : 4)) { + if (getFragmentManager() != null) { + PlaylistAppendDialog.fromStreamInfoItems(Collections.singletonList(item)) + .show(getFragmentManager(), TAG); + } + + } else if (i == (isAudioStream ? 3 : 5)) { + ShareUtils.shareUrl(context, item.getName(), item.getUrl()); + } }; diff --git a/app/src/main/java/org/schabi/newpipe/local/history/StatisticsPlaylistFragment.java b/app/src/main/java/org/schabi/newpipe/local/history/StatisticsPlaylistFragment.java index 9a815461d..67d00a3b1 100644 --- a/app/src/main/java/org/schabi/newpipe/local/history/StatisticsPlaylistFragment.java +++ b/app/src/main/java/org/schabi/newpipe/local/history/StatisticsPlaylistFragment.java @@ -25,6 +25,7 @@ import org.schabi.newpipe.R; import org.schabi.newpipe.database.LocalItem; import org.schabi.newpipe.database.stream.StreamStatisticsEntry; 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.local.BaseLocalListFragment; import org.schabi.newpipe.local.dialog.PlaylistAppendDialog; @@ -362,47 +363,59 @@ public class StatisticsPlaylistFragment final Context context = getContext(); final Activity activity = getActivity(); if (context == null || context.getResources() == null || activity == null) return; - final StreamInfoItem infoItem = item.toStreamInfoItem(); - final String[] commands = new String[]{ - context.getResources().getString(R.string.enqueue_on_background), - 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_popup), - context.getResources().getString(R.string.delete), - context.getResources().getString(R.string.append_playlist), - context.getResources().getString(R.string.share) - }; + 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_popup), + context.getResources().getString(R.string.start_here_on_background), + context.getResources().getString(R.string.start_here_on_popup), + context.getResources().getString(R.string.delete), + context.getResources().getString(R.string.append_playlist), + context.getResources().getString(R.string.share) + }; + } + final DialogInterface.OnClickListener actions = (dialogInterface, i) -> { final int index = Math.max(itemListAdapter.getItemsList().indexOf(item), 0); - switch (i) { - case 0: - NavigationHelper.enqueueOnBackgroundPlayer(context, new SinglePlayQueue(infoItem), false); - break; - case 1: - NavigationHelper.enqueueOnPopupPlayer(context, new SinglePlayQueue(infoItem), false); - break; - case 2: - NavigationHelper.playOnBackgroundPlayer(context, getPlayQueue(index), true); - break; - case 3: - NavigationHelper.playOnPopupPlayer(context, getPlayQueue(index), true); - break; - case 4: - deleteEntry(index); - break; - case 5: - if (getFragmentManager() != null) { - PlaylistAppendDialog.fromStreamInfoItems(Collections.singletonList(infoItem)) - .show(getFragmentManager(), TAG); - } - break; - case 6: - ShareUtils.shareUrl(context, infoItem.getName(), infoItem.getUrl()); - break; - default: - break; + + if (i == 0) { + NavigationHelper.enqueueOnBackgroundPlayer(context, new SinglePlayQueue(infoItem), false); + + } else if (i == (isAudioStream ? -1 : 1)) { // disabled with audio streams + NavigationHelper.enqueueOnPopupPlayer(context, new SinglePlayQueue(infoItem), false); + + } else if (i == (isAudioStream ? 1 : 2)) { + NavigationHelper.playOnBackgroundPlayer(context, new SinglePlayQueue(infoItem), true); + + } else if (i == (isAudioStream ? -1 : 3)) { // disabled with audio streams + NavigationHelper.playOnPopupPlayer(context, new SinglePlayQueue(infoItem), true); + + } else if (i == (isAudioStream ? 2 : 4)) { + deleteEntry(index); + + } else if (i == (isAudioStream ? 3 : 5)) { + if (getFragmentManager() != null) { + PlaylistAppendDialog.fromStreamInfoItems(Collections.singletonList(infoItem)) + .show(getFragmentManager(), TAG); + } + + } else if (i == (isAudioStream ? 4 : 6)) { + ShareUtils.shareUrl(context, infoItem.getName(), infoItem.getUrl()); + } }; diff --git a/app/src/main/java/org/schabi/newpipe/local/playlist/LocalPlaylistFragment.java b/app/src/main/java/org/schabi/newpipe/local/playlist/LocalPlaylistFragment.java index 0de97033e..ef2a0d8d5 100644 --- a/app/src/main/java/org/schabi/newpipe/local/playlist/LocalPlaylistFragment.java +++ b/app/src/main/java/org/schabi/newpipe/local/playlist/LocalPlaylistFragment.java @@ -26,6 +26,7 @@ import org.schabi.newpipe.R; import org.schabi.newpipe.database.LocalItem; import org.schabi.newpipe.database.playlist.PlaylistStreamEntry; import org.schabi.newpipe.extractor.stream.StreamInfoItem; +import org.schabi.newpipe.extractor.stream.StreamType; import org.schabi.newpipe.local.BaseLocalListFragment; import org.schabi.newpipe.info_list.InfoItemDialog; import org.schabi.newpipe.local.dialog.PlaylistAppendDialog; @@ -518,50 +519,62 @@ public class LocalPlaylistFragment extends BaseLocalListFragment { final int index = Math.max(itemListAdapter.getItemsList().indexOf(item), 0); - switch (i) { - case 0: - NavigationHelper.enqueueOnBackgroundPlayer(context, new SinglePlayQueue(infoItem), false); - break; - case 1: - NavigationHelper.enqueueOnPopupPlayer(context, new SinglePlayQueue(infoItem), false); - break; - case 2: - NavigationHelper.playOnBackgroundPlayer(context, getPlayQueue(index), true); - break; - case 3: - NavigationHelper.playOnPopupPlayer(context, getPlayQueue(index), true); - break; - case 4: - changeThumbnailUrl(item.thumbnailUrl); - break; - case 5: - deleteItem(item); - break; - case 6: - if (getFragmentManager() != null) { - PlaylistAppendDialog.fromStreamInfoItems(Collections.singletonList(infoItem)) - .show(getFragmentManager(), TAG); - } - break; - case 7: - ShareUtils.shareUrl(context, infoItem.getName(), infoItem.getUrl()); - break; - default: - break; + + if (i == 0) { + NavigationHelper.enqueueOnBackgroundPlayer(context, new SinglePlayQueue(infoItem), false); + + } else if (i == (isAudioStream ? -1 : 1)) { // disabled with audio streams + NavigationHelper.enqueueOnPopupPlayer(context, new SinglePlayQueue(infoItem), false); + + } else if (i == (isAudioStream ? 1 : 2)) { + NavigationHelper.playOnBackgroundPlayer(context, getPlayQueue(index), true); + + } else if (i == (isAudioStream ? -1 : 3)) { // disabled with audio streams + NavigationHelper.playOnPopupPlayer(context, getPlayQueue(index), true); + + } else if (i == (isAudioStream ? 2 : 4)) { + changeThumbnailUrl(item.thumbnailUrl); + + } else if (i == (isAudioStream ? 3 : 5)) { + deleteItem(item); + + } else if (i == (isAudioStream ? 4 : 6)) { + if (getFragmentManager() != null) { + PlaylistAppendDialog.fromStreamInfoItems(Collections.singletonList(infoItem)) + .show(getFragmentManager(), TAG); + } + + } else if (i == (isAudioStream ? 5 : 7)) { + ShareUtils.shareUrl(context, infoItem.getName(), infoItem.getUrl()); + } };