use enums for sort method and order
This commit is contained in:
parent
48e2f0fb3b
commit
85704bb95b
15 changed files with 107 additions and 155 deletions
|
|
@ -21,7 +21,6 @@ import com.dkanada.gramophone.adapter.base.MediaEntryViewHolder;
|
||||||
import com.dkanada.gramophone.glide.CustomGlideRequest;
|
import com.dkanada.gramophone.glide.CustomGlideRequest;
|
||||||
import com.dkanada.gramophone.glide.CustomPaletteTarget;
|
import com.dkanada.gramophone.glide.CustomPaletteTarget;
|
||||||
import com.dkanada.gramophone.helper.menu.SongsMenuHelper;
|
import com.dkanada.gramophone.helper.menu.SongsMenuHelper;
|
||||||
import com.dkanada.gramophone.helper.sort.SortMethod;
|
|
||||||
import com.dkanada.gramophone.interfaces.CabHolder;
|
import com.dkanada.gramophone.interfaces.CabHolder;
|
||||||
import com.dkanada.gramophone.model.Album;
|
import com.dkanada.gramophone.model.Album;
|
||||||
import com.dkanada.gramophone.util.MusicUtil;
|
import com.dkanada.gramophone.util.MusicUtil;
|
||||||
|
|
@ -187,17 +186,17 @@ public class AlbumAdapter extends AbsMultiSelectAdapter<AlbumAdapter.ViewHolder,
|
||||||
public String getSectionName(int position) {
|
public String getSectionName(int position) {
|
||||||
@Nullable String sectionName = null;
|
@Nullable String sectionName = null;
|
||||||
switch (PreferenceUtil.getInstance(activity).getAlbumSortMethod()) {
|
switch (PreferenceUtil.getInstance(activity).getAlbumSortMethod()) {
|
||||||
case SortMethod.NAME:
|
case NAME:
|
||||||
sectionName = dataSet.get(position).title;
|
sectionName = dataSet.get(position).title;
|
||||||
break;
|
break;
|
||||||
case SortMethod.ARTIST:
|
case ARTIST:
|
||||||
sectionName = dataSet.get(position).artistName;
|
sectionName = dataSet.get(position).artistName;
|
||||||
break;
|
break;
|
||||||
case SortMethod.YEAR:
|
case YEAR:
|
||||||
return MusicUtil.getYearString(dataSet.get(position).year);
|
return MusicUtil.getYearString(dataSet.get(position).year);
|
||||||
case SortMethod.ADDED:
|
case ADDED:
|
||||||
return "";
|
return "";
|
||||||
case SortMethod.RANDOM:
|
case RANDOM:
|
||||||
return activity.getResources().getString(R.string.random);
|
return activity.getResources().getString(R.string.random);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -23,7 +23,6 @@ import com.dkanada.gramophone.glide.CustomPaletteTarget;
|
||||||
import com.dkanada.gramophone.helper.MusicPlayerRemote;
|
import com.dkanada.gramophone.helper.MusicPlayerRemote;
|
||||||
import com.dkanada.gramophone.helper.menu.SongMenuHelper;
|
import com.dkanada.gramophone.helper.menu.SongMenuHelper;
|
||||||
import com.dkanada.gramophone.helper.menu.SongsMenuHelper;
|
import com.dkanada.gramophone.helper.menu.SongsMenuHelper;
|
||||||
import com.dkanada.gramophone.helper.sort.SortMethod;
|
|
||||||
import com.dkanada.gramophone.interfaces.CabHolder;
|
import com.dkanada.gramophone.interfaces.CabHolder;
|
||||||
import com.dkanada.gramophone.model.Album;
|
import com.dkanada.gramophone.model.Album;
|
||||||
import com.dkanada.gramophone.model.Song;
|
import com.dkanada.gramophone.model.Song;
|
||||||
|
|
@ -191,20 +190,20 @@ public class SongAdapter extends AbsMultiSelectAdapter<SongAdapter.ViewHolder, S
|
||||||
|
|
||||||
@Nullable String sectionName = null;
|
@Nullable String sectionName = null;
|
||||||
switch (PreferenceUtil.getInstance(activity).getSongSortMethod()) {
|
switch (PreferenceUtil.getInstance(activity).getSongSortMethod()) {
|
||||||
case SortMethod.NAME:
|
case NAME:
|
||||||
sectionName = dataSet.get(position).title;
|
sectionName = dataSet.get(position).title;
|
||||||
break;
|
break;
|
||||||
case SortMethod.ALBUM:
|
case ALBUM:
|
||||||
sectionName = dataSet.get(position).albumName;
|
sectionName = dataSet.get(position).albumName;
|
||||||
break;
|
break;
|
||||||
case SortMethod.ARTIST:
|
case ARTIST:
|
||||||
sectionName = dataSet.get(position).artistName;
|
sectionName = dataSet.get(position).artistName;
|
||||||
break;
|
break;
|
||||||
case SortMethod.YEAR:
|
case YEAR:
|
||||||
return MusicUtil.getYearString(dataSet.get(position).year);
|
return MusicUtil.getYearString(dataSet.get(position).year);
|
||||||
case SortMethod.ADDED:
|
case ADDED:
|
||||||
return "";
|
return "";
|
||||||
case SortMethod.RANDOM:
|
case RANDOM:
|
||||||
return activity.getResources().getString(R.string.random);
|
return activity.getResources().getString(R.string.random);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,6 @@ import android.view.MenuItem;
|
||||||
import android.view.SubMenu;
|
import android.view.SubMenu;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.ViewGroup;
|
import android.view.ViewGroup;
|
||||||
import android.widget.Toast;
|
|
||||||
|
|
||||||
import androidx.fragment.app.Fragment;
|
import androidx.fragment.app.Fragment;
|
||||||
import androidx.viewpager.widget.ViewPager;
|
import androidx.viewpager.widget.ViewPager;
|
||||||
|
|
@ -19,7 +18,6 @@ import androidx.annotation.NonNull;
|
||||||
import androidx.annotation.Nullable;
|
import androidx.annotation.Nullable;
|
||||||
|
|
||||||
import com.dkanada.gramophone.databinding.FragmentLibraryBinding;
|
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.helper.MusicPlayerRemote;
|
||||||
import com.dkanada.gramophone.util.ShortcutUtil;
|
import com.dkanada.gramophone.util.ShortcutUtil;
|
||||||
import com.google.android.material.appbar.AppBarLayout;
|
import com.google.android.material.appbar.AppBarLayout;
|
||||||
|
|
@ -31,8 +29,8 @@ import com.kabouzeid.appthemehelper.util.ToolbarContentTintHelper;
|
||||||
import com.dkanada.gramophone.R;
|
import com.dkanada.gramophone.R;
|
||||||
import com.dkanada.gramophone.adapter.MusicLibraryPagerAdapter;
|
import com.dkanada.gramophone.adapter.MusicLibraryPagerAdapter;
|
||||||
import com.dkanada.gramophone.dialogs.CreatePlaylistDialog;
|
import com.dkanada.gramophone.dialogs.CreatePlaylistDialog;
|
||||||
import com.dkanada.gramophone.helper.sort.SortMethod;
|
import com.dkanada.gramophone.model.SortMethod;
|
||||||
import com.dkanada.gramophone.helper.sort.SortOrder;
|
import com.dkanada.gramophone.model.SortOrder;
|
||||||
import com.dkanada.gramophone.interfaces.CabHolder;
|
import com.dkanada.gramophone.interfaces.CabHolder;
|
||||||
import com.dkanada.gramophone.activities.MainActivity;
|
import com.dkanada.gramophone.activities.MainActivity;
|
||||||
import com.dkanada.gramophone.activities.SearchActivity;
|
import com.dkanada.gramophone.activities.SearchActivity;
|
||||||
|
|
@ -343,7 +341,7 @@ public class LibraryFragment extends AbsMainActivityFragment implements CabHolde
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setUpSortMethodMenu(@NonNull AbsLibraryPagerRecyclerViewCustomGridSizeFragment fragment, @NonNull SubMenu sortMethodMenu) {
|
private void setUpSortMethodMenu(@NonNull AbsLibraryPagerRecyclerViewCustomGridSizeFragment fragment, @NonNull SubMenu sortMethodMenu) {
|
||||||
String currentSortMethod = fragment.getSortMethod();
|
SortMethod currentSortMethod = fragment.getSortMethod();
|
||||||
sortMethodMenu.clear();
|
sortMethodMenu.clear();
|
||||||
|
|
||||||
if (fragment instanceof AlbumsFragment) {
|
if (fragment instanceof AlbumsFragment) {
|
||||||
|
|
@ -357,7 +355,7 @@ public class LibraryFragment extends AbsMainActivityFragment implements CabHolde
|
||||||
.setChecked(currentSortMethod.equals(SortMethod.ADDED));
|
.setChecked(currentSortMethod.equals(SortMethod.ADDED));
|
||||||
sortMethodMenu.add(0, R.id.action_sort_method_random, 4, R.string.sort_method_random)
|
sortMethodMenu.add(0, R.id.action_sort_method_random, 4, R.string.sort_method_random)
|
||||||
.setChecked(currentSortMethod.equals(SortMethod.RANDOM));
|
.setChecked(currentSortMethod.equals(SortMethod.RANDOM));
|
||||||
} else if (fragment instanceof SongsFragment || fragment instanceof FavoritesFragment) {
|
} else if (fragment instanceof SongsFragment) {
|
||||||
sortMethodMenu.add(0, R.id.action_sort_method_name, 0, R.string.sort_method_name)
|
sortMethodMenu.add(0, R.id.action_sort_method_name, 0, R.string.sort_method_name)
|
||||||
.setChecked(currentSortMethod.equals(SortMethod.NAME));
|
.setChecked(currentSortMethod.equals(SortMethod.NAME));
|
||||||
sortMethodMenu.add(0, R.id.action_sort_method_album, 1, R.string.sort_method_album)
|
sortMethodMenu.add(0, R.id.action_sort_method_album, 1, R.string.sort_method_album)
|
||||||
|
|
@ -376,7 +374,7 @@ public class LibraryFragment extends AbsMainActivityFragment implements CabHolde
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setUpSortOrderMenu(@NonNull AbsLibraryPagerRecyclerViewCustomGridSizeFragment fragment, @NonNull SubMenu sortOrderMenu) {
|
private void setUpSortOrderMenu(@NonNull AbsLibraryPagerRecyclerViewCustomGridSizeFragment fragment, @NonNull SubMenu sortOrderMenu) {
|
||||||
String currentSortOrder = fragment.getSortOrder();
|
SortOrder currentSortOrder = fragment.getSortOrder();
|
||||||
sortOrderMenu.clear();
|
sortOrderMenu.clear();
|
||||||
|
|
||||||
sortOrderMenu.add(0, R.id.action_sort_order_ascending, 0, R.string.sort_order_ascending)
|
sortOrderMenu.add(0, R.id.action_sort_order_ascending, 0, R.string.sort_order_ascending)
|
||||||
|
|
@ -388,7 +386,7 @@ public class LibraryFragment extends AbsMainActivityFragment implements CabHolde
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean handleSortMethodMenuItem(@NonNull AbsLibraryPagerRecyclerViewCustomGridSizeFragment fragment, @NonNull MenuItem item) {
|
private boolean handleSortMethodMenuItem(@NonNull AbsLibraryPagerRecyclerViewCustomGridSizeFragment fragment, @NonNull MenuItem item) {
|
||||||
String sortMethod = null;
|
SortMethod sortMethod = null;
|
||||||
switch (item.getItemId()) {
|
switch (item.getItemId()) {
|
||||||
case R.id.action_sort_method_name:
|
case R.id.action_sort_method_name:
|
||||||
sortMethod = SortMethod.NAME;
|
sortMethod = SortMethod.NAME;
|
||||||
|
|
@ -420,7 +418,7 @@ public class LibraryFragment extends AbsMainActivityFragment implements CabHolde
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean handleSortOrderMenuItem(@NonNull AbsLibraryPagerRecyclerViewCustomGridSizeFragment fragment, @NonNull MenuItem item) {
|
private boolean handleSortOrderMenuItem(@NonNull AbsLibraryPagerRecyclerViewCustomGridSizeFragment fragment, @NonNull MenuItem item) {
|
||||||
String sortOrder = null;
|
SortOrder sortOrder = null;
|
||||||
switch (item.getItemId()) {
|
switch (item.getItemId()) {
|
||||||
case R.id.action_sort_order_ascending:
|
case R.id.action_sort_order_ascending:
|
||||||
sortOrder = SortOrder.ASCENDING;
|
sortOrder = SortOrder.ASCENDING;
|
||||||
|
|
|
||||||
|
|
@ -8,12 +8,14 @@ import androidx.annotation.NonNull;
|
||||||
import androidx.recyclerview.widget.RecyclerView;
|
import androidx.recyclerview.widget.RecyclerView;
|
||||||
|
|
||||||
import com.dkanada.gramophone.R;
|
import com.dkanada.gramophone.R;
|
||||||
|
import com.dkanada.gramophone.model.SortMethod;
|
||||||
|
import com.dkanada.gramophone.model.SortOrder;
|
||||||
import com.dkanada.gramophone.util.Util;
|
import com.dkanada.gramophone.util.Util;
|
||||||
|
|
||||||
public abstract class AbsLibraryPagerRecyclerViewCustomGridSizeFragment<A extends RecyclerView.Adapter, L extends RecyclerView.LayoutManager, Q> extends AbsLibraryPagerRecyclerViewFragment<A, L, Q> {
|
public abstract class AbsLibraryPagerRecyclerViewCustomGridSizeFragment<A extends RecyclerView.Adapter, L extends RecyclerView.LayoutManager, Q> extends AbsLibraryPagerRecyclerViewFragment<A, L, Q> {
|
||||||
private int gridSize;
|
private int gridSize;
|
||||||
private String sortMethod;
|
private SortMethod sortMethod;
|
||||||
private String sortOrder;
|
private SortOrder sortOrder;
|
||||||
|
|
||||||
private boolean usePaletteInitialized;
|
private boolean usePaletteInitialized;
|
||||||
private boolean usePalette;
|
private boolean usePalette;
|
||||||
|
|
@ -48,7 +50,7 @@ public abstract class AbsLibraryPagerRecyclerViewCustomGridSizeFragment<A extend
|
||||||
return usePalette;
|
return usePalette;
|
||||||
}
|
}
|
||||||
|
|
||||||
public final String getSortMethod() {
|
public final SortMethod getSortMethod() {
|
||||||
if (sortMethod == null) {
|
if (sortMethod == null) {
|
||||||
sortMethod = loadSortMethod();
|
sortMethod = loadSortMethod();
|
||||||
}
|
}
|
||||||
|
|
@ -56,7 +58,7 @@ public abstract class AbsLibraryPagerRecyclerViewCustomGridSizeFragment<A extend
|
||||||
return sortMethod;
|
return sortMethod;
|
||||||
}
|
}
|
||||||
|
|
||||||
public final String getSortOrder() {
|
public final SortOrder getSortOrder() {
|
||||||
if (sortOrder == null) {
|
if (sortOrder == null) {
|
||||||
sortOrder = loadSortOrder();
|
sortOrder = loadSortOrder();
|
||||||
}
|
}
|
||||||
|
|
@ -88,14 +90,14 @@ public abstract class AbsLibraryPagerRecyclerViewCustomGridSizeFragment<A extend
|
||||||
setUsePalette(usePalette);
|
setUsePalette(usePalette);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setAndSaveSortMethod(final String sortMethod) {
|
public void setAndSaveSortMethod(final SortMethod sortMethod) {
|
||||||
this.sortMethod = sortMethod;
|
this.sortMethod = sortMethod;
|
||||||
saveSortMethod(sortMethod);
|
saveSortMethod(sortMethod);
|
||||||
setSortMethod(sortMethod);
|
setSortMethod(sortMethod);
|
||||||
invalidateAdapter();
|
invalidateAdapter();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setAndSaveSortOrder(final String sortOrder) {
|
public void setAndSaveSortOrder(final SortOrder sortOrder) {
|
||||||
this.sortOrder = sortOrder;
|
this.sortOrder = sortOrder;
|
||||||
saveSortOrder(sortOrder);
|
saveSortOrder(sortOrder);
|
||||||
setSortOrder(sortOrder);
|
setSortOrder(sortOrder);
|
||||||
|
|
@ -157,17 +159,17 @@ public abstract class AbsLibraryPagerRecyclerViewCustomGridSizeFragment<A extend
|
||||||
|
|
||||||
protected abstract void setGridSize(int gridSize);
|
protected abstract void setGridSize(int gridSize);
|
||||||
|
|
||||||
protected abstract String loadSortMethod();
|
protected abstract SortMethod loadSortMethod();
|
||||||
|
|
||||||
protected abstract void saveSortMethod(String sortMethod);
|
protected abstract void saveSortMethod(SortMethod sortMethod);
|
||||||
|
|
||||||
protected abstract void setSortMethod(String sortMethod);
|
protected abstract void setSortMethod(SortMethod sortMethod);
|
||||||
|
|
||||||
protected abstract String loadSortOrder();
|
protected abstract SortOrder loadSortOrder();
|
||||||
|
|
||||||
protected abstract void saveSortOrder(String sortOrder);
|
protected abstract void saveSortOrder(SortOrder sortOrder);
|
||||||
|
|
||||||
protected abstract void setSortOrder(String sortOrder);
|
protected abstract void setSortOrder(SortOrder sortOrder);
|
||||||
|
|
||||||
protected int getMaxGridSizeForList() {
|
protected int getMaxGridSizeForList() {
|
||||||
if (isLandscape()) {
|
if (isLandscape()) {
|
||||||
|
|
|
||||||
|
|
@ -9,6 +9,8 @@ import com.dkanada.gramophone.App;
|
||||||
import com.dkanada.gramophone.R;
|
import com.dkanada.gramophone.R;
|
||||||
import com.dkanada.gramophone.adapter.album.AlbumAdapter;
|
import com.dkanada.gramophone.adapter.album.AlbumAdapter;
|
||||||
import com.dkanada.gramophone.model.Album;
|
import com.dkanada.gramophone.model.Album;
|
||||||
|
import com.dkanada.gramophone.model.SortMethod;
|
||||||
|
import com.dkanada.gramophone.model.SortOrder;
|
||||||
import com.dkanada.gramophone.util.PreferenceUtil;
|
import com.dkanada.gramophone.util.PreferenceUtil;
|
||||||
import com.dkanada.gramophone.util.QueryUtil;
|
import com.dkanada.gramophone.util.QueryUtil;
|
||||||
|
|
||||||
|
|
@ -54,8 +56,8 @@ public class AlbumsFragment extends AbsLibraryPagerRecyclerViewCustomGridSizeFra
|
||||||
query.setStartIndex(getAdapter().getItemCount());
|
query.setStartIndex(getAdapter().getItemCount());
|
||||||
query.setParentId(QueryUtil.currentLibrary.getId());
|
query.setParentId(QueryUtil.currentLibrary.getId());
|
||||||
|
|
||||||
QueryUtil.applySortMethod(query, PreferenceUtil.getInstance(App.getInstance()).getAlbumSortMethod());
|
query.setSortBy(new String[]{PreferenceUtil.getInstance(App.getInstance()).getAlbumSortMethod().getApi()});
|
||||||
QueryUtil.applySortOrder(query, PreferenceUtil.getInstance(App.getInstance()).getAlbumSortOrder());
|
query.setSortOrder(PreferenceUtil.getInstance(App.getInstance()).getAlbumSortOrder().getApi());
|
||||||
return query;
|
return query;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -89,31 +91,31 @@ public class AlbumsFragment extends AbsLibraryPagerRecyclerViewCustomGridSizeFra
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected String loadSortMethod() {
|
protected SortMethod loadSortMethod() {
|
||||||
return PreferenceUtil.getInstance(getActivity()).getAlbumSortMethod();
|
return PreferenceUtil.getInstance(getActivity()).getAlbumSortMethod();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void saveSortMethod(String sortMethod) {
|
protected void saveSortMethod(SortMethod sortMethod) {
|
||||||
PreferenceUtil.getInstance(getActivity()).setAlbumSortMethod(sortMethod);
|
PreferenceUtil.getInstance(getActivity()).setAlbumSortMethod(sortMethod);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void setSortMethod(String sortMethod) {
|
protected void setSortMethod(SortMethod sortMethod) {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected String loadSortOrder() {
|
protected SortOrder loadSortOrder() {
|
||||||
return PreferenceUtil.getInstance(getActivity()).getAlbumSortOrder();
|
return PreferenceUtil.getInstance(getActivity()).getAlbumSortOrder();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void saveSortOrder(String sortOrder) {
|
protected void saveSortOrder(SortOrder sortOrder) {
|
||||||
PreferenceUtil.getInstance(getActivity()).setAlbumSortOrder(sortOrder);
|
PreferenceUtil.getInstance(getActivity()).setAlbumSortOrder(sortOrder);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void setSortOrder(String sortOrder) {
|
protected void setSortOrder(SortOrder sortOrder) {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
||||||
|
|
@ -9,8 +9,8 @@ import androidx.recyclerview.widget.GridLayoutManager;
|
||||||
import com.dkanada.gramophone.App;
|
import com.dkanada.gramophone.App;
|
||||||
import com.dkanada.gramophone.R;
|
import com.dkanada.gramophone.R;
|
||||||
import com.dkanada.gramophone.adapter.artist.ArtistAdapter;
|
import com.dkanada.gramophone.adapter.artist.ArtistAdapter;
|
||||||
import com.dkanada.gramophone.helper.sort.SortMethod;
|
import com.dkanada.gramophone.model.SortMethod;
|
||||||
import com.dkanada.gramophone.helper.sort.SortOrder;
|
import com.dkanada.gramophone.model.SortOrder;
|
||||||
import com.dkanada.gramophone.model.Artist;
|
import com.dkanada.gramophone.model.Artist;
|
||||||
import com.dkanada.gramophone.util.PreferenceUtil;
|
import com.dkanada.gramophone.util.PreferenceUtil;
|
||||||
import com.dkanada.gramophone.util.QueryUtil;
|
import com.dkanada.gramophone.util.QueryUtil;
|
||||||
|
|
@ -101,31 +101,31 @@ public class ArtistsFragment extends AbsLibraryPagerRecyclerViewCustomGridSizeFr
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected String loadSortMethod() {
|
protected SortMethod loadSortMethod() {
|
||||||
return SortMethod.NAME;
|
return SortMethod.NAME;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void saveSortMethod(String sortMethod) {
|
protected void saveSortMethod(SortMethod sortMethod) {
|
||||||
// not supported through API
|
// not supported through API
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void setSortMethod(String sortMethod) {
|
protected void setSortMethod(SortMethod sortMethod) {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected String loadSortOrder() {
|
protected SortOrder loadSortOrder() {
|
||||||
return SortOrder.ASCENDING;
|
return SortOrder.ASCENDING;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void saveSortOrder(String sortOrder) {
|
protected void saveSortOrder(SortOrder sortOrder) {
|
||||||
// not supported through API
|
// not supported through API
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void setSortOrder(String sortOrder) {
|
protected void setSortOrder(SortOrder sortOrder) {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
||||||
|
|
@ -12,19 +12,11 @@ public class FavoritesFragment extends SongsFragment {
|
||||||
@NonNull
|
@NonNull
|
||||||
@Override
|
@Override
|
||||||
protected ItemQuery createQuery() {
|
protected ItemQuery createQuery() {
|
||||||
ItemQuery query = new ItemQuery();
|
ItemQuery query = super.createQuery();
|
||||||
|
|
||||||
query.setIncludeItemTypes(new String[]{"Audio"});
|
// the only difference from the songs fragment is the favorite filter
|
||||||
query.setFields(new ItemFields[]{ItemFields.MediaSources});
|
|
||||||
query.setUserId(App.getApiClient().getCurrentUserId());
|
|
||||||
query.setRecursive(true);
|
|
||||||
query.setLimit(PreferenceUtil.getInstance(App.getInstance()).getPageSize());
|
|
||||||
query.setStartIndex(getAdapter().getItemCount());
|
|
||||||
query.setParentId(QueryUtil.currentLibrary.getId());
|
|
||||||
query.setFilters(new ItemFilter[]{ItemFilter.IsFavorite});
|
query.setFilters(new ItemFilter[]{ItemFilter.IsFavorite});
|
||||||
|
|
||||||
QueryUtil.applySortMethod(query, PreferenceUtil.getInstance(App.getInstance()).getSongSortMethod());
|
|
||||||
QueryUtil.applySortOrder(query, PreferenceUtil.getInstance(App.getInstance()).getSongSortOrder());
|
|
||||||
return query;
|
return query;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -10,6 +10,8 @@ import com.dkanada.gramophone.R;
|
||||||
import com.dkanada.gramophone.adapter.song.ShuffleButtonSongAdapter;
|
import com.dkanada.gramophone.adapter.song.ShuffleButtonSongAdapter;
|
||||||
import com.dkanada.gramophone.adapter.song.SongAdapter;
|
import com.dkanada.gramophone.adapter.song.SongAdapter;
|
||||||
import com.dkanada.gramophone.model.Song;
|
import com.dkanada.gramophone.model.Song;
|
||||||
|
import com.dkanada.gramophone.model.SortMethod;
|
||||||
|
import com.dkanada.gramophone.model.SortOrder;
|
||||||
import com.dkanada.gramophone.util.PreferenceUtil;
|
import com.dkanada.gramophone.util.PreferenceUtil;
|
||||||
import com.dkanada.gramophone.util.QueryUtil;
|
import com.dkanada.gramophone.util.QueryUtil;
|
||||||
|
|
||||||
|
|
@ -76,8 +78,8 @@ public class SongsFragment extends AbsLibraryPagerRecyclerViewCustomGridSizeFrag
|
||||||
query.setStartIndex(getAdapter().getItemCount());
|
query.setStartIndex(getAdapter().getItemCount());
|
||||||
query.setParentId(QueryUtil.currentLibrary.getId());
|
query.setParentId(QueryUtil.currentLibrary.getId());
|
||||||
|
|
||||||
QueryUtil.applySortMethod(query, PreferenceUtil.getInstance(App.getInstance()).getSongSortMethod());
|
query.setSortBy(new String[]{PreferenceUtil.getInstance(App.getInstance()).getSongSortMethod().getApi()});
|
||||||
QueryUtil.applySortOrder(query, PreferenceUtil.getInstance(App.getInstance()).getSongSortOrder());
|
query.setSortOrder(PreferenceUtil.getInstance(App.getInstance()).getSongSortOrder().getApi());
|
||||||
return query;
|
return query;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -112,31 +114,31 @@ public class SongsFragment extends AbsLibraryPagerRecyclerViewCustomGridSizeFrag
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected String loadSortMethod() {
|
protected SortMethod loadSortMethod() {
|
||||||
return PreferenceUtil.getInstance(getActivity()).getSongSortMethod();
|
return PreferenceUtil.getInstance(getActivity()).getSongSortMethod();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void saveSortMethod(String sortMethod) {
|
protected void saveSortMethod(SortMethod sortMethod) {
|
||||||
PreferenceUtil.getInstance(getActivity()).setSongSortMethod(sortMethod);
|
PreferenceUtil.getInstance(getActivity()).setSongSortMethod(sortMethod);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void setSortMethod(String sortMethod) {
|
protected void setSortMethod(SortMethod sortMethod) {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected String loadSortOrder() {
|
protected SortOrder loadSortOrder() {
|
||||||
return PreferenceUtil.getInstance(getActivity()).getSongSortOrder();
|
return PreferenceUtil.getInstance(getActivity()).getSongSortOrder();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void saveSortOrder(String sortOrder) {
|
protected void saveSortOrder(SortOrder sortOrder) {
|
||||||
PreferenceUtil.getInstance(getActivity()).setSongSortOrder(sortOrder);
|
PreferenceUtil.getInstance(getActivity()).setSongSortOrder(sortOrder);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void setSortOrder(String sortOrder) {
|
protected void setSortOrder(SortOrder sortOrder) {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
||||||
|
|
@ -1,11 +0,0 @@
|
||||||
package com.dkanada.gramophone.helper.sort;
|
|
||||||
|
|
||||||
public class SortMethod {
|
|
||||||
public static final String NAME = "NAME";
|
|
||||||
public static final String ALBUM = "ALBUM";
|
|
||||||
public static final String ARTIST = "ARTIST";
|
|
||||||
public static final String YEAR = "YEAR";
|
|
||||||
public static final String ADDED = "ADDED";
|
|
||||||
public static final String RANDOM = "RANDOM";
|
|
||||||
public static final String COUNT = "COUNT";
|
|
||||||
}
|
|
||||||
|
|
@ -1,6 +0,0 @@
|
||||||
package com.dkanada.gramophone.helper.sort;
|
|
||||||
|
|
||||||
public class SortOrder {
|
|
||||||
public static final String ASCENDING = "ASCENDING";
|
|
||||||
public static final String DESCENDING = "DESCENDING";
|
|
||||||
}
|
|
||||||
11
app/src/main/java/com/dkanada/gramophone/model/SortMethod.kt
Normal file
11
app/src/main/java/com/dkanada/gramophone/model/SortMethod.kt
Normal file
|
|
@ -0,0 +1,11 @@
|
||||||
|
package com.dkanada.gramophone.model
|
||||||
|
|
||||||
|
enum class SortMethod(val api: String) {
|
||||||
|
NAME("SortName"),
|
||||||
|
ALBUM("Album"),
|
||||||
|
ARTIST("AlbumArtist"),
|
||||||
|
YEAR("ProductionYear"),
|
||||||
|
ADDED("DateCreated"),
|
||||||
|
RANDOM("Random"),
|
||||||
|
COUNT("PlayCount");
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,8 @@
|
||||||
|
package com.dkanada.gramophone.model
|
||||||
|
|
||||||
|
import org.jellyfin.apiclient.model.entities.SortOrder as Order
|
||||||
|
|
||||||
|
enum class SortOrder(val api: Order) {
|
||||||
|
ASCENDING(Order.Ascending),
|
||||||
|
DESCENDING(Order.Descending);
|
||||||
|
}
|
||||||
|
|
@ -11,8 +11,8 @@ import com.google.gson.JsonSyntaxException;
|
||||||
import com.google.gson.reflect.TypeToken;
|
import com.google.gson.reflect.TypeToken;
|
||||||
import com.dkanada.gramophone.model.Theme;
|
import com.dkanada.gramophone.model.Theme;
|
||||||
import com.dkanada.gramophone.R;
|
import com.dkanada.gramophone.R;
|
||||||
import com.dkanada.gramophone.helper.sort.SortMethod;
|
import com.dkanada.gramophone.model.SortMethod;
|
||||||
import com.dkanada.gramophone.helper.sort.SortOrder;
|
import com.dkanada.gramophone.model.SortOrder;
|
||||||
import com.dkanada.gramophone.model.CategoryInfo;
|
import com.dkanada.gramophone.model.CategoryInfo;
|
||||||
import com.dkanada.gramophone.model.Codec;
|
import com.dkanada.gramophone.model.Codec;
|
||||||
import com.dkanada.gramophone.interfaces.base.PreferenceMigration;
|
import com.dkanada.gramophone.interfaces.base.PreferenceMigration;
|
||||||
|
|
@ -227,43 +227,43 @@ public final class PreferenceUtil {
|
||||||
return mPreferences.getBoolean(BLUR_ALBUM_COVER, true);
|
return mPreferences.getBoolean(BLUR_ALBUM_COVER, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
public final String getAlbumSortOrder() {
|
public final SortOrder getAlbumSortOrder() {
|
||||||
return mPreferences.getString(ALBUM_SORT_ORDER, SortOrder.DESCENDING);
|
return SortOrder.valueOf(mPreferences.getString(ALBUM_SORT_ORDER, SortOrder.DESCENDING.toString()));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setAlbumSortOrder(final String sortOrder) {
|
public void setAlbumSortOrder(SortOrder sortOrder) {
|
||||||
final SharedPreferences.Editor editor = mPreferences.edit();
|
final SharedPreferences.Editor editor = mPreferences.edit();
|
||||||
editor.putString(ALBUM_SORT_ORDER, sortOrder);
|
editor.putString(ALBUM_SORT_ORDER, sortOrder.toString());
|
||||||
editor.apply();
|
editor.apply();
|
||||||
}
|
}
|
||||||
|
|
||||||
public final String getSongSortOrder() {
|
public final SortOrder getSongSortOrder() {
|
||||||
return mPreferences.getString(SONG_SORT_ORDER, SortOrder.DESCENDING);
|
return SortOrder.valueOf(mPreferences.getString(SONG_SORT_ORDER, SortOrder.DESCENDING.toString()));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setSongSortOrder(final String sortOrder) {
|
public void setSongSortOrder(SortOrder sortOrder) {
|
||||||
final SharedPreferences.Editor editor = mPreferences.edit();
|
final SharedPreferences.Editor editor = mPreferences.edit();
|
||||||
editor.putString(SONG_SORT_ORDER, sortOrder);
|
editor.putString(SONG_SORT_ORDER, sortOrder.toString());
|
||||||
editor.apply();
|
editor.apply();
|
||||||
}
|
}
|
||||||
|
|
||||||
public final String getAlbumSortMethod() {
|
public final SortMethod getAlbumSortMethod() {
|
||||||
return mPreferences.getString(ALBUM_SORT_METHOD, SortMethod.RANDOM);
|
return SortMethod.valueOf(mPreferences.getString(ALBUM_SORT_METHOD, SortMethod.RANDOM.toString()));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setAlbumSortMethod(final String sortMethod) {
|
public void setAlbumSortMethod(SortMethod sortMethod) {
|
||||||
final SharedPreferences.Editor editor = mPreferences.edit();
|
final SharedPreferences.Editor editor = mPreferences.edit();
|
||||||
editor.putString(ALBUM_SORT_METHOD, sortMethod);
|
editor.putString(ALBUM_SORT_METHOD, sortMethod.toString());
|
||||||
editor.apply();
|
editor.apply();
|
||||||
}
|
}
|
||||||
|
|
||||||
public final String getSongSortMethod() {
|
public final SortMethod getSongSortMethod() {
|
||||||
return mPreferences.getString(SONG_SORT_METHOD, SortMethod.RANDOM);
|
return SortMethod.valueOf(mPreferences.getString(SONG_SORT_METHOD, SortMethod.RANDOM.toString()));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setSongSortMethod(final String sortMethod) {
|
public void setSongSortMethod(SortMethod sortMethod) {
|
||||||
final SharedPreferences.Editor editor = mPreferences.edit();
|
final SharedPreferences.Editor editor = mPreferences.edit();
|
||||||
editor.putString(SONG_SORT_METHOD, sortMethod);
|
editor.putString(SONG_SORT_METHOD, sortMethod.toString());
|
||||||
editor.apply();
|
editor.apply();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,6 @@
|
||||||
package com.dkanada.gramophone.util;
|
package com.dkanada.gramophone.util;
|
||||||
|
|
||||||
import com.dkanada.gramophone.App;
|
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.interfaces.MediaCallback;
|
||||||
import com.dkanada.gramophone.model.Album;
|
import com.dkanada.gramophone.model.Album;
|
||||||
import com.dkanada.gramophone.model.Artist;
|
import com.dkanada.gramophone.model.Artist;
|
||||||
|
|
@ -121,7 +119,6 @@ public class QueryUtil {
|
||||||
public static void getAlbums(ItemQuery query, MediaCallback<Album> callback) {
|
public static void getAlbums(ItemQuery query, MediaCallback<Album> callback) {
|
||||||
query.setIncludeItemTypes(new String[]{"MusicAlbum"});
|
query.setIncludeItemTypes(new String[]{"MusicAlbum"});
|
||||||
applyProperties(query);
|
applyProperties(query);
|
||||||
applySortMethod(query, PreferenceUtil.getInstance(App.getInstance()).getAlbumSortMethod());
|
|
||||||
App.getApiClient().GetItemsAsync(query, new Response<ItemsResult>() {
|
App.getApiClient().GetItemsAsync(query, new Response<ItemsResult>() {
|
||||||
@Override
|
@Override
|
||||||
public void onResponse(ItemsResult result) {
|
public void onResponse(ItemsResult result) {
|
||||||
|
|
@ -165,7 +162,6 @@ public class QueryUtil {
|
||||||
query.setIncludeItemTypes(new String[]{"Audio"});
|
query.setIncludeItemTypes(new String[]{"Audio"});
|
||||||
query.setFields(new ItemFields[]{ItemFields.MediaSources});
|
query.setFields(new ItemFields[]{ItemFields.MediaSources});
|
||||||
applyProperties(query);
|
applyProperties(query);
|
||||||
applySortMethod(query, PreferenceUtil.getInstance(App.getInstance()).getSongSortMethod());
|
|
||||||
App.getApiClient().GetItemsAsync(query, new Response<ItemsResult>() {
|
App.getApiClient().GetItemsAsync(query, new Response<ItemsResult>() {
|
||||||
@Override
|
@Override
|
||||||
public void onResponse(ItemsResult result) {
|
public void onResponse(ItemsResult result) {
|
||||||
|
|
@ -205,44 +201,4 @@ public class QueryUtil {
|
||||||
if (currentLibrary == null || query.getParentId() != null) return;
|
if (currentLibrary == null || query.getParentId() != null) return;
|
||||||
query.setParentId(currentLibrary.getId());
|
query.setParentId(currentLibrary.getId());
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void applySortMethod(ItemQuery query, String method) {
|
|
||||||
// album activity will always sort by track number
|
|
||||||
if (query.getSortBy().length != 0) return;
|
|
||||||
|
|
||||||
switch (method) {
|
|
||||||
case SortMethod.NAME:
|
|
||||||
query.setSortBy(new String[]{"SortName"});
|
|
||||||
break;
|
|
||||||
case SortMethod.ALBUM:
|
|
||||||
query.setSortBy(new String[]{"Album"});
|
|
||||||
break;
|
|
||||||
case SortMethod.ARTIST:
|
|
||||||
query.setSortBy(new String[]{"AlbumArtist"});
|
|
||||||
break;
|
|
||||||
case SortMethod.YEAR:
|
|
||||||
query.setSortBy(new String[]{"ProductionYear"});
|
|
||||||
break;
|
|
||||||
case SortMethod.ADDED:
|
|
||||||
query.setSortBy(new String[]{"DateCreated"});
|
|
||||||
break;
|
|
||||||
case SortMethod.RANDOM:
|
|
||||||
query.setSortBy(new String[]{"Random"});
|
|
||||||
break;
|
|
||||||
case SortMethod.COUNT:
|
|
||||||
query.setSortBy(new String[]{"PlayCount"});
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void applySortOrder(ItemQuery query, String order) {
|
|
||||||
switch (order) {
|
|
||||||
case SortOrder.ASCENDING:
|
|
||||||
query.setSortOrder(org.jellyfin.apiclient.model.entities.SortOrder.Ascending);
|
|
||||||
break;
|
|
||||||
case SortOrder.DESCENDING:
|
|
||||||
query.setSortOrder(org.jellyfin.apiclient.model.entities.SortOrder.Descending);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,8 @@
|
||||||
package com.dkanada.gramophone.util;
|
package com.dkanada.gramophone.util;
|
||||||
|
|
||||||
import com.dkanada.gramophone.App;
|
import com.dkanada.gramophone.App;
|
||||||
import com.dkanada.gramophone.helper.sort.SortMethod;
|
import com.dkanada.gramophone.model.SortMethod;
|
||||||
import com.dkanada.gramophone.helper.sort.SortOrder;
|
import com.dkanada.gramophone.model.SortOrder;
|
||||||
import com.dkanada.gramophone.interfaces.MediaCallback;
|
import com.dkanada.gramophone.interfaces.MediaCallback;
|
||||||
import com.dkanada.gramophone.model.Song;
|
import com.dkanada.gramophone.model.Song;
|
||||||
|
|
||||||
|
|
@ -19,8 +19,8 @@ public class ShortcutUtil {
|
||||||
public static void getFrequent(MediaCallback<Song> callback) {
|
public static void getFrequent(MediaCallback<Song> callback) {
|
||||||
ItemQuery query = new ItemQuery();
|
ItemQuery query = new ItemQuery();
|
||||||
|
|
||||||
QueryUtil.applySortMethod(query, SortMethod.COUNT);
|
query.setSortBy(new String[]{SortMethod.COUNT.getApi()});
|
||||||
QueryUtil.applySortOrder(query, SortOrder.DESCENDING);
|
query.setSortOrder(SortOrder.DESCENDING.getApi());
|
||||||
|
|
||||||
getSongs(query, callback);
|
getSongs(query, callback);
|
||||||
}
|
}
|
||||||
|
|
@ -28,8 +28,8 @@ public class ShortcutUtil {
|
||||||
public static void getLatest(MediaCallback<Song> callback) {
|
public static void getLatest(MediaCallback<Song> callback) {
|
||||||
ItemQuery query = new ItemQuery();
|
ItemQuery query = new ItemQuery();
|
||||||
|
|
||||||
QueryUtil.applySortMethod(query, SortMethod.ADDED);
|
query.setSortBy(new String[]{SortMethod.ADDED.getApi()});
|
||||||
QueryUtil.applySortOrder(query, SortOrder.DESCENDING);
|
query.setSortOrder(SortOrder.DESCENDING.getApi());
|
||||||
|
|
||||||
getSongs(query, callback);
|
getSongs(query, callback);
|
||||||
}
|
}
|
||||||
|
|
@ -37,8 +37,8 @@ public class ShortcutUtil {
|
||||||
public static void getShuffle(MediaCallback<Song> callback) {
|
public static void getShuffle(MediaCallback<Song> callback) {
|
||||||
ItemQuery query = new ItemQuery();
|
ItemQuery query = new ItemQuery();
|
||||||
|
|
||||||
QueryUtil.applySortMethod(query, SortMethod.RANDOM);
|
query.setSortBy(new String[]{SortMethod.RANDOM.getApi()});
|
||||||
QueryUtil.applySortOrder(query, SortOrder.DESCENDING);
|
query.setSortOrder(SortOrder.DESCENDING.getApi());
|
||||||
|
|
||||||
getSongs(query, callback);
|
getSongs(query, callback);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue