Desktop Window (WIP)

This commit is contained in:
2024-06-17 05:21:50 +02:00
parent 6384a65cbb
commit e4f89afe94
3 changed files with 45 additions and 18 deletions

View File

@@ -8,9 +8,12 @@ import androidx.compose.material3.Text
import androidx.compose.runtime.* import androidx.compose.runtime.*
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import domain.Animals
import domain.Item
import org.jetbrains.compose.resources.ExperimentalResourceApi import org.jetbrains.compose.resources.ExperimentalResourceApi
import org.jetbrains.compose.resources.painterResource import org.jetbrains.compose.resources.painterResource
import org.jetbrains.compose.ui.tooling.preview.Preview import org.jetbrains.compose.ui.tooling.preview.Preview
import ui.DrawItem
import yaep.composeapp.generated.resources.Res import yaep.composeapp.generated.resources.Res
import yaep.composeapp.generated.resources.compose_multiplatform import yaep.composeapp.generated.resources.compose_multiplatform
@@ -19,19 +22,16 @@ import yaep.composeapp.generated.resources.compose_multiplatform
@Composable @Composable
@Preview @Preview
fun App() { fun App() {
MaterialTheme { val size = 6
var showContent by remember { mutableStateOf(false) } val options = remember { Animals.items.shuffled().take(size) }
Column(Modifier.fillMaxWidth(), horizontalAlignment = Alignment.CenterHorizontally) { var selectedItem by remember { mutableStateOf<Item<Animals>?>(Item(options.random())) }
Button(onClick = { showContent = !showContent }) { // var selectedItem by remember { mutableStateOf<Item<Animals>?>(null) }
Text("Click me!") // Selector(
} // category = Animals,
AnimatedVisibility(showContent) { // options = Animals.items.map { Item(it) },
val greeting = remember { Greeting().greet() } // selectedItem = selectedItem,
Column(Modifier.fillMaxWidth(), horizontalAlignment = Alignment.CenterHorizontally) { // onSelectItem = { selectedItem = it }
Image(painterResource(Res.drawable.compose_multiplatform), null) // )
Text("Compose: $greeting") DrawItem(selectedItem!!)
}
}
}
}
} }

View File

@@ -1,4 +1,3 @@
import androidx.compose.desktop.ui.tooling.preview.Preview
import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.size
import androidx.compose.foundation.layout.width import androidx.compose.foundation.layout.width
@@ -20,10 +19,16 @@ import androidx.compose.ui.window.WindowState
import org.jetbrains.compose.resources.ExperimentalResourceApi import org.jetbrains.compose.resources.ExperimentalResourceApi
import org.jetbrains.compose.resources.painterResource import org.jetbrains.compose.resources.painterResource
import ui.theme.AppTheme import ui.theme.AppTheme
import yaep.composeapp.generated.resources.Res
import yaep.composeapp.generated.resources.moon
import yaep.composeapp.generated.resources.sun
import yaep.composeapp.generated.resources.window_close
import yaep.composeapp.generated.resources.window_maximize
import yaep.composeapp.generated.resources.window_minimize
@Composable @Composable
@OptIn(ExperimentalMaterial3Api::class, ExperimentalResourceApi::class) @OptIn(ExperimentalMaterial3Api::class, ExperimentalResourceApi::class)
fun WindowScope.App( fun WindowScope.DesktopWindow(
useDarkMode: Boolean, useDarkMode: Boolean,
topBar: @Composable () -> Unit, topBar: @Composable () -> Unit,
content: @Composable () -> Unit content: @Composable () -> Unit
@@ -41,6 +46,7 @@ fun WindowScope.App(
} }
} }
@OptIn(ExperimentalMaterial3Api::class)
@Composable @Composable
fun AppBar( fun AppBar(
useDarkMode: Boolean, useDarkMode: Boolean,

View File

@@ -1,11 +1,32 @@
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue
import androidx.compose.ui.window.Window import androidx.compose.ui.window.Window
import androidx.compose.ui.window.WindowPlacement
import androidx.compose.ui.window.application import androidx.compose.ui.window.application
import androidx.compose.ui.window.rememberWindowState
fun main() = application { fun main() = application {
Window( Window(
onCloseRequest = ::exitApplication, onCloseRequest = ::exitApplication,
title = "YAEP", title = "YAEP",
) { ) {
App() var useDarkMode by remember { mutableStateOf(true) }
DesktopWindow(
useDarkMode = useDarkMode,
topBar = {
AppBar(
useDarkMode = useDarkMode,
setDarkMode = { useDarkMode = it },
onCloseRequest = ::exitApplication,
windowState = rememberWindowState(
placement = WindowPlacement.Floating
)
)
}
) {
App()
}
} }
} }