Displaying if a bank is supported or not

This commit is contained in:
dankito 2024-09-06 17:30:11 +02:00
parent f29e4b5fcc
commit a5a27c7781
2 changed files with 41 additions and 14 deletions

View File

@ -74,6 +74,7 @@ kotlin {
implementation(compose.runtime) implementation(compose.runtime)
implementation(compose.foundation) implementation(compose.foundation)
implementation(compose.material) implementation(compose.material)
implementation(compose.materialIconsExtended)
implementation(compose.ui) implementation(compose.ui)
implementation(compose.components.resources) implementation(compose.components.resources)
implementation(compose.components.uiToolingPreview) implementation(compose.components.uiToolingPreview)

View File

@ -2,8 +2,12 @@ package net.codinux.banking.ui.dialogs
import androidx.compose.foundation.layout.* import androidx.compose.foundation.layout.*
import androidx.compose.foundation.text.KeyboardOptions import androidx.compose.foundation.text.KeyboardOptions
import androidx.compose.material.Text import androidx.compose.material.*
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.CheckCircle
import androidx.compose.material.icons.filled.Clear
import androidx.compose.runtime.* import androidx.compose.runtime.*
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.Color
import androidx.compose.ui.text.input.ImeAction import androidx.compose.ui.text.input.ImeAction
@ -16,12 +20,16 @@ import net.codinux.banking.ui.IOorDefault
import net.codinux.banking.ui.composables.BankIcon import net.codinux.banking.ui.composables.BankIcon
import net.codinux.banking.ui.config.Colors import net.codinux.banking.ui.config.Colors
import net.codinux.banking.ui.config.DI import net.codinux.banking.ui.config.DI
import net.codinux.banking.ui.forms.* import net.codinux.banking.ui.forms.AutocompleteTextField
import net.codinux.banking.ui.forms.OutlinedTextField
import net.codinux.banking.ui.forms.PasswordTextField
import net.codinux.banking.ui.model.BankInfo import net.codinux.banking.ui.model.BankInfo
private val bankingService = DI.bankingService private val bankingService = DI.bankingService
private val iconSize = 36.dp
@Composable @Composable
fun AddAccountDialog( fun AddAccountDialog(
onDismiss: () -> Unit, onDismiss: () -> Unit,
@ -35,6 +43,8 @@ fun AddAccountDialog(
derivedStateOf { selectedBank != null && loginName.length > 3 && password.length > 3 } derivedStateOf { selectedBank != null && loginName.length > 3 && password.length > 3 }
} }
val disabledColor: Color = MaterialTheme.colors.onSurface.copy(ContentAlpha.disabled)
var isAddingAccount by remember { mutableStateOf(false) } var isAddingAccount by remember { mutableStateOf(false) }
val coroutineScope = rememberCoroutineScope() val coroutineScope = rememberCoroutineScope()
@ -79,21 +89,37 @@ fun AddAccountDialog(
getItemTitle = { bank -> bank.name }, getItemTitle = { bank -> bank.name },
fetchSuggestions = { query -> bankingService.findBanks(query) } fetchSuggestions = { query -> bankingService.findBanks(query) }
) { bank -> ) { bank ->
val supportsFinTs = bank.supportsFinTs3_0
val textColor = if (supportsFinTs) Color.Unspecified else disabledColor
Row(Modifier.fillMaxWidth()) {
Column(Modifier.fillMaxHeight().width(iconSize).align(Alignment.CenterVertically)) {
if (supportsFinTs) {
Icon(Icons.Filled.CheckCircle, "Bank unterstützt FinTS 3.0", tint = Colors.Accent, modifier = Modifier.size(iconSize))
} else {
Icon(Icons.Filled.Clear, "Bank unterstützt FinTS 3.0 nicht", tint = Colors.Red600, modifier = Modifier.size(iconSize))
}
}
Column(Modifier.fillMaxWidth().weight(1f).padding(start = 8.dp)) {
Row { Row {
BankIcon(bank, Modifier.padding(end = 6.dp)) BankIcon(bank, Modifier.padding(end = 6.dp))
Text( Text(
bank.name, bank.name,
Modifier.fillMaxWidth(), Modifier.fillMaxWidth(),
color = textColor,
maxLines = 1, maxLines = 1,
overflow = TextOverflow.Ellipsis overflow = TextOverflow.Ellipsis
) )
} }
Row(Modifier.fillMaxWidth().padding(top = 8.dp)) { Row(Modifier.fillMaxWidth().padding(top = 6.dp)) {
Text(bank.bankCode) Text(bank.bankCode, color = textColor)
Text("${bank.postalCode} ${bank.city}", Modifier.weight(1f).padding(start = 8.dp), color = Color.Gray) Text("${bank.postalCode} ${bank.city}", Modifier.weight(1f).padding(start = 8.dp), color = if (supportsFinTs) Color.Gray else textColor)
}
}
} }
} }