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 @@
+
+
+
+
+
+