mirror of
				https://github.com/TeamNewPipe/NewPipe
				synced 2025-10-31 07:13:00 +00:00 
			
		
		
		
	Move opening popup menu to utility class
This commit is contained in:
		
							
								
								
									
										71
									
								
								app/src/main/java/org/schabi/newpipe/QueueItemMenuUtil.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										71
									
								
								app/src/main/java/org/schabi/newpipe/QueueItemMenuUtil.java
									
									
									
									
									
										Normal file
									
								
							| @@ -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() { } | ||||
| } | ||||
| @@ -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); | ||||
|     } | ||||
|  | ||||
|     //////////////////////////////////////////////////////////////////////////// | ||||
|   | ||||
| @@ -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 | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 ktprograms
					ktprograms