Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b60dfcaa authored by tibbi's avatar tibbi
Browse files

properly calculate OTG folder size

parent 48bd5959
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -6,7 +6,7 @@ buildscript {
        propMinSdkVersion = 16
        propTargetSdkVersion = propCompileSdkVersion
        propVersionCode = 1
        propVersionName = '3.11.38'
        propVersionName = '3.11.39'
        kotlin_version = '1.2.21'
        support_libs = '27.0.2'
    }
+1 −1
Original line number Diff line number Diff line
@@ -167,7 +167,7 @@ class FilePickerDialog(val activity: BaseSimpleActivity,

    private fun getItems(path: String, callback: (List<FileDirItem>) -> Unit) {
        if (path.startsWith(OTG_PATH)) {
            activity.getOTGItems(path, callback)
            activity.getOTGItems(path, showHidden, callback)
        } else {
            getRegularItems(path, callback)
        }
+2 −2
Original line number Diff line number Diff line
@@ -283,7 +283,7 @@ fun Context.updateLastModified(path: String, lastModified: Long) {
    }
}

fun Context.getOTGItems(path: String, callback: (ArrayList<FileDirItem>) -> Unit) {
fun Context.getOTGItems(path: String, countHiddenItems: Boolean, callback: (ArrayList<FileDirItem>) -> Unit) {
    val items = ArrayList<FileDirItem>()
    val OTGTreeUri = baseConfig.OTGTreeUri
    var rootUri = DocumentFile.fromTreeUri(applicationContext, Uri.parse(OTGTreeUri))
@@ -319,7 +319,7 @@ fun Context.getOTGItems(path: String, callback: (ArrayList<FileDirItem>) -> Unit
        if (file.exists()) {
            val filePath = file.uri.toString().substring(basePath.length)
            val decodedPath = OTG_PATH + "/" + URLDecoder.decode(filePath, "UTF-8")
            items.add(FileDirItem(decodedPath, file.name, file.isDirectory, file.listFiles()?.size ?: 0, file.length()))
            items.add(FileDirItem(decodedPath, file.name, file.isDirectory, file.listFiles()?.size ?: 0, file.getItemSize(countHiddenItems)))
        }
    }
    callback(items)
+29 −0
Original line number Diff line number Diff line
package com.simplemobiletools.commons.extensions

import android.support.v4.provider.DocumentFile

fun DocumentFile.getItemSize(countHiddenItems: Boolean): Long {
    return if (isDirectory) {
        getDirectorySize(this, countHiddenItems)
    } else {
        length()
    }
}

private fun getDirectorySize(dir: DocumentFile, countHiddenItems: Boolean): Long {
    var size = 0L
    if (dir.exists()) {
        val files = dir.listFiles()
        if (files != null) {
            for (i in files.indices) {
                val file = files[i]
                if (file.isDirectory) {
                    size += getDirectorySize(file, countHiddenItems)
                } else if (!file.name.startsWith(".") || countHiddenItems) {
                    size += file.length()
                }
            }
        }
    }
    return size
}
+4 −3
Original line number Diff line number Diff line
@@ -138,9 +138,10 @@ private fun getDirectoryFileCount(dir: File, countHiddenItems: Boolean): Int {
        val files = dir.listFiles()
        if (files != null) {
            for (i in files.indices) {
                if (files[i].isDirectory) {
                    count += getDirectoryFileCount(files[i], countHiddenItems)
                } else if (!files[i].isHidden && !dir.isHidden || countHiddenItems) {
                val file = files[i]
                if (file.isDirectory) {
                    count += getDirectoryFileCount(file, countHiddenItems)
                } else if (!file.isHidden || countHiddenItems) {
                    count++
                }
            }