Simple-Flashlight/app/src/main/kotlin/com/simplemobiletools/flashlight/screens/SettingsScreen.kt

144 lines
5.2 KiB
Kotlin

package com.simplemobiletools.flashlight.screens
import androidx.compose.runtime.Composable
import androidx.compose.ui.res.stringResource
import com.simplemobiletools.commons.compose.extensions.MyDevices
import com.simplemobiletools.commons.compose.lists.SimpleColumnScaffold
import com.simplemobiletools.commons.compose.settings.*
import com.simplemobiletools.commons.compose.theme.AppThemeSurface
import com.simplemobiletools.commons.compose.theme.SimpleTheme
import com.simplemobiletools.flashlight.R
@Composable
internal fun SettingsScreen(
colorCustomizationSection: @Composable () -> Unit,
generalSection: @Composable () -> Unit,
goBack: () -> Unit,
) {
SimpleColumnScaffold(title = stringResource(id = com.simplemobiletools.commons.R.string.settings), goBack = goBack) {
SettingsGroup(title = {
SettingsTitleTextComponent(text = stringResource(id = com.simplemobiletools.commons.R.string.color_customization))
}) {
colorCustomizationSection()
}
SettingsHorizontalDivider()
SettingsGroup(title = {
SettingsTitleTextComponent(text = stringResource(id = com.simplemobiletools.commons.R.string.general_settings))
}) {
generalSection()
}
}
}
@Composable
internal fun ColorCustomizationSettingsSection(
customizeColors: () -> Unit,
customizeWidgetColors: () -> Unit,
) {
SettingsPreferenceComponent(
label = stringResource(id = com.simplemobiletools.commons.R.string.customize_colors),
doOnPreferenceClick = customizeColors,
)
SettingsPreferenceComponent(
label = stringResource(id = com.simplemobiletools.commons.R.string.customize_widget_colors),
doOnPreferenceClick = customizeWidgetColors
)
}
@Composable
internal fun GeneralSettingsSection(
showUseEnglish: Boolean,
useEnglishChecked: Boolean,
showDisplayLanguage: Boolean,
displayLanguage: String,
turnFlashlightOnStartupChecked: Boolean,
forcePortraitModeChecked: Boolean,
showBrightDisplayButtonChecked: Boolean,
showSosButtonChecked: Boolean,
showStroboscopeButtonChecked: Boolean,
onUseEnglishPress: (Boolean) -> Unit,
onSetupLanguagePress: () -> Unit,
onTurnFlashlightOnStartupPress: (Boolean) -> Unit,
onForcePortraitModePress: (Boolean) -> Unit,
onShowBrightDisplayButtonPress: (Boolean) -> Unit,
onShowSosButtonPress: (Boolean) -> Unit,
onShowStroboscopeButtonPress: (Boolean) -> Unit,
) {
if (showUseEnglish) {
SettingsCheckBoxComponent(
label = stringResource(id = com.simplemobiletools.commons.R.string.use_english_language),
initialValue = useEnglishChecked,
onChange = onUseEnglishPress
)
}
if (showDisplayLanguage) {
SettingsPreferenceComponent(
label = stringResource(id = com.simplemobiletools.commons.R.string.language),
value = displayLanguage,
doOnPreferenceClick = onSetupLanguagePress
)
}
SettingsCheckBoxComponent(
label = stringResource(id = R.string.turn_flashlight_on),
initialValue = turnFlashlightOnStartupChecked,
onChange = onTurnFlashlightOnStartupPress
)
SettingsCheckBoxComponent(
label = stringResource(id = com.simplemobiletools.commons.R.string.force_portrait_mode),
initialValue = forcePortraitModeChecked,
onChange = onForcePortraitModePress
)
SettingsCheckBoxComponent(
label = stringResource(id = R.string.show_bright_display),
initialValue = showBrightDisplayButtonChecked,
onChange = onShowBrightDisplayButtonPress
)
SettingsCheckBoxComponent(
label = stringResource(id = R.string.show_sos),
initialValue = showSosButtonChecked,
onChange = onShowSosButtonPress
)
SettingsCheckBoxComponent(
label = stringResource(id = R.string.show_stroboscope),
initialValue = showStroboscopeButtonChecked,
onChange = onShowStroboscopeButtonPress
)
}
@Composable
@MyDevices
private fun SettingsScreenPreview() {
AppThemeSurface {
SettingsScreen(
colorCustomizationSection = {
ColorCustomizationSettingsSection(
customizeColors = {},
customizeWidgetColors = {},
)
},
generalSection = {
GeneralSettingsSection(
useEnglishChecked = true,
showUseEnglish = true,
showDisplayLanguage = true,
displayLanguage = "English",
turnFlashlightOnStartupChecked = false,
forcePortraitModeChecked = true,
showBrightDisplayButtonChecked = true,
showSosButtonChecked = true,
showStroboscopeButtonChecked = true,
onUseEnglishPress = {},
onSetupLanguagePress = {},
onTurnFlashlightOnStartupPress = {},
onForcePortraitModePress = {},
onShowBrightDisplayButtonPress = {},
onShowSosButtonPress = {},
onShowStroboscopeButtonPress = {},
)
},
goBack = {},
)
}
}