Fix a crash in SummaryFactory & update deprecated composable.

This commit is contained in:
Andres Gomez, Thomas (ITDV RL) 2024-06-04 12:35:48 +02:00
parent 51ffc9a303
commit aa1603819f
10 changed files with 73 additions and 35 deletions

View file

@ -131,7 +131,6 @@ fun CharacterSheetScreen(
) )
val tabs = rememberHeaderTabsState() val tabs = rememberHeaderTabsState()
val pagerState = rememberPagerState { tabs.value.size } val pagerState = rememberPagerState { tabs.value.size }
val isMenuExpended = remember { mutableStateOf(false) }
Surface( Surface(
modifier = Modifier.fillMaxSize(), modifier = Modifier.fillMaxSize(),

View file

@ -10,6 +10,7 @@ import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
import androidx.compose.material3.Divider import androidx.compose.material3.Divider
import androidx.compose.material3.HorizontalDivider
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
@ -64,7 +65,7 @@ fun GenericHeader(
), ),
) )
} }
Divider( HorizontalDivider(
color = MaterialTheme.lexicon.colorScheme.placeholder, color = MaterialTheme.lexicon.colorScheme.placeholder,
) )
} }

View file

@ -2,6 +2,8 @@ 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_NO
import android.content.res.Configuration.UI_MODE_NIGHT_YES import android.content.res.Configuration.UI_MODE_NIGHT_YES
import androidx.compose.foundation.background
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.ExperimentalLayoutApi import androidx.compose.foundation.layout.ExperimentalLayoutApi
import androidx.compose.foundation.layout.FlowRow import androidx.compose.foundation.layout.FlowRow
@ -13,6 +15,7 @@ import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.width import androidx.compose.foundation.layout.width
import androidx.compose.material3.Divider import androidx.compose.material3.Divider
import androidx.compose.material3.DividerDefaults
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
@ -75,23 +78,26 @@ fun InventoryItem(
) { ) {
val size = rememberTextSize(style = MaterialTheme.typography.bodyMedium) val size = rememberTextSize(style = MaterialTheme.typography.bodyMedium)
if (index == lastIndex) { if (index == lastIndex) {
Divider( Box(
modifier = Modifier modifier = Modifier
.height(height = 3.dp + size.height / 2) .height(height = 3.dp + size.height / 2)
.width(1.dp) .width(1.dp)
.background(color = DividerDefaults.color)
) )
} else { } else {
Divider( Box(
modifier = Modifier modifier = Modifier
.fillMaxHeight() .fillMaxHeight()
.width(1.dp) .width(1.dp)
.background(color = DividerDefaults.color)
) )
} }
Divider( Box(
modifier = Modifier modifier = Modifier
.padding(top = 2.dp + size.height / 2) .padding(top = 2.dp + size.height / 2)
.height(1.dp) .height(1.dp)
.width(8.dp) .width(8.dp)
.background(color = DividerDefaults.color)
) )
InventoryItem( InventoryItem(
padding = PaddingValues(start = 7.dp, top = 2.dp, bottom = 2.dp), padding = PaddingValues(start = 7.dp, top = 2.dp, bottom = 2.dp),

View file

@ -10,6 +10,7 @@ import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.offset import androidx.compose.foundation.layout.offset
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
import androidx.compose.material3.Divider import androidx.compose.material3.Divider
import androidx.compose.material3.HorizontalDivider
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
@ -97,7 +98,7 @@ fun SpellHeader(
) )
} }
} }
Divider( HorizontalDivider(
color = MaterialTheme.lexicon.colorScheme.placeholder, color = MaterialTheme.lexicon.colorScheme.placeholder,
) )
} }

View file

