From 20875075dd3d1e8aec7f4c773121a13c4c28b475 Mon Sep 17 00:00:00 2001 From: Naveen Singh Date: Sun, 8 Feb 2026 17:00:42 +0530 Subject: [PATCH 1/3] docs(changelog): add entry regarding file size calculation change --- CHANGELOG.md | 2 ++ .../org/fossify/filemanager/extensions/Long.kt | 14 -------------- .../filemanager/fragments/StorageFragment.kt | 6 +++--- 3 files changed, 5 insertions(+), 17 deletions(-) delete mode 100644 app/src/main/kotlin/org/fossify/filemanager/extensions/Long.kt diff --git a/CHANGELOG.md b/CHANGELOG.md index 9ae0ae1d8..10c31ae6a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ## [Unreleased] +### Fixed +- Fixed file size calculations to use SI decimal units (divide by 1000) ## [1.6.0] - 2026-01-30 ### Added diff --git a/app/src/main/kotlin/org/fossify/filemanager/extensions/Long.kt b/app/src/main/kotlin/org/fossify/filemanager/extensions/Long.kt deleted file mode 100644 index b38444402..000000000 --- a/app/src/main/kotlin/org/fossify/filemanager/extensions/Long.kt +++ /dev/null @@ -1,14 +0,0 @@ -package org.fossify.filemanager.extensions - -import java.text.DecimalFormat - -// use 1000 instead of 1024 at dividing -fun Long.formatSizeThousand(): String { - if (this <= 0) { - return "0 B" - } - - val units = arrayOf("B", "kB", "MB", "GB", "TB") - val digitGroups = (Math.log10(toDouble()) / Math.log10(1000.0)).toInt() - return "${DecimalFormat("#,##0.#").format(this / Math.pow(1000.0, digitGroups.toDouble()))} ${units[digitGroups]}" -} diff --git a/app/src/main/kotlin/org/fossify/filemanager/fragments/StorageFragment.kt b/app/src/main/kotlin/org/fossify/filemanager/fragments/StorageFragment.kt index ecbbaccf8..8ef28c4f4 100644 --- a/app/src/main/kotlin/org/fossify/filemanager/fragments/StorageFragment.kt +++ b/app/src/main/kotlin/org/fossify/filemanager/fragments/StorageFragment.kt @@ -46,7 +46,7 @@ import org.fossify.filemanager.adapters.ItemsAdapter import org.fossify.filemanager.databinding.ItemStorageVolumeBinding import org.fossify.filemanager.databinding.StorageFragmentBinding import org.fossify.filemanager.extensions.config -import org.fossify.filemanager.extensions.formatSizeThousand + import org.fossify.filemanager.extensions.getAllVolumeNames import org.fossify.filemanager.helpers.ARCHIVES import org.fossify.filemanager.helpers.AUDIO @@ -331,8 +331,8 @@ class StorageFragment(context: Context, attributeSet: AttributeSet) : MyViewPage mainStorageUsageProgressbar.progress = ((totalStorageSpace - freeStorageSpace) / SIZE_DIVIDER).toInt() mainStorageUsageProgressbar.beVisible() - freeSpaceValue.text = freeStorageSpace.formatSizeThousand() - totalSpace.text = String.format(context.getString(R.string.total_storage), totalStorageSpace.formatSizeThousand()) + freeSpaceValue.text = freeStorageSpace.formatSize() + totalSpace.text = String.format(context.getString(R.string.total_storage), totalStorageSpace.formatSize()) freeSpaceLabel.beVisible() getSizes(volumeName) } From a665df9ca384858d9d567437f75e532e5030fd38 Mon Sep 17 00:00:00 2001 From: Naveen Singh Date: Sun, 8 Feb 2026 17:05:15 +0530 Subject: [PATCH 2/3] refactor: remove empty line --- .../kotlin/org/fossify/filemanager/fragments/StorageFragment.kt | 1 - 1 file changed, 1 deletion(-) diff --git a/app/src/main/kotlin/org/fossify/filemanager/fragments/StorageFragment.kt b/app/src/main/kotlin/org/fossify/filemanager/fragments/StorageFragment.kt index 8ef28c4f4..62ce88044 100644 --- a/app/src/main/kotlin/org/fossify/filemanager/fragments/StorageFragment.kt +++ b/app/src/main/kotlin/org/fossify/filemanager/fragments/StorageFragment.kt @@ -46,7 +46,6 @@ import org.fossify.filemanager.adapters.ItemsAdapter import org.fossify.filemanager.databinding.ItemStorageVolumeBinding import org.fossify.filemanager.databinding.StorageFragmentBinding import org.fossify.filemanager.extensions.config - import org.fossify.filemanager.extensions.getAllVolumeNames import org.fossify.filemanager.helpers.ARCHIVES import org.fossify.filemanager.helpers.AUDIO From 3283048fb1f623b5b97b9263f3d346bfbb37d803 Mon Sep 17 00:00:00 2001 From: Naveen Singh Date: Sun, 8 Feb 2026 17:15:12 +0530 Subject: [PATCH 3/3] refactor: reformat code --- .../filemanager/fragments/StorageFragment.kt | 27 +++++++++++++------ 1 file changed, 19 insertions(+), 8 deletions(-) diff --git a/app/src/main/kotlin/org/fossify/filemanager/fragments/StorageFragment.kt b/app/src/main/kotlin/org/fossify/filemanager/fragments/StorageFragment.kt index 62ce88044..f8a8bf934 100644 --- a/app/src/main/kotlin/org/fossify/filemanager/fragments/StorageFragment.kt +++ b/app/src/main/kotlin/org/fossify/filemanager/fragments/StorageFragment.kt @@ -64,8 +64,10 @@ import org.fossify.filemanager.interfaces.ItemOperationsListener import org.fossify.filemanager.models.ListItem import java.util.Locale -class StorageFragment(context: Context, attributeSet: AttributeSet) : MyViewPagerFragment(context, attributeSet), - ItemOperationsListener { +class StorageFragment( + context: Context, + attributeSet: AttributeSet +) : MyViewPagerFragment(context, attributeSet), ItemOperationsListener { private val SIZE_DIVIDER = 100000 private var allDeviceListItems = ArrayList() private var lastSearchedText = "" @@ -251,7 +253,8 @@ class StorageFragment(context: Context, attributeSet: AttributeSet) : MyViewPage try { context.queryCursor(uri, projection) { cursor -> try { - val mimeType = cursor.getStringValue(MediaStore.Files.FileColumns.MIME_TYPE)?.lowercase(Locale.getDefault()) + val mimeType = + cursor.getStringValue(MediaStore.Files.FileColumns.MIME_TYPE)?.lowercase(Locale.getDefault()) val size = cursor.getLongValue(MediaStore.Files.FileColumns.SIZE) if (mimeType == null) { if (size > 0 && size != 4096L) { @@ -308,7 +311,8 @@ class StorageFragment(context: Context, attributeSet: AttributeSet) : MyViewPage if (storageVolume.isPrimary) { // internal storage volumeName = PRIMARY_VOLUME_NAME - val storageStatsManager = context.getSystemService(AppCompatActivity.STORAGE_STATS_SERVICE) as StorageStatsManager + val storageStatsManager = + context.getSystemService(AppCompatActivity.STORAGE_STATS_SERVICE) as StorageStatsManager val uuid = StorageManager.UUID_DEFAULT totalStorageSpace = storageStatsManager.getTotalBytes(uuid) freeStorageSpace = storageStatsManager.getFreeBytes(uuid) @@ -321,17 +325,24 @@ class StorageFragment(context: Context, attributeSet: AttributeSet) : MyViewPage post { volumes[volumeName]?.apply { arrayOf( - mainStorageUsageProgressbar, imagesProgressbar, videosProgressbar, audioProgressbar, documentsProgressbar, - archivesProgressbar, othersProgressbar + mainStorageUsageProgressbar, + imagesProgressbar, + videosProgressbar, + audioProgressbar, + documentsProgressbar, + archivesProgressbar, + othersProgressbar ).forEach { it.max = (totalStorageSpace / SIZE_DIVIDER).toInt() } - mainStorageUsageProgressbar.progress = ((totalStorageSpace - freeStorageSpace) / SIZE_DIVIDER).toInt() + mainStorageUsageProgressbar.progress = + ((totalStorageSpace - freeStorageSpace) / SIZE_DIVIDER).toInt() mainStorageUsageProgressbar.beVisible() freeSpaceValue.text = freeStorageSpace.formatSize() - totalSpace.text = String.format(context.getString(R.string.total_storage), totalStorageSpace.formatSize()) + totalSpace.text = + String.format(context.getString(R.string.total_storage), totalStorageSpace.formatSize()) freeSpaceLabel.beVisible() getSizes(volumeName) }