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.BuildConfig;
|
||||||
import com.dkanada.gramophone.activities.base.AbsMusicContentActivity;
|
import com.dkanada.gramophone.activities.base.AbsMusicContentActivity;
|
||||||
import com.dkanada.gramophone.databinding.ActivityPlaylistDetailBinding;
|
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.GeneralItemAnimator;
|
||||||
import com.h6ah4i.android.widget.advrecyclerview.animator.RefactoredDefaultItemAnimator;
|
import com.h6ah4i.android.widget.advrecyclerview.animator.RefactoredDefaultItemAnimator;
|
||||||
import com.h6ah4i.android.widget.advrecyclerview.draggable.RecyclerViewDragDropManager;
|
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.OrderablePlaylistSongAdapter;
|
||||||
import com.dkanada.gramophone.adapter.song.SongAdapter;
|
import com.dkanada.gramophone.adapter.song.SongAdapter;
|
||||||
import com.dkanada.gramophone.helper.MusicPlayerRemote;
|
import com.dkanada.gramophone.helper.MusicPlayerRemote;
|
||||||
import com.dkanada.gramophone.helper.menu.PlaylistMenuHelper;
|
|
||||||
import com.dkanada.gramophone.interfaces.CabHolder;
|
import com.dkanada.gramophone.interfaces.CabHolder;
|
||||||
import com.dkanada.gramophone.model.Playlist;
|
import com.dkanada.gramophone.model.Playlist;
|
||||||
import com.dkanada.gramophone.model.PlaylistSong;
|
import com.dkanada.gramophone.model.PlaylistSong;
|
||||||
|
|
@ -128,17 +129,17 @@ public class PlaylistDetailActivity extends AbsMusicContentActivity implements C
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
|
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
|
||||||
int id = item.getItemId();
|
if (item.getItemId() == R.id.action_shuffle_playlist) {
|
||||||
switch (id) {
|
|
||||||
case R.id.action_shuffle_playlist:
|
|
||||||
MusicPlayerRemote.openAndShuffleQueue(adapter.getDataSet(), true);
|
MusicPlayerRemote.openAndShuffleQueue(adapter.getDataSet(), true);
|
||||||
return true;
|
} else if (item.getItemId() == R.id.action_rename_playlist) {
|
||||||
case R.id.action_download:
|
RenamePlaylistDialog.create(playlist).show(getSupportFragmentManager(), RenamePlaylistDialog.TAG);
|
||||||
NavigationUtil.startDownload(this, adapter.getDataSet());
|
} else if (item.getItemId() == R.id.action_delete_playlist) {
|
||||||
return true;
|
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
|
@NonNull
|
||||||
|
|
|
||||||
|
|
@ -16,9 +16,9 @@ import com.dkanada.gramophone.R;
|
||||||
import com.dkanada.gramophone.adapter.base.AbsMultiSelectAdapter;
|
import com.dkanada.gramophone.adapter.base.AbsMultiSelectAdapter;
|
||||||
import com.dkanada.gramophone.adapter.base.MediaEntryViewHolder;
|
import com.dkanada.gramophone.adapter.base.MediaEntryViewHolder;
|
||||||
import com.dkanada.gramophone.dialogs.DeletePlaylistDialog;
|
import com.dkanada.gramophone.dialogs.DeletePlaylistDialog;
|
||||||
|
import com.dkanada.gramophone.dialogs.RenamePlaylistDialog;
|
||||||
import com.dkanada.gramophone.glide.CustomGlideRequest;
|
import com.dkanada.gramophone.glide.CustomGlideRequest;
|
||||||
import com.dkanada.gramophone.glide.CustomPaletteTarget;
|
import com.dkanada.gramophone.glide.CustomPaletteTarget;
|
||||||
import com.dkanada.gramophone.helper.menu.PlaylistMenuHelper;
|
|
||||||
import com.dkanada.gramophone.helper.menu.SongsMenuHelper;
|
import com.dkanada.gramophone.helper.menu.SongsMenuHelper;
|
||||||
import com.dkanada.gramophone.interfaces.CabHolder;
|
import com.dkanada.gramophone.interfaces.CabHolder;
|
||||||
import com.dkanada.gramophone.model.Playlist;
|
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) {
|
public ViewHolder(@NonNull View itemView, int itemViewType) {
|
||||||
super(itemView);
|
super(itemView);
|
||||||
|
|
||||||
|
|
@ -151,13 +151,35 @@ public class PlaylistAdapter extends AbsMultiSelectAdapter<PlaylistAdapter.ViewH
|
||||||
final PopupMenu popupMenu = new PopupMenu(activity, view);
|
final PopupMenu popupMenu = new PopupMenu(activity, view);
|
||||||
|
|
||||||
popupMenu.inflate(R.menu.menu_item_playlist);
|
popupMenu.inflate(R.menu.menu_item_playlist);
|
||||||
popupMenu.setOnMenuItemClickListener(item -> PlaylistMenuHelper.handleMenuClick(activity, dataSet.get(getBindingAdapterPosition()), item));
|
popupMenu.setOnMenuItemClickListener(this);
|
||||||
|
|
||||||
popupMenu.show();
|
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
|
@Override
|
||||||
public void onClick(View view) {
|
public void onClick(View view) {
|
||||||
if (isInQuickSelectMode()) {
|
if (isInQuickSelectMode()) {
|
||||||
|
|
|
||||||
|
|
@ -13,6 +13,8 @@ import com.dkanada.gramophone.model.Playlist;
|
||||||
import com.dkanada.gramophone.util.PlaylistUtil;
|
import com.dkanada.gramophone.util.PlaylistUtil;
|
||||||
|
|
||||||
public class RenamePlaylistDialog extends DialogFragment {
|
public class RenamePlaylistDialog extends DialogFragment {
|
||||||
|
public static final String TAG = RenamePlaylistDialog.class.getSimpleName();
|
||||||
|
|
||||||
private static final String PLAYLIST = "playlist";
|
private static final String PLAYLIST = "playlist";
|
||||||
|
|
||||||
@NonNull
|
@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 class SongsMenuHelper {
|
||||||
public static boolean handleMenuClick(@NonNull FragmentActivity activity, @NonNull List<Song> songs, int menuItemId) {
|
public static boolean handleMenuClick(@NonNull FragmentActivity activity, @NonNull List<Song> songs, int menuItemId) {
|
||||||
switch (menuItemId) {
|
switch (menuItemId) {
|
||||||
|
case R.id.action_play:
|
||||||
|
MusicPlayerRemote.openQueue(songs, 0, true);
|
||||||
|
return true;
|
||||||
case R.id.action_play_next:
|
case R.id.action_play_next:
|
||||||
MusicPlayerRemote.playNext(songs);
|
MusicPlayerRemote.playNext(songs);
|
||||||
return true;
|
return true;
|
||||||
|
|
|
||||||
|
|
@ -25,4 +25,8 @@
|
||||||
android:id="@+id/action_delete_playlist"
|
android:id="@+id/action_delete_playlist"
|
||||||
android:title="@string/action_delete" />
|
android:title="@string/action_delete" />
|
||||||
|
|
||||||
|
<item
|
||||||
|
android:id="@+id/action_download"
|
||||||
|
android:title="@string/action_download" />
|
||||||
|
|
||||||
</menu>
|
</menu>
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue