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">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_song_list_page.xml b/app/src/main/res/layout/fragment_song_list_page.xml
index 6e53b6c5..9fd0da7f 100644
--- a/app/src/main/res/layout/fragment_song_list_page.xml
+++ b/app/src/main/res/layout/fragment_song_list_page.xml
@@ -28,8 +28,8 @@
android:id="@+id/album_info_sector"
android:layout_width="match_parent"
android:layout_height="172dp"
- app:layout_scrollFlags="scroll|exitUntilCollapsed|snap"
- android:clipChildren="false">
+ android:clipChildren="false"
+ app:layout_scrollFlags="scroll|exitUntilCollapsed|snap">
+ app:layout_constraintBottom_toBottomOf="parent"
+ app:layout_constraintEnd_toEndOf="parent" />
+ app:layout_constraintBottom_toBottomOf="parent"
+ app:layout_constraintEnd_toStartOf="@+id/song_list_play_image_view" />