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 @@
+
+