Merge pull request #225 from jakobkukla/fix-favorites
Fix favorites shuffle button
This commit is contained in:
commit
43ee74a7aa
5 changed files with 32 additions and 4 deletions
|
|
@ -18,6 +18,8 @@ import com.dkanada.gramophone.model.Song;
|
|||
import java.util.List;
|
||||
|
||||
public class ShuffleButtonSongAdapter extends AbsOffsetSongAdapter {
|
||||
private boolean isFavorite = false;
|
||||
|
||||
public ShuffleButtonSongAdapter(AppCompatActivity activity, List<Song> dataSet, @LayoutRes int itemLayoutRes, boolean usePalette, @Nullable CabHolder cabHolder) {
|
||||
super(activity, dataSet, itemLayoutRes, usePalette, cabHolder);
|
||||
}
|
||||
|
|
@ -65,6 +67,10 @@ public class ShuffleButtonSongAdapter extends AbsOffsetSongAdapter {
|
|||
}
|
||||
}
|
||||
|
||||
public void setFavorite(boolean isFavorite) {
|
||||
this.isFavorite = isFavorite;
|
||||
}
|
||||
|
||||
public class ViewHolder extends AbsOffsetSongAdapter.ViewHolder {
|
||||
public ViewHolder(@NonNull View itemView) {
|
||||
super(itemView);
|
||||
|
|
@ -73,7 +79,7 @@ public class ShuffleButtonSongAdapter extends AbsOffsetSongAdapter {
|
|||
@Override
|
||||
public void onClick(View v) {
|
||||
if (getItemViewType() == OFFSET_ITEM) {
|
||||
ShortcutUtil.getShuffle((media) -> MusicPlayerRemote.openAndShuffleQueue(media, true));
|
||||
ShortcutUtil.getShuffle((media) -> MusicPlayerRemote.openAndShuffleQueue(media, true), isFavorite);
|
||||
}
|
||||
|
||||
super.onClick(v);
|
||||
|
|
|
|||
|
|
@ -1,6 +1,10 @@
|
|||
package com.dkanada.gramophone.fragments.library;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
|
||||
import com.dkanada.gramophone.adapter.song.ShuffleButtonSongAdapter;
|
||||
import com.dkanada.gramophone.adapter.song.SongAdapter;
|
||||
|
||||
import org.jellyfin.apiclient.model.querying.ItemFilter;
|
||||
import org.jellyfin.apiclient.model.querying.ItemQuery;
|
||||
|
||||
|
|
@ -15,4 +19,17 @@ public class FavoritesFragment extends SongsFragment {
|
|||
|
||||
return query;
|
||||
}
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
protected SongAdapter createAdapter() {
|
||||
SongAdapter adapter = super.createAdapter();
|
||||
|
||||
// set the shuffle button adapter to only shuffle favorites
|
||||
if (adapter instanceof ShuffleButtonSongAdapter) {
|
||||
((ShuffleButtonSongAdapter) adapter).setFavorite(true);
|
||||
}
|
||||
|
||||
return adapter;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -194,7 +194,7 @@ public class LibraryFragment extends AbsMainActivityFragment implements ViewPage
|
|||
int id = item.getItemId();
|
||||
switch (id) {
|
||||
case R.id.action_shuffle_all:
|
||||
ShortcutUtil.getShuffle((media) -> MusicPlayerRemote.openAndShuffleQueue(media, true));
|
||||
ShortcutUtil.getShuffle((media) -> MusicPlayerRemote.openAndShuffleQueue(media, true), false);
|
||||
return true;
|
||||
case R.id.action_new_playlist:
|
||||
CreatePlaylistDialog.create().show(getChildFragmentManager(), "CREATE_PLAYLIST");
|
||||
|
|
|
|||
|
|
@ -9,6 +9,7 @@ import com.dkanada.gramophone.model.Song;
|
|||
import org.jellyfin.apiclient.interaction.Response;
|
||||
import org.jellyfin.apiclient.model.dto.BaseItemDto;
|
||||
import org.jellyfin.apiclient.model.querying.ItemFields;
|
||||
import org.jellyfin.apiclient.model.querying.ItemFilter;
|
||||
import org.jellyfin.apiclient.model.querying.ItemQuery;
|
||||
import org.jellyfin.apiclient.model.querying.ItemsResult;
|
||||
|
||||
|
|
@ -34,12 +35,16 @@ public class ShortcutUtil {
|
|||
getSongs(query, callback);
|
||||
}
|
||||
|
||||
public static void getShuffle(MediaCallback<Song> callback) {
|
||||
public static void getShuffle(MediaCallback<Song> callback, boolean onlyFavorites) {
|
||||
ItemQuery query = new ItemQuery();
|
||||
|
||||
query.setSortBy(new String[]{SortMethod.RANDOM.getApi()});
|
||||
query.setSortOrder(SortOrder.DESCENDING.getApi());
|
||||
|
||||
if (onlyFavorites) {
|
||||
query.setFilters(new ItemFilter[]{ItemFilter.IsFavorite});
|
||||
}
|
||||
|
||||
getSongs(query, callback);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -27,7 +27,7 @@ public class AppShortcutLauncherActivity extends Activity {
|
|||
|
||||
switch (getIntent().getIntExtra(EXTRA_SHORTCUT, SHORTCUT_TYPE_DEFAULT)) {
|
||||
case SHORTCUT_TYPE_SHUFFLE:
|
||||
ShortcutUtil.getShuffle((media) -> MusicPlayerRemote.openAndShuffleQueue(media, true));
|
||||
ShortcutUtil.getShuffle((media) -> MusicPlayerRemote.openAndShuffleQueue(media, true), false);
|
||||
DynamicShortcutManager.reportShortcutUsed(this, ShuffleShortcutType.getId());
|
||||
break;
|
||||
case SHORTCUT_TYPE_FREQUENT:
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue