Add a disable share roll result feature

This commit is contained in:
Thomas Andres Gomez 2025-03-20 14:56:57 +01:00
parent 07ed4ce579
commit e1fdb10793
4 changed files with 57 additions and 9 deletions

View file

@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="960"
android:viewportHeight="960">
<path
android:pathData="M680,880q-50,0 -85,-35t-35,-85q0,-6 3,-28L282,568q-16,15 -37,23.5t-45,8.5q-50,0 -85,-35t-35,-85q0,-50 35,-85t85,-35q24,0 45,8.5t37,23.5l281,-164q-2,-7 -2.5,-13.5T560,200q0,-50 35,-85t85,-35q50,0 85,35t35,85q0,50 -35,85t-85,35q-24,0 -45,-8.5T598,288L317,452q2,7 2.5,13.5t0.5,14.5q0,8 -0.5,14.5T317,508l281,164q16,-15 37,-23.5t45,-8.5q50,0 85,35t35,85q0,50 -35,85t-85,35ZM680,800q17,0 28.5,-11.5T720,760q0,-17 -11.5,-28.5T680,720q-17,0 -28.5,11.5T640,760q0,17 11.5,28.5T680,800ZM200,520q17,0 28.5,-11.5T240,480q0,-17 -11.5,-28.5T200,440q-17,0 -28.5,11.5T160,480q0,17 11.5,28.5T200,520ZM680,240q17,0 28.5,-11.5T720,200q0,-17 -11.5,-28.5T680,160q-17,0 -28.5,11.5T640,200q0,17 11.5,28.5T680,240ZM680,760ZM200,480ZM680,200Z"
android:fillColor="#5f6368"/>
</vector>

View file

@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="960"
android:viewportHeight="960">
<path
android:pathData="M680,800q17,0 28.5,-11.5T720,760q0,-17 -11.5,-28.5T680,720q-17,0 -28.5,11.5T640,760q0,17 11.5,28.5T680,800ZM680,240q17,0 28.5,-11.5T720,200q0,-17 -11.5,-28.5T680,160q-17,0 -28.5,11.5T640,200q0,17 11.5,28.5T680,240ZM80,490v-10q0,-50 35,-85t85,-35q24,0 45,8.5t37,23.5l281,-164q-2,-7 -2.5,-13.5T560,200q0,-50 35,-85t85,-35q50,0 85,35t35,85q0,50 -35,85t-85,35q-24,0 -45,-8.5T598,288L318,451q-19,-5 -38.5,-8t-39.5,-3q-45,0 -85.5,13T80,490ZM680,880q-50,0 -85,-35t-35,-85q0,-6 3,-28l-43,-26q-2,-24 -7,-46.5T499,615l99,57q16,-15 37,-23.5t45,-8.5q50,0 85,35t35,85q0,50 -35,85t-85,35ZM240,920q-83,0 -141.5,-58.5T40,720q0,-83 58.5,-141.5T240,520q83,0 141.5,58.5T440,720q0,83 -58.5,141.5T240,920ZM240,748 L310,819 339,791 268,720 339,649 311,621 240,692 169,621 141,649 212,720 141,791 169,819 240,748ZM680,760ZM680,200Z"
android:fillColor="#5f6368"/>
</vector>

View file

