From acdfee5c25d948f17c59f9144912957a1d88a585 Mon Sep 17 00:00:00 2001 From: ktprograms Date: Sun, 22 Aug 2021 20:36:12 +0800 Subject: [PATCH 1/6] Show popup menu when long pressing in play queue (Full screen player) --- app/build.gradle | 4 ++ .../newpipe/player/PlayQueueActivity.java | 57 +++++++------------ .../org/schabi/newpipe/player/Player.java | 48 +++++++++++++++- .../main/res/menu/menu_play_queue_item.xml | 16 ++++++ 4 files changed, 87 insertions(+), 38 deletions(-) create mode 100644 app/src/main/res/menu/menu_play_queue_item.xml diff --git a/app/build.gradle b/app/build.gradle index cf2823024..f8334c11b 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -214,6 +214,10 @@ dependencies { implementation 'androidx.recyclerview:recyclerview:1.1.0' implementation "androidx.room:room-runtime:${androidxRoomVersion}" implementation "androidx.room:room-rxjava3:${androidxRoomVersion}" + + // Apple Sillicon Mac workaround (https://issuetracker.google.com/issues/174695268#comment9) + kapt "org.xerial:sqlite-jdbc:3.34.0" + kapt "androidx.room:room-compiler:${androidxRoomVersion}" implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.1.0' implementation 'androidx.webkit:webkit:1.4.0' diff --git a/app/src/main/java/org/schabi/newpipe/player/PlayQueueActivity.java b/app/src/main/java/org/schabi/newpipe/player/PlayQueueActivity.java index ce7b82de4..914416489 100644 --- a/app/src/main/java/org/schabi/newpipe/player/PlayQueueActivity.java +++ b/app/src/main/java/org/schabi/newpipe/player/PlayQueueActivity.java @@ -281,42 +281,29 @@ public final class PlayQueueActivity extends AppCompatActivity private void buildItemPopupMenu(final PlayQueueItem item, final View view) { final PopupMenu popupMenu = new PopupMenu(this, view); - final MenuItem remove = popupMenu.getMenu().add(RECYCLER_ITEM_POPUP_MENU_GROUP_ID, 0, - Menu.NONE, R.string.play_queue_remove); - remove.setOnMenuItemClickListener(menuItem -> { - if (player == null) { - return false; + popupMenu.inflate(R.menu.menu_play_queue_item); + + popupMenu.setOnMenuItemClickListener(menuItem -> { + switch (menuItem.getItemId()) { + case R.id.menu_item_remove: + final int index = player.getPlayQueue().indexOf(item); + player.getPlayQueue().remove(index); + return true; + case R.id.menu_item_details: + // playQueue is null since we don't want any queue change + NavigationHelper.openVideoDetail(this, item.getServiceId(), + item.getUrl(), item.getTitle(), null, + false); + return true; + case R.id.menu_item_append_playlist: + openPlaylistAppendDialog(Collections.singletonList(item)); + return true; + case R.id.menu_item_share: + shareText(this, item.getTitle(), item.getUrl(), + item.getThumbnailUrl()); + return true; } - - final int index = player.getPlayQueue().indexOf(item); - if (index != -1) { - player.getPlayQueue().remove(index); - } - return true; - }); - - final MenuItem detail = popupMenu.getMenu().add(RECYCLER_ITEM_POPUP_MENU_GROUP_ID, 1, - Menu.NONE, R.string.play_queue_stream_detail); - detail.setOnMenuItemClickListener(menuItem -> { - // playQueue is null since we don't want any queue change - NavigationHelper.openVideoDetail(this, item.getServiceId(), item.getUrl(), - item.getTitle(), null, false); - return true; - }); - - final MenuItem append = popupMenu.getMenu().add(RECYCLER_ITEM_POPUP_MENU_GROUP_ID, 2, - Menu.NONE, R.string.append_playlist); - append.setOnMenuItemClickListener(menuItem -> { - openPlaylistAppendDialog(Collections.singletonList(item)); - return true; - }); - - final MenuItem share = popupMenu.getMenu().add(RECYCLER_ITEM_POPUP_MENU_GROUP_ID, 3, - Menu.NONE, R.string.share); - share.setOnMenuItemClickListener(menuItem -> { - shareText(getApplicationContext(), item.getTitle(), item.getUrl(), - item.getThumbnailUrl()); - return true; + return false; }); popupMenu.show(); diff --git a/app/src/main/java/org/schabi/newpipe/player/Player.java b/app/src/main/java/org/schabi/newpipe/player/Player.java index 83c567cb6..c36b721b4 100644 --- a/app/src/main/java/org/schabi/newpipe/player/Player.java +++ b/app/src/main/java/org/schabi/newpipe/player/Player.java @@ -100,6 +100,8 @@ import org.schabi.newpipe.fragments.OnScrollBelowItemsListener; import org.schabi.newpipe.fragments.detail.VideoDetailFragment; import org.schabi.newpipe.info_list.StreamSegmentAdapter; import org.schabi.newpipe.ktx.AnimationType; +import org.schabi.newpipe.local.dialog.PlaylistAppendDialog; +import org.schabi.newpipe.local.dialog.PlaylistCreationDialog; import org.schabi.newpipe.local.history.HistoryRecordManager; import org.schabi.newpipe.player.MainPlayer.PlayerType; import org.schabi.newpipe.player.event.PlayerEventListener; @@ -138,6 +140,7 @@ import org.schabi.newpipe.views.ExpandableSurfaceView; import java.io.IOException; import java.util.ArrayList; +import java.util.Collections; import java.util.List; import java.util.Objects; @@ -193,6 +196,7 @@ import static org.schabi.newpipe.util.ListHelper.getPopupResolutionIndex; import static org.schabi.newpipe.util.ListHelper.getResolutionIndex; import static org.schabi.newpipe.util.Localization.assureCorrectAppLanguage; import static org.schabi.newpipe.util.Localization.containsCaseInsensitive; +import static org.schabi.newpipe.util.external_communication.ShareUtils.shareText; public final class Player implements EventListener, @@ -3032,6 +3036,45 @@ public final class Player implements playQueue.setIndex(index); } + private void heldQueueItem(final PlayQueueItem item, final View view) { + final Context themeWrapper = + new ContextThemeWrapper(context, R.style.DarkPopupMenu); + + final PopupMenu popupMenu = new PopupMenu(themeWrapper, view); + popupMenu.inflate(R.menu.menu_play_queue_item); + + popupMenu.setOnMenuItemClickListener(menuItem -> { + switch (menuItem.getItemId()) { + case R.id.menu_item_remove: + final int index = playQueue.indexOf(item); + playQueue.remove(index); + return true; + case R.id.menu_item_details: + // playQueue is null since we don't want any queue change + NavigationHelper.openVideoDetail(context, item.getServiceId(), + item.getUrl(), item.getTitle(), null, + false); + return true; + case R.id.menu_item_append_playlist: + final PlaylistAppendDialog d = PlaylistAppendDialog.fromPlayQueueItems( + Collections.singletonList(item) + ); + PlaylistAppendDialog.onPlaylistFound(context, + () -> d.show(getParentActivity().getSupportFragmentManager(), TAG), + () -> PlaylistCreationDialog.newInstance(d) + .show(getParentActivity().getSupportFragmentManager(), TAG)); + return true; + case R.id.menu_item_share: + shareText(context, item.getTitle(), item.getUrl(), + item.getThumbnailUrl()); + return true; + } + return false; + }); + + popupMenu.show(); + } + @Override public void onPlayQueueEdited() { notifyPlaybackUpdateToListeners(); @@ -3198,9 +3241,8 @@ public final class Player implements @Override public void held(final PlayQueueItem item, final View view) { - final int index = playQueue.indexOf(item); - if (index != -1) { - playQueue.remove(index); + if (playQueue.indexOf(item) != -1) { + heldQueueItem(item, view); } } diff --git a/app/src/main/res/menu/menu_play_queue_item.xml b/app/src/main/res/menu/menu_play_queue_item.xml new file mode 100644 index 000000000..ebb361be9 --- /dev/null +++ b/app/src/main/res/menu/menu_play_queue_item.xml @@ -0,0 +1,16 @@ + + + + + + + + \ No newline at end of file From 5de455bb86d378ab0ce8e8a2f45497238e1302c2 Mon Sep 17 00:00:00 2001 From: ktprograms Date: Mon, 23 Aug 2021 10:12:03 +0800 Subject: [PATCH 2/6] Change type of themeWrapper to ContextThemeWrapper --- app/src/main/java/org/schabi/newpipe/player/Player.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/org/schabi/newpipe/player/Player.java b/app/src/main/java/org/schabi/newpipe/player/Player.java index c36b721b4..4c60df396 100644 --- a/app/src/main/java/org/schabi/newpipe/player/Player.java +++ b/app/src/main/java/org/schabi/newpipe/player/Player.java @@ -3037,7 +3037,7 @@ public final class Player implements } private void heldQueueItem(final PlayQueueItem item, final View view) { - final Context themeWrapper = + final ContextThemeWrapper themeWrapper = new ContextThemeWrapper(context, R.style.DarkPopupMenu); final PopupMenu popupMenu = new PopupMenu(themeWrapper, view); From 1b05c404d581c12c1cc217223ee0596b828475b5 Mon Sep 17 00:00:00 2001 From: ktprograms Date: Tue, 24 Aug 2021 19:15:53 +0800 Subject: [PATCH 3/6] Remove Details option in Main Player Queue menu --- app/src/main/java/org/schabi/newpipe/player/Player.java | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/org/schabi/newpipe/player/Player.java b/app/src/main/java/org/schabi/newpipe/player/Player.java index 4c60df396..b24842a0e 100644 --- a/app/src/main/java/org/schabi/newpipe/player/Player.java +++ b/app/src/main/java/org/schabi/newpipe/player/Player.java @@ -3043,18 +3043,15 @@ public final class Player implements final PopupMenu popupMenu = new PopupMenu(themeWrapper, view); popupMenu.inflate(R.menu.menu_play_queue_item); + // Don't show Details in Main Player Popup + popupMenu.getMenu().findItem(R.id.menu_item_details).setVisible(false); + popupMenu.setOnMenuItemClickListener(menuItem -> { switch (menuItem.getItemId()) { case R.id.menu_item_remove: final int index = playQueue.indexOf(item); playQueue.remove(index); return true; - case R.id.menu_item_details: - // playQueue is null since we don't want any queue change - NavigationHelper.openVideoDetail(context, item.getServiceId(), - item.getUrl(), item.getTitle(), null, - false); - return true; case R.id.menu_item_append_playlist: final PlaylistAppendDialog d = PlaylistAppendDialog.fromPlayQueueItems( Collections.singletonList(item) From ef94458249ad8dbead57be4839f51675e761859f Mon Sep 17 00:00:00 2001 From: ktprograms Date: Wed, 25 Aug 2021 09:00:36 +0800 Subject: [PATCH 4/6] Remove xerial sqlite dependency --- app/build.gradle | 4 ---- 1 file changed, 4 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index f8334c11b..cf2823024 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -214,10 +214,6 @@ dependencies { implementation 'androidx.recyclerview:recyclerview:1.1.0' implementation "androidx.room:room-runtime:${androidxRoomVersion}" implementation "androidx.room:room-rxjava3:${androidxRoomVersion}" - - // Apple Sillicon Mac workaround (https://issuetracker.google.com/issues/174695268#comment9) - kapt "org.xerial:sqlite-jdbc:3.34.0" - kapt "androidx.room:room-compiler:${androidxRoomVersion}" implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.1.0' implementation 'androidx.webkit:webkit:1.4.0' From a1cb3e59d6c5babcb79a6bedfc043494330b4cac Mon Sep 17 00:00:00 2001 From: ktprograms Date: Wed, 25 Aug 2021 09:30:40 +0800 Subject: [PATCH 5/6] Move opening popup menu to utility class --- .../org/schabi/newpipe/QueueItemMenuUtil.java | 71 +++++++++++++++++++ .../newpipe/player/PlayQueueActivity.java | 40 ++--------- .../org/schabi/newpipe/player/Player.java | 40 +---------- 3 files changed, 80 insertions(+), 71 deletions(-) create mode 100644 app/src/main/java/org/schabi/newpipe/QueueItemMenuUtil.java diff --git a/app/src/main/java/org/schabi/newpipe/QueueItemMenuUtil.java b/app/src/main/java/org/schabi/newpipe/QueueItemMenuUtil.java new file mode 100644 index 000000000..ede4fa782 --- /dev/null +++ b/app/src/main/java/org/schabi/newpipe/QueueItemMenuUtil.java @@ -0,0 +1,71 @@ +package org.schabi.newpipe; + +import static org.schabi.newpipe.util.external_communication.ShareUtils.shareText; + +import android.content.Context; +import android.view.ContextThemeWrapper; +import android.view.View; +import android.widget.PopupMenu; + +import androidx.fragment.app.FragmentManager; + +import org.schabi.newpipe.local.dialog.PlaylistAppendDialog; +import org.schabi.newpipe.local.dialog.PlaylistCreationDialog; +import org.schabi.newpipe.player.playqueue.PlayQueue; +import org.schabi.newpipe.player.playqueue.PlayQueueItem; +import org.schabi.newpipe.util.NavigationHelper; + +import java.util.Collections; + +public final class QueueItemMenuUtil { + public static void openPopupMenu(final PlayQueue playQueue, + final PlayQueueItem item, + final View view, + final boolean hideDetails, + final FragmentManager fragmentManager, + final Context context, + final String tag) { + final ContextThemeWrapper themeWrapper = + new ContextThemeWrapper(context, R.style.DarkPopupMenu); + + final PopupMenu popupMenu = new PopupMenu(themeWrapper, view); + popupMenu.inflate(R.menu.menu_play_queue_item); + + if (hideDetails) { + popupMenu.getMenu().findItem(R.id.menu_item_details).setVisible(false); + } + + popupMenu.setOnMenuItemClickListener(menuItem -> { + switch (menuItem.getItemId()) { + case R.id.menu_item_remove: + final int index = playQueue.indexOf(item); + playQueue.remove(index); + return true; + case R.id.menu_item_details: + // playQueue is null since we don't want any queue change + NavigationHelper.openVideoDetail(context, item.getServiceId(), + item.getUrl(), item.getTitle(), null, + false); + return true; + case R.id.menu_item_append_playlist: + final PlaylistAppendDialog d = PlaylistAppendDialog.fromPlayQueueItems( + Collections.singletonList(item) + ); + PlaylistAppendDialog.onPlaylistFound(context, + () -> d.show(fragmentManager, tag), + () -> PlaylistCreationDialog.newInstance(d) + .show(fragmentManager, tag)); + return true; + case R.id.menu_item_share: + shareText(context, item.getTitle(), item.getUrl(), + item.getThumbnailUrl()); + return true; + } + return false; + }); + + popupMenu.show(); + } + + private QueueItemMenuUtil() { } +} diff --git a/app/src/main/java/org/schabi/newpipe/player/PlayQueueActivity.java b/app/src/main/java/org/schabi/newpipe/player/PlayQueueActivity.java index 914416489..7057b688d 100644 --- a/app/src/main/java/org/schabi/newpipe/player/PlayQueueActivity.java +++ b/app/src/main/java/org/schabi/newpipe/player/PlayQueueActivity.java @@ -1,9 +1,5 @@ package org.schabi.newpipe.player; -import static org.schabi.newpipe.player.helper.PlayerHelper.formatSpeed; -import static org.schabi.newpipe.util.Localization.assureCorrectAppLanguage; -import static org.schabi.newpipe.util.external_communication.ShareUtils.shareText; - import android.content.ComponentName; import android.content.Context; import android.content.Intent; @@ -16,7 +12,6 @@ import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; -import android.widget.PopupMenu; import android.widget.SeekBar; import androidx.annotation.Nullable; @@ -47,16 +42,18 @@ import org.schabi.newpipe.util.PermissionHelper; import org.schabi.newpipe.util.ServiceHelper; import org.schabi.newpipe.util.ThemeHelper; -import java.util.Collections; import java.util.List; +import static org.schabi.newpipe.QueueItemMenuUtil.openPopupMenu; +import static org.schabi.newpipe.player.helper.PlayerHelper.formatSpeed; +import static org.schabi.newpipe.util.Localization.assureCorrectAppLanguage; + public final class PlayQueueActivity extends AppCompatActivity implements PlayerEventListener, SeekBar.OnSeekBarChangeListener, View.OnClickListener, PlaybackParameterDialog.Callback { private static final String TAG = PlayQueueActivity.class.getSimpleName(); - private static final int RECYCLER_ITEM_POPUP_MENU_GROUP_ID = 47; private static final int SMOOTH_SCROLL_MAXIMUM_DISTANCE = 80; protected Player player; @@ -280,33 +277,8 @@ public final class PlayQueueActivity extends AppCompatActivity } private void buildItemPopupMenu(final PlayQueueItem item, final View view) { - final PopupMenu popupMenu = new PopupMenu(this, view); - popupMenu.inflate(R.menu.menu_play_queue_item); - - popupMenu.setOnMenuItemClickListener(menuItem -> { - switch (menuItem.getItemId()) { - case R.id.menu_item_remove: - final int index = player.getPlayQueue().indexOf(item); - player.getPlayQueue().remove(index); - return true; - case R.id.menu_item_details: - // playQueue is null since we don't want any queue change - NavigationHelper.openVideoDetail(this, item.getServiceId(), - item.getUrl(), item.getTitle(), null, - false); - return true; - case R.id.menu_item_append_playlist: - openPlaylistAppendDialog(Collections.singletonList(item)); - return true; - case R.id.menu_item_share: - shareText(this, item.getTitle(), item.getUrl(), - item.getThumbnailUrl()); - return true; - } - return false; - }); - - popupMenu.show(); + openPopupMenu(player.getPlayQueue(), item, view, false, + getSupportFragmentManager(), this, TAG); } //////////////////////////////////////////////////////////////////////////// diff --git a/app/src/main/java/org/schabi/newpipe/player/Player.java b/app/src/main/java/org/schabi/newpipe/player/Player.java index b24842a0e..53a4c12db 100644 --- a/app/src/main/java/org/schabi/newpipe/player/Player.java +++ b/app/src/main/java/org/schabi/newpipe/player/Player.java @@ -100,8 +100,6 @@ import org.schabi.newpipe.fragments.OnScrollBelowItemsListener; import org.schabi.newpipe.fragments.detail.VideoDetailFragment; import org.schabi.newpipe.info_list.StreamSegmentAdapter; import org.schabi.newpipe.ktx.AnimationType; -import org.schabi.newpipe.local.dialog.PlaylistAppendDialog; -import org.schabi.newpipe.local.dialog.PlaylistCreationDialog; import org.schabi.newpipe.local.history.HistoryRecordManager; import org.schabi.newpipe.player.MainPlayer.PlayerType; import org.schabi.newpipe.player.event.PlayerEventListener; @@ -140,7 +138,6 @@ import org.schabi.newpipe.views.ExpandableSurfaceView; import java.io.IOException; import java.util.ArrayList; -import java.util.Collections; import java.util.List; import java.util.Objects; @@ -162,6 +159,7 @@ import static com.google.android.exoplayer2.Player.REPEAT_MODE_OFF; import static com.google.android.exoplayer2.Player.REPEAT_MODE_ONE; import static com.google.android.exoplayer2.Player.RepeatMode; import static java.util.concurrent.TimeUnit.MILLISECONDS; +import static org.schabi.newpipe.QueueItemMenuUtil.openPopupMenu; import static org.schabi.newpipe.extractor.ServiceList.YouTube; import static org.schabi.newpipe.extractor.utils.Utils.isNullOrEmpty; import static org.schabi.newpipe.ktx.ViewUtils.animate; @@ -196,7 +194,6 @@ import static org.schabi.newpipe.util.ListHelper.getPopupResolutionIndex; import static org.schabi.newpipe.util.ListHelper.getResolutionIndex; import static org.schabi.newpipe.util.Localization.assureCorrectAppLanguage; import static org.schabi.newpipe.util.Localization.containsCaseInsensitive; -import static org.schabi.newpipe.util.external_communication.ShareUtils.shareText; public final class Player implements EventListener, @@ -3037,39 +3034,8 @@ public final class Player implements } private void heldQueueItem(final PlayQueueItem item, final View view) { - final ContextThemeWrapper themeWrapper = - new ContextThemeWrapper(context, R.style.DarkPopupMenu); - - final PopupMenu popupMenu = new PopupMenu(themeWrapper, view); - popupMenu.inflate(R.menu.menu_play_queue_item); - - // Don't show Details in Main Player Popup - popupMenu.getMenu().findItem(R.id.menu_item_details).setVisible(false); - - popupMenu.setOnMenuItemClickListener(menuItem -> { - switch (menuItem.getItemId()) { - case R.id.menu_item_remove: - final int index = playQueue.indexOf(item); - playQueue.remove(index); - return true; - case R.id.menu_item_append_playlist: - final PlaylistAppendDialog d = PlaylistAppendDialog.fromPlayQueueItems( - Collections.singletonList(item) - ); - PlaylistAppendDialog.onPlaylistFound(context, - () -> d.show(getParentActivity().getSupportFragmentManager(), TAG), - () -> PlaylistCreationDialog.newInstance(d) - .show(getParentActivity().getSupportFragmentManager(), TAG)); - return true; - case R.id.menu_item_share: - shareText(context, item.getTitle(), item.getUrl(), - item.getThumbnailUrl()); - return true; - } - return false; - }); - - popupMenu.show(); + openPopupMenu(playQueue, item, view, true, + getParentActivity().getSupportFragmentManager(), context, TAG); } @Override From a4503eb6092d76c54c66edfb4a41719561e9ca9a Mon Sep 17 00:00:00 2001 From: ktprograms Date: Wed, 25 Aug 2021 17:04:15 +0800 Subject: [PATCH 6/6] Remove TAG parameter, refactor method calls --- .../org/schabi/newpipe/QueueItemMenuUtil.java | 7 +++---- .../schabi/newpipe/player/PlayQueueActivity.java | 15 +++------------ .../java/org/schabi/newpipe/player/Player.java | 8 ++------ 3 files changed, 8 insertions(+), 22 deletions(-) diff --git a/app/src/main/java/org/schabi/newpipe/QueueItemMenuUtil.java b/app/src/main/java/org/schabi/newpipe/QueueItemMenuUtil.java index ede4fa782..9105ff992 100644 --- a/app/src/main/java/org/schabi/newpipe/QueueItemMenuUtil.java +++ b/app/src/main/java/org/schabi/newpipe/QueueItemMenuUtil.java @@ -23,8 +23,7 @@ public final class QueueItemMenuUtil { final View view, final boolean hideDetails, final FragmentManager fragmentManager, - final Context context, - final String tag) { + final Context context) { final ContextThemeWrapper themeWrapper = new ContextThemeWrapper(context, R.style.DarkPopupMenu); @@ -52,9 +51,9 @@ public final class QueueItemMenuUtil { Collections.singletonList(item) ); PlaylistAppendDialog.onPlaylistFound(context, - () -> d.show(fragmentManager, tag), + () -> d.show(fragmentManager, "QueueItemMenuUtil@append_playlist"), () -> PlaylistCreationDialog.newInstance(d) - .show(fragmentManager, tag)); + .show(fragmentManager, "QueueItemMenuUtil@append_playlist")); return true; case R.id.menu_item_share: shareText(context, item.getTitle(), item.getUrl(), diff --git a/app/src/main/java/org/schabi/newpipe/player/PlayQueueActivity.java b/app/src/main/java/org/schabi/newpipe/player/PlayQueueActivity.java index 7057b688d..0976aa4fb 100644 --- a/app/src/main/java/org/schabi/newpipe/player/PlayQueueActivity.java +++ b/app/src/main/java/org/schabi/newpipe/player/PlayQueueActivity.java @@ -276,11 +276,6 @@ public final class PlayQueueActivity extends AppCompatActivity queueControlBinding.controlShuffle.setOnClickListener(this); } - private void buildItemPopupMenu(final PlayQueueItem item, final View view) { - openPopupMenu(player.getPlayQueue(), item, view, false, - getSupportFragmentManager(), this, TAG); - } - //////////////////////////////////////////////////////////////////////////// // Component Helpers //////////////////////////////////////////////////////////////////////////// @@ -328,13 +323,9 @@ public final class PlayQueueActivity extends AppCompatActivity @Override public void held(final PlayQueueItem item, final View view) { - if (player == null) { - return; - } - - final int index = player.getPlayQueue().indexOf(item); - if (index != -1) { - buildItemPopupMenu(item, view); + if (player != null && player.getPlayQueue().indexOf(item) != -1) { + openPopupMenu(player.getPlayQueue(), item, view, false, + getSupportFragmentManager(), PlayQueueActivity.this); } } diff --git a/app/src/main/java/org/schabi/newpipe/player/Player.java b/app/src/main/java/org/schabi/newpipe/player/Player.java index 53a4c12db..892ea6529 100644 --- a/app/src/main/java/org/schabi/newpipe/player/Player.java +++ b/app/src/main/java/org/schabi/newpipe/player/Player.java @@ -3033,11 +3033,6 @@ public final class Player implements playQueue.setIndex(index); } - private void heldQueueItem(final PlayQueueItem item, final View view) { - openPopupMenu(playQueue, item, view, true, - getParentActivity().getSupportFragmentManager(), context, TAG); - } - @Override public void onPlayQueueEdited() { notifyPlaybackUpdateToListeners(); @@ -3205,7 +3200,8 @@ public final class Player implements @Override public void held(final PlayQueueItem item, final View view) { if (playQueue.indexOf(item) != -1) { - heldQueueItem(item, view); + openPopupMenu(playQueue, item, view, true, + getParentActivity().getSupportFragmentManager(), context); } }