fix launcher shortcuts and shuffle button
This commit is contained in:
parent
3d40db2675
commit
d5f8d54199
11 changed files with 85 additions and 9 deletions
|
|
@ -22,7 +22,6 @@ 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.model.Song;
|
||||
import com.dkanada.gramophone.util.NavigationUtil;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
|
|
|||
|
|
@ -23,7 +23,6 @@ import com.dkanada.gramophone.helper.menu.SongsMenuHelper;
|
|||
import com.dkanada.gramophone.helper.sort.SortMethod;
|
||||
import com.dkanada.gramophone.interfaces.CabHolder;
|
||||
import com.dkanada.gramophone.model.Album;
|
||||
import com.dkanada.gramophone.model.Song;
|
||||
import com.dkanada.gramophone.util.MusicUtil;
|
||||
import com.dkanada.gramophone.util.NavigationUtil;
|
||||
import com.dkanada.gramophone.util.PreferenceUtil;
|
||||
|
|
|
|||
|
|
@ -22,7 +22,6 @@ import com.dkanada.gramophone.glide.CustomPaletteTarget;
|
|||
import com.dkanada.gramophone.helper.menu.SongsMenuHelper;
|
||||
import com.dkanada.gramophone.interfaces.CabHolder;
|
||||
import com.dkanada.gramophone.model.Artist;
|
||||
import com.dkanada.gramophone.model.Song;
|
||||
import com.dkanada.gramophone.util.MusicUtil;
|
||||
import com.dkanada.gramophone.util.NavigationUtil;
|
||||
import com.simplecityapps.recyclerview_fastscroll.views.FastScrollRecyclerView;
|
||||
|
|
|
|||
|
|
@ -8,6 +8,7 @@ import androidx.annotation.NonNull;
|
|||
import androidx.annotation.Nullable;
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
|
||||
import com.dkanada.gramophone.util.ShortcutUtil;
|
||||
import com.kabouzeid.appthemehelper.ThemeStore;
|
||||
import com.dkanada.gramophone.R;
|
||||
import com.dkanada.gramophone.helper.MusicPlayerRemote;
|
||||
|
|
@ -17,7 +18,6 @@ import com.dkanada.gramophone.model.Song;
|
|||
import java.util.List;
|
||||
|
||||
public class ShuffleButtonSongAdapter extends AbsOffsetSongAdapter {
|
||||
|
||||
public ShuffleButtonSongAdapter(AppCompatActivity activity, List<Song> dataSet, @LayoutRes int itemLayoutRes, boolean usePalette, @Nullable CabHolder cabHolder) {
|
||||
super(activity, dataSet, itemLayoutRes, usePalette, cabHolder);
|
||||
}
|
||||
|
|
@ -72,8 +72,7 @@ public class ShuffleButtonSongAdapter extends AbsOffsetSongAdapter {
|
|||
@Override
|
||||
public void onClick(View v) {
|
||||
if (getItemViewType() == OFFSET_ITEM) {
|
||||
MusicPlayerRemote.openAndShuffleQueue(dataSet, true);
|
||||
return;
|
||||
ShortcutUtil.getShuffle((media) -> MusicPlayerRemote.openAndShuffleQueue(media, true));
|
||||
}
|
||||
|
||||
super.onClick(v);
|
||||
|
|
|
|||
|
|
@ -20,6 +20,8 @@ import androidx.annotation.Nullable;
|
|||
|
||||
import com.dkanada.gramophone.databinding.FragmentLibraryBinding;
|
||||
import com.dkanada.gramophone.fragments.mainactivity.library.pager.FavoritesFragment;
|
||||
import com.dkanada.gramophone.helper.MusicPlayerRemote;
|
||||
import com.dkanada.gramophone.util.ShortcutUtil;
|
||||
import com.google.android.material.appbar.AppBarLayout;
|
||||
import com.afollestad.materialcab.MaterialCab;
|
||||
import com.kabouzeid.appthemehelper.ThemeStore;
|
||||
|
|
@ -239,7 +241,7 @@ public class LibraryFragment extends AbsMainActivityFragment implements CabHolde
|
|||
int id = item.getItemId();
|
||||
switch (id) {
|
||||
case R.id.action_shuffle_all:
|
||||
Toast.makeText(requireActivity(), requireActivity().getResources().getString(R.string.error_unexpected), Toast.LENGTH_SHORT).show();
|
||||
ShortcutUtil.getShuffle((media) -> MusicPlayerRemote.openAndShuffleQueue(media, true));
|
||||
return true;
|
||||
case R.id.action_new_playlist:
|
||||
CreatePlaylistDialog.create().show(getChildFragmentManager(), "CREATE_PLAYLIST");
|
||||
|
|
|
|||
|
|
@ -7,4 +7,5 @@ public class SortMethod {
|
|||
public static final String YEAR = "YEAR";
|
||||
public static final String ADDED = "ADDED";
|
||||
public static final String RANDOM = "RANDOM";
|
||||
public static final String COUNT = "COUNT";
|
||||
}
|
||||
|
|
|
|||
|
|
@ -229,6 +229,9 @@ public class QueryUtil {
|
|||
case SortMethod.RANDOM:
|
||||
query.setSortBy(new String[]{"Random"});
|
||||
break;
|
||||
case SortMethod.COUNT:
|
||||
query.setSortBy(new String[]{"PlayCount"});
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,71 @@
|
|||
package com.dkanada.gramophone.util;
|
||||
|
||||
import com.dkanada.gramophone.App;
|
||||
import com.dkanada.gramophone.helper.sort.SortMethod;
|
||||
import com.dkanada.gramophone.helper.sort.SortOrder;
|
||||
import com.dkanada.gramophone.interfaces.MediaCallback;
|
||||
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.ItemQuery;
|
||||
import org.jellyfin.apiclient.model.querying.ItemsResult;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class ShortcutUtil {
|
||||
public static void getFrequent(MediaCallback<Song> callback) {
|
||||
ItemQuery query = new ItemQuery();
|
||||
|
||||
QueryUtil.applySortMethod(query, SortMethod.COUNT);
|
||||
QueryUtil.applySortOrder(query, SortOrder.DESCENDING);
|
||||
|
||||
getSongs(query, callback);
|
||||
}
|
||||
|
||||
public static void getLatest(MediaCallback<Song> callback) {
|
||||
ItemQuery query = new ItemQuery();
|
||||
|
||||
QueryUtil.applySortMethod(query, SortMethod.ADDED);
|
||||
QueryUtil.applySortOrder(query, SortOrder.DESCENDING);
|
||||
|
||||
getSongs(query, callback);
|
||||
}
|
||||
|
||||
public static void getShuffle(MediaCallback<Song> callback) {
|
||||
ItemQuery query = new ItemQuery();
|
||||
|
||||
QueryUtil.applySortMethod(query, SortMethod.RANDOM);
|
||||
QueryUtil.applySortOrder(query, SortOrder.DESCENDING);
|
||||
|
||||
getSongs(query, callback);
|
||||
}
|
||||
|
||||
public static void getSongs(ItemQuery query, MediaCallback<Song> callback) {
|
||||
query.setIncludeItemTypes(new String[]{"Audio"});
|
||||
query.setFields(new ItemFields[]{ItemFields.MediaSources});
|
||||
|
||||
query.setLimit(200);
|
||||
query.setUserId(App.getApiClient().getCurrentUserId());
|
||||
query.setRecursive(true);
|
||||
|
||||
App.getApiClient().GetItemsAsync(query, new Response<ItemsResult>() {
|
||||
@Override
|
||||
public void onResponse(ItemsResult result) {
|
||||
List<Song> songs = new ArrayList<>();
|
||||
for (BaseItemDto itemDto : result.getItems()) {
|
||||
songs.add(new Song(itemDto));
|
||||
}
|
||||
|
||||
callback.onLoadMedia(songs);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onError(Exception exception) {
|
||||
exception.printStackTrace();
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
@ -8,6 +8,8 @@ import com.dkanada.gramophone.BuildConfig;
|
|||
import com.dkanada.gramophone.views.shortcuts.type.LatestShortcutType;
|
||||
import com.dkanada.gramophone.views.shortcuts.type.ShuffleShortcutType;
|
||||
import com.dkanada.gramophone.views.shortcuts.type.FrequentShortcutType;
|
||||
import com.dkanada.gramophone.helper.MusicPlayerRemote;
|
||||
import com.dkanada.gramophone.util.ShortcutUtil;
|
||||
import com.dkanada.gramophone.model.Playlist;
|
||||
import com.dkanada.gramophone.service.MusicService;
|
||||
|
||||
|
|
@ -25,12 +27,15 @@ public class AppShortcutLauncherActivity extends Activity {
|
|||
|
||||
switch (getIntent().getIntExtra(EXTRA_SHORTCUT, SHORTCUT_TYPE_DEFAULT)) {
|
||||
case SHORTCUT_TYPE_SHUFFLE:
|
||||
ShortcutUtil.getShuffle((media) -> MusicPlayerRemote.openAndShuffleQueue(media, true));
|
||||
DynamicShortcutManager.reportShortcutUsed(this, ShuffleShortcutType.getId());
|
||||
break;
|
||||
case SHORTCUT_TYPE_FREQUENT:
|
||||
ShortcutUtil.getFrequent((media) -> MusicPlayerRemote.openAndShuffleQueue(media, true));
|
||||
DynamicShortcutManager.reportShortcutUsed(this, FrequentShortcutType.getId());
|
||||
break;
|
||||
case SHORTCUT_TYPE_LATEST:
|
||||
ShortcutUtil.getLatest((media) -> MusicPlayerRemote.openAndShuffleQueue(media, true));
|
||||
DynamicShortcutManager.reportShortcutUsed(this, LatestShortcutType.getId());
|
||||
break;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -33,7 +33,6 @@
|
|||
app:showAsAction="never" />
|
||||
|
||||
<item
|
||||
android:visible="false"
|
||||
android:id="@+id/action_details"
|
||||
android:title="@string/action_details"
|
||||
app:showAsAction="never" />
|
||||
|
|
|
|||
|
|
@ -12,7 +12,6 @@
|
|||
<item
|
||||
android:id="@+id/action_shuffle_all"
|
||||
android:title="@string/action_shuffle_all"
|
||||
android:visible="false"
|
||||
app:showAsAction="never" />
|
||||
|
||||
<item
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue