From 01c255abca5e49291e3147ee0a5fe28b8ae180c0 Mon Sep 17 00:00:00 2001 From: Nicholas Narsing Date: Sat, 28 Apr 2018 00:39:35 -0400 Subject: [PATCH 1/8] Set fastscroll section name correctly by sort preference --- .../adapter/album/AlbumAdapter.java | 18 ++++++++++++- .../adapter/artist/ArtistAdapter.java | 12 ++++++++- .../gramophone/adapter/song/SongAdapter.java | 26 ++++++++++++++++++- .../gramophone/helper/SortOrder.java | 6 ++--- 4 files changed, 56 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/com/kabouzeid/gramophone/adapter/album/AlbumAdapter.java b/app/src/main/java/com/kabouzeid/gramophone/adapter/album/AlbumAdapter.java index dfb79b95..eefbbe7a 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/adapter/album/AlbumAdapter.java +++ b/app/src/main/java/com/kabouzeid/gramophone/adapter/album/AlbumAdapter.java @@ -26,6 +26,8 @@ import com.kabouzeid.gramophone.model.Song; import com.kabouzeid.gramophone.util.MusicUtil; import com.kabouzeid.gramophone.util.NavigationUtil; import com.simplecityapps.recyclerview_fastscroll.views.FastScrollRecyclerView; +import com.kabouzeid.gramophone.util.PreferenceUtil; +import com.kabouzeid.gramophone.helper.SortOrder; import java.util.ArrayList; import java.util.List; @@ -186,7 +188,21 @@ public class AlbumAdapter extends AbsMultiSelectAdapter Date: Sat, 28 Apr 2018 02:07:52 -0400 Subject: [PATCH 2/8] Add sort order menu for artist & album --- .../mainactivity/library/LibraryFragment.java | 57 +++++++++++++++++++ ...gerRecyclerViewCustomGridSizeFragment.java | 17 ++++++ .../library/pager/AlbumsFragment.java | 12 ++++ .../library/pager/ArtistsFragment.java | 12 ++++ .../library/pager/SongsFragment.java | 10 ++++ .../gramophone/util/PreferenceUtil.java | 12 ++++ app/src/main/res/menu/menu_main.xml | 7 +++ app/src/main/res/values/ids.xml | 6 ++ app/src/main/res/values/strings.xml | 5 ++ 9 files changed, 138 insertions(+) diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/mainactivity/library/LibraryFragment.java b/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/mainactivity/library/LibraryFragment.java index 4ca97716..572c2bed 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/mainactivity/library/LibraryFragment.java +++ b/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/mainactivity/library/LibraryFragment.java @@ -29,6 +29,7 @@ import com.kabouzeid.gramophone.R; import com.kabouzeid.gramophone.adapter.MusicLibraryPagerAdapter; import com.kabouzeid.gramophone.dialogs.CreatePlaylistDialog; import com.kabouzeid.gramophone.helper.MusicPlayerRemote; +import com.kabouzeid.gramophone.helper.SortOrder; import com.kabouzeid.gramophone.interfaces.CabHolder; import com.kabouzeid.gramophone.loader.SongLoader; import com.kabouzeid.gramophone.ui.activities.MainActivity; @@ -36,6 +37,8 @@ import com.kabouzeid.gramophone.ui.activities.SearchActivity; import com.kabouzeid.gramophone.ui.fragments.mainactivity.AbsMainActivityFragment; import com.kabouzeid.gramophone.ui.fragments.mainactivity.library.pager.AbsLibraryPagerRecyclerViewCustomGridSizeFragment; import com.kabouzeid.gramophone.ui.fragments.mainactivity.library.pager.PlaylistsFragment; +import com.kabouzeid.gramophone.ui.fragments.mainactivity.library.pager.AlbumsFragment; +import com.kabouzeid.gramophone.ui.fragments.mainactivity.library.pager.ArtistsFragment; import com.kabouzeid.gramophone.util.PhonographColorUtil; import com.kabouzeid.gramophone.util.PreferenceUtil; import com.kabouzeid.gramophone.util.Util; @@ -197,6 +200,23 @@ public class LibraryFragment extends AbsMainActivityFragment implements CabHolde menu.findItem(R.id.action_colored_footers).setChecked(absLibraryRecyclerViewCustomGridSizeFragment.usePalette()); menu.findItem(R.id.action_colored_footers).setEnabled(absLibraryRecyclerViewCustomGridSizeFragment.canUsePalette()); + + if (currentFragment instanceof AlbumsFragment) { + SubMenu sortOrderMenu = menu.findItem(R.id.action_sort_order).getSubMenu(); + String currentSortOrder = absLibraryRecyclerViewCustomGridSizeFragment.getSortOrder(); + sortOrderMenu.clear(); + sortOrderMenu.add(0, R.id.action_album_sort_asc, 0, R.string.sort_a_z).setChecked(currentSortOrder == SortOrder.AlbumSortOrder.ALBUM_A_Z); + sortOrderMenu.add(0, R.id.action_album_sort_desc, 1, R.string.sort_z_a).setChecked(currentSortOrder == SortOrder.AlbumSortOrder.ALBUM_Z_A); + sortOrderMenu.add(0, R.id.action_album_sort_artist, 2, R.string.sort_artist).setChecked(currentSortOrder == SortOrder.AlbumSortOrder.ALBUM_ARTIST); + sortOrderMenu.setGroupCheckable(0, true, true); + } else if (currentFragment instanceof ArtistsFragment) { + SubMenu sortOrderMenu = menu.findItem(R.id.action_sort_order).getSubMenu(); + String currentSortOrder = absLibraryRecyclerViewCustomGridSizeFragment.getSortOrder(); + sortOrderMenu.clear(); + sortOrderMenu.add(0, R.id.action_artist_sort_asc, 0, R.string.sort_a_z).setChecked(currentSortOrder == SortOrder.ArtistSortOrder.ARTIST_A_Z); + sortOrderMenu.add(0, R.id.action_artist_sort_desc, 1, R.string.sort_z_a).setChecked(currentSortOrder == SortOrder.ArtistSortOrder.ARTIST_Z_A); + sortOrderMenu.setGroupCheckable(0, true, true); + } } else { menu.removeItem(R.id.action_grid_size); menu.removeItem(R.id.action_colored_footers); @@ -228,6 +248,9 @@ public class LibraryFragment extends AbsMainActivityFragment implements CabHolde if (handleGridSizeMenuItem(absLibraryRecyclerViewCustomGridSizeFragment, item)) { return true; } + if (handleSortOrderMenuItem(absLibraryRecyclerViewCustomGridSizeFragment, item)) { + return true; + } } int id = item.getItemId(); @@ -330,6 +353,40 @@ public class LibraryFragment extends AbsMainActivityFragment implements CabHolde return false; } + private boolean handleSortOrderMenuItem(@NonNull AbsLibraryPagerRecyclerViewCustomGridSizeFragment fragment, @NonNull MenuItem item) { + String sortOrder = null; + if (fragment instanceof AlbumsFragment) { + switch (item.getItemId()) { + case R.id.action_album_sort_asc: + sortOrder = SortOrder.AlbumSortOrder.ALBUM_A_Z; + break; + case R.id.action_album_sort_desc: + sortOrder = SortOrder.AlbumSortOrder.ALBUM_Z_A; + break; + case R.id.action_album_sort_artist: + sortOrder = SortOrder.AlbumSortOrder.ALBUM_ARTIST; + break; + } + } else if (fragment instanceof ArtistsFragment) { + switch (item.getItemId()) { + case R.id.action_artist_sort_asc: + sortOrder = SortOrder.ArtistSortOrder.ARTIST_A_Z; + break; + case R.id.action_artist_sort_desc: + sortOrder = SortOrder.ArtistSortOrder.ARTIST_Z_A; + break; + } + } + + if (sortOrder != null) { + item.setChecked(true); + fragment.setAndSaveSortOrder(sortOrder); + return true; + } + + return false; + } + @Override public boolean handleBackPress() { if (cab != null && cab.isActive()) { diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/mainactivity/library/pager/AbsLibraryPagerRecyclerViewCustomGridSizeFragment.java b/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/mainactivity/library/pager/AbsLibraryPagerRecyclerViewCustomGridSizeFragment.java index 17261755..95078f46 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/mainactivity/library/pager/AbsLibraryPagerRecyclerViewCustomGridSizeFragment.java +++ b/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/mainactivity/library/pager/AbsLibraryPagerRecyclerViewCustomGridSizeFragment.java @@ -14,6 +14,7 @@ import com.kabouzeid.gramophone.util.Util; */ public abstract class AbsLibraryPagerRecyclerViewCustomGridSizeFragment extends AbsLibraryPagerRecyclerViewFragment { private int gridSize; + private String sortOrder; private boolean usePaletteInitialized; private boolean usePalette; @@ -49,6 +50,13 @@ public abstract class AbsLibraryPagerRecyclerViewCustomGridSizeFragment + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 08b52471..789952f1 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -294,4 +294,9 @@ Library categories Configure visibility and order of library categories. You have to select at least one category. + Sort order + Ascending + Descending + Artist + Album From 3b62a4578f208fb4f1af0bc6570d0035b0f9008d Mon Sep 17 00:00:00 2001 From: Nicholas Narsing Date: Sat, 28 Apr 2018 11:07:05 -0400 Subject: [PATCH 3/8] Change album,artist sort; fix menu selection bug --- .../gramophone/helper/SortOrder.java | 3 +- .../mainactivity/library/LibraryFragment.java | 39 +++++++++++-------- 2 files changed, 25 insertions(+), 17 deletions(-) diff --git a/app/src/main/java/com/kabouzeid/gramophone/helper/SortOrder.java b/app/src/main/java/com/kabouzeid/gramophone/helper/SortOrder.java index 9736c206..6226ae24 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/helper/SortOrder.java +++ b/app/src/main/java/com/kabouzeid/gramophone/helper/SortOrder.java @@ -60,7 +60,8 @@ public final class SortOrder { + " DESC"; /* Album sort order artist */ - String ALBUM_ARTIST = MediaStore.Audio.Artists.DEFAULT_SORT_ORDER; + String ALBUM_ARTIST = MediaStore.Audio.Artists.DEFAULT_SORT_ORDER + + ", " + MediaStore.Audio.Albums.DEFAULT_SORT_ORDER; /* Album sort order year */ String ALBUM_YEAR = MediaStore.Audio.Albums.FIRST_YEAR + " DESC"; diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/mainactivity/library/LibraryFragment.java b/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/mainactivity/library/LibraryFragment.java index 572c2bed..45d22e65 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/mainactivity/library/LibraryFragment.java +++ b/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/mainactivity/library/LibraryFragment.java @@ -201,25 +201,11 @@ public class LibraryFragment extends AbsMainActivityFragment implements CabHolde menu.findItem(R.id.action_colored_footers).setChecked(absLibraryRecyclerViewCustomGridSizeFragment.usePalette()); menu.findItem(R.id.action_colored_footers).setEnabled(absLibraryRecyclerViewCustomGridSizeFragment.canUsePalette()); - if (currentFragment instanceof AlbumsFragment) { - SubMenu sortOrderMenu = menu.findItem(R.id.action_sort_order).getSubMenu(); - String currentSortOrder = absLibraryRecyclerViewCustomGridSizeFragment.getSortOrder(); - sortOrderMenu.clear(); - sortOrderMenu.add(0, R.id.action_album_sort_asc, 0, R.string.sort_a_z).setChecked(currentSortOrder == SortOrder.AlbumSortOrder.ALBUM_A_Z); - sortOrderMenu.add(0, R.id.action_album_sort_desc, 1, R.string.sort_z_a).setChecked(currentSortOrder == SortOrder.AlbumSortOrder.ALBUM_Z_A); - sortOrderMenu.add(0, R.id.action_album_sort_artist, 2, R.string.sort_artist).setChecked(currentSortOrder == SortOrder.AlbumSortOrder.ALBUM_ARTIST); - sortOrderMenu.setGroupCheckable(0, true, true); - } else if (currentFragment instanceof ArtistsFragment) { - SubMenu sortOrderMenu = menu.findItem(R.id.action_sort_order).getSubMenu(); - String currentSortOrder = absLibraryRecyclerViewCustomGridSizeFragment.getSortOrder(); - sortOrderMenu.clear(); - sortOrderMenu.add(0, R.id.action_artist_sort_asc, 0, R.string.sort_a_z).setChecked(currentSortOrder == SortOrder.ArtistSortOrder.ARTIST_A_Z); - sortOrderMenu.add(0, R.id.action_artist_sort_desc, 1, R.string.sort_z_a).setChecked(currentSortOrder == SortOrder.ArtistSortOrder.ARTIST_Z_A); - sortOrderMenu.setGroupCheckable(0, true, true); - } + setUpSortOrderMenu(absLibraryRecyclerViewCustomGridSizeFragment, menu.findItem(R.id.action_sort_order).getSubMenu()); } else { menu.removeItem(R.id.action_grid_size); menu.removeItem(R.id.action_colored_footers); + menu.removeItem(R.id.action_sort_order); } Activity activity = getActivity(); if (activity == null) return; @@ -353,6 +339,27 @@ public class LibraryFragment extends AbsMainActivityFragment implements CabHolde return false; } + private void setUpSortOrderMenu(@NonNull AbsLibraryPagerRecyclerViewCustomGridSizeFragment fragment, @NonNull SubMenu sortOrderMenu) { + String currentSortOrder = fragment.getSortOrder(); + sortOrderMenu.clear(); + + if (fragment instanceof AlbumsFragment) { + sortOrderMenu.add(0, R.id.action_album_sort_asc, 0, R.string.sort_a_z) + .setChecked(currentSortOrder.equals(SortOrder.AlbumSortOrder.ALBUM_A_Z)); + sortOrderMenu.add(0, R.id.action_album_sort_desc, 1, R.string.sort_z_a) + .setChecked(currentSortOrder.equals(SortOrder.AlbumSortOrder.ALBUM_Z_A)); + sortOrderMenu.add(0, R.id.action_album_sort_artist, 2, R.string.sort_artist) + .setChecked(currentSortOrder.equals(SortOrder.AlbumSortOrder.ALBUM_ARTIST)); + } else if (fragment instanceof ArtistsFragment) { + sortOrderMenu.add(0, R.id.action_artist_sort_asc, 0, R.string.sort_a_z) + .setChecked(currentSortOrder.equals(SortOrder.ArtistSortOrder.ARTIST_A_Z)); + sortOrderMenu.add(0, R.id.action_artist_sort_desc, 1, R.string.sort_z_a) + .setChecked(currentSortOrder.equals(SortOrder.ArtistSortOrder.ARTIST_Z_A)); + } + + sortOrderMenu.setGroupCheckable(0, true, true); + } + private boolean handleSortOrderMenuItem(@NonNull AbsLibraryPagerRecyclerViewCustomGridSizeFragment fragment, @NonNull MenuItem item) { String sortOrder = null; if (fragment instanceof AlbumsFragment) { From 60cb868beb1803e2ecb80a815a4659249ef311cc Mon Sep 17 00:00:00 2001 From: Nicholas Narsing Date: Sat, 28 Apr 2018 11:47:05 -0400 Subject: [PATCH 4/8] Support song ordering; add/fix album year sort --- .../adapter/album/AlbumAdapter.java | 3 +- .../gramophone/adapter/song/SongAdapter.java | 32 ++++++++--------- .../gramophone/helper/SortOrder.java | 3 +- .../mainactivity/library/LibraryFragment.java | 35 +++++++++++++++++++ .../library/pager/SongsFragment.java | 4 ++- .../gramophone/util/PreferenceUtil.java | 6 ++++ app/src/main/res/values/ids.xml | 6 ++++ app/src/main/res/values/strings.xml | 1 + 8 files changed, 68 insertions(+), 22 deletions(-) diff --git a/app/src/main/java/com/kabouzeid/gramophone/adapter/album/AlbumAdapter.java b/app/src/main/java/com/kabouzeid/gramophone/adapter/album/AlbumAdapter.java index eefbbe7a..8fc86c44 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/adapter/album/AlbumAdapter.java +++ b/app/src/main/java/com/kabouzeid/gramophone/adapter/album/AlbumAdapter.java @@ -198,8 +198,7 @@ public class AlbumAdapter extends AbsMultiSelectAdapter + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 789952f1..727ab34e 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -299,4 +299,5 @@ Descending Artist Album + Year From 83c9e941adb7dd386bfdd13d5e21eb7b052896f7 Mon Sep 17 00:00:00 2001 From: Karim Abou Zeid Date: Sun, 29 Apr 2018 22:39:27 +0200 Subject: [PATCH 5/8] Rename string identifier --- app/src/main/res/menu/menu_main.xml | 2 +- app/src/main/res/values/strings.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/src/main/res/menu/menu_main.xml b/app/src/main/res/menu/menu_main.xml index 39396fdf..0f41b280 100644 --- a/app/src/main/res/menu/menu_main.xml +++ b/app/src/main/res/menu/menu_main.xml @@ -52,7 +52,7 @@ + android:title="@string/action_sort_order"> diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 3e7bbe41..6696f524 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -295,7 +295,7 @@ Library categories Configure visibility and order of library categories. You have to select at least one category. - Sort order + Sort order Ascending Descending Artist From 2fe07913ac85d3f1a1c1207ce12f069b16db2e62 Mon Sep 17 00:00:00 2001 From: Karim Abou Zeid Date: Sun, 29 Apr 2018 23:19:50 +0200 Subject: [PATCH 6/8] Refactoring of some names --- .../mainactivity/library/LibraryFragment.java | 46 +++++++++---------- ...gerRecyclerViewCustomGridSizeFragment.java | 3 ++ .../library/pager/AlbumsFragment.java | 7 ++- .../library/pager/ArtistsFragment.java | 7 ++- .../library/pager/SongsFragment.java | 7 ++- .../gramophone/util/PreferenceUtil.java | 6 +-- app/src/main/res/values/ids.xml | 22 ++++----- app/src/main/res/values/strings.xml | 10 ++-- 8 files changed, 60 insertions(+), 48 deletions(-) diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/mainactivity/library/LibraryFragment.java b/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/mainactivity/library/LibraryFragment.java index ec8b42a9..6991be37 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/mainactivity/library/LibraryFragment.java +++ b/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/mainactivity/library/LibraryFragment.java @@ -36,9 +36,9 @@ import com.kabouzeid.gramophone.ui.activities.MainActivity; import com.kabouzeid.gramophone.ui.activities.SearchActivity; import com.kabouzeid.gramophone.ui.fragments.mainactivity.AbsMainActivityFragment; import com.kabouzeid.gramophone.ui.fragments.mainactivity.library.pager.AbsLibraryPagerRecyclerViewCustomGridSizeFragment; -import com.kabouzeid.gramophone.ui.fragments.mainactivity.library.pager.PlaylistsFragment; import com.kabouzeid.gramophone.ui.fragments.mainactivity.library.pager.AlbumsFragment; import com.kabouzeid.gramophone.ui.fragments.mainactivity.library.pager.ArtistsFragment; +import com.kabouzeid.gramophone.ui.fragments.mainactivity.library.pager.PlaylistsFragment; import com.kabouzeid.gramophone.ui.fragments.mainactivity.library.pager.SongsFragment; import com.kabouzeid.gramophone.util.PhonographColorUtil; import com.kabouzeid.gramophone.util.PreferenceUtil; @@ -345,29 +345,29 @@ public class LibraryFragment extends AbsMainActivityFragment implements CabHolde sortOrderMenu.clear(); if (fragment instanceof AlbumsFragment) { - sortOrderMenu.add(0, R.id.action_album_sort_asc, 0, R.string.sort_a_z) + sortOrderMenu.add(0, R.id.action_album_sort_order_asc, 0, R.string.sort_order_a_z) .setChecked(currentSortOrder.equals(SortOrder.AlbumSortOrder.ALBUM_A_Z)); - sortOrderMenu.add(0, R.id.action_album_sort_desc, 1, R.string.sort_z_a) + sortOrderMenu.add(0, R.id.action_album_sort_order_desc, 1, R.string.sort_order_z_a) .setChecked(currentSortOrder.equals(SortOrder.AlbumSortOrder.ALBUM_Z_A)); - sortOrderMenu.add(0, R.id.action_album_sort_artist, 2, R.string.sort_artist) + sortOrderMenu.add(0, R.id.action_album_sort_order_artist, 2, R.string.sort_order_artist) .setChecked(currentSortOrder.equals(SortOrder.AlbumSortOrder.ALBUM_ARTIST)); - sortOrderMenu.add(0, R.id.action_album_sort_year, 3, R.string.sort_year) + sortOrderMenu.add(0, R.id.action_album_sort_order_year, 3, R.string.sort_order_year) .setChecked(currentSortOrder.equals(SortOrder.AlbumSortOrder.ALBUM_YEAR)); } else if (fragment instanceof ArtistsFragment) { - sortOrderMenu.add(0, R.id.action_artist_sort_asc, 0, R.string.sort_a_z) + sortOrderMenu.add(0, R.id.action_artist_sort_order_asc, 0, R.string.sort_order_a_z) .setChecked(currentSortOrder.equals(SortOrder.ArtistSortOrder.ARTIST_A_Z)); - sortOrderMenu.add(0, R.id.action_artist_sort_desc, 1, R.string.sort_z_a) + sortOrderMenu.add(0, R.id.action_artist_sort_order_desc, 1, R.string.sort_order_z_a) .setChecked(currentSortOrder.equals(SortOrder.ArtistSortOrder.ARTIST_Z_A)); } else if (fragment instanceof SongsFragment) { - sortOrderMenu.add(0, R.id.action_song_sort_asc, 0, R.string.sort_a_z) + sortOrderMenu.add(0, R.id.action_song_sort_order_asc, 0, R.string.sort_order_a_z) .setChecked(currentSortOrder.equals(SortOrder.SongSortOrder.SONG_A_Z)); - sortOrderMenu.add(0, R.id.action_song_sort_desc, 1, R.string.sort_z_a) + sortOrderMenu.add(0, R.id.action_song_sort_order_desc, 1, R.string.sort_order_z_a) .setChecked(currentSortOrder.equals(SortOrder.SongSortOrder.SONG_Z_A)); - sortOrderMenu.add(0, R.id.action_song_sort_artist, 2, R.string.sort_artist) + sortOrderMenu.add(0, R.id.action_song_sort_order_artist, 2, R.string.sort_order_artist) .setChecked(currentSortOrder.equals(SortOrder.SongSortOrder.SONG_ARTIST)); - sortOrderMenu.add(0, R.id.action_song_sort_album, 3, R.string.sort_album) + sortOrderMenu.add(0, R.id.action_song_sort_order_album, 3, R.string.sort_order_album) .setChecked(currentSortOrder.equals(SortOrder.SongSortOrder.SONG_ALBUM)); - sortOrderMenu.add(0, R.id.action_song_sort_year, 4, R.string.sort_year) + sortOrderMenu.add(0, R.id.action_song_sort_order_year, 4, R.string.sort_order_year) .setChecked(currentSortOrder.equals(SortOrder.SongSortOrder.SONG_YEAR)); } @@ -378,43 +378,43 @@ public class LibraryFragment extends AbsMainActivityFragment implements CabHolde String sortOrder = null; if (fragment instanceof AlbumsFragment) { switch (item.getItemId()) { - case R.id.action_album_sort_asc: + case R.id.action_album_sort_order_asc: sortOrder = SortOrder.AlbumSortOrder.ALBUM_A_Z; break; - case R.id.action_album_sort_desc: + case R.id.action_album_sort_order_desc: sortOrder = SortOrder.AlbumSortOrder.ALBUM_Z_A; break; - case R.id.action_album_sort_artist: + case R.id.action_album_sort_order_artist: sortOrder = SortOrder.AlbumSortOrder.ALBUM_ARTIST; break; - case R.id.action_album_sort_year: + case R.id.action_album_sort_order_year: sortOrder = SortOrder.AlbumSortOrder.ALBUM_YEAR; break; } } else if (fragment instanceof ArtistsFragment) { switch (item.getItemId()) { - case R.id.action_artist_sort_asc: + case R.id.action_artist_sort_order_asc: sortOrder = SortOrder.ArtistSortOrder.ARTIST_A_Z; break; - case R.id.action_artist_sort_desc: + case R.id.action_artist_sort_order_desc: sortOrder = SortOrder.ArtistSortOrder.ARTIST_Z_A; break; } } else if (fragment instanceof SongsFragment) { switch (item.getItemId()) { - case R.id.action_song_sort_asc: + case R.id.action_song_sort_order_asc: sortOrder = SortOrder.SongSortOrder.SONG_A_Z; break; - case R.id.action_song_sort_desc: + case R.id.action_song_sort_order_desc: sortOrder = SortOrder.SongSortOrder.SONG_Z_A; break; - case R.id.action_song_sort_artist: + case R.id.action_song_sort_order_artist: sortOrder = SortOrder.SongSortOrder.SONG_ARTIST; break; - case R.id.action_song_sort_album: + case R.id.action_song_sort_order_album: sortOrder = SortOrder.SongSortOrder.SONG_ALBUM; break; - case R.id.action_song_sort_year: + case R.id.action_song_sort_order_year: sortOrder = SortOrder.SongSortOrder.SONG_YEAR; break; } diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/mainactivity/library/pager/AbsLibraryPagerRecyclerViewCustomGridSizeFragment.java b/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/mainactivity/library/pager/AbsLibraryPagerRecyclerViewCustomGridSizeFragment.java index 95078f46..a5b69d78 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/mainactivity/library/pager/AbsLibraryPagerRecyclerViewCustomGridSizeFragment.java +++ b/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/mainactivity/library/pager/AbsLibraryPagerRecyclerViewCustomGridSizeFragment.java @@ -83,6 +83,7 @@ public abstract class AbsLibraryPagerRecyclerViewCustomGridSizeFragment - - - - - - - - - - - + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 6696f524..a9cdfb07 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -296,9 +296,9 @@ Configure visibility and order of library categories. You have to select at least one category. Sort order - Ascending - Descending - Artist - Album - Year + Ascending + Descending + Artist + Album + Year From be54afd38b2cda9fd4094c9d474743258efea347 Mon Sep 17 00:00:00 2001 From: Karim Abou Zeid Date: Mon, 30 Apr 2018 00:08:23 +0200 Subject: [PATCH 7/8] Fix track sorting bug --- .../kabouzeid/gramophone/loader/AlbumLoader.java | 13 ++++++++++++- .../kabouzeid/gramophone/loader/ArtistLoader.java | 6 +++--- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/com/kabouzeid/gramophone/loader/AlbumLoader.java b/app/src/main/java/com/kabouzeid/gramophone/loader/AlbumLoader.java index 89657a62..69669c99 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/loader/AlbumLoader.java +++ b/app/src/main/java/com/kabouzeid/gramophone/loader/AlbumLoader.java @@ -10,6 +10,8 @@ import com.kabouzeid.gramophone.model.Song; import com.kabouzeid.gramophone.util.PreferenceUtil; import java.util.ArrayList; +import java.util.Collections; +import java.util.Comparator; /** * @author Karim Abou Zeid (kabouzeid) @@ -45,7 +47,9 @@ public class AlbumLoader { @NonNull public static Album getAlbum(@NonNull final Context context, int albumId) { ArrayList songs = SongLoader.getSongs(SongLoader.makeSongCursor(context, AudioColumns.ALBUM_ID + "=?", new String[]{String.valueOf(albumId)}, getSongLoaderSortOrder(context))); - return new Album(songs); + Album album = new Album(songs); + sortSongsByTrackNumber(album); + return album; } @NonNull @@ -56,6 +60,9 @@ public class AlbumLoader { getOrCreateAlbum(albums, song.albumId).songs.add(song); } } + for (Album album : albums) { + sortSongsByTrackNumber(album); + } return albums; } @@ -69,4 +76,8 @@ public class AlbumLoader { albums.add(album); return album; } + + private static void sortSongsByTrackNumber(Album album) { + Collections.sort(album.songs, (o1, o2) -> o1.trackNumber - o2.trackNumber); + } } diff --git a/app/src/main/java/com/kabouzeid/gramophone/loader/ArtistLoader.java b/app/src/main/java/com/kabouzeid/gramophone/loader/ArtistLoader.java index 566c64f7..6c3ea062 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/loader/ArtistLoader.java +++ b/app/src/main/java/com/kabouzeid/gramophone/loader/ArtistLoader.java @@ -70,8 +70,8 @@ public class ArtistLoader { return artist; } } - Artist album = new Artist(); - artists.add(album); - return album; + Artist artist = new Artist(); + artists.add(artist); + return artist; } } From cd04a13896dcd4d0278f8303bc3a3135d7dcc6fe Mon Sep 17 00:00:00 2001 From: Karim Abou Zeid Date: Mon, 30 Apr 2018 13:22:00 +0200 Subject: [PATCH 8/8] Remove unused import. --- .../main/java/com/kabouzeid/gramophone/loader/AlbumLoader.java | 1 - 1 file changed, 1 deletion(-) diff --git a/app/src/main/java/com/kabouzeid/gramophone/loader/AlbumLoader.java b/app/src/main/java/com/kabouzeid/gramophone/loader/AlbumLoader.java index 69669c99..e47cb7f6 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/loader/AlbumLoader.java +++ b/app/src/main/java/com/kabouzeid/gramophone/loader/AlbumLoader.java @@ -11,7 +11,6 @@ import com.kabouzeid.gramophone.util.PreferenceUtil; import java.util.ArrayList; import java.util.Collections; -import java.util.Comparator; /** * @author Karim Abou Zeid (kabouzeid)