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">