Format numbers in batch converter

This commit is contained in:
Sad Ellie 2023-09-11 23:47:27 +03:00
parent 8d62cb0009
commit 1846485ce9
3 changed files with 13 additions and 3 deletions

View File

@ -185,6 +185,7 @@ internal class ConverterViewModel @Inject constructor(
input = calculation?.toPlainString() ?: input.text,
scale = prefs.digitsPrecision,
outputFormat = prefs.outputFormat,
formatterSymbols = AllFormatterSymbols.getById(prefs.separator)
)
}
.onEach {

View File

@ -35,6 +35,8 @@ import androidx.compose.ui.tooling.preview.Preview
import androidx.lifecycle.compose.collectAsStateWithLifecycle
import com.sadellie.unitto.core.base.R
import com.sadellie.unitto.core.ui.common.UnittoSearchBar
import com.sadellie.unitto.core.ui.common.textfield.FormatterSymbols
import com.sadellie.unitto.core.ui.common.textfield.formatExpression
import com.sadellie.unitto.data.common.format
import com.sadellie.unitto.data.model.unit.AbstractUnit
import com.sadellie.unitto.data.model.unit.DefaultUnit
@ -116,7 +118,8 @@ private fun RightSideScreen(
input = uiState.input,
shortName = stringResource(it.shortName),
scale = uiState.scale,
outputFormat = uiState.outputFormat
outputFormat = uiState.outputFormat,
formatterSymbols = uiState.formatterSymbols
),
isFavorite = it.isFavorite,
isSelected = it.id == uiState.unitTo?.id,
@ -139,14 +142,18 @@ private fun formatUnitToSupportLabel(
input: String,
shortName: String,
scale: Int,
outputFormat: Int
outputFormat: Int,
formatterSymbols: FormatterSymbols
): String {
try {
if ((unitFrom is DefaultUnit) and (unitTo is DefaultUnit)) {
unitFrom as DefaultUnit
unitTo as DefaultUnit
val conversion = unitFrom.convert(unitTo, BigDecimal(input)).format(scale, outputFormat)
val conversion = unitFrom
.convert(unitTo, BigDecimal(input))
.format(scale, outputFormat)
.formatExpression(formatterSymbols)
return "$conversion $shortName"
}

View File

@ -20,6 +20,7 @@ package com.sadellie.unitto.feature.converter
import androidx.compose.ui.text.input.TextFieldValue
import com.sadellie.unitto.core.base.OutputFormat
import com.sadellie.unitto.core.ui.common.textfield.FormatterSymbols
import com.sadellie.unitto.data.model.UnitGroup
import com.sadellie.unitto.data.model.UnitsListSorting
import com.sadellie.unitto.data.model.unit.AbstractUnit
@ -35,4 +36,5 @@ internal data class RightSideUIState(
val input: String = "",
val scale: Int = 3,
val outputFormat: Int = OutputFormat.PLAIN,
val formatterSymbols: FormatterSymbols = FormatterSymbols.Spaces
)