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.SettingsTextFieldPassword
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 SettingsTextFieldPassword"
37 
38 object SettingsTextFieldPasswordPageProvider : SettingsPageProvider {
39     override val name = "SettingsTextFieldPassword"
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("value") }
48         RegularScaffold(title = TITLE) {
49             SettingsTextFieldPassword(
50                 value = value,
51                 label = "label",
52                 onTextChange = { value = it })
53         }
54     }
55 
buildInjectEntrynull56     fun buildInjectEntry(): SettingsEntryBuilder {
57         return SettingsEntryBuilder.createInject(owner = createSettingsPage())
58             .setUiLayoutFn {
59                 Preference(object : PreferenceModel {
60                     override val title = TITLE
61                     override val onClick = navigator(name)
62                 })
63             }
64     }
65 }
66 
67 @Preview(showBackground = true)
68 @Composable
SettingsTextFieldPasswordPagePreviewnull69 private fun SettingsTextFieldPasswordPagePreview() {
70     SettingsTheme {
71         SettingsTextFieldPasswordPageProvider.Page(null)
72     }
73 }