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, input = calculation?.toPlainString() ?: input.text,
scale = prefs.digitsPrecision, scale = prefs.digitsPrecision,
outputFormat = prefs.outputFormat, outputFormat = prefs.outputFormat,
formatterSymbols = AllFormatterSymbols.getById(prefs.separator)
) )
} }
.onEach { .onEach {

View File

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

View File

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