use the sort method in server queries

This commit is contained in:
dkanada 2020-05-05 16:41:29 +09:00
commit 821181d819
10 changed files with 76 additions and 36 deletions

View file

@ -188,7 +188,7 @@ public class AlbumAdapter extends AbsMultiSelectAdapter<AlbumAdapter.ViewHolder,
@Override @Override
public String getSectionName(int position) { public String getSectionName(int position) {
@Nullable String sectionName = null; @Nullable String sectionName = null;
switch (PreferenceUtil.getInstance(activity).getAlbumSortOrder()) { switch (PreferenceUtil.getInstance(activity).getAlbumSortMethod()) {
case SortMethod.NAME: case SortMethod.NAME:
sectionName = dataSet.get(position).getTitle(); sectionName = dataSet.get(position).getTitle();
break; break;
@ -198,7 +198,7 @@ public class AlbumAdapter extends AbsMultiSelectAdapter<AlbumAdapter.ViewHolder,
case SortMethod.YEAR: case SortMethod.YEAR:
return MusicUtil.getYearString(dataSet.get(position).getYear()); return MusicUtil.getYearString(dataSet.get(position).getYear());
case SortMethod.RANDOM: case SortMethod.RANDOM:
sectionName = dataSet.get(position).getTitle(); return activity.getResources().getString(R.string.random);
} }
return MusicUtil.getSectionName(sectionName); return MusicUtil.getSectionName(sectionName);

View file

@ -179,13 +179,12 @@ public class ArtistAdapter extends AbsMultiSelectAdapter<ArtistAdapter.ViewHolde
@Override @Override
public String getSectionName(int position) { public String getSectionName(int position) {
@Nullable String sectionName = null; @Nullable String sectionName = null;
switch (PreferenceUtil.getInstance(activity).getArtistSortOrder()) { switch (PreferenceUtil.getInstance(activity).getArtistSortMethod()) {
case SortMethod.NAME: case SortMethod.NAME:
sectionName = dataSet.get(position).getName(); sectionName = dataSet.get(position).getName();
break; break;
case SortMethod.RANDOM: case SortMethod.RANDOM:
sectionName = dataSet.get(position).getName(); return activity.getResources().getString(R.string.random);
break;
} }
return MusicUtil.getSectionName(sectionName); return MusicUtil.getSectionName(sectionName);

View file

@ -190,7 +190,7 @@ public class SongAdapter extends AbsMultiSelectAdapter<SongAdapter.ViewHolder, S
} }
@Nullable String sectionName = null; @Nullable String sectionName = null;
switch (PreferenceUtil.getInstance(activity).getSongSortOrder()) { switch (PreferenceUtil.getInstance(activity).getSongSortMethod()) {
case SortMethod.NAME: case SortMethod.NAME:
sectionName = dataSet.get(position).title; sectionName = dataSet.get(position).title;
break; break;
@ -203,7 +203,7 @@ public class SongAdapter extends AbsMultiSelectAdapter<SongAdapter.ViewHolder, S
case SortMethod.YEAR: case SortMethod.YEAR:
return MusicUtil.getYearString(dataSet.get(position).year); return MusicUtil.getYearString(dataSet.get(position).year);
case SortMethod.RANDOM: case SortMethod.RANDOM:
sectionName = dataSet.get(position).title; return activity.getResources().getString(R.string.random);
} }
return MusicUtil.getSectionName(sectionName); return MusicUtil.getSectionName(sectionName);

View file

@ -349,7 +349,7 @@ public class LibraryFragment extends AbsMainActivityFragment implements CabHolde
} }
private void setUpSortMethodMenu(@NonNull AbsLibraryPagerRecyclerViewCustomGridSizeFragment fragment, @NonNull SubMenu sortOrderMenu) { private void setUpSortMethodMenu(@NonNull AbsLibraryPagerRecyclerViewCustomGridSizeFragment fragment, @NonNull SubMenu sortOrderMenu) {
String currentSortOrder = fragment.getSortOrder(); String currentSortOrder = fragment.getSortMethod();
sortOrderMenu.clear(); sortOrderMenu.clear();
if (fragment instanceof AlbumsFragment) { if (fragment instanceof AlbumsFragment) {
@ -383,7 +383,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(); String currentSortOrder = fragment.getSortMethod();
sortOrderMenu.clear(); sortOrderMenu.clear();
sortOrderMenu.add(0, R.id.action_sort_order_ascending, 0, R.string.sort_order_a_z) sortOrderMenu.add(0, R.id.action_sort_order_ascending, 0, R.string.sort_order_a_z)

View file

@ -11,7 +11,7 @@ import com.kabouzeid.gramophone.util.Util;
public abstract class AbsLibraryPagerRecyclerViewCustomGridSizeFragment<A extends RecyclerView.Adapter, LM extends RecyclerView.LayoutManager> extends AbsLibraryPagerRecyclerViewFragment<A, LM> { public abstract class AbsLibraryPagerRecyclerViewCustomGridSizeFragment<A extends RecyclerView.Adapter, LM extends RecyclerView.LayoutManager> extends AbsLibraryPagerRecyclerViewFragment<A, LM> {
private int gridSize; private int gridSize;
private String sortOrder; private String sortMethod;
private boolean usePaletteInitialized; private boolean usePaletteInitialized;
private boolean usePalette; private boolean usePalette;
@ -46,12 +46,12 @@ public abstract class AbsLibraryPagerRecyclerViewCustomGridSizeFragment<A extend
return usePalette; return usePalette;
} }
public final String getSortOrder() { public final String getSortMethod() {
if (sortOrder == null) { if (sortMethod == null) {
sortOrder = loadSortOrder(); sortMethod = loadSortMethod();
} }
return sortOrder; return sortMethod;
} }
public void setAndSaveGridSize(final int gridSize) { public void setAndSaveGridSize(final int gridSize) {
@ -78,10 +78,10 @@ public abstract class AbsLibraryPagerRecyclerViewCustomGridSizeFragment<A extend
setUsePalette(usePalette); setUsePalette(usePalette);
} }
public void setAndSaveSortOrder(final String sortOrder) { public void setAndSaveSortOrder(final String sortMethod) {
this.sortOrder = sortOrder; this.sortMethod = sortMethod;
saveSortOrder(sortOrder); saveSortMethod(sortMethod);
setSortOrder(sortOrder); setSortMethod(sortMethod);
} }
public boolean canUsePalette() { public boolean canUsePalette() {
@ -137,11 +137,11 @@ public abstract class AbsLibraryPagerRecyclerViewCustomGridSizeFragment<A extend
protected abstract void setGridSize(int gridSize); protected abstract void setGridSize(int gridSize);
protected abstract String loadSortOrder(); protected abstract String loadSortMethod();
protected abstract void saveSortOrder(String sortOrder); protected abstract void saveSortMethod(String sortOrder);
protected abstract void setSortOrder(String sortOrder); protected abstract void setSortMethod(String sortOrder);
protected int getMaxGridSizeForList() { protected int getMaxGridSizeForList() {
if (isLandscape()) { if (isLandscape()) {

View file

@ -52,17 +52,17 @@ public class AlbumsFragment extends AbsLibraryPagerRecyclerViewCustomGridSizeFra
} }
@Override @Override
protected String loadSortOrder() { protected String loadSortMethod() {
return PreferenceUtil.getInstance(getActivity()).getAlbumSortOrder(); return PreferenceUtil.getInstance(getActivity()).getAlbumSortMethod();
} }
@Override @Override
protected void saveSortOrder(String sortOrder) { protected void saveSortMethod(String sortOrder) {
PreferenceUtil.getInstance(getActivity()).setAlbumSortOrder(sortOrder); PreferenceUtil.getInstance(getActivity()).setAlbumSortMethod(sortOrder);
} }
@Override @Override
protected void setSortOrder(String sortOrder) { protected void setSortMethod(String sortOrder) {
} }
@Override @Override

View file

@ -59,17 +59,17 @@ public class ArtistsFragment extends AbsLibraryPagerRecyclerViewCustomGridSizeFr
} }
@Override @Override
protected String loadSortOrder() { protected String loadSortMethod() {
return PreferenceUtil.getInstance(getActivity()).getArtistSortOrder(); return PreferenceUtil.getInstance(getActivity()).getArtistSortMethod();
} }
@Override @Override
protected void saveSortOrder(String sortOrder) { protected void saveSortMethod(String sortMethod) {
PreferenceUtil.getInstance(getActivity()).setArtistSortOrder(sortOrder); PreferenceUtil.getInstance(getActivity()).setArtistSortMethod(sortMethod);
} }
@Override @Override
protected void setSortOrder(String sortOrder) { protected void setSortMethod(String sortOrder) {
} }
@Override @Override

View file

@ -77,17 +77,17 @@ public class SongsFragment extends AbsLibraryPagerRecyclerViewCustomGridSizeFrag
} }
@Override @Override
protected String loadSortOrder() { protected String loadSortMethod() {
return PreferenceUtil.getInstance(getActivity()).getSongSortOrder(); return PreferenceUtil.getInstance(getActivity()).getSongSortMethod();
} }
@Override @Override
protected void saveSortOrder(String sortOrder) { protected void saveSortMethod(String sortOrder) {
PreferenceUtil.getInstance(getActivity()).setSongSortOrder(sortOrder); PreferenceUtil.getInstance(getActivity()).setSongSortMethod(sortOrder);
} }
@Override @Override
protected void setSortOrder(String sortOrder) { protected void setSortMethod(String sortOrder) {
} }
@Override @Override

View file

@ -1,6 +1,7 @@
package com.kabouzeid.gramophone.util; package com.kabouzeid.gramophone.util;
import com.kabouzeid.gramophone.App; import com.kabouzeid.gramophone.App;
import com.kabouzeid.gramophone.helper.sort.SortMethod;
import com.kabouzeid.gramophone.interfaces.MediaCallback; import com.kabouzeid.gramophone.interfaces.MediaCallback;
import com.kabouzeid.gramophone.model.Album; import com.kabouzeid.gramophone.model.Album;
import com.kabouzeid.gramophone.model.Artist; import com.kabouzeid.gramophone.model.Artist;
@ -127,6 +128,7 @@ public class QueryUtil {
query.setUserId(App.getApiClient().getCurrentUserId()); query.setUserId(App.getApiClient().getCurrentUserId());
query.setLimit(100); query.setLimit(100);
query.setRecursive(true); query.setRecursive(true);
applySortMethod(query, PreferenceUtil.getInstance(App.getInstance()).getAlbumSortMethod());
if (currentLibrary != null && query.getParentId() == null) query.setParentId(currentLibrary.getId()); if (currentLibrary != null && query.getParentId() == null) query.setParentId(currentLibrary.getId());
App.getApiClient().GetItemsAsync(query, new Response<ItemsResult>() { App.getApiClient().GetItemsAsync(query, new Response<ItemsResult>() {
@Override @Override
@ -168,6 +170,7 @@ public class QueryUtil {
query.setUserId(App.getApiClient().getCurrentUserId()); query.setUserId(App.getApiClient().getCurrentUserId());
query.setLimit(100); query.setLimit(100);
query.setRecursive(true); query.setRecursive(true);
applySortMethod(query, PreferenceUtil.getInstance(App.getInstance()).getArtistSortMethod());
if (currentLibrary != null && query.getParentId() == null) query.setParentId(currentLibrary.getId()); if (currentLibrary != null && query.getParentId() == null) query.setParentId(currentLibrary.getId());
App.getApiClient().GetAlbumArtistsAsync(query, new Response<ItemsResult>() { App.getApiClient().GetAlbumArtistsAsync(query, new Response<ItemsResult>() {
@Override @Override
@ -208,6 +211,7 @@ public class QueryUtil {
query.setUserId(App.getApiClient().getCurrentUserId()); query.setUserId(App.getApiClient().getCurrentUserId());
query.setLimit(100); query.setLimit(100);
query.setRecursive(true); query.setRecursive(true);
applySortMethod(query, PreferenceUtil.getInstance(App.getInstance()).getSongSortMethod());
if (currentLibrary != null && query.getParentId() == null) query.setParentId(currentLibrary.getId()); if (currentLibrary != null && query.getParentId() == null) query.setParentId(currentLibrary.getId());
App.getApiClient().GetItemsAsync(query, new Response<ItemsResult>() { App.getApiClient().GetItemsAsync(query, new Response<ItemsResult>() {
@Override @Override
@ -226,4 +230,39 @@ public class QueryUtil {
} }
}); });
} }
public static ItemQuery applySortMethod(ItemQuery query, String method) {
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.RANDOM:
query.setSortBy(new String[]{"Random"});
break;
}
return query;
}
public static ArtistsQuery applySortMethod(ArtistsQuery query, String method) {
switch (method) {
case SortMethod.NAME:
query.setSortBy(new String[]{"SortName"});
break;
case SortMethod.RANDOM:
query.setSortBy(new String[]{"Random"});
break;
}
return query;
}
} }

View file

@ -16,6 +16,8 @@
<string name="github" translatable="false">GitHub</string> <string name="github" translatable="false">GitHub</string>
<string name="twitter" translatable="false">Twitter</string> <string name="twitter" translatable="false">Twitter</string>
<string name="random" translatable="false">\?</string>
<string-array name="donation_ids" translatable="false"> <string-array name="donation_ids" translatable="false">
<item>donation_1</item> <item>donation_1</item>
<item>donation_2</item> <item>donation_2</item>