From 9bd539f7ab9f87268e865b39b3d6afa3aaa72c7d Mon Sep 17 00:00:00 2001 From: dkanada Date: Sun, 16 May 2021 17:42:36 +0900 Subject: [PATCH] refactor context menus for playlist song adapters --- .../gramophone/adapter/SearchAdapter.java | 1 - .../song/OrderablePlaylistSongAdapter.java | 40 ++----------------- .../adapter/song/PlaylistSongAdapter.java | 23 +++++++---- .../dialogs/RemoveFromPlaylistDialog.java | 2 + .../interfaces/OrderableListener.java | 5 +++ ..._single_songs_playlist_songs_selection.xml | 29 -------------- ...nnot_delete_single_songs_playlist_song.xml | 40 ------------------- 7 files changed, 25 insertions(+), 115 deletions(-) create mode 100644 app/src/main/java/com/dkanada/gramophone/interfaces/OrderableListener.java delete mode 100644 app/src/main/res/menu/menu_cannot_delete_single_songs_playlist_songs_selection.xml delete mode 100644 app/src/main/res/menu/menu_item_cannot_delete_single_songs_playlist_song.xml diff --git a/app/src/main/java/com/dkanada/gramophone/adapter/SearchAdapter.java b/app/src/main/java/com/dkanada/gramophone/adapter/SearchAdapter.java index b6df7d04..ba3f66c1 100644 --- a/app/src/main/java/com/dkanada/gramophone/adapter/SearchAdapter.java +++ b/app/src/main/java/com/dkanada/gramophone/adapter/SearchAdapter.java @@ -60,7 +60,6 @@ public class SearchAdapter extends RecyclerView.Adapter { - private OnMoveItemListener onMoveItemListener; + private OrderableListener onMoveItemListener; - public OrderablePlaylistSongAdapter(@NonNull AppCompatActivity activity, @NonNull List dataSet, @LayoutRes int itemLayoutRes, boolean usePalette, @Nullable CabHolder cabHolder, @Nullable OnMoveItemListener onMoveItemListener) { + public OrderablePlaylistSongAdapter(@NonNull AppCompatActivity activity, @NonNull List dataSet, @LayoutRes int itemLayoutRes, boolean usePalette, @Nullable CabHolder cabHolder, @Nullable OrderableListener onMoveItemListener) { super(activity, dataSet, itemLayoutRes, usePalette, cabHolder); - setMultiSelectMenuRes(R.menu.menu_playlists_songs_selection); this.onMoveItemListener = onMoveItemListener; } @@ -44,17 +41,6 @@ public class OrderablePlaylistSongAdapter extends PlaylistSongAdapter implements return dataSet.get(position).id.hashCode(); } - @Override - protected void onMultipleItemAction(@NonNull MenuItem menuItem, @NonNull List selection) { - switch (menuItem.getItemId()) { - case R.id.action_remove_from_playlist: - RemoveFromPlaylistDialog.create(selection).show(activity.getSupportFragmentManager(), "ADD_PLAYLIST"); - return; - } - - super.onMultipleItemAction(menuItem, selection); - } - @Override public boolean onCheckCanStartDrag(@NonNull ViewHolder holder, int position, int x, int y) { return onMoveItemListener != null && position > 0 && @@ -88,10 +74,6 @@ public class OrderablePlaylistSongAdapter extends PlaylistSongAdapter implements notifyDataSetChanged(); } - public interface OnMoveItemListener { - void onMoveItem(int fromPosition, int toPosition); - } - public class ViewHolder extends PlaylistSongAdapter.ViewHolder implements DraggableItemViewHolder { @DraggableItemStateFlags private int mDragStateFlags; @@ -108,22 +90,6 @@ public class OrderablePlaylistSongAdapter extends PlaylistSongAdapter implements } } - @Override - protected int getSongMenuRes() { - return R.menu.menu_item_playlist_song; - } - - @Override - protected boolean onSongMenuItemClick(MenuItem item) { - switch (item.getItemId()) { - case R.id.action_remove_from_playlist: - RemoveFromPlaylistDialog.create(getSong()).show(activity.getSupportFragmentManager(), "REMOVE_FROM_PLAYLIST"); - return true; - } - - return super.onSongMenuItemClick(item); - } - @Override public void setDragStateFlags(@DraggableItemStateFlags int flags) { mDragStateFlags = flags; diff --git a/app/src/main/java/com/dkanada/gramophone/adapter/song/PlaylistSongAdapter.java b/app/src/main/java/com/dkanada/gramophone/adapter/song/PlaylistSongAdapter.java index 6cd433a2..a9a6f76f 100644 --- a/app/src/main/java/com/dkanada/gramophone/adapter/song/PlaylistSongAdapter.java +++ b/app/src/main/java/com/dkanada/gramophone/adapter/song/PlaylistSongAdapter.java @@ -6,23 +6,21 @@ import android.view.View; import androidx.annotation.LayoutRes; import androidx.annotation.NonNull; import androidx.annotation.Nullable; -import androidx.core.util.Pair; import androidx.appcompat.app.AppCompatActivity; +import com.dkanada.gramophone.dialogs.RemoveFromPlaylistDialog; import com.kabouzeid.appthemehelper.ThemeStore; import com.dkanada.gramophone.R; import com.dkanada.gramophone.interfaces.CabHolder; -import com.dkanada.gramophone.model.Album; import com.dkanada.gramophone.model.Song; import com.dkanada.gramophone.util.MusicUtil; -import com.dkanada.gramophone.util.NavigationUtil; import java.util.List; public class PlaylistSongAdapter extends AbsOffsetSongAdapter { public PlaylistSongAdapter(AppCompatActivity activity, @NonNull List dataSet, @LayoutRes int itemLayoutRes, boolean usePalette, @Nullable CabHolder cabHolder) { super(activity, dataSet, itemLayoutRes, usePalette, cabHolder, false); - setMultiSelectMenuRes(R.menu.menu_cannot_delete_single_songs_playlist_songs_selection); + setMultiSelectMenuRes(R.menu.menu_playlists_songs_selection); } @Override @@ -30,6 +28,16 @@ public class PlaylistSongAdapter extends AbsOffsetSongAdapter { return new PlaylistSongAdapter.ViewHolder(view); } + @Override + protected void onMultipleItemAction(@NonNull MenuItem menuItem, @NonNull List selection) { + if (menuItem.getItemId() == R.id.action_remove_from_playlist) { + RemoveFromPlaylistDialog.create(selection).show(activity.getSupportFragmentManager(), RemoveFromPlaylistDialog.TAG); + return; + } + + super.onMultipleItemAction(menuItem, selection); + } + @Override public void onBindViewHolder(@NonNull final SongAdapter.ViewHolder holder, int position) { if (holder.getItemViewType() == OFFSET_ITEM) { @@ -77,14 +85,13 @@ public class PlaylistSongAdapter extends AbsOffsetSongAdapter { @Override protected int getSongMenuRes() { - return R.menu.menu_item_cannot_delete_single_songs_playlist_song; + return R.menu.menu_item_playlist_song; } @Override protected boolean onSongMenuItemClick(MenuItem item) { - if (item.getItemId() == R.id.action_go_to_album) { - Pair[] albumPairs = new Pair[]{Pair.create(image, activity.getString(R.string.transition_album_image))}; - NavigationUtil.startAlbum(activity, new Album(dataSet.get(getBindingAdapterPosition() - 1)), albumPairs); + if (item.getItemId() == R.id.action_remove_from_playlist) { + RemoveFromPlaylistDialog.create(getSong()).show(activity.getSupportFragmentManager(), RemoveFromPlaylistDialog.TAG); return true; } diff --git a/app/src/main/java/com/dkanada/gramophone/dialogs/RemoveFromPlaylistDialog.java b/app/src/main/java/com/dkanada/gramophone/dialogs/RemoveFromPlaylistDialog.java index b236f17c..3dad62e2 100644 --- a/app/src/main/java/com/dkanada/gramophone/dialogs/RemoveFromPlaylistDialog.java +++ b/app/src/main/java/com/dkanada/gramophone/dialogs/RemoveFromPlaylistDialog.java @@ -17,6 +17,8 @@ import java.util.ArrayList; import java.util.List; public class RemoveFromPlaylistDialog extends DialogFragment { + public static final String TAG = RemoveFromPlaylistDialog.class.getSimpleName(); + @NonNull public static RemoveFromPlaylistDialog create(Song song) { List list = new ArrayList<>(); diff --git a/app/src/main/java/com/dkanada/gramophone/interfaces/OrderableListener.java b/app/src/main/java/com/dkanada/gramophone/interfaces/OrderableListener.java new file mode 100644 index 00000000..cbf58b67 --- /dev/null +++ b/app/src/main/java/com/dkanada/gramophone/interfaces/OrderableListener.java @@ -0,0 +1,5 @@ +package com.dkanada.gramophone.interfaces; + +public interface OrderableListener { + void onMoveItem(int from, int to); +} diff --git a/app/src/main/res/menu/menu_cannot_delete_single_songs_playlist_songs_selection.xml b/app/src/main/res/menu/menu_cannot_delete_single_songs_playlist_songs_selection.xml deleted file mode 100644 index 890f07f6..00000000 --- a/app/src/main/res/menu/menu_cannot_delete_single_songs_playlist_songs_selection.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - - - - - - diff --git a/app/src/main/res/menu/menu_item_cannot_delete_single_songs_playlist_song.xml b/app/src/main/res/menu/menu_item_cannot_delete_single_songs_playlist_song.xml deleted file mode 100644 index e254d765..00000000 --- a/app/src/main/res/menu/menu_item_cannot_delete_single_songs_playlist_song.xml +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - - - - - - - - - - - - -