diff --git a/.idea/codeStyles/Project.xml b/.idea/codeStyles/Project.xml
new file mode 100644
index 00000000..4bec4ea8
--- /dev/null
+++ b/.idea/codeStyles/Project.xml
@@ -0,0 +1,117 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ xmlns:android
+
+ ^$
+
+
+
+
+
+
+
+
+ xmlns:.*
+
+ ^$
+
+
+ BY_NAME
+
+
+
+
+
+
+ .*:id
+
+ http://schemas.android.com/apk/res/android
+
+
+
+
+
+
+
+
+ .*:name
+
+ http://schemas.android.com/apk/res/android
+
+
+
+
+
+
+
+
+ name
+
+ ^$
+
+
+
+
+
+
+
+
+ style
+
+ ^$
+
+
+
+
+
+
+
+
+ .*
+
+ ^$
+
+
+ BY_NAME
+
+
+
+
+
+
+ .*
+
+ http://schemas.android.com/apk/res/android
+
+
+ ANDROID_ATTRIBUTE_ORDER
+
+
+
+
+
+
+ .*
+
+ .*
+
+
+ BY_NAME
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/codeStyles/codeStyleConfig.xml b/.idea/codeStyles/codeStyleConfig.xml
new file mode 100644
index 00000000..a55e7a17
--- /dev/null
+++ b/.idea/codeStyles/codeStyleConfig.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
index e826b7cf..d940b73a 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -33,13 +33,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
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 89ebf2c6..23d8bc38 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
@@ -1,7 +1,6 @@
package com.cappielloantonio.play.ui.fragment;
import android.os.Bundle;
-import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
@@ -182,7 +181,15 @@ public class HomeFragment extends Fragment {
bind.discoverSongViewPager.setAdapter(discoverSongAdapter);
bind.discoverSongViewPager.setOffscreenPageLimit(3);
homeViewModel.getDiscoverSongSample().observe(requireActivity(), songs -> {
- discoverSongAdapter.setItems(songs);
+ if (songs == null) {
+ if (bind != null) bind.homeDiscoveryPlaceholder.placeholder.setVisibility(View.VISIBLE);
+ if (bind != null) bind.homeDiscoverSector.setVisibility(View.GONE);
+ } else {
+ if (bind != null) bind.homeDiscoveryPlaceholder.placeholder.setVisibility(View.GONE);
+ if (bind != null) bind.homeDiscoverSector.setVisibility(!songs.isEmpty() ? View.VISIBLE : View.GONE);
+
+ discoverSongAdapter.setItems(songs);
+ }
});
setDiscoverSongSlideViewOffset(20, 16);
@@ -194,12 +201,17 @@ public class HomeFragment extends Fragment {
mostPlayedAlbumAdapter = new AlbumAdapter(requireContext());
bind.mostPlayedAlbumsRecyclerView.setAdapter(mostPlayedAlbumAdapter);
- homeViewModel.getMostPlayedAlbums().observe(requireActivity(), albums -> {
- if (albums.size() < 10) reorder();
- if (bind != null)
- bind.homeMostPlayedAlbumsSector.setVisibility(!albums.isEmpty() ? View.VISIBLE : View.GONE);
+ homeViewModel.getMostPlayedAlbums(requireActivity()).observe(requireActivity(), albums -> {
+ if (albums == null) {
+ if (bind != null) bind.homeMostPlayedAlbumsPlaceholder.placeholder.setVisibility(View.VISIBLE);
+ if (bind != null) bind.homeMostPlayedAlbumsSector.setVisibility(View.GONE);
+ } else {
+ if (bind != null) bind.homeMostPlayedAlbumsPlaceholder.placeholder.setVisibility(View.GONE);
+ if (bind != null) bind.homeMostPlayedAlbumsSector.setVisibility(!albums.isEmpty() ? View.VISIBLE : View.GONE);
+ if (albums.size() < 10) reorder();
- mostPlayedAlbumAdapter.setItems(albums);
+ mostPlayedAlbumAdapter.setItems(albums);
+ }
});
CustomLinearSnapHelper mostPlayedAlbumSnapHelper = new CustomLinearSnapHelper();
@@ -212,11 +224,16 @@ public class HomeFragment extends Fragment {
recentlyPlayedAlbumAdapter = new AlbumAdapter(requireContext());
bind.recentlyPlayedAlbumsRecyclerView.setAdapter(recentlyPlayedAlbumAdapter);
- homeViewModel.getRecentlyPlayedAlbumList().observe(requireActivity(), albums -> {
- if (bind != null)
- bind.homeRecentlyPlayedAlbumsSector.setVisibility(!albums.isEmpty() ? View.VISIBLE : View.GONE);
+ homeViewModel.getRecentlyPlayedAlbumList(requireActivity()).observe(requireActivity(), albums -> {
+ if (albums == null) {
+ if (bind != null) bind.homeRecentlyPlayedAlbumsPlaceholder.placeholder.setVisibility(View.VISIBLE);
+ if (bind != null) bind.homeRecentlyPlayedAlbumsSector.setVisibility(View.GONE);
+ } else {
+ if (bind != null) bind.homeRecentlyPlayedAlbumsPlaceholder.placeholder.setVisibility(View.GONE);
+ if (bind != null) bind.homeRecentlyPlayedAlbumsSector.setVisibility(!albums.isEmpty() ? View.VISIBLE : View.GONE);
- recentlyPlayedAlbumAdapter.setItems(albums);
+ recentlyPlayedAlbumAdapter.setItems(albums);
+ }
});
CustomLinearSnapHelper recentPlayedAlbumSnapHelper = new CustomLinearSnapHelper();
@@ -235,11 +252,16 @@ public class HomeFragment extends Fragment {
activity.navController.navigate(R.id.action_homeFragment_to_songListPageFragment, bundle);
});
bind.yearsRecyclerView.setAdapter(yearAdapter);
- homeViewModel.getYearList().observe(requireActivity(), years -> {
- if (bind != null)
- bind.homeFlashbackSector.setVisibility(!years.isEmpty() ? View.VISIBLE : View.GONE);
+ homeViewModel.getYearList(requireActivity()).observe(requireActivity(), years -> {
+ if (years == null) {
+ if (bind != null) bind.homeFlashbackPlaceholder.placeholder.setVisibility(View.VISIBLE);
+ if (bind != null) bind.homeFlashbackSector.setVisibility(View.GONE);
+ } else {
+ if (bind != null) bind.homeFlashbackPlaceholder.placeholder.setVisibility(View.GONE);
+ if (bind != null) bind.homeFlashbackSector.setVisibility(!years.isEmpty() ? View.VISIBLE : View.GONE);
- yearAdapter.setItems(years);
+ yearAdapter.setItems(years);
+ }
});
CustomLinearSnapHelper yearSnapHelper = new CustomLinearSnapHelper();
@@ -251,12 +273,17 @@ public class HomeFragment extends Fragment {
starredSongAdapter = new SongHorizontalAdapter(activity, requireContext());
bind.starredTracksRecyclerView.setAdapter(starredSongAdapter);
- homeViewModel.getStarredTracks().observe(requireActivity(), songs -> {
- if (bind != null) {
- bind.homeStarredTracksSector.setVisibility(!songs.isEmpty() ? View.VISIBLE : View.GONE);
- bind.starredTracksRecyclerView.setLayoutManager(new GridLayoutManager(requireContext(), UIUtil.getSpanCount(songs.size(), 5), GridLayoutManager.HORIZONTAL, false));
+ homeViewModel.getStarredTracks(requireActivity()).observe(requireActivity(), songs -> {
+ if (songs == null) {
+ if (bind != null) bind.homeStarredTracksPlaceholder.placeholder.setVisibility(View.VISIBLE);
+ if (bind != null) bind.homeStarredTracksSector.setVisibility(View.GONE);
+ } else {
+ if (bind != null) bind.homeStarredTracksPlaceholder.placeholder.setVisibility(View.GONE);
+ if (bind != null) bind.homeStarredTracksSector.setVisibility(!songs.isEmpty() ? View.VISIBLE : View.GONE);
+ if (bind != null) bind.starredTracksRecyclerView.setLayoutManager(new GridLayoutManager(requireContext(), UIUtil.getSpanCount(songs.size(), 5), GridLayoutManager.HORIZONTAL, false));
+
+ starredSongAdapter.setItems(songs);
}
- starredSongAdapter.setItems(songs);
});
SnapHelper starredTrackSnapHelper = new PagerSnapHelper();
@@ -268,12 +295,17 @@ public class HomeFragment extends Fragment {
starredAlbumAdapter = new AlbumHorizontalAdapter(requireContext());
bind.starredAlbumsRecyclerView.setAdapter(starredAlbumAdapter);
- homeViewModel.getStarredAlbums().observe(requireActivity(), albums -> {
- if (bind != null) {
- bind.homeStarredAlbumsSector.setVisibility(!albums.isEmpty() ? View.VISIBLE : View.GONE);
- bind.starredAlbumsRecyclerView.setLayoutManager(new GridLayoutManager(requireContext(), UIUtil.getSpanCount(albums.size(), 5), GridLayoutManager.HORIZONTAL, false));
+ homeViewModel.getStarredAlbums(requireActivity()).observe(requireActivity(), albums -> {
+ if (albums == null) {
+ if (bind != null) bind.homeStarredAlbumsPlaceholder.placeholder.setVisibility(View.VISIBLE);
+ if (bind != null) bind.homeStarredAlbumsSector.setVisibility(View.GONE);
+ } else {
+ if (bind != null) bind.homeStarredAlbumsPlaceholder.placeholder.setVisibility(View.GONE);
+ if (bind != null) bind.homeStarredAlbumsSector.setVisibility(!albums.isEmpty() ? View.VISIBLE : View.GONE);
+ if (bind != null) bind.starredAlbumsRecyclerView.setLayoutManager(new GridLayoutManager(requireContext(), UIUtil.getSpanCount(albums.size(), 5), GridLayoutManager.HORIZONTAL, false));
+
+ starredAlbumAdapter.setItems(albums);
}
- starredAlbumAdapter.setItems(albums);
});
SnapHelper starredAlbumSnapHelper = new PagerSnapHelper();
@@ -285,12 +317,17 @@ public class HomeFragment extends Fragment {
starredArtistAdapter = new ArtistHorizontalAdapter(requireContext());
bind.starredArtistsRecyclerView.setAdapter(starredArtistAdapter);
- homeViewModel.getStarredArtists().observe(requireActivity(), artists -> {
- if (bind != null) {
- bind.homeStarredArtistsSector.setVisibility(!artists.isEmpty() ? View.VISIBLE : View.GONE);
- bind.starredArtistsRecyclerView.setLayoutManager(new GridLayoutManager(requireContext(), UIUtil.getSpanCount(artists.size(), 5), GridLayoutManager.HORIZONTAL, false));
+ homeViewModel.getStarredArtists(requireActivity()).observe(requireActivity(), artists -> {
+ if (artists == null) {
+ if (bind != null) bind.homeStarredArtistsPlaceholder.placeholder.setVisibility(View.VISIBLE);
+ if (bind != null) bind.homeStarredArtistsSector.setVisibility(View.GONE);
+ } else {
+ if (bind != null) bind.homeStarredArtistsPlaceholder.placeholder.setVisibility(View.GONE);
+ if (bind != null) bind.homeStarredArtistsSector.setVisibility(!artists.isEmpty() ? View.VISIBLE : View.GONE);
+ if (bind != null) bind.starredArtistsRecyclerView.setLayoutManager(new GridLayoutManager(requireContext(), UIUtil.getSpanCount(artists.size(), 5), GridLayoutManager.HORIZONTAL, false));
+
+ starredArtistAdapter.setItems(artists);
}
- starredArtistAdapter.setItems(artists);
});
SnapHelper starredArtistSnapHelper = new PagerSnapHelper();
@@ -303,8 +340,16 @@ public class HomeFragment extends Fragment {
recentlyAddedAlbumAdapter = new AlbumAdapter(requireContext());
bind.recentlyAddedAlbumsRecyclerView.setAdapter(recentlyAddedAlbumAdapter);
- homeViewModel.getMostRecentlyAddedAlbums().observe(requireActivity(), albums -> {
- recentlyAddedAlbumAdapter.setItems(albums);
+ homeViewModel.getMostRecentlyAddedAlbums(requireActivity()).observe(requireActivity(), albums -> {
+ if (albums == null) {
+ if (bind != null) bind.homeRecentlyAddedAlbumsPlaceholder.placeholder.setVisibility(View.VISIBLE);
+ if (bind != null) bind.homeRecentlyAddedAlbumsSector.setVisibility(View.GONE);
+ } else {
+ if (bind != null) bind.homeRecentlyAddedAlbumsPlaceholder.placeholder.setVisibility(View.GONE);
+ if (bind != null) bind.homeRecentlyAddedAlbumsSector.setVisibility(!albums.isEmpty() ? View.VISIBLE : View.GONE);
+
+ recentlyAddedAlbumAdapter.setItems(albums);
+ }
});
CustomLinearSnapHelper recentAddedAlbumSnapHelper = new CustomLinearSnapHelper();
@@ -317,11 +362,16 @@ public class HomeFragment extends Fragment {
dowanloadedMusicAdapter = new RecentMusicAdapter(activity, requireContext());
bind.downloadedTracksRecyclerView.setAdapter(dowanloadedMusicAdapter);
- homeViewModel.getDownloaded().observe(requireActivity(), downloads -> {
- if (bind != null)
- bind.homeDownloadedTracksSector.setVisibility(!downloads.isEmpty() ? View.VISIBLE : View.GONE);
+ homeViewModel.getDownloaded(requireActivity()).observe(requireActivity(), downloads -> {
+ if (downloads == null) {
+ if (bind != null) bind.homeDownloadedTracksPlaceholder.placeholder.setVisibility(View.VISIBLE);
+ if (bind != null) bind.homeDownloadedTracksSector.setVisibility(View.GONE);
+ } else {
+ if (bind != null) bind.homeDownloadedTracksPlaceholder.placeholder.setVisibility(View.GONE);
+ if (bind != null) bind.homeDownloadedTracksSector.setVisibility(!downloads.isEmpty() ? View.VISIBLE : View.GONE);
- dowanloadedMusicAdapter.setItems(MappingUtil.mapDownload(downloads));
+ dowanloadedMusicAdapter.setItems(MappingUtil.mapDownload(downloads));
+ }
});
CustomLinearSnapHelper downloadedSongSnapHelper = new CustomLinearSnapHelper();
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 98940bbe..84a7ebf0 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
@@ -104,9 +104,15 @@ public class LibraryFragment extends Fragment {
albumAdapter = new AlbumAdapter(requireContext());
bind.albumRecyclerView.setAdapter(albumAdapter);
libraryViewModel.getAlbumSample().observe(requireActivity(), albums -> {
- if (bind != null)
- bind.libraryAlbumSector.setVisibility(!albums.isEmpty() ? View.VISIBLE : View.GONE);
- albumAdapter.setItems(albums);
+ if (albums == null) {
+ if (bind != null) bind.libraryAlbumPlaceholder.placeholder.setVisibility(View.VISIBLE);
+ if (bind != null) bind.libraryAlbumSector.setVisibility(View.GONE);
+ } else {
+ if (bind != null) bind.libraryAlbumPlaceholder.placeholder.setVisibility(View.GONE);
+ if (bind != null) bind.libraryAlbumSector.setVisibility(!albums.isEmpty() ? View.VISIBLE : View.GONE);
+
+ albumAdapter.setItems(albums);
+ }
});
CustomLinearSnapHelper albumSnapHelper = new CustomLinearSnapHelper();
@@ -120,9 +126,15 @@ public class LibraryFragment extends Fragment {
artistAdapter = new ArtistAdapter(requireContext());
bind.artistRecyclerView.setAdapter(artistAdapter);
libraryViewModel.getArtistSample().observe(requireActivity(), artists -> {
- if (bind != null)
- bind.libraryArtistSector.setVisibility(!artists.isEmpty() ? View.VISIBLE : View.GONE);
- artistAdapter.setItems(artists);
+ if (artists == null) {
+ if (bind != null) bind.libraryArtistPlaceholder.placeholder.setVisibility(View.VISIBLE);
+ if (bind != null) bind.libraryArtistSector.setVisibility(View.GONE);
+ } else {
+ if (bind != null) bind.libraryArtistPlaceholder.placeholder.setVisibility(View.GONE);
+ if (bind != null) bind.libraryArtistSector.setVisibility(!artists.isEmpty() ? View.VISIBLE : View.GONE);
+
+ artistAdapter.setItems(artists);
+ }
});
CustomLinearSnapHelper artistSnapHelper = new CustomLinearSnapHelper();
@@ -142,9 +154,15 @@ public class LibraryFragment extends Fragment {
});
bind.genreRecyclerView.setAdapter(genreAdapter);
libraryViewModel.getGenreSample().observe(requireActivity(), genres -> {
- if (bind != null)
- bind.libraryGenresSector.setVisibility(!genres.isEmpty() ? View.VISIBLE : View.GONE);
- genreAdapter.setItems(genres);
+ if (genres == null) {
+ if (bind != null) bind.libraryGenrePlaceholder.placeholder.setVisibility(View.VISIBLE);
+ if (bind != null) bind.libraryGenresSector.setVisibility(View.GONE);
+ } else {
+ if (bind != null) bind.libraryGenrePlaceholder.placeholder.setVisibility(View.GONE);
+ if (bind != null) bind.libraryGenresSector.setVisibility(!genres.isEmpty() ? View.VISIBLE : View.GONE);
+
+ genreAdapter.setItems(genres);
+ }
});
CustomLinearSnapHelper genreSnapHelper = new CustomLinearSnapHelper();
@@ -158,9 +176,15 @@ public class LibraryFragment extends Fragment {
bind.playlistViewPager.setAdapter(playlistAdapter);
bind.playlistViewPager.setOffscreenPageLimit(3);
libraryViewModel.getPlaylistSample().observe(requireActivity(), playlists -> {
- if (bind != null)
- bind.libraryPlaylistSector.setVisibility(!playlists.isEmpty() ? View.VISIBLE : View.GONE);
- playlistAdapter.setItems(playlists);
+ if (playlists == null) {
+ if (bind != null) bind.libraryPlaylistPlaceholder.placeholder.setVisibility(View.VISIBLE);
+ if (bind != null) bind.libraryPlaylistSector.setVisibility(View.GONE);
+ } else {
+ if (bind != null) bind.libraryPlaylistPlaceholder.placeholder.setVisibility(View.GONE);
+ if (bind != null) bind.libraryPlaylistSector.setVisibility(!playlists.isEmpty() ? View.VISIBLE : View.GONE);
+
+ playlistAdapter.setItems(playlists);
+ }
});
setDiscoverSongSlideViewOffset(20, 16);
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 f036a9f3..ef8e8eba 100644
--- a/app/src/main/java/com/cappielloantonio/play/viewmodel/HomeViewModel.java
+++ b/app/src/main/java/com/cappielloantonio/play/viewmodel/HomeViewModel.java
@@ -21,21 +21,21 @@ import java.util.List;
public class HomeViewModel extends AndroidViewModel {
private static final String TAG = "HomeViewModel";
- private SongRepository songRepository;
- private AlbumRepository albumRepository;
- private ArtistRepository artistRepository;
- private DownloadRepository downloadRepository;
- private MutableLiveData> dicoverSongSample;
- private MutableLiveData> mostPlayedAlbumSample;
- private MutableLiveData> recentlyAddedAlbumSample;
- private MutableLiveData> recentlyPlayedAlbumSample;
- private LiveData> downloadedSongSample;
- private LiveData> years;
+ private final SongRepository songRepository;
+ private final AlbumRepository albumRepository;
+ private final ArtistRepository artistRepository;
+ private final DownloadRepository downloadRepository;
- private MutableLiveData> starredTracks;
- private MutableLiveData> starredAlbums;
- private MutableLiveData> starredArtists;
+ private final MutableLiveData> dicoverSongSample = new MutableLiveData<>(null);
+ private final MutableLiveData> mostPlayedAlbumSample = new MutableLiveData<>(null);
+ private final MutableLiveData> recentlyPlayedAlbumSample = new MutableLiveData<>(null);
+ private final MutableLiveData> years = new MutableLiveData<>(null);
+ private final MutableLiveData> starredTracks = new MutableLiveData<>(null);
+ private final MutableLiveData> starredAlbums = new MutableLiveData<>(null);
+ private final MutableLiveData> starredArtists = new MutableLiveData<>(null);
+ private final MutableLiveData> downloadedSongSample = new MutableLiveData<>(null);
+ private final MutableLiveData> recentlyAddedAlbumSample = new MutableLiveData<>(null);
public HomeViewModel(@NonNull Application application) {
super(application);
@@ -45,83 +45,78 @@ public class HomeViewModel extends AndroidViewModel {
artistRepository = new ArtistRepository(application);
downloadRepository = new DownloadRepository(application);
- dicoverSongSample = songRepository.getRandomSample(10, null, null);
- mostPlayedAlbumSample = albumRepository.getAlbums("frequent", 20);
- recentlyAddedAlbumSample = albumRepository.getAlbums("newest", 20);
- recentlyPlayedAlbumSample = albumRepository.getAlbums("recent", 20);
- downloadedSongSample = downloadRepository.getLiveDownloadSample(10);
- years = albumRepository.getDecades();
-
- starredTracks = songRepository.getStarredSongs();
- starredAlbums = albumRepository.getStarredAlbums();
- starredArtists = artistRepository.getStarredArtists();
- }
-
- public SongRepository getSongRepository() {
- return songRepository;
+ songRepository.getRandomSample(10, null, null).observeForever(dicoverSongSample::postValue);
}
public LiveData> getDiscoverSongSample() {
return dicoverSongSample;
}
- public LiveData> getYearList() {
+ public LiveData> getYearList(LifecycleOwner owner) {
+ albumRepository.getDecades().observe(owner, years::postValue);
return years;
}
- public LiveData> getStarredTracks() {
+ public LiveData> getStarredTracks(LifecycleOwner owner) {
+ songRepository.getStarredSongs().observe(owner, starredTracks::postValue);
return starredTracks;
}
- public LiveData> getStarredAlbums() {
+ public LiveData> getStarredAlbums(LifecycleOwner owner) {
+ albumRepository.getStarredAlbums().observe(owner, starredAlbums::postValue);
return starredAlbums;
}
- public LiveData> getStarredArtists() {
+ public LiveData> getStarredArtists(LifecycleOwner owner) {
+ artistRepository.getStarredArtists().observe(owner, starredArtists::postValue);
return starredArtists;
}
- public LiveData> getDownloaded() {
+ public LiveData> getDownloaded(LifecycleOwner owner) {
+ downloadRepository.getLiveDownloadSample(10).observe(owner, downloadedSongSample::postValue);
return downloadedSongSample;
}
- public LiveData> getMostPlayedAlbums() {
+ public LiveData> getMostPlayedAlbums(LifecycleOwner owner) {
+ albumRepository.getAlbums("frequent", 20).observe(owner, mostPlayedAlbumSample::postValue);
return mostPlayedAlbumSample;
}
- public LiveData> getMostRecentlyAddedAlbums() {
+ public LiveData> getMostRecentlyAddedAlbums(LifecycleOwner owner) {
+ albumRepository.getAlbums("newest", 20).observe(owner, recentlyAddedAlbumSample::postValue);
return recentlyAddedAlbumSample;
}
- public LiveData> getRecentlyPlayedAlbumList() {
+ public LiveData> getRecentlyPlayedAlbumList(LifecycleOwner owner) {
+ albumRepository.getAlbums("recent", 20).observe(owner, recentlyPlayedAlbumSample::postValue);
return recentlyPlayedAlbumSample;
}
public void refreshDiscoverySongSample(LifecycleOwner owner) {
- songRepository.getRandomSample(10, null, null).observe(owner, songs -> dicoverSongSample.postValue(songs));
+ songRepository.getRandomSample(10, null, null).observe(owner, dicoverSongSample::postValue);
}
public void refreshStarredTracks(LifecycleOwner owner) {
- songRepository.getStarredSongs().observe(owner, songs -> starredTracks.postValue(songs));
+ songRepository.getStarredSongs().observe(owner, starredTracks::postValue);
}
public void refreshStarredAlbums(LifecycleOwner owner) {
- albumRepository.getStarredAlbums().observe(owner, albums -> starredAlbums.postValue(albums));
+ albumRepository.getStarredAlbums().observe(owner, starredAlbums::postValue);
}
public void refreshStarredArtists(LifecycleOwner owner) {
- artistRepository.getStarredArtists().observe(owner, artists -> starredArtists.postValue(artists));
+ artistRepository.getStarredArtists().observe(owner, starredArtists::postValue);
}
public void refreshMostPlayedAlbums(LifecycleOwner owner) {
- albumRepository.getAlbums("frequent", 20).observe(owner, albums -> mostPlayedAlbumSample.postValue(albums));
+ albumRepository.getAlbums("frequent", 20).observe(owner, mostPlayedAlbumSample::postValue);
}
public void refreshMostRecentlyAddedAlbums(LifecycleOwner owner) {
- albumRepository.getAlbums("newest", 20).observe(owner, albums -> recentlyAddedAlbumSample.postValue(albums));
+ albumRepository.getAlbums("newest", 20).observe(owner, recentlyAddedAlbumSample::postValue);
}
public void refreshRecentlyPlayedAlbumList(LifecycleOwner owner) {
- albumRepository.getAlbums("recent", 20).observe(owner, albums -> recentlyPlayedAlbumSample.postValue(albums));
+ albumRepository.getAlbums("recent", 20).observe(owner, recentlyPlayedAlbumSample::postValue);
}
}
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 507c8c03..cf5ea75c 100644
--- a/app/src/main/java/com/cappielloantonio/play/viewmodel/LibraryViewModel.java
+++ b/app/src/main/java/com/cappielloantonio/play/viewmodel/LibraryViewModel.java
@@ -20,15 +20,15 @@ import com.cappielloantonio.play.repository.PlaylistRepository;
import java.util.List;
public class LibraryViewModel extends AndroidViewModel {
- private AlbumRepository albumRepository;
- private ArtistRepository artistRepository;
- private GenreRepository genreRepository;
- private PlaylistRepository playlistRepository;
+ private final AlbumRepository albumRepository;
+ private final ArtistRepository artistRepository;
+ private final GenreRepository genreRepository;
+ private final PlaylistRepository playlistRepository;
- private MutableLiveData> playlistSample;
- private MutableLiveData> sampleAlbum;
- private MutableLiveData> sampleArtist;
- private MutableLiveData> sampleGenres;
+ private final MutableLiveData> playlistSample = new MutableLiveData<>(null);
+ private final MutableLiveData> sampleAlbum = new MutableLiveData<>(null);
+ private final MutableLiveData> sampleArtist = new MutableLiveData<>(null);
+ private final MutableLiveData> sampleGenres = new MutableLiveData<>(null);
public LibraryViewModel(@NonNull Application application) {
super(application);
@@ -40,10 +40,10 @@ public class LibraryViewModel extends AndroidViewModel {
// Inizializzate all'interno del costruttore, in modo da rimanere immutabili per tutto il
// ciclo di vita dell'applicazione
- sampleAlbum = albumRepository.getAlbums("random", 20);
- sampleArtist = artistRepository.getArtists(true, 20);
- sampleGenres = genreRepository.getGenres(true, 15);
- playlistSample = playlistRepository.getPlaylists(true, 10);
+ albumRepository.getAlbums("random", 20).observeForever(sampleAlbum::postValue);
+ artistRepository.getArtists(true, 20).observeForever(sampleArtist::postValue);
+ genreRepository.getGenres(true, 15).observeForever(sampleGenres::postValue);
+ playlistRepository.getPlaylists(true, 10).observeForever(playlistSample::postValue);
}
public LiveData> getAlbumSample() {
@@ -63,18 +63,18 @@ public class LibraryViewModel extends AndroidViewModel {
}
public void refreshAlbumSample(LifecycleOwner owner) {
- albumRepository.getAlbums("random", 20).observe(owner, albums -> sampleAlbum.postValue(albums));
+ albumRepository.getAlbums("random", 20).observe(owner, sampleAlbum::postValue);
}
public void refreshArtistSample(LifecycleOwner owner) {
- artistRepository.getArtists(true, 20).observe(owner, artists -> sampleArtist.postValue(artists));
+ artistRepository.getArtists(true, 20).observe(owner, sampleArtist::postValue);
}
public void refreshGenreSample(LifecycleOwner owner) {
- genreRepository.getGenres(true, 15).observe(owner, genres -> sampleGenres.postValue(genres));
+ genreRepository.getGenres(true, 15).observe(owner, sampleGenres::postValue);
}
public void refreshPlaylistSample(LifecycleOwner owner) {
- playlistRepository.getPlaylists(true, 10).observe(owner, playlists -> playlistSample.postValue(playlists));
+ playlistRepository.getPlaylists(true, 10).observe(owner, playlistSample::postValue);
}
}
diff --git a/app/src/main/res/layout/dialog_rating.xml b/app/src/main/res/layout/dialog_rating.xml
index af29b0e7..f6f92416 100644
--- a/app/src/main/res/layout/dialog_rating.xml
+++ b/app/src/main/res/layout/dialog_rating.xml
@@ -14,8 +14,8 @@
android:stepSize="1"
android:numStars="5"
android:rating="0"
- android:progressTint="@color/startTintColor"
- android:progressBackgroundTint="@color/startBackgroundTintColor"
+ android:progressTint="@color/starTintColor"
+ android:progressBackgroundTint="@color/starBackgroundTintColor"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"/>
diff --git a/app/src/main/res/layout/fragment_home.xml b/app/src/main/res/layout/fragment_home.xml
index 21fa090a..d3d52a23 100644
--- a/app/src/main/res/layout/fragment_home.xml
+++ b/app/src/main/res/layout/fragment_home.xml
@@ -66,12 +66,18 @@
android:paddingBottom="8dp" />
+
+
+ android:orientation="vertical"
+ android:visibility="gone">
+
+
+
+
+
+
+
+
+
+
+
+
-
+
+
+
+
diff --git a/app/src/main/res/layout/fragment_library.xml b/app/src/main/res/layout/fragment_library.xml
index e44bb398..5cb28d09 100644
--- a/app/src/main/res/layout/fragment_library.xml
+++ b/app/src/main/res/layout/fragment_library.xml
@@ -65,6 +65,11 @@
android:paddingBottom="8dp" />
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/item_placehoder_discovery.xml b/app/src/main/res/layout/item_placehoder_discovery.xml
new file mode 100644
index 00000000..5cceb6bb
--- /dev/null
+++ b/app/src/main/res/layout/item_placehoder_discovery.xml
@@ -0,0 +1,43 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/item_placeholder_album.xml b/app/src/main/res/layout/item_placeholder_album.xml
new file mode 100644
index 00000000..e8ba4e17
--- /dev/null
+++ b/app/src/main/res/layout/item_placeholder_album.xml
@@ -0,0 +1,122 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/item_placeholder_genre.xml b/app/src/main/res/layout/item_placeholder_genre.xml
new file mode 100644
index 00000000..d8d62599
--- /dev/null
+++ b/app/src/main/res/layout/item_placeholder_genre.xml
@@ -0,0 +1,120 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/item_placeholder_horizontal.xml b/app/src/main/res/layout/item_placeholder_horizontal.xml
new file mode 100644
index 00000000..ef007b11
--- /dev/null
+++ b/app/src/main/res/layout/item_placeholder_horizontal.xml
@@ -0,0 +1,300 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/item_placeholder_year.xml b/app/src/main/res/layout/item_placeholder_year.xml
new file mode 100644
index 00000000..20a74f94
--- /dev/null
+++ b/app/src/main/res/layout/item_placeholder_year.xml
@@ -0,0 +1,49 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values-night/colors.xml b/app/src/main/res/values-night/colors.xml
index 580cbce2..ca2e26e4 100644
--- a/app/src/main/res/values-night/colors.xml
+++ b/app/src/main/res/values-night/colors.xml
@@ -32,7 +32,9 @@
#606060
#1D1D1D
- #733ae6
- #1D1D1D
+ #733ae6
+ #1D1D1D
+
+ #1D1D1D
diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml
index 9a06de73..567274d0 100644
--- a/app/src/main/res/values/colors.xml
+++ b/app/src/main/res/values/colors.xml
@@ -37,6 +37,8 @@
#FFFFFF
- #3700B3
- #f0f0f0
+ #3700B3
+ #f0f0f0
+
+ #F1F3F4
\ No newline at end of file