mirror of
https://github.com/antebudimir/tempus.git
synced 2026-01-01 09:53:33 +00:00
Download entire playlists in separate section
This commit is contained in:
parent
f89f3454c4
commit
d2a80c064c
23 changed files with 367 additions and 79 deletions
|
|
@ -10,6 +10,7 @@ import androidx.lifecycle.MutableLiveData;
|
|||
|
||||
import com.cappielloantonio.play.model.Album;
|
||||
import com.cappielloantonio.play.model.Artist;
|
||||
import com.cappielloantonio.play.model.Playlist;
|
||||
import com.cappielloantonio.play.model.Song;
|
||||
import com.cappielloantonio.play.repository.DownloadRepository;
|
||||
import com.cappielloantonio.play.util.MappingUtil;
|
||||
|
|
@ -24,6 +25,7 @@ public class DownloadViewModel extends AndroidViewModel {
|
|||
private final MutableLiveData<List<Artist>> downloadedArtistSample = new MutableLiveData<>(null);
|
||||
private final MutableLiveData<List<Album>> downloadedAlbumSample = new MutableLiveData<>(null);
|
||||
private final MutableLiveData<List<Song>> downloadedTrackSample = new MutableLiveData<>(null);
|
||||
private final MutableLiveData<List<Playlist>> downloadedPlaylistSample = new MutableLiveData<>(null);
|
||||
|
||||
public DownloadViewModel(@NonNull Application application) {
|
||||
super(application);
|
||||
|
|
@ -32,17 +34,22 @@ public class DownloadViewModel extends AndroidViewModel {
|
|||
}
|
||||
|
||||
public LiveData<List<Artist>> getDownloadedArtists(LifecycleOwner owner, int size) {
|
||||
downloadRepository.getLiveDownloadSample(size, true, false, false).observe(owner, downloads -> downloadedArtistSample.postValue(MappingUtil.mapDownloadToArtist(downloads)));
|
||||
downloadRepository.getLiveDownloadSample(size, true, false, false, false).observe(owner, downloads -> downloadedArtistSample.postValue(MappingUtil.mapDownloadToArtist(downloads)));
|
||||
return downloadedArtistSample;
|
||||
}
|
||||
|
||||
public LiveData<List<Album>> getDownloadedAlbums(LifecycleOwner owner, int size) {
|
||||
downloadRepository.getLiveDownloadSample(size, false, true, false).observe(owner, downloads -> downloadedAlbumSample.postValue(MappingUtil.mapDownloadToAlbum(downloads)));
|
||||
downloadRepository.getLiveDownloadSample(size, false, true, false, false).observe(owner, downloads -> downloadedAlbumSample.postValue(MappingUtil.mapDownloadToAlbum(downloads)));
|
||||
return downloadedAlbumSample;
|
||||
}
|
||||
|
||||
public LiveData<List<Song>> getDownloadedTracks(LifecycleOwner owner, int size) {
|
||||
downloadRepository.getLiveDownloadSample(size, false, false, true).observe(owner, downloads -> downloadedTrackSample.postValue(MappingUtil.mapDownloadToSong(downloads)));
|
||||
downloadRepository.getLiveDownloadSample(size, false, false, true, false).observe(owner, downloads -> downloadedTrackSample.postValue(MappingUtil.mapDownloadToSong(downloads)));
|
||||
return downloadedTrackSample;
|
||||
}
|
||||
|
||||
public LiveData<List<Playlist>> getDownloadedPlaylists(LifecycleOwner owner, int size) {
|
||||
downloadRepository.getLiveDownloadSample(size, false, false, false, true).observe(owner, downloads -> downloadedPlaylistSample.postValue(MappingUtil.mapDownloadToPlaylist(downloads)));
|
||||
return downloadedPlaylistSample;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,24 +3,57 @@ package com.cappielloantonio.play.viewmodel;
|
|||
import android.app.Application;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.fragment.app.FragmentActivity;
|
||||
import androidx.lifecycle.AndroidViewModel;
|
||||
import androidx.lifecycle.LiveData;
|
||||
import androidx.lifecycle.MutableLiveData;
|
||||
|
||||
import com.cappielloantonio.play.model.Album;
|
||||
import com.cappielloantonio.play.model.Playlist;
|
||||
import com.cappielloantonio.play.repository.DownloadRepository;
|
||||
import com.cappielloantonio.play.repository.PlaylistRepository;
|
||||
import com.cappielloantonio.play.util.MappingUtil;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class PlaylistCatalogueViewModel extends AndroidViewModel {
|
||||
private final PlaylistRepository playlistRepository;
|
||||
private final DownloadRepository downloadRepository;
|
||||
|
||||
private String type;
|
||||
|
||||
private MutableLiveData<List<Playlist>> playlistList;
|
||||
|
||||
public PlaylistCatalogueViewModel(@NonNull Application application) {
|
||||
super(application);
|
||||
|
||||
playlistRepository = new PlaylistRepository(application);
|
||||
downloadRepository = new DownloadRepository(application);
|
||||
}
|
||||
|
||||
public LiveData<List<Playlist>> getPlaylistList() {
|
||||
return playlistRepository.getPlaylists(false, -1);
|
||||
public LiveData<List<Playlist>> getPlaylistList(FragmentActivity activity) {
|
||||
playlistList = new MutableLiveData<>(new ArrayList<>());
|
||||
|
||||
switch (type) {
|
||||
case Playlist.ALL:
|
||||
playlistRepository.getPlaylists(false, -1).observe(activity, playlists -> playlistList.postValue(playlists));
|
||||
break;
|
||||
case Playlist.DOWNLOADED:
|
||||
downloadRepository.getLivePlaylist().observe(activity, downloads -> playlistList.setValue(MappingUtil.mapDownloadToPlaylist(downloads)));
|
||||
break;
|
||||
}
|
||||
|
||||
playlistRepository.getPlaylists(false, -1);
|
||||
|
||||
return playlistList;
|
||||
}
|
||||
|
||||
public void setType(String type) {
|
||||
this.type = type;
|
||||
}
|
||||
|
||||
public String getType() {
|
||||
return type;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,28 +3,45 @@ package com.cappielloantonio.play.viewmodel;
|
|||
import android.app.Application;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.fragment.app.FragmentActivity;
|
||||
import androidx.lifecycle.AndroidViewModel;
|
||||
import androidx.lifecycle.LiveData;
|
||||
import androidx.lifecycle.MutableLiveData;
|
||||
|
||||
import com.cappielloantonio.play.model.Album;
|
||||
import com.cappielloantonio.play.model.Playlist;
|
||||
import com.cappielloantonio.play.model.Song;
|
||||
import com.cappielloantonio.play.repository.DownloadRepository;
|
||||
import com.cappielloantonio.play.repository.PlaylistRepository;
|
||||
import com.cappielloantonio.play.util.MappingUtil;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class PlaylistPageViewModel extends AndroidViewModel {
|
||||
private final PlaylistRepository playlistRepository;
|
||||
private final DownloadRepository downloadRepository;
|
||||
|
||||
private MutableLiveData<List<Song>> playlistSongLiveList = new MutableLiveData<>();
|
||||
|
||||
private Playlist playlist;
|
||||
private boolean isOffline;
|
||||
|
||||
public PlaylistPageViewModel(@NonNull Application application) {
|
||||
super(application);
|
||||
|
||||
playlistRepository = new PlaylistRepository(application);
|
||||
downloadRepository = new DownloadRepository(application);
|
||||
}
|
||||
|
||||
public MutableLiveData<List<Song>> getPlaylistSongLiveList() {
|
||||
return playlistRepository.getPlaylistSongs(playlist.getId());
|
||||
public LiveData<List<Song>> getPlaylistSongLiveList(FragmentActivity activity) {
|
||||
if (isOffline) {
|
||||
downloadRepository.getLiveDownloadFromPlaylist(playlist.getId()).observe(activity, downloads -> playlistSongLiveList.postValue(MappingUtil.mapDownloadToSong(downloads)));
|
||||
}
|
||||
else {
|
||||
playlistSongLiveList = playlistRepository.getPlaylistSongs(playlist.getId());
|
||||
}
|
||||
|
||||
return playlistSongLiveList;
|
||||
}
|
||||
|
||||
public Playlist getPlaylist() {
|
||||
|
|
@ -34,4 +51,12 @@ public class PlaylistPageViewModel extends AndroidViewModel {
|
|||
public void setPlaylist(Playlist playlist) {
|
||||
this.playlist = playlist;
|
||||
}
|
||||
|
||||
public void setOffline(boolean offline) {
|
||||
isOffline = offline;
|
||||
}
|
||||
|
||||
public boolean isOffline() {
|
||||
return isOffline;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue