You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
50 lines
2.1 KiB
Kotlin
50 lines
2.1 KiB
Kotlin
package org.xtimms.tokusho
|
|
|
|
import android.os.Build
|
|
import androidx.compose.foundation.layout.PaddingValues
|
|
import androidx.compose.material3.dynamicDarkColorScheme
|
|
import androidx.compose.runtime.Composable
|
|
import androidx.compose.runtime.CompositionLocalProvider
|
|
import androidx.compose.runtime.collectAsState
|
|
import androidx.compose.runtime.compositionLocalOf
|
|
import androidx.compose.ui.graphics.Color
|
|
import androidx.compose.ui.platform.LocalContext
|
|
import androidx.compose.ui.unit.Dp
|
|
import androidx.compose.ui.unit.dp
|
|
import org.xtimms.shiki.ui.theme.SEED
|
|
import org.xtimms.tokusho.core.prefs.AppSettings
|
|
import org.xtimms.tokusho.core.prefs.DarkThemePreference
|
|
import org.xtimms.tokusho.core.prefs.paletteStyles
|
|
import org.xtimms.tokusho.ui.monet.LocalTonalPalettes
|
|
import org.xtimms.tokusho.ui.monet.PaletteStyle
|
|
import org.xtimms.tokusho.ui.monet.TonalPalettes.Companion.toTonalPalettes
|
|
|
|
data class BottomSheetScrollState(
|
|
val topPadding: Dp,
|
|
)
|
|
|
|
val LocalBottomSheetScrollState = compositionLocalOf { BottomSheetScrollState(0.dp) }
|
|
val LocalDarkTheme = compositionLocalOf { DarkThemePreference() }
|
|
val LocalSeedColor = compositionLocalOf { SEED }
|
|
val LocalDynamicColorSwitch = compositionLocalOf { false }
|
|
val LocalPaletteStyleIndex = compositionLocalOf { 0 }
|
|
val LocalWindowInsets = compositionLocalOf { PaddingValues(0.dp) }
|
|
|
|
@Composable
|
|
fun SettingsProvider(content: @Composable () -> Unit) {
|
|
AppSettings.AppSettingsStateFlow.collectAsState().value.run {
|
|
CompositionLocalProvider(
|
|
LocalDarkTheme provides darkTheme,
|
|
LocalSeedColor provides seedColor,
|
|
LocalPaletteStyleIndex provides paletteStyleIndex,
|
|
LocalTonalPalettes provides if (isDynamicColorEnabled && Build.VERSION.SDK_INT >= 31) dynamicDarkColorScheme(
|
|
LocalContext.current
|
|
).toTonalPalettes()
|
|
else Color(seedColor).toTonalPalettes(
|
|
paletteStyles.getOrElse(paletteStyleIndex) { PaletteStyle.TonalSpot }
|
|
),
|
|
LocalDynamicColorSwitch provides isDynamicColorEnabled,
|
|
content = content
|
|
)
|
|
}
|
|
} |