implemented the playlist management logic

This commit is contained in:
CappielloAntonio 2021-08-12 17:33:19 +02:00
parent d2092f5239
commit 4adde9e951
13 changed files with 448 additions and 27 deletions

View file

@ -31,12 +31,9 @@ public class PlaylistCatalogueViewModel extends AndroidViewModel {
super(application);
playlistRepository = new PlaylistRepository(application);
playlists = playlistRepository.getPlaylists(false, -1);
}
public LiveData<List<Playlist>> getPlaylistList() {
return playlists;
return playlistRepository.getPlaylists(false, -1);
}
}

View file

@ -11,6 +11,8 @@ import com.cappielloantonio.play.model.Playlist;
import com.cappielloantonio.play.model.Song;
import com.cappielloantonio.play.repository.PlaylistRepository;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class PlaylistChooserViewModel extends AndroidViewModel {
@ -32,7 +34,7 @@ public class PlaylistChooserViewModel extends AndroidViewModel {
}
public void addSongToPlaylist(String playlistId) {
playlistRepository.addSongToPlaylist(playlistId, toAdd.getId());
playlistRepository.addSongToPlaylist(playlistId, new ArrayList(Collections.singletonList(toAdd.getId())));
}
public void setSongToAdd(Song song) {

View file

@ -1,38 +1,97 @@
package com.cappielloantonio.play.viewmodel;
import android.app.Application;
import android.util.Log;
import androidx.annotation.NonNull;
import androidx.lifecycle.AndroidViewModel;
import androidx.lifecycle.LiveData;
import androidx.lifecycle.MutableLiveData;
import com.cappielloantonio.play.model.Server;
import com.cappielloantonio.play.model.Playlist;
import com.cappielloantonio.play.model.Song;
import com.cappielloantonio.play.repository.PlaylistRepository;
import com.cappielloantonio.play.repository.ServerRepository;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Objects;
public class PlaylistEditorViewModel extends AndroidViewModel {
private static final String TAG = "PlaylistEditorViewModel";
private PlaylistRepository playlistRepository;
private Song toAdd;
private Playlist toEdit;
private MutableLiveData<List<Song>> songLiveList = new MutableLiveData<>();
public PlaylistEditorViewModel(@NonNull Application application) {
super(application);
playlistRepository = new PlaylistRepository(application);
Log.d(TAG, "PlaylistEditorViewModel()");
}
public void createPlaylist(String name) {
playlistRepository.createPlaylist(name, toAdd.getId());
playlistRepository.createPlaylist(null, name, new ArrayList(Collections.singletonList(toAdd.getId())));
}
public void updatePlaylist(String playlistId) {
public void updatePlaylist(String name) {
playlistRepository.deletePlaylist(toEdit.getId());
playlistRepository.createPlaylist(toEdit.getId(), name, getPlaylistSongIds());
}
public void deletePlaylist() {
if (toEdit != null) playlistRepository.deletePlaylist(toEdit.getId());
}
public Song getSongToAdd() {
return toAdd;
}
public void setSongToAdd(Song song) {
toAdd = song;
this.toAdd = song;
}
public Playlist getPlaylistToEdit() {
return toEdit;
}
public void setPlaylistToEdit(Playlist playlist) {
this.toEdit = playlist;
if (playlist != null) {
this.songLiveList = playlistRepository.getPlaylistSongs(toEdit.getId());
} else {
this.songLiveList = new MutableLiveData<>();
}
}
public LiveData<List<Song>> getPlaylistSongLiveList() {
return songLiveList;
}
public void removeFromPlaylistSongLiveList(Song song) {
List<Song> songs = songLiveList.getValue();
Objects.requireNonNull(songs).remove(song);
songLiveList.postValue(songs);
}
public void orderPlaylistSongLiveListAfterSwap(List<Song> songs) {
songLiveList.postValue(songs);
}
private ArrayList<String> getPlaylistSongIds() {
List<Song> songs = songLiveList.getValue();
ArrayList<String> ids = new ArrayList<>();
for (Song song : songs) {
ids.add(song.getId());
}
return ids;
}
}