mirror of
https://github.com/SimpleMobileTools/Simple-File-Manager.git
synced 2025-06-05 22:09:15 +02:00
fix #136, properly sort folders by size
This commit is contained in:
@ -10,6 +10,7 @@ import android.view.ViewGroup
|
|||||||
import com.simplemobiletools.commons.activities.BaseSimpleActivity
|
import com.simplemobiletools.commons.activities.BaseSimpleActivity
|
||||||
import com.simplemobiletools.commons.dialogs.StoragePickerDialog
|
import com.simplemobiletools.commons.dialogs.StoragePickerDialog
|
||||||
import com.simplemobiletools.commons.extensions.*
|
import com.simplemobiletools.commons.extensions.*
|
||||||
|
import com.simplemobiletools.commons.helpers.SORT_BY_SIZE
|
||||||
import com.simplemobiletools.commons.models.FileDirItem
|
import com.simplemobiletools.commons.models.FileDirItem
|
||||||
import com.simplemobiletools.commons.views.Breadcrumbs
|
import com.simplemobiletools.commons.views.Breadcrumbs
|
||||||
import com.simplemobiletools.filemanager.R
|
import com.simplemobiletools.filemanager.R
|
||||||
@ -179,16 +180,16 @@ class ItemsFragment : Fragment(), ItemsAdapter.ItemOperationsListener, Breadcrum
|
|||||||
if (!showHidden && curName.startsWith("."))
|
if (!showHidden && curName.startsWith("."))
|
||||||
continue
|
continue
|
||||||
|
|
||||||
val children = getChildren(file)
|
val children = getChildrenCount(file)
|
||||||
val size = file.length()
|
val size = if (file.isDirectory && context!!.config.sorting == SORT_BY_SIZE) getDirectorySize(file) else file.length()
|
||||||
|
val fileDirItem = FileDirItem(curPath, curName, file.isDirectory, children, size)
|
||||||
items.add(FileDirItem(curPath, curName, file.isDirectory, children, size))
|
items.add(fileDirItem)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
callback(items)
|
callback(items)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun getChildren(file: File): Int {
|
private fun getChildrenCount(file: File): Int {
|
||||||
val fileList: Array<out String>? = file.list() ?: return 0
|
val fileList: Array<out String>? = file.list() ?: return 0
|
||||||
|
|
||||||
if (file.isDirectory) {
|
if (file.isDirectory) {
|
||||||
@ -201,6 +202,20 @@ class ItemsFragment : Fragment(), ItemsAdapter.ItemOperationsListener, Breadcrum
|
|||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun getDirectorySize(directory: File): Long {
|
||||||
|
if (directory.exists()) {
|
||||||
|
val fileList = directory.listFiles() ?: return 0
|
||||||
|
return fileList.indices.map {
|
||||||
|
if (fileList[it].isDirectory) {
|
||||||
|
getDirectorySize(fileList[it])
|
||||||
|
} else {
|
||||||
|
fileList[it].length()
|
||||||
|
}
|
||||||
|
}.sum()
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
private fun itemClicked(item: FileDirItem) {
|
private fun itemClicked(item: FileDirItem) {
|
||||||
if (item.isDirectory) {
|
if (item.isDirectory) {
|
||||||
openPath(item.path)
|
openPath(item.path)
|
||||||
|
Reference in New Issue
Block a user