Add character sheet access from lexicon list.
This commit is contained in:
parent
4a44d8fc51
commit
d6f8ff1445
3 changed files with 42 additions and 12 deletions
|
|
@ -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 = { }
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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 = { },
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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 & Langues</string>
|
<string name="character_sheet_title_masteries">Maîtrises & 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>
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue