From 32ca1fdf70fe6fd9033b66dbae74bce72a85eac5 Mon Sep 17 00:00:00 2001 From: tibbi Date: Mon, 4 Sep 2017 19:23:07 +0200 Subject: [PATCH] improve root content deleting --- .../filemanager/fragments/ItemsFragment.kt | 21 +++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/filemanager/fragments/ItemsFragment.kt b/app/src/main/kotlin/com/simplemobiletools/filemanager/fragments/ItemsFragment.kt index 30190825..f571be74 100644 --- a/app/src/main/kotlin/com/simplemobiletools/filemanager/fragments/ItemsFragment.kt +++ b/app/src/main/kotlin/com/simplemobiletools/filemanager/fragments/ItemsFragment.kt @@ -24,6 +24,7 @@ import com.simplemobiletools.filemanager.adapters.ItemsAdapter import com.simplemobiletools.filemanager.dialogs.CreateNewItemDialog import com.simplemobiletools.filemanager.extensions.config import com.simplemobiletools.filemanager.helpers.RootHelpers +import com.stericson.RootTools.RootTools import kotlinx.android.synthetic.main.items_fragment.* import kotlinx.android.synthetic.main.items_fragment.view.* import java.io.File @@ -159,9 +160,8 @@ class ItemsFragment : Fragment(), ItemsAdapter.ItemOperationsListener { } private fun getItems(path: String, callback: (items: ArrayList) -> Unit) { - val config = context.config Thread({ - if (!config.enableRootAccess || path.startsWith(config.internalStoragePath) || (context.hasExternalSDCard() && path.startsWith(config.sdCardPath))) { + if (!context.config.enableRootAccess || !isPathOnRoot(path)) { getRegularItemsOf(path, callback) } else { getRootItemsOf(path, callback) @@ -169,6 +169,9 @@ class ItemsFragment : Fragment(), ItemsAdapter.ItemOperationsListener { }).start() } + private fun isPathOnRoot(path: String) = + !(path.startsWith(context.config.internalStoragePath) || (context.hasExternalSDCard() && path.startsWith(context.config.sdCardPath))) + private fun getRegularItemsOf(path: String, callback: (items: ArrayList) -> Unit) { val items = ArrayList() val files = File(path).listFiles() @@ -262,10 +265,16 @@ class ItemsFragment : Fragment(), ItemsAdapter.ItemOperationsListener { override fun deleteFiles(files: ArrayList) { val hasFolder = files.any { it.isDirectory } - (activity as SimpleActivity).deleteFiles(files, hasFolder) { - if (!it) { - activity.runOnUiThread { - activity.toast(R.string.unknown_error_occurred) + if (isPathOnRoot(files.firstOrNull()?.absolutePath ?: context.config.internalStoragePath)) { + files.forEach { + RootTools.deleteFileOrDirectory(it.path, false) + } + } else { + (activity as SimpleActivity).deleteFiles(files, hasFolder) { + if (!it) { + activity.runOnUiThread { + activity.toast(R.string.unknown_error_occurred) + } } } }