diff --git a/app/src/main/java/no/naiv/meddetsamme/ui/InventoryScreen.kt b/app/src/main/java/no/naiv/meddetsamme/ui/InventoryScreen.kt index e2dbcb8..0df8e9a 100644 --- a/app/src/main/java/no/naiv/meddetsamme/ui/InventoryScreen.kt +++ b/app/src/main/java/no/naiv/meddetsamme/ui/InventoryScreen.kt @@ -84,11 +84,11 @@ fun InventoryScreen(nav: Nav) { .clickable { nav.push(Screen.ItemEdit(item.id)) } .semantics(mergeDescendants = true) { contentDescription = - "${item.name} ${item.strength}, ${ScheduleText.amountText(item.stockUnits, item.unit)} på lager. Trykk for å redigere." + "${item.name} ${item.strength}, ${FORM_LABELS[item.form]}, ${ScheduleText.amountText(item.stockUnits, item.unit)} på lager. Trykk for å redigere." }, ) { Row(Modifier.padding(12.dp), verticalAlignment = Alignment.CenterVertically) { - LetterAvatar(item.name) + FormAvatar(item.form) Column(Modifier.padding(start = 12.dp).weight(1f)) { Text("${item.name} ${item.strength}".trim(), style = MaterialTheme.typography.titleMedium) Text( diff --git a/app/src/main/java/no/naiv/meddetsamme/ui/ItemForm.kt b/app/src/main/java/no/naiv/meddetsamme/ui/ItemForm.kt index 40870d7..69b4e68 100644 --- a/app/src/main/java/no/naiv/meddetsamme/ui/ItemForm.kt +++ b/app/src/main/java/no/naiv/meddetsamme/ui/ItemForm.kt @@ -73,9 +73,23 @@ fun guessForm(festForm: String): MedForm = when { fun parseAmount(s: String): Double? = s.trim().replace(',', '.').toDoubleOrNull() -/** Tonal circle with the preparation's initial — cheap visual anchor in lists. */ +/** Pharmaceutical-form icon for list rows. */ +fun iconForForm(form: MedForm): Int = when (form) { + MedForm.TABLET -> no.naiv.meddetsamme.R.drawable.ic_form_tablet + MedForm.CAPSULE -> no.naiv.meddetsamme.R.drawable.ic_form_capsule + MedForm.LIQUID -> no.naiv.meddetsamme.R.drawable.ic_form_liquid + MedForm.INJECTION -> no.naiv.meddetsamme.R.drawable.ic_form_injection + MedForm.DROPS -> no.naiv.meddetsamme.R.drawable.ic_form_drops + MedForm.SPRAY -> no.naiv.meddetsamme.R.drawable.ic_form_spray + MedForm.OTHER -> no.naiv.meddetsamme.R.drawable.ic_form_other +} + +/** + * Tonal circle with the form's icon — what-am-I-taking at a glance. + * Decorative: rows carry a full merged contentDescription including the form. + */ @Composable -fun LetterAvatar(name: String) { +fun FormAvatar(form: MedForm) { androidx.compose.material3.Surface( shape = androidx.compose.foundation.shape.CircleShape, color = MaterialTheme.colorScheme.primaryContainer, @@ -83,9 +97,10 @@ fun LetterAvatar(name: String) { modifier = Modifier.size(40.dp), ) { Box(contentAlignment = Alignment.Center) { - Text( - name.firstOrNull()?.uppercase() ?: "?", - style = MaterialTheme.typography.titleMedium, + androidx.compose.material3.Icon( + androidx.compose.ui.res.painterResource(iconForForm(form)), + contentDescription = null, + modifier = Modifier.size(22.dp), ) } } diff --git a/app/src/main/java/no/naiv/meddetsamme/ui/MedListScreen.kt b/app/src/main/java/no/naiv/meddetsamme/ui/MedListScreen.kt index fdf0e9e..91b53dd 100644 --- a/app/src/main/java/no/naiv/meddetsamme/ui/MedListScreen.kt +++ b/app/src/main/java/no/naiv/meddetsamme/ui/MedListScreen.kt @@ -80,11 +80,11 @@ fun MedListScreen(nav: Nav) { .clickable { nav.push(Screen.MedEdit(med.med.id)) } .semantics(mergeDescendants = true) { contentDescription = - "${med.displayName}, lager ${ScheduleText.amountText(med.item.stockUnits, med.item.unit)}. Trykk for å redigere." + "${med.displayName}, ${FORM_LABELS[med.item.form]}, lager ${ScheduleText.amountText(med.item.stockUnits, med.item.unit)}. Trykk for å redigere." }, ) { Row(Modifier.padding(12.dp), verticalAlignment = Alignment.CenterVertically) { - LetterAvatar(med.item.name) + FormAvatar(med.item.form) Column(Modifier.padding(start = 12.dp).weight(1f)) { Text(med.displayName, style = MaterialTheme.typography.titleMedium) Text( diff --git a/app/src/main/res/drawable/ic_form_capsule.xml b/app/src/main/res/drawable/ic_form_capsule.xml new file mode 100644 index 0000000..6ccafd9 --- /dev/null +++ b/app/src/main/res/drawable/ic_form_capsule.xml @@ -0,0 +1,9 @@ + + + + + diff --git a/app/src/main/res/drawable/ic_form_drops.xml b/app/src/main/res/drawable/ic_form_drops.xml new file mode 100644 index 0000000..b568622 --- /dev/null +++ b/app/src/main/res/drawable/ic_form_drops.xml @@ -0,0 +1,9 @@ + + + + + diff --git a/app/src/main/res/drawable/ic_form_injection.xml b/app/src/main/res/drawable/ic_form_injection.xml new file mode 100644 index 0000000..20cf74b --- /dev/null +++ b/app/src/main/res/drawable/ic_form_injection.xml @@ -0,0 +1,15 @@ + + + + + + + diff --git a/app/src/main/res/drawable/ic_form_liquid.xml b/app/src/main/res/drawable/ic_form_liquid.xml new file mode 100644 index 0000000..60af88d --- /dev/null +++ b/app/src/main/res/drawable/ic_form_liquid.xml @@ -0,0 +1,15 @@ + + + + + + + diff --git a/app/src/main/res/drawable/ic_form_other.xml b/app/src/main/res/drawable/ic_form_other.xml new file mode 100644 index 0000000..c489ea6 --- /dev/null +++ b/app/src/main/res/drawable/ic_form_other.xml @@ -0,0 +1,12 @@ + + + + + + diff --git a/app/src/main/res/drawable/ic_form_spray.xml b/app/src/main/res/drawable/ic_form_spray.xml new file mode 100644 index 0000000..ee6d755 --- /dev/null +++ b/app/src/main/res/drawable/ic_form_spray.xml @@ -0,0 +1,15 @@ + + + + + + + diff --git a/app/src/main/res/drawable/ic_form_tablet.xml b/app/src/main/res/drawable/ic_form_tablet.xml new file mode 100644 index 0000000..0f9afd9 --- /dev/null +++ b/app/src/main/res/drawable/ic_form_tablet.xml @@ -0,0 +1,12 @@ + + + + + +