From 60c11e619252261d9acda260a76170b5c73ff03f Mon Sep 17 00:00:00 2001 From: "Andres Gomez, Thomas (ITDV RL)" Date: Wed, 29 May 2024 18:44:37 +0200 Subject: [PATCH] Add icon to objects --- .../pixelized/rplexicon/data/model/ObjectAction.kt | 3 +++ .../rplexicon/data/parser/ObjectActionParser.kt | 4 +++- .../character/composable/actions/ObjectItem.kt | 14 +++++++++++++- .../preview/rememberObjectListStatePreview.kt | 2 ++ .../character/pages/actions/ObjectsViewModel.kt | 1 + 5 files changed, 22 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/com/pixelized/rplexicon/data/model/ObjectAction.kt b/app/src/main/java/com/pixelized/rplexicon/data/model/ObjectAction.kt index 87fd44f..bd61122 100644 --- a/app/src/main/java/com/pixelized/rplexicon/data/model/ObjectAction.kt +++ b/app/src/main/java/com/pixelized/rplexicon/data/model/ObjectAction.kt @@ -1,7 +1,10 @@ package com.pixelized.rplexicon.data.model +import android.net.Uri + data class ObjectAction( val prefix: String?, + val icon: Uri?, val name: String, val effect: Throw?, ) \ No newline at end of file diff --git a/app/src/main/java/com/pixelized/rplexicon/data/parser/ObjectActionParser.kt b/app/src/main/java/com/pixelized/rplexicon/data/parser/ObjectActionParser.kt index acee1b2..72c5165 100644 --- a/app/src/main/java/com/pixelized/rplexicon/data/parser/ObjectActionParser.kt +++ b/app/src/main/java/com/pixelized/rplexicon/data/parser/ObjectActionParser.kt @@ -24,6 +24,7 @@ class ObjectActionParser @Inject constructor( objects.getOrPut(character) { mutableListOf() }.add( ObjectAction( prefix = row.parse(column = PREFIX), + icon = row.parseUri(column = ICON), name = name, effect = throwParser.parse(value = row.parse(column = EFFECT)), ) @@ -40,6 +41,7 @@ class ObjectActionParser @Inject constructor( private val PREFIX = column("Préfix") private val NAME = column("Nom") private val EFFECT = column("Effet") - private val COLUMNS = listOf(PREFIX, NAME, EFFECT) + private val ICON = column("Icone") + private val COLUMNS = listOf(PREFIX, NAME, EFFECT, ICON) } } \ No newline at end of file diff --git a/app/src/main/java/com/pixelized/rplexicon/ui/screens/character/composable/actions/ObjectItem.kt b/app/src/main/java/com/pixelized/rplexicon/ui/screens/character/composable/actions/ObjectItem.kt index 1b50cce..7e9a1ad 100644 --- a/app/src/main/java/com/pixelized/rplexicon/ui/screens/character/composable/actions/ObjectItem.kt +++ b/app/src/main/java/com/pixelized/rplexicon/ui/screens/character/composable/actions/ObjectItem.kt @@ -2,6 +2,7 @@ package com.pixelized.rplexicon.ui.screens.character.composable.actions import android.content.res.Configuration.UI_MODE_NIGHT_NO import android.content.res.Configuration.UI_MODE_NIGHT_YES +import android.net.Uri import androidx.compose.foundation.BorderStroke import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Arrangement @@ -10,6 +11,7 @@ import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size import androidx.compose.material.minimumInteractiveComponentSize import androidx.compose.material3.MaterialTheme import androidx.compose.material3.OutlinedButton @@ -27,10 +29,12 @@ import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import com.pixelized.rplexicon.R import com.pixelized.rplexicon.data.model.Throw +import com.pixelized.rplexicon.ui.composable.AsyncImage import com.pixelized.rplexicon.ui.theme.LexiconTheme @Stable data class ObjectItemUio( + val icon: Uri?, val prefix: String?, val name: String, val original: String?, @@ -51,9 +55,16 @@ fun ObjectItem( .minimumInteractiveComponentSize() .padding(paddingValues = padding) .then(other = modifier), - horizontalArrangement = Arrangement.spacedBy(space = 12.dp), + horizontalArrangement = Arrangement.spacedBy(space = 8.dp), verticalAlignment = Alignment.CenterVertically, ) { + item.icon?.let { uri -> + AsyncImage( + modifier = Modifier.size(size = 36.dp), + model = uri, + contentDescription = null, + ) + } Column( modifier = Modifier.weight(weight = 1f) ) { @@ -101,6 +112,7 @@ private fun ObjectItemPreview() { ObjectItem( modifier = Modifier.fillMaxWidth(), item = ObjectItemUio( + icon = null, prefix = "Parchemin de ", name = "Bénédiction", original = "Blessing", diff --git a/app/src/main/java/com/pixelized/rplexicon/ui/screens/character/composable/preview/rememberObjectListStatePreview.kt b/app/src/main/java/com/pixelized/rplexicon/ui/screens/character/composable/preview/rememberObjectListStatePreview.kt index 7b9bc70..752cbc6 100644 --- a/app/src/main/java/com/pixelized/rplexicon/ui/screens/character/composable/preview/rememberObjectListStatePreview.kt +++ b/app/src/main/java/com/pixelized/rplexicon/ui/screens/character/composable/preview/rememberObjectListStatePreview.kt @@ -13,12 +13,14 @@ fun rememberObjectListStatePreview() = remember { mutableStateOf( listOf( ObjectItemUio( + icon = null, prefix = null, name = "Potion de guérison", original = "Healing potion", effect = null, ), ObjectItemUio( + icon = null, prefix = "Parchemin de", name = "Bénédiction", original = "Blessing", diff --git a/app/src/main/java/com/pixelized/rplexicon/ui/screens/character/pages/actions/ObjectsViewModel.kt b/app/src/main/java/com/pixelized/rplexicon/ui/screens/character/pages/actions/ObjectsViewModel.kt index 80fa5a2..10ab43a 100644 --- a/app/src/main/java/com/pixelized/rplexicon/ui/screens/character/pages/actions/ObjectsViewModel.kt +++ b/app/src/main/java/com/pixelized/rplexicon/ui/screens/character/pages/actions/ObjectsViewModel.kt @@ -36,6 +36,7 @@ class ObjectsViewModel @Inject constructor( val data = objects[character]?.map { ObjectItemUio( prefix = it.prefix, + icon = it.icon, name = it.name, original = descriptionRepository.find(name = it.name)?.original, effect = it.effect,