@ -19,6 +19,7 @@ import androidx.compose.foundation.layout.size
import androidx.compose.foundation.layout.width import androidx.compose.foundation.layout.width
import androidx.compose.foundation.shape.CircleShape import androidx.compose.foundation.shape.CircleShape
import androidx.compose.material3.Divider import androidx.compose.material3.Divider
import androidx.compose.material3.HorizontalDivider
import androidx.compose.material3.Icon import androidx.compose.material3.Icon
import androidx.compose.material3.MaterialTheme import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Surface import androidx.compose.material3.Surface
@ -130,18 +131,18 @@ private fun DeathMark(
Circle( Circle(
full = counter > 0, full = counter > 0,
) )
Divider( HorizontalDivider(
modifier = Modifier.width(width = 8.dp), modifier = Modifier.width(width = 8.dp),
thickness = 2.dp, thickness = 2.dp,
color = MaterialTheme.colorScheme.onSurface, color = MaterialTheme.colorScheme.onSurface
) )
Circle( Circle(
full = counter > 1, full = counter > 1,
) )
Divider( HorizontalDivider(
modifier = Modifier.width(width = 8.dp), modifier = Modifier.width(width = 8.dp),
thickness = 2.dp, thickness = 2.dp,
color = MaterialTheme.colorScheme.onSurface, color = MaterialTheme.colorScheme.onSurface
) )
Circle( Circle(
full = counter > 2, full = counter > 2,

View file

@ -12,6 +12,7 @@ import androidx.compose.foundation.layout.width
import androidx.compose.foundation.shape.CutCornerShape import androidx.compose.foundation.shape.CutCornerShape
import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material3.Divider import androidx.compose.material3.Divider
import androidx.compose.material3.HorizontalDivider
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
@ -68,7 +69,7 @@ fun Stat(
style = MaterialTheme.typography.displayMedium, style = MaterialTheme.typography.displayMedium,
text = stat.modifier.toLabel(), text = stat.modifier.toLabel(),
) )
Divider( HorizontalDivider(
modifier = Modifier.width(width = 32.dp), modifier = Modifier.width(width = 32.dp),
) )
Text( Text(

View file

@ -6,6 +6,7 @@ import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.foundation.lazy.itemsIndexed import androidx.compose.foundation.lazy.itemsIndexed
import androidx.compose.material3.Divider import androidx.compose.material3.Divider
import androidx.compose.material3.HorizontalDivider
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
@ -52,7 +53,9 @@ fun SpellLevelChooser(
onSpellCast = onLevel, onSpellCast = onLevel,
) )
if (index < (spells.value?.spells?.lastIndex ?: 0)) { if (index < (spells.value?.spells?.lastIndex ?: 0)) {
Divider(modifier = Modifier.padding(horizontal = 16.dp)) HorizontalDivider(
modifier = Modifier.padding(horizontal = 16.dp),
)
} }
} }
} }

View file

