package com.cappielloantonio.play.viewmodel; import android.app.Application; import android.os.Bundle; import androidx.annotation.NonNull; import androidx.lifecycle.AndroidViewModel; import com.cappielloantonio.play.model.Playlist; import com.cappielloantonio.play.model.Song; import com.cappielloantonio.play.repository.AlbumRepository; import com.cappielloantonio.play.repository.ArtistRepository; import com.cappielloantonio.play.repository.GenreRepository; import com.cappielloantonio.play.repository.PlaylistRepository; import com.cappielloantonio.play.repository.PlaylistSongRepository; import com.cappielloantonio.play.repository.SongRepository; import com.cappielloantonio.play.subsonic.models.AlbumID3; import com.cappielloantonio.play.subsonic.models.ArtistID3; import com.cappielloantonio.play.subsonic.models.Child; import com.cappielloantonio.play.subsonic.models.Genre; import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; public class SyncViewModel extends AndroidViewModel { private static final String TAG = "SyncViewModel"; private boolean syncAlbum = false; private boolean syncArtist = false; private boolean syncGenres = false; private boolean syncPlaylist = false; private boolean syncSong = false; private ArrayList albumList = new ArrayList<>(); private ArrayList artistList = new ArrayList<>(); private ArrayList genreList = new ArrayList<>(); private ArrayList playlistList = new ArrayList<>(); private ArrayList songList = new ArrayList<>(); private ArrayList childList = new ArrayList<>(); private SongRepository songRepository; private AlbumRepository albumRepository; private ArtistRepository artistRepository; private PlaylistRepository playlistRepository; private GenreRepository genreRepository; private PlaylistSongRepository playlistSongRepository; public SyncViewModel(@NonNull Application application) { super(application); songRepository = new SongRepository(application); albumRepository = new AlbumRepository(application); artistRepository = new ArtistRepository(application); playlistRepository = new PlaylistRepository(application); genreRepository = new GenreRepository(application); playlistSongRepository = new PlaylistSongRepository(application); } public void setArguemnts(Bundle bundle) { syncAlbum = bundle.getBoolean("sync_album", false); syncArtist = bundle.getBoolean("sync_artist", false); syncGenres = bundle.getBoolean("sync_genres", false); syncPlaylist = bundle.getBoolean("sync_playlist", false); syncSong = bundle.getBoolean("sync_song", false); } public boolean isSyncAlbum() { return syncAlbum; } public boolean isSyncArtist() { return syncArtist; } public boolean isSyncGenres() { return syncGenres; } public boolean isSyncPlaylist() { return syncPlaylist; } public boolean isSyncSong() { return syncSong; } public ArrayList getAlbumList() { return albumList; } public void addToAlbumList(List albumList) { this.albumList.addAll(albumList); } public ArrayList getArtistList() { return artistList; } public void setArtistList(ArrayList artistList) { this.artistList = artistList; } public ArrayList getGenreList() { return genreList; } public void setGenreList(ArrayList genreList) { this.genreList = genreList; } public ArrayList getPlaylistList() { return playlistList; } public void setPlaylistList(ArrayList playlistList) { this.playlistList = playlistList; } public ArrayList getSongList() { return songList; } public void setSongList(ArrayList songList) { this.songList = songList; } public ArrayList getChildList() { return childList; } public void addToChildList(ArrayList childList) { this.childList.addAll(childList); } public Map getCatalogue() { Map map = new HashMap<>(); for (Song song : songRepository.getCatalogue()) { map.put(song.hashCode(), song); } return map; } }