Desktop Window (WIP)
This commit is contained in:
@@ -8,9 +8,12 @@ import androidx.compose.material3.Text
|
||||
import androidx.compose.runtime.*
|
||||
import androidx.compose.ui.Alignment
|
||||
import androidx.compose.ui.Modifier
|
||||
import domain.Animals
|
||||
import domain.Item
|
||||
import org.jetbrains.compose.resources.ExperimentalResourceApi
|
||||
import org.jetbrains.compose.resources.painterResource
|
||||
import org.jetbrains.compose.ui.tooling.preview.Preview
|
||||
import ui.DrawItem
|
||||
|
||||
import yaep.composeapp.generated.resources.Res
|
||||
import yaep.composeapp.generated.resources.compose_multiplatform
|
||||
@@ -19,19 +22,16 @@ import yaep.composeapp.generated.resources.compose_multiplatform
|
||||
@Composable
|
||||
@Preview
|
||||
fun App() {
|
||||
MaterialTheme {
|
||||
var showContent by remember { mutableStateOf(false) }
|
||||
Column(Modifier.fillMaxWidth(), horizontalAlignment = Alignment.CenterHorizontally) {
|
||||
Button(onClick = { showContent = !showContent }) {
|
||||
Text("Click me!")
|
||||
}
|
||||
AnimatedVisibility(showContent) {
|
||||
val greeting = remember { Greeting().greet() }
|
||||
Column(Modifier.fillMaxWidth(), horizontalAlignment = Alignment.CenterHorizontally) {
|
||||
Image(painterResource(Res.drawable.compose_multiplatform), null)
|
||||
Text("Compose: $greeting")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
val size = 6
|
||||
val options = remember { Animals.items.shuffled().take(size) }
|
||||
var selectedItem by remember { mutableStateOf<Item<Animals>?>(Item(options.random())) }
|
||||
// var selectedItem by remember { mutableStateOf<Item<Animals>?>(null) }
|
||||
// Selector(
|
||||
// category = Animals,
|
||||
// options = Animals.items.map { Item(it) },
|
||||
// selectedItem = selectedItem,
|
||||
// onSelectItem = { selectedItem = it }
|
||||
// )
|
||||
DrawItem(selectedItem!!)
|
||||
|
||||
}
|
||||
@@ -1,4 +1,3 @@
|
||||
import androidx.compose.desktop.ui.tooling.preview.Preview
|
||||
import androidx.compose.foundation.layout.Spacer
|
||||
import androidx.compose.foundation.layout.size
|
||||
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.painterResource
|
||||
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
|
||||
@OptIn(ExperimentalMaterial3Api::class, ExperimentalResourceApi::class)
|
||||
fun WindowScope.App(
|
||||
fun WindowScope.DesktopWindow(
|
||||
useDarkMode: Boolean,
|
||||
topBar: @Composable () -> Unit,
|
||||
content: @Composable () -> Unit
|
||||
@@ -41,6 +46,7 @@ fun WindowScope.App(
|
||||
}
|
||||
}
|
||||
|
||||
@OptIn(ExperimentalMaterial3Api::class)
|
||||
@Composable
|
||||
fun AppBar(
|
||||
useDarkMode: Boolean,
|
||||
|
||||
@@ -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.WindowPlacement
|
||||
import androidx.compose.ui.window.application
|
||||
import androidx.compose.ui.window.rememberWindowState
|
||||
|
||||
fun main() = application {
|
||||
Window(
|
||||
onCloseRequest = ::exitApplication,
|
||||
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()
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user