diff --git a/.idea/misc.xml b/.idea/misc.xml index 61eba887..d751460c 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -36,6 +36,7 @@ + @@ -74,6 +75,8 @@ + + @@ -163,12 +166,18 @@ + + + + + + diff --git a/app/src/main/java/com/cappielloantonio/play/adapter/AlbumCatalogueAdapter.java b/app/src/main/java/com/cappielloantonio/play/adapter/AlbumCatalogueAdapter.java index 255a9cbc..a40e7770 100644 --- a/app/src/main/java/com/cappielloantonio/play/adapter/AlbumCatalogueAdapter.java +++ b/app/src/main/java/com/cappielloantonio/play/adapter/AlbumCatalogueAdapter.java @@ -23,6 +23,8 @@ import com.cappielloantonio.play.ui.activity.MainActivity; import com.cappielloantonio.play.util.MusicUtil; import java.util.ArrayList; +import java.util.Collections; +import java.util.Comparator; import java.util.List; import java.util.Objects; @@ -159,4 +161,23 @@ public class AlbumCatalogueAdapter extends RecyclerView.Adapter showPopupMenu(view, R.menu.sort_album_popup_menu)); } @Override @@ -144,4 +148,29 @@ public class AlbumCatalogueFragment extends Fragment { InputMethodManager imm = (InputMethodManager) activity.getSystemService(Context.INPUT_METHOD_SERVICE); imm.hideSoftInputFromWindow(view.getWindowToken(), 0); } + + private void showPopupMenu(View view, int menuResource) { + PopupMenu popup = new PopupMenu(requireContext(), view); + popup.getMenuInflater().inflate(menuResource, popup.getMenu()); + + popup.setOnMenuItemClickListener(menuItem -> { + if (menuItem.getItemId() == R.id.menu_album_sort_name) { + albumAdapter.sort(Album.ORDER_BY_NAME); + return true; + } else if (menuItem.getItemId() == R.id.menu_album_sort_artist) { + albumAdapter.sort(Album.ORDER_BY_ARTIST); + return true; + } else if (menuItem.getItemId() == R.id.menu_album_sort_year) { + albumAdapter.sort(Album.ORDER_BY_YEAR); + return true; + } else if (menuItem.getItemId() == R.id.menu_album_sort_random) { + albumAdapter.sort(Album.ORDER_BY_RANDOM); + return true; + } + + return false; + }); + + popup.show(); + } } \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_sort_list.xml b/app/src/main/res/drawable/ic_sort_list.xml new file mode 100644 index 00000000..33efc4a5 --- /dev/null +++ b/app/src/main/res/drawable/ic_sort_list.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/layout/fragment_album_catalogue.xml b/app/src/main/res/layout/fragment_album_catalogue.xml index f0eb06f6..8c8764c4 100644 --- a/app/src/main/res/layout/fragment_album_catalogue.xml +++ b/app/src/main/res/layout/fragment_album_catalogue.xml @@ -41,6 +41,24 @@ app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toEndOf="parent" /> + +