Fix shuffle button shuffles all songs instead of just favorites
This commit is contained in:
parent
acfd1d4eeb
commit
7980f515f2
5 changed files with 32 additions and 4 deletions
|
|
@ -18,6 +18,8 @@ import com.dkanada.gramophone.model.Song;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public class ShuffleButtonSongAdapter extends AbsOffsetSongAdapter {
|
public class ShuffleButtonSongAdapter extends AbsOffsetSongAdapter {
|
||||||
|
private boolean isFavorite = false;
|
||||||
|
|
||||||
public ShuffleButtonSongAdapter(AppCompatActivity activity, List<Song> dataSet, @LayoutRes int itemLayoutRes, boolean usePalette, @Nullable CabHolder cabHolder) {
|
public ShuffleButtonSongAdapter(AppCompatActivity activity, List<Song> dataSet, @LayoutRes int itemLayoutRes, boolean usePalette, @Nullable CabHolder cabHolder) {
|
||||||
super(activity, dataSet, itemLayoutRes, usePalette, 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 class ViewHolder extends AbsOffsetSongAdapter.ViewHolder {
|
||||||
public ViewHolder(@NonNull View itemView) {
|
public ViewHolder(@NonNull View itemView) {
|
||||||
super(itemView);
|
super(itemView);
|
||||||
|
|
@ -73,7 +79,7 @@ public class ShuffleButtonSongAdapter extends AbsOffsetSongAdapter {
|
||||||
@Override
|
@Override
|
||||||
public void onClick(View v) {
|
public void onClick(View v) {
|
||||||
if (getItemViewType() == OFFSET_ITEM) {
|
if (getItemViewType() == OFFSET_ITEM) {
|
||||||
ShortcutUtil.getShuffle((media) -> MusicPlayerRemote.openAndShuffleQueue(media, true));
|
ShortcutUtil.getShuffle((media) -> MusicPlayerRemote.openAndShuffleQueue(media, true), isFavorite);
|
||||||
}
|
}
|
||||||
|
|
||||||
super.onClick(v);
|
super.onClick(v);
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,10 @@
|
||||||
package com.dkanada.gramophone.fragments.library;
|
package com.dkanada.gramophone.fragments.library;
|
||||||
|
|
||||||
import androidx.annotation.NonNull;
|
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.ItemFilter;
|
||||||
import org.jellyfin.apiclient.model.querying.ItemQuery;
|
import org.jellyfin.apiclient.model.querying.ItemQuery;
|
||||||
|
|
||||||
|
|
@ -15,4 +19,17 @@ public class FavoritesFragment extends SongsFragment {
|
||||||
|
|
||||||
return query;
|
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();
|
int id = item.getItemId();
|
||||||
switch (id) {
|
switch (id) {
|
||||||
case R.id.action_shuffle_all:
|
case R.id.action_shuffle_all:
|
||||||
ShortcutUtil.getShuffle((media) -> MusicPlayerRemote.openAndShuffleQueue(media, true));
|
ShortcutUtil.getShuffle((media) -> MusicPlayerRemote.openAndShuffleQueue(media, true), false);
|
||||||
return true;
|
return true;
|
||||||
case R.id.action_new_playlist:
|
case R.id.action_new_playlist:
|
||||||
CreatePlaylistDialog.create().show(getChildFragmentManager(), "CREATE_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.interaction.Response;
|
||||||
import org.jellyfin.apiclient.model.dto.BaseItemDto;
|
import org.jellyfin.apiclient.model.dto.BaseItemDto;
|
||||||
import org.jellyfin.apiclient.model.querying.ItemFields;
|
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.ItemQuery;
|
||||||
import org.jellyfin.apiclient.model.querying.ItemsResult;
|
import org.jellyfin.apiclient.model.querying.ItemsResult;
|
||||||
|
|
||||||
|
|
@ -34,12 +35,16 @@ public class ShortcutUtil {
|
||||||
getSongs(query, callback);
|
getSongs(query, callback);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void getShuffle(MediaCallback<Song> callback) {
|
public static void getShuffle(MediaCallback<Song> callback, boolean onlyFavorites) {
|
||||||
ItemQuery query = new ItemQuery();
|
ItemQuery query = new ItemQuery();
|
||||||
|
|
||||||
query.setSortBy(new String[]{SortMethod.RANDOM.getApi()});
|
query.setSortBy(new String[]{SortMethod.RANDOM.getApi()});
|
||||||
query.setSortOrder(SortOrder.DESCENDING.getApi());
|
query.setSortOrder(SortOrder.DESCENDING.getApi());
|
||||||
|
|
||||||
|
if (onlyFavorites) {
|
||||||
|
query.setFilters(new ItemFilter[]{ItemFilter.IsFavorite});
|
||||||
|
}
|
||||||
|
|
||||||
getSongs(query, callback);
|
getSongs(query, callback);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -27,7 +27,7 @@ public class AppShortcutLauncherActivity extends Activity {
|
||||||
|
|
||||||
switch (getIntent().getIntExtra(EXTRA_SHORTCUT, SHORTCUT_TYPE_DEFAULT)) {
|
switch (getIntent().getIntExtra(EXTRA_SHORTCUT, SHORTCUT_TYPE_DEFAULT)) {
|
||||||
case SHORTCUT_TYPE_SHUFFLE:
|
case SHORTCUT_TYPE_SHUFFLE:
|
||||||
ShortcutUtil.getShuffle((media) -> MusicPlayerRemote.openAndShuffleQueue(media, true));
|
ShortcutUtil.getShuffle((media) -> MusicPlayerRemote.openAndShuffleQueue(media, true), false);
|
||||||
DynamicShortcutManager.reportShortcutUsed(this, ShuffleShortcutType.getId());
|
DynamicShortcutManager.reportShortcutUsed(this, ShuffleShortcutType.getId());
|
||||||
break;
|
break;
|
||||||
case SHORTCUT_TYPE_FREQUENT:
|
case SHORTCUT_TYPE_FREQUENT:
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue