From e24063e4600ee1f223d5951ac42537ba8fb4260c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jaime=20Garc=C3=ADa?= <55400857+jaime-grj@users.noreply.github.com> Date: Sun, 31 Aug 2025 17:39:35 +0200 Subject: [PATCH] fix: disable sync starred tracks/albums switches in when Cancel is clicked in warning dialog --- .../tempo/ui/dialog/StarredAlbumSyncDialog.java | 7 +++++++ .../tempo/ui/dialog/StarredSyncDialog.java | 7 +++++++ .../tempo/ui/fragment/SettingsFragment.java | 11 ++++++++--- 3 files changed, 22 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/com/cappielloantonio/tempo/ui/dialog/StarredAlbumSyncDialog.java b/app/src/main/java/com/cappielloantonio/tempo/ui/dialog/StarredAlbumSyncDialog.java index 6e6ef303..19b474a9 100644 --- a/app/src/main/java/com/cappielloantonio/tempo/ui/dialog/StarredAlbumSyncDialog.java +++ b/app/src/main/java/com/cappielloantonio/tempo/ui/dialog/StarredAlbumSyncDialog.java @@ -26,6 +26,12 @@ import java.util.stream.Collectors; public class StarredAlbumSyncDialog extends DialogFragment { private StarredAlbumsSyncViewModel starredAlbumsSyncViewModel; + private Runnable onCancel; + + public StarredAlbumSyncDialog(Runnable onCancel) { + this.onCancel = onCancel; + } + @NonNull @Override public Dialog onCreateDialog(Bundle savedInstanceState) { @@ -74,6 +80,7 @@ public class StarredAlbumSyncDialog extends DialogFragment { Button negativeButton = dialog.getButton(Dialog.BUTTON_NEGATIVE); negativeButton.setOnClickListener(v -> { Preferences.setStarredAlbumsSyncEnabled(false); + if (onCancel != null) onCancel.run(); dialog.dismiss(); }); } diff --git a/app/src/main/java/com/cappielloantonio/tempo/ui/dialog/StarredSyncDialog.java b/app/src/main/java/com/cappielloantonio/tempo/ui/dialog/StarredSyncDialog.java index 9f1cc3a1..3d9b07a9 100644 --- a/app/src/main/java/com/cappielloantonio/tempo/ui/dialog/StarredSyncDialog.java +++ b/app/src/main/java/com/cappielloantonio/tempo/ui/dialog/StarredSyncDialog.java @@ -26,6 +26,12 @@ import java.util.stream.Collectors; public class StarredSyncDialog extends DialogFragment { private StarredSyncViewModel starredSyncViewModel; + private Runnable onCancel; + + public StarredSyncDialog(Runnable onCancel) { + this.onCancel = onCancel; + } + @NonNull @Override public Dialog onCreateDialog(Bundle savedInstanceState) { @@ -75,6 +81,7 @@ public class StarredSyncDialog extends DialogFragment { Button negativeButton = dialog.getButton(Dialog.BUTTON_NEGATIVE); negativeButton.setOnClickListener(v -> { Preferences.setStarredSyncEnabled(false); + if (onCancel != null) onCancel.run(); dialog.dismiss(); }); } diff --git a/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/SettingsFragment.java b/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/SettingsFragment.java index 9250adfa..e8ddf2b2 100644 --- a/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/SettingsFragment.java +++ b/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/SettingsFragment.java @@ -21,6 +21,7 @@ import androidx.media3.common.util.UnstableApi; import androidx.preference.ListPreference; import androidx.preference.Preference; import androidx.preference.PreferenceFragmentCompat; +import androidx.preference.SwitchPreference; import com.cappielloantonio.tempo.BuildConfig; import com.cappielloantonio.tempo.R; @@ -257,9 +258,11 @@ public class SettingsFragment extends PreferenceFragmentCompat { findPreference("sync_starred_tracks_for_offline_use").setOnPreferenceChangeListener((preference, newValue) -> { if (newValue instanceof Boolean) { if ((Boolean) newValue) { - StarredSyncDialog dialog = new StarredSyncDialog(); + StarredSyncDialog dialog = new StarredSyncDialog(() -> { + ((SwitchPreference)preference).setChecked(false); + }); dialog.show(activity.getSupportFragmentManager(), null); - } + } } return true; }); @@ -269,7 +272,9 @@ public class SettingsFragment extends PreferenceFragmentCompat { findPreference("sync_starred_albums_for_offline_use").setOnPreferenceChangeListener((preference, newValue) -> { if (newValue instanceof Boolean) { if ((Boolean) newValue) { - StarredAlbumSyncDialog dialog = new StarredAlbumSyncDialog(); + StarredAlbumSyncDialog dialog = new StarredAlbumSyncDialog(() -> { + ((SwitchPreference)preference).setChecked(false); + }); dialog.show(activity.getSupportFragmentManager(), null); } }