diff --git a/app/src/main/java/com/cappielloantonio/tempo/repository/PlaylistRepository.java b/app/src/main/java/com/cappielloantonio/tempo/repository/PlaylistRepository.java index 66d0a185..5e8c3d81 100644 --- a/app/src/main/java/com/cappielloantonio/tempo/repository/PlaylistRepository.java +++ b/app/src/main/java/com/cappielloantonio/tempo/repository/PlaylistRepository.java @@ -1,8 +1,5 @@ package com.cappielloantonio.tempo.repository; -import static android.provider.Settings.System.getString; - -import android.provider.Settings; import android.widget.Toast; import androidx.annotation.NonNull; @@ -107,13 +104,13 @@ public class PlaylistRepository { return playlistLiveData; } - public void addSongToPlaylist(String playlistId, ArrayList songsId) { + public void addSongToPlaylist(String playlistId, ArrayList songsId, Boolean playlistVisibilityIsPublic) { if (songsId.isEmpty()) { Toast.makeText(App.getContext(), App.getContext().getString(R.string.playlist_chooser_dialog_toast_all_skipped), Toast.LENGTH_SHORT).show(); } else{ App.getSubsonicClientInstance(false) .getPlaylistClient() - .updatePlaylist(playlistId, null, true, songsId, null) + .updatePlaylist(playlistId, null, playlistVisibilityIsPublic, songsId, null) .enqueue(new Callback() { @Override public void onResponse(@NonNull Call call, @NonNull Response response) { diff --git a/app/src/main/java/com/cappielloantonio/tempo/ui/dialog/PlaylistChooserDialog.java b/app/src/main/java/com/cappielloantonio/tempo/ui/dialog/PlaylistChooserDialog.java index a6842512..af0d2bbe 100644 --- a/app/src/main/java/com/cappielloantonio/tempo/ui/dialog/PlaylistChooserDialog.java +++ b/app/src/main/java/com/cappielloantonio/tempo/ui/dialog/PlaylistChooserDialog.java @@ -6,6 +6,7 @@ import android.view.View; import android.widget.Toast; import androidx.annotation.NonNull; +import androidx.annotation.StringRes; import androidx.fragment.app.DialogFragment; import androidx.lifecycle.ViewModelProvider; import androidx.recyclerview.widget.LinearLayoutManager; @@ -20,6 +21,7 @@ import com.cappielloantonio.tempo.viewmodel.PlaylistChooserViewModel; import com.google.android.material.dialog.MaterialAlertDialogBuilder; import java.util.Objects; +import java.util.concurrent.atomic.AtomicInteger; public class PlaylistChooserDialog extends DialogFragment implements ClickCallback { private DialogPlaylistChooserBinding bind; @@ -35,9 +37,21 @@ public class PlaylistChooserDialog extends DialogFragment implements ClickCallba playlistChooserViewModel = new ViewModelProvider(requireActivity()).get(PlaylistChooserViewModel.class); + String[] playlistVisibilityChoice = { + getString(R.string.playlist_chooser_dialog_visibility_public), + getString(R.string.playlist_chooser_dialog_visibility_private) + }; + return new MaterialAlertDialogBuilder(getActivity()) .setView(bind.getRoot()) .setTitle(R.string.playlist_chooser_dialog_title) + .setSingleChoiceItems( + playlistVisibilityChoice, + 0, + (dialog, which) -> { + boolean isPublic = (which == 0); + playlistChooserViewModel.setIsPlaylistPublic(isPublic); + }) .setNeutralButton(R.string.playlist_chooser_dialog_neutral_button, (dialog, id) -> { }) .setNegativeButton(R.string.playlist_chooser_dialog_negative_button, (dialog, id) -> dialog.cancel()) .create(); diff --git a/app/src/main/java/com/cappielloantonio/tempo/viewmodel/PlaylistChooserViewModel.java b/app/src/main/java/com/cappielloantonio/tempo/viewmodel/PlaylistChooserViewModel.java index ca7af150..c59377bc 100644 --- a/app/src/main/java/com/cappielloantonio/tempo/viewmodel/PlaylistChooserViewModel.java +++ b/app/src/main/java/com/cappielloantonio/tempo/viewmodel/PlaylistChooserViewModel.java @@ -2,7 +2,6 @@ package com.cappielloantonio.tempo.viewmodel; import android.app.Application; import android.app.Dialog; -import android.content.SharedPreferences; import androidx.annotation.NonNull; import androidx.lifecycle.AndroidViewModel; @@ -21,8 +20,17 @@ import java.util.List; public class PlaylistChooserViewModel extends AndroidViewModel { private final PlaylistRepository playlistRepository; - private final MutableLiveData> playlists = new MutableLiveData<>(null); + private final MutableLiveData playlistIsPublic = new MutableLiveData<>(false); + + public Boolean getIsPlaylistPublic() { + return playlistIsPublic.getValue(); + } + + public void setIsPlaylistPublic(boolean isPublic) { + playlistIsPublic.setValue(isPublic); + } + private ArrayList toAdd = new ArrayList<>(); public PlaylistChooserViewModel(@NonNull Application application) { @@ -39,7 +47,7 @@ public class PlaylistChooserViewModel extends AndroidViewModel { public void addSongsToPlaylist(LifecycleOwner owner, Dialog dialog, String playlistId) { List songIds = Lists.transform(toAdd, Child::getId); if (Preferences.allowPlaylistDuplicates()) { - playlistRepository.addSongToPlaylist(playlistId, new ArrayList<>(songIds)); + playlistRepository.addSongToPlaylist(playlistId, new ArrayList<>(songIds), getIsPlaylistPublic()); dialog.dismiss(); } else { playlistRepository.getPlaylistSongs(playlistId).observe(owner, playlistSongs -> { @@ -47,7 +55,7 @@ public class PlaylistChooserViewModel extends AndroidViewModel { List playlistSongIds = Lists.transform(playlistSongs, Child::getId); songIds.removeAll(playlistSongIds); } - playlistRepository.addSongToPlaylist(playlistId, new ArrayList<>(songIds)); + playlistRepository.addSongToPlaylist(playlistId, new ArrayList<>(songIds), getIsPlaylistPublic()); dialog.dismiss(); }); } diff --git a/app/src/main/res/values-es-rES/strings.xml b/app/src/main/res/values-es-rES/strings.xml index 522c820a..1926fdf9 100644 --- a/app/src/main/res/values-es-rES/strings.xml +++ b/app/src/main/res/values-es-rES/strings.xml @@ -227,6 +227,8 @@ Añadir a una lista de reproducción Error al añadir a la lista Todas las pistas se han descartado porque están repetidas + Público + Privado %1$d pistas • %2$s Duración • %1$s Pulsación larga para eliminar diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index 76982c4d..dd9e51a4 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -236,6 +236,8 @@ Titre ajouté à la playlist Échec d\'ajout du titre à la playlist Tous les titres ont été traités comme des doublons et ignorés + Publique + Privé %1$d titres • %2$s Durée • %1$s Appui long pour supprimer diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index 03e1e471..8645b1ec 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -229,6 +229,8 @@ Aggiunta di un brano alla playlist Impossibile aggiungere un brano alla playlist Tutte le canzoni sono state saltate perché duplicate + Pubblico + Privato %1$d brani • %2$s Durata • %1$s Premi a lungo per eliminare diff --git a/app/src/main/res/values-pt/strings.xml b/app/src/main/res/values-pt/strings.xml index 38facb2e..2f61c069 100644 --- a/app/src/main/res/values-pt/strings.xml +++ b/app/src/main/res/values-pt/strings.xml @@ -164,6 +164,8 @@ Adicionar a uma playlist Adicionada playlist de reprodução Falha ao adicionar uma playlist de reprodução + Pública + Privada %1$d faixas • %2$s Duração • %1$s Nome da playlist