diff --git a/composeApp/src/commonMain/composeResources/drawable/ic_share_24dp.xml b/composeApp/src/commonMain/composeResources/drawable/ic_share_24dp.xml new file mode 100644 index 0000000..09416bc --- /dev/null +++ b/composeApp/src/commonMain/composeResources/drawable/ic_share_24dp.xml @@ -0,0 +1,9 @@ + + + diff --git a/composeApp/src/commonMain/composeResources/drawable/ic_share_off_24dp.xml b/composeApp/src/commonMain/composeResources/drawable/ic_share_off_24dp.xml new file mode 100644 index 0000000..b3be700 --- /dev/null +++ b/composeApp/src/commonMain/composeResources/drawable/ic_share_off_24dp.xml @@ -0,0 +1,9 @@ + + + diff --git a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/overlay/roll/RollPage.kt b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/overlay/roll/RollPage.kt index a9353a8..45bcfdd 100644 --- a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/overlay/roll/RollPage.kt +++ b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/overlay/roll/RollPage.kt @@ -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, diff --git a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/overlay/roll/RollViewModel.kt b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/overlay/roll/RollViewModel.kt index e3fb5a7..00398c5 100644 --- a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/overlay/roll/RollViewModel.kt +++ b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/overlay/roll/RollViewModel.kt @@ -64,6 +64,9 @@ class RollViewModel( private val _rollDifficulty = mutableStateOf(null) val rollDifficulty: State get() = _rollDifficulty + private val _shareResult = mutableStateOf(true) + val shareResult: State = _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