From 4c560421239ed0e966e609695cf96da0f7af6f2c Mon Sep 17 00:00:00 2001
From: deniscerri <64997243+deniscerri@users.noreply.github.com>
Date: Mon, 13 Mar 2023 22:47:46 +0100
Subject: [PATCH] added clear temporary files
---
.idea/assetWizardSettings.xml | 5 ++--
.../ui/more/settings/SettingsFragment.kt | 27 +++++++++++++++++++
.../main/res/drawable/ic_folder_delete.xml | 5 ++++
app/src/main/res/values/strings.xml | 4 +++
app/src/main/res/xml/root_preferences.xml | 6 +++++
5 files changed, 44 insertions(+), 3 deletions(-)
create mode 100644 app/src/main/res/drawable/ic_folder_delete.xml
diff --git a/.idea/assetWizardSettings.xml b/.idea/assetWizardSettings.xml
index c292dc5e..f7074742 100644
--- a/.idea/assetWizardSettings.xml
+++ b/.idea/assetWizardSettings.xml
@@ -320,7 +320,7 @@
@@ -330,8 +330,7 @@
diff --git a/app/src/main/java/com/deniscerri/ytdlnis/ui/more/settings/SettingsFragment.kt b/app/src/main/java/com/deniscerri/ytdlnis/ui/more/settings/SettingsFragment.kt
index 21c885e2..0a729b7e 100644
--- a/app/src/main/java/com/deniscerri/ytdlnis/ui/more/settings/SettingsFragment.kt
+++ b/app/src/main/java/com/deniscerri/ytdlnis/ui/more/settings/SettingsFragment.kt
@@ -12,6 +12,8 @@ import androidx.activity.result.contract.ActivityResultContracts
import androidx.appcompat.app.AppCompatDelegate
import androidx.core.os.LocaleListCompat
import androidx.preference.*
+import androidx.work.WorkInfo
+import androidx.work.WorkManager
import com.deniscerri.ytdlnis.BuildConfig
import com.deniscerri.ytdlnis.R
import com.deniscerri.ytdlnis.util.FileUtil
@@ -26,6 +28,7 @@ class SettingsFragment : PreferenceFragmentCompat() {
private var videoPath: Preference? = null
private var commandPath: Preference? = null
private var accessAllFiles : Preference? = null
+ private var clearCache: Preference? = null
private var incognito: SwitchPreferenceCompat? = null
private var preferredDownloadType : ListPreference? = null
private var downloadCard: SwitchPreferenceCompat? = null
@@ -56,12 +59,21 @@ class SettingsFragment : PreferenceFragmentCompat() {
private var updateUtil: UpdateUtil? = null
private var fileUtil: FileUtil? = null
+ private var activeDownloadCount = 0
private val jsonFormat = Json { prettyPrint = true }
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
setPreferencesFromResource(R.xml.root_preferences, rootKey)
updateUtil = UpdateUtil(requireContext())
fileUtil = FileUtil()
+
+ WorkManager.getInstance(requireContext()).getWorkInfosByTagLiveData("download").observe(this){
+ activeDownloadCount = 0
+ it.forEach {w ->
+ if (w.state == WorkInfo.State.RUNNING) activeDownloadCount++
+ }
+ }
+
initPreferences()
initListeners()
}
@@ -75,6 +87,7 @@ class SettingsFragment : PreferenceFragmentCompat() {
videoPath = findPreference("video_path")
commandPath = findPreference("command_path")
accessAllFiles = findPreference("access_all_files")
+ clearCache = findPreference("clear_cache")
incognito = findPreference("incognito")
preferredDownloadType = findPreference("preferred_download_type")
downloadCard = findPreference("download_card")
@@ -210,6 +223,20 @@ class SettingsFragment : PreferenceFragmentCompat() {
true
}
+ var cacheSize = requireContext().cacheDir.walkBottomUp().fold(0L) { acc, file -> acc + file.length() }
+ clearCache!!.summary = "(${fileUtil!!.convertFileSize(cacheSize)}) ${resources.getString(R.string.clear_temporary_files_summary)}"
+ clearCache!!.onPreferenceClickListener =
+ Preference.OnPreferenceClickListener {
+ if (activeDownloadCount == 0){
+ requireContext().cacheDir.deleteRecursively()
+ Toast.makeText(requireContext(), getString(R.string.cache_cleared), Toast.LENGTH_SHORT).show()
+ cacheSize = requireContext().cacheDir.walkBottomUp().fold(0L) { acc, file -> acc + file.length() }
+ clearCache!!.summary = "(${fileUtil!!.convertFileSize(cacheSize)}) ${resources.getString(R.string.clear_temporary_files_summary)}"
+ }else{
+ Toast.makeText(requireContext(), getString(R.string.downloads_running_try_later), Toast.LENGTH_SHORT).show()
+ }
+ true
+ }
incognito!!.onPreferenceChangeListener =
Preference.OnPreferenceChangeListener { _: Preference?, newValue: Any ->
val enable = newValue as Boolean
diff --git a/app/src/main/res/drawable/ic_folder_delete.xml b/app/src/main/res/drawable/ic_folder_delete.xml
new file mode 100644
index 00000000..85abbf3e
--- /dev/null
+++ b/app/src/main/res/drawable/ic_folder_delete.xml
@@ -0,0 +1,5 @@
+
+
+
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 7f48b735..662e7085 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -221,4 +221,8 @@
Restart
Download rescheduled to:
File size
+ Clear temporary files
+ Delete cached files from crashed/errored/cancelled downloads
+ Temporary files cleared
+ Download worker is running. Try again later
\ No newline at end of file
diff --git a/app/src/main/res/xml/root_preferences.xml b/app/src/main/res/xml/root_preferences.xml
index cfb2d595..39a487bc 100644
--- a/app/src/main/res/xml/root_preferences.xml
+++ b/app/src/main/res/xml/root_preferences.xml
@@ -36,6 +36,12 @@
android:summary="@string/access_all_directories_summary"
app:title="@string/access_all_directories" />
+
+