diff --git a/app/src/main/java/com/cappielloantonio/play/ui/fragment/AlbumPageFragment.java b/app/src/main/java/com/cappielloantonio/play/ui/fragment/AlbumPageFragment.java index 9a054428..82a03cdd 100644 --- a/app/src/main/java/com/cappielloantonio/play/ui/fragment/AlbumPageFragment.java +++ b/app/src/main/java/com/cappielloantonio/play/ui/fragment/AlbumPageFragment.java @@ -55,6 +55,7 @@ public class AlbumPageFragment extends Fragment { super.onActivityCreated(savedInstanceState); initAppBar(); + initMusicButton(); } @Override @@ -113,6 +114,18 @@ public class AlbumPageFragment extends Fragment { bind.albumArtistLabel.setText(albumPageViewModel.getAlbum().getArtistName()); bind.albumReleaseYearLabel.setText(albumPageViewModel.getAlbum().getYear() != 0 ? String.valueOf(albumPageViewModel.getAlbum().getYear()) : ""); + bind.appBarLayout.addOnOffsetChangedListener((appBarLayout, verticalOffset) -> { + if ((bind.albumInfoSector.getHeight() + verticalOffset) < (2 * ViewCompat.getMinimumHeight(bind.animToolbar))) { + bind.animToolbar.setTitle(albumPageViewModel.getAlbum().getTitle()); + } else { + bind.animToolbar.setTitle("Album"); + } + }); + + bind.animToolbar.setNavigationOnClickListener(v -> activity.navController.navigateUp()); + } + + private void initMusicButton() { albumPageViewModel.getAlbumSongLiveList().observe(requireActivity(), songs -> { if(bind != null) { bind.albumPagePlayButton.setOnClickListener(v -> { @@ -138,16 +151,6 @@ public class AlbumPageFragment extends Fragment { }); } }); - - bind.appBarLayout.addOnOffsetChangedListener((appBarLayout, verticalOffset) -> { - if ((bind.albumInfoSector.getHeight() + verticalOffset) < (2 * ViewCompat.getMinimumHeight(bind.animToolbar))) { - bind.animToolbar.setTitle(albumPageViewModel.getAlbum().getTitle()); - } else { - bind.animToolbar.setTitle("Album"); - } - }); - - bind.animToolbar.setNavigationOnClickListener(v -> activity.navController.navigateUp()); } private void initBackCover() { diff --git a/app/src/main/java/com/cappielloantonio/play/ui/fragment/PlaylistPageFragment.java b/app/src/main/java/com/cappielloantonio/play/ui/fragment/PlaylistPageFragment.java index 25d119cb..7837164c 100644 --- a/app/src/main/java/com/cappielloantonio/play/ui/fragment/PlaylistPageFragment.java +++ b/app/src/main/java/com/cappielloantonio/play/ui/fragment/PlaylistPageFragment.java @@ -12,13 +12,18 @@ import androidx.fragment.app.Fragment; import androidx.lifecycle.ViewModelProvider; import androidx.recyclerview.widget.LinearLayoutManager; +import com.cappielloantonio.play.App; import com.cappielloantonio.play.R; import com.cappielloantonio.play.adapter.SongResultSearchAdapter; import com.cappielloantonio.play.databinding.FragmentPlaylistPageBinding; import com.cappielloantonio.play.glide.CustomGlideRequest; +import com.cappielloantonio.play.repository.QueueRepository; +import com.cappielloantonio.play.service.MusicPlayerRemote; import com.cappielloantonio.play.ui.activity.MainActivity; import com.cappielloantonio.play.viewmodel.PlaylistPageViewModel; +import java.util.Collections; + public class PlaylistPageFragment extends Fragment { private FragmentPlaylistPageBinding bind; @@ -32,6 +37,7 @@ public class PlaylistPageFragment extends Fragment { super.onActivityCreated(savedInstanceState); initAppBar(); + initMusicButton(); } @Override @@ -83,6 +89,34 @@ public class PlaylistPageFragment extends Fragment { }); } + private void initMusicButton() { + playlistPageViewModel.getPlaylistSongList().observe(requireActivity(), songs -> { + if(bind != null) { + bind.playlistPagePlayButton.setOnClickListener(v -> { + QueueRepository queueRepository = new QueueRepository(App.getInstance()); + queueRepository.insertAllAndStartNew(songs); + + activity.isBottomSheetInPeek(true); + activity.setBottomSheetMusicInfo(songs.get(0)); + + MusicPlayerRemote.openQueue(songs, 0, true); + }); + + bind.playlistPageShuffleButton.setOnClickListener(v -> { + Collections.shuffle(songs); + + QueueRepository queueRepository = new QueueRepository(App.getInstance()); + queueRepository.insertAllAndStartNew(songs); + + activity.isBottomSheetInPeek(true); + activity.setBottomSheetMusicInfo(songs.get(0)); + + MusicPlayerRemote.openQueue(songs, 0, true); + }); + } + }); + } + private void initBackCover() { CustomGlideRequest.Builder .from(requireContext(), playlistPageViewModel.getPlaylist().getPrimary(), playlistPageViewModel.getPlaylist().getBlurHash(), CustomGlideRequest.PRIMARY, CustomGlideRequest.TOP_QUALITY, CustomGlideRequest.ALBUM_PIC) @@ -91,11 +125,11 @@ public class PlaylistPageFragment extends Fragment { } private void initSongsView() { - bind.songRecyclerView.setLayoutManager(new LinearLayoutManager(requireContext())); - bind.songRecyclerView.setHasFixedSize(true); + bind.playlistRecyclerView.setLayoutManager(new LinearLayoutManager(requireContext())); + bind.playlistRecyclerView.setHasFixedSize(true); songResultSearchAdapter = new SongResultSearchAdapter(activity, requireContext(), getChildFragmentManager()); - bind.songRecyclerView.setAdapter(songResultSearchAdapter); + bind.playlistRecyclerView.setAdapter(songResultSearchAdapter); playlistPageViewModel.getPlaylistSongList().observe(requireActivity(), songs -> { songResultSearchAdapter.setItems(songs); }); diff --git a/app/src/main/res/layout/fragment_playlist_page.xml b/app/src/main/res/layout/fragment_playlist_page.xml index 0a0de2f1..08705f9b 100644 --- a/app/src/main/res/layout/fragment_playlist_page.xml +++ b/app/src/main/res/layout/fragment_playlist_page.xml @@ -46,13 +46,83 @@ - + android:layout_height="wrap_content" + app:layout_behavior="@string/appbar_scrolling_view_behavior"> + + + + + + +