From a2ff770afca39876817367ca6d11530dc655dacc Mon Sep 17 00:00:00 2001 From: ktprograms Date: Mon, 11 Oct 2021 14:46:29 +0800 Subject: [PATCH 1/4] Added the 'Show Channel Details' menu item to the Queue long press menu Created a method in NavigationHelper that opens the channel fragment using an Intent to MainActivity instead of replacing fragments. --- .../java/org/schabi/newpipe/QueueItemMenuUtil.java | 8 ++++++-- .../org/schabi/newpipe/util/NavigationHelper.java | 12 ++++++++++++ app/src/main/res/menu/menu_play_queue_item.xml | 3 +++ 3 files changed, 21 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/org/schabi/newpipe/QueueItemMenuUtil.java b/app/src/main/java/org/schabi/newpipe/QueueItemMenuUtil.java index 9105ff992..f2f71730d 100644 --- a/app/src/main/java/org/schabi/newpipe/QueueItemMenuUtil.java +++ b/app/src/main/java/org/schabi/newpipe/QueueItemMenuUtil.java @@ -1,7 +1,5 @@ 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; @@ -17,6 +15,8 @@ import org.schabi.newpipe.util.NavigationHelper; import java.util.Collections; +import static org.schabi.newpipe.util.external_communication.ShareUtils.shareText; + public final class QueueItemMenuUtil { public static void openPopupMenu(final PlayQueue playQueue, final PlayQueueItem item, @@ -55,6 +55,10 @@ public final class QueueItemMenuUtil { () -> PlaylistCreationDialog.newInstance(d) .show(fragmentManager, "QueueItemMenuUtil@append_playlist")); return true; + case R.id.menu_item_channel_details: + NavigationHelper.openChannelFragmentUsingIntent(context, item.getServiceId(), + item.getUploaderUrl(), item.getUploader()); + return true; case R.id.menu_item_share: shareText(context, item.getTitle(), item.getUrl(), item.getThumbnailUrl()); diff --git a/app/src/main/java/org/schabi/newpipe/util/NavigationHelper.java b/app/src/main/java/org/schabi/newpipe/util/NavigationHelper.java index afa826677..8852ef369 100644 --- a/app/src/main/java/org/schabi/newpipe/util/NavigationHelper.java +++ b/app/src/main/java/org/schabi/newpipe/util/NavigationHelper.java @@ -491,6 +491,18 @@ public final class NavigationHelper { context.startActivity(intent); } + public static void openChannelFragmentUsingIntent(final Context context, + final int serviceId, + final String url, + @NonNull final String title) { + final Intent intent = getOpenIntent(context, url, serviceId, + StreamingService.LinkType.CHANNEL); + intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + intent.putExtra(Constants.KEY_TITLE, title); + + context.startActivity(intent); + } + public static void openMainActivity(final Context context) { final Intent mIntent = new Intent(context, MainActivity.class); mIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); diff --git a/app/src/main/res/menu/menu_play_queue_item.xml b/app/src/main/res/menu/menu_play_queue_item.xml index ebb361be9..40c4849b4 100644 --- a/app/src/main/res/menu/menu_play_queue_item.xml +++ b/app/src/main/res/menu/menu_play_queue_item.xml @@ -10,6 +10,9 @@ + From afc8db8f816fb452aad407749ef032adaf9bf009 Mon Sep 17 00:00:00 2001 From: ktprograms Date: Thu, 14 Oct 2021 09:51:25 +0800 Subject: [PATCH 2/4] Add reasoning for separate openChannelFragmentUsingIntent method --- .../main/java/org/schabi/newpipe/util/NavigationHelper.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/app/src/main/java/org/schabi/newpipe/util/NavigationHelper.java b/app/src/main/java/org/schabi/newpipe/util/NavigationHelper.java index 8852ef369..9e6a3980c 100644 --- a/app/src/main/java/org/schabi/newpipe/util/NavigationHelper.java +++ b/app/src/main/java/org/schabi/newpipe/util/NavigationHelper.java @@ -491,6 +491,11 @@ public final class NavigationHelper { context.startActivity(intent); } + ///////////////////////////////////////////////////// + // PlayQueueActivity doesn't use fragments so the // + // openChannelFragment method can't be used // + // since that uses FragmentManager transactions. // + ///////////////////////////////////////////////////// public static void openChannelFragmentUsingIntent(final Context context, final int serviceId, final String url, From 2271ea4281ef1e05e08593e3d9e1314f09a2428d Mon Sep 17 00:00:00 2001 From: litetex <40789489+litetex@users.noreply.github.com> Date: Fri, 15 Oct 2021 20:16:34 +0200 Subject: [PATCH 3/4] Improved documentation --- .../java/org/schabi/newpipe/QueueItemMenuUtil.java | 3 +++ .../org/schabi/newpipe/util/NavigationHelper.java | 14 +++++++++----- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/org/schabi/newpipe/QueueItemMenuUtil.java b/app/src/main/java/org/schabi/newpipe/QueueItemMenuUtil.java index f2f71730d..7d00d0027 100644 --- a/app/src/main/java/org/schabi/newpipe/QueueItemMenuUtil.java +++ b/app/src/main/java/org/schabi/newpipe/QueueItemMenuUtil.java @@ -56,6 +56,9 @@ public final class QueueItemMenuUtil { .show(fragmentManager, "QueueItemMenuUtil@append_playlist")); return true; case R.id.menu_item_channel_details: + // An intent must be used here. + // Opening with FragmentManager transactions is not working, + // as PlayQueueActivity doesn't use fragments. NavigationHelper.openChannelFragmentUsingIntent(context, item.getServiceId(), item.getUploaderUrl(), item.getUploader()); return true; diff --git a/app/src/main/java/org/schabi/newpipe/util/NavigationHelper.java b/app/src/main/java/org/schabi/newpipe/util/NavigationHelper.java index 9e6a3980c..c70f6a9d0 100644 --- a/app/src/main/java/org/schabi/newpipe/util/NavigationHelper.java +++ b/app/src/main/java/org/schabi/newpipe/util/NavigationHelper.java @@ -491,11 +491,15 @@ public final class NavigationHelper { context.startActivity(intent); } - ///////////////////////////////////////////////////// - // PlayQueueActivity doesn't use fragments so the // - // openChannelFragment method can't be used // - // since that uses FragmentManager transactions. // - ///////////////////////////////////////////////////// + /** + * Opens {@link ChannelFragment}. + * Use this instead of {@link #openChannelFragment(FragmentManager, int, String, String)} + * when no fragments are used / no FragmentManager is available. + * @param context + * @param serviceId + * @param url + * @param title + */ public static void openChannelFragmentUsingIntent(final Context context, final int serviceId, final String url, From 03d2ca9f9fe1c4ed55fb674cf88a6941fbf1f958 Mon Sep 17 00:00:00 2001 From: litetex <40789489+litetex@users.noreply.github.com> Date: Fri, 15 Oct 2021 20:18:52 +0200 Subject: [PATCH 4/4] Fixed format of code --- .../main/java/org/schabi/newpipe/QueueItemMenuUtil.java | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/org/schabi/newpipe/QueueItemMenuUtil.java b/app/src/main/java/org/schabi/newpipe/QueueItemMenuUtil.java index 7d00d0027..0201064b4 100644 --- a/app/src/main/java/org/schabi/newpipe/QueueItemMenuUtil.java +++ b/app/src/main/java/org/schabi/newpipe/QueueItemMenuUtil.java @@ -1,5 +1,7 @@ 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; @@ -15,9 +17,10 @@ import org.schabi.newpipe.util.NavigationHelper; import java.util.Collections; -import static org.schabi.newpipe.util.external_communication.ShareUtils.shareText; - public final class QueueItemMenuUtil { + private QueueItemMenuUtil() { + } + public static void openPopupMenu(final PlayQueue playQueue, final PlayQueueItem item, final View view, @@ -72,6 +75,4 @@ public final class QueueItemMenuUtil { popupMenu.show(); } - - private QueueItemMenuUtil() { } }