mirror of
https://github.com/SimpleMobileTools/Simple-File-Manager.git
synced 2025-06-05 22:09:15 +02:00
optimize root file/folder fetching a bit
This commit is contained in:
@ -3,6 +3,7 @@ package com.simplemobiletools.filemanager.helpers
|
|||||||
import android.app.Activity
|
import android.app.Activity
|
||||||
import com.simplemobiletools.commons.extensions.areDigitsOnly
|
import com.simplemobiletools.commons.extensions.areDigitsOnly
|
||||||
import com.simplemobiletools.commons.extensions.showErrorToast
|
import com.simplemobiletools.commons.extensions.showErrorToast
|
||||||
|
import com.simplemobiletools.commons.helpers.SORT_BY_SIZE
|
||||||
import com.simplemobiletools.commons.models.FileDirItem
|
import com.simplemobiletools.commons.models.FileDirItem
|
||||||
import com.simplemobiletools.filemanager.extensions.config
|
import com.simplemobiletools.filemanager.extensions.config
|
||||||
import com.stericson.RootShell.execution.Command
|
import com.stericson.RootShell.execution.Command
|
||||||
@ -28,13 +29,13 @@ class RootHelpers(val activity: Activity) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun getFiles(path: String, callback: (originalPath: String, fileDirItems: ArrayList<FileDirItem>) -> Unit) {
|
fun getFiles(path: String, callback: (originalPath: String, fileDirItems: ArrayList<FileDirItem>) -> Unit) {
|
||||||
val files = ArrayList<FileDirItem>()
|
|
||||||
val hiddenArgument = if (activity.config.shouldShowHidden) "-A " else ""
|
|
||||||
val cmd = "ls $hiddenArgument$path"
|
|
||||||
|
|
||||||
getFullLines(path) {
|
getFullLines(path) {
|
||||||
val fullLines = it
|
val fullLines = it
|
||||||
|
|
||||||
|
val files = ArrayList<FileDirItem>()
|
||||||
|
val hiddenArgument = if (activity.config.shouldShowHidden) "-A " else ""
|
||||||
|
val cmd = "ls $hiddenArgument$path"
|
||||||
|
|
||||||
val command = object : Command(0, cmd) {
|
val command = object : Command(0, cmd) {
|
||||||
override fun commandOutput(id: Int, line: String) {
|
override fun commandOutput(id: Int, line: String) {
|
||||||
val file = File(path, line)
|
val file = File(path, line)
|
||||||
@ -83,12 +84,8 @@ class RootHelpers(val activity: Activity) {
|
|||||||
private fun getChildrenCount(files: ArrayList<FileDirItem>, path: String, callback: (originalPath: String, fileDirItems: ArrayList<FileDirItem>) -> Unit) {
|
private fun getChildrenCount(files: ArrayList<FileDirItem>, path: String, callback: (originalPath: String, fileDirItems: ArrayList<FileDirItem>) -> Unit) {
|
||||||
val hiddenArgument = if (activity.config.shouldShowHidden) "-A " else ""
|
val hiddenArgument = if (activity.config.shouldShowHidden) "-A " else ""
|
||||||
var cmd = ""
|
var cmd = ""
|
||||||
files.forEach {
|
files.filter { it.isDirectory }.forEach {
|
||||||
cmd += if (it.isDirectory) {
|
cmd += "ls $hiddenArgument${it.path} |wc -l;"
|
||||||
"ls $hiddenArgument${it.path} |wc -l;"
|
|
||||||
} else {
|
|
||||||
"echo 0;"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
cmd = cmd.trimEnd(';') + " | cat"
|
cmd = cmd.trimEnd(';') + " | cat"
|
||||||
|
|
||||||
@ -100,13 +97,18 @@ class RootHelpers(val activity: Activity) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun commandCompleted(id: Int, exitcode: Int) {
|
override fun commandCompleted(id: Int, exitcode: Int) {
|
||||||
files.forEachIndexed { index, fileDirItem ->
|
files.filter { it.isDirectory }.forEachIndexed { index, fileDirItem ->
|
||||||
val childrenCount = lines[index]
|
val childrenCount = lines[index]
|
||||||
if (childrenCount.areDigitsOnly()) {
|
if (childrenCount.areDigitsOnly()) {
|
||||||
fileDirItem.children = childrenCount.toInt()
|
fileDirItem.children = childrenCount.toInt()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
getFileSizes(files, path, callback)
|
|
||||||
|
if (activity.config.sorting and SORT_BY_SIZE == 0) {
|
||||||
|
callback(path, files)
|
||||||
|
} else {
|
||||||
|
getFileSizes(files, path, callback)
|
||||||
|
}
|
||||||
super.commandCompleted(id, exitcode)
|
super.commandCompleted(id, exitcode)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -144,6 +146,7 @@ class RootHelpers(val activity: Activity) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
callback(path, files)
|
callback(path, files)
|
||||||
super.commandCompleted(id, exitcode)
|
super.commandCompleted(id, exitcode)
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user