From aa1603819f3ae7d9f865ce941871a1aa444ff319 Mon Sep 17 00:00:00 2001 From: "Andres Gomez, Thomas (ITDV RL)" Date: Tue, 4 Jun 2024 12:35:48 +0200 Subject: [PATCH] Fix a crash in SummaryFactory & update deprecated composable. --- .../screens/character/CharacterSheetScreen.kt | 1 - .../composable/actions/GenericHeader.kt | 3 +- .../composable/actions/InventoryItem.kt | 12 +++++-- .../composable/actions/SpellHeader.kt | 3 +- .../composable/character/DeathHeader.kt | 9 ++--- .../character/composable/character/Stat.kt | 3 +- .../pages/chooser/SpellLevelChooser.kt | 5 ++- .../summary/composable/StatusSummary.kt | 33 ++++++++++++------ .../summary/composable/common/SummaryRow.kt | 34 +++++++++++++------ .../summary/pages/statistic/SummaryFactory.kt | 5 ++- 10 files changed, 73 insertions(+), 35 deletions(-) diff --git a/app/src/main/java/com/pixelized/rplexicon/ui/screens/character/CharacterSheetScreen.kt b/app/src/main/java/com/pixelized/rplexicon/ui/screens/character/CharacterSheetScreen.kt index 6c95c9e..e29f8f3 100644 --- a/app/src/main/java/com/pixelized/rplexicon/ui/screens/character/CharacterSheetScreen.kt +++ b/app/src/main/java/com/pixelized/rplexicon/ui/screens/character/CharacterSheetScreen.kt @@ -131,7 +131,6 @@ fun CharacterSheetScreen( ) val tabs = rememberHeaderTabsState() val pagerState = rememberPagerState { tabs.value.size } - val isMenuExpended = remember { mutableStateOf(false) } Surface( modifier = Modifier.fillMaxSize(), diff --git a/app/src/main/java/com/pixelized/rplexicon/ui/screens/character/composable/actions/GenericHeader.kt b/app/src/main/java/com/pixelized/rplexicon/ui/screens/character/composable/actions/GenericHeader.kt index f621540..0e690cc 100644 --- a/app/src/main/java/com/pixelized/rplexicon/ui/screens/character/composable/actions/GenericHeader.kt +++ b/app/src/main/java/com/pixelized/rplexicon/ui/screens/character/composable/actions/GenericHeader.kt @@ -10,6 +10,7 @@ import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.material3.Divider +import androidx.compose.material3.HorizontalDivider import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Surface import androidx.compose.material3.Text @@ -64,7 +65,7 @@ fun GenericHeader( ), ) } - Divider( + HorizontalDivider( color = MaterialTheme.lexicon.colorScheme.placeholder, ) } diff --git a/app/src/main/java/com/pixelized/rplexicon/ui/screens/character/composable/actions/InventoryItem.kt b/app/src/main/java/com/pixelized/rplexicon/ui/screens/character/composable/actions/InventoryItem.kt index e9eac6d..7fd6f74 100644 --- a/app/src/main/java/com/pixelized/rplexicon/ui/screens/character/composable/actions/InventoryItem.kt +++ b/app/src/main/java/com/pixelized/rplexicon/ui/screens/character/composable/actions/InventoryItem.kt @@ -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_YES +import androidx.compose.foundation.background +import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.ExperimentalLayoutApi 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.width import androidx.compose.material3.Divider +import androidx.compose.material3.DividerDefaults import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Surface import androidx.compose.material3.Text @@ -75,23 +78,26 @@ fun InventoryItem( ) { val size = rememberTextSize(style = MaterialTheme.typography.bodyMedium) if (index == lastIndex) { - Divider( + Box( modifier = Modifier .height(height = 3.dp + size.height / 2) .width(1.dp) + .background(color = DividerDefaults.color) ) } else { - Divider( + Box( modifier = Modifier .fillMaxHeight() .width(1.dp) + .background(color = DividerDefaults.color) ) } - Divider( + Box( modifier = Modifier .padding(top = 2.dp + size.height / 2) .height(1.dp) .width(8.dp) + .background(color = DividerDefaults.color) ) InventoryItem( padding = PaddingValues(start = 7.dp, top = 2.dp, bottom = 2.dp), diff --git a/app/src/main/java/com/pixelized/rplexicon/ui/screens/character/composable/actions/SpellHeader.kt b/app/src/main/java/com/pixelized/rplexicon/ui/screens/character/composable/actions/SpellHeader.kt index 0c9b414..c969d70 100644 --- a/app/src/main/java/com/pixelized/rplexicon/ui/screens/character/composable/actions/SpellHeader.kt +++ b/app/src/main/java/com/pixelized/rplexicon/ui/screens/character/composable/actions/SpellHeader.kt @@ -10,6 +10,7 @@ import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.offset import androidx.compose.foundation.layout.padding import androidx.compose.material3.Divider +import androidx.compose.material3.HorizontalDivider import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Surface import androidx.compose.material3.Text @@ -97,7 +98,7 @@ fun SpellHeader( ) } } - Divider( + HorizontalDivider( color = MaterialTheme.lexicon.colorScheme.placeholder, ) } diff --git a/app/src/main/java/com/pixelized/rplexicon/ui/screens/character/composable/character/DeathHeader.kt b/app/src/main/java/com/pixelized/rplexicon/ui/screens/character/composable/character/DeathHeader.kt index a092d56..054b79c 100644 --- a/app/src/main/java/com/pixelized/rplexicon/ui/screens/character/composable/character/DeathHeader.kt +++ b/app/src/main/java/com/pixelized/rplexicon/ui/screens/character/composable/character/DeathHeader.kt @@ -19,6 +19,7 @@ import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.width import androidx.compose.foundation.shape.CircleShape import androidx.compose.material3.Divider +import androidx.compose.material3.HorizontalDivider import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Surface @@ -130,18 +131,18 @@ private fun DeathMark( Circle( full = counter > 0, ) - Divider( + HorizontalDivider( modifier = Modifier.width(width = 8.dp), thickness = 2.dp, - color = MaterialTheme.colorScheme.onSurface, + color = MaterialTheme.colorScheme.onSurface ) Circle( full = counter > 1, ) - Divider( + HorizontalDivider( modifier = Modifier.width(width = 8.dp), thickness = 2.dp, - color = MaterialTheme.colorScheme.onSurface, + color = MaterialTheme.colorScheme.onSurface ) Circle( full = counter > 2, diff --git a/app/src/main/java/com/pixelized/rplexicon/ui/screens/character/composable/character/Stat.kt b/app/src/main/java/com/pixelized/rplexicon/ui/screens/character/composable/character/Stat.kt index 93e6f4a..e040acf 100644 --- a/app/src/main/java/com/pixelized/rplexicon/ui/screens/character/composable/character/Stat.kt +++ b/app/src/main/java/com/pixelized/rplexicon/ui/screens/character/composable/character/Stat.kt @@ -12,6 +12,7 @@ import androidx.compose.foundation.layout.width import androidx.compose.foundation.shape.CutCornerShape import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material3.Divider +import androidx.compose.material3.HorizontalDivider import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Surface import androidx.compose.material3.Text @@ -68,7 +69,7 @@ fun Stat( style = MaterialTheme.typography.displayMedium, text = stat.modifier.toLabel(), ) - Divider( + HorizontalDivider( modifier = Modifier.width(width = 32.dp), ) Text( diff --git a/app/src/main/java/com/pixelized/rplexicon/ui/screens/character/pages/chooser/SpellLevelChooser.kt b/app/src/main/java/com/pixelized/rplexicon/ui/screens/character/pages/chooser/SpellLevelChooser.kt index 88e044d..b7cb56f 100644 --- a/app/src/main/java/com/pixelized/rplexicon/ui/screens/character/pages/chooser/SpellLevelChooser.kt +++ b/app/src/main/java/com/pixelized/rplexicon/ui/screens/character/pages/chooser/SpellLevelChooser.kt @@ -6,6 +6,7 @@ import androidx.compose.foundation.layout.padding import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.itemsIndexed import androidx.compose.material3.Divider +import androidx.compose.material3.HorizontalDivider import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Surface import androidx.compose.material3.Text @@ -52,7 +53,9 @@ fun SpellLevelChooser( onSpellCast = onLevel, ) if (index < (spells.value?.spells?.lastIndex ?: 0)) { - Divider(modifier = Modifier.padding(horizontal = 16.dp)) + HorizontalDivider( + modifier = Modifier.padding(horizontal = 16.dp), + ) } } } diff --git a/app/src/main/java/com/pixelized/rplexicon/ui/screens/summary/composable/StatusSummary.kt b/app/src/main/java/com/pixelized/rplexicon/ui/screens/summary/composable/StatusSummary.kt index f9250ea..62280e3 100644 --- a/app/src/main/java/com/pixelized/rplexicon/ui/screens/summary/composable/StatusSummary.kt +++ b/app/src/main/java/com/pixelized/rplexicon/ui/screens/summary/composable/StatusSummary.kt @@ -4,6 +4,7 @@ import android.content.res.Configuration import androidx.annotation.DrawableRes import androidx.compose.animation.AnimatedVisibility import androidx.compose.animation.animateContentSize +import androidx.compose.foundation.background import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Box 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.shape.CutCornerShape 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.MaterialTheme import androidx.compose.material3.Surface @@ -101,8 +102,10 @@ fun StatusSummary( status.c1.value.getOrNull(index) } } - Divider( - modifier = Modifier.verticalDivider(), + Box( + modifier = Modifier + .verticalDivider() + .background(color = DividerDefaults.color), ) SummaryIcon( icon = c1?.icon, @@ -114,8 +117,10 @@ fun StatusSummary( status.c2.value.getOrNull(index) } } - Divider( - modifier = Modifier.verticalDivider(), + Box( + modifier = Modifier + .verticalDivider() + .background(color = DividerDefaults.color), ) SummaryIcon( icon = c2?.icon, @@ -127,8 +132,10 @@ fun StatusSummary( status.c3.value.getOrNull(index) } } - Divider( - modifier = Modifier.verticalDivider(), + Box( + modifier = Modifier + .verticalDivider() + .background(color = DividerDefaults.color), ) SummaryIcon( icon = c3?.icon, @@ -140,8 +147,10 @@ fun StatusSummary( status.c4.value.getOrNull(index) } } - Divider( - modifier = Modifier.verticalDivider(), + Box( + modifier = Modifier + .verticalDivider() + .background(color = DividerDefaults.color), ) SummaryIcon( icon = c4?.icon, @@ -153,8 +162,10 @@ fun StatusSummary( status.c5.value.getOrNull(index) } } - Divider( - modifier = Modifier.verticalDivider(), + Box( + modifier = Modifier + .verticalDivider() + .background(color = DividerDefaults.color), ) SummaryIcon( icon = c5?.icon, diff --git a/app/src/main/java/com/pixelized/rplexicon/ui/screens/summary/composable/common/SummaryRow.kt b/app/src/main/java/com/pixelized/rplexicon/ui/screens/summary/composable/common/SummaryRow.kt index ceed64d..2044185 100644 --- a/app/src/main/java/com/pixelized/rplexicon/ui/screens/summary/composable/common/SummaryRow.kt +++ b/app/src/main/java/com/pixelized/rplexicon/ui/screens/summary/composable/common/SummaryRow.kt @@ -1,13 +1,15 @@ package com.pixelized.rplexicon.ui.screens.summary.composable.common import androidx.annotation.StringRes +import androidx.compose.foundation.background import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.IntrinsicSize import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.fillMaxWidth 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.Surface import androidx.compose.material3.Text @@ -71,40 +73,50 @@ fun SummaryRow( Row( modifier = Modifier.height(intrinsicSize = IntrinsicSize.Min), ) { - Divider( - modifier = Modifier.verticalDivider(), + Box( + modifier = Modifier + .verticalDivider() + .background(color = DividerDefaults.color), ) SummaryValue( cell = row.c1, style = style, color = color, ) - Divider( - modifier = Modifier.verticalDivider(), + Box( + modifier = Modifier + .verticalDivider() + .background(color = DividerDefaults.color), ) SummaryValue( cell = row.c2, style = style, color = color, ) - Divider( - modifier = Modifier.verticalDivider(), + Box( + modifier = Modifier + .verticalDivider() + .background(color = DividerDefaults.color), ) SummaryValue( cell = row.c3, style = style, color = color, ) - Divider( - modifier = Modifier.verticalDivider(), + Box( + modifier = Modifier + .verticalDivider() + .background(color = DividerDefaults.color), ) SummaryValue( cell = row.c4, style = style, color = color, ) - Divider( - modifier = Modifier.verticalDivider(), + Box( + modifier = Modifier + .verticalDivider() + .background(color = DividerDefaults.color), ) SummaryValue( cell = row.c5, diff --git a/app/src/main/java/com/pixelized/rplexicon/ui/screens/summary/pages/statistic/SummaryFactory.kt b/app/src/main/java/com/pixelized/rplexicon/ui/screens/summary/pages/statistic/SummaryFactory.kt index 3c837e5..30a6b49 100644 --- a/app/src/main/java/com/pixelized/rplexicon/ui/screens/summary/pages/statistic/SummaryFactory.kt +++ b/app/src/main/java/com/pixelized/rplexicon/ui/screens/summary/pages/statistic/SummaryFactory.kt @@ -656,7 +656,7 @@ class SummaryFactory @Inject constructor( dices.getOrNull(index = characters.indexOf(name)) throws.forEach { entry -> - header.getDice(name = entry.key)?.value = if (entry.value.hidden) { + val headerValue = if (entry.value.hidden) { ClassHeaderSummaryUio.Dice( characterName = entry.key, timestamp = entry.value.timestamp, @@ -673,6 +673,9 @@ class SummaryFactory @Inject constructor( isCriticalFailure = entry.value.isCriticalFailure ?: false, ) } + withContext(Dispatchers.Main) { + header.getDice(name = entry.key)?.value = headerValue + } } } }