mirror of
https://github.com/antebudimir/tempus.git
synced 2025-12-31 17:43:32 +00:00
Change PlaylistChooserDialog\PlaylistEditorDialog to require ArrayList of Songs
This allows for being able to provide an entire Album's worth of songs in one API call.
This commit is contained in:
parent
9cf62c8c0c
commit
bfdeb0658b
5 changed files with 25 additions and 20 deletions
|
|
@ -57,14 +57,14 @@ public class PlaylistChooserDialog extends DialogFragment implements ClickCallba
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setSongInfo() {
|
private void setSongInfo() {
|
||||||
playlistChooserViewModel.setSongToAdd(requireArguments().getParcelable(Constants.TRACK_OBJECT));
|
playlistChooserViewModel.setSongsToAdd(requireArguments().getParcelableArrayList(Constants.TRACKS_OBJECT));
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setButtonAction() {
|
private void setButtonAction() {
|
||||||
androidx.appcompat.app.AlertDialog alertDialog = (androidx.appcompat.app.AlertDialog) Objects.requireNonNull(getDialog());
|
androidx.appcompat.app.AlertDialog alertDialog = (androidx.appcompat.app.AlertDialog) Objects.requireNonNull(getDialog());
|
||||||
alertDialog.getButton(androidx.appcompat.app.AlertDialog.BUTTON_NEUTRAL).setOnClickListener(v -> {
|
alertDialog.getButton(androidx.appcompat.app.AlertDialog.BUTTON_NEUTRAL).setOnClickListener(v -> {
|
||||||
Bundle bundle = new Bundle();
|
Bundle bundle = new Bundle();
|
||||||
bundle.putParcelable(Constants.TRACK_OBJECT, playlistChooserViewModel.getSongToAdd());
|
bundle.putParcelableArrayList(Constants.TRACKS_OBJECT, playlistChooserViewModel.getSongsToAdd());
|
||||||
|
|
||||||
PlaylistEditorDialog dialog = new PlaylistEditorDialog(null);
|
PlaylistEditorDialog dialog = new PlaylistEditorDialog(null);
|
||||||
dialog.setArguments(bundle);
|
dialog.setArguments(bundle);
|
||||||
|
|
@ -98,7 +98,7 @@ public class PlaylistChooserDialog extends DialogFragment implements ClickCallba
|
||||||
@Override
|
@Override
|
||||||
public void onPlaylistClick(Bundle bundle) {
|
public void onPlaylistClick(Bundle bundle) {
|
||||||
Playlist playlist = bundle.getParcelable(Constants.PLAYLIST_OBJECT);
|
Playlist playlist = bundle.getParcelable(Constants.PLAYLIST_OBJECT);
|
||||||
playlistChooserViewModel.addSongToPlaylist(playlist.getId());
|
playlistChooserViewModel.addSongsToPlaylist(playlist.getId());
|
||||||
dismiss();
|
dismiss();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -74,11 +74,11 @@ public class PlaylistEditorDialog extends DialogFragment {
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setParameterInfo() {
|
private void setParameterInfo() {
|
||||||
if (requireArguments().getParcelable(Constants.TRACK_OBJECT) != null) {
|
if (requireArguments().getParcelableArrayList(Constants.TRACKS_OBJECT) != null) {
|
||||||
playlistEditorViewModel.setSongToAdd(requireArguments().getParcelable(Constants.TRACK_OBJECT));
|
playlistEditorViewModel.setSongsToAdd(requireArguments().getParcelableArrayList(Constants.TRACKS_OBJECT));
|
||||||
playlistEditorViewModel.setPlaylistToEdit(null);
|
playlistEditorViewModel.setPlaylistToEdit(null);
|
||||||
} else if (requireArguments().getParcelable(Constants.PLAYLIST_OBJECT) != null) {
|
} else if (requireArguments().getParcelable(Constants.PLAYLIST_OBJECT) != null) {
|
||||||
playlistEditorViewModel.setSongToAdd(null);
|
playlistEditorViewModel.setSongsToAdd(null);
|
||||||
playlistEditorViewModel.setPlaylistToEdit(requireArguments().getParcelable(Constants.PLAYLIST_OBJECT));
|
playlistEditorViewModel.setPlaylistToEdit(requireArguments().getParcelable(Constants.PLAYLIST_OBJECT));
|
||||||
|
|
||||||
if (playlistEditorViewModel.getPlaylistToEdit() != null) {
|
if (playlistEditorViewModel.getPlaylistToEdit() != null) {
|
||||||
|
|
@ -92,7 +92,7 @@ public class PlaylistEditorDialog extends DialogFragment {
|
||||||
|
|
||||||
alertDialog.getButton(androidx.appcompat.app.AlertDialog.BUTTON_POSITIVE).setOnClickListener(v -> {
|
alertDialog.getButton(androidx.appcompat.app.AlertDialog.BUTTON_POSITIVE).setOnClickListener(v -> {
|
||||||
if (validateInput()) {
|
if (validateInput()) {
|
||||||
if (playlistEditorViewModel.getSongToAdd() != null) {
|
if (playlistEditorViewModel.getSongsToAdd() != null) {
|
||||||
playlistEditorViewModel.createPlaylist(playlistName);
|
playlistEditorViewModel.createPlaylist(playlistName);
|
||||||
} else if (playlistEditorViewModel.getPlaylistToEdit() != null) {
|
} else if (playlistEditorViewModel.getPlaylistToEdit() != null) {
|
||||||
playlistEditorViewModel.updatePlaylist(playlistName);
|
playlistEditorViewModel.updatePlaylist(playlistName);
|
||||||
|
|
|
||||||
|
|
@ -39,6 +39,9 @@ import com.cappielloantonio.tempo.viewmodel.SongBottomSheetViewModel;
|
||||||
import com.google.android.material.bottomsheet.BottomSheetDialogFragment;
|
import com.google.android.material.bottomsheet.BottomSheetDialogFragment;
|
||||||
import com.google.common.util.concurrent.ListenableFuture;
|
import com.google.common.util.concurrent.ListenableFuture;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collections;
|
||||||
|
|
||||||
@UnstableApi
|
@UnstableApi
|
||||||
public class SongBottomSheetDialog extends BottomSheetDialogFragment implements View.OnClickListener {
|
public class SongBottomSheetDialog extends BottomSheetDialogFragment implements View.OnClickListener {
|
||||||
private HomeViewModel homeViewModel;
|
private HomeViewModel homeViewModel;
|
||||||
|
|
@ -177,7 +180,7 @@ public class SongBottomSheetDialog extends BottomSheetDialogFragment implements
|
||||||
TextView addToPlaylist = view.findViewById(R.id.add_to_playlist_text_view);
|
TextView addToPlaylist = view.findViewById(R.id.add_to_playlist_text_view);
|
||||||
addToPlaylist.setOnClickListener(v -> {
|
addToPlaylist.setOnClickListener(v -> {
|
||||||
Bundle bundle = new Bundle();
|
Bundle bundle = new Bundle();
|
||||||
bundle.putParcelable(Constants.TRACK_OBJECT, song);
|
bundle.putParcelableArrayList(Constants.TRACKS_OBJECT, new ArrayList<>(Collections.singletonList(song)));
|
||||||
|
|
||||||
PlaylistChooserDialog dialog = new PlaylistChooserDialog();
|
PlaylistChooserDialog dialog = new PlaylistChooserDialog();
|
||||||
dialog.setArguments(bundle);
|
dialog.setArguments(bundle);
|
||||||
|
|
|
||||||
|
|
@ -11,6 +11,7 @@ import androidx.lifecycle.MutableLiveData;
|
||||||
import com.cappielloantonio.tempo.repository.PlaylistRepository;
|
import com.cappielloantonio.tempo.repository.PlaylistRepository;
|
||||||
import com.cappielloantonio.tempo.subsonic.models.Child;
|
import com.cappielloantonio.tempo.subsonic.models.Child;
|
||||||
import com.cappielloantonio.tempo.subsonic.models.Playlist;
|
import com.cappielloantonio.tempo.subsonic.models.Playlist;
|
||||||
|
import com.google.common.collect.Lists;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
|
|
@ -20,7 +21,7 @@ public class PlaylistChooserViewModel extends AndroidViewModel {
|
||||||
private final PlaylistRepository playlistRepository;
|
private final PlaylistRepository playlistRepository;
|
||||||
|
|
||||||
private final MutableLiveData<List<Playlist>> playlists = new MutableLiveData<>(null);
|
private final MutableLiveData<List<Playlist>> playlists = new MutableLiveData<>(null);
|
||||||
private Child toAdd;
|
private ArrayList<Child> toAdd;
|
||||||
|
|
||||||
public PlaylistChooserViewModel(@NonNull Application application) {
|
public PlaylistChooserViewModel(@NonNull Application application) {
|
||||||
super(application);
|
super(application);
|
||||||
|
|
@ -33,15 +34,15 @@ public class PlaylistChooserViewModel extends AndroidViewModel {
|
||||||
return playlists;
|
return playlists;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void addSongToPlaylist(String playlistId) {
|
public void addSongsToPlaylist(String playlistId) {
|
||||||
playlistRepository.addSongToPlaylist(playlistId, new ArrayList(Collections.singletonList(toAdd.getId())));
|
playlistRepository.addSongToPlaylist(playlistId, new ArrayList<>(Lists.transform(toAdd, Child::getId)));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setSongToAdd(Child song) {
|
public void setSongsToAdd(ArrayList<Child> songs) {
|
||||||
toAdd = song;
|
toAdd = songs;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Child getSongToAdd() {
|
public ArrayList<Child> getSongsToAdd() {
|
||||||
return toAdd;
|
return toAdd;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -12,6 +12,7 @@ import com.cappielloantonio.tempo.repository.SharingRepository;
|
||||||
import com.cappielloantonio.tempo.subsonic.models.Child;
|
import com.cappielloantonio.tempo.subsonic.models.Child;
|
||||||
import com.cappielloantonio.tempo.subsonic.models.Playlist;
|
import com.cappielloantonio.tempo.subsonic.models.Playlist;
|
||||||
import com.cappielloantonio.tempo.subsonic.models.Share;
|
import com.cappielloantonio.tempo.subsonic.models.Share;
|
||||||
|
import com.google.common.collect.Lists;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
|
|
@ -24,7 +25,7 @@ public class PlaylistEditorViewModel extends AndroidViewModel {
|
||||||
private final PlaylistRepository playlistRepository;
|
private final PlaylistRepository playlistRepository;
|
||||||
private final SharingRepository sharingRepository;
|
private final SharingRepository sharingRepository;
|
||||||
|
|
||||||
private Child toAdd;
|
private ArrayList<Child> toAdd;
|
||||||
private Playlist toEdit;
|
private Playlist toEdit;
|
||||||
|
|
||||||
private MutableLiveData<List<Child>> songLiveList = new MutableLiveData<>();
|
private MutableLiveData<List<Child>> songLiveList = new MutableLiveData<>();
|
||||||
|
|
@ -37,7 +38,7 @@ public class PlaylistEditorViewModel extends AndroidViewModel {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void createPlaylist(String name) {
|
public void createPlaylist(String name) {
|
||||||
playlistRepository.createPlaylist(null, name, new ArrayList(Collections.singletonList(toAdd.getId())));
|
playlistRepository.createPlaylist(null, name, new ArrayList(Lists.transform(toAdd, Child::getId)));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void updatePlaylist(String name) {
|
public void updatePlaylist(String name) {
|
||||||
|
|
@ -48,12 +49,12 @@ public class PlaylistEditorViewModel extends AndroidViewModel {
|
||||||
if (toEdit != null) playlistRepository.deletePlaylist(toEdit.getId());
|
if (toEdit != null) playlistRepository.deletePlaylist(toEdit.getId());
|
||||||
}
|
}
|
||||||
|
|
||||||
public Child getSongToAdd() {
|
public void setSongsToAdd(ArrayList<Child> songs) {
|
||||||
return toAdd;
|
toAdd = songs;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setSongToAdd(Child song) {
|
public ArrayList<Child> getSongsToAdd() {
|
||||||
this.toAdd = song;
|
return toAdd;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Playlist getPlaylistToEdit() {
|
public Playlist getPlaylistToEdit() {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue