1 /*
2  * Copyright (C) 2023 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.editor
18 
19 import android.os.Bundle
20 import androidx.compose.runtime.Composable
21 import androidx.compose.runtime.getValue
22 import androidx.compose.runtime.mutableStateOf
23 import androidx.compose.runtime.remember
24 import androidx.compose.runtime.setValue
25 import androidx.compose.ui.tooling.preview.Preview
26 import com.android.settingslib.spa.framework.common.SettingsEntryBuilder
27 import com.android.settingslib.spa.framework.common.SettingsPageProvider
28 import com.android.settingslib.spa.framework.common.createSettingsPage
29 import com.android.settingslib.spa.framework.compose.navigator
30 import com.android.settingslib.spa.framework.theme.SettingsTheme
31 import com.android.settingslib.spa.widget.editor.SettingsOutlinedTextField
32 import com.android.settingslib.spa.widget.preference.Preference
33 import com.android.settingslib.spa.widget.preference.PreferenceModel
34 import com.android.settingslib.spa.widget.scaffold.RegularScaffold
35 
36 private const val TITLE = "Sample SettingsOutlinedTextField"
37 
38 object SettingsOutlinedTextFieldPageProvider : SettingsPageProvider {
39     override val name = "SettingsOutlinedTextField"
40 
getTitlenull41     override fun getTitle(arguments: Bundle?): String {
42         return TITLE
43     }
44 
45     @Composable
Pagenull46     override fun Page(arguments: Bundle?) {
47         var value by remember { mutableStateOf("Enabled Value") }
48         RegularScaffold(title = TITLE) {
49             SettingsOutlinedTextField(
50                 value = value,
51                 label = "OutlinedTextField Enabled",
52                 enabled = true,
53                 onTextChange = {value = it})
54         }
55     }
56 
buildInjectEntrynull57     fun buildInjectEntry(): SettingsEntryBuilder {
58         return SettingsEntryBuilder.createInject(owner = createSettingsPage())
59             .setUiLayoutFn {
60                 Preference(object : PreferenceModel {
61                     override val title = TITLE
62                     override val onClick = navigator(name)
63                 })
64             }
65     }
66 }
67 
68 @Preview(showBackground = true)
69 @Composable
SettingsOutlinedTextFieldPagePreviewnull70 private fun SettingsOutlinedTextFieldPagePreview() {
71     SettingsTheme {
72         SettingsOutlinedTextFieldPageProvider.Page(null)
73     }
74 }