diff options
3 files changed, 60 insertions, 0 deletions
diff --git a/packages/SettingsLib/Spa/gallery/src/com/android/settingslib/spa/gallery/GallerySpaEnvironment.kt b/packages/SettingsLib/Spa/gallery/src/com/android/settingslib/spa/gallery/GallerySpaEnvironment.kt index cfd1a50abb4c..01596d2bc004 100644 --- a/packages/SettingsLib/Spa/gallery/src/com/android/settingslib/spa/gallery/GallerySpaEnvironment.kt +++ b/packages/SettingsLib/Spa/gallery/src/com/android/settingslib/spa/gallery/GallerySpaEnvironment.kt @@ -45,6 +45,7 @@ import com.android.settingslib.spa.gallery.preference.PreferenceMainPageProvider  import com.android.settingslib.spa.gallery.preference.PreferencePageProvider  import com.android.settingslib.spa.gallery.preference.SwitchPreferencePageProvider  import com.android.settingslib.spa.gallery.preference.TwoTargetSwitchPreferencePageProvider +import com.android.settingslib.spa.gallery.scaffold.SearchScaffoldPageProvider  import com.android.settingslib.spa.gallery.ui.CategoryPageProvider  import com.android.settingslib.spa.gallery.ui.SpinnerPageProvider  import com.android.settingslib.spa.slice.SpaSliceBroadcastReceiver @@ -94,6 +95,7 @@ class GallerySpaEnvironment(context: Context) : SpaEnvironment(context) {                  SettingsExposedDropdownMenuBoxPageProvider,                  SettingsExposedDropdownMenuCheckBoxProvider,                  SettingsTextFieldPasswordPageProvider, +                SearchScaffoldPageProvider,              ),              rootPages = listOf(                  HomePageProvider.createSettingsPage(), diff --git a/packages/SettingsLib/Spa/gallery/src/com/android/settingslib/spa/gallery/home/HomePageProvider.kt b/packages/SettingsLib/Spa/gallery/src/com/android/settingslib/spa/gallery/home/HomePageProvider.kt index 6cac2202742a..b339b4482137 100644 --- a/packages/SettingsLib/Spa/gallery/src/com/android/settingslib/spa/gallery/home/HomePageProvider.kt +++ b/packages/SettingsLib/Spa/gallery/src/com/android/settingslib/spa/gallery/home/HomePageProvider.kt @@ -41,6 +41,7 @@ import com.android.settingslib.spa.gallery.page.ProgressBarPageProvider  import com.android.settingslib.spa.gallery.page.SettingsPagerPageProvider  import com.android.settingslib.spa.gallery.page.SliderPageProvider  import com.android.settingslib.spa.gallery.preference.PreferenceMainPageProvider +import com.android.settingslib.spa.gallery.scaffold.SearchScaffoldPageProvider  import com.android.settingslib.spa.gallery.ui.CategoryPageProvider  import com.android.settingslib.spa.gallery.ui.SpinnerPageProvider  import com.android.settingslib.spa.widget.scaffold.HomeScaffold @@ -55,6 +56,7 @@ object HomePageProvider : SettingsPageProvider {              PreferenceMainPageProvider.buildInjectEntry().setLink(fromPage = owner).build(),              OperateListPageProvider.buildInjectEntry().setLink(fromPage = owner).build(),              ArgumentPageProvider.buildInjectEntry("foo")!!.setLink(fromPage = owner).build(), +            SearchScaffoldPageProvider.buildInjectEntry().setLink(fromPage = owner).build(),              SliderPageProvider.buildInjectEntry().setLink(fromPage = owner).build(),              SpinnerPageProvider.buildInjectEntry().setLink(fromPage = owner).build(),              SettingsPagerPageProvider.buildInjectEntry().setLink(fromPage = owner).build(), diff --git a/packages/SettingsLib/Spa/gallery/src/com/android/settingslib/spa/gallery/scaffold/SearchScaffoldPageProvider.kt b/packages/SettingsLib/Spa/gallery/src/com/android/settingslib/spa/gallery/scaffold/SearchScaffoldPageProvider.kt new file mode 100644 index 000000000000..a1ab35b14749 --- /dev/null +++ b/packages/SettingsLib/Spa/gallery/src/com/android/settingslib/spa/gallery/scaffold/SearchScaffoldPageProvider.kt @@ -0,0 +1,56 @@ +/* + * Copyright (C) 2023 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + *      http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.settingslib.spa.gallery.scaffold + +import android.os.Bundle +import androidx.compose.runtime.Composable +import com.android.settingslib.spa.framework.common.SettingsEntryBuilder +import com.android.settingslib.spa.framework.common.SettingsPageProvider +import com.android.settingslib.spa.framework.common.createSettingsPage +import com.android.settingslib.spa.framework.compose.navigator +import com.android.settingslib.spa.widget.preference.Preference +import com.android.settingslib.spa.widget.preference.PreferenceModel +import com.android.settingslib.spa.widget.scaffold.SearchScaffold +import com.android.settingslib.spa.widget.ui.PlaceholderTitle + +private const val TITLE = "Sample SearchScaffold" + +object SearchScaffoldPageProvider : SettingsPageProvider { +    override val name = "SearchScaffold" + +    private val owner = createSettingsPage() + +    fun buildInjectEntry() = SettingsEntryBuilder.createInject(owner = owner) +        .setUiLayoutFn { +            Preference(object : PreferenceModel { +                override val title = TITLE +                override val onClick = navigator(name) +            }) +        } + +    @Composable +    override fun Page(arguments: Bundle?) { +        Page() +    } +} + +@Composable +private fun Page() { +    SearchScaffold(title = TITLE) { bottomPadding, searchQuery -> +        PlaceholderTitle("Search query: ${searchQuery.value}") +    } +}  |