support batch actions for parent items

This commit is contained in:
dkanada 2021-05-06 15:13:15 +09:00
commit d85f95da91
5 changed files with 41 additions and 11 deletions

View file

@ -22,9 +22,11 @@ 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;
import com.dkanada.gramophone.util.QueryUtil;
import com.dkanada.gramophone.util.NavigationUtil;
import java.util.ArrayList;
import org.jellyfin.apiclient.model.querying.ItemQuery;
import java.util.List;
public class PlaylistAdapter extends AbsMultiSelectAdapter<PlaylistAdapter.ViewHolder, Playlist> {
@ -126,13 +128,17 @@ public class PlaylistAdapter extends AbsMultiSelectAdapter<PlaylistAdapter.ViewH
@Override
protected void onMultipleItemAction(@NonNull MenuItem menuItem, @NonNull List<Playlist> selection) {
switch (menuItem.getItemId()) {
case R.id.action_delete_playlist:
DeletePlaylistDialog.create(selection).show(activity.getSupportFragmentManager(), DeletePlaylistDialog.TAG);
break;
default:
SongsMenuHelper.handleMenuClick(activity, new ArrayList<>(), menuItem.getItemId());
break;
if (menuItem.getItemId() == R.id.action_delete_playlist) {
DeletePlaylistDialog.create(selection).show(activity.getSupportFragmentManager(), DeletePlaylistDialog.TAG);
} else {
for (Playlist playlist : selection) {
ItemQuery songs = new ItemQuery();
songs.setParentId(playlist.id);
QueryUtil.getSongs(songs, (media) -> {
SongsMenuHelper.handleMenuClick(activity, media, menuItem.getItemId());
});
}
}
}

View file

@ -12,6 +12,7 @@ import androidx.annotation.Nullable;
import androidx.core.util.Pair;
import androidx.appcompat.app.AppCompatActivity;
import com.dkanada.gramophone.util.QueryUtil;
import com.kabouzeid.appthemehelper.util.ColorUtil;
import com.kabouzeid.appthemehelper.util.MaterialValueHelper;
import com.dkanada.gramophone.R;
@ -28,7 +29,8 @@ import com.dkanada.gramophone.util.NavigationUtil;
import com.dkanada.gramophone.util.PreferenceUtil;
import com.simplecityapps.recyclerview_fastscroll.views.FastScrollRecyclerView;
import java.util.ArrayList;
import org.jellyfin.apiclient.model.querying.ItemQuery;
import java.util.List;
public class AlbumAdapter extends AbsMultiSelectAdapter<AlbumAdapter.ViewHolder, Album> implements FastScrollRecyclerView.SectionedAdapter {
@ -170,7 +172,14 @@ public class AlbumAdapter extends AbsMultiSelectAdapter<AlbumAdapter.ViewHolder,
@Override
protected void onMultipleItemAction(@NonNull MenuItem menuItem, @NonNull List<Album> selection) {
SongsMenuHelper.handleMenuClick(activity, new ArrayList<>(), menuItem.getItemId());
for (Album album : selection) {
ItemQuery songs = new ItemQuery();
songs.setParentId(album.id);
QueryUtil.getSongs(songs, (media) -> {
SongsMenuHelper.handleMenuClick(activity, media, menuItem.getItemId());
});
}
}
@NonNull

View file

@ -12,6 +12,7 @@ import androidx.annotation.Nullable;
import androidx.core.util.Pair;
import androidx.appcompat.app.AppCompatActivity;
import com.dkanada.gramophone.util.QueryUtil;
import com.kabouzeid.appthemehelper.util.ColorUtil;
import com.kabouzeid.appthemehelper.util.MaterialValueHelper;
import com.dkanada.gramophone.R;
@ -26,6 +27,8 @@ import com.dkanada.gramophone.util.MusicUtil;
import com.dkanada.gramophone.util.NavigationUtil;
import com.simplecityapps.recyclerview_fastscroll.views.FastScrollRecyclerView;
import org.jellyfin.apiclient.model.querying.ItemQuery;
import java.util.ArrayList;
import java.util.List;
@ -159,7 +162,17 @@ public class ArtistAdapter extends AbsMultiSelectAdapter<ArtistAdapter.ViewHolde
@Override
protected void onMultipleItemAction(@NonNull MenuItem menuItem, @NonNull List<Artist> selection) {
SongsMenuHelper.handleMenuClick(activity, new ArrayList<>(), menuItem.getItemId());
List<String> ids = new ArrayList<>();
for (Artist artist : selection) {
ids.add(artist.id);
}
ItemQuery songs = new ItemQuery();
songs.setArtistIds(ids.toArray(new String[0]));
QueryUtil.getSongs(songs, (media) -> {
SongsMenuHelper.handleMenuClick(activity, media, menuItem.getItemId());
});
}
@NonNull

View file

@ -18,6 +18,7 @@
android:id="@+id/action_add_to_playlist"
android:icon="@drawable/ic_playlist_add_white_24dp"
android:title="@string/action_add_to_playlist"
android:visible="false"
app:showAsAction="ifRoom" />
<item

View file

@ -18,6 +18,7 @@
android:id="@+id/action_add_to_playlist"
android:icon="@drawable/ic_playlist_add_white_24dp"
android:title="@string/action_add_to_playlist"
android:visible="false"
app:showAsAction="ifRoom" />
<item