diff --git a/CHANGELOG.md b/CHANGELOG.md index 9ae0ae1d..10c31ae6 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 b3844440..00000000 --- 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 ecbbaccf..f8a8bf93 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.formatSizeThousand import org.fossify.filemanager.extensions.getAllVolumeNames import org.fossify.filemanager.helpers.ARCHIVES import org.fossify.filemanager.helpers.AUDIO @@ -65,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 = "" @@ -252,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) { @@ -309,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) @@ -322,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.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) }