use enums for sort method and order

This commit is contained in:
dkanada 2021-05-23 21:52:01 +09:00
commit 85704bb95b
15 changed files with 107 additions and 155 deletions

View file

@ -11,7 +11,6 @@ import android.view.MenuItem;
import android.view.SubMenu;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Toast;
import androidx.fragment.app.Fragment;
import androidx.viewpager.widget.ViewPager;
@ -19,7 +18,6 @@ import androidx.annotation.NonNull;
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;
@ -31,8 +29,8 @@ import com.kabouzeid.appthemehelper.util.ToolbarContentTintHelper;
import com.dkanada.gramophone.R;
import com.dkanada.gramophone.adapter.MusicLibraryPagerAdapter;
import com.dkanada.gramophone.dialogs.CreatePlaylistDialog;
import com.dkanada.gramophone.helper.sort.SortMethod;
import com.dkanada.gramophone.helper.sort.SortOrder;
import com.dkanada.gramophone.model.SortMethod;
import com.dkanada.gramophone.model.SortOrder;
import com.dkanada.gramophone.interfaces.CabHolder;
import com.dkanada.gramophone.activities.MainActivity;
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) {
String currentSortMethod = fragment.getSortMethod();
SortMethod currentSortMethod = fragment.getSortMethod();
sortMethodMenu.clear();
if (fragment instanceof AlbumsFragment) {
@ -357,7 +355,7 @@ public class LibraryFragment extends AbsMainActivityFragment implements CabHolde
.setChecked(currentSortMethod.equals(SortMethod.ADDED));
sortMethodMenu.add(0, R.id.action_sort_method_random, 4, R.string.sort_method_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)
.setChecked(currentSortMethod.equals(SortMethod.NAME));
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) {
String currentSortOrder = fragment.getSortOrder();
SortOrder currentSortOrder = fragment.getSortOrder();
sortOrderMenu.clear();
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) {
String sortMethod = null;
SortMethod sortMethod = null;
switch (item.getItemId()) {
case R.id.action_sort_method_name:
sortMethod = SortMethod.NAME;
@ -420,7 +418,7 @@ public class LibraryFragment extends AbsMainActivityFragment implements CabHolde
}
private boolean handleSortOrderMenuItem(@NonNull AbsLibraryPagerRecyclerViewCustomGridSizeFragment fragment, @NonNull MenuItem item) {
String sortOrder = null;
SortOrder sortOrder = null;
switch (item.getItemId()) {
case R.id.action_sort_order_ascending:
sortOrder = SortOrder.ASCENDING;

View file

@ -8,12 +8,14 @@ import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import com.dkanada.gramophone.R;
import com.dkanada.gramophone.model.SortMethod;
import com.dkanada.gramophone.model.SortOrder;
import com.dkanada.gramophone.util.Util;
public abstract class AbsLibraryPagerRecyclerViewCustomGridSizeFragment<A extends RecyclerView.Adapter, L extends RecyclerView.LayoutManager, Q> extends AbsLibraryPagerRecyclerViewFragment<A, L, Q> {
private int gridSize;
private String sortMethod;
private String sortOrder;
private SortMethod sortMethod;
private SortOrder sortOrder;
private boolean usePaletteInitialized;
private boolean usePalette;
@ -48,7 +50,7 @@ public abstract class AbsLibraryPagerRecyclerViewCustomGridSizeFragment<A extend
return usePalette;
}
public final String getSortMethod() {
public final SortMethod getSortMethod() {
if (sortMethod == null) {
sortMethod = loadSortMethod();
}
@ -56,7 +58,7 @@ public abstract class AbsLibraryPagerRecyclerViewCustomGridSizeFragment<A extend
return sortMethod;
}
public final String getSortOrder() {
public final SortOrder getSortOrder() {
if (sortOrder == null) {
sortOrder = loadSortOrder();
}
@ -88,14 +90,14 @@ public abstract class AbsLibraryPagerRecyclerViewCustomGridSizeFragment<A extend
setUsePalette(usePalette);
}
public void setAndSaveSortMethod(final String sortMethod) {
public void setAndSaveSortMethod(final SortMethod sortMethod) {
this.sortMethod = sortMethod;
saveSortMethod(sortMethod);
setSortMethod(sortMethod);
invalidateAdapter();
}
public void setAndSaveSortOrder(final String sortOrder) {
public void setAndSaveSortOrder(final SortOrder sortOrder) {
this.sortOrder = sortOrder;
saveSortOrder(sortOrder);
setSortOrder(sortOrder);
@ -157,17 +159,17 @@ public abstract class AbsLibraryPagerRecyclerViewCustomGridSizeFragment<A extend
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() {
if (isLandscape()) {

View file

@ -9,6 +9,8 @@ import com.dkanada.gramophone.App;
import com.dkanada.gramophone.R;
import com.dkanada.gramophone.adapter.album.AlbumAdapter;
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.QueryUtil;
@ -54,8 +56,8 @@ public class AlbumsFragment extends AbsLibraryPagerRecyclerViewCustomGridSizeFra
query.setStartIndex(getAdapter().getItemCount());
query.setParentId(QueryUtil.currentLibrary.getId());
QueryUtil.applySortMethod(query, PreferenceUtil.getInstance(App.getInstance()).getAlbumSortMethod());
QueryUtil.applySortOrder(query, PreferenceUtil.getInstance(App.getInstance()).getAlbumSortOrder());
query.setSortBy(new String[]{PreferenceUtil.getInstance(App.getInstance()).getAlbumSortMethod().getApi()});
query.setSortOrder(PreferenceUtil.getInstance(App.getInstance()).getAlbumSortOrder().getApi());
return query;
}
@ -89,31 +91,31 @@ public class AlbumsFragment extends AbsLibraryPagerRecyclerViewCustomGridSizeFra
}
@Override
protected String loadSortMethod() {
protected SortMethod loadSortMethod() {
return PreferenceUtil.getInstance(getActivity()).getAlbumSortMethod();
}
@Override
protected void saveSortMethod(String sortMethod) {
protected void saveSortMethod(SortMethod sortMethod) {
PreferenceUtil.getInstance(getActivity()).setAlbumSortMethod(sortMethod);
}
@Override
protected void setSortMethod(String sortMethod) {
protected void setSortMethod(SortMethod sortMethod) {
}
@Override
protected String loadSortOrder() {
protected SortOrder loadSortOrder() {
return PreferenceUtil.getInstance(getActivity()).getAlbumSortOrder();
}
@Override
protected void saveSortOrder(String sortOrder) {
protected void saveSortOrder(SortOrder sortOrder) {
PreferenceUtil.getInstance(getActivity()).setAlbumSortOrder(sortOrder);
}
@Override
protected void setSortOrder(String sortOrder) {
protected void setSortOrder(SortOrder sortOrder) {
}
@Override

View file

@ -9,8 +9,8 @@ import androidx.recyclerview.widget.GridLayoutManager;
import com.dkanada.gramophone.App;
import com.dkanada.gramophone.R;
import com.dkanada.gramophone.adapter.artist.ArtistAdapter;
import com.dkanada.gramophone.helper.sort.SortMethod;
import com.dkanada.gramophone.helper.sort.SortOrder;
import com.dkanada.gramophone.model.SortMethod;
import com.dkanada.gramophone.model.SortOrder;
import com.dkanada.gramophone.model.Artist;
import com.dkanada.gramophone.util.PreferenceUtil;
import com.dkanada.gramophone.util.QueryUtil;
@ -101,31 +101,31 @@ public class ArtistsFragment extends AbsLibraryPagerRecyclerViewCustomGridSizeFr
}
@Override
protected String loadSortMethod() {
protected SortMethod loadSortMethod() {
return SortMethod.NAME;
}
@Override
protected void saveSortMethod(String sortMethod) {
protected void saveSortMethod(SortMethod sortMethod) {
// not supported through API
}
@Override
protected void setSortMethod(String sortMethod) {
protected void setSortMethod(SortMethod sortMethod) {
}
@Override
protected String loadSortOrder() {
protected SortOrder loadSortOrder() {
return SortOrder.ASCENDING;
}
@Override
protected void saveSortOrder(String sortOrder) {
protected void saveSortOrder(SortOrder sortOrder) {
// not supported through API
}
@Override
protected void setSortOrder(String sortOrder) {
protected void setSortOrder(SortOrder sortOrder) {
}
@Override

View file

@ -12,19 +12,11 @@ public class FavoritesFragment extends SongsFragment {
@NonNull
@Override
protected ItemQuery createQuery() {
ItemQuery query = new ItemQuery();
ItemQuery query = super.createQuery();
query.setIncludeItemTypes(new String[]{"Audio"});
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());
// the only difference from the songs fragment is the favorite filter
query.setFilters(new ItemFilter[]{ItemFilter.IsFavorite});
QueryUtil.applySortMethod(query, PreferenceUtil.getInstance(App.getInstance()).getSongSortMethod());
QueryUtil.applySortOrder(query, PreferenceUtil.getInstance(App.getInstance()).getSongSortOrder());
return query;
}
}

View file

@ -10,6 +10,8 @@ import com.dkanada.gramophone.R;
import com.dkanada.gramophone.adapter.song.ShuffleButtonSongAdapter;
import com.dkanada.gramophone.adapter.song.SongAdapter;
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.QueryUtil;
@ -76,8 +78,8 @@ public class SongsFragment extends AbsLibraryPagerRecyclerViewCustomGridSizeFrag
query.setStartIndex(getAdapter().getItemCount());
query.setParentId(QueryUtil.currentLibrary.getId());
QueryUtil.applySortMethod(query, PreferenceUtil.getInstance(App.getInstance()).getSongSortMethod());
QueryUtil.applySortOrder(query, PreferenceUtil.getInstance(App.getInstance()).getSongSortOrder());
query.setSortBy(new String[]{PreferenceUtil.getInstance(App.getInstance()).getSongSortMethod().getApi()});
query.setSortOrder(PreferenceUtil.getInstance(App.getInstance()).getSongSortOrder().getApi());
return query;
}
@ -112,31 +114,31 @@ public class SongsFragment extends AbsLibraryPagerRecyclerViewCustomGridSizeFrag
}
@Override
protected String loadSortMethod() {
protected SortMethod loadSortMethod() {
return PreferenceUtil.getInstance(getActivity()).getSongSortMethod();
}
@Override
protected void saveSortMethod(String sortMethod) {
protected void saveSortMethod(SortMethod sortMethod) {
PreferenceUtil.getInstance(getActivity()).setSongSortMethod(sortMethod);
}
@Override
protected void setSortMethod(String sortMethod) {
protected void setSortMethod(SortMethod sortMethod) {
}
@Override
protected String loadSortOrder() {
protected SortOrder loadSortOrder() {
return PreferenceUtil.getInstance(getActivity()).getSongSortOrder();
}
@Override
protected void saveSortOrder(String sortOrder) {
protected void saveSortOrder(SortOrder sortOrder) {
PreferenceUtil.getInstance(getActivity()).setSongSortOrder(sortOrder);
}
@Override
protected void setSortOrder(String sortOrder) {
protected void setSortOrder(SortOrder sortOrder) {
}
@Override