1 /*
<lambda>null2  * Copyright (C) 2024 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package com.android.settingslib.spa.gallery.preference
18 
19 import android.os.Bundle
20 import androidx.compose.material.icons.Icons
21 import androidx.compose.material.icons.outlined.AirplanemodeActive
22 import androidx.compose.runtime.Composable
23 import androidx.compose.runtime.getValue
24 import androidx.compose.runtime.mutableStateOf
25 import androidx.compose.runtime.saveable.rememberSaveable
26 import androidx.compose.runtime.setValue
27 import com.android.settingslib.spa.framework.common.SettingsPageProvider
28 import com.android.settingslib.spa.framework.compose.navigator
29 import com.android.settingslib.spa.widget.preference.CheckboxPreference
30 import com.android.settingslib.spa.widget.preference.CheckboxPreferenceModel
31 import com.android.settingslib.spa.widget.preference.Preference
32 import com.android.settingslib.spa.widget.preference.PreferenceModel
33 import com.android.settingslib.spa.widget.scaffold.RegularScaffold
34 import com.android.settingslib.spa.widget.ui.Category
35 import com.android.settingslib.spa.widget.ui.SettingsIcon
36 
37 private const val TITLE = "Sample CheckBoxPreference"
38 
39 object CheckBoxPreferencePageProvider : SettingsPageProvider {
40     override val name = "CheckBoxPreference"
41 
42     @Composable
43     override fun Page(arguments: Bundle?) {
44         RegularScaffold(TITLE) {
45             Category {
46                 var checked1 by rememberSaveable { mutableStateOf(true) }
47                 CheckboxPreference(
48                     object : CheckboxPreferenceModel {
49                         override val title = "Use Dark theme"
50                         override val checked = { checked1 }
51                         override val onCheckedChange = { newChecked: Boolean ->
52                             checked1 = newChecked
53                         }
54                     }
55                 )
56                 var checked2 by rememberSaveable { mutableStateOf(false) }
57                 CheckboxPreference(
58                     object : CheckboxPreferenceModel {
59                         override val title = "Use Dark theme"
60                         override val summary = { "Summary" }
61                         override val checked = { checked2 }
62                         override val onCheckedChange = { newChecked: Boolean ->
63                             checked2 = newChecked
64                         }
65                     }
66                 )
67                 var checked3 by rememberSaveable { mutableStateOf(true) }
68                 CheckboxPreference(
69                     object : CheckboxPreferenceModel {
70                         override val title = "Use Dark theme"
71                         override val summary = { "Summary" }
72                         override val checked = { checked3 }
73                         override val onCheckedChange = { newChecked: Boolean ->
74                             checked3 = newChecked
75                         }
76                         override val icon =
77                             @Composable {
78                                 SettingsIcon(imageVector = Icons.Outlined.AirplanemodeActive)
79                             }
80                     }
81                 )
82             }
83         }
84     }
85 
86     @Composable
87     fun Entry() {
88         Preference(
89             object : PreferenceModel {
90                 override val title = TITLE
91                 override val onClick = navigator(name)
92             }
93         )
94     }
95 
96     override fun getTitle(arguments: Bundle?): String {
97         return TITLE
98     }
99 }
100