support batch actions for parent items
This commit is contained in:
parent
d5f8d54199
commit
d85f95da91
5 changed files with 41 additions and 11 deletions
|
|
@ -22,9 +22,11 @@ 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;
|
||||||
|
import com.dkanada.gramophone.util.QueryUtil;
|
||||||
import com.dkanada.gramophone.util.NavigationUtil;
|
import com.dkanada.gramophone.util.NavigationUtil;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import org.jellyfin.apiclient.model.querying.ItemQuery;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public class PlaylistAdapter extends AbsMultiSelectAdapter<PlaylistAdapter.ViewHolder, Playlist> {
|
public class PlaylistAdapter extends AbsMultiSelectAdapter<PlaylistAdapter.ViewHolder, Playlist> {
|
||||||
|
|
@ -126,13 +128,17 @@ public class PlaylistAdapter extends AbsMultiSelectAdapter<PlaylistAdapter.ViewH
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onMultipleItemAction(@NonNull MenuItem menuItem, @NonNull List<Playlist> selection) {
|
protected void onMultipleItemAction(@NonNull MenuItem menuItem, @NonNull List<Playlist> selection) {
|
||||||
switch (menuItem.getItemId()) {
|
if (menuItem.getItemId() == R.id.action_delete_playlist) {
|
||||||
case R.id.action_delete_playlist:
|
|
||||||
DeletePlaylistDialog.create(selection).show(activity.getSupportFragmentManager(), DeletePlaylistDialog.TAG);
|
DeletePlaylistDialog.create(selection).show(activity.getSupportFragmentManager(), DeletePlaylistDialog.TAG);
|
||||||
break;
|
} else {
|
||||||
default:
|
for (Playlist playlist : selection) {
|
||||||
SongsMenuHelper.handleMenuClick(activity, new ArrayList<>(), menuItem.getItemId());
|
ItemQuery songs = new ItemQuery();
|
||||||
break;
|
songs.setParentId(playlist.id);
|
||||||
|
|
||||||
|
QueryUtil.getSongs(songs, (media) -> {
|
||||||
|
SongsMenuHelper.handleMenuClick(activity, media, menuItem.getItemId());
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -12,6 +12,7 @@ import androidx.annotation.Nullable;
|
||||||
import androidx.core.util.Pair;
|
import androidx.core.util.Pair;
|
||||||
import androidx.appcompat.app.AppCompatActivity;
|
import androidx.appcompat.app.AppCompatActivity;
|
||||||
|
|
||||||
|
import com.dkanada.gramophone.util.QueryUtil;
|
||||||
import com.kabouzeid.appthemehelper.util.ColorUtil;
|
import com.kabouzeid.appthemehelper.util.ColorUtil;
|
||||||
import com.kabouzeid.appthemehelper.util.MaterialValueHelper;
|
import com.kabouzeid.appthemehelper.util.MaterialValueHelper;
|
||||||
import com.dkanada.gramophone.R;
|
import com.dkanada.gramophone.R;
|
||||||
|
|
@ -28,7 +29,8 @@ import com.dkanada.gramophone.util.NavigationUtil;
|
||||||
import com.dkanada.gramophone.util.PreferenceUtil;
|
import com.dkanada.gramophone.util.PreferenceUtil;
|
||||||
import com.simplecityapps.recyclerview_fastscroll.views.FastScrollRecyclerView;
|
import com.simplecityapps.recyclerview_fastscroll.views.FastScrollRecyclerView;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import org.jellyfin.apiclient.model.querying.ItemQuery;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public class AlbumAdapter extends AbsMultiSelectAdapter<AlbumAdapter.ViewHolder, Album> implements FastScrollRecyclerView.SectionedAdapter {
|
public class AlbumAdapter extends AbsMultiSelectAdapter<AlbumAdapter.ViewHolder, Album> implements FastScrollRecyclerView.SectionedAdapter {
|
||||||
|
|
@ -170,7 +172,14 @@ public class AlbumAdapter extends AbsMultiSelectAdapter<AlbumAdapter.ViewHolder,
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onMultipleItemAction(@NonNull MenuItem menuItem, @NonNull List<Album> selection) {
|
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
|
@NonNull
|
||||||
|
|
|
||||||
|
|
@ -12,6 +12,7 @@ import androidx.annotation.Nullable;
|
||||||
import androidx.core.util.Pair;
|
import androidx.core.util.Pair;
|
||||||
import androidx.appcompat.app.AppCompatActivity;
|
import androidx.appcompat.app.AppCompatActivity;
|
||||||
|
|
||||||
|
import com.dkanada.gramophone.util.QueryUtil;
|
||||||
import com.kabouzeid.appthemehelper.util.ColorUtil;
|
import com.kabouzeid.appthemehelper.util.ColorUtil;
|
||||||
import com.kabouzeid.appthemehelper.util.MaterialValueHelper;
|
import com.kabouzeid.appthemehelper.util.MaterialValueHelper;
|
||||||
import com.dkanada.gramophone.R;
|
import com.dkanada.gramophone.R;
|
||||||
|
|
@ -26,6 +27,8 @@ import com.dkanada.gramophone.util.MusicUtil;
|
||||||
import com.dkanada.gramophone.util.NavigationUtil;
|
import com.dkanada.gramophone.util.NavigationUtil;
|
||||||
import com.simplecityapps.recyclerview_fastscroll.views.FastScrollRecyclerView;
|
import com.simplecityapps.recyclerview_fastscroll.views.FastScrollRecyclerView;
|
||||||
|
|
||||||
|
import org.jellyfin.apiclient.model.querying.ItemQuery;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
|
@ -159,7 +162,17 @@ public class ArtistAdapter extends AbsMultiSelectAdapter<ArtistAdapter.ViewHolde
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onMultipleItemAction(@NonNull MenuItem menuItem, @NonNull List<Artist> selection) {
|
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
|
@NonNull
|
||||||
|
|
|
||||||
|
|
@ -18,6 +18,7 @@
|
||||||
android:id="@+id/action_add_to_playlist"
|
android:id="@+id/action_add_to_playlist"
|
||||||
android:icon="@drawable/ic_playlist_add_white_24dp"
|
android:icon="@drawable/ic_playlist_add_white_24dp"
|
||||||
android:title="@string/action_add_to_playlist"
|
android:title="@string/action_add_to_playlist"
|
||||||
|
android:visible="false"
|
||||||
app:showAsAction="ifRoom" />
|
app:showAsAction="ifRoom" />
|
||||||
|
|
||||||
<item
|
<item
|
||||||
|
|
|
||||||
|
|
@ -18,6 +18,7 @@
|
||||||
android:id="@+id/action_add_to_playlist"
|
android:id="@+id/action_add_to_playlist"
|
||||||
android:icon="@drawable/ic_playlist_add_white_24dp"
|
android:icon="@drawable/ic_playlist_add_white_24dp"
|
||||||
android:title="@string/action_add_to_playlist"
|
android:title="@string/action_add_to_playlist"
|
||||||
|
android:visible="false"
|
||||||
app:showAsAction="ifRoom" />
|
app:showAsAction="ifRoom" />
|
||||||
|
|
||||||
<item
|
<item
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue