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.ExposedDropdownMenuBox
import androidx.compose.material.Icon
import androidx.compose.material.IconButton
import androidx.compose.material.MaterialTheme
import androidx.compose.material.Text
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.unit.dp
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 lwacharactersheet.composeapp.generated.resources.Res
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_easy__label
import lwacharactersheet.composeapp.generated.resources.roll_page__dc_hard__label
@ -93,12 +97,12 @@ fun RollPage(
indication = null,
onClick = onDismissRequest,
)
.padding(all = 32.dp)
.padding(all = 16.dp)
.then(other = modifier),
) {
viewModel.rollTitle.value?.let {
Column(
modifier = Modifier.fillMaxWidth(),
modifier = Modifier.fillMaxWidth().padding(top = 16.dp),
horizontalAlignment = Alignment.CenterHorizontally,
) {
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(
modifier = Modifier.matchParentSize(),
horizontalAlignment = Alignment.CenterHorizontally,
@ -199,6 +217,7 @@ fun RollPage(
Box(
modifier = Modifier
.align(Alignment.BottomCenter)
.padding(bottom = 16.dp)
.clickable(
interactionSource = remember { DisableInteractionSource() },
indication = null,

View file

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