| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129 |
- package eu.mjdev.desktop.data
- import androidx.compose.runtime.mutableStateOf
- import androidx.compose.ui.graphics.Color
- import androidx.compose.ui.unit.Dp
- import androidx.compose.ui.unit.DpSize
- import androidx.compose.ui.unit.dp
- import eu.mjdev.desktop.extensions.Compose.SuperDarkGray
- import eu.mjdev.desktop.fonts.MaterialIconFont
- import eu.mjdev.desktop.fonts.MaterialSymbolsSharp
- // todo all customizable
- @Suppress("unused", "MemberVisibilityCanBePrivate")
- class Theme(
- backgroundColor: Color,
- backgroundRotationDelay: Long,
- panelLocation: PanelLocation,
- panelDividerWidth: Dp,
- panelContentPadding: Dp,
- panelHideDelay: Long,
- controlCenterLocation: ControlCenterLocation,
- controlPanelHideDelay: Long,
- controlCenterExpandedWidthPercent: Int,
- controlCenterDividerColor: Color = backgroundColor,
- controlCenterDividerWidth: Dp,
- controlCenterIconColor: Color,
- controlCenterIconSize: DpSize,
- controlCenterBackgroundAlpha: Float,
- iconSet: MaterialIconFont,
- appMenuMinWidth: Dp,
- appMenuMinHeight: Dp,
- appMenuOuterPadding: Dp,
- ) {
- val backgroundColorState = mutableStateOf(backgroundColor)
- val backgroundRotationDelayState = mutableStateOf(backgroundRotationDelay)
- val panelLocationState = mutableStateOf(panelLocation)
- val panelHideDelayState = mutableStateOf(panelHideDelay)
- val panelDividerWidthState = mutableStateOf(panelDividerWidth)
- val panelContentPaddingState = mutableStateOf(panelContentPadding)
- val controlCenterLocationState = mutableStateOf(controlCenterLocation)
- val controlPanelHideDelayState = mutableStateOf(controlPanelHideDelay)
- var controlCenterExpandedWidthState = mutableStateOf(controlCenterExpandedWidthPercent)
- val controlCenterDividerColorState = mutableStateOf(controlCenterDividerColor)
- val controlCenterDividerWidthState = mutableStateOf(controlCenterDividerWidth)
- val controlCenterIconColorState = mutableStateOf(controlCenterIconColor)
- val controlCenterIconSizeState = mutableStateOf(controlCenterIconSize)
- val iconSetState = mutableStateOf(iconSet)
- val appMenuMinWidthState = mutableStateOf(appMenuMinWidth)
- val appMenuMinHeightState = mutableStateOf(appMenuMinHeight)
- val appMenuOuterPaddingState = mutableStateOf(appMenuOuterPadding)
- var backgroundColor
- get() = backgroundColorState.value
- set(value) {
- backgroundColorState.value = value
- }
- val panelLocation get() = panelLocationState.value
- val panelDividerWidth get() = panelDividerWidthState.value
- val panelContentPadding get() = panelContentPaddingState.value
- val panelHideDelay get() = panelHideDelayState.value
- val controlCenterBackgroundAlphaState = mutableStateOf(controlCenterBackgroundAlpha)
- val controlCenterLocation get() = controlCenterLocationState.value
- val controlPanelHideDelay get() = controlPanelHideDelayState.value
- var controlCenterExpandedWidth
- get() = controlCenterExpandedWidthState.value
- set(value) {
- controlCenterExpandedWidthState.value = value
- }
- val controlCenterDividerColor get() = controlCenterDividerColorState.value
- val controlCenterDividerWidth get() = controlCenterDividerWidthState.value
- val controlCenterIconColor get() = controlCenterIconColorState.value
- val controlCenterIconSize get() = controlCenterIconSizeState.value
- val controlCenterBackgroundAlpha get() = controlCenterBackgroundAlphaState.value
- val iconSet get() = iconSetState.value
- val backgroundRotationDelay get() = backgroundRotationDelayState.value
- val appMenuMinWidth get() = appMenuMinWidthState.value
- val appMenuMinHeight get() = appMenuMinHeightState.value
- val appMenuOuterPadding get() = appMenuOuterPaddingState.value
- companion object {
- val themeCache = mutableMapOf<String, Theme>()
- private val DEFAULT = Theme(
- iconSet = MaterialSymbolsSharp,
- backgroundColor = Color.SuperDarkGray,
- backgroundRotationDelay = 60000,
- panelLocation = PanelLocation.Bottom,
- panelDividerWidth = 16.dp,
- panelContentPadding = 4.dp,
- panelHideDelay = 0L,
- controlCenterLocation = ControlCenterLocation.Right,
- controlPanelHideDelay = 5000L,
- controlCenterExpandedWidthPercent = 25,
- controlCenterDividerColor = Color.SuperDarkGray,
- controlCenterDividerWidth = 4.dp,
- controlCenterIconColor = Color.White,
- controlCenterIconSize = DpSize(32.dp, 32.dp),
- controlCenterBackgroundAlpha = 0.6f,
- appMenuMinWidth = 480.dp,
- appMenuMinHeight = 640.dp,
- appMenuOuterPadding = 2.dp
- )
- // todo load from user settings
- fun load(
- user: User
- ): Theme = themeCache[user.userName] ?: DEFAULT.apply {
- themeCache[user.userName] = this
- }
- }
- }
|