mirror of
https://github.com/Myzel394/NumberHub.git
synced 2025-06-19 08:45:27 +02:00
parent
4e28521ec0
commit
eb9b12da28
@ -962,6 +962,7 @@
|
|||||||
<!-- MISC. -->
|
<!-- MISC. -->
|
||||||
<string name="loading_label">"Loading…"</string>
|
<string name="loading_label">"Loading…"</string>
|
||||||
<string name="error_label">"Error"</string>
|
<string name="error_label">"Error"</string>
|
||||||
|
<string name="try_again_label">"Click to try again"</string>
|
||||||
<string name="copied">"Copied %1$s!"</string>
|
<string name="copied">"Copied %1$s!"</string>
|
||||||
<string name="cancel_label">"Cancel"</string>
|
<string name="cancel_label">"Cancel"</string>
|
||||||
<string name="ok_label" translatable="false">"OK"</string>
|
<string name="ok_label" translatable="false">"OK"</string>
|
||||||
|
@ -61,6 +61,7 @@ internal fun ConverterRoute(
|
|||||||
clearInput = viewModel::clearInput,
|
clearInput = viewModel::clearInput,
|
||||||
onCursorChange = viewModel::onCursorChange,
|
onCursorChange = viewModel::onCursorChange,
|
||||||
cutCallback = viewModel::deleteTokens,
|
cutCallback = viewModel::deleteTokens,
|
||||||
|
onErrorClick = viewModel::updateCurrenciesRatesIfNeeded,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -77,6 +78,7 @@ private fun ConverterScreen(
|
|||||||
clearInput: () -> Unit,
|
clearInput: () -> Unit,
|
||||||
onCursorChange: (TextRange) -> Unit,
|
onCursorChange: (TextRange) -> Unit,
|
||||||
cutCallback: () -> Unit,
|
cutCallback: () -> Unit,
|
||||||
|
onErrorClick: () -> Unit,
|
||||||
) {
|
) {
|
||||||
UnittoScreenWithTopBar(
|
UnittoScreenWithTopBar(
|
||||||
title = { Text(stringResource(R.string.unit_converter)) },
|
title = { Text(stringResource(R.string.unit_converter)) },
|
||||||
@ -107,6 +109,7 @@ private fun ConverterScreen(
|
|||||||
cutCallback = cutCallback,
|
cutCallback = cutCallback,
|
||||||
pasteCallback = processInput,
|
pasteCallback = processInput,
|
||||||
formatterSymbols = uiState.formatterSymbols,
|
formatterSymbols = uiState.formatterSymbols,
|
||||||
|
onErrorClick = onErrorClick
|
||||||
)
|
)
|
||||||
},
|
},
|
||||||
content2 = {
|
content2 = {
|
||||||
@ -144,6 +147,7 @@ private fun PreviewConverterScreen() {
|
|||||||
deleteDigit = {},
|
deleteDigit = {},
|
||||||
clearInput = {},
|
clearInput = {},
|
||||||
onCursorChange = {},
|
onCursorChange = {},
|
||||||
cutCallback = {}
|
cutCallback = {},
|
||||||
|
onErrorClick = {},
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
@ -285,7 +285,7 @@ class ConverterViewModel @Inject constructor(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun updateCurrenciesRatesIfNeeded() {
|
fun updateCurrenciesRatesIfNeeded() {
|
||||||
viewModelScope.launch(Dispatchers.IO) {
|
viewModelScope.launch(Dispatchers.IO) {
|
||||||
_showError.update { false }
|
_showError.update { false }
|
||||||
_showLoading.update { false }
|
_showLoading.update { false }
|
||||||
|
@ -98,6 +98,7 @@ internal fun TopScreenPart(
|
|||||||
cutCallback: () -> Unit,
|
cutCallback: () -> Unit,
|
||||||
pasteCallback: (String) -> Unit,
|
pasteCallback: (String) -> Unit,
|
||||||
formatterSymbols: FormatterSymbols,
|
formatterSymbols: FormatterSymbols,
|
||||||
|
onErrorClick: () -> Unit,
|
||||||
) {
|
) {
|
||||||
var swapped by remember { mutableStateOf(false) }
|
var swapped by remember { mutableStateOf(false) }
|
||||||
val swapButtonRotation: Float by animateFloatAsState(
|
val swapButtonRotation: Float by animateFloatAsState(
|
||||||
@ -148,7 +149,8 @@ internal fun TopScreenPart(
|
|||||||
modifier = Modifier,
|
modifier = Modifier,
|
||||||
value = calculatedTextFieldValue,
|
value = calculatedTextFieldValue,
|
||||||
onCursorChange = { newSelection ->
|
onCursorChange = { newSelection ->
|
||||||
calculatedTextFieldValue = calculatedTextFieldValue.copy(selection = newSelection)
|
calculatedTextFieldValue =
|
||||||
|
calculatedTextFieldValue.copy(selection = newSelection)
|
||||||
},
|
},
|
||||||
formatterSymbols = formatterSymbols,
|
formatterSymbols = formatterSymbols,
|
||||||
textColor = MaterialTheme.colorScheme.onSurfaceVariant.copy(alpha = 0.6f),
|
textColor = MaterialTheme.colorScheme.onSurfaceVariant.copy(alpha = 0.6f),
|
||||||
@ -237,7 +239,7 @@ internal fun TopScreenPart(
|
|||||||
UnformattedTextField(
|
UnformattedTextField(
|
||||||
modifier = Modifier.weight(2f),
|
modifier = Modifier.weight(2f),
|
||||||
value = TextFieldValue(stringResource(R.string.error_label)),
|
value = TextFieldValue(stringResource(R.string.error_label)),
|
||||||
onCursorChange = {},
|
onCursorChange = { onErrorClick() },
|
||||||
minRatio = 0.7f,
|
minRatio = 0.7f,
|
||||||
readOnly = true,
|
readOnly = true,
|
||||||
textColor = MaterialTheme.colorScheme.error
|
textColor = MaterialTheme.colorScheme.error
|
||||||
@ -245,9 +247,15 @@ internal fun TopScreenPart(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
val supportLabelTo = when {
|
||||||
|
outputValue is ConversionResult.Error -> R.string.try_again_label
|
||||||
|
(unitTo?.shortName != null) -> unitTo.shortName
|
||||||
|
else -> R.string.loading_label
|
||||||
|
}
|
||||||
|
|
||||||
AnimatedContent(
|
AnimatedContent(
|
||||||
modifier = Modifier.fillMaxWidth(),
|
modifier = Modifier.fillMaxWidth(),
|
||||||
targetState = stringResource(unitTo?.shortName ?: R.string.loading_label),
|
targetState = stringResource(supportLabelTo),
|
||||||
transitionSpec = {
|
transitionSpec = {
|
||||||
// Enter animation
|
// Enter animation
|
||||||
(expandHorizontally(clip = false, expandFrom = Alignment.Start) + fadeIn()
|
(expandHorizontally(clip = false, expandFrom = Alignment.Start) + fadeIn()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user