diff --git a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/App.kt b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/App.kt index 3287d4d..135358e 100644 --- a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/App.kt +++ b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/App.kt @@ -29,22 +29,22 @@ import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.dp import androidx.compose.ui.window.ApplicationScope import androidx.compose.ui.window.Window -import com.pixelized.desktop.lwa.composable.key.KeyEventHandler -import com.pixelized.desktop.lwa.composable.key.LocalKeyEventHandlers -import com.pixelized.desktop.lwa.navigation.screen.destination.CharacterSheetDestination -import com.pixelized.desktop.lwa.navigation.screen.destination.CharacterSheetEditDestination -import com.pixelized.desktop.lwa.navigation.window.WindowController -import com.pixelized.desktop.lwa.navigation.window.WindowsNavHost -import com.pixelized.desktop.lwa.navigation.window.destination.CharacterSheetEditWindow -import com.pixelized.desktop.lwa.navigation.window.destination.CharacterSheetWindow -import com.pixelized.desktop.lwa.navigation.window.destination.RollHistoryWindow -import com.pixelized.desktop.lwa.navigation.window.rememberMaxWindowHeight +import com.pixelized.desktop.lwa.ui.composable.key.KeyEventHandler +import com.pixelized.desktop.lwa.ui.composable.key.LocalKeyEventHandlers +import com.pixelized.desktop.lwa.ui.navigation.screen.destination.CharacterSheetDestination +import com.pixelized.desktop.lwa.ui.navigation.screen.destination.CharacterSheetEditDestination +import com.pixelized.desktop.lwa.ui.navigation.window.WindowController +import com.pixelized.desktop.lwa.ui.navigation.window.WindowsNavHost +import com.pixelized.desktop.lwa.ui.navigation.window.destination.CharacterSheetEditWindow +import com.pixelized.desktop.lwa.ui.navigation.window.destination.CharacterSheetWindow +import com.pixelized.desktop.lwa.ui.navigation.window.destination.RollHistoryWindow +import com.pixelized.desktop.lwa.ui.navigation.window.rememberMaxWindowHeight import com.pixelized.desktop.lwa.repository.network.NetworkRepository import com.pixelized.desktop.lwa.repository.network.NetworkRepository.Status -import com.pixelized.desktop.lwa.screen.campaign.CampaignScreen -import com.pixelized.desktop.lwa.screen.characterSheet.CharacterSheetMainNavHost -import com.pixelized.desktop.lwa.screen.rollhistory.RollHistoryPage -import com.pixelized.desktop.lwa.theme.LwaTheme +import com.pixelized.desktop.lwa.ui.screen.campaign.player.CampaignScreen +import com.pixelized.desktop.lwa.ui.screen.characterSheet.CharacterSheetMainNavHost +import com.pixelized.desktop.lwa.ui.screen.rollhistory.RollHistoryPage +import com.pixelized.desktop.lwa.ui.theme.LwaTheme import kotlinx.coroutines.launch import lwacharactersheet.composeapp.generated.resources.Res import lwacharactersheet.composeapp.generated.resources.network__connect__message diff --git a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/Module.kt b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/Module.kt index 4ef1473..6d399e6 100644 --- a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/Module.kt +++ b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/Module.kt @@ -16,22 +16,22 @@ import com.pixelized.desktop.lwa.repository.settings.SettingsRepository import com.pixelized.desktop.lwa.repository.alteration.AlterationStore import com.pixelized.desktop.lwa.repository.alteration.AlterationRepository import com.pixelized.desktop.lwa.repository.settings.SettingsStore -import com.pixelized.desktop.lwa.screen.characterSheet.detail.CharacterSheetFactory -import com.pixelized.desktop.lwa.screen.characterSheet.detail.CharacterSheetViewModel -import com.pixelized.desktop.lwa.screen.characterSheet.edit.CharacterSheetEditFactory -import com.pixelized.desktop.lwa.screen.characterSheet.edit.CharacterSheetEditViewModel -import com.pixelized.desktop.lwa.screen.characterSheet.edit.common.SkillFieldFactory -import com.pixelized.desktop.lwa.screen.main.MainPageViewModel -import com.pixelized.desktop.lwa.screen.network.NetworkFactory -import com.pixelized.desktop.lwa.screen.network.NetworkViewModel -import com.pixelized.desktop.lwa.screen.roll.RollViewModel -import com.pixelized.desktop.lwa.screen.rollhistory.RollHistoryViewModel +import com.pixelized.desktop.lwa.ui.screen.characterSheet.detail.CharacterSheetFactory +import com.pixelized.desktop.lwa.ui.screen.characterSheet.detail.CharacterSheetViewModel +import com.pixelized.desktop.lwa.ui.screen.characterSheet.edit.CharacterSheetEditFactory +import com.pixelized.desktop.lwa.ui.screen.characterSheet.edit.CharacterSheetEditViewModel +import com.pixelized.desktop.lwa.ui.screen.characterSheet.edit.common.SkillFieldFactory +import com.pixelized.desktop.lwa.ui.screen.main.MainPageViewModel +import com.pixelized.desktop.lwa.ui.screen.network.NetworkFactory +import com.pixelized.desktop.lwa.ui.screen.network.NetworkViewModel +import com.pixelized.desktop.lwa.ui.screen.roll.RollViewModel +import com.pixelized.desktop.lwa.ui.screen.rollhistory.RollHistoryViewModel import com.pixelized.desktop.lwa.parser.dice.DiceParser import com.pixelized.desktop.lwa.parser.word.WordParser import com.pixelized.desktop.lwa.parser.expression.ExpressionParser -import com.pixelized.desktop.lwa.screen.campaign.player.detail.CharacterDetailViewModel -import com.pixelized.desktop.lwa.screen.campaign.player.detail.CharacterDiminishedViewModel -import com.pixelized.desktop.lwa.screen.campaign.player.ribbon.PlayerRibbonViewModel +import com.pixelized.desktop.lwa.ui.screen.campaign.player.detail.CharacterDetailViewModel +import com.pixelized.desktop.lwa.ui.screen.campaign.player.detail.CharacterDiminishedViewModel +import com.pixelized.desktop.lwa.ui.screen.campaign.player.ribbon.PlayerRibbonViewModel import kotlinx.serialization.json.Json import org.koin.core.module.dsl.factoryOf import org.koin.core.module.dsl.singleOf diff --git a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/repository/characterSheet/CharacterSheetStore.kt b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/repository/characterSheet/CharacterSheetStore.kt index 2b7f0b3..dd57e28 100644 --- a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/repository/characterSheet/CharacterSheetStore.kt +++ b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/repository/characterSheet/CharacterSheetStore.kt @@ -12,6 +12,7 @@ import kotlinx.coroutines.launch import kotlinx.serialization.encodeToString import kotlinx.serialization.json.Json import java.io.File +import java.text.Collator class CharacterSheetStore( private val factory: CharacterSheetJsonFactory, @@ -62,9 +63,7 @@ class CharacterSheetStore( data.add(sheet) } } - .sortedBy { - it.name - } + .sortedWith(compareBy(Collator.getInstance()) { it.name }) } fun delete(id: String): Boolean { @@ -104,9 +103,7 @@ class CharacterSheetStore( throw JsonConversionException(root = exception) } } - ?.sortedBy { - it.name - } + ?.sortedWith(compareBy(Collator.getInstance()) { it.name }) ?: emptyList() } diff --git a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/composable/blur/BlurContent.kt b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/composable/blur/BlurContent.kt similarity index 94% rename from composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/composable/blur/BlurContent.kt rename to composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/composable/blur/BlurContent.kt index 19a4c08..618781f 100644 --- a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/composable/blur/BlurContent.kt +++ b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/composable/blur/BlurContent.kt @@ -1,4 +1,4 @@ -package com.pixelized.desktop.lwa.composable.blur +package com.pixelized.desktop.lwa.ui.composable.blur import androidx.compose.animation.animateColor import androidx.compose.animation.core.animateDp @@ -16,7 +16,7 @@ import androidx.compose.ui.draw.drawWithContent import androidx.compose.ui.graphics.Color import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.dp -import com.pixelized.desktop.lwa.theme.color.LwaColorPalette +import com.pixelized.desktop.lwa.ui.theme.color.LwaColorPalette @Stable class BlurContentController( diff --git a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/composable/decoratedBox/DecoratedBox.kt b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/composable/decoratedBox/DecoratedBox.kt similarity index 93% rename from composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/composable/decoratedBox/DecoratedBox.kt rename to composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/composable/decoratedBox/DecoratedBox.kt index 0867d42..c965f8b 100644 --- a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/composable/decoratedBox/DecoratedBox.kt +++ b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/composable/decoratedBox/DecoratedBox.kt @@ -1,49 +1,49 @@ -package com.pixelized.desktop.lwa.composable.decoratedBox - -import androidx.compose.desktop.ui.tooling.preview.Preview -import androidx.compose.foundation.border -import androidx.compose.foundation.layout.Box -import androidx.compose.foundation.layout.BoxScope -import androidx.compose.foundation.layout.height -import androidx.compose.foundation.layout.padding -import androidx.compose.foundation.layout.width -import androidx.compose.foundation.shape.RoundedCornerShape -import androidx.compose.material.Text -import androidx.compose.runtime.Composable -import androidx.compose.ui.Alignment -import androidx.compose.ui.Modifier -import androidx.compose.ui.graphics.Color -import androidx.compose.ui.graphics.RectangleShape -import androidx.compose.ui.unit.dp -import com.pixelized.desktop.lwa.utils.preview.ContentPreview - -@Composable -fun DecoratedBox( - modifier: Modifier = Modifier, - border: Color = Color(0xFF909090), - content: @Composable BoxScope.() -> Unit, -) { - Box( - modifier = Modifier - .border(width = 1.dp, color = border, shape = RoundedCornerShape(size = 16.dp)) - .padding(all = 2.dp) - .border(width = 1.dp, color = border, shape = RectangleShape) - .then(other = modifier), - content = content, - ) -} - -@Composable -@Preview -private fun DecoratedBoxPreview() { - ContentPreview { - DecoratedBox { - Box( - modifier = Modifier.width(width = 128.dp).height(64.dp), - contentAlignment = Alignment.Center, - ) { - Text("Test") - } - } - } +package com.pixelized.desktop.lwa.ui.composable.decoratedBox + +import androidx.compose.desktop.ui.tooling.preview.Preview +import androidx.compose.foundation.border +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.BoxScope +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.width +import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.material.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.graphics.RectangleShape +import androidx.compose.ui.unit.dp +import com.pixelized.desktop.lwa.utils.preview.ContentPreview + +@Composable +fun DecoratedBox( + modifier: Modifier = Modifier, + border: Color = Color(0xFF909090), + content: @Composable BoxScope.() -> Unit, +) { + Box( + modifier = Modifier + .border(width = 1.dp, color = border, shape = RoundedCornerShape(size = 16.dp)) + .padding(all = 2.dp) + .border(width = 1.dp, color = border, shape = RectangleShape) + .then(other = modifier), + content = content, + ) +} + +@Composable +@Preview +private fun DecoratedBoxPreview() { + ContentPreview { + DecoratedBox { + Box( + modifier = Modifier.width(width = 128.dp).height(64.dp), + contentAlignment = Alignment.Center, + ) { + Text("Test") + } + } + } } \ No newline at end of file diff --git a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/composable/error/snack/ErrorSnackUio.kt b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/composable/error/ErrorSnackUio.kt similarity index 94% rename from composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/composable/error/snack/ErrorSnackUio.kt rename to composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/composable/error/ErrorSnackUio.kt index b7f756f..857e1da 100644 --- a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/composable/error/snack/ErrorSnackUio.kt +++ b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/composable/error/ErrorSnackUio.kt @@ -1,4 +1,4 @@ -package com.pixelized.desktop.lwa.composable.error.snack +package com.pixelized.desktop.lwa.ui.composable.error import androidx.compose.material.SnackbarDuration import androidx.compose.material.SnackbarHostState diff --git a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/composable/key/KeyHandler.kt b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/composable/key/KeyHandler.kt similarity index 95% rename from composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/composable/key/KeyHandler.kt rename to composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/composable/key/KeyHandler.kt index e154119..4f6e784 100644 --- a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/composable/key/KeyHandler.kt +++ b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/composable/key/KeyHandler.kt @@ -1,4 +1,4 @@ -package com.pixelized.desktop.lwa.composable.key +package com.pixelized.desktop.lwa.ui.composable.key import androidx.compose.runtime.Composable import androidx.compose.runtime.DisposableEffect diff --git a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/composable/tooltip/Tooltip.kt b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/composable/tooltip/Tooltip.kt similarity index 97% rename from composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/composable/tooltip/Tooltip.kt rename to composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/composable/tooltip/Tooltip.kt index 80521ef..bfe6ee5 100644 --- a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/composable/tooltip/Tooltip.kt +++ b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/composable/tooltip/Tooltip.kt @@ -1,4 +1,4 @@ -package com.pixelized.desktop.lwa.composable.tooltip +package com.pixelized.desktop.lwa.ui.composable.tooltip import androidx.compose.foundation.ExperimentalFoundationApi import androidx.compose.foundation.TooltipArea diff --git a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/navigation/screen/MainNavHost.kt b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/navigation/screen/MainNavHost.kt similarity index 73% rename from composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/navigation/screen/MainNavHost.kt rename to composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/navigation/screen/MainNavHost.kt index a0f2ec7..24ea220 100644 --- a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/navigation/screen/MainNavHost.kt +++ b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/navigation/screen/MainNavHost.kt @@ -1,4 +1,4 @@ -package com.pixelized.desktop.lwa.navigation.screen +package com.pixelized.desktop.lwa.ui.navigation.screen import androidx.compose.runtime.Composable import androidx.compose.runtime.CompositionLocalProvider @@ -6,9 +6,9 @@ import androidx.compose.runtime.compositionLocalOf import androidx.navigation.NavHostController import androidx.navigation.compose.NavHost import androidx.navigation.compose.rememberNavController -import com.pixelized.desktop.lwa.navigation.screen.destination.MainDestination -import com.pixelized.desktop.lwa.navigation.screen.destination.composableMainPage -import com.pixelized.desktop.lwa.navigation.screen.destination.composableNetworkPage +import com.pixelized.desktop.lwa.ui.navigation.screen.destination.MainDestination +import com.pixelized.desktop.lwa.ui.navigation.screen.destination.composableMainPage +import com.pixelized.desktop.lwa.ui.navigation.screen.destination.composableNetworkPage val LocalScreenController = compositionLocalOf { error("MainNavHost controller is not yet ready") diff --git a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/navigation/screen/destination/CharacterSheetDestination.kt b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/navigation/screen/destination/CharacterSheetDestination.kt similarity index 89% rename from composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/navigation/screen/destination/CharacterSheetDestination.kt rename to composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/navigation/screen/destination/CharacterSheetDestination.kt index 682f94a..795dbb1 100644 --- a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/navigation/screen/destination/CharacterSheetDestination.kt +++ b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/navigation/screen/destination/CharacterSheetDestination.kt @@ -1,11 +1,11 @@ -package com.pixelized.desktop.lwa.navigation.screen.destination +package com.pixelized.desktop.lwa.ui.navigation.screen.destination import androidx.lifecycle.SavedStateHandle import androidx.navigation.NavGraphBuilder import androidx.navigation.NavHostController import androidx.navigation.compose.composable import androidx.navigation.navArgument -import com.pixelized.desktop.lwa.screen.characterSheet.detail.CharacterSheetPage +import com.pixelized.desktop.lwa.ui.screen.characterSheet.detail.CharacterSheetPage import com.pixelized.desktop.lwa.utils.extention.ARG object CharacterSheetDestination { diff --git a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/navigation/screen/destination/CharacterSheetEditDestination.kt b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/navigation/screen/destination/CharacterSheetEditDestination.kt similarity index 89% rename from composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/navigation/screen/destination/CharacterSheetEditDestination.kt rename to composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/navigation/screen/destination/CharacterSheetEditDestination.kt index 1c7399b..51601ff 100644 --- a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/navigation/screen/destination/CharacterSheetEditDestination.kt +++ b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/navigation/screen/destination/CharacterSheetEditDestination.kt @@ -1,4 +1,4 @@ -package com.pixelized.desktop.lwa.navigation.screen.destination +package com.pixelized.desktop.lwa.ui.navigation.screen.destination import androidx.lifecycle.SavedStateHandle import androidx.navigation.NavGraphBuilder @@ -6,7 +6,7 @@ import androidx.navigation.NavHostController import androidx.navigation.NavType import androidx.navigation.compose.composable import androidx.navigation.navArgument -import com.pixelized.desktop.lwa.screen.characterSheet.edit.CharacterSheetEditPage +import com.pixelized.desktop.lwa.ui.screen.characterSheet.edit.CharacterSheetEditPage import com.pixelized.desktop.lwa.utils.extention.ARG object CharacterSheetEditDestination { diff --git a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/navigation/screen/destination/MainDestination.kt b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/navigation/screen/destination/MainDestination.kt similarity index 80% rename from composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/navigation/screen/destination/MainDestination.kt rename to composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/navigation/screen/destination/MainDestination.kt index 12a7cf6..67f194f 100644 --- a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/navigation/screen/destination/MainDestination.kt +++ b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/navigation/screen/destination/MainDestination.kt @@ -1,9 +1,9 @@ -package com.pixelized.desktop.lwa.navigation.screen.destination +package com.pixelized.desktop.lwa.ui.navigation.screen.destination import androidx.navigation.NavGraphBuilder import androidx.navigation.NavHostController import androidx.navigation.compose.composable -import com.pixelized.desktop.lwa.screen.main.MainPage +import com.pixelized.desktop.lwa.ui.screen.main.MainPage object MainDestination { private const val ROUTE = "main" diff --git a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/navigation/screen/destination/NetworkDestination.kt b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/navigation/screen/destination/NetworkDestination.kt similarity index 80% rename from composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/navigation/screen/destination/NetworkDestination.kt rename to composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/navigation/screen/destination/NetworkDestination.kt index e0395f0..82a8af7 100644 --- a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/navigation/screen/destination/NetworkDestination.kt +++ b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/navigation/screen/destination/NetworkDestination.kt @@ -1,9 +1,9 @@ -package com.pixelized.desktop.lwa.navigation.screen.destination +package com.pixelized.desktop.lwa.ui.navigation.screen.destination import androidx.navigation.NavGraphBuilder import androidx.navigation.NavHostController import androidx.navigation.compose.composable -import com.pixelized.desktop.lwa.screen.network.NetworkPage +import com.pixelized.desktop.lwa.ui.screen.network.NetworkPage object NetworkDestination { private const val ROUTE = "network" diff --git a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/navigation/window/WindowNavHost.kt b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/navigation/window/WindowNavHost.kt similarity index 91% rename from composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/navigation/window/WindowNavHost.kt rename to composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/navigation/window/WindowNavHost.kt index a4ae0b7..206ac66 100644 --- a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/navigation/window/WindowNavHost.kt +++ b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/navigation/window/WindowNavHost.kt @@ -1,4 +1,4 @@ -package com.pixelized.desktop.lwa.navigation.window +package com.pixelized.desktop.lwa.ui.navigation.window import androidx.compose.runtime.Composable import androidx.compose.runtime.CompositionLocalProvider @@ -15,9 +15,9 @@ import androidx.compose.ui.unit.dp import androidx.compose.ui.window.Window import androidx.compose.ui.window.WindowState import androidx.compose.ui.window.rememberWindowState -import com.pixelized.desktop.lwa.composable.key.KeyEventHandler -import com.pixelized.desktop.lwa.composable.key.LocalKeyEventHandlers -import com.pixelized.desktop.lwa.navigation.window.destination.Window +import com.pixelized.desktop.lwa.ui.composable.key.KeyEventHandler +import com.pixelized.desktop.lwa.ui.composable.key.LocalKeyEventHandlers +import com.pixelized.desktop.lwa.ui.navigation.window.destination.Window import java.awt.Toolkit val LocalWindow = compositionLocalOf { diff --git a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/navigation/window/destination/CharacterSheetEditWindow.kt b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/navigation/window/destination/CharacterSheetEditWindow.kt similarity index 81% rename from composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/navigation/window/destination/CharacterSheetEditWindow.kt rename to composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/navigation/window/destination/CharacterSheetEditWindow.kt index 8cb9d64..d6e3336 100644 --- a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/navigation/window/destination/CharacterSheetEditWindow.kt +++ b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/navigation/window/destination/CharacterSheetEditWindow.kt @@ -1,9 +1,9 @@ -package com.pixelized.desktop.lwa.navigation.window.destination +package com.pixelized.desktop.lwa.ui.navigation.window.destination import androidx.compose.runtime.Stable import androidx.compose.ui.unit.DpSize import androidx.compose.ui.unit.dp -import com.pixelized.desktop.lwa.navigation.window.WindowController +import com.pixelized.desktop.lwa.ui.navigation.window.WindowController @Stable class CharacterSheetEditWindow( diff --git a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/navigation/window/destination/CharacterSheetWindow.kt b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/navigation/window/destination/CharacterSheetWindow.kt similarity index 81% rename from composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/navigation/window/destination/CharacterSheetWindow.kt rename to composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/navigation/window/destination/CharacterSheetWindow.kt index 697577c..fa17c06 100644 --- a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/navigation/window/destination/CharacterSheetWindow.kt +++ b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/navigation/window/destination/CharacterSheetWindow.kt @@ -1,9 +1,9 @@ -package com.pixelized.desktop.lwa.navigation.window.destination +package com.pixelized.desktop.lwa.ui.navigation.window.destination import androidx.compose.runtime.Stable import androidx.compose.ui.unit.DpSize import androidx.compose.ui.unit.dp -import com.pixelized.desktop.lwa.navigation.window.WindowController +import com.pixelized.desktop.lwa.ui.navigation.window.WindowController @Stable class CharacterSheetWindow( diff --git a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/navigation/window/destination/RollHistoryWindow.kt b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/navigation/window/destination/RollHistoryWindow.kt similarity index 78% rename from composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/navigation/window/destination/RollHistoryWindow.kt rename to composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/navigation/window/destination/RollHistoryWindow.kt index 050e6b5..bbd9cc1 100644 --- a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/navigation/window/destination/RollHistoryWindow.kt +++ b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/navigation/window/destination/RollHistoryWindow.kt @@ -1,9 +1,9 @@ -package com.pixelized.desktop.lwa.navigation.window.destination +package com.pixelized.desktop.lwa.ui.navigation.window.destination import androidx.compose.runtime.Stable import androidx.compose.ui.unit.DpSize import androidx.compose.ui.unit.dp -import com.pixelized.desktop.lwa.navigation.window.WindowController +import com.pixelized.desktop.lwa.ui.navigation.window.WindowController @Stable class RollHistoryWindow( diff --git a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/navigation/window/destination/Window.kt b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/navigation/window/destination/Window.kt similarity index 77% rename from composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/navigation/window/destination/Window.kt rename to composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/navigation/window/destination/Window.kt index 533d681..2a85dad 100644 --- a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/navigation/window/destination/Window.kt +++ b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/navigation/window/destination/Window.kt @@ -1,4 +1,4 @@ -package com.pixelized.desktop.lwa.navigation.window.destination +package com.pixelized.desktop.lwa.ui.navigation.window.destination import androidx.compose.runtime.Stable import androidx.compose.ui.unit.DpSize diff --git a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/screen/campaign/CampaignScreen.kt b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/campaign/player/CampaignScreen.kt similarity index 90% rename from composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/screen/campaign/CampaignScreen.kt rename to composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/campaign/player/CampaignScreen.kt index 68bb10b..c735ea2 100644 --- a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/screen/campaign/CampaignScreen.kt +++ b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/campaign/player/CampaignScreen.kt @@ -1,6 +1,5 @@ -package com.pixelized.desktop.lwa.screen.campaign +package com.pixelized.desktop.lwa.ui.screen.campaign.player -import androidx.compose.desktop.ui.tooling.preview.Preview import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.fillMaxHeight @@ -25,12 +24,12 @@ import androidx.compose.ui.unit.Density import androidx.compose.ui.unit.DpSize import androidx.compose.ui.unit.IntSize import androidx.compose.ui.unit.dp -import com.pixelized.desktop.lwa.composable.key.KeyHandler -import com.pixelized.desktop.lwa.screen.campaign.player.detail.CharacterDetail -import com.pixelized.desktop.lwa.screen.campaign.player.detail.CharacterDetailViewModel -import com.pixelized.desktop.lwa.screen.campaign.player.detail.CharacterDiminishedViewModel -import com.pixelized.desktop.lwa.screen.campaign.player.ribbon.PlayerRibbon -import com.pixelized.desktop.lwa.screen.characterSheet.detail.dialog.DiminishedStatDialog +import com.pixelized.desktop.lwa.ui.composable.key.KeyHandler +import com.pixelized.desktop.lwa.ui.screen.campaign.player.detail.CharacterDetail +import com.pixelized.desktop.lwa.ui.screen.campaign.player.detail.CharacterDetailViewModel +import com.pixelized.desktop.lwa.ui.screen.campaign.player.detail.CharacterDiminishedViewModel +import com.pixelized.desktop.lwa.ui.screen.campaign.player.ribbon.PlayerRibbon +import com.pixelized.desktop.lwa.ui.screen.characterSheet.detail.dialog.DiminishedStatDialog import org.koin.compose.viewmodel.koinViewModel @Composable diff --git a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/screen/campaign/player/detail/CharacterDetail.kt b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/campaign/player/detail/CharacterDetail.kt similarity index 97% rename from composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/screen/campaign/player/detail/CharacterDetail.kt rename to composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/campaign/player/detail/CharacterDetail.kt index f2de025..10ed9cb 100644 --- a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/screen/campaign/player/detail/CharacterDetail.kt +++ b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/campaign/player/detail/CharacterDetail.kt @@ -1,4 +1,4 @@ -package com.pixelized.desktop.lwa.screen.campaign.player.detail +package com.pixelized.desktop.lwa.ui.screen.campaign.player.detail import androidx.compose.animation.AnimatedContent import androidx.compose.animation.fadeIn @@ -33,8 +33,7 @@ import androidx.compose.ui.draw.clip import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp -import com.pixelized.desktop.lwa.screen.characterSheet.detail.dialog.DiminishedStatDialog -import com.pixelized.desktop.lwa.theme.lwa +import com.pixelized.desktop.lwa.ui.theme.lwa import kotlinx.coroutines.launch import lwacharactersheet.composeapp.generated.resources.Res import lwacharactersheet.composeapp.generated.resources.ic_close_24dp diff --git a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/screen/campaign/player/detail/CharacterDetailViewModel.kt b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/campaign/player/detail/CharacterDetailViewModel.kt similarity index 97% rename from composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/screen/campaign/player/detail/CharacterDetailViewModel.kt rename to composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/campaign/player/detail/CharacterDetailViewModel.kt index 5fd3a29..056dc6d 100644 --- a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/screen/campaign/player/detail/CharacterDetailViewModel.kt +++ b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/campaign/player/detail/CharacterDetailViewModel.kt @@ -1,4 +1,4 @@ -package com.pixelized.desktop.lwa.screen.campaign.player.detail +package com.pixelized.desktop.lwa.ui.screen.campaign.player.detail import androidx.compose.runtime.Composable import androidx.compose.runtime.Stable diff --git a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/screen/campaign/player/detail/CharacterDiminishedViewModel.kt b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/campaign/player/detail/CharacterDiminishedViewModel.kt similarity index 91% rename from composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/screen/campaign/player/detail/CharacterDiminishedViewModel.kt rename to composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/campaign/player/detail/CharacterDiminishedViewModel.kt index 2e85a85..deb3f8f 100644 --- a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/screen/campaign/player/detail/CharacterDiminishedViewModel.kt +++ b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/campaign/player/detail/CharacterDiminishedViewModel.kt @@ -1,4 +1,4 @@ -package com.pixelized.desktop.lwa.screen.campaign.player.detail +package com.pixelized.desktop.lwa.ui.screen.campaign.player.detail import androidx.compose.runtime.State import androidx.compose.runtime.mutableStateOf @@ -6,7 +6,7 @@ import androidx.compose.ui.text.TextRange import androidx.compose.ui.text.input.TextFieldValue import androidx.lifecycle.ViewModel import com.pixelized.desktop.lwa.repository.characterSheet.CharacterSheetRepository -import com.pixelized.desktop.lwa.screen.characterSheet.detail.dialog.DiminishedStatDialogUio +import com.pixelized.desktop.lwa.ui.screen.characterSheet.detail.dialog.DiminishedStatDialogUio import lwacharactersheet.composeapp.generated.resources.Res import lwacharactersheet.composeapp.generated.resources.character_sheet__diminished__label import org.jetbrains.compose.resources.getString diff --git a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/screen/campaign/player/ribbon/PlayerPortrait.kt b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/campaign/player/ribbon/PlayerPortrait.kt similarity index 96% rename from composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/screen/campaign/player/ribbon/PlayerPortrait.kt rename to composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/campaign/player/ribbon/PlayerPortrait.kt index da65d18..6231938 100644 --- a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/screen/campaign/player/ribbon/PlayerPortrait.kt +++ b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/campaign/player/ribbon/PlayerPortrait.kt @@ -1,15 +1,13 @@ -package com.pixelized.desktop.lwa.screen.campaign.player.ribbon +package com.pixelized.desktop.lwa.ui.screen.campaign.player.ribbon import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row -import androidx.compose.foundation.layout.aspectRatio import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size -import androidx.compose.foundation.layout.width import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material.Icon import androidx.compose.material.MaterialTheme @@ -28,6 +26,7 @@ import androidx.compose.ui.layout.ContentScale import androidx.compose.ui.unit.DpSize import androidx.compose.ui.unit.dp import coil3.compose.AsyncImage +import com.pixelized.desktop.lwa.ui.composable.decoratedBox.DecoratedBox import lwacharactersheet.composeapp.generated.resources.Res import lwacharactersheet.composeapp.generated.resources.ic_heart_24dp import lwacharactersheet.composeapp.generated.resources.ic_water_drop_24dp @@ -56,7 +55,7 @@ fun PlayerPortrait( character: PlayerPortraitUio, onCharacter: (id: String) -> Unit, ) { - Box( + DecoratedBox( modifier = modifier .size(size = size) .clip(shape = remember { RoundedCornerShape(8.dp) }) diff --git a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/screen/campaign/player/ribbon/PlayerRibbon.kt b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/campaign/player/ribbon/PlayerRibbon.kt similarity index 93% rename from composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/screen/campaign/player/ribbon/PlayerRibbon.kt rename to composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/campaign/player/ribbon/PlayerRibbon.kt index ee10f26..511cd80 100644 --- a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/screen/campaign/player/ribbon/PlayerRibbon.kt +++ b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/campaign/player/ribbon/PlayerRibbon.kt @@ -1,4 +1,4 @@ -package com.pixelized.desktop.lwa.screen.campaign.player.ribbon +package com.pixelized.desktop.lwa.ui.screen.campaign.player.ribbon import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.lazy.LazyColumn diff --git a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/screen/campaign/player/ribbon/PlayerRibbonViewModel.kt b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/campaign/player/ribbon/PlayerRibbonViewModel.kt similarity index 93% rename from composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/screen/campaign/player/ribbon/PlayerRibbonViewModel.kt rename to composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/campaign/player/ribbon/PlayerRibbonViewModel.kt index d1a9cc6..cd74586 100644 --- a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/screen/campaign/player/ribbon/PlayerRibbonViewModel.kt +++ b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/campaign/player/ribbon/PlayerRibbonViewModel.kt @@ -1,4 +1,4 @@ -package com.pixelized.desktop.lwa.screen.campaign.player.ribbon +package com.pixelized.desktop.lwa.ui.screen.campaign.player.ribbon import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope diff --git a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/screen/characterSheet/CharacterSheetNavHost.kt b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/characterSheet/CharacterSheetNavHost.kt similarity index 74% rename from composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/screen/characterSheet/CharacterSheetNavHost.kt rename to composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/characterSheet/CharacterSheetNavHost.kt index c366ed4..27660d0 100644 --- a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/screen/characterSheet/CharacterSheetNavHost.kt +++ b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/characterSheet/CharacterSheetNavHost.kt @@ -1,4 +1,4 @@ -package com.pixelized.desktop.lwa.screen.characterSheet +package com.pixelized.desktop.lwa.ui.screen.characterSheet import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.material.Surface @@ -8,9 +8,9 @@ import androidx.compose.ui.Modifier import androidx.navigation.NavHostController import androidx.navigation.compose.NavHost import androidx.navigation.compose.rememberNavController -import com.pixelized.desktop.lwa.navigation.screen.LocalScreenController -import com.pixelized.desktop.lwa.navigation.screen.destination.composableCharacterSheetEditPage -import com.pixelized.desktop.lwa.navigation.screen.destination.composableCharacterSheetPage +import com.pixelized.desktop.lwa.ui.navigation.screen.LocalScreenController +import com.pixelized.desktop.lwa.ui.navigation.screen.destination.composableCharacterSheetEditPage +import com.pixelized.desktop.lwa.ui.navigation.screen.destination.composableCharacterSheetPage @Composable fun CharacterSheetMainNavHost( diff --git a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/screen/characterSheet/detail/CharacterSheetFactory.kt b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/characterSheet/detail/CharacterSheetFactory.kt similarity index 97% rename from composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/screen/characterSheet/detail/CharacterSheetFactory.kt rename to composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/characterSheet/detail/CharacterSheetFactory.kt index cff3f60..982beda 100644 --- a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/screen/characterSheet/detail/CharacterSheetFactory.kt +++ b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/characterSheet/detail/CharacterSheetFactory.kt @@ -1,13 +1,13 @@ -package com.pixelized.desktop.lwa.screen.characterSheet.detail +package com.pixelized.desktop.lwa.ui.screen.characterSheet.detail import com.pixelized.desktop.lwa.business.ExpressionUseCase -import com.pixelized.desktop.lwa.composable.tooltip.TooltipUio +import com.pixelized.desktop.lwa.ui.composable.tooltip.TooltipUio import com.pixelized.desktop.lwa.repository.alteration.model.FieldAlteration import com.pixelized.desktop.lwa.repository.characterSheet.SkillDescriptionFactory import com.pixelized.desktop.lwa.repository.characterSheet.model.CharacterSheet import com.pixelized.desktop.lwa.repository.characterSheet.model.CharacterSheet.CharacteristicId -import com.pixelized.desktop.lwa.screen.characterSheet.detail.CharacterSheetPageUio.Characteristic -import com.pixelized.desktop.lwa.screen.characterSheet.detail.CharacterSheetPageUio.Node +import com.pixelized.desktop.lwa.ui.screen.characterSheet.detail.CharacterSheetPageUio.Characteristic +import com.pixelized.desktop.lwa.ui.screen.characterSheet.detail.CharacterSheetPageUio.Node import lwacharactersheet.composeapp.generated.resources.Res import lwacharactersheet.composeapp.generated.resources.character_sheet__characteristics__cha import lwacharactersheet.composeapp.generated.resources.character_sheet__characteristics__con diff --git a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/screen/characterSheet/detail/CharacterSheetPage.kt b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/characterSheet/detail/CharacterSheetPage.kt similarity index 93% rename from composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/screen/characterSheet/detail/CharacterSheetPage.kt rename to composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/characterSheet/detail/CharacterSheetPage.kt index 6ba533f..7cbcddc 100644 --- a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/screen/characterSheet/detail/CharacterSheetPage.kt +++ b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/characterSheet/detail/CharacterSheetPage.kt @@ -1,691 +1,691 @@ -package com.pixelized.desktop.lwa.screen.characterSheet.detail - -import androidx.compose.animation.AnimatedContent -import androidx.compose.animation.AnimatedVisibility -import androidx.compose.animation.SizeTransform -import androidx.compose.animation.fadeIn -import androidx.compose.animation.fadeOut -import androidx.compose.animation.slideInVertically -import androidx.compose.animation.slideOutVertically -import androidx.compose.animation.togetherWith -import androidx.compose.desktop.ui.tooling.preview.Preview -import androidx.compose.foundation.ExperimentalFoundationApi -import androidx.compose.foundation.ScrollState -import androidx.compose.foundation.clickable -import androidx.compose.foundation.layout.Arrangement -import androidx.compose.foundation.layout.Box -import androidx.compose.foundation.layout.Column -import androidx.compose.foundation.layout.PaddingValues -import androidx.compose.foundation.layout.Row -import androidx.compose.foundation.layout.fillMaxHeight -import androidx.compose.foundation.layout.fillMaxSize -import androidx.compose.foundation.layout.fillMaxWidth -import androidx.compose.foundation.layout.height -import androidx.compose.foundation.layout.heightIn -import androidx.compose.foundation.layout.padding -import androidx.compose.foundation.layout.size -import androidx.compose.foundation.layout.width -import androidx.compose.foundation.rememberScrollState -import androidx.compose.foundation.verticalScroll -import androidx.compose.material.Checkbox -import androidx.compose.material.CheckboxDefaults -import androidx.compose.material.DropdownMenu -import androidx.compose.material.DropdownMenuItem -import androidx.compose.material.Icon -import androidx.compose.material.IconButton -import androidx.compose.material.MaterialTheme -import androidx.compose.material.Scaffold -import androidx.compose.material.Surface -import androidx.compose.material.Text -import androidx.compose.material.TopAppBar -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.Delete -import androidx.compose.material.icons.filled.Edit -import androidx.compose.material.icons.filled.MoreVert -import androidx.compose.runtime.Composable -import androidx.compose.runtime.Stable -import androidx.compose.runtime.State -import androidx.compose.runtime.mutableStateOf -import androidx.compose.runtime.remember -import androidx.compose.runtime.rememberCoroutineScope -import androidx.compose.ui.Alignment -import androidx.compose.ui.Modifier -import androidx.compose.ui.text.font.FontWeight -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.LocalWindowController -import com.pixelized.desktop.lwa.composable.blur.BlurContent -import com.pixelized.desktop.lwa.composable.blur.BlurContentController -import com.pixelized.desktop.lwa.composable.decoratedBox.DecoratedBox -import com.pixelized.desktop.lwa.composable.tooltip.TooltipLayout -import com.pixelized.desktop.lwa.composable.tooltip.TooltipUio -import com.pixelized.desktop.lwa.navigation.screen.LocalScreenController -import com.pixelized.desktop.lwa.navigation.window.LocalWindow -import com.pixelized.desktop.lwa.navigation.window.destination.navigateToCharacterSheetEdit -import com.pixelized.desktop.lwa.screen.characterSheet.detail.CharacterSheetPageUio.Characteristic -import com.pixelized.desktop.lwa.screen.characterSheet.detail.dialog.CharacterSheetDeleteConfirmationDialog -import com.pixelized.desktop.lwa.screen.characterSheet.detail.dialog.CharacterSheetStatDialog -import com.pixelized.desktop.lwa.screen.characterSheet.detail.dialog.DiminishedStatDialog -import com.pixelized.desktop.lwa.screen.characterSheet.detail.preview.rememberCharacterSheetPreview -import com.pixelized.desktop.lwa.screen.roll.RollPage -import com.pixelized.desktop.lwa.screen.roll.RollViewModel -import com.pixelized.desktop.lwa.utils.preview.ContentPreview -import kotlinx.coroutines.launch -import kotlinx.coroutines.runBlocking -import lwacharactersheet.composeapp.generated.resources.Res -import lwacharactersheet.composeapp.generated.resources.character_sheet__delete__label -import lwacharactersheet.composeapp.generated.resources.character_sheet__edit__label -import lwacharactersheet.composeapp.generated.resources.character_sheet__skills__common_title -import lwacharactersheet.composeapp.generated.resources.character_sheet__skills__magic_title -import lwacharactersheet.composeapp.generated.resources.character_sheet__skills__special_title -import lwacharactersheet.composeapp.generated.resources.character_sheet__sub_characteristics__title -import lwacharactersheet.composeapp.generated.resources.character_sheet_edit__edit__title -import lwacharactersheet.composeapp.generated.resources.ic_d20_24dp -import lwacharactersheet.composeapp.generated.resources.ic_skull_24dp -import org.jetbrains.compose.resources.getString -import org.jetbrains.compose.resources.painterResource -import org.jetbrains.compose.resources.stringResource -import org.koin.compose.viewmodel.koinViewModel - -@Stable -data class CharacterSheetPageUio( - val id: String, - val name: String, - val characteristics: List, - val subCharacteristics: List, - val commonSkills: List, - val specialSKills: List, - val magicsSkills: List, - val actions: List, -) { - @Stable - data class Characteristic( - val id: String, - val label: String, - val value: String, - val editable: Boolean, - val tooltips: TooltipUio?, - ) - - @Stable - data class Node( - val label: String, - val value: Int, - val tooltips: TooltipUio? = null, - val used: Boolean, - ) - - @Stable - data class Roll( - val label: String, - val value: String, - ) -} - -@Composable -fun CharacterSheetPage( - viewModel: CharacterSheetViewModel = koinViewModel(), - rollViewModel: RollViewModel = koinViewModel(), -) { - val windowController = LocalWindowController.current - val screen = LocalScreenController.current - val window = LocalWindow.current - val scope = rememberCoroutineScope() - val blurController = remember { BlurContentController() } - - Surface( - modifier = Modifier.fillMaxSize(), - ) { - BlurContent( - controller = blurController, - content = { - viewModel.sheet.value?.let { sheet -> - CharacterSheetPageContent( - modifier = Modifier.fillMaxSize(), - characterSheet = sheet, - diminishedValue = viewModel.diminishedValue, - onDiminished = { -// blurController.show() -// scope.launch { -// viewModel.showDiminishedDialog() -// } - viewModel.toggleWolf() - }, - onEdit = { - windowController.navigateToCharacterSheetEdit( - title = runBlocking { getString(Res.string.character_sheet_edit__edit__title) }, - characterId = sheet.id, - ) - }, - onDelete = { - blurController.show() - viewModel.showConfirmCharacterDeletionDialog() - }, - onCharacteristic = { characteristic -> - blurController.show() - rollViewModel.prepareRoll( - sheet = sheet, - characteristic = characteristic - ) - viewModel.showRollOverlay() - }, - onSubCharacteristic = { - blurController.show() - scope.launch { - viewModel.showSubCharacteristicDialog(id = it.id) - } - }, - onSkill = { node -> - blurController.show() - rollViewModel.prepareRoll(sheet = sheet, node = node) - viewModel.showRollOverlay() - }, - onUseSkill = viewModel::onUseSkill, - onRoll = { roll -> - blurController.show() - rollViewModel.prepareRoll(sheet = sheet, roll = roll) - viewModel.showRollOverlay() - }, - ) - } - }, - ) - - AnimatedContent( - targetState = viewModel.displayRollOverlay.value, - transitionSpec = { - val enter = fadeIn() + slideInVertically { 64 } - val exit = fadeOut() + slideOutVertically { 64 } - enter togetherWith exit - }, - ) { roll -> - when (roll) { - true -> RollPage( - viewModel = rollViewModel, - onDismissRequest = { - blurController.hide() - viewModel.hideRollOverlay() - }, - ) - - else -> Box( - modifier = Modifier.fillMaxSize() - ) - } - } - - CharacterSheetDeleteConfirmationDialog( - dialog = viewModel.displayDeleteConfirmationDialog, - onConfirm = { - scope.launch { - viewModel.deleteCharacter(id = it.id) - if (screen.popBackStack().not()) { - windowController.hideWindow(window = window) - } - } - }, - onDismissRequest = { - blurController.hide() - viewModel.hideConfirmCharacterDeletionDialog() - }, - ) - - CharacterSheetStatDialog( - dialog = viewModel.statChangeDialog, - onConfirm = { - viewModel.changeSubCharacteristic( - characteristicId = it.id, - value = it.value().text.toIntOrNull() ?: 0, - ) - viewModel.hideSubCharacteristicDialog() - blurController.hide() - }, - onDismissRequest = { - viewModel.hideSubCharacteristicDialog() - blurController.hide() - } - ) - - DiminishedStatDialog( - dialog = viewModel.diminishedDialog, - onConfirm = { - viewModel.changeDiminished( - dialog = it - ) - viewModel.hideDiminishedDialog() - blurController.hide() - }, - onDismissRequest = { - viewModel.hideDiminishedDialog() - blurController.hide() - }, - ) - } -} - -@Composable -fun CharacterSheetPageContent( - modifier: Modifier = Modifier, - scrollState: ScrollState = rememberScrollState(), - characterSheet: CharacterSheetPageUio, - diminishedValue: State, - onDiminished: () -> Unit, - onEdit: () -> Unit, - onDelete: () -> Unit, - onCharacteristic: (characteristic: Characteristic) -> Unit, - onSubCharacteristic: (characteristic: Characteristic) -> Unit, - onSkill: (skill: CharacterSheetPageUio.Node) -> Unit, - onUseSkill: (skill: CharacterSheetPageUio.Node) -> Unit, - onRoll: (roll: CharacterSheetPageUio.Roll) -> Unit, -) { - Scaffold( - modifier = modifier, - topBar = { - TopAppBar( - title = { - Text( - overflow = TextOverflow.Ellipsis, - maxLines = 1, - text = characterSheet.name, - ) - }, - actions = { - val showMenu = remember { mutableStateOf(false) } - Box { - IconButton( - onClick = onDiminished, - ) { - Icon( - modifier = Modifier.size(size = 24.dp), - painter = painterResource(Res.drawable.ic_skull_24dp), - tint = MaterialTheme.colors.primary, - contentDescription = null, - ) - } - AnimatedContent( - modifier = Modifier.align(alignment = Alignment.BottomCenter), - targetState = diminishedValue.value, - transitionSpec = { - val sign = if ((targetState ?: 0) > (initialState ?: 0)) 1 else -1 - val enter = fadeIn() + slideInVertically { 16 * sign } - val exit = fadeOut() + slideOutVertically { -16 * sign } - enter togetherWith exit using SizeTransform(clip = false) - } - ) { - Text( - style = MaterialTheme.typography.caption, - color = MaterialTheme.colors.onSurface, - text = "${it ?: ""}", - ) - } - } - IconButton( - onClick = { showMenu.value = showMenu.value.not() }, - ) { - Icon( - imageVector = Icons.Default.MoreVert, - tint = MaterialTheme.colors.primary, - contentDescription = null, - ) - } - DropdownMenu( - expanded = showMenu.value, - onDismissRequest = { showMenu.value = false } - ) { - DropdownMenuItem( - onClick = { - showMenu.value = false - onEdit() - }, - ) { - Icon( - imageVector = Icons.Default.Edit, - tint = MaterialTheme.colors.primary, - contentDescription = null, - ) - Text( - modifier = Modifier.padding(start = 8.dp), - color = MaterialTheme.colors.primary, - text = stringResource(Res.string.character_sheet__edit__label), - ) - } - DropdownMenuItem( - onClick = { - showMenu.value = false - onDelete() - }, - ) { - Icon( - imageVector = Icons.Default.Delete, - tint = MaterialTheme.colors.primary, - contentDescription = null, - ) - Text( - modifier = Modifier.padding(start = 8.dp), - color = MaterialTheme.colors.primary, - text = stringResource(Res.string.character_sheet__delete__label), - ) - } - } - }, - ) - }, - content = { paddingValues -> - Row( - modifier = Modifier - .verticalScroll(state = scrollState) - .padding(paddingValues) - .padding(all = 16.dp), - horizontalArrangement = Arrangement.spacedBy(space = 16.dp), - ) { - Column( - modifier = Modifier - .fillMaxHeight() - .width(100.dp), - verticalArrangement = Arrangement.spacedBy(space = 16.dp), - ) { - characterSheet.characteristics.forEach { - Stat( - modifier = Modifier - .fillMaxWidth() - .heightIn(min = 120.dp), - characteristic = it, - onClick = { onCharacteristic(it) }, - ) - } - } - Column( - modifier = Modifier - .fillMaxHeight() - .weight(2f / 3f), - verticalArrangement = Arrangement.spacedBy(space = 16.dp), - horizontalAlignment = Alignment.CenterHorizontally, - ) { - DecoratedBox( - modifier = Modifier - .fillMaxWidth() - .padding(vertical = 8.dp), - ) { - Column { - Text( - modifier = Modifier.fillMaxWidth().padding(bottom = 8.dp), - style = MaterialTheme.typography.caption, - textAlign = TextAlign.Center, - text = stringResource(Res.string.character_sheet__sub_characteristics__title), - ) - characterSheet.subCharacteristics.forEach { - SubCharacteristics( - modifier = Modifier.cell(), - characteristic = it, - onCharacteristic = when { - it.editable -> onSubCharacteristic - else -> null - } - ) - } - } - } - DecoratedBox( - modifier = Modifier - .fillMaxWidth() - .padding(vertical = 8.dp), - ) { - Column { - Text( - modifier = Modifier - .fillMaxWidth() - .padding(bottom = 8.dp), - style = MaterialTheme.typography.caption, - textAlign = TextAlign.Center, - text = stringResource(Res.string.character_sheet__skills__common_title), - ) - characterSheet.commonSkills.forEach { skill -> - Skill( - modifier = Modifier.cell(), - node = skill, - onClick = { onSkill(skill) }, - onUse = { onUseSkill(skill) }, - ) - } - } - } - AnimatedVisibility( - visible = characterSheet.specialSKills.isNotEmpty() - ) { - DecoratedBox( - modifier = Modifier - .fillMaxWidth() - .padding(vertical = 8.dp), - ) { - Column { - Text( - modifier = Modifier.fillMaxWidth().padding(bottom = 8.dp), - style = MaterialTheme.typography.caption, - textAlign = TextAlign.Center, - text = stringResource(Res.string.character_sheet__skills__special_title), - ) - characterSheet.specialSKills.forEach { occupation -> - Skill( - modifier = Modifier.cell(), - node = occupation, - onClick = { onSkill(occupation) }, - onUse = { onUseSkill(occupation) }, - ) - } - } - } - } - AnimatedVisibility( - visible = characterSheet.magicsSkills.isNotEmpty() - ) { - DecoratedBox( - modifier = Modifier - .fillMaxWidth() - .padding(vertical = 8.dp), - ) { - Column { - Text( - modifier = Modifier.fillMaxWidth().padding(bottom = 8.dp), - style = MaterialTheme.typography.caption, - textAlign = TextAlign.Center, - text = stringResource(Res.string.character_sheet__skills__magic_title), - ) - characterSheet.magicsSkills.forEach { magic -> - Skill( - modifier = Modifier.cell(), - node = magic, - onClick = { onSkill(magic) }, - onUse = { onUseSkill(magic) }, - ) - } - } - } - } - characterSheet.actions.forEach { roll -> - Roll( - modifier = Modifier.cell(), - label = roll.label, - onClick = { onRoll(roll) }, - ) - } - } - } - } - ) -} - -@OptIn(ExperimentalFoundationApi::class) -@Composable -private fun Stat( - modifier: Modifier = Modifier, - paddingValues: PaddingValues = PaddingValues(all = 8.dp), - characteristic: Characteristic, - onClick: () -> Unit, -) { - TooltipLayout( - tooltip = characteristic.tooltips, - content = { - DecoratedBox( - modifier = Modifier - .clickable(onClick = onClick) - .padding(paddingValues = paddingValues) - .then(other = modifier), - ) { - Text( - modifier = Modifier.align(alignment = Alignment.TopCenter), - style = MaterialTheme.typography.caption, - overflow = TextOverflow.Ellipsis, - maxLines = 1, - text = characteristic.label, - ) - Text( - modifier = Modifier.align(alignment = Alignment.Center), - style = MaterialTheme.typography.h3, - overflow = TextOverflow.Ellipsis, - maxLines = 1, - color = MaterialTheme.colors.primary, - text = characteristic.value - ) - } - }, - ) -} - -@OptIn(ExperimentalFoundationApi::class) -@Composable -private fun SubCharacteristics( - modifier: Modifier = Modifier, - paddingValues: PaddingValues = PaddingValues(horizontal = 8.dp), - characteristic: Characteristic, - onCharacteristic: ((characteristic: Characteristic) -> Unit)?, -) { - TooltipLayout( - tooltip = characteristic.tooltips, - content = { - Row( - modifier = Modifier - .clickable(enabled = characteristic.editable && onCharacteristic != null) { - onCharacteristic?.invoke(characteristic) - } - .padding(paddingValues = paddingValues).then(other = modifier), - horizontalArrangement = Arrangement.SpaceBetween, - verticalAlignment = Alignment.CenterVertically, - ) { - Text( - style = MaterialTheme.typography.body1, - text = characteristic.label - ) - Text( - style = MaterialTheme.typography.body1, - fontWeight = FontWeight.Bold, - color = when (characteristic.editable && onCharacteristic != null) { - true -> MaterialTheme.colors.primary - else -> MaterialTheme.colors.onSurface - }, - text = characteristic.value, - ) - } - }, - ) -} - -@OptIn(ExperimentalFoundationApi::class) -@Composable -private fun Skill( - modifier: Modifier = Modifier, - paddingValues: PaddingValues = PaddingValues(horizontal = 8.dp), - node: CharacterSheetPageUio.Node, - onClick: () -> Unit, - onUse: () -> Unit, -) { - TooltipLayout( - tooltip = node.tooltips, - content = { - Row( - modifier = Modifier - .clickable(onClick = onClick) - .padding(paddingValues = paddingValues) - .then(other = modifier), - horizontalArrangement = Arrangement.spacedBy(space = 4.dp), - verticalAlignment = Alignment.CenterVertically, - ) { - Text( - modifier = Modifier.weight(1f), - style = MaterialTheme.typography.body1, - overflow = TextOverflow.Ellipsis, - maxLines = 1, - text = node.label - ) - Text( - style = MaterialTheme.typography.body1, - fontWeight = FontWeight.Bold, - color = MaterialTheme.colors.primary, - text = "${node.value}", - ) - Checkbox( - modifier = Modifier.size(size = 32.dp), - checked = node.used, - colors = CheckboxDefaults.colors( - checkedColor = MaterialTheme.colors.primary, - ), - onCheckedChange = { onUse() }, - ) - } - }, - ) -} - -@Composable -private fun Roll( - modifier: Modifier = Modifier, - paddingValues: PaddingValues = PaddingValues(start = 10.dp, end = 14.dp), - label: String, - onClick: () -> Unit, -) { - Row( - modifier = Modifier - .clickable(onClick = onClick) - .padding(paddingValues = paddingValues) - .then(other = modifier), - horizontalArrangement = Arrangement.SpaceBetween, - verticalAlignment = Alignment.CenterVertically, - ) { - Text( - modifier = Modifier.weight(1f), - style = MaterialTheme.typography.body1, - overflow = TextOverflow.Ellipsis, - maxLines = 1, - text = label - ) - Icon( - modifier = Modifier.size(size = 24.dp), - painter = painterResource(Res.drawable.ic_d20_24dp), - tint = MaterialTheme.colors.primary, - contentDescription = null, - ) - } -} - -private fun Modifier.cell(): Modifier = this.fillMaxWidth().height(height = 32.dp) - -@Composable -@Preview -private fun DecoratedBoxPreview() { - ContentPreview { - CharacterSheetPageContent( - modifier = Modifier.fillMaxSize(), - scrollState = rememberScrollState(), - characterSheet = rememberCharacterSheetPreview(), - diminishedValue = remember { mutableStateOf(null) }, - onDiminished = { }, - onEdit = { }, - onDelete = { }, - onCharacteristic = { }, - onSubCharacteristic = { }, - onSkill = { }, - onUseSkill = { }, - onRoll = { }, - ) - } +package com.pixelized.desktop.lwa.ui.screen.characterSheet.detail + +import androidx.compose.animation.AnimatedContent +import androidx.compose.animation.AnimatedVisibility +import androidx.compose.animation.SizeTransform +import androidx.compose.animation.fadeIn +import androidx.compose.animation.fadeOut +import androidx.compose.animation.slideInVertically +import androidx.compose.animation.slideOutVertically +import androidx.compose.animation.togetherWith +import androidx.compose.desktop.ui.tooling.preview.Preview +import androidx.compose.foundation.ExperimentalFoundationApi +import androidx.compose.foundation.ScrollState +import androidx.compose.foundation.clickable +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.PaddingValues +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.fillMaxHeight +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.heightIn +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.layout.width +import androidx.compose.foundation.rememberScrollState +import androidx.compose.foundation.verticalScroll +import androidx.compose.material.Checkbox +import androidx.compose.material.CheckboxDefaults +import androidx.compose.material.DropdownMenu +import androidx.compose.material.DropdownMenuItem +import androidx.compose.material.Icon +import androidx.compose.material.IconButton +import androidx.compose.material.MaterialTheme +import androidx.compose.material.Scaffold +import androidx.compose.material.Surface +import androidx.compose.material.Text +import androidx.compose.material.TopAppBar +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.Delete +import androidx.compose.material.icons.filled.Edit +import androidx.compose.material.icons.filled.MoreVert +import androidx.compose.runtime.Composable +import androidx.compose.runtime.Stable +import androidx.compose.runtime.State +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.rememberCoroutineScope +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.text.font.FontWeight +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.LocalWindowController +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.decoratedBox.DecoratedBox +import com.pixelized.desktop.lwa.ui.composable.tooltip.TooltipLayout +import com.pixelized.desktop.lwa.ui.composable.tooltip.TooltipUio +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.destination.navigateToCharacterSheetEdit +import com.pixelized.desktop.lwa.ui.screen.characterSheet.detail.CharacterSheetPageUio.Characteristic +import com.pixelized.desktop.lwa.ui.screen.characterSheet.detail.dialog.CharacterSheetDeleteConfirmationDialog +import com.pixelized.desktop.lwa.ui.screen.characterSheet.detail.dialog.CharacterSheetStatDialog +import com.pixelized.desktop.lwa.ui.screen.characterSheet.detail.dialog.DiminishedStatDialog +import com.pixelized.desktop.lwa.ui.screen.characterSheet.detail.preview.rememberCharacterSheetPreview +import com.pixelized.desktop.lwa.ui.screen.roll.RollPage +import com.pixelized.desktop.lwa.ui.screen.roll.RollViewModel +import com.pixelized.desktop.lwa.utils.preview.ContentPreview +import kotlinx.coroutines.launch +import kotlinx.coroutines.runBlocking +import lwacharactersheet.composeapp.generated.resources.Res +import lwacharactersheet.composeapp.generated.resources.character_sheet__delete__label +import lwacharactersheet.composeapp.generated.resources.character_sheet__edit__label +import lwacharactersheet.composeapp.generated.resources.character_sheet__skills__common_title +import lwacharactersheet.composeapp.generated.resources.character_sheet__skills__magic_title +import lwacharactersheet.composeapp.generated.resources.character_sheet__skills__special_title +import lwacharactersheet.composeapp.generated.resources.character_sheet__sub_characteristics__title +import lwacharactersheet.composeapp.generated.resources.character_sheet_edit__edit__title +import lwacharactersheet.composeapp.generated.resources.ic_d20_24dp +import lwacharactersheet.composeapp.generated.resources.ic_skull_24dp +import org.jetbrains.compose.resources.getString +import org.jetbrains.compose.resources.painterResource +import org.jetbrains.compose.resources.stringResource +import org.koin.compose.viewmodel.koinViewModel + +@Stable +data class CharacterSheetPageUio( + val id: String, + val name: String, + val characteristics: List, + val subCharacteristics: List, + val commonSkills: List, + val specialSKills: List, + val magicsSkills: List, + val actions: List, +) { + @Stable + data class Characteristic( + val id: String, + val label: String, + val value: String, + val editable: Boolean, + val tooltips: TooltipUio?, + ) + + @Stable + data class Node( + val label: String, + val value: Int, + val tooltips: TooltipUio? = null, + val used: Boolean, + ) + + @Stable + data class Roll( + val label: String, + val value: String, + ) +} + +@Composable +fun CharacterSheetPage( + viewModel: CharacterSheetViewModel = koinViewModel(), + rollViewModel: RollViewModel = koinViewModel(), +) { + val windowController = LocalWindowController.current + val screen = LocalScreenController.current + val window = LocalWindow.current + val scope = rememberCoroutineScope() + val blurController = remember { BlurContentController() } + + Surface( + modifier = Modifier.fillMaxSize(), + ) { + BlurContent( + controller = blurController, + content = { + viewModel.sheet.value?.let { sheet -> + CharacterSheetPageContent( + modifier = Modifier.fillMaxSize(), + characterSheet = sheet, + diminishedValue = viewModel.diminishedValue, + onDiminished = { +// blurController.show() +// scope.launch { +// viewModel.showDiminishedDialog() +// } + viewModel.toggleWolf() + }, + onEdit = { + windowController.navigateToCharacterSheetEdit( + title = runBlocking { getString(Res.string.character_sheet_edit__edit__title) }, + characterId = sheet.id, + ) + }, + onDelete = { + blurController.show() + viewModel.showConfirmCharacterDeletionDialog() + }, + onCharacteristic = { characteristic -> + blurController.show() + rollViewModel.prepareRoll( + sheet = sheet, + characteristic = characteristic + ) + viewModel.showRollOverlay() + }, + onSubCharacteristic = { + blurController.show() + scope.launch { + viewModel.showSubCharacteristicDialog(id = it.id) + } + }, + onSkill = { node -> + blurController.show() + rollViewModel.prepareRoll(sheet = sheet, node = node) + viewModel.showRollOverlay() + }, + onUseSkill = viewModel::onUseSkill, + onRoll = { roll -> + blurController.show() + rollViewModel.prepareRoll(sheet = sheet, roll = roll) + viewModel.showRollOverlay() + }, + ) + } + }, + ) + + AnimatedContent( + targetState = viewModel.displayRollOverlay.value, + transitionSpec = { + val enter = fadeIn() + slideInVertically { 64 } + val exit = fadeOut() + slideOutVertically { 64 } + enter togetherWith exit + }, + ) { roll -> + when (roll) { + true -> RollPage( + viewModel = rollViewModel, + onDismissRequest = { + blurController.hide() + viewModel.hideRollOverlay() + }, + ) + + else -> Box( + modifier = Modifier.fillMaxSize() + ) + } + } + + CharacterSheetDeleteConfirmationDialog( + dialog = viewModel.displayDeleteConfirmationDialog, + onConfirm = { + scope.launch { + viewModel.deleteCharacter(id = it.id) + if (screen.popBackStack().not()) { + windowController.hideWindow(window = window) + } + } + }, + onDismissRequest = { + blurController.hide() + viewModel.hideConfirmCharacterDeletionDialog() + }, + ) + + CharacterSheetStatDialog( + dialog = viewModel.statChangeDialog, + onConfirm = { + viewModel.changeSubCharacteristic( + characteristicId = it.id, + value = it.value().text.toIntOrNull() ?: 0, + ) + viewModel.hideSubCharacteristicDialog() + blurController.hide() + }, + onDismissRequest = { + viewModel.hideSubCharacteristicDialog() + blurController.hide() + } + ) + + DiminishedStatDialog( + dialog = viewModel.diminishedDialog, + onConfirm = { + viewModel.changeDiminished( + dialog = it + ) + viewModel.hideDiminishedDialog() + blurController.hide() + }, + onDismissRequest = { + viewModel.hideDiminishedDialog() + blurController.hide() + }, + ) + } +} + +@Composable +fun CharacterSheetPageContent( + modifier: Modifier = Modifier, + scrollState: ScrollState = rememberScrollState(), + characterSheet: CharacterSheetPageUio, + diminishedValue: State, + onDiminished: () -> Unit, + onEdit: () -> Unit, + onDelete: () -> Unit, + onCharacteristic: (characteristic: Characteristic) -> Unit, + onSubCharacteristic: (characteristic: Characteristic) -> Unit, + onSkill: (skill: CharacterSheetPageUio.Node) -> Unit, + onUseSkill: (skill: CharacterSheetPageUio.Node) -> Unit, + onRoll: (roll: CharacterSheetPageUio.Roll) -> Unit, +) { + Scaffold( + modifier = modifier, + topBar = { + TopAppBar( + title = { + Text( + overflow = TextOverflow.Ellipsis, + maxLines = 1, + text = characterSheet.name, + ) + }, + actions = { + val showMenu = remember { mutableStateOf(false) } + Box { + IconButton( + onClick = onDiminished, + ) { + Icon( + modifier = Modifier.size(size = 24.dp), + painter = painterResource(Res.drawable.ic_skull_24dp), + tint = MaterialTheme.colors.primary, + contentDescription = null, + ) + } + AnimatedContent( + modifier = Modifier.align(alignment = Alignment.BottomCenter), + targetState = diminishedValue.value, + transitionSpec = { + val sign = if ((targetState ?: 0) > (initialState ?: 0)) 1 else -1 + val enter = fadeIn() + slideInVertically { 16 * sign } + val exit = fadeOut() + slideOutVertically { -16 * sign } + enter togetherWith exit using SizeTransform(clip = false) + } + ) { + Text( + style = MaterialTheme.typography.caption, + color = MaterialTheme.colors.onSurface, + text = "${it ?: ""}", + ) + } + } + IconButton( + onClick = { showMenu.value = showMenu.value.not() }, + ) { + Icon( + imageVector = Icons.Default.MoreVert, + tint = MaterialTheme.colors.primary, + contentDescription = null, + ) + } + DropdownMenu( + expanded = showMenu.value, + onDismissRequest = { showMenu.value = false } + ) { + DropdownMenuItem( + onClick = { + showMenu.value = false + onEdit() + }, + ) { + Icon( + imageVector = Icons.Default.Edit, + tint = MaterialTheme.colors.primary, + contentDescription = null, + ) + Text( + modifier = Modifier.padding(start = 8.dp), + color = MaterialTheme.colors.primary, + text = stringResource(Res.string.character_sheet__edit__label), + ) + } + DropdownMenuItem( + onClick = { + showMenu.value = false + onDelete() + }, + ) { + Icon( + imageVector = Icons.Default.Delete, + tint = MaterialTheme.colors.primary, + contentDescription = null, + ) + Text( + modifier = Modifier.padding(start = 8.dp), + color = MaterialTheme.colors.primary, + text = stringResource(Res.string.character_sheet__delete__label), + ) + } + } + }, + ) + }, + content = { paddingValues -> + Row( + modifier = Modifier + .verticalScroll(state = scrollState) + .padding(paddingValues) + .padding(all = 16.dp), + horizontalArrangement = Arrangement.spacedBy(space = 16.dp), + ) { + Column( + modifier = Modifier + .fillMaxHeight() + .width(100.dp), + verticalArrangement = Arrangement.spacedBy(space = 16.dp), + ) { + characterSheet.characteristics.forEach { + Stat( + modifier = Modifier + .fillMaxWidth() + .heightIn(min = 120.dp), + characteristic = it, + onClick = { onCharacteristic(it) }, + ) + } + } + Column( + modifier = Modifier + .fillMaxHeight() + .weight(2f / 3f), + verticalArrangement = Arrangement.spacedBy(space = 16.dp), + horizontalAlignment = Alignment.CenterHorizontally, + ) { + DecoratedBox( + modifier = Modifier + .fillMaxWidth() + .padding(vertical = 8.dp), + ) { + Column { + Text( + modifier = Modifier.fillMaxWidth().padding(bottom = 8.dp), + style = MaterialTheme.typography.caption, + textAlign = TextAlign.Center, + text = stringResource(Res.string.character_sheet__sub_characteristics__title), + ) + characterSheet.subCharacteristics.forEach { + SubCharacteristics( + modifier = Modifier.cell(), + characteristic = it, + onCharacteristic = when { + it.editable -> onSubCharacteristic + else -> null + } + ) + } + } + } + DecoratedBox( + modifier = Modifier + .fillMaxWidth() + .padding(vertical = 8.dp), + ) { + Column { + Text( + modifier = Modifier + .fillMaxWidth() + .padding(bottom = 8.dp), + style = MaterialTheme.typography.caption, + textAlign = TextAlign.Center, + text = stringResource(Res.string.character_sheet__skills__common_title), + ) + characterSheet.commonSkills.forEach { skill -> + Skill( + modifier = Modifier.cell(), + node = skill, + onClick = { onSkill(skill) }, + onUse = { onUseSkill(skill) }, + ) + } + } + } + AnimatedVisibility( + visible = characterSheet.specialSKills.isNotEmpty() + ) { + DecoratedBox( + modifier = Modifier + .fillMaxWidth() + .padding(vertical = 8.dp), + ) { + Column { + Text( + modifier = Modifier.fillMaxWidth().padding(bottom = 8.dp), + style = MaterialTheme.typography.caption, + textAlign = TextAlign.Center, + text = stringResource(Res.string.character_sheet__skills__special_title), + ) + characterSheet.specialSKills.forEach { occupation -> + Skill( + modifier = Modifier.cell(), + node = occupation, + onClick = { onSkill(occupation) }, + onUse = { onUseSkill(occupation) }, + ) + } + } + } + } + AnimatedVisibility( + visible = characterSheet.magicsSkills.isNotEmpty() + ) { + DecoratedBox( + modifier = Modifier + .fillMaxWidth() + .padding(vertical = 8.dp), + ) { + Column { + Text( + modifier = Modifier.fillMaxWidth().padding(bottom = 8.dp), + style = MaterialTheme.typography.caption, + textAlign = TextAlign.Center, + text = stringResource(Res.string.character_sheet__skills__magic_title), + ) + characterSheet.magicsSkills.forEach { magic -> + Skill( + modifier = Modifier.cell(), + node = magic, + onClick = { onSkill(magic) }, + onUse = { onUseSkill(magic) }, + ) + } + } + } + } + characterSheet.actions.forEach { roll -> + Roll( + modifier = Modifier.cell(), + label = roll.label, + onClick = { onRoll(roll) }, + ) + } + } + } + } + ) +} + +@OptIn(ExperimentalFoundationApi::class) +@Composable +private fun Stat( + modifier: Modifier = Modifier, + paddingValues: PaddingValues = PaddingValues(all = 8.dp), + characteristic: Characteristic, + onClick: () -> Unit, +) { + TooltipLayout( + tooltip = characteristic.tooltips, + content = { + DecoratedBox( + modifier = Modifier + .clickable(onClick = onClick) + .padding(paddingValues = paddingValues) + .then(other = modifier), + ) { + Text( + modifier = Modifier.align(alignment = Alignment.TopCenter), + style = MaterialTheme.typography.caption, + overflow = TextOverflow.Ellipsis, + maxLines = 1, + text = characteristic.label, + ) + Text( + modifier = Modifier.align(alignment = Alignment.Center), + style = MaterialTheme.typography.h3, + overflow = TextOverflow.Ellipsis, + maxLines = 1, + color = MaterialTheme.colors.primary, + text = characteristic.value + ) + } + }, + ) +} + +@OptIn(ExperimentalFoundationApi::class) +@Composable +private fun SubCharacteristics( + modifier: Modifier = Modifier, + paddingValues: PaddingValues = PaddingValues(horizontal = 8.dp), + characteristic: Characteristic, + onCharacteristic: ((characteristic: Characteristic) -> Unit)?, +) { + TooltipLayout( + tooltip = characteristic.tooltips, + content = { + Row( + modifier = Modifier + .clickable(enabled = characteristic.editable && onCharacteristic != null) { + onCharacteristic?.invoke(characteristic) + } + .padding(paddingValues = paddingValues).then(other = modifier), + horizontalArrangement = Arrangement.SpaceBetween, + verticalAlignment = Alignment.CenterVertically, + ) { + Text( + style = MaterialTheme.typography.body1, + text = characteristic.label + ) + Text( + style = MaterialTheme.typography.body1, + fontWeight = FontWeight.Bold, + color = when (characteristic.editable && onCharacteristic != null) { + true -> MaterialTheme.colors.primary + else -> MaterialTheme.colors.onSurface + }, + text = characteristic.value, + ) + } + }, + ) +} + +@OptIn(ExperimentalFoundationApi::class) +@Composable +private fun Skill( + modifier: Modifier = Modifier, + paddingValues: PaddingValues = PaddingValues(horizontal = 8.dp), + node: CharacterSheetPageUio.Node, + onClick: () -> Unit, + onUse: () -> Unit, +) { + TooltipLayout( + tooltip = node.tooltips, + content = { + Row( + modifier = Modifier + .clickable(onClick = onClick) + .padding(paddingValues = paddingValues) + .then(other = modifier), + horizontalArrangement = Arrangement.spacedBy(space = 4.dp), + verticalAlignment = Alignment.CenterVertically, + ) { + Text( + modifier = Modifier.weight(1f), + style = MaterialTheme.typography.body1, + overflow = TextOverflow.Ellipsis, + maxLines = 1, + text = node.label + ) + Text( + style = MaterialTheme.typography.body1, + fontWeight = FontWeight.Bold, + color = MaterialTheme.colors.primary, + text = "${node.value}", + ) + Checkbox( + modifier = Modifier.size(size = 32.dp), + checked = node.used, + colors = CheckboxDefaults.colors( + checkedColor = MaterialTheme.colors.primary, + ), + onCheckedChange = { onUse() }, + ) + } + }, + ) +} + +@Composable +private fun Roll( + modifier: Modifier = Modifier, + paddingValues: PaddingValues = PaddingValues(start = 10.dp, end = 14.dp), + label: String, + onClick: () -> Unit, +) { + Row( + modifier = Modifier + .clickable(onClick = onClick) + .padding(paddingValues = paddingValues) + .then(other = modifier), + horizontalArrangement = Arrangement.SpaceBetween, + verticalAlignment = Alignment.CenterVertically, + ) { + Text( + modifier = Modifier.weight(1f), + style = MaterialTheme.typography.body1, + overflow = TextOverflow.Ellipsis, + maxLines = 1, + text = label + ) + Icon( + modifier = Modifier.size(size = 24.dp), + painter = painterResource(Res.drawable.ic_d20_24dp), + tint = MaterialTheme.colors.primary, + contentDescription = null, + ) + } +} + +private fun Modifier.cell(): Modifier = this.fillMaxWidth().height(height = 32.dp) + +@Composable +@Preview +private fun DecoratedBoxPreview() { + ContentPreview { + CharacterSheetPageContent( + modifier = Modifier.fillMaxSize(), + scrollState = rememberScrollState(), + characterSheet = rememberCharacterSheetPreview(), + diminishedValue = remember { mutableStateOf(null) }, + onDiminished = { }, + onEdit = { }, + onDelete = { }, + onCharacteristic = { }, + onSubCharacteristic = { }, + onSkill = { }, + onUseSkill = { }, + onRoll = { }, + ) + } } \ No newline at end of file diff --git a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/screen/characterSheet/detail/CharacterSheetViewModel.kt b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/characterSheet/detail/CharacterSheetViewModel.kt similarity index 94% rename from composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/screen/characterSheet/detail/CharacterSheetViewModel.kt rename to composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/characterSheet/detail/CharacterSheetViewModel.kt index 289c6a6..42dabd5 100644 --- a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/screen/characterSheet/detail/CharacterSheetViewModel.kt +++ b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/characterSheet/detail/CharacterSheetViewModel.kt @@ -1,4 +1,4 @@ -package com.pixelized.desktop.lwa.screen.characterSheet.detail +package com.pixelized.desktop.lwa.ui.screen.characterSheet.detail import androidx.compose.runtime.Composable import androidx.compose.runtime.State @@ -9,13 +9,13 @@ import androidx.compose.ui.text.input.TextFieldValue import androidx.lifecycle.SavedStateHandle import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope -import com.pixelized.desktop.lwa.navigation.screen.destination.CharacterSheetDestination +import com.pixelized.desktop.lwa.ui.navigation.screen.destination.CharacterSheetDestination import com.pixelized.desktop.lwa.repository.alteration.AlterationRepository import com.pixelized.desktop.lwa.repository.characterSheet.CharacterSheetRepository import com.pixelized.desktop.lwa.repository.characterSheet.model.CharacterSheet -import com.pixelized.desktop.lwa.screen.characterSheet.detail.dialog.CharacterSheetDeleteConfirmationDialogUio -import com.pixelized.desktop.lwa.screen.characterSheet.detail.dialog.DiminishedStatDialogUio -import com.pixelized.desktop.lwa.screen.characterSheet.detail.dialog.StatChangeDialogUio +import com.pixelized.desktop.lwa.ui.screen.characterSheet.detail.dialog.CharacterSheetDeleteConfirmationDialogUio +import com.pixelized.desktop.lwa.ui.screen.characterSheet.detail.dialog.DiminishedStatDialogUio +import com.pixelized.desktop.lwa.ui.screen.characterSheet.detail.dialog.StatChangeDialogUio import com.pixelized.desktop.lwa.utils.extention.collectAsState import kotlinx.coroutines.flow.combine import lwacharactersheet.composeapp.generated.resources.Res diff --git a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/screen/characterSheet/detail/dialog/CharacterSheetDeleteConfirmationDialog.kt b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/characterSheet/detail/dialog/CharacterSheetDeleteConfirmationDialog.kt similarity index 96% rename from composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/screen/characterSheet/detail/dialog/CharacterSheetDeleteConfirmationDialog.kt rename to composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/characterSheet/detail/dialog/CharacterSheetDeleteConfirmationDialog.kt index 24a9c33..2b75493 100644 --- a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/screen/characterSheet/detail/dialog/CharacterSheetDeleteConfirmationDialog.kt +++ b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/characterSheet/detail/dialog/CharacterSheetDeleteConfirmationDialog.kt @@ -1,4 +1,4 @@ -package com.pixelized.desktop.lwa.screen.characterSheet.detail.dialog +package com.pixelized.desktop.lwa.ui.screen.characterSheet.detail.dialog import androidx.compose.animation.AnimatedContent import androidx.compose.animation.SizeTransform @@ -16,7 +16,6 @@ import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding -import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material.MaterialTheme import androidx.compose.material.Surface import androidx.compose.material.Text @@ -31,7 +30,7 @@ import androidx.compose.ui.input.key.Key import androidx.compose.ui.input.key.key import androidx.compose.ui.input.key.onPreviewKeyEvent import androidx.compose.ui.unit.dp -import com.pixelized.desktop.lwa.composable.decoratedBox.DecoratedBox +import com.pixelized.desktop.lwa.ui.composable.decoratedBox.DecoratedBox import lwacharactersheet.composeapp.generated.resources.Res import lwacharactersheet.composeapp.generated.resources.character_sheet__delete_dialog__description diff --git a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/screen/characterSheet/detail/dialog/CharacterSheetStatDialog.kt b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/characterSheet/detail/dialog/CharacterSheetStatDialog.kt similarity index 98% rename from composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/screen/characterSheet/detail/dialog/CharacterSheetStatDialog.kt rename to composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/characterSheet/detail/dialog/CharacterSheetStatDialog.kt index ce74e3c..cb4c0eb 100644 --- a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/screen/characterSheet/detail/dialog/CharacterSheetStatDialog.kt +++ b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/characterSheet/detail/dialog/CharacterSheetStatDialog.kt @@ -1,4 +1,4 @@ -package com.pixelized.desktop.lwa.screen.characterSheet.detail.dialog +package com.pixelized.desktop.lwa.ui.screen.characterSheet.detail.dialog import androidx.compose.animation.AnimatedContent import androidx.compose.animation.SizeTransform @@ -41,7 +41,7 @@ import androidx.compose.ui.text.input.ImeAction import androidx.compose.ui.text.input.TextFieldValue import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.unit.dp -import com.pixelized.desktop.lwa.composable.decoratedBox.DecoratedBox +import com.pixelized.desktop.lwa.ui.composable.decoratedBox.DecoratedBox import lwacharactersheet.composeapp.generated.resources.Res import lwacharactersheet.composeapp.generated.resources.dialog__cancel_action import lwacharactersheet.composeapp.generated.resources.dialog__confirm_action diff --git a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/screen/characterSheet/detail/dialog/DiminishedStatDialog.kt b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/characterSheet/detail/dialog/DiminishedStatDialog.kt similarity index 97% rename from composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/screen/characterSheet/detail/dialog/DiminishedStatDialog.kt rename to composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/characterSheet/detail/dialog/DiminishedStatDialog.kt index 2063d84..af0773e 100644 --- a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/screen/characterSheet/detail/dialog/DiminishedStatDialog.kt +++ b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/characterSheet/detail/dialog/DiminishedStatDialog.kt @@ -1,4 +1,4 @@ -package com.pixelized.desktop.lwa.screen.characterSheet.detail.dialog +package com.pixelized.desktop.lwa.ui.screen.characterSheet.detail.dialog import androidx.compose.animation.AnimatedContent import androidx.compose.animation.SizeTransform @@ -41,7 +41,7 @@ import androidx.compose.ui.text.input.ImeAction import androidx.compose.ui.text.input.TextFieldValue import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.unit.dp -import com.pixelized.desktop.lwa.composable.decoratedBox.DecoratedBox +import com.pixelized.desktop.lwa.ui.composable.decoratedBox.DecoratedBox import lwacharactersheet.composeapp.generated.resources.Res import lwacharactersheet.composeapp.generated.resources.dialog__cancel_action import lwacharactersheet.composeapp.generated.resources.dialog__confirm_action diff --git a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/screen/characterSheet/detail/preview/rememberCharacterSheetPagePreview.kt b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/characterSheet/detail/preview/rememberCharacterSheetPagePreview.kt similarity index 94% rename from composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/screen/characterSheet/detail/preview/rememberCharacterSheetPagePreview.kt rename to composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/characterSheet/detail/preview/rememberCharacterSheetPagePreview.kt index 8d8c100..6bac149 100644 --- a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/screen/characterSheet/detail/preview/rememberCharacterSheetPagePreview.kt +++ b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/characterSheet/detail/preview/rememberCharacterSheetPagePreview.kt @@ -1,11 +1,11 @@ -package com.pixelized.desktop.lwa.screen.characterSheet.detail.preview +package com.pixelized.desktop.lwa.ui.screen.characterSheet.detail.preview import androidx.compose.runtime.Composable import androidx.compose.runtime.Stable import androidx.compose.runtime.remember import com.pixelized.desktop.lwa.repository.characterSheet.model.CharacterSheet.CharacteristicId -import com.pixelized.desktop.lwa.screen.characterSheet.detail.CharacterSheetPageUio -import com.pixelized.desktop.lwa.screen.characterSheet.detail.CharacterSheetPageUio.Characteristic +import com.pixelized.desktop.lwa.ui.screen.characterSheet.detail.CharacterSheetPageUio +import com.pixelized.desktop.lwa.ui.screen.characterSheet.detail.CharacterSheetPageUio.Characteristic @Composable diff --git a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/screen/characterSheet/edit/CharacterSheetEditFactory.kt b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/characterSheet/edit/CharacterSheetEditFactory.kt similarity index 98% rename from composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/screen/characterSheet/edit/CharacterSheetEditFactory.kt rename to composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/characterSheet/edit/CharacterSheetEditFactory.kt index 608e65e..d39338b 100644 --- a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/screen/characterSheet/edit/CharacterSheetEditFactory.kt +++ b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/characterSheet/edit/CharacterSheetEditFactory.kt @@ -1,4 +1,4 @@ -package com.pixelized.desktop.lwa.screen.characterSheet.edit +package com.pixelized.desktop.lwa.ui.screen.characterSheet.edit import androidx.compose.runtime.State import androidx.compose.runtime.derivedStateOf @@ -6,11 +6,11 @@ import androidx.compose.runtime.mutableStateOf import com.pixelized.desktop.lwa.business.CharacterSheetUseCase import com.pixelized.desktop.lwa.repository.characterSheet.SkillDescriptionFactory import com.pixelized.desktop.lwa.repository.characterSheet.model.CharacterSheet -import com.pixelized.desktop.lwa.screen.characterSheet.edit.common.SkillFieldFactory -import com.pixelized.desktop.lwa.screen.characterSheet.edit.common.occupation -import com.pixelized.desktop.lwa.screen.characterSheet.edit.composable.ActionFieldUio -import com.pixelized.desktop.lwa.screen.characterSheet.edit.composable.BaseSkillFieldUio -import com.pixelized.desktop.lwa.screen.characterSheet.edit.composable.SimpleFieldUio +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.composable.ActionFieldUio +import com.pixelized.desktop.lwa.ui.screen.characterSheet.edit.composable.BaseSkillFieldUio +import com.pixelized.desktop.lwa.ui.screen.characterSheet.edit.composable.SimpleFieldUio import lwacharactersheet.composeapp.generated.resources.Res import lwacharactersheet.composeapp.generated.resources.character_sheet_edit__actions__action_label import lwacharactersheet.composeapp.generated.resources.character_sheet_edit__actions__name_label diff --git a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/screen/characterSheet/edit/CharacterSheetEditPage.kt b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/characterSheet/edit/CharacterSheetEditPage.kt similarity index 92% rename from composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/screen/characterSheet/edit/CharacterSheetEditPage.kt rename to composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/characterSheet/edit/CharacterSheetEditPage.kt index 7aa4b8b..64a478a 100644 --- a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/screen/characterSheet/edit/CharacterSheetEditPage.kt +++ b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/characterSheet/edit/CharacterSheetEditPage.kt @@ -1,4 +1,4 @@ -package com.pixelized.desktop.lwa.screen.characterSheet.edit +package com.pixelized.desktop.lwa.ui.screen.characterSheet.edit import androidx.compose.animation.animateContentSize import androidx.compose.foundation.layout.Arrangement @@ -27,19 +27,19 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp import com.pixelized.desktop.lwa.LocalWindowController -import com.pixelized.desktop.lwa.composable.decoratedBox.DecoratedBox -import com.pixelized.desktop.lwa.navigation.screen.LocalScreenController -import com.pixelized.desktop.lwa.navigation.window.LocalWindow -import com.pixelized.desktop.lwa.screen.characterSheet.edit.composable.ActionField -import com.pixelized.desktop.lwa.screen.characterSheet.edit.composable.ActionFieldUio -import com.pixelized.desktop.lwa.screen.characterSheet.edit.composable.BaseSkillFieldUio -import com.pixelized.desktop.lwa.screen.characterSheet.edit.composable.BaseSkillForm -import com.pixelized.desktop.lwa.screen.characterSheet.edit.composable.SimpleField -import com.pixelized.desktop.lwa.screen.characterSheet.edit.composable.SimpleFieldUio -import com.pixelized.desktop.lwa.screen.characterSheet.edit.composable.SkillFieldUio -import com.pixelized.desktop.lwa.screen.characterSheet.edit.composable.SkillForm -import com.pixelized.desktop.lwa.screen.characterSheet.edit.composable.textfield.TextFieldWrapper -import com.pixelized.desktop.lwa.screen.characterSheet.edit.composable.textfield.TextFieldWrapperUio +import com.pixelized.desktop.lwa.ui.composable.decoratedBox.DecoratedBox +import com.pixelized.desktop.lwa.ui.navigation.screen.LocalScreenController +import com.pixelized.desktop.lwa.ui.navigation.window.LocalWindow +import com.pixelized.desktop.lwa.ui.screen.characterSheet.edit.composable.ActionField +import com.pixelized.desktop.lwa.ui.screen.characterSheet.edit.composable.ActionFieldUio +import com.pixelized.desktop.lwa.ui.screen.characterSheet.edit.composable.BaseSkillFieldUio +import com.pixelized.desktop.lwa.ui.screen.characterSheet.edit.composable.BaseSkillForm +import com.pixelized.desktop.lwa.ui.screen.characterSheet.edit.composable.SimpleField +import com.pixelized.desktop.lwa.ui.screen.characterSheet.edit.composable.SimpleFieldUio +import com.pixelized.desktop.lwa.ui.screen.characterSheet.edit.composable.SkillFieldUio +import com.pixelized.desktop.lwa.ui.screen.characterSheet.edit.composable.SkillForm +import com.pixelized.desktop.lwa.ui.screen.characterSheet.edit.composable.textfield.TextFieldWrapper +import com.pixelized.desktop.lwa.ui.screen.characterSheet.edit.composable.textfield.TextFieldWrapperUio import kotlinx.coroutines.launch import lwacharactersheet.composeapp.generated.resources.Res import lwacharactersheet.composeapp.generated.resources.character_sheet__skills__common_title diff --git a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/screen/characterSheet/edit/CharacterSheetEditViewModel.kt b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/characterSheet/edit/CharacterSheetEditViewModel.kt similarity index 93% rename from composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/screen/characterSheet/edit/CharacterSheetEditViewModel.kt rename to composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/characterSheet/edit/CharacterSheetEditViewModel.kt index c250e7d..121ae4a 100644 --- a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/screen/characterSheet/edit/CharacterSheetEditViewModel.kt +++ b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/characterSheet/edit/CharacterSheetEditViewModel.kt @@ -1,13 +1,13 @@ -package com.pixelized.desktop.lwa.screen.characterSheet.edit +package com.pixelized.desktop.lwa.ui.screen.characterSheet.edit import androidx.compose.runtime.State import androidx.compose.runtime.mutableStateOf import androidx.lifecycle.SavedStateHandle import androidx.lifecycle.ViewModel -import com.pixelized.desktop.lwa.navigation.screen.destination.CharacterSheetEditDestination +import com.pixelized.desktop.lwa.ui.navigation.screen.destination.CharacterSheetEditDestination import com.pixelized.desktop.lwa.repository.characterSheet.CharacterSheetRepository -import com.pixelized.desktop.lwa.screen.characterSheet.edit.common.SkillFieldFactory -import com.pixelized.desktop.lwa.screen.characterSheet.edit.composable.ActionFieldUio +import com.pixelized.desktop.lwa.ui.screen.characterSheet.edit.common.SkillFieldFactory +import com.pixelized.desktop.lwa.ui.screen.characterSheet.edit.composable.ActionFieldUio import kotlinx.coroutines.runBlocking import lwacharactersheet.composeapp.generated.resources.Res import lwacharactersheet.composeapp.generated.resources.character_sheet_edit__actions__action_label diff --git a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/screen/characterSheet/edit/common/SkillFieldFactory.kt b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/characterSheet/edit/common/SkillFieldFactory.kt similarity index 87% rename from composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/screen/characterSheet/edit/common/SkillFieldFactory.kt rename to composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/characterSheet/edit/common/SkillFieldFactory.kt index 5efc012..e19d7b8 100644 --- a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/screen/characterSheet/edit/common/SkillFieldFactory.kt +++ b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/characterSheet/edit/common/SkillFieldFactory.kt @@ -1,15 +1,15 @@ -package com.pixelized.desktop.lwa.screen.characterSheet.edit.common +package com.pixelized.desktop.lwa.ui.screen.characterSheet.edit.common import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.Delete import androidx.compose.runtime.State import androidx.compose.runtime.derivedStateOf import androidx.compose.runtime.mutableStateOf -import com.pixelized.desktop.lwa.screen.characterSheet.edit.composable.SkillFieldUio -import com.pixelized.desktop.lwa.screen.characterSheet.edit.composable.option.ActionOption -import com.pixelized.desktop.lwa.screen.characterSheet.edit.composable.option.CheckedOption -import com.pixelized.desktop.lwa.screen.characterSheet.edit.composable.option.OptionUio -import com.pixelized.desktop.lwa.screen.characterSheet.edit.composable.textfield.TextFieldWrapperUio +import com.pixelized.desktop.lwa.ui.screen.characterSheet.edit.composable.SkillFieldUio +import com.pixelized.desktop.lwa.ui.screen.characterSheet.edit.composable.option.ActionOption +import com.pixelized.desktop.lwa.ui.screen.characterSheet.edit.composable.option.CheckedOption +import com.pixelized.desktop.lwa.ui.screen.characterSheet.edit.composable.option.OptionUio +import com.pixelized.desktop.lwa.ui.screen.characterSheet.edit.composable.textfield.TextFieldWrapperUio import lwacharactersheet.composeapp.generated.resources.Res import lwacharactersheet.composeapp.generated.resources.character_sheet_edit__delete__label import lwacharactersheet.composeapp.generated.resources.character_sheet_edit__occupation__label diff --git a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/screen/characterSheet/edit/composable/ActionField.kt b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/characterSheet/edit/composable/ActionField.kt similarity index 82% rename from composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/screen/characterSheet/edit/composable/ActionField.kt rename to composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/characterSheet/edit/composable/ActionField.kt index 39ea6ab..5b0e20c 100644 --- a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/screen/characterSheet/edit/composable/ActionField.kt +++ b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/characterSheet/edit/composable/ActionField.kt @@ -1,4 +1,4 @@ -package com.pixelized.desktop.lwa.screen.characterSheet.edit.composable +package com.pixelized.desktop.lwa.ui.screen.characterSheet.edit.composable import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Box @@ -17,10 +17,10 @@ import androidx.compose.runtime.remember import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.unit.dp -import com.pixelized.desktop.lwa.screen.characterSheet.edit.composable.option.ActionOption -import com.pixelized.desktop.lwa.screen.characterSheet.edit.composable.option.DropDownActionMenuItem -import com.pixelized.desktop.lwa.screen.characterSheet.edit.composable.textfield.TextFieldWrapper -import com.pixelized.desktop.lwa.screen.characterSheet.edit.composable.textfield.TextFieldWrapperUio +import com.pixelized.desktop.lwa.ui.screen.characterSheet.edit.composable.option.ActionOption +import com.pixelized.desktop.lwa.ui.screen.characterSheet.edit.composable.option.DropDownActionMenuItem +import com.pixelized.desktop.lwa.ui.screen.characterSheet.edit.composable.textfield.TextFieldWrapper +import com.pixelized.desktop.lwa.ui.screen.characterSheet.edit.composable.textfield.TextFieldWrapperUio @Stable data class ActionFieldUio( diff --git a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/screen/characterSheet/edit/composable/BaseSkillField.kt b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/characterSheet/edit/composable/BaseSkillField.kt similarity index 89% rename from composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/screen/characterSheet/edit/composable/BaseSkillField.kt rename to composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/characterSheet/edit/composable/BaseSkillField.kt index b20af42..6f96d51 100644 --- a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/screen/characterSheet/edit/composable/BaseSkillField.kt +++ b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/characterSheet/edit/composable/BaseSkillField.kt @@ -1,4 +1,4 @@ -package com.pixelized.desktop.lwa.screen.characterSheet.edit.composable +package com.pixelized.desktop.lwa.ui.screen.characterSheet.edit.composable import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Box @@ -24,10 +24,10 @@ import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp -import com.pixelized.desktop.lwa.screen.characterSheet.edit.composable.option.CheckedOption -import com.pixelized.desktop.lwa.screen.characterSheet.edit.composable.option.DropDownCheckedMenuItem -import com.pixelized.desktop.lwa.screen.characterSheet.edit.composable.textfield.TextFieldWrapper -import com.pixelized.desktop.lwa.screen.characterSheet.edit.composable.textfield.TextFieldWrapperUio +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.textfield.TextFieldWrapper +import com.pixelized.desktop.lwa.ui.screen.characterSheet.edit.composable.textfield.TextFieldWrapperUio import lwacharactersheet.composeapp.generated.resources.Res import lwacharactersheet.composeapp.generated.resources.character_sheet_edit__skills__base_label import org.jetbrains.compose.resources.stringResource diff --git a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/screen/characterSheet/edit/composable/SimpleField.kt b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/characterSheet/edit/composable/SimpleField.kt similarity index 83% rename from composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/screen/characterSheet/edit/composable/SimpleField.kt rename to composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/characterSheet/edit/composable/SimpleField.kt index 469c97b..89cd0cb 100644 --- a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/screen/characterSheet/edit/composable/SimpleField.kt +++ b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/characterSheet/edit/composable/SimpleField.kt @@ -1,4 +1,4 @@ -package com.pixelized.desktop.lwa.screen.characterSheet.edit.composable +package com.pixelized.desktop.lwa.ui.screen.characterSheet.edit.composable import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Row @@ -12,8 +12,8 @@ import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp -import com.pixelized.desktop.lwa.screen.characterSheet.edit.composable.textfield.TextFieldWrapper -import com.pixelized.desktop.lwa.screen.characterSheet.edit.composable.textfield.TextFieldWrapperUio +import com.pixelized.desktop.lwa.ui.screen.characterSheet.edit.composable.textfield.TextFieldWrapper +import com.pixelized.desktop.lwa.ui.screen.characterSheet.edit.composable.textfield.TextFieldWrapperUio @Stable class SimpleFieldUio( diff --git a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/screen/characterSheet/edit/composable/SpecialSkillField.kt b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/characterSheet/edit/composable/SpecialSkillField.kt similarity index 87% rename from composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/screen/characterSheet/edit/composable/SpecialSkillField.kt rename to composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/characterSheet/edit/composable/SpecialSkillField.kt index a63a756..bdf2589 100644 --- a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/screen/characterSheet/edit/composable/SpecialSkillField.kt +++ b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/characterSheet/edit/composable/SpecialSkillField.kt @@ -1,4 +1,4 @@ -package com.pixelized.desktop.lwa.screen.characterSheet.edit.composable +package com.pixelized.desktop.lwa.ui.screen.characterSheet.edit.composable import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Box @@ -18,10 +18,10 @@ import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.ui.Modifier import androidx.compose.ui.unit.dp -import com.pixelized.desktop.lwa.screen.characterSheet.edit.composable.option.DropDownMenuItemWrapper -import com.pixelized.desktop.lwa.screen.characterSheet.edit.composable.option.OptionUio -import com.pixelized.desktop.lwa.screen.characterSheet.edit.composable.textfield.TextFieldWrapper -import com.pixelized.desktop.lwa.screen.characterSheet.edit.composable.textfield.TextFieldWrapperUio +import com.pixelized.desktop.lwa.ui.screen.characterSheet.edit.composable.option.DropDownMenuItemWrapper +import com.pixelized.desktop.lwa.ui.screen.characterSheet.edit.composable.option.OptionUio +import com.pixelized.desktop.lwa.ui.screen.characterSheet.edit.composable.textfield.TextFieldWrapper +import com.pixelized.desktop.lwa.ui.screen.characterSheet.edit.composable.textfield.TextFieldWrapperUio @Stable class SkillFieldUio( diff --git a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/screen/characterSheet/edit/composable/option/ActionOption.kt b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/characterSheet/edit/composable/option/ActionOption.kt similarity index 93% rename from composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/screen/characterSheet/edit/composable/option/ActionOption.kt rename to composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/characterSheet/edit/composable/option/ActionOption.kt index 7b0383c..66c0811 100644 --- a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/screen/characterSheet/edit/composable/option/ActionOption.kt +++ b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/characterSheet/edit/composable/option/ActionOption.kt @@ -1,4 +1,4 @@ -package com.pixelized.desktop.lwa.screen.characterSheet.edit.composable.option +package com.pixelized.desktop.lwa.ui.screen.characterSheet.edit.composable.option import androidx.compose.foundation.layout.padding import androidx.compose.material.DropdownMenuItem diff --git a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/screen/characterSheet/edit/composable/option/CheckedOption.kt b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/characterSheet/edit/composable/option/CheckedOption.kt similarity index 94% rename from composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/screen/characterSheet/edit/composable/option/CheckedOption.kt rename to composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/characterSheet/edit/composable/option/CheckedOption.kt index 55c6dbd..6425f3b 100644 --- a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/screen/characterSheet/edit/composable/option/CheckedOption.kt +++ b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/characterSheet/edit/composable/option/CheckedOption.kt @@ -1,4 +1,4 @@ -package com.pixelized.desktop.lwa.screen.characterSheet.edit.composable.option +package com.pixelized.desktop.lwa.ui.screen.characterSheet.edit.composable.option import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size diff --git a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/screen/characterSheet/edit/composable/option/Option.kt b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/characterSheet/edit/composable/option/Option.kt similarity index 88% rename from composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/screen/characterSheet/edit/composable/option/Option.kt rename to composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/characterSheet/edit/composable/option/Option.kt index 2c66b12..88e7244 100644 --- a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/screen/characterSheet/edit/composable/option/Option.kt +++ b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/characterSheet/edit/composable/option/Option.kt @@ -1,4 +1,4 @@ -package com.pixelized.desktop.lwa.screen.characterSheet.edit.composable.option +package com.pixelized.desktop.lwa.ui.screen.characterSheet.edit.composable.option import androidx.compose.runtime.Composable import androidx.compose.runtime.Stable diff --git a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/screen/characterSheet/edit/composable/textfield/FormWrapper.kt b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/characterSheet/edit/composable/textfield/FormWrapper.kt similarity index 96% rename from composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/screen/characterSheet/edit/composable/textfield/FormWrapper.kt rename to composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/characterSheet/edit/composable/textfield/FormWrapper.kt index e55f2f1..baf50fe 100644 --- a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/screen/characterSheet/edit/composable/textfield/FormWrapper.kt +++ b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/characterSheet/edit/composable/textfield/FormWrapper.kt @@ -1,4 +1,4 @@ -package com.pixelized.desktop.lwa.screen.characterSheet.edit.composable.textfield +package com.pixelized.desktop.lwa.ui.screen.characterSheet.edit.composable.textfield import androidx.compose.foundation.layout.height import androidx.compose.material.MaterialTheme diff --git a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/screen/main/MainPage.kt b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/main/MainPage.kt similarity index 93% rename from composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/screen/main/MainPage.kt rename to composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/main/MainPage.kt index 608441a..dcfe8d9 100644 --- a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/screen/main/MainPage.kt +++ b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/main/MainPage.kt @@ -1,4 +1,4 @@ -package com.pixelized.desktop.lwa.screen.main +package com.pixelized.desktop.lwa.ui.screen.main import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Box @@ -22,14 +22,13 @@ import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.text.style.TextOverflow -import androidx.compose.ui.unit.DpSize import androidx.compose.ui.unit.dp import com.pixelized.desktop.lwa.LocalWindowController -import com.pixelized.desktop.lwa.navigation.screen.LocalScreenController -import com.pixelized.desktop.lwa.navigation.screen.destination.navigateToNetwork -import com.pixelized.desktop.lwa.navigation.window.destination.navigateToCharacterSheet -import com.pixelized.desktop.lwa.navigation.window.destination.navigateToCharacterSheetEdit -import com.pixelized.desktop.lwa.navigation.window.destination.navigateToRollHistory +import com.pixelized.desktop.lwa.ui.navigation.screen.LocalScreenController +import com.pixelized.desktop.lwa.ui.navigation.screen.destination.navigateToNetwork +import com.pixelized.desktop.lwa.ui.navigation.window.destination.navigateToCharacterSheet +import com.pixelized.desktop.lwa.ui.navigation.window.destination.navigateToCharacterSheetEdit +import com.pixelized.desktop.lwa.ui.navigation.window.destination.navigateToRollHistory import kotlinx.coroutines.runBlocking import lwacharactersheet.composeapp.generated.resources.Res import lwacharactersheet.composeapp.generated.resources.character_sheet_edit__create__title diff --git a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/screen/main/MainPageViewModel.kt b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/main/MainPageViewModel.kt similarity index 96% rename from composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/screen/main/MainPageViewModel.kt rename to composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/main/MainPageViewModel.kt index d88cb67..cd9136a 100644 --- a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/screen/main/MainPageViewModel.kt +++ b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/main/MainPageViewModel.kt @@ -1,4 +1,4 @@ -package com.pixelized.desktop.lwa.screen.main +package com.pixelized.desktop.lwa.ui.screen.main import androidx.compose.runtime.Composable import androidx.compose.runtime.State diff --git a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/screen/network/NetworkFactory.kt b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/network/NetworkFactory.kt similarity index 91% rename from composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/screen/network/NetworkFactory.kt rename to composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/network/NetworkFactory.kt index e9ec5e3..a4ec9a9 100644 --- a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/screen/network/NetworkFactory.kt +++ b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/network/NetworkFactory.kt @@ -1,4 +1,4 @@ -package com.pixelized.desktop.lwa.screen.network +package com.pixelized.desktop.lwa.ui.screen.network import com.pixelized.desktop.lwa.repository.network.NetworkRepository.Status diff --git a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/screen/network/NetworkPage.kt b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/network/NetworkPage.kt similarity index 96% rename from composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/screen/network/NetworkPage.kt rename to composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/network/NetworkPage.kt index 0b5c07f..1b3924c 100644 --- a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/screen/network/NetworkPage.kt +++ b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/network/NetworkPage.kt @@ -1,4 +1,4 @@ -package com.pixelized.desktop.lwa.screen.network +package com.pixelized.desktop.lwa.ui.screen.network import androidx.compose.animation.AnimatedContent import androidx.compose.animation.fadeIn @@ -39,9 +39,9 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp import com.pixelized.desktop.lwa.LocalSnackHost -import com.pixelized.desktop.lwa.composable.blur.BlurContent -import com.pixelized.desktop.lwa.composable.error.snack.ErrorSnack -import com.pixelized.desktop.lwa.navigation.screen.LocalScreenController +import com.pixelized.desktop.lwa.ui.composable.blur.BlurContent +import com.pixelized.desktop.lwa.ui.composable.error.ErrorSnack +import com.pixelized.desktop.lwa.ui.navigation.screen.LocalScreenController import lwacharactersheet.composeapp.generated.resources.Res import lwacharactersheet.composeapp.generated.resources.network__host__label import lwacharactersheet.composeapp.generated.resources.network__player_name__label diff --git a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/screen/network/NetworkViewModel.kt b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/network/NetworkViewModel.kt similarity index 94% rename from composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/screen/network/NetworkViewModel.kt rename to composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/network/NetworkViewModel.kt index 34c5f36..b76e514 100644 --- a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/screen/network/NetworkViewModel.kt +++ b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/network/NetworkViewModel.kt @@ -1,4 +1,4 @@ -package com.pixelized.desktop.lwa.screen.network +package com.pixelized.desktop.lwa.ui.screen.network import androidx.compose.runtime.Composable import androidx.compose.runtime.Stable @@ -9,8 +9,8 @@ import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope -import com.pixelized.desktop.lwa.composable.blur.BlurContentController -import com.pixelized.desktop.lwa.composable.error.snack.ErrorSnackUio +import com.pixelized.desktop.lwa.ui.composable.blur.BlurContentController +import com.pixelized.desktop.lwa.ui.composable.error.ErrorSnackUio import com.pixelized.desktop.lwa.repository.network.NetworkRepository import com.pixelized.desktop.lwa.repository.settings.SettingsRepository import com.pixelized.desktop.lwa.utils.extention.collectAsState diff --git a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/screen/roll/RollPage.kt b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/roll/RollPage.kt similarity index 98% rename from composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/screen/roll/RollPage.kt rename to composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/roll/RollPage.kt index b7e9c18..671d47d 100644 --- a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/screen/roll/RollPage.kt +++ b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/roll/RollPage.kt @@ -1,4 +1,4 @@ -package com.pixelized.desktop.lwa.screen.roll +package com.pixelized.desktop.lwa.ui.screen.roll import androidx.compose.animation.AnimatedContent import androidx.compose.animation.SizeTransform @@ -48,8 +48,8 @@ import androidx.compose.ui.input.key.type 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.composable.key.KeyHandler -import com.pixelized.desktop.lwa.screen.roll.DifficultyUio.Difficulty +import com.pixelized.desktop.lwa.ui.composable.key.KeyHandler +import com.pixelized.desktop.lwa.ui.screen.roll.DifficultyUio.Difficulty import com.pixelized.desktop.lwa.utils.DisableInteractionSource import kotlinx.coroutines.launch import lwacharactersheet.composeapp.generated.resources.Res diff --git a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/screen/roll/RollViewModel.kt b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/roll/RollViewModel.kt similarity index 97% rename from composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/screen/roll/RollViewModel.kt rename to composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/roll/RollViewModel.kt index 0a1f210..97335a5 100644 --- a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/screen/roll/RollViewModel.kt +++ b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/roll/RollViewModel.kt @@ -1,4 +1,4 @@ -package com.pixelized.desktop.lwa.screen.roll +package com.pixelized.desktop.lwa.ui.screen.roll import androidx.compose.animation.core.Animatable import androidx.compose.animation.core.Spring @@ -11,8 +11,8 @@ import com.pixelized.desktop.lwa.business.ExpressionUseCase import com.pixelized.desktop.lwa.repository.characterSheet.CharacterSheetRepository import com.pixelized.desktop.lwa.repository.characterSheet.model.CharacterSheet import com.pixelized.desktop.lwa.repository.roll_history.RollHistoryRepository -import com.pixelized.desktop.lwa.screen.characterSheet.detail.CharacterSheetPageUio -import com.pixelized.desktop.lwa.screen.roll.DifficultyUio.Difficulty +import com.pixelized.desktop.lwa.ui.screen.characterSheet.detail.CharacterSheetPageUio +import com.pixelized.desktop.lwa.ui.screen.roll.DifficultyUio.Difficulty import kotlinx.coroutines.Job import kotlinx.coroutines.coroutineScope import kotlinx.coroutines.delay diff --git a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/screen/rollhistory/RollHistoryItem.kt b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/rollhistory/RollHistoryItem.kt similarity index 98% rename from composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/screen/rollhistory/RollHistoryItem.kt rename to composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/rollhistory/RollHistoryItem.kt index 0c822b8..d289d36 100644 --- a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/screen/rollhistory/RollHistoryItem.kt +++ b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/rollhistory/RollHistoryItem.kt @@ -1,4 +1,4 @@ -package com.pixelized.desktop.lwa.screen.rollhistory +package com.pixelized.desktop.lwa.ui.screen.rollhistory import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column diff --git a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/screen/rollhistory/RollHistoryPage.kt b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/rollhistory/RollHistoryPage.kt similarity index 97% rename from composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/screen/rollhistory/RollHistoryPage.kt rename to composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/rollhistory/RollHistoryPage.kt index 9e375bf..a295e1d 100644 --- a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/screen/rollhistory/RollHistoryPage.kt +++ b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/rollhistory/RollHistoryPage.kt @@ -1,4 +1,4 @@ -package com.pixelized.desktop.lwa.screen.rollhistory +package com.pixelized.desktop.lwa.ui.screen.rollhistory import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.PaddingValues diff --git a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/screen/rollhistory/RollHistoryViewModel.kt b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/rollhistory/RollHistoryViewModel.kt similarity index 96% rename from composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/screen/rollhistory/RollHistoryViewModel.kt rename to composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/rollhistory/RollHistoryViewModel.kt index 202164f..71f7505 100644 --- a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/screen/rollhistory/RollHistoryViewModel.kt +++ b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/rollhistory/RollHistoryViewModel.kt @@ -1,4 +1,4 @@ -package com.pixelized.desktop.lwa.screen.rollhistory +package com.pixelized.desktop.lwa.ui.screen.rollhistory import androidx.compose.runtime.State import androidx.compose.runtime.mutableStateOf diff --git a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/theme/LwaTheme.kt b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/theme/LwaTheme.kt similarity index 83% rename from composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/theme/LwaTheme.kt rename to composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/theme/LwaTheme.kt index ab00f0a..08333d9 100644 --- a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/theme/LwaTheme.kt +++ b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/theme/LwaTheme.kt @@ -1,47 +1,47 @@ -package com.pixelized.desktop.lwa.theme - -import androidx.compose.material.MaterialTheme -import androidx.compose.runtime.Composable -import androidx.compose.runtime.CompositionLocalProvider -import androidx.compose.runtime.Stable -import androidx.compose.runtime.compositionLocalOf -import androidx.compose.runtime.remember -import com.pixelized.desktop.lwa.theme.color.LwaColorTheme -import com.pixelized.desktop.lwa.theme.color.darkLwaColorTheme - -val LocalLwaTheme = compositionLocalOf { - error("Local Snack Controller is not yet ready") -} - -val MaterialTheme.lwa: LwaTheme - @Composable - @Stable - get() = LocalLwaTheme.current - -@Stable -data class LwaTheme( - val color: LwaColorTheme, -) - -@Composable -fun LwaTheme( - content: @Composable () -> Unit, -) { - val lwaColorTheme = darkLwaColorTheme() - val theme = remember { - LwaTheme( - color = lwaColorTheme, - ) - } - - CompositionLocalProvider( - LocalLwaTheme provides theme - ) { - MaterialTheme( - colors = lwaColorTheme.base, - typography = MaterialTheme.typography, - shapes = MaterialTheme.shapes, - content = content, - ) - } +package com.pixelized.desktop.lwa.ui.theme + +import androidx.compose.material.MaterialTheme +import androidx.compose.runtime.Composable +import androidx.compose.runtime.CompositionLocalProvider +import androidx.compose.runtime.Stable +import androidx.compose.runtime.compositionLocalOf +import androidx.compose.runtime.remember +import com.pixelized.desktop.lwa.ui.theme.color.LwaColorTheme +import com.pixelized.desktop.lwa.ui.theme.color.darkLwaColorTheme + +val LocalLwaTheme = compositionLocalOf { + error("Local Snack Controller is not yet ready") +} + +val MaterialTheme.lwa: LwaTheme + @Composable + @Stable + get() = LocalLwaTheme.current + +@Stable +data class LwaTheme( + val color: LwaColorTheme, +) + +@Composable +fun LwaTheme( + content: @Composable () -> Unit, +) { + val lwaColorTheme = darkLwaColorTheme() + val theme = remember { + LwaTheme( + color = lwaColorTheme, + ) + } + + CompositionLocalProvider( + LocalLwaTheme provides theme + ) { + MaterialTheme( + colors = lwaColorTheme.base, + typography = MaterialTheme.typography, + shapes = MaterialTheme.shapes, + content = content, + ) + } } \ No newline at end of file diff --git a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/theme/color/LwaColorPalette.kt b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/theme/color/LwaColorPalette.kt similarity index 72% rename from composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/theme/color/LwaColorPalette.kt rename to composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/theme/color/LwaColorPalette.kt index 691f062..06a24fc 100644 --- a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/theme/color/LwaColorPalette.kt +++ b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/theme/color/LwaColorPalette.kt @@ -1,4 +1,4 @@ -package com.pixelized.desktop.lwa.theme.color +package com.pixelized.desktop.lwa.ui.theme.color import androidx.compose.ui.graphics.Color diff --git a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/theme/color/LwaColorTheme.kt b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/theme/color/LwaColorTheme.kt similarity index 96% rename from composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/theme/color/LwaColorTheme.kt rename to composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/theme/color/LwaColorTheme.kt index ff93249..a24332a 100644 --- a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/theme/color/LwaColorTheme.kt +++ b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/theme/color/LwaColorTheme.kt @@ -1,4 +1,4 @@ -package com.pixelized.desktop.lwa.theme.color +package com.pixelized.desktop.lwa.ui.theme.color import androidx.compose.material.Colors import androidx.compose.material.darkColors diff --git a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/utils/preview/ContentPreview.kt b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/utils/preview/ContentPreview.kt index 45b89c0..5e87755 100644 --- a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/utils/preview/ContentPreview.kt +++ b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/utils/preview/ContentPreview.kt @@ -8,7 +8,7 @@ import androidx.compose.material.Surface import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier -import com.pixelized.desktop.lwa.theme.LwaTheme +import com.pixelized.desktop.lwa.ui.theme.LwaTheme @Composable fun ContentPreview(