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 18 19 import android.content.Context 20 import com.android.settingslib.spa.debug.DebugLogger 21 import com.android.settingslib.spa.framework.common.SettingsPageProviderRepository 22 import com.android.settingslib.spa.framework.common.SpaEnvironment 23 import com.android.settingslib.spa.framework.common.createSettingsPage 24 import com.android.settingslib.spa.gallery.button.ActionButtonPageProvider 25 import com.android.settingslib.spa.gallery.banner.BannerPageProvider 26 import com.android.settingslib.spa.gallery.card.CardPageProvider 27 import com.android.settingslib.spa.gallery.chart.ChartPageProvider 28 import com.android.settingslib.spa.gallery.dialog.DialogMainPageProvider 29 import com.android.settingslib.spa.gallery.dialog.NavDialogProvider 30 import com.android.settingslib.spa.gallery.editor.EditorMainPageProvider 31 import com.android.settingslib.spa.gallery.editor.SettingsDropdownBoxPageProvider 32 import com.android.settingslib.spa.gallery.editor.SettingsDropdownCheckBoxProvider 33 import com.android.settingslib.spa.gallery.home.HomePageProvider 34 import com.android.settingslib.spa.gallery.editor.SettingsOutlinedTextFieldPageProvider 35 import com.android.settingslib.spa.gallery.editor.SettingsTextFieldPasswordPageProvider 36 import com.android.settingslib.spa.gallery.page.ArgumentPageProvider 37 import com.android.settingslib.spa.gallery.page.FooterPageProvider 38 import com.android.settingslib.spa.gallery.page.IllustrationPageProvider 39 import com.android.settingslib.spa.gallery.page.LoadingBarPageProvider 40 import com.android.settingslib.spa.gallery.page.ProgressBarPageProvider 41 import com.android.settingslib.spa.gallery.scaffold.NonScrollablePagerPageProvider 42 import com.android.settingslib.spa.gallery.page.SliderPageProvider 43 import com.android.settingslib.spa.gallery.preference.CheckBoxPreferencePageProvider 44 import com.android.settingslib.spa.gallery.preference.IntroPreferencePageProvider 45 import com.android.settingslib.spa.gallery.preference.ListPreferencePageProvider 46 import com.android.settingslib.spa.gallery.preference.MainSwitchPreferencePageProvider 47 import com.android.settingslib.spa.gallery.preference.PreferenceMainPageProvider 48 import com.android.settingslib.spa.gallery.preference.PreferencePageProvider 49 import com.android.settingslib.spa.gallery.preference.SwitchPreferencePageProvider 50 import com.android.settingslib.spa.gallery.preference.TopIntroPreferencePageProvider 51 import com.android.settingslib.spa.gallery.preference.TwoTargetButtonPreferencePageProvider 52 import com.android.settingslib.spa.gallery.preference.TwoTargetSwitchPreferencePageProvider 53 import com.android.settingslib.spa.gallery.preference.ZeroStatePreferencePageProvider 54 import com.android.settingslib.spa.gallery.scaffold.PagerMainPageProvider 55 import com.android.settingslib.spa.gallery.scaffold.SearchScaffoldPageProvider 56 import com.android.settingslib.spa.gallery.scaffold.SuwScaffoldPageProvider 57 import com.android.settingslib.spa.gallery.ui.CategoryPageProvider 58 import com.android.settingslib.spa.gallery.ui.CopyablePageProvider 59 import com.android.settingslib.spa.gallery.scaffold.ScrollablePagerPageProvider 60 import com.android.settingslib.spa.gallery.ui.SpinnerPageProvider 61 62 /** 63 * Enum to define all SPP name here. 64 * Since the SPP name would be used in log, DO NOT change it once it is set. One can still change 65 * the display name for better readability if necessary. 66 */ 67 enum class SettingsPageProviderEnum(val displayName: String) { 68 HOME("home"), 69 70 // Add your SPPs 71 } 72 73 class GallerySpaEnvironment(context: Context) : SpaEnvironment(context) { <lambda>null74 override val pageProviderRepository = lazy { 75 SettingsPageProviderRepository( 76 allPageProviders = listOf( 77 HomePageProvider, 78 PreferenceMainPageProvider, 79 PreferencePageProvider, 80 SwitchPreferencePageProvider, 81 MainSwitchPreferencePageProvider, 82 ListPreferencePageProvider, 83 TwoTargetSwitchPreferencePageProvider, 84 ZeroStatePreferencePageProvider, 85 ArgumentPageProvider, 86 SliderPageProvider, 87 SpinnerPageProvider, 88 PagerMainPageProvider, 89 NonScrollablePagerPageProvider, 90 ScrollablePagerPageProvider, 91 FooterPageProvider, 92 IllustrationPageProvider, 93 CategoryPageProvider, 94 ActionButtonPageProvider, 95 ProgressBarPageProvider, 96 LoadingBarPageProvider, 97 ChartPageProvider, 98 DialogMainPageProvider, 99 NavDialogProvider, 100 EditorMainPageProvider, 101 SettingsOutlinedTextFieldPageProvider, 102 SettingsDropdownBoxPageProvider, 103 SettingsDropdownCheckBoxProvider, 104 SettingsTextFieldPasswordPageProvider, 105 SearchScaffoldPageProvider, 106 SuwScaffoldPageProvider, 107 BannerPageProvider, 108 CopyablePageProvider, 109 IntroPreferencePageProvider, 110 TopIntroPreferencePageProvider, 111 CheckBoxPreferencePageProvider, 112 TwoTargetButtonPreferencePageProvider, 113 CardPageProvider, 114 ), 115 rootPages = listOf( 116 HomePageProvider.createSettingsPage(), 117 ) 118 ) 119 } 120 121 override val logger = DebugLogger() 122 123 override val browseActivityClass = GalleryMainActivity::class.java 124 125 // For debugging 126 override val searchProviderAuthorities = "com.android.spa.gallery.search.provider" 127 } 128