refactor context menus for playlist song adapters
This commit is contained in:
parent
86d20c044b
commit
9bd539f7ab
7 changed files with 25 additions and 115 deletions
|
|
@ -60,7 +60,6 @@ public class SearchAdapter extends RecyclerView.Adapter<SearchAdapter.ViewHolder
|
|||
return new ViewHolder(LayoutInflater.from(activity).inflate(R.layout.item_list, parent, false), viewType);
|
||||
}
|
||||
|
||||
@SuppressWarnings("ConstantConditions")
|
||||
@Override
|
||||
public void onBindViewHolder(@NonNull final ViewHolder holder, int position) {
|
||||
switch (getItemViewType(position)) {
|
||||
|
|
|
|||
|
|
@ -1,6 +1,5 @@
|
|||
package com.dkanada.gramophone.adapter.song;
|
||||
|
||||
import android.view.MenuItem;
|
||||
import android.view.View;
|
||||
|
||||
import androidx.annotation.LayoutRes;
|
||||
|
|
@ -8,13 +7,12 @@ import androidx.annotation.NonNull;
|
|||
import androidx.annotation.Nullable;
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
|
||||
import com.dkanada.gramophone.interfaces.OrderableListener;
|
||||
import com.h6ah4i.android.widget.advrecyclerview.draggable.DraggableItemAdapter;
|
||||
import com.h6ah4i.android.widget.advrecyclerview.draggable.DraggableItemState;
|
||||
import com.h6ah4i.android.widget.advrecyclerview.draggable.DraggableItemViewHolder;
|
||||
import com.h6ah4i.android.widget.advrecyclerview.draggable.ItemDraggableRange;
|
||||
import com.h6ah4i.android.widget.advrecyclerview.draggable.annotation.DraggableItemStateFlags;
|
||||
import com.dkanada.gramophone.R;
|
||||
import com.dkanada.gramophone.dialogs.RemoveFromPlaylistDialog;
|
||||
import com.dkanada.gramophone.interfaces.CabHolder;
|
||||
import com.dkanada.gramophone.model.Song;
|
||||
import com.dkanada.gramophone.util.ViewUtil;
|
||||
|
|
@ -23,11 +21,10 @@ import java.util.List;
|
|||
|
||||
public class OrderablePlaylistSongAdapter extends PlaylistSongAdapter implements DraggableItemAdapter<OrderablePlaylistSongAdapter.ViewHolder> {
|
||||
|
||||
private OnMoveItemListener onMoveItemListener;
|
||||
private OrderableListener onMoveItemListener;
|
||||
|
||||
public OrderablePlaylistSongAdapter(@NonNull AppCompatActivity activity, @NonNull List<Song> dataSet, @LayoutRes int itemLayoutRes, boolean usePalette, @Nullable CabHolder cabHolder, @Nullable OnMoveItemListener onMoveItemListener) {
|
||||
public OrderablePlaylistSongAdapter(@NonNull AppCompatActivity activity, @NonNull List<Song> 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<Song> 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;
|
||||
|
|
|
|||
|
|
@ -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<Song> 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<Song> 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;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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<Song> list = new ArrayList<>();
|
||||
|
|
|
|||
|
|
@ -0,0 +1,5 @@
|
|||
package com.dkanada.gramophone.interfaces;
|
||||
|
||||
public interface OrderableListener {
|
||||
void onMoveItem(int from, int to);
|
||||
}
|
||||
|
|
@ -1,29 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<menu xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto">
|
||||
|
||||
<item
|
||||
android:id="@+id/action_play_next"
|
||||
android:icon="@drawable/ic_redo_white_24dp"
|
||||
android:title="@string/action_play_next"
|
||||
app:showAsAction="ifRoom" />
|
||||
|
||||
<item
|
||||
android:id="@+id/action_add_to_queue"
|
||||
android:icon="@drawable/ic_library_add_white_24dp"
|
||||
android:title="@string/action_add_to_queue"
|
||||
app:showAsAction="ifRoom" />
|
||||
|
||||
<item
|
||||
android:id="@+id/action_add_to_playlist"
|
||||
android:icon="@drawable/ic_playlist_add_white_24dp"
|
||||
android:title="@string/action_add_to_playlist"
|
||||
app:showAsAction="ifRoom" />
|
||||
|
||||
<item
|
||||
android:id="@id/action_select_all"
|
||||
android:icon="@drawable/ic_select_all_white_24dp"
|
||||
android:title="@string/select_all_title"
|
||||
app:showAsAction="ifRoom" />
|
||||
|
||||
</menu>
|
||||
|
|
@ -1,40 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<menu xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto">
|
||||
|
||||
<item
|
||||
android:id="@+id/action_play_next"
|
||||
android:title="@string/action_play_next"
|
||||
app:showAsAction="never" />
|
||||
|
||||
<item
|
||||
android:id="@+id/action_add_to_queue"
|
||||
android:title="@string/action_add_to_queue"
|
||||
app:showAsAction="never" />
|
||||
|
||||
<item
|
||||
android:id="@+id/action_add_to_playlist"
|
||||
android:title="@string/action_add_to_playlist"
|
||||
app:showAsAction="never" />
|
||||
|
||||
<item
|
||||
android:id="@+id/action_go_to_album"
|
||||
android:title="@string/action_go_to_album"
|
||||
app:showAsAction="never" />
|
||||
|
||||
<item
|
||||
android:id="@+id/action_go_to_artist"
|
||||
android:title="@string/action_go_to_artist"
|
||||
app:showAsAction="never" />
|
||||
|
||||
<item
|
||||
android:id="@+id/action_share"
|
||||
android:title="@string/action_share"
|
||||
app:showAsAction="never" />
|
||||
|
||||
<item
|
||||
android:id="@+id/action_details"
|
||||
android:title="@string/action_details"
|
||||
app:showAsAction="never" />
|
||||
|
||||
</menu>
|
||||
Loading…
Add table
Add a link
Reference in a new issue