From 757ad758044bcdc14c2118a2b99606b5ea20ed7f Mon Sep 17 00:00:00 2001 From: "Andres Gomez, Thomas (ITDV RL)" Date: Wed, 29 May 2024 18:34:54 +0200 Subject: [PATCH] Add Icon to Alteration --- .../pixelized/rplexicon/data/model/Alteration.kt | 3 +++ .../data/parser/alteration/AlterationParser.kt | 4 +++- .../character/composable/actions/AlterationItem.kt | 14 ++++++++++++++ .../ui/screens/rolls/factory/AlterationFactory.kt | 2 ++ .../rolls/preview/rememberRollAlterations.kt | 4 ++++ 5 files changed, 26 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/com/pixelized/rplexicon/data/model/Alteration.kt b/app/src/main/java/com/pixelized/rplexicon/data/model/Alteration.kt index f8449ee..8708645 100644 --- a/app/src/main/java/com/pixelized/rplexicon/data/model/Alteration.kt +++ b/app/src/main/java/com/pixelized/rplexicon/data/model/Alteration.kt @@ -1,6 +1,9 @@ package com.pixelized.rplexicon.data.model +import android.net.Uri + data class Alteration( + val icon: Uri?, val name: String, val source: String, val target: String, diff --git a/app/src/main/java/com/pixelized/rplexicon/data/parser/alteration/AlterationParser.kt b/app/src/main/java/com/pixelized/rplexicon/data/parser/alteration/AlterationParser.kt index 4df84f6..eeefb54 100644 --- a/app/src/main/java/com/pixelized/rplexicon/data/parser/alteration/AlterationParser.kt +++ b/app/src/main/java/com/pixelized/rplexicon/data/parser/alteration/AlterationParser.kt @@ -36,6 +36,7 @@ class AlterationParser @Inject constructor( val target = row.parse(column = TARGET) val alteration = if (name != null && source != null && target != null) { Alteration( + icon = row.parseUri(column = ICON), name = name, source = source, target = target, @@ -114,10 +115,11 @@ class AlterationParser @Inject constructor( private const val CRITICAL = "crit" private const val EFFECT = "Effet" + private val ICON = column("Icone") private val NAME = column("Altération") private val TARGET = column("Cible") private val SOURCE = column("Source") private val COLUMNS - get() = listOf(NAME, SOURCE, TARGET) + Property.entries.map { column(it.key) } + get() = listOf(NAME, SOURCE, TARGET, ICON) + Property.entries.map { column(it.key) } } } \ No newline at end of file diff --git a/app/src/main/java/com/pixelized/rplexicon/ui/screens/character/composable/actions/AlterationItem.kt b/app/src/main/java/com/pixelized/rplexicon/ui/screens/character/composable/actions/AlterationItem.kt index 2b117ee..47ae010 100644 --- a/app/src/main/java/com/pixelized/rplexicon/ui/screens/character/composable/actions/AlterationItem.kt +++ b/app/src/main/java/com/pixelized/rplexicon/ui/screens/character/composable/actions/AlterationItem.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.clickable import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column @@ -10,6 +11,7 @@ import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.heightIn import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Surface import androidx.compose.material3.Switch @@ -24,10 +26,12 @@ import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.tooling.preview.PreviewParameter import androidx.compose.ui.tooling.preview.PreviewParameterProvider import androidx.compose.ui.unit.dp +import com.pixelized.rplexicon.ui.composable.AsyncImage import com.pixelized.rplexicon.ui.theme.LexiconTheme @Stable data class AlterationItemUio( + val icon: Uri?, val label: String, val source: String, val subLabel: String?, @@ -51,6 +55,14 @@ fun AlterationItem( verticalAlignment = Alignment.CenterVertically, horizontalArrangement = Arrangement.spacedBy(space = 8.dp), ) { + alteration.icon?.let { uri -> + AsyncImage( + modifier = Modifier.size(size = 36.dp), + model = uri, + contentDescription = null, + ) + } + Column( modifier = Modifier.weight(weight = 1f), verticalArrangement = Arrangement.spacedBy(space = 2.dp), @@ -101,12 +113,14 @@ private fun RollAlterationPreview( private class RollAlterationPreviewProvider : PreviewParameterProvider { override val values: Sequence = sequenceOf( AlterationItemUio( + icon = null, label = "Bénédiction", subLabel = "Bless", source = "Clerc", checked = false, ), AlterationItemUio( + icon = null, label = "Assistance", subLabel = "Guidance", source = "Clerc", diff --git a/app/src/main/java/com/pixelized/rplexicon/ui/screens/rolls/factory/AlterationFactory.kt b/app/src/main/java/com/pixelized/rplexicon/ui/screens/rolls/factory/AlterationFactory.kt index 2c0ba74..b41572b 100644 --- a/app/src/main/java/com/pixelized/rplexicon/ui/screens/rolls/factory/AlterationFactory.kt +++ b/app/src/main/java/com/pixelized/rplexicon/ui/screens/rolls/factory/AlterationFactory.kt @@ -23,6 +23,7 @@ class AlterationFactory @Inject constructor( fun convert(character: String, alterations: List): List { return alterations.map { AlterationItemUio( + icon = it.icon, label = it.name, source = it.source, subLabel = descriptionRepository.find( @@ -141,6 +142,7 @@ class AlterationFactory @Inject constructor( .getAlterations(character = diceThrow.character, *properties.toTypedArray()) .map { AlterationItemUio( + icon = it.icon, label = it.name, source = it.source, checked = firebaseRepository.getStatus( diff --git a/app/src/main/java/com/pixelized/rplexicon/ui/screens/rolls/preview/rememberRollAlterations.kt b/app/src/main/java/com/pixelized/rplexicon/ui/screens/rolls/preview/rememberRollAlterations.kt index db80bff..4c55406 100644 --- a/app/src/main/java/com/pixelized/rplexicon/ui/screens/rolls/preview/rememberRollAlterations.kt +++ b/app/src/main/java/com/pixelized/rplexicon/ui/screens/rolls/preview/rememberRollAlterations.kt @@ -16,6 +16,7 @@ fun rememberRollAlterations() = remember { name = "Barbarian", alterations = listOf( AlterationItemUio( + icon = null, label = "Rage", subLabel = "Rage", source = "Barbare", @@ -27,12 +28,14 @@ fun rememberRollAlterations() = remember { name = "Barbarian", alterations = listOf( AlterationItemUio( + icon = null, label = "Inspiration bardique", subLabel = "Bardic inspiration", source = "Barde", checked = false ), AlterationItemUio( + icon = null, label = "Bénédiction", subLabel = "Bless", source = "Barde", @@ -44,6 +47,7 @@ fun rememberRollAlterations() = remember { name = "Barbarian", alterations = listOf( AlterationItemUio( + icon = null, label = "Cape de protection", subLabel = "Cape of protection", source = "Equipement",