From 2ee0c679fb167200a4e7231c15831c69aa13de9e Mon Sep 17 00:00:00 2001 From: Hardcore Sushi Date: Thu, 11 Nov 2021 20:14:48 +0100 Subject: [PATCH] Fix bugs when renaming --- app/build.gradle | 4 +- .../droidfs/explorers/BaseExplorerActivity.kt | 53 ++++++++++--------- .../droidfs/explorers/ExplorerElement.kt | 12 +++-- 3 files changed, 38 insertions(+), 31 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 0c14cc7..138fe05 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -14,8 +14,8 @@ android { applicationId "sushi.hardcore.droidfs" minSdkVersion 21 targetSdkVersion 29 - versionCode 19 - versionName "1.6.0" + versionCode 20 + versionName "1.7.0" ndk { abiFilters "x86", "x86_64", "armeabi-v7a", "arm64-v8a" diff --git a/app/src/main/java/sushi/hardcore/droidfs/explorers/BaseExplorerActivity.kt b/app/src/main/java/sushi/hardcore/droidfs/explorers/BaseExplorerActivity.kt index 5ba39f7..654617b 100644 --- a/app/src/main/java/sushi/hardcore/droidfs/explorers/BaseExplorerActivity.kt +++ b/app/src/main/java/sushi/hardcore/droidfs/explorers/BaseExplorerActivity.kt @@ -217,22 +217,32 @@ open class BaseExplorerActivity : BaseActivity() { invalidateOptionsMenu() } - private fun sortExplorerElements() { - ExplorerElement.sortBy(sortOrderValues[currentSortOrderIndex], foldersFirst, explorerElements) + private fun displayExplorerElements(totalSizeValue: String) { + totalSizeText.text = getString(R.string.total_size, totalSizeValue) + synchronized(this) { + ExplorerElement.sortBy(sortOrderValues[currentSortOrderIndex], foldersFirst, explorerElements) + } + explorerAdapter.explorerElements = explorerElements val sharedPrefsEditor = sharedPrefs.edit() sharedPrefsEditor.putString(ConstValues.sort_order_key, sortOrderValues[currentSortOrderIndex]) sharedPrefsEditor.apply() } - protected fun setCurrentPath(path: String) { + protected fun setCurrentPath(path: String, onDisplayed: (() -> Unit)? = null) { synchronized(this) { explorerElements = gocryptfsVolume.listDir(path) + if (path.isNotEmpty()) { //not root + explorerElements.add( + 0, + ExplorerElement("..", (-1).toShort(), parentPath = currentDirectoryPath) + ) + } } textDirEmpty.visibility = if (explorerElements.size == 0) View.VISIBLE else View.INVISIBLE currentDirectoryPath = path currentPathText.text = getString(R.string.location, currentDirectoryPath) - Thread{ - val totalSizeValue = if (mapFolders) { + if (mapFolders) { + Thread { var totalSize: Long = 0 synchronized(this) { for (element in explorerElements){ @@ -250,26 +260,16 @@ open class BaseExplorerActivity : BaseActivity() { } } } - PathUtils.formatSize(totalSize) - } else { - getString(R.string.default_total_size) - } - runOnUiThread { - totalSizeText.text = getString(R.string.total_size, totalSizeValue) - synchronized(this) { - sortExplorerElements() + val totalSizeValue = PathUtils.formatSize(totalSize) + runOnUiThread { + displayExplorerElements(totalSizeValue) + onDisplayed?.invoke() } - if (path.isNotEmpty()) { //not root - synchronized(this) { - explorerElements.add( - 0, - ExplorerElement("..", (-1).toShort(), parentPath = currentDirectoryPath) - ) - } - } - explorerAdapter.explorerElements = explorerElements - } - }.start() + }.start() + } else { + displayExplorerElements(getString(R.string.default_total_size)) + onDisplayed?.invoke() + } } private fun askCloseVolume() { @@ -458,8 +458,9 @@ open class BaseExplorerActivity : BaseActivity() { .setPositiveButton(R.string.ok, null) .show() } else { - setCurrentPath(currentDirectoryPath) - invalidateOptionsMenu() + setCurrentPath(currentDirectoryPath) { + invalidateOptionsMenu() + } } } } diff --git a/app/src/main/java/sushi/hardcore/droidfs/explorers/ExplorerElement.kt b/app/src/main/java/sushi/hardcore/droidfs/explorers/ExplorerElement.kt index 5b928b9..0470d96 100644 --- a/app/src/main/java/sushi/hardcore/droidfs/explorers/ExplorerElement.kt +++ b/app/src/main/java/sushi/hardcore/droidfs/explorers/ExplorerElement.kt @@ -37,10 +37,16 @@ class ExplorerElement(val name: String, val elementType: Short, var size: Long = } } private fun doSort(a: ExplorerElement, b: ExplorerElement, foldersFirst: Boolean, sorter: () -> Int): Int { - return if (foldersFirst) { - foldersFirst(a, b, sorter) + return if (b.isParentFolder) { + 1 + } else if (a.isParentFolder) { + -1 } else { - sorter() + if (foldersFirst) { + foldersFirst(a, b, sorter) + } else { + sorter() + } } } fun sortBy(sortOrder: String, foldersFirst: Boolean, explorerElements: MutableList) {