MainSettingsPage.kt 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. package eu.mjdev.desktop.components.controlcenter.pages
  2. import androidx.compose.foundation.background
  3. import androidx.compose.foundation.gestures.Orientation
  4. import androidx.compose.foundation.layout.*
  5. import androidx.compose.material.Divider
  6. import androidx.compose.material.icons.Icons
  7. import androidx.compose.material.icons.filled.Home
  8. import androidx.compose.runtime.getValue
  9. import androidx.compose.ui.Alignment
  10. import androidx.compose.ui.Modifier
  11. import androidx.compose.ui.unit.dp
  12. import eu.mjdev.desktop.components.controlcenter.ControlCenterPage
  13. import eu.mjdev.desktop.components.custom.DateTime
  14. import eu.mjdev.desktop.components.custom.PowerBlock
  15. import eu.mjdev.desktop.components.custom.UserAvatar
  16. import eu.mjdev.desktop.extensions.ColorUtils.alpha
  17. import eu.mjdev.desktop.extensions.Modifier.rectShadow
  18. import eu.mjdev.desktop.helpers.internal.Palette.Companion.rememberBackgroundColor
  19. import eu.mjdev.desktop.helpers.internal.Palette.Companion.rememberBorderColor
  20. import eu.mjdev.desktop.helpers.internal.Palette.Companion.rememberIconTintColor
  21. import eu.mjdev.desktop.helpers.internal.Palette.Companion.rememberTextColor
  22. @Suppress("FunctionName")
  23. fun MainSettingsPage() = ControlCenterPage(
  24. icon = Icons.Filled.Home,
  25. name = "Home"
  26. ) {
  27. val backgroundColor by rememberBackgroundColor(api)
  28. val textColor by rememberTextColor(api)
  29. val borderColor by rememberBorderColor(api)
  30. val iconsTintColor by rememberIconTintColor(api)
  31. Box(
  32. modifier = Modifier.fillMaxSize()
  33. ) {
  34. Column(
  35. modifier = Modifier
  36. .fillMaxWidth()
  37. .align(Alignment.TopCenter)
  38. .rectShadow(8.dp, borderColor.copy(alpha = 0.3f))
  39. ) {
  40. UserAvatar(
  41. modifier = Modifier.background(backgroundColor),
  42. avatarSize = 128.dp,
  43. orientation = Orientation.Vertical,
  44. onUserAvatarClick = {
  45. // todo
  46. }
  47. )
  48. Divider(
  49. modifier = Modifier.fillMaxWidth()
  50. .height(2.dp),
  51. color = borderColor,
  52. thickness = 2.dp
  53. )
  54. DateTime(
  55. textColor = textColor,
  56. backgroundColor = backgroundColor
  57. )
  58. }
  59. Box(
  60. modifier = Modifier
  61. .fillMaxWidth()
  62. .align(Alignment.BottomCenter)
  63. ) {
  64. // FlexibleBottomSheet(
  65. // onDismissRequest = {},
  66. // sheetState = rememberFlexibleBottomSheetState(
  67. // flexibleSheetSize = FlexibleSheetSize(
  68. // fullyExpanded = 0.9f,
  69. // intermediatelyExpanded = 0.5f,
  70. // slightlyExpanded = 0.15f,
  71. // ),
  72. // isModal = true,
  73. // skipSlightlyExpanded = true,
  74. // ),
  75. // containerColor = backgroundColor,
  76. // ) {
  77. // Text(
  78. // modifier = Modifier
  79. // .fillMaxWidth()
  80. // .padding(8.dp),
  81. // text = "This is Flexible Bottom Sheet",
  82. // textAlign = TextAlign.Center,
  83. // color = Color.White,
  84. // )
  85. // }
  86. Column(
  87. modifier = Modifier
  88. .fillMaxWidth()
  89. .wrapContentHeight()
  90. .align(Alignment.BottomCenter)
  91. ) {
  92. PowerBlock(
  93. backgroundColor = backgroundColor,
  94. shadowColor=borderColor.alpha(0.3f),
  95. iconTintColor = iconsTintColor,
  96. // textColor = textColor,
  97. onPowerButtonClick = {
  98. // todo : dialog
  99. api.shutdown()
  100. }
  101. )
  102. }
  103. }
  104. }
  105. }