@@ -6,6 +6,7 @@ import androidx.compose.runtime.getValue
66import androidx.compose.runtime.remember
77import top.fifthlight.combine.data.Text
88import top.fifthlight.combine.data.TextColor
9+ import top.fifthlight.combine.layout.Alignment
910import top.fifthlight.combine.layout.Arrangement
1011import top.fifthlight.combine.modifier.Modifier
1112import top.fifthlight.combine.modifier.drawing.border
@@ -16,20 +17,50 @@ import top.fifthlight.combine.modifier.scroll.verticalScroll
1617import top.fifthlight.combine.widget.layout.Column
1718import top.fifthlight.combine.widget.ui.Text
1819import top.fifthlight.touchcontroller.assets.Texts
20+ import top.fifthlight.touchcontroller.common.config.data.ControlConfig
21+ import top.fifthlight.touchcontroller.common.config.data.StatusConfig
22+ import top.fifthlight.touchcontroller.common.ui.config.model.LocalConfigScreenModel
1923import top.fifthlight.touchcontroller.common.ui.config.tab.Tab
2024import top.fifthlight.touchcontroller.common.ui.config.tab.TabOptions
2125import top.fifthlight.touchcontroller.common.ui.config.tab.status.model.StatusTabModel
2226import top.fifthlight.touchcontroller.common.ui.theme.LocalTouchControllerTheme
27+ import top.fifthlight.touchcontroller.common.ui.widget.ListButton
2328
2429object StatusTab : Tab() {
2530 override val options = TabOptions (
2631 titleId = Texts .SCREEN_CONFIG_STATUS_TITLE ,
2732 group = null ,
2833 index = 1 ,
34+ onReset = { copy(status = StatusConfig ()) },
2935 )
3036
37+ @Composable
38+ private fun StatusItem (
39+ modifier : Modifier = Modifier ,
40+ title : Text ,
41+ description : Text ,
42+ selected : Boolean ,
43+ onClick : () -> Unit ,
44+ ) {
45+ ListButton (
46+ modifier = Modifier .then(modifier),
47+ checked = selected,
48+ onClick = onClick,
49+ ) {
50+ Column (
51+ modifier = Modifier .alignment(Alignment .CenterLeft ),
52+ verticalArrangement = Arrangement .spacedBy(4 ),
53+ ) {
54+ Text (title)
55+ Text (description)
56+ }
57+ }
58+ }
59+
3160 @Composable
3261 override fun Content () {
62+ val screenModel = LocalConfigScreenModel .current
63+ val screenState by screenModel.uiState.collectAsState()
3364 val tabModel = remember { StatusTabModel () }
3465 val uiState by tabModel.uiState.collectAsState()
3566 Column (
@@ -67,6 +98,38 @@ object StatusTab : Tab() {
6798 Text (Text .format(Texts .SCREEN_CONFIG_STATUS_DEBUG_INFO_SYSTEM , systemInfo.system))
6899 Text (Text .format(Texts .SCREEN_CONFIG_STATUS_DEBUG_INFO_ARCHITECTURE , systemInfo.arch))
69100 }
101+
102+ Text (Text .translatable(Texts .SCREEN_CONFIG_STATUS_STATUS_TITLE ))
103+
104+ Column (Modifier .fillMaxWidth()) {
105+ StatusItem (
106+ modifier = Modifier .fillMaxWidth(),
107+ title = Text .translatable(Texts .SCREEN_CONFIG_STATUS_STATUS_ENABLE_TITLE ),
108+ description = Text .translatable(Texts .SCREEN_CONFIG_STATUS_STATUS_ENABLE_DESCRIPTION ),
109+ selected = screenState.config.status.status == StatusConfig .Status .ENABLED ,
110+ onClick = {
111+ screenModel.updateConfig { copy(status = status.copy(status = StatusConfig .Status .ENABLED )) }
112+ }
113+ )
114+ StatusItem (
115+ modifier = Modifier .fillMaxWidth(),
116+ title = Text .translatable(Texts .SCREEN_CONFIG_STATUS_STATUS_ONLY_VIEW_TITLE ),
117+ description = Text .translatable(Texts .SCREEN_CONFIG_STATUS_STATUS_ONLY_VIEW_DESCRIPTION ),
118+ selected = screenState.config.status.status == StatusConfig .Status .ONLY_VIEW ,
119+ onClick = {
120+ screenModel.updateConfig { copy(status = status.copy(status = StatusConfig .Status .ONLY_VIEW )) }
121+ }
122+ )
123+ StatusItem (
124+ modifier = Modifier .fillMaxWidth(),
125+ title = Text .translatable(Texts .SCREEN_CONFIG_STATUS_STATUS_DISABLE_TITLE ),
126+ description = Text .translatable(Texts .SCREEN_CONFIG_STATUS_STATUS_DISABLE_DESCRIPTION ),
127+ selected = screenState.config.status.status == StatusConfig .Status .DISABLED ,
128+ onClick = {
129+ screenModel.updateConfig { copy(status = status.copy(status = StatusConfig .Status .DISABLED )) }
130+ }
131+ )
132+ }
70133 }
71134 }
72135}
0 commit comments