From f515e5cd5ef822062a8c113a562e1fbe5fd4e404 Mon Sep 17 00:00:00 2001 From: soraefir Date: Wed, 2 Sep 2026 23:22:54 +0200 Subject: [PATCH] Focus amount and default payer --- .../android/bill_edit/EditBillActivity.kt | 3 +- .../android/bill_edit/EditBillScreen.kt | 39 ++++++++++++------- 2 files changed, 27 insertions(+), 15 deletions(-) diff --git a/app/src/main/java/net/helcel/cowspent/android/bill_edit/EditBillActivity.kt b/app/src/main/java/net/helcel/cowspent/android/bill_edit/EditBillActivity.kt index 73de227..33b253a 100644 --- a/app/src/main/java/net/helcel/cowspent/android/bill_edit/EditBillActivity.kt +++ b/app/src/main/java/net/helcel/cowspent/android/bill_edit/EditBillActivity.kt @@ -151,8 +151,9 @@ class EditBillActivity : AppCompatActivity() { val billIdToDuplicate = intent.getLongExtra(PARAM_BILL_ID_TO_DUPLICATE, 0) val timeNowSeconds = System.currentTimeMillis() / 1000 if (billIdToDuplicate == 0L) { + val project = db.getProject(projectId) bill = DBBill( - 0, 0, projectId, 0, 0.0, timeNowSeconds, + 0, 0, projectId, project?.lastPayerId ?: 0, 0.0, timeNowSeconds, "", DBBill.STATE_ADDED, DBBill.NON_REPEATED, DBBill.PAYMODE_NONE, DBBill.CATEGORY_NONE, "", DBBill.PAYMODE_ID_NONE ) diff --git a/app/src/main/java/net/helcel/cowspent/android/bill_edit/EditBillScreen.kt b/app/src/main/java/net/helcel/cowspent/android/bill_edit/EditBillScreen.kt index 385c0e6..50fdd89 100644 --- a/app/src/main/java/net/helcel/cowspent/android/bill_edit/EditBillScreen.kt +++ b/app/src/main/java/net/helcel/cowspent/android/bill_edit/EditBillScreen.kt @@ -17,6 +17,8 @@ import androidx.compose.material.icons.filled.* import androidx.compose.runtime.* 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.draw.clip import androidx.compose.ui.draw.scale import androidx.compose.ui.graphics.Color @@ -55,6 +57,13 @@ fun EditBillScreen( ) { val canEdit = accessLevel == DBProject.ACCESS_LEVEL_UNKNOWN || accessLevel >= DBProject.ACCESS_LEVEL_PARTICIPANT val context = LocalContext.current + val focusRequester = remember { FocusRequester() } + + LaunchedEffect(Unit) { + if (viewModel.isNewBill) { + focusRequester.requestFocus() + } + } StatefulAlertDialog( state = viewModel.dialogState, @@ -130,7 +139,8 @@ fun EditBillScreen( viewModel = viewModel, canEdit = canEdit, onDateClick = onDateClick, - onTimeClick = onTimeClick + onTimeClick = onTimeClick, + amountFocusRequester = focusRequester ) Spacer(modifier = Modifier.height(8.dp)) @@ -166,7 +176,8 @@ fun BillBasicInfoSection( viewModel: EditBillViewModel, canEdit: Boolean, onDateClick: () -> Unit, - onTimeClick: () -> Unit + onTimeClick: () -> Unit, + amountFocusRequester: FocusRequester ) { Text( text = "GENERAL", @@ -180,17 +191,6 @@ fun BillBasicInfoSection( val currencyDialogTitle = stringResource(R.string.currency_dialog_title, viewModel.mainCurrencyName) - OutlinedTextField( - value = viewModel.what, - onValueChange = { viewModel.what = it }, - enabled = canEdit, - placeholder = { Text(stringResource(R.string.label_what)) }, - modifier = Modifier.fillMaxWidth(), - leadingIcon = { Icon(Icons.Default.Title, contentDescription = null) } - ) - - Spacer(modifier = Modifier.height(8.dp)) - OutlinedTextField( value = viewModel.amount, onValueChange = { nv-> @@ -200,7 +200,7 @@ fun BillBasicInfoSection( }, enabled = canEdit, placeholder = { Text("0") }, - modifier = Modifier.fillMaxWidth(), + modifier = Modifier.fillMaxWidth().focusRequester(amountFocusRequester), leadingIcon = { val currencyToShow = viewModel.selectedCurrencyName.ifEmpty { viewModel.mainCurrencyName.ifEmpty { "$" } @@ -239,6 +239,17 @@ fun BillBasicInfoSection( Spacer(modifier = Modifier.height(8.dp)) + OutlinedTextField( + value = viewModel.what, + onValueChange = { viewModel.what = it }, + enabled = canEdit, + placeholder = { Text(stringResource(R.string.label_what)) }, + modifier = Modifier.fillMaxWidth(), + leadingIcon = { Icon(Icons.Default.Title, contentDescription = null) } + ) + + Spacer(modifier = Modifier.height(8.dp)) + val dateFormat = remember(context) { android.text.format.DateFormat.getDateFormat(context) } val timeFormat =