@@ -10,6 +10,7 @@ import android.view.ViewGroup
1010import com.simplemobiletools.commons.activities.BaseSimpleActivity
1111import com.simplemobiletools.commons.dialogs.StoragePickerDialog
1212import com.simplemobiletools.commons.extensions.*
13+ import com.simplemobiletools.commons.helpers.SORT_BY_SIZE
1314import com.simplemobiletools.commons.models.FileDirItem
1415import com.simplemobiletools.commons.views.Breadcrumbs
1516import 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