Skip to content

Commit 5bdb75e

Browse files
committed
fix #136, properly sort folders by size
1 parent 65c5f6a commit 5bdb75e

File tree

1 file changed

+20
-5
lines changed

1 file changed

+20
-5
lines changed

app/src/main/kotlin/com/simplemobiletools/filemanager/fragments/ItemsFragment.kt

Lines changed: 20 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import android.view.ViewGroup
1010
import com.simplemobiletools.commons.activities.BaseSimpleActivity
1111
import com.simplemobiletools.commons.dialogs.StoragePickerDialog
1212
import com.simplemobiletools.commons.extensions.*
13+
import com.simplemobiletools.commons.helpers.SORT_BY_SIZE
1314
import com.simplemobiletools.commons.models.FileDirItem
1415
import com.simplemobiletools.commons.views.Breadcrumbs
1516
import com.simplemobiletools.filemanager.R
@@ -179,16 +180,16 @@ class ItemsFragment : Fragment(), ItemsAdapter.ItemOperationsListener, Breadcrum
179180
if (!showHidden && curName.startsWith("."))
180181
continue
181182

182-
val children = getChildren(file)
183-
val size = file.length()
184-
185-
items.add(FileDirItem(curPath, curName, file.isDirectory, children, size))
183+
val children = getChildrenCount(file)
184+
val size = if (file.isDirectory && context!!.config.sorting == SORT_BY_SIZE) getDirectorySize(file) else file.length()
185+
val fileDirItem = FileDirItem(curPath, curName, file.isDirectory, children, size)
186+
items.add(fileDirItem)
186187
}
187188
}
188189
callback(items)
189190
}
190191

191-
private fun getChildren(file: File): Int {
192+
private fun getChildrenCount(file: File): Int {
192193
val fileList: Array<out String>? = file.list() ?: return 0
193194

194195
if (file.isDirectory) {
@@ -201,6 +202,20 @@ class ItemsFragment : Fragment(), ItemsAdapter.ItemOperationsListener, Breadcrum
201202
return 0
202203
}
203204

205+
private fun getDirectorySize(directory: File): Long {
206+
if (directory.exists()) {
207+
val fileList = directory.listFiles() ?: return 0
208+
return fileList.indices.map {
209+
if (fileList[it].isDirectory) {
210+
getDirectorySize(fileList[it])
211+
} else {
212+
fileList[it].length()
213+
}
214+
}.sum()
215+
}
216+
return 0
217+
}
218+
204219
private fun itemClicked(item: FileDirItem) {
205220
if (item.isDirectory) {
206221
openPath(item.path)

0 commit comments

Comments
 (0)