@@ -7,11 +7,12 @@ import androidx.compose.material.MaterialTheme
77import androidx.compose.material.Switch
88import androidx.compose.material.SwitchDefaults
99import androidx.compose.material.Text
10- import androidx.compose.runtime.Composable
10+ import androidx.compose.runtime.*
1111import androidx.compose.ui.Alignment
1212import androidx.compose.ui.Modifier
1313import androidx.compose.ui.graphics.Color
1414import androidx.compose.ui.text.font.FontWeight
15+ import androidx.compose.ui.unit.DpOffset
1516import androidx.compose.ui.unit.DpSize
1617import androidx.compose.ui.unit.dp
1718import androidx.compose.ui.unit.sp
@@ -20,6 +21,7 @@ import androidx.compose.ui.window.WindowPosition
2021import androidx.compose.ui.window.rememberWindowState
2122import dev.paulee.ui.App
2223import dev.paulee.ui.Config
24+ import dev.paulee.ui.components.ButtonDropDown
2325
2426@Composable
2527fun SettingsWindow (onClose : () -> Unit ) {
@@ -28,6 +30,12 @@ fun SettingsWindow(onClose: () -> Unit) {
2830 size = DpSize (600 .dp, 500 .dp)
2931 )
3032
33+ val colorModes = App .ThemeMode .entries.map { it.name }
34+ var selectedTheme by remember { mutableStateOf(App .Theme .mode) }
35+
36+ val supportedLanguages = App .SupportedLanguage .entries.map { it.name }
37+ var selectedLanguage by remember { mutableStateOf(App .Language .current) }
38+
3139 Window (
3240 state = windowState,
3341 onCloseRequest = {
@@ -55,6 +63,22 @@ fun SettingsWindow(onClose: () -> Unit) {
5563 .verticalScroll(rememberScrollState()),
5664 verticalArrangement = Arrangement .spacedBy(24 .dp)
5765 ) {
66+ SettingRow (
67+ label = " Language" ,
68+ description = " Select language"
69+ ) {
70+ ButtonDropDown (
71+ items = supportedLanguages,
72+ selected = selectedLanguage.name,
73+ menuOffset = DpOffset (x = (- 10 ).dp, y = 0 .dp)
74+ ) {
75+ val lang = App .SupportedLanguage .valueOf(it)
76+
77+ selectedLanguage = lang
78+ App .Language .set(lang)
79+ }
80+ }
81+
5882 SettingRow (
5983 label = " Width Limit" ,
6084 description = " Disable table column width restrictions"
@@ -80,6 +104,23 @@ fun SettingsWindow(onClose: () -> Unit) {
80104 )
81105 )
82106 }
107+
108+ SettingRow (
109+ label = " Theme" ,
110+ description = " Select theme"
111+ ) {
112+ ButtonDropDown (
113+ items = colorModes,
114+ selected = selectedTheme.name,
115+ menuOffset = DpOffset (x = (- 10 ).dp, y = 0 .dp)
116+
117+ ) {
118+ val mode = App .ThemeMode .valueOf(it)
119+
120+ selectedTheme = mode
121+ App .Theme .set(mode)
122+ }
123+ }
83124 }
84125 }
85126 }
@@ -90,7 +131,7 @@ fun SettingsWindow(onClose: () -> Unit) {
90131private fun SettingRow (
91132 label : String ,
92133 description : String ,
93- content : @Composable () -> Unit
134+ content : @Composable () -> Unit ,
94135) {
95136 Row (
96137 modifier = Modifier .fillMaxWidth(),
0 commit comments