Simple-Calculator/app/src/main/kotlin/com/simplemobiletools/calculator/compose/screens/SettingsScreen.kt

89 lines
3.9 KiB
Kotlin

package com.simplemobiletools.calculator.compose.screens
import androidx.compose.foundation.background
import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.*
import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.verticalScroll
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.ArrowBack
import androidx.compose.material3.*
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.toArgb
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.unit.dp
import androidx.core.graphics.toColor
import com.simplemobiletools.calculator.compose.extensions.MyDevices
import com.simplemobiletools.calculator.compose.settings.SettingsCheckBoxComponent
import com.simplemobiletools.calculator.compose.settings.SettingsGroup
import com.simplemobiletools.calculator.compose.settings.SettingsPreferenceComponent
import com.simplemobiletools.calculator.compose.settings.SettingsTitleTextComponent
import com.simplemobiletools.calculator.compose.theme.AppThemeSurface
import com.simplemobiletools.commons.R
@Composable
fun SettingsScreen(
goBack: () -> Unit,
customizeColors: () -> Unit,
backgroundColor: Int
) {
Scaffold(
modifier = Modifier
.fillMaxSize()
.background(Color(backgroundColor)),
topBar = {
TopAppBar(
title = {
Text(
text = stringResource(id = R.string.settings),
modifier = Modifier
.padding(start = 16.dp)
.fillMaxWidth()
)
},
navigationIcon = {
Icon(
imageVector = Icons.Filled.ArrowBack, contentDescription = stringResource(id = R.string.back),
modifier = Modifier
.clickable { goBack() }
.padding(start = 8.dp)
)
}
)
}
) { paddingValues ->
Column(
Modifier
.padding(paddingValues)
.verticalScroll(rememberScrollState())
) {
SettingsGroup(title = {
SettingsTitleTextComponent(text = stringResource(id = R.string.color_customization))
}) {
SettingsPreferenceComponent(preferenceTitle = stringResource(id = R.string.customize_colors), doOnPreferenceClick = customizeColors)
SettingsPreferenceComponent(preferenceTitle = stringResource(id = R.string.customize_widget_colors))
Spacer(modifier = Modifier.padding(bottom = 16.dp))
}
Divider()
SettingsGroup(title = {
SettingsTitleTextComponent(text = stringResource(id = R.string.general_settings))
}) {
SettingsPreferenceComponent(preferenceTitle = stringResource(id = R.string.purchase_simple_thank_you))
SettingsCheckBoxComponent(title = stringResource(id = R.string.use_english_language))
SettingsPreferenceComponent(preferenceTitle = stringResource(id = R.string.language), preferenceSummary = "English")
SettingsCheckBoxComponent(title = stringResource(id = R.string.vibrate_on_button_press))
SettingsCheckBoxComponent(title = stringResource(id = R.string.prevent_phone_from_sleeping))
SettingsCheckBoxComponent(title = stringResource(id = com.simplemobiletools.calculator.R.string.use_comma_as_decimal_mark))
}
}
}
}
@MyDevices
@Composable
private fun SettingsScreenPreview() {
AppThemeSurface { SettingsScreen(goBack = {}, customizeColors = {}, backgroundColor = MaterialTheme.colorScheme.background.toArgb()) }
}