diff --git a/.idea/misc.xml b/.idea/misc.xml index e20fcb15..1c586f4e 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -22,6 +22,7 @@ + diff --git a/app/src/main/java/com/cappielloantonio/play/repository/AlbumRepository.java b/app/src/main/java/com/cappielloantonio/play/repository/AlbumRepository.java index e6509743..bd738c79 100644 --- a/app/src/main/java/com/cappielloantonio/play/repository/AlbumRepository.java +++ b/app/src/main/java/com/cappielloantonio/play/repository/AlbumRepository.java @@ -38,7 +38,7 @@ public class AlbumRepository { this.application = application; } - public LiveData> getAlbums(String type, int size) { + public MutableLiveData> getAlbums(String type, int size) { App.getSubsonicClientInstance(application, false) .getAlbumSongListClient() .getAlbumList2(type, size, 0, null, null) 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 de04a104..b5639083 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 @@ -138,6 +138,41 @@ public class HomeFragment extends Fragment { }); bind.homeSettingsImageView.setOnClickListener(v -> activity.navController.navigate(R.id.action_homeFragment_to_settingsFragment)); + + bind.musicDiscoveryTextViewRefreshable.setOnLongClickListener(v -> { + homeViewModel.refreshDiscoverySongSample(requireActivity()); + return true; + }); + + bind.recentlyPlayedAlbumsTextViewRefreshable.setOnLongClickListener(v -> { + homeViewModel.refreshRecentlyPlayedAlbumList(requireActivity()); + return true; + }); + + bind.mostPlayedAlbumsTextViewRefreshable.setOnLongClickListener(v -> { + homeViewModel.refreshMostPlayedAlbums(requireActivity()); + return true; + }); + + bind.recentlyAddedAlbumsTextViewRefreshable.setOnLongClickListener(v -> { + homeViewModel.refreshMostRecentlyAddedAlbums(requireActivity()); + return true; + }); + + bind.starredTracksTextViewRefreshable.setOnLongClickListener(v -> { + homeViewModel.refreshStarredTracks(requireActivity()); + return true; + }); + + bind.starredAlbumsTextViewRefreshable.setOnLongClickListener(v -> { + homeViewModel.refreshStarredAlbums(requireActivity()); + return true; + }); + + bind.starredArtistsTextViewRefreshable.setOnLongClickListener(v -> { + homeViewModel.refreshStarredArtists(requireActivity()); + return true; + }); } private void initDiscoverSongSlideView() { 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 80414c4e..98940bbe 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 @@ -78,6 +78,23 @@ public class LibraryFragment extends Fragment { bind.artistCatalogueTextViewClickable.setOnClickListener(v -> activity.navController.navigate(R.id.action_libraryFragment_to_artistCatalogueFragment)); bind.genreCatalogueTextViewClickable.setOnClickListener(v -> activity.navController.navigate(R.id.action_libraryFragment_to_genreCatalogueFragment)); bind.playlistCatalogueTextViewClickable.setOnClickListener(v -> activity.navController.navigate(R.id.action_libraryFragment_to_playlistCatalogueFragment)); + + bind.albumCatalogueSampleTextViewRefreshable.setOnLongClickListener(view -> { + libraryViewModel.refreshAlbumSample(requireActivity()); + return true; + }); + bind.artistCatalogueSampleTextViewRefreshable.setOnLongClickListener(view -> { + libraryViewModel.refreshArtistSample(requireActivity()); + return true; + }); + bind.genreCatalogueSampleTextViewRefreshable.setOnLongClickListener(view -> { + libraryViewModel.refreshGenreSample(requireActivity()); + return true; + }); + bind.playlistCatalogueSampleTextViewRefreshable.setOnLongClickListener(view -> { + libraryViewModel.refreshPlaylistSample(requireActivity()); + return true; + }); } private void initAlbumView() { 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 965b23f3..aa4203bd 100644 --- a/app/src/main/java/com/cappielloantonio/play/viewmodel/HomeViewModel.java +++ b/app/src/main/java/com/cappielloantonio/play/viewmodel/HomeViewModel.java @@ -4,6 +4,7 @@ import android.app.Application; import androidx.annotation.NonNull; import androidx.lifecycle.AndroidViewModel; +import androidx.lifecycle.LifecycleOwner; import androidx.lifecycle.LiveData; import androidx.lifecycle.MutableLiveData; @@ -28,16 +29,16 @@ public class HomeViewModel extends AndroidViewModel { private ArtistRepository artistRepository; private DownloadRepository downloadRepository; - private LiveData> dicoverSongSample; - private LiveData> mostPlayedAlbumSample; - private LiveData> recentlyAddedAlbumSample; - private LiveData> recentlyPlayedAlbumSample; + private MutableLiveData> dicoverSongSample; + private MutableLiveData> mostPlayedAlbumSample; + private MutableLiveData> recentlyAddedAlbumSample; + private MutableLiveData> recentlyPlayedAlbumSample; private LiveData> downloadedSongSample; private LiveData> years; - private LiveData> starredTracks; - private LiveData> starredAlbums; - private LiveData> starredArtists; + private MutableLiveData> starredTracks; + private MutableLiveData> starredAlbums; + private MutableLiveData> starredArtists; public HomeViewModel(@NonNull Application application) { super(application); @@ -98,4 +99,32 @@ public class HomeViewModel extends AndroidViewModel { public LiveData> getRecentlyPlayedAlbumList() { return recentlyPlayedAlbumSample; } + + public void refreshDiscoverySongSample(LifecycleOwner owner) { + songRepository.getRandomSample(10, null, null).observe(owner, songs -> dicoverSongSample.postValue(songs)); + } + + public void refreshStarredTracks(LifecycleOwner owner) { + songRepository.getStarredSongs().observe(owner, songs -> starredTracks.postValue(songs)); + } + + public void refreshStarredAlbums(LifecycleOwner owner) { + albumRepository.getStarredAlbums().observe(owner, albums -> starredAlbums.postValue(albums)); + } + + public void refreshStarredArtists(LifecycleOwner owner) { + artistRepository.getStarredArtists().observe(owner, artists -> starredArtists.postValue(artists)); + } + + public void refreshMostPlayedAlbums(LifecycleOwner owner) { + albumRepository.getAlbums("frequent", 20).observe(owner, albums -> mostPlayedAlbumSample.postValue(albums)); + } + + public void refreshMostRecentlyAddedAlbums(LifecycleOwner owner) { + albumRepository.getAlbums("newest", 20).observe(owner, albums -> recentlyAddedAlbumSample.postValue(albums)); + } + + public void refreshRecentlyPlayedAlbumList(LifecycleOwner owner) { + albumRepository.getAlbums("recent", 20).observe(owner, albums -> recentlyPlayedAlbumSample.postValue(albums)); + } } 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 659df257..507c8c03 100644 --- a/app/src/main/java/com/cappielloantonio/play/viewmodel/LibraryViewModel.java +++ b/app/src/main/java/com/cappielloantonio/play/viewmodel/LibraryViewModel.java @@ -4,7 +4,9 @@ import android.app.Application; import androidx.annotation.NonNull; import androidx.lifecycle.AndroidViewModel; +import androidx.lifecycle.LifecycleOwner; import androidx.lifecycle.LiveData; +import androidx.lifecycle.MutableLiveData; import com.cappielloantonio.play.model.Album; import com.cappielloantonio.play.model.Artist; @@ -23,10 +25,10 @@ public class LibraryViewModel extends AndroidViewModel { private GenreRepository genreRepository; private PlaylistRepository playlistRepository; - private LiveData> playlistSample; - private LiveData> sampleAlbum; - private LiveData> sampleArtist; - private LiveData> sampleGenres; + private MutableLiveData> playlistSample; + private MutableLiveData> sampleAlbum; + private MutableLiveData> sampleArtist; + private MutableLiveData> sampleGenres; public LibraryViewModel(@NonNull Application application) { super(application); @@ -44,10 +46,6 @@ public class LibraryViewModel extends AndroidViewModel { playlistSample = playlistRepository.getPlaylists(true, 10); } - public LiveData> getPlaylistSample() { - return playlistSample; - } - public LiveData> getAlbumSample() { return sampleAlbum; } @@ -59,4 +57,24 @@ public class LibraryViewModel extends AndroidViewModel { public LiveData> getGenreSample() { return sampleGenres; } + + public LiveData> getPlaylistSample() { + return playlistSample; + } + + public void refreshAlbumSample(LifecycleOwner owner) { + albumRepository.getAlbums("random", 20).observe(owner, albums -> sampleAlbum.postValue(albums)); + } + + public void refreshArtistSample(LifecycleOwner owner) { + artistRepository.getArtists(true, 20).observe(owner, artists -> sampleArtist.postValue(artists)); + } + + public void refreshGenreSample(LifecycleOwner owner) { + genreRepository.getGenres(true, 15).observe(owner, genres -> sampleGenres.postValue(genres)); + } + + public void refreshPlaylistSample(LifecycleOwner owner) { + playlistRepository.getPlaylists(true, 10).observe(owner, playlists -> playlistSample.postValue(playlists)); + } } diff --git a/app/src/main/res/layout/fragment_home.xml b/app/src/main/res/layout/fragment_home.xml index 49143ff8..937f397f 100644 --- a/app/src/main/res/layout/fragment_home.xml +++ b/app/src/main/res/layout/fragment_home.xml @@ -30,6 +30,7 @@ android:clipChildren="false">