diff --git a/feature/converter/src/main/java/app/myzel394/numberhub/feature/converter/components/ConverterKeyboard.kt b/feature/converter/src/main/java/app/myzel394/numberhub/feature/converter/components/ConverterKeyboard.kt index 9a47e2c4..a9be920e 100644 --- a/feature/converter/src/main/java/app/myzel394/numberhub/feature/converter/components/ConverterKeyboard.kt +++ b/feature/converter/src/main/java/app/myzel394/numberhub/feature/converter/components/ConverterKeyboard.kt @@ -81,6 +81,7 @@ import app.myzel394.numberhub.core.ui.common.icons.iconpack.Power import app.myzel394.numberhub.core.ui.common.icons.iconpack.RightBracket import app.myzel394.numberhub.core.ui.common.icons.iconpack.Root import app.myzel394.numberhub.data.model.converter.unit.BasicUnit +import app.myzel394.numberhub.feature.converter.createSortedArray import kotlin.math.ceil @Composable @@ -521,25 +522,3 @@ private fun PreviewConverterKeyboardNumberBase() { basis = BasicUnit.NumberBase.Hexadecimal, ) } - -// So here's the problem. If we just go down from 3 downto 0 with columns 2, this results in: -// [3, 2] -// [1, 0] -// While this is correct, the ordering is incorrect. It should be -// [2, 3] -// [0, 1] -// TODO: Add support for rtl languages -internal fun createSortedArray(range: IntRange, columns: Int): List { - val result = mutableListOf() - val rows = ceil(range.count().toDouble() / columns.toDouble()).toInt() - for (row in rows downTo 0) { - for (column in 0 until columns) { - val index = row * columns + column + range.first - if (index <= range.last) { - result.add(index) - } - } - } - - return result -} diff --git a/feature/converter/src/main/java/app/myzel394/numberhub/feature/converter/utils.kt b/feature/converter/src/main/java/app/myzel394/numberhub/feature/converter/utils.kt new file mode 100644 index 00000000..3b7cbc91 --- /dev/null +++ b/feature/converter/src/main/java/app/myzel394/numberhub/feature/converter/utils.kt @@ -0,0 +1,25 @@ +package app.myzel394.numberhub.feature.converter + +import kotlin.math.ceil + +// So here's the problem. If we just go down from 3 downto 0 with columns 2, this results in: +// [3, 2] +// [1, 0] +// While this is correct, the ordering is incorrect. It should be +// [2, 3] +// [0, 1] +// TODO: Add support for rtl languages +internal fun createSortedArray(range: IntRange, columns: Int): List { + val result = mutableListOf() + val rows = ceil(range.count().toDouble() / columns.toDouble()).toInt() + for (row in rows downTo 0) { + for (column in 0 until columns) { + val index = row * columns + column + range.first + if (index <= range.last) { + result.add(index) + } + } + } + + return result +}