Fix missing characterSheet action tooltip.

This commit is contained in:
Thomas Andres Gomez 2025-05-07 13:33:31 +02:00
parent b230d38805
commit 168ee27826
18 changed files with 215 additions and 185 deletions

View file

@ -46,7 +46,7 @@ import com.pixelized.desktop.lwa.ui.composable.decoratedBox.DecoratedBox
import com.pixelized.desktop.lwa.ui.composable.image.DesaturatedAsyncImage import com.pixelized.desktop.lwa.ui.composable.image.DesaturatedAsyncImage
import com.pixelized.desktop.lwa.ui.composable.textfield.LwaTextField import com.pixelized.desktop.lwa.ui.composable.textfield.LwaTextField
import com.pixelized.desktop.lwa.ui.composable.textfield.LwaTextFieldUio import com.pixelized.desktop.lwa.ui.composable.textfield.LwaTextFieldUio
import com.pixelized.desktop.lwa.ui.composable.tooltip.TooltipLayout2 import com.pixelized.desktop.lwa.ui.composable.tooltip.TooltipLayout
import com.pixelized.desktop.lwa.ui.theme.color.component.LwaTextFieldColors import com.pixelized.desktop.lwa.ui.theme.color.component.LwaTextFieldColors
import com.pixelized.desktop.lwa.ui.theme.lwa import com.pixelized.desktop.lwa.ui.theme.lwa
import com.pixelized.desktop.lwa.utils.rememberSaturationFilter import com.pixelized.desktop.lwa.utils.rememberSaturationFilter
@ -221,9 +221,8 @@ private fun InventoryDialogItem(
item: InventoryDialogUio.Item, item: InventoryDialogUio.Item,
onItem: (String) -> Unit, onItem: (String) -> Unit,
) { ) {
TooltipLayout2( TooltipLayout(
modifier = modifier, modifier = modifier,
delayMillis = 500,
tips = item.tooltips, tips = item.tooltips,
tooltip = { tooltips -> tooltip = { tooltips ->
DecoratedBox { DecoratedBox {

View file

@ -1,10 +1,8 @@
package com.pixelized.desktop.lwa.ui.composable.tooltip package com.pixelized.desktop.lwa.ui.composable.tooltip
import androidx.compose.foundation.ExperimentalFoundationApi import androidx.compose.foundation.ExperimentalFoundationApi
import androidx.compose.foundation.TooltipArea
import androidx.compose.foundation.TooltipPlacement import androidx.compose.foundation.TooltipPlacement
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.padding import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.width import androidx.compose.foundation.layout.width
@ -13,56 +11,70 @@ import androidx.compose.material.MaterialTheme
import androidx.compose.material.Surface import androidx.compose.material.Surface
import androidx.compose.material.Text import androidx.compose.material.Text
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.Immutable
import androidx.compose.runtime.Stable
import androidx.compose.runtime.remember import androidx.compose.runtime.remember
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.unit.Dp
import androidx.compose.ui.unit.DpOffset import androidx.compose.ui.unit.DpOffset
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
class TooltipUio( @Stable
class BasicTooltipUio(
val title: String?, val title: String?,
val description: String, val description: String,
) )
@Immutable
object BasicTooltipDefault {
@Stable
val delay: Int = 500
@Stable
val elevation: Dp = 2.dp
@OptIn(ExperimentalFoundationApi::class)
@Stable
val placement: TooltipPlacement = TooltipPlacement.CursorPoint(DpOffset(0.dp, 16.dp))
}
@OptIn(ExperimentalFoundationApi::class) @OptIn(ExperimentalFoundationApi::class)
@Composable @Composable
fun TooltipLayout( fun BasicTooltipLayout(
modifier: Modifier = Modifier, modifier: Modifier = Modifier,
delayMillis: Int = 1000, delayMillis: Int = BasicTooltipDefault.delay,
tooltipPlacement: TooltipPlacement = TooltipPlacement.CursorPoint(DpOffset(0.dp, 16.dp)), elevation: Dp = BasicTooltipDefault.elevation,
tooltip: TooltipUio?, tooltipPlacement: TooltipPlacement = BasicTooltipDefault.placement,
tooltip: BasicTooltipUio?,
content: @Composable () -> Unit, content: @Composable () -> Unit,
) { ) {
when (tooltip) { TooltipLayout(
null -> Box( modifier = modifier,
modifier = modifier, delayMillis = delayMillis,
content = { content() }, tooltipPlacement = tooltipPlacement,
) tips = tooltip,
tooltip = {
else -> TooltipArea( BasicTooltip(
modifier = modifier, modifier = Modifier.width(width = 448.dp),
tooltip = { elevation = elevation,
Tooltip( tooltip = it,
modifier = Modifier.width(width = 448.dp), )
tooltip = tooltip, },
) content = content,
}, )
content = content,
delayMillis = delayMillis,
tooltipPlacement = tooltipPlacement,
)
}
} }
@Composable @Composable
fun Tooltip( private fun BasicTooltip(
modifier: Modifier = Modifier, modifier: Modifier = Modifier,
tooltip: TooltipUio, elevation: Dp = BasicTooltipDefault.elevation,
tooltip: BasicTooltipUio,
) { ) {
Surface( Surface(
modifier = Modifier.padding(16.dp).then(other = modifier), modifier = Modifier.padding(16.dp).then(other = modifier),
color = MaterialTheme.colors.surface, color = MaterialTheme.colors.surface,
elevation = 2.dp, elevation = elevation,
shape = remember { RoundedCornerShape(4.dp) } shape = remember { RoundedCornerShape(4.dp) }
) { ) {
Column( Column(

View file

@ -6,18 +6,29 @@ import androidx.compose.foundation.TooltipPlacement
import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.width import androidx.compose.foundation.layout.width
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.Immutable
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.unit.DpOffset import androidx.compose.ui.unit.DpOffset
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
@Immutable
object TooltipDefault {
@Stable
val delay: Int = 500
@OptIn(ExperimentalFoundationApi::class)
@Stable
val placement: TooltipPlacement = TooltipPlacement.CursorPoint(DpOffset(0.dp, 16.dp))
}
@Composable @Composable
@OptIn(ExperimentalFoundationApi::class) @OptIn(ExperimentalFoundationApi::class)
fun <T> TooltipLayout2( fun <T> TooltipLayout(
modifier: Modifier = Modifier, modifier: Modifier = Modifier,
delayMillis: Int = 1000, delayMillis: Int = TooltipDefault.delay,
tooltipPlacement: TooltipPlacement = TooltipPlacement.CursorPoint(DpOffset(0.dp, 16.dp)), tooltipPlacement: TooltipPlacement = TooltipDefault.placement,
tips: T? = null, tips: T? = null,
tooltip: (@Composable (tips: T) -> Unit)? = null, tooltip: (@Composable (tips: T) -> Unit)? = null,
content: @Composable () -> Unit, content: @Composable () -> Unit,

View file

@ -40,8 +40,8 @@ import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.Dp
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import com.pixelized.desktop.lwa.ui.composable.shapes.ArrowShape import com.pixelized.desktop.lwa.ui.composable.shapes.ArrowShape
import com.pixelized.desktop.lwa.ui.composable.tooltip.TooltipLayout import com.pixelized.desktop.lwa.ui.composable.tooltip.BasicTooltipLayout
import com.pixelized.desktop.lwa.ui.composable.tooltip.TooltipUio import com.pixelized.desktop.lwa.ui.composable.tooltip.BasicTooltipUio
import com.pixelized.desktop.lwa.ui.overlay.roll.RollAction import com.pixelized.desktop.lwa.ui.overlay.roll.RollAction
import com.pixelized.desktop.lwa.ui.screen.campaign.player.detail.DetailPanelUio import com.pixelized.desktop.lwa.ui.screen.campaign.player.detail.DetailPanelUio
import com.pixelized.desktop.lwa.ui.theme.lwa import com.pixelized.desktop.lwa.ui.theme.lwa
@ -75,26 +75,26 @@ data class CharacterDetailHeaderUio(
val name: String, val name: String,
val level: Int, val level: Int,
val hp: String, val hp: String,
val hpTooltip: TooltipUio, val hpTooltip: BasicTooltipUio,
val maxHp: String, val maxHp: String,
val pp: String, val pp: String,
val ppTooltip: TooltipUio, val ppTooltip: BasicTooltipUio,
val maxPp: String, val maxPp: String,
val mov: String, val mov: String,
val movTooltip: TooltipUio, val movTooltip: BasicTooltipUio,
val armor: String, val armor: String,
val armorTooltip: TooltipUio, val armorTooltip: BasicTooltipUio,
val bonus: String, val bonus: String,
val bonusTooltip: TooltipUio, val bonusTooltip: BasicTooltipUio,
val grow: String, val grow: String,
val growTooltip: TooltipUio, val growTooltip: BasicTooltipUio,
val learn: String, val learn: String,
val learnTooltip: TooltipUio, val learnTooltip: BasicTooltipUio,
val reflex: String, val reflex: String,
val reflexTooltip: TooltipUio, val reflexTooltip: BasicTooltipUio,
val reflexRoll: RollAction.Uio, val reflexRoll: RollAction.Uio,
val initiative: String, val initiative: String,
val initiativeTooltip: TooltipUio, val initiativeTooltip: BasicTooltipUio,
) )
@Stable @Stable
@ -261,7 +261,7 @@ fun CharacterDetailHeader(
), ),
horizontalArrangement = Arrangement.spacedBy(space = 10.dp), horizontalArrangement = Arrangement.spacedBy(space = 10.dp),
) { ) {
TooltipLayout( BasicTooltipLayout(
tooltip = header.value?.hpTooltip, tooltip = header.value?.hpTooltip,
) { ) {
Row( Row(
@ -290,7 +290,7 @@ fun CharacterDetailHeader(
) )
} }
} }
TooltipLayout( BasicTooltipLayout(
tooltip = header.value?.ppTooltip, tooltip = header.value?.ppTooltip,
) { ) {
Row( Row(
@ -322,7 +322,7 @@ fun CharacterDetailHeader(
Spacer(modifier = Modifier.weight(1f)) Spacer(modifier = Modifier.weight(1f))
TooltipLayout( BasicTooltipLayout(
tooltip = header.value?.reflexTooltip, tooltip = header.value?.reflexTooltip,
) { ) {
Row( Row(
@ -346,7 +346,7 @@ fun CharacterDetailHeader(
) )
} }
} }
TooltipLayout( BasicTooltipLayout(
tooltip = header.value?.initiativeTooltip, tooltip = header.value?.initiativeTooltip,
) { ) {
Row( Row(
@ -366,7 +366,7 @@ fun CharacterDetailHeader(
) )
} }
} }
TooltipLayout( BasicTooltipLayout(
tooltip = header.value?.movTooltip, tooltip = header.value?.movTooltip,
) { ) {
Row( Row(
@ -391,7 +391,7 @@ fun CharacterDetailHeader(
) )
} }
} }
TooltipLayout( BasicTooltipLayout(
tooltip = header.value?.armorTooltip, tooltip = header.value?.armorTooltip,
) { ) {
Row( Row(
@ -411,7 +411,7 @@ fun CharacterDetailHeader(
) )
} }
} }
TooltipLayout( BasicTooltipLayout(
tooltip = header.value?.bonusTooltip, tooltip = header.value?.bonusTooltip,
) { ) {
Row( Row(
@ -431,7 +431,7 @@ fun CharacterDetailHeader(
) )
} }
} }
TooltipLayout( BasicTooltipLayout(
tooltip = header.value?.growTooltip, tooltip = header.value?.growTooltip,
) { ) {
Row( Row(
@ -451,7 +451,7 @@ fun CharacterDetailHeader(
) )
} }
} }
TooltipLayout( BasicTooltipLayout(
tooltip = header.value?.learnTooltip, tooltip = header.value?.learnTooltip,
) { ) {
Row( Row(

View file

@ -4,13 +4,12 @@ import com.pixelized.desktop.lwa.repository.alteration.AlterationRepository
import com.pixelized.desktop.lwa.repository.characterSheet.CharacterSheetRepository import com.pixelized.desktop.lwa.repository.characterSheet.CharacterSheetRepository
import com.pixelized.desktop.lwa.repository.settings.SettingsRepository import com.pixelized.desktop.lwa.repository.settings.SettingsRepository
import com.pixelized.desktop.lwa.repository.settings.model.Settings import com.pixelized.desktop.lwa.repository.settings.model.Settings
import com.pixelized.desktop.lwa.ui.composable.tooltip.TooltipUio import com.pixelized.desktop.lwa.ui.composable.tooltip.BasicTooltipUio
import com.pixelized.desktop.lwa.ui.overlay.roll.RollAction import com.pixelized.desktop.lwa.ui.overlay.roll.RollAction
import com.pixelized.desktop.lwa.ui.screen.campaign.player.detail.DetailPanelUio import com.pixelized.desktop.lwa.ui.screen.campaign.player.detail.DetailPanelUio
import com.pixelized.shared.lwa.model.AlteredCharacterSheetFactory import com.pixelized.shared.lwa.model.AlteredCharacterSheetFactory
import com.pixelized.shared.lwa.model.alteration.FieldAlteration import com.pixelized.shared.lwa.model.alteration.FieldAlteration
import com.pixelized.shared.lwa.model.characterSheet.CharacterSheet import com.pixelized.shared.lwa.model.characterSheet.CharacterSheet
import com.pixelized.shared.lwa.usecase.ExpressionUseCase
import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.flow.SharingStarted import kotlinx.coroutines.flow.SharingStarted
import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.StateFlow
@ -96,44 +95,44 @@ class CharacterDetailHeaderFactory(
name = alteredCharacterSheet.name, name = alteredCharacterSheet.name,
level = alteredCharacterSheet.level, level = alteredCharacterSheet.level,
hp = "${maxHp - alteredCharacterSheet.damage}", hp = "${maxHp - alteredCharacterSheet.damage}",
hpTooltip = TooltipUio( hpTooltip = BasicTooltipUio(
title = getString(Res.string.character_sheet__sub_characteristics__hit_point), title = getString(Res.string.character_sheet__sub_characteristics__hit_point),
description = getString(Res.string.tooltip__sub_characteristics__hit_point) description = getString(Res.string.tooltip__sub_characteristics__hit_point)
), ),
maxHp = "$maxHp", maxHp = "$maxHp",
pp = "${maxPp - alteredCharacterSheet.fatigue}", pp = "${maxPp - alteredCharacterSheet.fatigue}",
ppTooltip = TooltipUio( ppTooltip = BasicTooltipUio(
title = getString(Res.string.character_sheet__sub_characteristics__power_point), title = getString(Res.string.character_sheet__sub_characteristics__power_point),
description = getString(Res.string.tooltip__sub_characteristics__power_point) description = getString(Res.string.tooltip__sub_characteristics__power_point)
), ),
maxPp = "$maxPp", maxPp = "$maxPp",
mov = "${alteredCharacterSheet.movement}", mov = "${alteredCharacterSheet.movement}",
movTooltip = TooltipUio( movTooltip = BasicTooltipUio(
title = getString(Res.string.character_sheet__sub_characteristics__movement), title = getString(Res.string.character_sheet__sub_characteristics__movement),
description = getString(Res.string.tooltip__sub_characteristics__movement) description = getString(Res.string.tooltip__sub_characteristics__movement)
), ),
armor = "${alteredCharacterSheet.armor}", armor = "${alteredCharacterSheet.armor}",
armorTooltip = TooltipUio( armorTooltip = BasicTooltipUio(
title = getString(Res.string.character_sheet__sub_characteristics__armor), title = getString(Res.string.character_sheet__sub_characteristics__armor),
description = getString(Res.string.tooltip__sub_characteristics__armor) description = getString(Res.string.tooltip__sub_characteristics__armor)
), ),
bonus = alteredCharacterSheet.damageBonus, bonus = alteredCharacterSheet.damageBonus,
bonusTooltip = TooltipUio( bonusTooltip = BasicTooltipUio(
title = getString(Res.string.character_sheet__sub_characteristics__damage_bonus), title = getString(Res.string.character_sheet__sub_characteristics__damage_bonus),
description = getString(Res.string.tooltip__sub_characteristics__bonus_damage) description = getString(Res.string.tooltip__sub_characteristics__bonus_damage)
), ),
grow = "${alteredCharacterSheet.hpGrow}", grow = "${alteredCharacterSheet.hpGrow}",
growTooltip = TooltipUio( growTooltip = BasicTooltipUio(
title = getString(Res.string.character_sheet__sub_characteristics__hp_grow), title = getString(Res.string.character_sheet__sub_characteristics__hp_grow),
description = getString(Res.string.tooltip__sub_characteristics__hp_grow) description = getString(Res.string.tooltip__sub_characteristics__hp_grow)
), ),
learn = "${alteredCharacterSheet.learning}", learn = "${alteredCharacterSheet.learning}",
learnTooltip = TooltipUio( learnTooltip = BasicTooltipUio(
title = getString(Res.string.character_sheet__sub_characteristics__learning), title = getString(Res.string.character_sheet__sub_characteristics__learning),
description = getString(Res.string.tooltip__sub_characteristics__learning) description = getString(Res.string.tooltip__sub_characteristics__learning)
), ),
reflex = "${alteredCharacterSheet.reflex}", reflex = "${alteredCharacterSheet.reflex}",
reflexTooltip = TooltipUio( reflexTooltip = BasicTooltipUio(
title = getString(Res.string.character_sheet__sub_characteristics__reflex), title = getString(Res.string.character_sheet__sub_characteristics__reflex),
description = getString(Res.string.tooltip__sub_characteristics__reflex) description = getString(Res.string.tooltip__sub_characteristics__reflex)
), ),
@ -144,7 +143,7 @@ class CharacterDetailHeaderFactory(
rollSuccessValue = alteredCharacterSheet.reflex * 5, rollSuccessValue = alteredCharacterSheet.reflex * 5,
), ),
initiative = "${alteredCharacterSheet.initiative}", initiative = "${alteredCharacterSheet.initiative}",
initiativeTooltip = TooltipUio( initiativeTooltip = BasicTooltipUio(
title = getString(Res.string.character_sheet__sub_characteristics__initiative), title = getString(Res.string.character_sheet__sub_characteristics__initiative),
description = getString(Res.string.tooltip__sub_characteristics__initiative) description = getString(Res.string.tooltip__sub_characteristics__initiative)
), ),

View file

@ -47,7 +47,7 @@ import coil3.compose.AsyncImage
import coil3.request.ImageRequest import coil3.request.ImageRequest
import com.pixelized.desktop.lwa.ui.composable.decoratedBox.DecoratedBox import com.pixelized.desktop.lwa.ui.composable.decoratedBox.DecoratedBox
import com.pixelized.desktop.lwa.ui.composable.image.DesaturatedAsyncImage import com.pixelized.desktop.lwa.ui.composable.image.DesaturatedAsyncImage
import com.pixelized.desktop.lwa.ui.composable.tooltip.TooltipLayout2 import com.pixelized.desktop.lwa.ui.composable.tooltip.TooltipLayout
import com.pixelized.desktop.lwa.ui.theme.lwa import com.pixelized.desktop.lwa.ui.theme.lwa
import com.pixelized.desktop.lwa.utils.extention.calculatePaddings import com.pixelized.desktop.lwa.utils.extention.calculatePaddings
import com.pixelized.desktop.lwa.utils.extention.ribbon import com.pixelized.desktop.lwa.utils.extention.ribbon
@ -109,9 +109,8 @@ fun InventoryItem(
val (start, top, end, bottom) = padding.calculatePaddings() val (start, top, end, bottom) = padding.calculatePaddings()
val (_, toolTop, toolEnd, _) = toolTipPaddings.calculatePaddings() val (_, toolTop, toolEnd, _) = toolTipPaddings.calculatePaddings()
TooltipLayout2( TooltipLayout(
modifier = modifier, modifier = modifier,
delayMillis = 500,
tips = item.tooltips, tips = item.tooltips,
tooltip = { tooltips -> tooltip = { tooltips ->
DecoratedBox { DecoratedBox {

View file

@ -2,8 +2,7 @@ package com.pixelized.desktop.lwa.ui.screen.campaign.player.detail.sheet
import com.pixelized.desktop.lwa.repository.alteration.AlterationRepository import com.pixelized.desktop.lwa.repository.alteration.AlterationRepository
import com.pixelized.desktop.lwa.repository.characterSheet.CharacterSheetRepository import com.pixelized.desktop.lwa.repository.characterSheet.CharacterSheetRepository
import com.pixelized.desktop.lwa.repository.settings.SettingsRepository import com.pixelized.desktop.lwa.ui.composable.tooltip.BasicTooltipUio
import com.pixelized.desktop.lwa.ui.composable.tooltip.TooltipUio
import com.pixelized.desktop.lwa.ui.overlay.roll.RollAction import com.pixelized.desktop.lwa.ui.overlay.roll.RollAction
import com.pixelized.desktop.lwa.ui.screen.campaign.player.detail.sheet.item.CharacterDetailSheetActionUio import com.pixelized.desktop.lwa.ui.screen.campaign.player.detail.sheet.item.CharacterDetailSheetActionUio
import com.pixelized.desktop.lwa.ui.screen.campaign.player.detail.sheet.item.CharacterDetailSheetCharacteristicUio import com.pixelized.desktop.lwa.ui.screen.campaign.player.detail.sheet.item.CharacterDetailSheetCharacteristicUio
@ -81,7 +80,7 @@ class CharacterDetailSheetFactory(
CharacterDetailSheetCharacteristicUio( CharacterDetailSheetCharacteristicUio(
label = getString(Res.string.character_sheet__characteristics__str), label = getString(Res.string.character_sheet__characteristics__str),
value = "${alteredCharacterSheet.strength}", value = "${alteredCharacterSheet.strength}",
tooltips = TooltipUio( tooltips = BasicTooltipUio(
title = getString(Res.string.character_sheet__characteristics__str), title = getString(Res.string.character_sheet__characteristics__str),
description = getString(Res.string.tooltip__characteristics__strength), description = getString(Res.string.tooltip__characteristics__strength),
), ),
@ -95,7 +94,7 @@ class CharacterDetailSheetFactory(
CharacterDetailSheetCharacteristicUio( CharacterDetailSheetCharacteristicUio(
label = getString(Res.string.character_sheet__characteristics__dex), label = getString(Res.string.character_sheet__characteristics__dex),
value = "${alteredCharacterSheet.dexterity}", value = "${alteredCharacterSheet.dexterity}",
tooltips = TooltipUio( tooltips = BasicTooltipUio(
title = getString(Res.string.character_sheet__characteristics__dex), title = getString(Res.string.character_sheet__characteristics__dex),
description = getString(Res.string.tooltip__characteristics__dexterity), description = getString(Res.string.tooltip__characteristics__dexterity),
), ),
@ -109,7 +108,7 @@ class CharacterDetailSheetFactory(
CharacterDetailSheetCharacteristicUio( CharacterDetailSheetCharacteristicUio(
label = getString(Res.string.character_sheet__characteristics__con), label = getString(Res.string.character_sheet__characteristics__con),
value = "${alteredCharacterSheet.constitution}", value = "${alteredCharacterSheet.constitution}",
tooltips = TooltipUio( tooltips = BasicTooltipUio(
title = getString(Res.string.character_sheet__characteristics__con), title = getString(Res.string.character_sheet__characteristics__con),
description = getString(Res.string.tooltip__characteristics__constitution), description = getString(Res.string.tooltip__characteristics__constitution),
), ),
@ -123,7 +122,7 @@ class CharacterDetailSheetFactory(
CharacterDetailSheetCharacteristicUio( CharacterDetailSheetCharacteristicUio(
label = getString(Res.string.character_sheet__characteristics__hei), label = getString(Res.string.character_sheet__characteristics__hei),
value = "${alteredCharacterSheet.height}", value = "${alteredCharacterSheet.height}",
tooltips = TooltipUio( tooltips = BasicTooltipUio(
title = getString(Res.string.character_sheet__characteristics__hei), title = getString(Res.string.character_sheet__characteristics__hei),
description = getString(Res.string.tooltip__characteristics__height), description = getString(Res.string.tooltip__characteristics__height),
), ),
@ -137,7 +136,7 @@ class CharacterDetailSheetFactory(
CharacterDetailSheetCharacteristicUio( CharacterDetailSheetCharacteristicUio(
label = getString(Res.string.character_sheet__characteristics__int), label = getString(Res.string.character_sheet__characteristics__int),
value = "${alteredCharacterSheet.intelligence}", value = "${alteredCharacterSheet.intelligence}",
tooltips = TooltipUio( tooltips = BasicTooltipUio(
title = getString(Res.string.character_sheet__characteristics__int), title = getString(Res.string.character_sheet__characteristics__int),
description = getString(Res.string.tooltip__characteristics__intelligence), description = getString(Res.string.tooltip__characteristics__intelligence),
), ),
@ -151,7 +150,7 @@ class CharacterDetailSheetFactory(
CharacterDetailSheetCharacteristicUio( CharacterDetailSheetCharacteristicUio(
label = getString(Res.string.character_sheet__characteristics__pow), label = getString(Res.string.character_sheet__characteristics__pow),
value = "${alteredCharacterSheet.power}", value = "${alteredCharacterSheet.power}",
tooltips = TooltipUio( tooltips = BasicTooltipUio(
title = getString(Res.string.character_sheet__characteristics__pow), title = getString(Res.string.character_sheet__characteristics__pow),
description = getString(Res.string.tooltip__characteristics__power), description = getString(Res.string.tooltip__characteristics__power),
), ),
@ -165,7 +164,7 @@ class CharacterDetailSheetFactory(
CharacterDetailSheetCharacteristicUio( CharacterDetailSheetCharacteristicUio(
label = getString(Res.string.character_sheet__characteristics__cha), label = getString(Res.string.character_sheet__characteristics__cha),
value = "${alteredCharacterSheet.charisma}", value = "${alteredCharacterSheet.charisma}",
tooltips = TooltipUio( tooltips = BasicTooltipUio(
title = getString(Res.string.character_sheet__characteristics__cha), title = getString(Res.string.character_sheet__characteristics__cha),
description = getString(Res.string.tooltip__characteristics__charisma), description = getString(Res.string.tooltip__characteristics__charisma),
), ),
@ -191,7 +190,7 @@ class CharacterDetailSheetFactory(
used = skill.used, used = skill.used,
occupation = skill.occupation, occupation = skill.occupation,
tooltips = skill.description?.let { tooltips = skill.description?.let {
TooltipUio( BasicTooltipUio(
title = skill.label, title = skill.label,
description = it, description = it,
) )
@ -218,7 +217,7 @@ class CharacterDetailSheetFactory(
used = skill.used, used = skill.used,
occupation = skill.occupation, occupation = skill.occupation,
tooltips = skill.description?.let { tooltips = skill.description?.let {
TooltipUio( BasicTooltipUio(
title = skill.label, title = skill.label,
description = it, description = it,
) )
@ -245,7 +244,7 @@ class CharacterDetailSheetFactory(
used = skill.used, used = skill.used,
occupation = skill.occupation, occupation = skill.occupation,
tooltips = skill.description?.let { tooltips = skill.description?.let {
TooltipUio( BasicTooltipUio(
title = skill.label, title = skill.label,
description = it, description = it,
) )
@ -263,7 +262,7 @@ class CharacterDetailSheetFactory(
actionId = action.id, actionId = action.id,
label = action.label, label = action.label,
tooltips = action.description?.let { tooltips = action.description?.let {
TooltipUio( BasicTooltipUio(
title = action.label, title = action.label,
description = it, description = it,
) )

View file

@ -1,5 +1,6 @@
package com.pixelized.desktop.lwa.ui.screen.campaign.player.detail.sheet.item package com.pixelized.desktop.lwa.ui.screen.campaign.player.detail.sheet.item
import androidx.compose.foundation.ExperimentalFoundationApi
import androidx.compose.foundation.clickable import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.layout.PaddingValues
@ -10,13 +11,16 @@ import androidx.compose.material.Icon
import androidx.compose.material.MaterialTheme import androidx.compose.material.MaterialTheme
import androidx.compose.material.Text import androidx.compose.material.Text
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.Immutable
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.text.style.TextOverflow import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.unit.Dp
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import com.pixelized.desktop.lwa.ui.composable.shapes.MasteryShape import com.pixelized.desktop.lwa.ui.composable.shapes.MasteryShape
import com.pixelized.desktop.lwa.ui.composable.tooltip.TooltipUio import com.pixelized.desktop.lwa.ui.composable.tooltip.BasicTooltipLayout
import com.pixelized.desktop.lwa.ui.composable.tooltip.BasicTooltipUio
import com.pixelized.desktop.lwa.ui.overlay.roll.RollAction import com.pixelized.desktop.lwa.ui.overlay.roll.RollAction
import lwacharactersheet.composeapp.generated.resources.Res import lwacharactersheet.composeapp.generated.resources.Res
import lwacharactersheet.composeapp.generated.resources.ic_d20_24dp import lwacharactersheet.composeapp.generated.resources.ic_d20_24dp
@ -26,46 +30,57 @@ import org.jetbrains.compose.resources.painterResource
data class CharacterDetailSheetActionUio( data class CharacterDetailSheetActionUio(
val actionId: String, val actionId: String,
val label: String, val label: String,
val tooltips: TooltipUio?, val tooltips: BasicTooltipUio?,
val roll: RollAction.Uio, val roll: RollAction.Uio,
) )
@Immutable
data object CharacterDetailSheetActionDefault {
@Stable
val paddingValues = PaddingValues(start = 10.dp, end = 9.dp, top = 6.dp, bottom = 6.dp)
@Stable
val spacing: Dp = 4.dp
}
@OptIn(ExperimentalFoundationApi::class)
@Composable @Composable
fun CharacterDetailSheetAction( fun CharacterDetailSheetAction(
modifier: Modifier = Modifier, modifier: Modifier = Modifier,
paddingValues: PaddingValues = PaddingValues( paddingValues: PaddingValues = CharacterDetailSheetActionDefault.paddingValues,
start = 10.dp, spacing: Dp = CharacterDetailSheetActionDefault.spacing,
end = 9.dp,
top = 6.dp,
bottom = 6.dp
),
action: CharacterDetailSheetActionUio, action: CharacterDetailSheetActionUio,
onClick: (CharacterDetailSheetActionUio) -> Unit, onClick: (CharacterDetailSheetActionUio) -> Unit,
) { ) {
Row( BasicTooltipLayout(
modifier = Modifier tooltip = action.tooltips,
.clickable(onClick = { onClick(action) }) content = {
.padding(paddingValues = paddingValues) Row(
.then(other = modifier), modifier = Modifier
horizontalArrangement = Arrangement.spacedBy(space = 4.dp), .clickable(onClick = { onClick(action) })
verticalAlignment = Alignment.CenterVertically, .padding(paddingValues = paddingValues)
) { .then(other = modifier),
MasteryShape( horizontalArrangement = Arrangement.spacedBy(space = spacing),
modifier = Modifier.padding(top = 4.dp, end = 2.dp), verticalAlignment = Alignment.CenterVertically,
multiplier = 2, ) {
) MasteryShape(
Text( modifier = Modifier.padding(top = 4.dp, end = 2.dp),
modifier = Modifier.weight(1f), multiplier = 2,
style = MaterialTheme.typography.body1, )
overflow = TextOverflow.Ellipsis, Text(
maxLines = 1, modifier = Modifier.weight(1f),
text = action.label, style = MaterialTheme.typography.body1,
) overflow = TextOverflow.Ellipsis,
Icon( maxLines = 1,
modifier = Modifier.size(size = 24.dp), text = action.label,
painter = painterResource(Res.drawable.ic_d20_24dp), )
tint = MaterialTheme.colors.primary, Icon(
contentDescription = null, modifier = Modifier.size(size = 24.dp),
) painter = painterResource(Res.drawable.ic_d20_24dp),
} tint = MaterialTheme.colors.primary,
contentDescription = null,
)
}
}
)
} }

View file

@ -3,7 +3,6 @@ package com.pixelized.desktop.lwa.ui.screen.campaign.player.detail.sheet.item
import androidx.compose.foundation.ExperimentalFoundationApi import androidx.compose.foundation.ExperimentalFoundationApi
import androidx.compose.foundation.clickable import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.layout.PaddingValues
import androidx.compose.foundation.layout.padding
import androidx.compose.material.MaterialTheme import androidx.compose.material.MaterialTheme
import androidx.compose.material.Text import androidx.compose.material.Text
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
@ -14,15 +13,15 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import com.pixelized.desktop.lwa.ui.composable.decoratedBox.DecoratedBox import com.pixelized.desktop.lwa.ui.composable.decoratedBox.DecoratedBox
import com.pixelized.desktop.lwa.ui.composable.tooltip.TooltipLayout import com.pixelized.desktop.lwa.ui.composable.tooltip.BasicTooltipLayout
import com.pixelized.desktop.lwa.ui.composable.tooltip.TooltipUio import com.pixelized.desktop.lwa.ui.composable.tooltip.BasicTooltipUio
import com.pixelized.desktop.lwa.ui.overlay.roll.RollAction import com.pixelized.desktop.lwa.ui.overlay.roll.RollAction
@Stable @Stable
data class CharacterDetailSheetCharacteristicUio( data class CharacterDetailSheetCharacteristicUio(
val value: String, val value: String,
val label: String, val label: String,
val tooltips: TooltipUio, val tooltips: BasicTooltipUio,
val roll: RollAction.Uio, val roll: RollAction.Uio,
) )
@ -34,7 +33,7 @@ fun CharacterDetailSheetCharacteristic(
characteristic: CharacterDetailSheetCharacteristicUio, characteristic: CharacterDetailSheetCharacteristicUio,
onClick: () -> Unit, onClick: () -> Unit,
) { ) {
TooltipLayout( BasicTooltipLayout(
tooltip = characteristic.tooltips, tooltip = characteristic.tooltips,
content = { content = {
DecoratedBox( DecoratedBox(

View file

@ -19,8 +19,8 @@ import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import com.pixelized.desktop.lwa.ui.composable.shapes.MasteryShape import com.pixelized.desktop.lwa.ui.composable.shapes.MasteryShape
import com.pixelized.desktop.lwa.ui.composable.tooltip.TooltipLayout import com.pixelized.desktop.lwa.ui.composable.tooltip.BasicTooltipLayout
import com.pixelized.desktop.lwa.ui.composable.tooltip.TooltipUio import com.pixelized.desktop.lwa.ui.composable.tooltip.BasicTooltipUio
import com.pixelized.desktop.lwa.ui.overlay.roll.RollAction import com.pixelized.desktop.lwa.ui.overlay.roll.RollAction
@Stable @Stable
@ -30,7 +30,7 @@ data class CharacterDetailSheetSkillUio(
val value: String, val value: String,
val used: Boolean, val used: Boolean,
val occupation: Boolean, val occupation: Boolean,
val tooltips: TooltipUio?, val tooltips: BasicTooltipUio?,
val roll: RollAction.Uio, val roll: RollAction.Uio,
) )
@ -48,7 +48,7 @@ fun CharacterDetailSheetSkill(
onSkill: (CharacterDetailSheetSkillUio) -> Unit, onSkill: (CharacterDetailSheetSkillUio) -> Unit,
onUse: (CharacterDetailSheetSkillUio) -> Unit, onUse: (CharacterDetailSheetSkillUio) -> Unit,
) { ) {
TooltipLayout( BasicTooltipLayout(
tooltip = skill.tooltips, tooltip = skill.tooltips,
content = { content = {
Row( Row(

View file

@ -1,6 +1,6 @@
package com.pixelized.desktop.lwa.ui.screen.characterSheet.detail package com.pixelized.desktop.lwa.ui.screen.characterSheet.detail
import com.pixelized.desktop.lwa.ui.composable.tooltip.TooltipUio import com.pixelized.desktop.lwa.ui.composable.tooltip.BasicTooltipUio
import com.pixelized.desktop.lwa.ui.overlay.roll.RollAction import com.pixelized.desktop.lwa.ui.overlay.roll.RollAction
import com.pixelized.desktop.lwa.ui.screen.characterSheet.detail.CharacterSheetPageUio.Characteristic import com.pixelized.desktop.lwa.ui.screen.characterSheet.detail.CharacterSheetPageUio.Characteristic
import com.pixelized.desktop.lwa.ui.screen.characterSheet.detail.CharacterSheetPageUio.Node import com.pixelized.desktop.lwa.ui.screen.characterSheet.detail.CharacterSheetPageUio.Node
@ -66,7 +66,7 @@ class CharacterSheetFactory(
label = getString(Res.string.character_sheet__characteristics__str), label = getString(Res.string.character_sheet__characteristics__str),
value = "${alteredCharacterSheet.strength}", value = "${alteredCharacterSheet.strength}",
editable = false, editable = false,
tooltips = TooltipUio( tooltips = BasicTooltipUio(
title = getString(Res.string.character_sheet__characteristics__str), title = getString(Res.string.character_sheet__characteristics__str),
description = getString(Res.string.tooltip__characteristics__strength), description = getString(Res.string.tooltip__characteristics__strength),
), ),
@ -82,7 +82,7 @@ class CharacterSheetFactory(
label = getString(Res.string.character_sheet__characteristics__dex), label = getString(Res.string.character_sheet__characteristics__dex),
value = "${alteredCharacterSheet.dexterity}", value = "${alteredCharacterSheet.dexterity}",
editable = false, editable = false,
tooltips = TooltipUio( tooltips = BasicTooltipUio(
title = getString(Res.string.character_sheet__characteristics__dex), title = getString(Res.string.character_sheet__characteristics__dex),
description = getString(Res.string.tooltip__characteristics__dexterity), description = getString(Res.string.tooltip__characteristics__dexterity),
), ),
@ -98,7 +98,7 @@ class CharacterSheetFactory(
label = getString(Res.string.character_sheet__characteristics__con), label = getString(Res.string.character_sheet__characteristics__con),
value = "${alteredCharacterSheet.constitution}", value = "${alteredCharacterSheet.constitution}",
editable = false, editable = false,
tooltips = TooltipUio( tooltips = BasicTooltipUio(
title = getString(Res.string.character_sheet__characteristics__con), title = getString(Res.string.character_sheet__characteristics__con),
description = getString(Res.string.tooltip__characteristics__constitution), description = getString(Res.string.tooltip__characteristics__constitution),
), ),
@ -114,7 +114,7 @@ class CharacterSheetFactory(
label = getString(Res.string.character_sheet__characteristics__hei), label = getString(Res.string.character_sheet__characteristics__hei),
value = "${alteredCharacterSheet.height}", value = "${alteredCharacterSheet.height}",
editable = false, editable = false,
tooltips = TooltipUio( tooltips = BasicTooltipUio(
title = getString(Res.string.character_sheet__characteristics__hei), title = getString(Res.string.character_sheet__characteristics__hei),
description = getString(Res.string.tooltip__characteristics__height), description = getString(Res.string.tooltip__characteristics__height),
), ),
@ -130,7 +130,7 @@ class CharacterSheetFactory(
label = getString(Res.string.character_sheet__characteristics__int), label = getString(Res.string.character_sheet__characteristics__int),
value = "${alteredCharacterSheet.intelligence}", value = "${alteredCharacterSheet.intelligence}",
editable = false, editable = false,
tooltips = TooltipUio( tooltips = BasicTooltipUio(
title = getString(Res.string.character_sheet__characteristics__int), title = getString(Res.string.character_sheet__characteristics__int),
description = getString(Res.string.tooltip__characteristics__intelligence), description = getString(Res.string.tooltip__characteristics__intelligence),
), ),
@ -146,7 +146,7 @@ class CharacterSheetFactory(
label = getString(Res.string.character_sheet__characteristics__pow), label = getString(Res.string.character_sheet__characteristics__pow),
value = "${alteredCharacterSheet.power}", value = "${alteredCharacterSheet.power}",
editable = false, editable = false,
tooltips = TooltipUio( tooltips = BasicTooltipUio(
title = getString(Res.string.character_sheet__characteristics__pow), title = getString(Res.string.character_sheet__characteristics__pow),
description = getString(Res.string.tooltip__characteristics__power), description = getString(Res.string.tooltip__characteristics__power),
), ),
@ -162,7 +162,7 @@ class CharacterSheetFactory(
label = getString(Res.string.character_sheet__characteristics__cha), label = getString(Res.string.character_sheet__characteristics__cha),
value = "${alteredCharacterSheet.charisma}", value = "${alteredCharacterSheet.charisma}",
editable = false, editable = false,
tooltips = TooltipUio( tooltips = BasicTooltipUio(
title = getString(Res.string.character_sheet__characteristics__cha), title = getString(Res.string.character_sheet__characteristics__cha),
description = getString(Res.string.tooltip__characteristics__charisma), description = getString(Res.string.tooltip__characteristics__charisma),
), ),
@ -180,7 +180,7 @@ class CharacterSheetFactory(
label = getString(Res.string.character_sheet__sub_characteristics__movement), label = getString(Res.string.character_sheet__sub_characteristics__movement),
value = "${alteredCharacterSheet.movement}", value = "${alteredCharacterSheet.movement}",
editable = false, editable = false,
tooltips = TooltipUio( tooltips = BasicTooltipUio(
title = getString(Res.string.character_sheet__sub_characteristics__movement), title = getString(Res.string.character_sheet__sub_characteristics__movement),
description = getString(Res.string.tooltip__sub_characteristics__movement), description = getString(Res.string.tooltip__sub_characteristics__movement),
), ),
@ -191,7 +191,7 @@ class CharacterSheetFactory(
label = getString(Res.string.character_sheet__sub_characteristics__hit_point), label = getString(Res.string.character_sheet__sub_characteristics__hit_point),
value = alteredCharacterSheet.maxHp.let { maxHp -> "${maxHp - alteredCharacterSheet.damage}/${maxHp}" }, value = alteredCharacterSheet.maxHp.let { maxHp -> "${maxHp - alteredCharacterSheet.damage}/${maxHp}" },
editable = true, editable = true,
tooltips = TooltipUio( tooltips = BasicTooltipUio(
title = getString(Res.string.character_sheet__sub_characteristics__hit_point), title = getString(Res.string.character_sheet__sub_characteristics__hit_point),
description = getString(Res.string.tooltip__sub_characteristics__hit_point), description = getString(Res.string.tooltip__sub_characteristics__hit_point),
), ),
@ -202,7 +202,7 @@ class CharacterSheetFactory(
label = getString(Res.string.character_sheet__sub_characteristics__power_point), label = getString(Res.string.character_sheet__sub_characteristics__power_point),
value = alteredCharacterSheet.maxPp.let { maxPp -> "${maxPp - alteredCharacterSheet.power}/${maxPp}" }, value = alteredCharacterSheet.maxPp.let { maxPp -> "${maxPp - alteredCharacterSheet.power}/${maxPp}" },
editable = true, editable = true,
tooltips = TooltipUio( tooltips = BasicTooltipUio(
title = getString(Res.string.character_sheet__sub_characteristics__power_point), title = getString(Res.string.character_sheet__sub_characteristics__power_point),
description = getString(Res.string.tooltip__sub_characteristics__power_point), description = getString(Res.string.tooltip__sub_characteristics__power_point),
), ),
@ -213,7 +213,7 @@ class CharacterSheetFactory(
label = getString(Res.string.character_sheet__sub_characteristics__damage_bonus), label = getString(Res.string.character_sheet__sub_characteristics__damage_bonus),
value = alteredCharacterSheet.damageBonus, value = alteredCharacterSheet.damageBonus,
editable = false, editable = false,
tooltips = TooltipUio( tooltips = BasicTooltipUio(
title = getString(Res.string.character_sheet__sub_characteristics__damage_bonus), title = getString(Res.string.character_sheet__sub_characteristics__damage_bonus),
description = getString(Res.string.tooltip__sub_characteristics__bonus_damage), description = getString(Res.string.tooltip__sub_characteristics__bonus_damage),
), ),
@ -224,7 +224,7 @@ class CharacterSheetFactory(
label = getString(Res.string.character_sheet__sub_characteristics__armor), label = getString(Res.string.character_sheet__sub_characteristics__armor),
value = "${alteredCharacterSheet.armor}", value = "${alteredCharacterSheet.armor}",
editable = false, editable = false,
tooltips = TooltipUio( tooltips = BasicTooltipUio(
title = getString(Res.string.character_sheet__sub_characteristics__armor), title = getString(Res.string.character_sheet__sub_characteristics__armor),
description = getString(Res.string.tooltip__sub_characteristics__armor), description = getString(Res.string.tooltip__sub_characteristics__armor),
), ),
@ -235,7 +235,7 @@ class CharacterSheetFactory(
label = getString(Res.string.character_sheet__sub_characteristics__learning), label = getString(Res.string.character_sheet__sub_characteristics__learning),
value = "${alteredCharacterSheet.learning}", value = "${alteredCharacterSheet.learning}",
editable = false, editable = false,
tooltips = TooltipUio( tooltips = BasicTooltipUio(
title = getString(Res.string.character_sheet__sub_characteristics__learning), title = getString(Res.string.character_sheet__sub_characteristics__learning),
description = getString(Res.string.tooltip__sub_characteristics__learning), description = getString(Res.string.tooltip__sub_characteristics__learning),
), ),
@ -246,7 +246,7 @@ class CharacterSheetFactory(
label = getString(Res.string.character_sheet__sub_characteristics__hp_grow), label = getString(Res.string.character_sheet__sub_characteristics__hp_grow),
value = "${alteredCharacterSheet.hpGrow}", value = "${alteredCharacterSheet.hpGrow}",
editable = false, editable = false,
tooltips = TooltipUio( tooltips = BasicTooltipUio(
title = getString(Res.string.character_sheet__sub_characteristics__hp_grow), title = getString(Res.string.character_sheet__sub_characteristics__hp_grow),
description = getString(Res.string.tooltip__sub_characteristics__hp_grow), description = getString(Res.string.tooltip__sub_characteristics__hp_grow),
), ),
@ -266,7 +266,7 @@ class CharacterSheetFactory(
value = value, value = value,
used = skill.used, used = skill.used,
tooltips = skill.description?.let { tooltips = skill.description?.let {
TooltipUio( BasicTooltipUio(
title = skill.label, title = skill.label,
description = it, description = it,
) )
@ -292,7 +292,7 @@ class CharacterSheetFactory(
value = value, value = value,
used = skill.used, used = skill.used,
tooltips = skill.description?.let { tooltips = skill.description?.let {
TooltipUio( BasicTooltipUio(
title = skill.label, title = skill.label,
description = it, description = it,
) )
@ -318,7 +318,7 @@ class CharacterSheetFactory(
value = value, value = value,
used = skill.used, used = skill.used,
tooltips = skill.description?.let { tooltips = skill.description?.let {
TooltipUio( BasicTooltipUio(
title = skill.label, title = skill.label,
description = it, description = it,
) )

View file

@ -59,8 +59,8 @@ import com.pixelized.desktop.lwa.ui.composable.blur.BlurContent
import com.pixelized.desktop.lwa.ui.composable.blur.BlurContentController import com.pixelized.desktop.lwa.ui.composable.blur.BlurContentController
import com.pixelized.desktop.lwa.ui.composable.character.diminished.CharacterSheetDiminishedDialogViewModel import com.pixelized.desktop.lwa.ui.composable.character.diminished.CharacterSheetDiminishedDialogViewModel
import com.pixelized.desktop.lwa.ui.composable.decoratedBox.DecoratedBox import com.pixelized.desktop.lwa.ui.composable.decoratedBox.DecoratedBox
import com.pixelized.desktop.lwa.ui.composable.tooltip.TooltipLayout import com.pixelized.desktop.lwa.ui.composable.tooltip.BasicTooltipLayout
import com.pixelized.desktop.lwa.ui.composable.tooltip.TooltipUio import com.pixelized.desktop.lwa.ui.composable.tooltip.BasicTooltipUio
import com.pixelized.desktop.lwa.ui.navigation.screen.LocalScreenController import com.pixelized.desktop.lwa.ui.navigation.screen.LocalScreenController
import com.pixelized.desktop.lwa.ui.navigation.window.LocalWindow import com.pixelized.desktop.lwa.ui.navigation.window.LocalWindow
import com.pixelized.desktop.lwa.ui.navigation.window.destination.navigateToCharacterSheetEdit import com.pixelized.desktop.lwa.ui.navigation.window.destination.navigateToCharacterSheetEdit
@ -107,7 +107,7 @@ data class CharacterSheetPageUio(
val label: String, val label: String,
val value: String, val value: String,
val editable: Boolean, val editable: Boolean,
val tooltips: TooltipUio?, val tooltips: BasicTooltipUio?,
val roll: RollAction.Uio?, val roll: RollAction.Uio?,
) )
@ -117,7 +117,7 @@ data class CharacterSheetPageUio(
val label: String, val label: String,
val value: Int, val value: Int,
val used: Boolean, val used: Boolean,
val tooltips: TooltipUio? = null, val tooltips: BasicTooltipUio? = null,
val roll: RollAction.Uio, val roll: RollAction.Uio,
) )
@ -523,7 +523,7 @@ private fun Stat(
characteristic: Characteristic, characteristic: Characteristic,
onClick: () -> Unit, onClick: () -> Unit,
) { ) {
TooltipLayout( BasicTooltipLayout(
tooltip = characteristic.tooltips, tooltip = characteristic.tooltips,
content = { content = {
DecoratedBox( DecoratedBox(
@ -560,7 +560,7 @@ private fun SubCharacteristics(
characteristic: Characteristic, characteristic: Characteristic,
onCharacteristic: ((characteristic: Characteristic) -> Unit)?, onCharacteristic: ((characteristic: Characteristic) -> Unit)?,
) { ) {
TooltipLayout( BasicTooltipLayout(
tooltip = characteristic.tooltips, tooltip = characteristic.tooltips,
content = { content = {
Row( Row(
@ -599,7 +599,7 @@ private fun Skill(
onClick: () -> Unit, onClick: () -> Unit,
onUse: () -> Unit, onUse: () -> Unit,
) { ) {
TooltipLayout( BasicTooltipLayout(
tooltip = node.tooltips, tooltip = node.tooltips,
content = { content = {
Row( Row(

View file

@ -6,7 +6,7 @@ import androidx.compose.runtime.mutableStateOf
import com.pixelized.desktop.lwa.ui.composable.checkbox.LwaCheckBoxUio import com.pixelized.desktop.lwa.ui.composable.checkbox.LwaCheckBoxUio
import com.pixelized.desktop.lwa.ui.composable.textfield.createLwaTextField import com.pixelized.desktop.lwa.ui.composable.textfield.createLwaTextField
import com.pixelized.desktop.lwa.ui.composable.textfield.createLwaTextFieldFlow import com.pixelized.desktop.lwa.ui.composable.textfield.createLwaTextFieldFlow
import com.pixelized.desktop.lwa.ui.composable.tooltip.TooltipUio import com.pixelized.desktop.lwa.ui.composable.tooltip.BasicTooltipUio
import com.pixelized.desktop.lwa.ui.screen.characterSheet.edit.common.SkillFieldFactory import com.pixelized.desktop.lwa.ui.screen.characterSheet.edit.common.SkillFieldFactory
import com.pixelized.desktop.lwa.ui.screen.characterSheet.edit.common.occupation import com.pixelized.desktop.lwa.ui.screen.characterSheet.edit.common.occupation
import com.pixelized.desktop.lwa.ui.screen.characterSheet.edit.composable.ActionFieldUio import com.pixelized.desktop.lwa.ui.screen.characterSheet.edit.composable.ActionFieldUio
@ -544,7 +544,7 @@ class CharacterSheetEditFactory(
value = skill?.level?.takeIf { it > 0 }?.toString() ?: "", value = skill?.level?.takeIf { it > 0 }?.toString() ?: "",
), ),
option = skillFieldFactory.occupationOption(skill?.occupation ?: false), option = skillFieldFactory.occupationOption(skill?.occupation ?: false),
tooltip = TooltipUio( tooltip = BasicTooltipUio(
title = label, title = label,
description = description, description = description,
) )

View file

@ -25,8 +25,8 @@ import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import com.pixelized.desktop.lwa.ui.composable.tooltip.TooltipLayout import com.pixelized.desktop.lwa.ui.composable.tooltip.BasicTooltipLayout
import com.pixelized.desktop.lwa.ui.composable.tooltip.TooltipUio import com.pixelized.desktop.lwa.ui.composable.tooltip.BasicTooltipUio
import com.pixelized.desktop.lwa.ui.screen.characterSheet.edit.composable.option.CheckedOption import com.pixelized.desktop.lwa.ui.screen.characterSheet.edit.composable.option.CheckedOption
import com.pixelized.desktop.lwa.ui.screen.characterSheet.edit.composable.option.DropDownCheckedMenuItem import com.pixelized.desktop.lwa.ui.screen.characterSheet.edit.composable.option.DropDownCheckedMenuItem
import com.pixelized.desktop.lwa.ui.screen.characterSheet.edit.composable.textfield.TextFieldWrapper import com.pixelized.desktop.lwa.ui.screen.characterSheet.edit.composable.textfield.TextFieldWrapper
@ -43,7 +43,7 @@ class BaseSkillFieldUio(
val bonus: TextFieldWrapperUio, val bonus: TextFieldWrapperUio,
val level: TextFieldWrapperUio, val level: TextFieldWrapperUio,
val option: CheckedOption, val option: CheckedOption,
val tooltip: TooltipUio, val tooltip: BasicTooltipUio,
) )
@OptIn(ExperimentalFoundationApi::class) @OptIn(ExperimentalFoundationApi::class)
@ -80,7 +80,7 @@ fun BaseSkillForm(
maxLines = 1, maxLines = 1,
text = field.label, text = field.label,
) )
TooltipLayout( BasicTooltipLayout(
modifier = Modifier modifier = Modifier
.width(width = 96.dp) .width(width = 96.dp)
.padding(start = 16.dp), .padding(start = 16.dp),

View file

@ -1,6 +1,6 @@
package com.pixelized.desktop.lwa.ui.screen.levelup package com.pixelized.desktop.lwa.ui.screen.levelup
import com.pixelized.desktop.lwa.ui.composable.tooltip.TooltipUio import com.pixelized.desktop.lwa.ui.composable.tooltip.BasicTooltipUio
import com.pixelized.desktop.lwa.ui.overlay.roll.RollAction import com.pixelized.desktop.lwa.ui.overlay.roll.RollAction
import com.pixelized.desktop.lwa.ui.overlay.roll.RollResult import com.pixelized.desktop.lwa.ui.overlay.roll.RollResult
import com.pixelized.desktop.lwa.ui.overlay.roll.RollResult.BoundedRollResult.Result import com.pixelized.desktop.lwa.ui.overlay.roll.RollResult.BoundedRollResult.Result
@ -100,7 +100,7 @@ class LevelUpFactory(
icon = Res.drawable.ic_heart_24dp, icon = Res.drawable.ic_heart_24dp,
base = "${alteredCharacterSheet.maxHp}", base = "${alteredCharacterSheet.maxHp}",
levelUp = "${levelUpCharacterSheet.maxHp}", levelUp = "${levelUpCharacterSheet.maxHp}",
tooltip = TooltipUio( tooltip = BasicTooltipUio(
title = getString(Res.string.character_sheet__sub_characteristics__hit_point), title = getString(Res.string.character_sheet__sub_characteristics__hit_point),
description = getString(Res.string.tooltip__sub_characteristics__hit_point) description = getString(Res.string.tooltip__sub_characteristics__hit_point)
), ),
@ -109,7 +109,7 @@ class LevelUpFactory(
icon = Res.drawable.ic_water_drop_24dp, icon = Res.drawable.ic_water_drop_24dp,
base = "${alteredCharacterSheet.maxPp}", base = "${alteredCharacterSheet.maxPp}",
levelUp = "${levelUpCharacterSheet.maxPp}", levelUp = "${levelUpCharacterSheet.maxPp}",
tooltip = TooltipUio( tooltip = BasicTooltipUio(
title = getString(Res.string.character_sheet__sub_characteristics__power_point), title = getString(Res.string.character_sheet__sub_characteristics__power_point),
description = getString(Res.string.tooltip__sub_characteristics__power_point) description = getString(Res.string.tooltip__sub_characteristics__power_point)
) )
@ -118,7 +118,7 @@ class LevelUpFactory(
icon = Res.drawable.ic_swords_24dp, icon = Res.drawable.ic_swords_24dp,
base = alteredCharacterSheet.damageBonus, base = alteredCharacterSheet.damageBonus,
levelUp = levelUpCharacterSheet.damageBonus, levelUp = levelUpCharacterSheet.damageBonus,
tooltip = TooltipUio( tooltip = BasicTooltipUio(
title = getString(Res.string.character_sheet__sub_characteristics__damage_bonus), title = getString(Res.string.character_sheet__sub_characteristics__damage_bonus),
description = getString(Res.string.tooltip__sub_characteristics__bonus_damage) description = getString(Res.string.tooltip__sub_characteristics__bonus_damage)
), ),
@ -127,7 +127,7 @@ class LevelUpFactory(
icon = Res.drawable.ic_heart_plus_24dp, icon = Res.drawable.ic_heart_plus_24dp,
base = "${alteredCharacterSheet.hpGrow}", base = "${alteredCharacterSheet.hpGrow}",
levelUp = "${levelUpCharacterSheet.hpGrow}", levelUp = "${levelUpCharacterSheet.hpGrow}",
tooltip = TooltipUio( tooltip = BasicTooltipUio(
title = getString(Res.string.character_sheet__sub_characteristics__hp_grow), title = getString(Res.string.character_sheet__sub_characteristics__hp_grow),
description = getString(Res.string.tooltip__sub_characteristics__hp_grow) description = getString(Res.string.tooltip__sub_characteristics__hp_grow)
), ),
@ -136,7 +136,7 @@ class LevelUpFactory(
icon = Res.drawable.ic_cognition_24dp, icon = Res.drawable.ic_cognition_24dp,
base = "${alteredCharacterSheet.learning}", base = "${alteredCharacterSheet.learning}",
levelUp = "${levelUpCharacterSheet.learning}", levelUp = "${levelUpCharacterSheet.learning}",
tooltip = TooltipUio( tooltip = BasicTooltipUio(
title = getString(Res.string.character_sheet__sub_characteristics__learning), title = getString(Res.string.character_sheet__sub_characteristics__learning),
description = getString(Res.string.tooltip__sub_characteristics__learning) description = getString(Res.string.tooltip__sub_characteristics__learning)
), ),
@ -161,7 +161,7 @@ class LevelUpFactory(
label = getString(Res.string.character_sheet__characteristics__str), label = getString(Res.string.character_sheet__characteristics__str),
value = alteredCharacterSheet.strength, value = alteredCharacterSheet.strength,
selected = selectedCharacteristicId == CharacterSheet.CharacteristicId.STR, selected = selectedCharacteristicId == CharacterSheet.CharacteristicId.STR,
tooltips = TooltipUio( tooltips = BasicTooltipUio(
title = getString(Res.string.character_sheet__characteristics__str), title = getString(Res.string.character_sheet__characteristics__str),
description = getString(Res.string.tooltip__characteristics__strength), description = getString(Res.string.tooltip__characteristics__strength),
), ),
@ -171,7 +171,7 @@ class LevelUpFactory(
label = getString(Res.string.character_sheet__characteristics__dex), label = getString(Res.string.character_sheet__characteristics__dex),
value = alteredCharacterSheet.dexterity, value = alteredCharacterSheet.dexterity,
selected = selectedCharacteristicId == CharacterSheet.CharacteristicId.DEX, selected = selectedCharacteristicId == CharacterSheet.CharacteristicId.DEX,
tooltips = TooltipUio( tooltips = BasicTooltipUio(
title = getString(Res.string.character_sheet__characteristics__dex), title = getString(Res.string.character_sheet__characteristics__dex),
description = getString(Res.string.tooltip__characteristics__dexterity), description = getString(Res.string.tooltip__characteristics__dexterity),
), ),
@ -181,7 +181,7 @@ class LevelUpFactory(
label = getString(Res.string.character_sheet__characteristics__con), label = getString(Res.string.character_sheet__characteristics__con),
value = alteredCharacterSheet.constitution, value = alteredCharacterSheet.constitution,
selected = selectedCharacteristicId == CharacterSheet.CharacteristicId.CON, selected = selectedCharacteristicId == CharacterSheet.CharacteristicId.CON,
tooltips = TooltipUio( tooltips = BasicTooltipUio(
title = getString(Res.string.character_sheet__characteristics__con), title = getString(Res.string.character_sheet__characteristics__con),
description = getString(Res.string.tooltip__characteristics__constitution), description = getString(Res.string.tooltip__characteristics__constitution),
), ),
@ -191,7 +191,7 @@ class LevelUpFactory(
label = getString(Res.string.character_sheet__characteristics__hei), label = getString(Res.string.character_sheet__characteristics__hei),
value = alteredCharacterSheet.height, value = alteredCharacterSheet.height,
selected = selectedCharacteristicId == CharacterSheet.CharacteristicId.HEI, selected = selectedCharacteristicId == CharacterSheet.CharacteristicId.HEI,
tooltips = TooltipUio( tooltips = BasicTooltipUio(
title = getString(Res.string.character_sheet__characteristics__hei), title = getString(Res.string.character_sheet__characteristics__hei),
description = getString(Res.string.tooltip__characteristics__height), description = getString(Res.string.tooltip__characteristics__height),
), ),
@ -201,7 +201,7 @@ class LevelUpFactory(
label = getString(Res.string.character_sheet__characteristics__int), label = getString(Res.string.character_sheet__characteristics__int),
value = alteredCharacterSheet.intelligence, value = alteredCharacterSheet.intelligence,
selected = selectedCharacteristicId == CharacterSheet.CharacteristicId.INT, selected = selectedCharacteristicId == CharacterSheet.CharacteristicId.INT,
tooltips = TooltipUio( tooltips = BasicTooltipUio(
title = getString(Res.string.character_sheet__characteristics__int), title = getString(Res.string.character_sheet__characteristics__int),
description = getString(Res.string.tooltip__characteristics__intelligence), description = getString(Res.string.tooltip__characteristics__intelligence),
), ),
@ -211,7 +211,7 @@ class LevelUpFactory(
label = getString(Res.string.character_sheet__characteristics__pow), label = getString(Res.string.character_sheet__characteristics__pow),
value = alteredCharacterSheet.power, value = alteredCharacterSheet.power,
selected = selectedCharacteristicId == CharacterSheet.CharacteristicId.POW, selected = selectedCharacteristicId == CharacterSheet.CharacteristicId.POW,
tooltips = TooltipUio( tooltips = BasicTooltipUio(
title = getString(Res.string.character_sheet__characteristics__pow), title = getString(Res.string.character_sheet__characteristics__pow),
description = getString(Res.string.tooltip__characteristics__power), description = getString(Res.string.tooltip__characteristics__power),
), ),
@ -221,7 +221,7 @@ class LevelUpFactory(
label = getString(Res.string.character_sheet__characteristics__cha), label = getString(Res.string.character_sheet__characteristics__cha),
value = alteredCharacterSheet.charisma, value = alteredCharacterSheet.charisma,
selected = selectedCharacteristicId == CharacterSheet.CharacteristicId.CHA, selected = selectedCharacteristicId == CharacterSheet.CharacteristicId.CHA,
tooltips = TooltipUio( tooltips = BasicTooltipUio(
title = getString(Res.string.character_sheet__characteristics__cha), title = getString(Res.string.character_sheet__characteristics__cha),
description = getString(Res.string.tooltip__characteristics__charisma), description = getString(Res.string.tooltip__characteristics__charisma),
), ),
@ -306,7 +306,7 @@ class LevelUpFactory(
levelUp = results.isSkillLeveledUp(skillId = skill.id), levelUp = results.isSkillLeveledUp(skillId = skill.id),
occupation = skill.occupation, occupation = skill.occupation,
tooltips = skill.description?.let { tooltips = skill.description?.let {
TooltipUio( BasicTooltipUio(
title = skill.label, title = skill.label,
description = it, description = it,
) )

View file

@ -1,11 +1,8 @@
package com.pixelized.desktop.lwa.ui.screen.levelup.items package com.pixelized.desktop.lwa.ui.screen.levelup.items
import androidx.compose.animation.AnimatedContent import androidx.compose.animation.AnimatedContent
import androidx.compose.animation.SizeTransform
import androidx.compose.animation.fadeIn import androidx.compose.animation.fadeIn
import androidx.compose.animation.fadeOut import androidx.compose.animation.fadeOut
import androidx.compose.animation.slideInVertically
import androidx.compose.animation.slideOutVertically
import androidx.compose.animation.togetherWith import androidx.compose.animation.togetherWith
import androidx.compose.foundation.ExperimentalFoundationApi import androidx.compose.foundation.ExperimentalFoundationApi
import androidx.compose.foundation.clickable import androidx.compose.foundation.clickable
@ -22,8 +19,8 @@ import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import com.pixelized.desktop.lwa.ui.composable.decoratedBox.DecoratedBox import com.pixelized.desktop.lwa.ui.composable.decoratedBox.DecoratedBox
import com.pixelized.desktop.lwa.ui.composable.tooltip.TooltipLayout import com.pixelized.desktop.lwa.ui.composable.tooltip.BasicTooltipLayout
import com.pixelized.desktop.lwa.ui.composable.tooltip.TooltipUio import com.pixelized.desktop.lwa.ui.composable.tooltip.BasicTooltipUio
import com.pixelized.desktop.lwa.ui.theme.lwa import com.pixelized.desktop.lwa.ui.theme.lwa
@Stable @Stable
@ -32,7 +29,7 @@ data class LevelUpCharacteristicUio(
val value: Int, val value: Int,
val label: String, val label: String,
val selected: Boolean, val selected: Boolean,
val tooltips: TooltipUio, val tooltips: BasicTooltipUio,
) )
@OptIn(ExperimentalFoundationApi::class) @OptIn(ExperimentalFoundationApi::class)
@ -43,7 +40,7 @@ fun LevelUpCharacteristic(
characteristic: LevelUpCharacteristicUio, characteristic: LevelUpCharacteristicUio,
onClick: () -> Unit, onClick: () -> Unit,
) { ) {
TooltipLayout( BasicTooltipLayout(
tooltip = characteristic.tooltips, tooltip = characteristic.tooltips,
content = { content = {
DecoratedBox( DecoratedBox(

View file

@ -24,8 +24,8 @@ import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import com.pixelized.desktop.lwa.ui.composable.shapes.MasteryShape import com.pixelized.desktop.lwa.ui.composable.shapes.MasteryShape
import com.pixelized.desktop.lwa.ui.composable.tooltip.TooltipLayout import com.pixelized.desktop.lwa.ui.composable.tooltip.BasicTooltipLayout
import com.pixelized.desktop.lwa.ui.composable.tooltip.TooltipUio import com.pixelized.desktop.lwa.ui.composable.tooltip.BasicTooltipUio
import com.pixelized.desktop.lwa.ui.overlay.roll.RollAction import com.pixelized.desktop.lwa.ui.overlay.roll.RollAction
import com.pixelized.desktop.lwa.ui.theme.lwa import com.pixelized.desktop.lwa.ui.theme.lwa
import lwacharactersheet.composeapp.generated.resources.Res import lwacharactersheet.composeapp.generated.resources.Res
@ -40,7 +40,7 @@ data class LevelUpSkillUio(
val level: Int, val level: Int,
val levelUp: Boolean, val levelUp: Boolean,
val occupation: Boolean, val occupation: Boolean,
val tooltips: TooltipUio?, val tooltips: BasicTooltipUio?,
val roll: RollAction.Uio?, val roll: RollAction.Uio?,
) )
@ -58,7 +58,7 @@ fun LevelUpSkill(
else -> MaterialTheme.lwa.colorScheme.base.primary else -> MaterialTheme.lwa.colorScheme.base.primary
} }
) )
TooltipLayout( BasicTooltipLayout(
modifier = Modifier modifier = Modifier
.let { .let {
when (skill.roll) { when (skill.roll) {

View file

@ -21,8 +21,8 @@ import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import com.pixelized.desktop.lwa.ui.composable.tooltip.TooltipLayout import com.pixelized.desktop.lwa.ui.composable.tooltip.BasicTooltipLayout
import com.pixelized.desktop.lwa.ui.composable.tooltip.TooltipUio import com.pixelized.desktop.lwa.ui.composable.tooltip.BasicTooltipUio
import com.pixelized.desktop.lwa.ui.theme.lwa import com.pixelized.desktop.lwa.ui.theme.lwa
import lwacharactersheet.composeapp.generated.resources.Res import lwacharactersheet.composeapp.generated.resources.Res
import lwacharactersheet.composeapp.generated.resources.generic__arrow import lwacharactersheet.composeapp.generated.resources.generic__arrow
@ -36,7 +36,7 @@ data class LevelUpSubCharacteristicUio(
val icon: DrawableResource, val icon: DrawableResource,
val base: String, val base: String,
val levelUp: String, val levelUp: String,
val tooltip: TooltipUio, val tooltip: BasicTooltipUio,
) )
@OptIn(ExperimentalFoundationApi::class) @OptIn(ExperimentalFoundationApi::class)
@ -45,7 +45,7 @@ fun LevelUpSubCharacteristic(
modifier: Modifier = Modifier, modifier: Modifier = Modifier,
characteristic: LevelUpSubCharacteristicUio?, characteristic: LevelUpSubCharacteristicUio?,
) { ) {
TooltipLayout( BasicTooltipLayout(
modifier = modifier, modifier = modifier,
tooltip = characteristic?.tooltip, tooltip = characteristic?.tooltip,
) { ) {