Main.kt 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. package eu.mjdev.desktop
  2. import androidx.compose.material.MaterialTheme
  3. import androidx.compose.runtime.CompositionLocalProvider
  4. import androidx.compose.runtime.rememberCoroutineScope
  5. import androidx.compose.ui.unit.dp
  6. import androidx.compose.ui.window.application
  7. import eu.mjdev.desktop.components.appsmenu.AppsMenu
  8. import eu.mjdev.desktop.components.controlcenter.ControlCenter
  9. import eu.mjdev.desktop.components.desktoppanel.DesktopPanel
  10. import eu.mjdev.desktop.components.slidemenu.VisibilityState.Companion.rememberVisibilityState
  11. import eu.mjdev.desktop.provider.DesktopProvider
  12. import eu.mjdev.desktop.provider.DesktopProvider.Companion.LocalDesktop
  13. import eu.mjdev.desktop.windows.MainWindow
  14. fun main() = application(
  15. exitProcessOnExit = true
  16. ) {
  17. val scope = rememberCoroutineScope()
  18. CompositionLocalProvider(
  19. LocalDesktop provides DesktopProvider(scope)
  20. ) {
  21. MaterialTheme {
  22. val controlCenterState = rememberVisibilityState()
  23. val panelState = rememberVisibilityState()
  24. val menuState = rememberVisibilityState()
  25. // scope.launch {
  26. // api.askGemini("How are you today?").let {
  27. // log { "Gemini answer: $it" }
  28. // }
  29. // }
  30. MainWindow(
  31. panelState = panelState,
  32. controlCenterState = controlCenterState,
  33. menuState = menuState
  34. ) {
  35. // Dialog(
  36. // onDismissRequest = {},
  37. // properties = DialogProperties()
  38. // ) {
  39. // Text("dialog content")
  40. // }
  41. }
  42. DesktopPanel(
  43. panelState = panelState,
  44. onMenuIconClicked = {
  45. menuState.toggle()
  46. }
  47. )
  48. AppsMenu(
  49. // todo
  50. bottomY = 64.dp,
  51. menuState = menuState,
  52. panelState = panelState
  53. )
  54. ControlCenter(
  55. controlCenterState = controlCenterState
  56. )
  57. }
  58. }
  59. }