1 /* 2 * Copyright (C) 2022 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.home 18 19 import android.os.Bundle 20 import androidx.compose.runtime.Composable 21 import androidx.compose.runtime.remember 22 import androidx.compose.ui.tooling.preview.Preview 23 import com.android.settingslib.spa.framework.common.SettingsPageProvider 24 import com.android.settingslib.spa.framework.common.SpaEnvironmentFactory 25 import com.android.settingslib.spa.framework.theme.SettingsTheme 26 import com.android.settingslib.spa.gallery.R 27 import com.android.settingslib.spa.gallery.SettingsPageProviderEnum 28 import com.android.settingslib.spa.gallery.banner.BannerPageProvider 29 import com.android.settingslib.spa.gallery.button.ActionButtonPageProvider 30 import com.android.settingslib.spa.gallery.card.CardPageProvider 31 import com.android.settingslib.spa.gallery.chart.ChartPageProvider 32 import com.android.settingslib.spa.gallery.dialog.DialogMainPageProvider 33 import com.android.settingslib.spa.gallery.editor.EditorMainPageProvider 34 import com.android.settingslib.spa.gallery.page.ArgumentPageProvider 35 import com.android.settingslib.spa.gallery.page.FooterPageProvider 36 import com.android.settingslib.spa.gallery.page.IllustrationPageProvider 37 import com.android.settingslib.spa.gallery.page.LoadingBarPageProvider 38 import com.android.settingslib.spa.gallery.page.ProgressBarPageProvider 39 import com.android.settingslib.spa.gallery.page.SliderPageProvider 40 import com.android.settingslib.spa.gallery.preference.PreferenceMainPageProvider 41 import com.android.settingslib.spa.gallery.scaffold.PagerMainPageProvider 42 import com.android.settingslib.spa.gallery.scaffold.SearchScaffoldPageProvider 43 import com.android.settingslib.spa.gallery.scaffold.SuwScaffoldPageProvider 44 import com.android.settingslib.spa.gallery.ui.CategoryPageProvider 45 import com.android.settingslib.spa.gallery.ui.CopyablePageProvider 46 import com.android.settingslib.spa.gallery.ui.SpinnerPageProvider 47 import com.android.settingslib.spa.widget.scaffold.HomeScaffold 48 import com.android.settingslib.spa.widget.ui.Category 49 50 object HomePageProvider : SettingsPageProvider { 51 override val name = SettingsPageProviderEnum.HOME.name 52 override val displayName = SettingsPageProviderEnum.HOME.displayName 53 getTitlenull54 override fun getTitle(arguments: Bundle?): String { 55 return SpaEnvironmentFactory.instance.appContext.getString(R.string.app_name) 56 } 57 58 @Composable Pagenull59 override fun Page(arguments: Bundle?) { 60 val title = remember { getTitle(arguments) } 61 HomeScaffold(title) { 62 Category { 63 PreferenceMainPageProvider.Entry() 64 } 65 Category { 66 SearchScaffoldPageProvider.Entry() 67 SuwScaffoldPageProvider.Entry() 68 ArgumentPageProvider.EntryItem(stringParam = "foo", intParam = 0) 69 } 70 Category { 71 SliderPageProvider.Entry() 72 SpinnerPageProvider.Entry() 73 PagerMainPageProvider.Entry() 74 FooterPageProvider.Entry() 75 IllustrationPageProvider.Entry() 76 CategoryPageProvider.Entry() 77 ActionButtonPageProvider.Entry() 78 ProgressBarPageProvider.Entry() 79 LoadingBarPageProvider.Entry() 80 ChartPageProvider.Entry() 81 DialogMainPageProvider.Entry() 82 EditorMainPageProvider.Entry() 83 BannerPageProvider.Entry() 84 CardPageProvider.Entry() 85 CopyablePageProvider.Entry() 86 } 87 } 88 } 89 } 90 91 @Preview(showBackground = true) 92 @Composable HomeScreenPreviewnull93private fun HomeScreenPreview() { 94 SpaEnvironmentFactory.resetForPreview() 95 SettingsTheme { 96 HomePageProvider.Page(null) 97 } 98 } 99