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 @@ + + + + + + \ 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