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" /> + +