cashless2ecash

cashless2ecash: pay with cards for digital cash (experimental)
Log | Files | Refs | README

commit c44537dedacc9f50c1067242a6b3067eb18d2045
parent 6b3c1464ea68d3d31d17e2c967f9539bb9b90475
Author: fsb2 <benjamin.fehrensen@bfh.ch>
Date:   Mon, 14 Apr 2025 09:30:38 +0200

Autofocus added

Diffstat:
Mwallee-c2ec/app/build.gradle.kts | 4++--
Mwallee-c2ec/app/src/main/java/ch/bfh/habej2/wallee_c2ec/withdrawal/AmountScreen.kt | 24++++++++++++++++++++++--
2 files changed, 24 insertions(+), 4 deletions(-)

diff --git a/wallee-c2ec/app/build.gradle.kts b/wallee-c2ec/app/build.gradle.kts @@ -11,8 +11,8 @@ android { applicationId = "ch.bfh.habej2.wallee_c2ec" minSdk = 27 targetSdk = 34 - versionCode = 2 - versionName = "1.0.1" + versionCode = 3 + versionName = "1.0.2" testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" vectorDrawables { diff --git a/wallee-c2ec/app/src/main/java/ch/bfh/habej2/wallee_c2ec/withdrawal/AmountScreen.kt b/wallee-c2ec/app/src/main/java/ch/bfh/habej2/wallee_c2ec/withdrawal/AmountScreen.kt @@ -26,15 +26,22 @@ import androidx.compose.foundation.text.KeyboardOptions import androidx.compose.material3.Text import androidx.compose.material3.TextField import androidx.compose.runtime.Composable +import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.collectAsState import androidx.compose.runtime.getValue +import androidx.compose.runtime.remember import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier +import androidx.compose.ui.focus.FocusRequester +import androidx.compose.ui.focus.focusRequester +import androidx.compose.ui.focus.onFocusChanged import androidx.compose.ui.platform.LocalConfiguration +import androidx.compose.ui.platform.LocalSoftwareKeyboardController import androidx.compose.ui.res.colorResource import androidx.compose.ui.text.input.KeyboardType import androidx.compose.ui.unit.dp import ch.bfh.habej2.wallee_c2ec.R +import kotlinx.coroutines.delay @Composable fun AmountScreen( @@ -46,6 +53,9 @@ fun AmountScreen( val uiState by model.uiState.collectAsState() val configuration = LocalConfiguration.current + val focusRequester = remember { FocusRequester() } + val keyboardController = LocalSoftwareKeyboardController.current + Column( Modifier.width(configuration.screenWidthDp.dp), @@ -60,12 +70,18 @@ fun AmountScreen( TextField( uiState.amountStr, onValueChange = { - println(it) if (!model.validateInput(it)) { model.resetAmountStr() } }, label = { Text(text = "Withdrawal amount") }, + modifier = Modifier + .focusRequester(focusRequester) + .onFocusChanged { + if (it.isFocused) { + keyboardController?.show() + } + }, keyboardOptions = KeyboardOptions( autoCorrectEnabled = false, keyboardType = KeyboardType.Number @@ -79,7 +95,6 @@ fun AmountScreen( TalerButton( text = "Continue", onClick = { - println("clicked 'pay'") model.setupWithdrawal(activity) navigateToWhenAmountEntered() }, @@ -88,4 +103,9 @@ fun AmountScreen( TalerButton(text = "Stop", onClick = { model.withdrawalOperationFailed(activity) }) } + LaunchedEffect(Unit) { + delay(100) + focusRequester.requestFocus() + keyboardController?.show() + } }