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