@ -4,6 +4,7 @@ import android.content.res.Configuration
import androidx.annotation.DrawableRes import androidx.annotation.DrawableRes
import androidx.compose.animation.AnimatedVisibility import androidx.compose.animation.AnimatedVisibility
import androidx.compose.animation.animateContentSize import androidx.compose.animation.animateContentSize
import androidx.compose.foundation.background
import androidx.compose.foundation.clickable import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Column
@ -15,7 +16,7 @@ import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.size
import androidx.compose.foundation.shape.CutCornerShape import androidx.compose.foundation.shape.CutCornerShape
import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material3.Divider import androidx.compose.material3.DividerDefaults
import androidx.compose.material3.Icon import androidx.compose.material3.Icon
import androidx.compose.material3.MaterialTheme import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Surface import androidx.compose.material3.Surface
@ -101,8 +102,10 @@ fun StatusSummary(
status.c1.value.getOrNull(index) status.c1.value.getOrNull(index)
} }
} }
Divider( Box(
modifier = Modifier.verticalDivider(), modifier = Modifier
.verticalDivider()
.background(color = DividerDefaults.color),
) )
SummaryIcon( SummaryIcon(
icon = c1?.icon, icon = c1?.icon,
@ -114,8 +117,10 @@ fun StatusSummary(
status.c2.value.getOrNull(index) status.c2.value.getOrNull(index)
} }
} }
Divider( Box(
modifier = Modifier.verticalDivider(), modifier = Modifier
.verticalDivider()
.background(color = DividerDefaults.color),
) )
SummaryIcon( SummaryIcon(
icon = c2?.icon, icon = c2?.icon,
@ -127,8 +132,10 @@ fun StatusSummary(
status.c3.value.getOrNull(index) status.c3.value.getOrNull(index)
} }
} }
Divider( Box(
modifier = Modifier.verticalDivider(), modifier = Modifier
.verticalDivider()
.background(color = DividerDefaults.color),
) )
SummaryIcon( SummaryIcon(
icon = c3?.icon, icon = c3?.icon,
@ -140,8 +147,10 @@ fun StatusSummary(
status.c4.value.getOrNull(index) status.c4.value.getOrNull(index)
} }
} }
Divider( Box(
modifier = Modifier.verticalDivider(), modifier = Modifier
.verticalDivider()
.background(color = DividerDefaults.color),
) )
SummaryIcon( SummaryIcon(
icon = c4?.icon, icon = c4?.icon,
@ -153,8 +162,10 @@ fun StatusSummary(
status.c5.value.getOrNull(index) status.c5.value.getOrNull(index)
} }
} }
Divider( Box(
modifier = Modifier.verticalDivider(), modifier = Modifier
.verticalDivider()
.background(color = DividerDefaults.color),
) )
SummaryIcon( SummaryIcon(
icon = c5?.icon, icon = c5?.icon,

View file

@ -1,13 +1,15 @@
package com.pixelized.rplexicon.ui.screens.summary.composable.common package com.pixelized.rplexicon.ui.screens.summary.composable.common
import androidx.annotation.StringRes import androidx.annotation.StringRes
import androidx.compose.foundation.background
import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.IntrinsicSize import androidx.compose.foundation.layout.IntrinsicSize
import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.height
import androidx.compose.material3.Divider import androidx.compose.material3.DividerDefaults
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
@ -71,40 +73,50 @@ fun SummaryRow(
Row( Row(
modifier = Modifier.height(intrinsicSize = IntrinsicSize.Min), modifier = Modifier.height(intrinsicSize = IntrinsicSize.Min),
) { ) {
Divider( Box(
modifier = Modifier.verticalDivider(), modifier = Modifier
.verticalDivider()
.background(color = DividerDefaults.color),
) )
SummaryValue( SummaryValue(
cell = row.c1, cell = row.c1,
style = style, style = style,
color = color, color = color,
) )
Divider( Box(
modifier = Modifier.verticalDivider(), modifier = Modifier
.verticalDivider()
.background(color = DividerDefaults.color),
) )
SummaryValue( SummaryValue(
cell = row.c2, cell = row.c2,
style = style, style = style,
color = color, color = color,
) )
Divider( Box(
modifier = Modifier.verticalDivider(), modifier = Modifier
.verticalDivider()
.background(color = DividerDefaults.color),
) )
SummaryValue( SummaryValue(
cell = row.c3, cell = row.c3,
style = style, style = style,
color = color, color = color,
) )
Divider( Box(
modifier = Modifier.verticalDivider(), modifier = Modifier
.verticalDivider()
.background(color = DividerDefaults.color),
) )
SummaryValue( SummaryValue(
cell = row.c4, cell = row.c4,
style = style, style = style,
color = color, color = color,
) )
Divider( Box(
modifier = Modifier.verticalDivider(), modifier = Modifier
.verticalDivider()
.background(color = DividerDefaults.color),
) )
SummaryValue( SummaryValue(
cell = row.c5, cell = row.c5,

View file

@ -656,7 +656,7 @@ class SummaryFactory @Inject constructor(
dices.getOrNull(index = characters.indexOf(name)) dices.getOrNull(index = characters.indexOf(name))
throws.forEach { entry -> throws.forEach { entry ->
header.getDice(name = entry.key)?.value = if (entry.value.hidden) { val headerValue = if (entry.value.hidden) {
ClassHeaderSummaryUio.Dice( ClassHeaderSummaryUio.Dice(
characterName = entry.key, characterName = entry.key,
timestamp = entry.value.timestamp, timestamp = entry.value.timestamp,
@ -673,6 +673,9 @@ class SummaryFactory @Inject constructor(
isCriticalFailure = entry.value.isCriticalFailure ?: false, isCriticalFailure = entry.value.isCriticalFailure ?: false,
) )
} }
withContext(Dispatchers.Main) {
header.getDice(name = entry.key)?.value = headerValue
}
} }
} }
} }