@ -27,6 +27,7 @@ import androidx.compose.material.DropdownMenuItem
import androidx.compose.material.ExperimentalMaterialApi import androidx.compose.material.ExperimentalMaterialApi
import androidx.compose.material.ExposedDropdownMenuBox import androidx.compose.material.ExposedDropdownMenuBox
import androidx.compose.material.Icon import androidx.compose.material.Icon
import androidx.compose.material.IconButton
import androidx.compose.material.MaterialTheme import androidx.compose.material.MaterialTheme
import androidx.compose.material.Text import androidx.compose.material.Text
import androidx.compose.material.icons.Icons import androidx.compose.material.icons.Icons
@ -44,9 +45,12 @@ 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.overlay.roll.DifficultyUio.Difficulty import com.pixelized.desktop.lwa.ui.overlay.roll.DifficultyUio.Difficulty
import com.pixelized.desktop.lwa.ui.theme.lwa
import com.pixelized.desktop.lwa.utils.DisableInteractionSource import com.pixelized.desktop.lwa.utils.DisableInteractionSource
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
import lwacharactersheet.composeapp.generated.resources.ic_share_24dp
import lwacharactersheet.composeapp.generated.resources.ic_share_off_24dp
import lwacharactersheet.composeapp.generated.resources.roll_page__dc__label import lwacharactersheet.composeapp.generated.resources.roll_page__dc__label
import lwacharactersheet.composeapp.generated.resources.roll_page__dc_easy__label import lwacharactersheet.composeapp.generated.resources.roll_page__dc_easy__label
import lwacharactersheet.composeapp.generated.resources.roll_page__dc_hard__label import lwacharactersheet.composeapp.generated.resources.roll_page__dc_hard__label
@ -93,12 +97,12 @@ fun RollPage(
indication = null, indication = null,
onClick = onDismissRequest, onClick = onDismissRequest,
) )
.padding(all = 32.dp) .padding(all = 16.dp)
.then(other = modifier), .then(other = modifier),
) { ) {
viewModel.rollTitle.value?.let { viewModel.rollTitle.value?.let {
Column( Column(
modifier = Modifier.fillMaxWidth(), modifier = Modifier.fillMaxWidth().padding(top = 16.dp),
horizontalAlignment = Alignment.CenterHorizontally, horizontalAlignment = Alignment.CenterHorizontally,
) { ) {
Text( Text(
@ -124,6 +128,20 @@ fun RollPage(
} }
} }
IconButton(
modifier = Modifier.align(alignment = Alignment.TopEnd),
onClick = { viewModel.toggleShareResult() },
) {
Icon(
painter = when (viewModel.shareResult.value) {
true -> painterResource(Res.drawable.ic_share_24dp)
else -> painterResource(Res.drawable.ic_share_off_24dp)
},
tint = MaterialTheme.lwa.colorScheme.base.primary,
contentDescription = null
)
}
Column( Column(
modifier = Modifier.matchParentSize(), modifier = Modifier.matchParentSize(),
horizontalAlignment = Alignment.CenterHorizontally, horizontalAlignment = Alignment.CenterHorizontally,
@ -199,6 +217,7 @@ fun RollPage(
Box( Box(
modifier = Modifier modifier = Modifier
.align(Alignment.BottomCenter) .align(Alignment.BottomCenter)
.padding(bottom = 16.dp)
.clickable( .clickable(
interactionSource = remember { DisableInteractionSource() }, interactionSource = remember { DisableInteractionSource() },
indication = null, indication = null,

View file

@ -64,6 +64,9 @@ class RollViewModel(
private val _rollDifficulty = mutableStateOf<DifficultyUio?>(null) private val _rollDifficulty = mutableStateOf<DifficultyUio?>(null)
val rollDifficulty: State<DifficultyUio?> get() = _rollDifficulty val rollDifficulty: State<DifficultyUio?> get() = _rollDifficulty
private val _shareResult = mutableStateOf(true)
val shareResult: State<Boolean> = _shareResult
suspend fun cleanRoll() { suspend fun cleanRoll() {
alteredCharacterSheet = null alteredCharacterSheet = null
rollAction = null rollAction = null
@ -73,6 +76,7 @@ class RollViewModel(
rollRotation.snapTo(0f) rollRotation.snapTo(0f)
rollScale.snapTo(1f) rollScale.snapTo(1f)
_shareResult.value = true
_cancellable.value = true _cancellable.value = true
_rollTitle.value = null _rollTitle.value = null
_rollResult.value = null _rollResult.value = null
@ -111,6 +115,7 @@ class RollViewModel(
skillStepUseCase.computeSkillStep(skill = it) skillStepUseCase.computeSkillStep(skill = it)
} }
_shareResult.value = true
_cancellable.value = true _cancellable.value = true
_rollResult.value = null _rollResult.value = null
_rollTitle.value = RollTitleUio( _rollTitle.value = RollTitleUio(
@ -192,19 +197,25 @@ class RollViewModel(
value = roll, value = roll,
) )
launch { if (shareResult.value) {
shareRollResult( launch {
rollTitle = rollTitle, shareRollResult(
roll = roll, rollTitle = rollTitle,
rollStep = rollStep, roll = roll,
success = resultLabel rollStep = rollStep,
) success = resultLabel
)
}
} }
} }
} }
} }
} }
fun toggleShareResult() {
_shareResult.value = _shareResult.value.not()
}
fun toggleDifficulty() { fun toggleDifficulty() {
_rollDifficulty.value = _rollDifficulty.value?.copy( _rollDifficulty.value = _rollDifficulty.value?.copy(
open = _rollDifficulty.value?.open?.not() ?: false open = _rollDifficulty.value?.open?.not() ?: false