From 9d7acdb892b98ab8ace7b7712b53575aec5abe9f Mon Sep 17 00:00:00 2001 From: antonio Date: Sun, 6 Aug 2023 00:01:02 +0200 Subject: [PATCH] feat: added the option in the settings to delete all saved offline content. --- .../dialog/DeleteDownloadStorageDialog.java | 65 +++++++++++++++++++ .../tempo/ui/fragment/SettingsFragment.java | 7 ++ .../layout/dialog_delete_download_storage.xml | 15 +++++ app/src/main/res/values/strings.xml | 6 ++ app/src/main/res/xml/global_preferences.xml | 5 ++ 5 files changed, 98 insertions(+) create mode 100644 app/src/main/java/com/cappielloantonio/tempo/ui/dialog/DeleteDownloadStorageDialog.java create mode 100644 app/src/main/res/layout/dialog_delete_download_storage.xml diff --git a/app/src/main/java/com/cappielloantonio/tempo/ui/dialog/DeleteDownloadStorageDialog.java b/app/src/main/java/com/cappielloantonio/tempo/ui/dialog/DeleteDownloadStorageDialog.java new file mode 100644 index 00000000..2f71aeaf --- /dev/null +++ b/app/src/main/java/com/cappielloantonio/tempo/ui/dialog/DeleteDownloadStorageDialog.java @@ -0,0 +1,65 @@ +package com.cappielloantonio.tempo.ui.dialog; + +import android.app.AlertDialog; +import android.app.Dialog; +import android.os.Bundle; +import android.widget.Button; + +import androidx.annotation.NonNull; +import androidx.annotation.OptIn; +import androidx.fragment.app.DialogFragment; +import androidx.media3.common.util.UnstableApi; + +import com.cappielloantonio.tempo.R; +import com.cappielloantonio.tempo.databinding.DialogDeleteDownloadStorageBinding; +import com.cappielloantonio.tempo.interfaces.DialogClickCallback; +import com.cappielloantonio.tempo.util.DownloadUtil; + +@OptIn(markerClass = UnstableApi.class) +public class DeleteDownloadStorageDialog extends DialogFragment { + private DialogDeleteDownloadStorageBinding bind; + + @NonNull + @Override + public Dialog onCreateDialog(Bundle savedInstanceState) { + bind = DialogDeleteDownloadStorageBinding.inflate(getLayoutInflater()); + + AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); + + builder.setView(bind.getRoot()) + .setTitle(R.string.delete_download_storage_dialog_title) + .setPositiveButton(R.string.delete_download_storage_dialog_positive_button, null) + .setNegativeButton(R.string.delete_download_storage_dialog_negative_button, null); + + return builder.create(); + } + + @Override + public void onResume() { + super.onResume(); + setButtonAction(); + } + + @Override + public void onDestroyView() { + super.onDestroyView(); + bind = null; + } + + private void setButtonAction() { + AlertDialog dialog = ((AlertDialog) getDialog()); + + if (dialog != null) { + Button positiveButton = dialog.getButton(Dialog.BUTTON_POSITIVE); + positiveButton.setOnClickListener(v -> { + DownloadUtil.getDownloadTracker(requireContext()).removeAll(); + dialog.dismiss(); + }); + + Button negativeButton = dialog.getButton(Dialog.BUTTON_NEGATIVE); + negativeButton.setOnClickListener(v -> { + 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 7548491c..acc6d463 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 @@ -24,6 +24,7 @@ import com.cappielloantonio.tempo.helper.ThemeHelper; import com.cappielloantonio.tempo.interfaces.DialogClickCallback; import com.cappielloantonio.tempo.interfaces.ScanCallback; import com.cappielloantonio.tempo.ui.activity.MainActivity; +import com.cappielloantonio.tempo.ui.dialog.DeleteDownloadStorageDialog; import com.cappielloantonio.tempo.ui.dialog.DownloadStorageDialog; import com.cappielloantonio.tempo.ui.dialog.StarredSyncDialog; import com.cappielloantonio.tempo.util.Preferences; @@ -125,6 +126,12 @@ public class SettingsFragment extends PreferenceFragmentCompat { dialog.show(activity.getSupportFragmentManager(), null); return true; }); + + findPreference("delete_download_storage").setOnPreferenceClickListener(preference -> { + DeleteDownloadStorageDialog dialog = new DeleteDownloadStorageDialog(); + dialog.show(activity.getSupportFragmentManager(), null); + return true; + }); } @Override diff --git a/app/src/main/res/layout/dialog_delete_download_storage.xml b/app/src/main/res/layout/dialog_delete_download_storage.xml new file mode 100644 index 00000000..4c88b6fe --- /dev/null +++ b/app/src/main/res/layout/dialog_delete_download_storage.xml @@ -0,0 +1,15 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 6141c16e..7e266ef3 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -49,6 +49,10 @@ OK Wi-Fi not connected Access to the Subsonic server on connections other than Wi-Fi has been restricted. To prevent this alert dialod from reappearing, disable the connection check in the app settings. + Cancel + Continue + Please be aware that continuing with this action will result in the permanent deletion of all saved items downloaded from all servers. + Delete saved items Once you download a song, you\'ll find it here No downloads yet! Downloads @@ -185,6 +189,8 @@ Size of artwork cache In order to reduce data consumption, avoid downloading covers. Limit mobile data usage + Delete saved items + Proceeding will result in the irreversible deletion of all saved items. Download storage Adjust audio settings Equalizer diff --git a/app/src/main/res/xml/global_preferences.xml b/app/src/main/res/xml/global_preferences.xml index 738f101b..665a942d 100644 --- a/app/src/main/res/xml/global_preferences.xml +++ b/app/src/main/res/xml/global_preferences.xml @@ -99,6 +99,11 @@ + +