Add character sheet access from lexicon list.

This commit is contained in:
Thomas Andres Gomez 2023-12-01 15:16:30 +01:00
parent 4a44d8fc51
commit d6f8ff1445
3 changed files with 42 additions and 12 deletions

View file

@ -2,10 +2,14 @@ package com.pixelized.rplexicon.ui.screens.lexicon.list
import android.content.res.Configuration.UI_MODE_NIGHT_NO import android.content.res.Configuration.UI_MODE_NIGHT_NO
import android.content.res.Configuration.UI_MODE_NIGHT_YES import android.content.res.Configuration.UI_MODE_NIGHT_YES
import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Row 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.padding
import androidx.compose.material3.Icon
import androidx.compose.material3.IconButton
import androidx.compose.material3.MaterialTheme import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Surface import androidx.compose.material3.Surface
import androidx.compose.material3.Text import androidx.compose.material3.Text
@ -13,6 +17,7 @@ import androidx.compose.runtime.Composable
import androidx.compose.runtime.Stable import androidx.compose.runtime.Stable
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.text.AnnotatedString import androidx.compose.ui.text.AnnotatedString
import androidx.compose.ui.text.font.FontStyle import androidx.compose.ui.text.font.FontStyle
import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.font.FontWeight
@ -21,10 +26,10 @@ import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.tooling.preview.PreviewParameter import androidx.compose.ui.tooling.preview.PreviewParameter
import androidx.compose.ui.tooling.preview.PreviewParameterProvider import androidx.compose.ui.tooling.preview.PreviewParameterProvider
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import com.pixelized.rplexicon.R
import com.pixelized.rplexicon.ui.theme.LexiconTheme import com.pixelized.rplexicon.ui.theme.LexiconTheme
import com.pixelized.rplexicon.utilitary.LOS_FULL import com.pixelized.rplexicon.utilitary.LOS_FULL
import com.pixelized.rplexicon.utilitary.LOS_HOLLOW import com.pixelized.rplexicon.utilitary.LOS_HOLLOW
import com.pixelized.rplexicon.utilitary.extentions.cell
import com.pixelized.rplexicon.utilitary.extentions.lexicon import com.pixelized.rplexicon.utilitary.extentions.lexicon
import com.pixelized.rplexicon.utilitary.extentions.placeholder import com.pixelized.rplexicon.utilitary.extentions.placeholder
import java.util.UUID import java.util.UUID
@ -62,14 +67,24 @@ data class LexiconItemUio(
fun LexiconItem( fun LexiconItem(
modifier: Modifier = Modifier, modifier: Modifier = Modifier,
item: LexiconItemUio, item: LexiconItemUio,
onItem: (LexiconItemUio) -> Unit,
onCharacterSheet: (LexiconItemUio) -> Unit,
) { ) {
val typography = MaterialTheme.lexicon.typography val typography = MaterialTheme.lexicon.typography
Box( Row(
modifier = modifier, modifier = modifier
contentAlignment = Alignment.CenterStart, .clickable { item.let(onItem) }
.fillMaxWidth()
.heightIn(min = MaterialTheme.lexicon.dimens.item)
.padding(vertical = 4.dp)
.padding(start = 16.dp, end = 8.dp),
verticalAlignment = Alignment.CenterVertically,
) { ) {
Row( Row(
modifier = Modifier
.weight(weight = 1f)
.padding(end = 8.dp),
horizontalArrangement = Arrangement.spacedBy(space = 4.dp), horizontalArrangement = Arrangement.spacedBy(space = 4.dp),
) { ) {
Text( Text(
@ -141,6 +156,15 @@ fun LexiconItem(
) )
} }
} }
if (item.isPlayingCharacter) {
IconButton(onClick = { item.let(onCharacterSheet) }) {
Icon(
painter = painterResource(id = R.drawable.ic_d20_24),
contentDescription = null
)
}
}
} }
} }
@ -154,8 +178,9 @@ private fun LexiconItemPreview(
LexiconTheme { LexiconTheme {
Surface { Surface {
LexiconItem( LexiconItem(
modifier = Modifier.cell(), item = preview,
item = preview onItem = { },
onCharacterSheet = { }
) )
} }
} }

View file

@ -41,6 +41,7 @@ import com.pixelized.rplexicon.ui.composable.FloatingActionButton
import com.pixelized.rplexicon.ui.composable.Loader import com.pixelized.rplexicon.ui.composable.Loader
import com.pixelized.rplexicon.ui.composable.error.HandleFetchError import com.pixelized.rplexicon.ui.composable.error.HandleFetchError
import com.pixelized.rplexicon.ui.navigation.LocalScreenNavHost import com.pixelized.rplexicon.ui.navigation.LocalScreenNavHost
import com.pixelized.rplexicon.ui.navigation.screens.navigateToCharacterSheet
import com.pixelized.rplexicon.ui.navigation.screens.navigateToLexiconDetail import com.pixelized.rplexicon.ui.navigation.screens.navigateToLexiconDetail
import com.pixelized.rplexicon.ui.navigation.screens.navigateToSearch import com.pixelized.rplexicon.ui.navigation.screens.navigateToSearch
import com.pixelized.rplexicon.ui.theme.LexiconTheme import com.pixelized.rplexicon.ui.theme.LexiconTheme
@ -87,6 +88,9 @@ fun LexiconScreen(
onItem = { onItem = {
screen.navigateToLexiconDetail(id = it.id) screen.navigateToLexiconDetail(id = it.id)
}, },
onCharacterSheet = {
screen.navigateToCharacterSheet(name = it.name)
}
) )
HandleFetchError( HandleFetchError(
@ -106,6 +110,7 @@ private fun LexiconScreenContent(
isFabExpended: State<Boolean>, isFabExpended: State<Boolean>,
onSearch: () -> Unit, onSearch: () -> Unit,
onItem: (LexiconItemUio) -> Unit, onItem: (LexiconItemUio) -> Unit,
onCharacterSheet: (LexiconItemUio) -> Unit,
) { ) {
Box( Box(
modifier = modifier, modifier = modifier,
@ -136,10 +141,9 @@ private fun LexiconScreenContent(
contentType = { "Lexicon" }, contentType = { "Lexicon" },
) { ) {
LexiconItem( LexiconItem(
modifier = Modifier
.clickable { onItem(it) }
.cell(),
item = it, item = it,
onItem = onItem,
onCharacterSheet = onCharacterSheet
) )
} }
} }
@ -198,6 +202,7 @@ private fun LexiconScreenContentPreview() {
items = rememberLexiconGroupStatePreview(), items = rememberLexiconGroupStatePreview(),
onSearch = { }, onSearch = { },
onItem = { }, onItem = { },
onCharacterSheet = { },
) )
} }
} }

View file

@ -92,8 +92,8 @@
<string name="character_sheet_title_saving_throws">Jet de sauvegarde</string> <string name="character_sheet_title_saving_throws">Jet de sauvegarde</string>
<string name="character_sheet_title_proficiencies">Talents</string> <string name="character_sheet_title_proficiencies">Talents</string>
<string name="character_sheet_title_masteries">Maîtrises &amp; Langues</string> <string name="character_sheet_title_masteries">Maîtrises &amp; Langues</string>
<string name="character_sheet_martial_masteries">Maîtrise martiale:</string> <string name="character_sheet_martial_masteries">Maîtrises martiales :</string>
<string name="character_sheet_languages_masteries">Maîtrise de langues:</string> <string name="character_sheet_languages_masteries">Maîtrises de langues :</string>
<string name="character_sheet_others_masteries">Autres maîtrises :</string> <string name="character_sheet_others_masteries">Autres maîtrises :</string>
<string name="character_sheet_title_skills">Capacités</string> <string name="character_sheet_title_skills">Capacités</string>
<string name="character_sheet_title_attacks">Attaques</string> <string name="character_sheet_title_attacks">Attaques</string>