From e5229dd48b16f2c85ff792fb15992d654924032d Mon Sep 17 00:00:00 2001 From: CappielloAntonio Date: Fri, 14 Jan 2022 09:36:35 +0100 Subject: [PATCH] Moved newReleases view from library to home --- .../play/ui/fragment/HomeFragment.java | 43 ++++++++++++++++--- .../play/ui/fragment/LibraryFragment.java | 34 --------------- .../play/viewmodel/HomeViewModel.java | 15 ++++++- .../play/viewmodel/LibraryViewModel.java | 12 ------ app/src/main/res/layout/fragment_home.xml | 34 +++++++++++++++ app/src/main/res/layout/fragment_library.xml | 33 -------------- app/src/main/res/values/strings.xml | 2 +- 7 files changed, 85 insertions(+), 88 deletions(-) diff --git a/app/src/main/java/com/cappielloantonio/play/ui/fragment/HomeFragment.java b/app/src/main/java/com/cappielloantonio/play/ui/fragment/HomeFragment.java index a1fac70f..b2a3e09a 100644 --- a/app/src/main/java/com/cappielloantonio/play/ui/fragment/HomeFragment.java +++ b/app/src/main/java/com/cappielloantonio/play/ui/fragment/HomeFragment.java @@ -59,6 +59,7 @@ public class HomeFragment extends Fragment { private HomeViewModel homeViewModel; private DiscoverSongAdapter discoverSongAdapter; + private AlbumHorizontalAdapter newRelesesAlbumAdapter; private AlbumAdapter recentlyAddedAlbumAdapter; private AlbumAdapter recentlyPlayedAlbumAdapter; private AlbumAdapter mostPlayedAlbumAdapter; @@ -104,6 +105,7 @@ public class HomeFragment extends Fragment { initAppBar(); initDiscoverSongSlideView(); initSimilarSongView(); + initNewReleasesView(); initMostPlayedAlbumView(); initRecentPlayedAlbumView(); initStarredTracksView(); @@ -281,6 +283,39 @@ public class HomeFragment extends Fragment { similarSongSnapHelper.attachToRecyclerView(bind.similarTracksRecyclerView); } + private void initNewReleasesView() { + bind.newReleasesRecyclerView.setHasFixedSize(true); + + newRelesesAlbumAdapter = new AlbumHorizontalAdapter(requireContext(), false); + bind.newReleasesRecyclerView.setAdapter(newRelesesAlbumAdapter); + homeViewModel.getRecentlyReleasedAlbums(requireActivity()).observe(requireActivity(), albums -> { + if (albums == null) { + if (bind != null) bind.homeNewReleasesPlaceholder.placeholder.setVisibility(View.VISIBLE); + if (bind != null) bind.homeNewReleasesSector.setVisibility(View.GONE); + } else { + if (bind != null) bind.homeNewReleasesPlaceholder.placeholder.setVisibility(View.GONE); + if (bind != null) bind.homeNewReleasesSector.setVisibility(!albums.isEmpty() ? View.VISIBLE : View.GONE); + + if (bind != null) + bind.newReleasesRecyclerView.setLayoutManager(new GridLayoutManager(requireContext(), UIUtil.getSpanCount(albums.size(), 5), GridLayoutManager.HORIZONTAL, false)); + + newRelesesAlbumAdapter.setItems(albums); + } + }); + + SnapHelper starredAlbumSnapHelper = new PagerSnapHelper(); + starredAlbumSnapHelper.attachToRecyclerView(bind.newReleasesRecyclerView); + + bind.newReleasesRecyclerView.addItemDecoration( + new DotsIndicatorDecoration( + getResources().getDimensionPixelSize(R.dimen.radius), + getResources().getDimensionPixelSize(R.dimen.radius) * 4, + getResources().getDimensionPixelSize(R.dimen.dots_height), + requireContext().getResources().getColor(R.color.titleTextColor, null), + requireContext().getResources().getColor(R.color.titleTextColor, null)) + ); + } + private void initMostPlayedAlbumView() { bind.mostPlayedAlbumsRecyclerView.setLayoutManager(new LinearLayoutManager(requireContext(), LinearLayoutManager.HORIZONTAL, false)); bind.mostPlayedAlbumsRecyclerView.setHasFixedSize(true); @@ -487,18 +522,12 @@ public class HomeFragment extends Fragment { }); } - /* - * Il layout di default prevede questa sequenza: - * - Discovery - Most_played - Last_played - Year - Favorite - Downloaded - Recently_added - * - * Se però non ho ancora ascoltato nessuna canzone e quindi Most_played e Last_played sono vuoti, modifico come segue - * - Discovery - Recently_added - Year - Favorite - Downloaded - Most_played - Last_played - */ public void reorder() { if (bind != null) { bind.homeLinearLayoutContainer.removeAllViews(); bind.homeLinearLayoutContainer.addView(bind.homeDiscoverSector); bind.homeLinearLayoutContainer.addView(bind.homeSimilarTracksSector); + bind.homeLinearLayoutContainer.addView(bind.homeNewReleasesSector); bind.homeLinearLayoutContainer.addView(bind.homeRecentlyAddedAlbumsSector); bind.homeLinearLayoutContainer.addView(bind.homeFlashbackSector); bind.homeLinearLayoutContainer.addView(bind.homeStarredTracksSector); diff --git a/app/src/main/java/com/cappielloantonio/play/ui/fragment/LibraryFragment.java b/app/src/main/java/com/cappielloantonio/play/ui/fragment/LibraryFragment.java index cf273600..ce21b6f6 100644 --- a/app/src/main/java/com/cappielloantonio/play/ui/fragment/LibraryFragment.java +++ b/app/src/main/java/com/cappielloantonio/play/ui/fragment/LibraryFragment.java @@ -47,7 +47,6 @@ public class LibraryFragment extends Fragment { private MainActivity activity; private LibraryViewModel libraryViewModel; - private AlbumHorizontalAdapter newRelesesAlbumAdapter; private AlbumAdapter albumAdapter; private ArtistAdapter artistAdapter; private GenreAdapter genreAdapter; @@ -86,7 +85,6 @@ public class LibraryFragment extends Fragment { super.onViewCreated(view, savedInstanceState); initAppBar(); - initNewReleasesView(); initAlbumView(); initArtistView(); initGenreView(); @@ -151,38 +149,6 @@ public class LibraryFragment extends Fragment { Objects.requireNonNull(bind.toolbar.getOverflowIcon()).setTint(requireContext().getResources().getColor(R.color.titleTextColor, null)); } - private void initNewReleasesView() { - bind.newReleasesRecyclerView.setHasFixedSize(true); - - newRelesesAlbumAdapter = new AlbumHorizontalAdapter(requireContext(), false); - bind.newReleasesRecyclerView.setAdapter(newRelesesAlbumAdapter); - libraryViewModel.getRecentlyReleasedAlbums(requireActivity()).observe(requireActivity(), albums -> { - if (albums == null) { - if (bind != null) bind.libraryNewReleasesPlaceholder.placeholder.setVisibility(View.VISIBLE); - if (bind != null) bind.libraryNewReleasesSector.setVisibility(View.GONE); - } else { - if (bind != null) bind.libraryNewReleasesPlaceholder.placeholder.setVisibility(View.GONE); - if (bind != null) bind.libraryNewReleasesSector.setVisibility(!albums.isEmpty() ? View.VISIBLE : View.GONE); - if (bind != null) - bind.newReleasesRecyclerView.setLayoutManager(new GridLayoutManager(requireContext(), UIUtil.getSpanCount(albums.size(), 5), GridLayoutManager.HORIZONTAL, false)); - - newRelesesAlbumAdapter.setItems(albums); - } - }); - - SnapHelper starredAlbumSnapHelper = new PagerSnapHelper(); - starredAlbumSnapHelper.attachToRecyclerView(bind.newReleasesRecyclerView); - - bind.newReleasesRecyclerView.addItemDecoration( - new DotsIndicatorDecoration( - getResources().getDimensionPixelSize(R.dimen.radius), - getResources().getDimensionPixelSize(R.dimen.radius) * 4, - getResources().getDimensionPixelSize(R.dimen.dots_height), - requireContext().getResources().getColor(R.color.titleTextColor, null), - requireContext().getResources().getColor(R.color.titleTextColor, null)) - ); - } - private void initAlbumView() { bind.albumRecyclerView.setLayoutManager(new LinearLayoutManager(requireContext(), LinearLayoutManager.HORIZONTAL, false)); bind.albumRecyclerView.setHasFixedSize(true); diff --git a/app/src/main/java/com/cappielloantonio/play/viewmodel/HomeViewModel.java b/app/src/main/java/com/cappielloantonio/play/viewmodel/HomeViewModel.java index 8d198dcc..3ed39929 100644 --- a/app/src/main/java/com/cappielloantonio/play/viewmodel/HomeViewModel.java +++ b/app/src/main/java/com/cappielloantonio/play/viewmodel/HomeViewModel.java @@ -19,7 +19,9 @@ import com.cappielloantonio.play.repository.PlaylistRepository; import com.cappielloantonio.play.repository.SongRepository; import com.cappielloantonio.play.util.PreferenceUtil; +import java.util.Calendar; import java.util.Collections; +import java.util.Comparator; import java.util.List; public class HomeViewModel extends AndroidViewModel { @@ -31,8 +33,8 @@ public class HomeViewModel extends AndroidViewModel { private final PlaylistRepository playlistRepository; private final MutableLiveData> dicoverSongSample = new MutableLiveData<>(null); + private final MutableLiveData> newReleasedAlbum = new MutableLiveData<>(null); private final MutableLiveData> starredTracksSample = new MutableLiveData<>(null); - private final MutableLiveData> mostPlayedAlbumSample = new MutableLiveData<>(null); private final MutableLiveData> recentlyPlayedAlbumSample = new MutableLiveData<>(null); private final MutableLiveData> years = new MutableLiveData<>(null); @@ -58,6 +60,17 @@ public class HomeViewModel extends AndroidViewModel { return dicoverSongSample; } + public LiveData> getRecentlyReleasedAlbums(LifecycleOwner owner) { + int currentYear = Calendar.getInstance().get(Calendar.YEAR); + + albumRepository.getAlbums("byYear", 500, currentYear, currentYear).observe(owner, albums -> { + albums.sort(Comparator.comparing(Album::getCreated).reversed()); + newReleasedAlbum.postValue(albums.subList(0, Math.min(20, albums.size()))); + }); + + return newReleasedAlbum; + } + public LiveData> getStarredTracksSample() { return starredTracksSample; } diff --git a/app/src/main/java/com/cappielloantonio/play/viewmodel/LibraryViewModel.java b/app/src/main/java/com/cappielloantonio/play/viewmodel/LibraryViewModel.java index 7e2fd26c..2ce55729 100644 --- a/app/src/main/java/com/cappielloantonio/play/viewmodel/LibraryViewModel.java +++ b/app/src/main/java/com/cappielloantonio/play/viewmodel/LibraryViewModel.java @@ -31,7 +31,6 @@ public class LibraryViewModel extends AndroidViewModel { private final MutableLiveData> playlistSample = new MutableLiveData<>(null); private final MutableLiveData> sampleAlbum = new MutableLiveData<>(null); - private final MutableLiveData> newReleasedAlbum = new MutableLiveData<>(null); private final MutableLiveData> sampleArtist = new MutableLiveData<>(null); private final MutableLiveData> sampleGenres = new MutableLiveData<>(null); @@ -51,17 +50,6 @@ public class LibraryViewModel extends AndroidViewModel { playlistRepository.getPlaylists(true, 10).observeForever(playlistSample::postValue); } - public LiveData> getRecentlyReleasedAlbums(LifecycleOwner owner) { - int currentYear = Calendar.getInstance().get(Calendar.YEAR); - - albumRepository.getAlbums("byYear", 500, currentYear, currentYear).observe(owner, albums -> { - albums.sort(Comparator.comparing(Album::getCreated).reversed()); - newReleasedAlbum.postValue(albums.subList(0, Math.min(20, albums.size()))); - }); - - return newReleasedAlbum; - } - public LiveData> getAlbumSample() { return sampleAlbum; } diff --git a/app/src/main/res/layout/fragment_home.xml b/app/src/main/res/layout/fragment_home.xml index a3db3c61..a493764a 100644 --- a/app/src/main/res/layout/fragment_home.xml +++ b/app/src/main/res/layout/fragment_home.xml @@ -129,6 +129,40 @@ layout="@layout/item_placeholder_album" android:visibility="gone" /> + + + + + + + + + + + - - - - - - - - - - Most played See all Music discovery + New releases Recently added See all ★ Starred albums @@ -90,7 +91,6 @@ See all Genres See all - New releases Playlists See all No server added