fix several issues with playlist menus
This commit is contained in:
parent
4a4d703973
commit
a3eb514e96
6 changed files with 46 additions and 63 deletions
|
|
@ -13,7 +13,9 @@ import com.afollestad.materialcab.MaterialCab;
|
|||
import com.dkanada.gramophone.BuildConfig;
|
||||
import com.dkanada.gramophone.activities.base.AbsMusicContentActivity;
|
||||
import com.dkanada.gramophone.databinding.ActivityPlaylistDetailBinding;
|
||||
import com.dkanada.gramophone.util.NavigationUtil;
|
||||
import com.dkanada.gramophone.dialogs.DeletePlaylistDialog;
|
||||
import com.dkanada.gramophone.dialogs.RenamePlaylistDialog;
|
||||
import com.dkanada.gramophone.helper.menu.SongsMenuHelper;
|
||||
import com.h6ah4i.android.widget.advrecyclerview.animator.GeneralItemAnimator;
|
||||
import com.h6ah4i.android.widget.advrecyclerview.animator.RefactoredDefaultItemAnimator;
|
||||
import com.h6ah4i.android.widget.advrecyclerview.draggable.RecyclerViewDragDropManager;
|
||||
|
|
@ -23,7 +25,6 @@ import com.dkanada.gramophone.R;
|
|||
import com.dkanada.gramophone.adapter.song.OrderablePlaylistSongAdapter;
|
||||
import com.dkanada.gramophone.adapter.song.SongAdapter;
|
||||
import com.dkanada.gramophone.helper.MusicPlayerRemote;
|
||||
import com.dkanada.gramophone.helper.menu.PlaylistMenuHelper;
|
||||
import com.dkanada.gramophone.interfaces.CabHolder;
|
||||
import com.dkanada.gramophone.model.Playlist;
|
||||
import com.dkanada.gramophone.model.PlaylistSong;
|
||||
|
|
@ -128,17 +129,17 @@ public class PlaylistDetailActivity extends AbsMusicContentActivity implements C
|
|||
|
||||
@Override
|
||||
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
|
||||
int id = item.getItemId();
|
||||
switch (id) {
|
||||
case R.id.action_shuffle_playlist:
|
||||
MusicPlayerRemote.openAndShuffleQueue(adapter.getDataSet(), true);
|
||||
return true;
|
||||
case R.id.action_download:
|
||||
NavigationUtil.startDownload(this, adapter.getDataSet());
|
||||
return true;
|
||||
if (item.getItemId() == R.id.action_shuffle_playlist) {
|
||||
MusicPlayerRemote.openAndShuffleQueue(adapter.getDataSet(), true);
|
||||
} else if (item.getItemId() == R.id.action_rename_playlist) {
|
||||
RenamePlaylistDialog.create(playlist).show(getSupportFragmentManager(), RenamePlaylistDialog.TAG);
|
||||
} else if (item.getItemId() == R.id.action_delete_playlist) {
|
||||
DeletePlaylistDialog.create(playlist).show(getSupportFragmentManager(), DeletePlaylistDialog.TAG);
|
||||
}
|
||||
|
||||
return PlaylistMenuHelper.handleMenuClick(this, playlist, item);
|
||||
// TODO move SongsMenuHelper into AbsMediaDetailActivity
|
||||
return SongsMenuHelper.handleMenuClick(this, adapter.getDataSet(), item.getItemId())
|
||||
|| super.onOptionsItemSelected(item);
|
||||
}
|
||||
|
||||
@NonNull
|
||||
|
|
|
|||
|
|
@ -16,9 +16,9 @@ import com.dkanada.gramophone.R;
|
|||
import com.dkanada.gramophone.adapter.base.AbsMultiSelectAdapter;
|
||||
import com.dkanada.gramophone.adapter.base.MediaEntryViewHolder;
|
||||
import com.dkanada.gramophone.dialogs.DeletePlaylistDialog;
|
||||
import com.dkanada.gramophone.dialogs.RenamePlaylistDialog;
|
||||
import com.dkanada.gramophone.glide.CustomGlideRequest;
|
||||
import com.dkanada.gramophone.glide.CustomPaletteTarget;
|
||||
import com.dkanada.gramophone.helper.menu.PlaylistMenuHelper;
|
||||
import com.dkanada.gramophone.helper.menu.SongsMenuHelper;
|
||||
import com.dkanada.gramophone.interfaces.CabHolder;
|
||||
import com.dkanada.gramophone.model.Playlist;
|
||||
|
|
@ -142,7 +142,7 @@ public class PlaylistAdapter extends AbsMultiSelectAdapter<PlaylistAdapter.ViewH
|
|||
}
|
||||
}
|
||||
|
||||
public class ViewHolder extends MediaEntryViewHolder {
|
||||
public class ViewHolder extends MediaEntryViewHolder implements PopupMenu.OnMenuItemClickListener {
|
||||
public ViewHolder(@NonNull View itemView, int itemViewType) {
|
||||
super(itemView);
|
||||
|
||||
|
|
@ -151,13 +151,35 @@ public class PlaylistAdapter extends AbsMultiSelectAdapter<PlaylistAdapter.ViewH
|
|||
final PopupMenu popupMenu = new PopupMenu(activity, view);
|
||||
|
||||
popupMenu.inflate(R.menu.menu_item_playlist);
|
||||
popupMenu.setOnMenuItemClickListener(item -> PlaylistMenuHelper.handleMenuClick(activity, dataSet.get(getBindingAdapterPosition()), item));
|
||||
popupMenu.setOnMenuItemClickListener(this);
|
||||
|
||||
popupMenu.show();
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onMenuItemClick(MenuItem item) {
|
||||
Playlist playlist = dataSet.get(getBindingAdapterPosition());
|
||||
|
||||
if (item.getItemId() == R.id.action_rename_playlist) {
|
||||
RenamePlaylistDialog.create(playlist).show(activity.getSupportFragmentManager(), RenamePlaylistDialog.TAG);
|
||||
return true;
|
||||
} else if (item.getItemId() == R.id.action_delete_playlist) {
|
||||
DeletePlaylistDialog.create(playlist).show(activity.getSupportFragmentManager(), DeletePlaylistDialog.TAG);
|
||||
return true;
|
||||
}
|
||||
|
||||
ItemQuery songs = new ItemQuery();
|
||||
songs.setParentId(playlist.id);
|
||||
|
||||
QueryUtil.getSongs(songs, (media) -> {
|
||||
SongsMenuHelper.handleMenuClick(activity, media, item.getItemId());
|
||||
});
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
if (isInQuickSelectMode()) {
|
||||
|
|
|
|||
|
|
@ -13,6 +13,8 @@ import com.dkanada.gramophone.model.Playlist;
|
|||
import com.dkanada.gramophone.util.PlaylistUtil;
|
||||
|
||||
public class RenamePlaylistDialog extends DialogFragment {
|
||||
public static final String TAG = RenamePlaylistDialog.class.getSimpleName();
|
||||
|
||||
private static final String PLAYLIST = "playlist";
|
||||
|
||||
@NonNull
|
||||
|
|
|
|||
|
|
@ -1,49 +0,0 @@
|
|||
package com.dkanada.gramophone.helper.menu;
|
||||
|
||||
import android.app.Activity;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
import android.view.MenuItem;
|
||||
|
||||
import com.dkanada.gramophone.R;
|
||||
import com.dkanada.gramophone.dialogs.AddToPlaylistDialog;
|
||||
import com.dkanada.gramophone.dialogs.DeletePlaylistDialog;
|
||||
import com.dkanada.gramophone.dialogs.RenamePlaylistDialog;
|
||||
import com.dkanada.gramophone.helper.MusicPlayerRemote;
|
||||
import com.dkanada.gramophone.model.Playlist;
|
||||
import com.dkanada.gramophone.model.Song;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class PlaylistMenuHelper {
|
||||
public static boolean handleMenuClick(@NonNull AppCompatActivity activity, @NonNull final Playlist playlist, @NonNull MenuItem item) {
|
||||
switch (item.getItemId()) {
|
||||
case R.id.action_play:
|
||||
MusicPlayerRemote.openQueue(new ArrayList<>(getPlaylistSongs(activity, playlist)), 0, true);
|
||||
return true;
|
||||
case R.id.action_play_next:
|
||||
MusicPlayerRemote.playNext(new ArrayList<>(getPlaylistSongs(activity, playlist)));
|
||||
return true;
|
||||
case R.id.action_add_to_queue:
|
||||
MusicPlayerRemote.enqueue(new ArrayList<>(getPlaylistSongs(activity, playlist)));
|
||||
return true;
|
||||
case R.id.action_add_to_playlist:
|
||||
AddToPlaylistDialog.create(new ArrayList<>(getPlaylistSongs(activity, playlist))).show(activity.getSupportFragmentManager(), "ADD_PLAYLIST");
|
||||
return true;
|
||||
case R.id.action_rename_playlist:
|
||||
RenamePlaylistDialog.create(playlist).show(activity.getSupportFragmentManager(), "RENAME_PLAYLIST");
|
||||
return true;
|
||||
case R.id.action_delete_playlist:
|
||||
DeletePlaylistDialog.create(playlist).show(activity.getSupportFragmentManager(), DeletePlaylistDialog.TAG);
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
@NonNull
|
||||
private static List<Song> getPlaylistSongs(@NonNull Activity activity, Playlist playlist) {
|
||||
return new ArrayList<>();
|
||||
}
|
||||
}
|
||||
|
|
@ -14,6 +14,9 @@ import java.util.List;
|
|||
public class SongsMenuHelper {
|
||||
public static boolean handleMenuClick(@NonNull FragmentActivity activity, @NonNull List<Song> songs, int menuItemId) {
|
||||
switch (menuItemId) {
|
||||
case R.id.action_play:
|
||||
MusicPlayerRemote.openQueue(songs, 0, true);
|
||||
return true;
|
||||
case R.id.action_play_next:
|
||||
MusicPlayerRemote.playNext(songs);
|
||||
return true;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue