From 1106e3425001c49f1fe941f13057fdf007aac8c1 Mon Sep 17 00:00:00 2001 From: CappielloAntonio Date: Thu, 22 Apr 2021 18:42:49 +0200 Subject: [PATCH] Added a shuffle button in the artist's fragment --- .../play/ui/fragment/ArtistPageFragment.java | 19 ++++++++++++++++ .../play/viewmodel/ArtistPageViewModel.java | 6 +++++ .../main/res/layout/fragment_artist_page.xml | 22 ++++++++++++++----- app/src/main/res/values/dimens.xml | 3 ++- 4 files changed, 43 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/com/cappielloantonio/play/ui/fragment/ArtistPageFragment.java b/app/src/main/java/com/cappielloantonio/play/ui/fragment/ArtistPageFragment.java index 23f0eab1..47666250 100644 --- a/app/src/main/java/com/cappielloantonio/play/ui/fragment/ArtistPageFragment.java +++ b/app/src/main/java/com/cappielloantonio/play/ui/fragment/ArtistPageFragment.java @@ -5,6 +5,7 @@ import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; +import android.widget.Toast; import androidx.annotation.Nullable; import androidx.core.view.ViewCompat; @@ -12,15 +13,20 @@ 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.AlbumArtistPageAdapter; import com.cappielloantonio.play.adapter.SongResultSearchAdapter; import com.cappielloantonio.play.databinding.FragmentArtistPageBinding; import com.cappielloantonio.play.glide.CustomGlideRequest; +import com.cappielloantonio.play.helper.MusicPlayerRemote; import com.cappielloantonio.play.model.Song; +import com.cappielloantonio.play.repository.QueueRepository; import com.cappielloantonio.play.ui.activities.MainActivity; import com.cappielloantonio.play.viewmodel.ArtistPageViewModel; +import java.util.List; + public class ArtistPageFragment extends Fragment { private FragmentArtistPageBinding bind; @@ -93,6 +99,19 @@ public class ArtistPageFragment extends Fragment { bind.animToolbar.getNavigationIcon().setColorFilter(getResources().getColor(R.color.white, null), PorterDuff.Mode.SRC_ATOP); } }); + + bind.artistPageFabButton.setOnClickListener(v -> { + List songs = artistPageViewModel.getArtistRandomSongList(); + + if(songs.size() > 0) { + QueueRepository queueRepository = new QueueRepository(App.getInstance()); + queueRepository.insertAllAndStartNew(songs); + + MusicPlayerRemote.openQueue(songs, 0, true); + ((MainActivity) requireActivity()).isBottomSheetInPeek(true); + } + else Toast.makeText(requireContext(), "Error retrieving artist's songs", Toast.LENGTH_SHORT).show(); + }); } private void initBackdrop() { diff --git a/app/src/main/java/com/cappielloantonio/play/viewmodel/ArtistPageViewModel.java b/app/src/main/java/com/cappielloantonio/play/viewmodel/ArtistPageViewModel.java index 9836150b..4ee6bcfc 100644 --- a/app/src/main/java/com/cappielloantonio/play/viewmodel/ArtistPageViewModel.java +++ b/app/src/main/java/com/cappielloantonio/play/viewmodel/ArtistPageViewModel.java @@ -18,6 +18,7 @@ public class ArtistPageViewModel extends AndroidViewModel { private SongRepository songRepository; private AlbumRepository albumRepository; + private List randomList; private LiveData> songList; private LiveData> albumList; @@ -35,6 +36,11 @@ public class ArtistPageViewModel extends AndroidViewModel { return albumList; } + public List getArtistRandomSongList() { + randomList = songRepository.getArtistListLiveRandomSong(artist.id); + return randomList; + } + public LiveData> getArtistTopSongList() { songList = songRepository.getArtistListLiveTopSongSample(artist.id); return songList; diff --git a/app/src/main/res/layout/fragment_artist_page.xml b/app/src/main/res/layout/fragment_artist_page.xml index c1696d95..88989a75 100644 --- a/app/src/main/res/layout/fragment_artist_page.xml +++ b/app/src/main/res/layout/fragment_artist_page.xml @@ -29,12 +29,21 @@ android:scaleType="centerCrop" app:layout_collapseMode="parallax" /> - + + - 384dp + 296dp + 24dp 56dp