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_YES
|
||||
import androidx.compose.foundation.clickable
|
||||
import androidx.compose.foundation.layout.Arrangement
|
||||
import androidx.compose.foundation.layout.Box
|
||||
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.material3.Icon
|
||||
import androidx.compose.material3.IconButton
|
||||
import androidx.compose.material3.MaterialTheme
|
||||
import androidx.compose.material3.Surface
|
||||
import androidx.compose.material3.Text
|
||||
|
|
@ -13,6 +17,7 @@ import androidx.compose.runtime.Composable
|
|||
import androidx.compose.runtime.Stable
|
||||
import androidx.compose.ui.Alignment
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.res.painterResource
|
||||
import androidx.compose.ui.text.AnnotatedString
|
||||
import androidx.compose.ui.text.font.FontStyle
|
||||
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.PreviewParameterProvider
|
||||
import androidx.compose.ui.unit.dp
|
||||
import com.pixelized.rplexicon.R
|
||||
import com.pixelized.rplexicon.ui.theme.LexiconTheme
|
||||
import com.pixelized.rplexicon.utilitary.LOS_FULL
|
||||
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.placeholder
|
||||
import java.util.UUID
|
||||
|
|
@ -62,14 +67,24 @@ data class LexiconItemUio(
|
|||
fun LexiconItem(
|
||||
modifier: Modifier = Modifier,
|
||||
item: LexiconItemUio,
|
||||
onItem: (LexiconItemUio) -> Unit,
|
||||
onCharacterSheet: (LexiconItemUio) -> Unit,
|
||||
) {
|
||||
val typography = MaterialTheme.lexicon.typography
|
||||
|
||||
Box(
|
||||
modifier = modifier,
|
||||
contentAlignment = Alignment.CenterStart,
|
||||
Row(
|
||||
modifier = modifier
|
||||
.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(
|
||||
modifier = Modifier
|
||||
.weight(weight = 1f)
|
||||
.padding(end = 8.dp),
|
||||
horizontalArrangement = Arrangement.spacedBy(space = 4.dp),
|
||||
) {
|
||||
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 {
|
||||
Surface {
|
||||
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.error.HandleFetchError
|
||||
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.navigateToSearch
|
||||
import com.pixelized.rplexicon.ui.theme.LexiconTheme
|
||||
|
|
@ -87,6 +88,9 @@ fun LexiconScreen(
|
|||
onItem = {
|
||||
screen.navigateToLexiconDetail(id = it.id)
|
||||
},
|
||||
onCharacterSheet = {
|
||||
screen.navigateToCharacterSheet(name = it.name)
|
||||
}
|
||||
)
|
||||
|
||||
HandleFetchError(
|
||||
|
|
@ -106,6 +110,7 @@ private fun LexiconScreenContent(
|
|||
isFabExpended: State<Boolean>,
|
||||
onSearch: () -> Unit,
|
||||
onItem: (LexiconItemUio) -> Unit,
|
||||
onCharacterSheet: (LexiconItemUio) -> Unit,
|
||||
) {
|
||||
Box(
|
||||
modifier = modifier,
|
||||
|
|
@ -136,10 +141,9 @@ private fun LexiconScreenContent(
|
|||
contentType = { "Lexicon" },
|
||||
) {
|
||||
LexiconItem(
|
||||
modifier = Modifier
|
||||
.clickable { onItem(it) }
|
||||
.cell(),
|
||||
item = it,
|
||||
onItem = onItem,
|
||||
onCharacterSheet = onCharacterSheet
|
||||
)
|
||||
}
|
||||
}
|
||||
|
|
@ -198,6 +202,7 @@ private fun LexiconScreenContentPreview() {
|
|||
items = rememberLexiconGroupStatePreview(),
|
||||
onSearch = { },
|
||||
onItem = { },
|
||||
onCharacterSheet = { },
|
||||
)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue