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
HomeScreenPreviewnull93 private fun HomeScreenPreview() {
94     SpaEnvironmentFactory.resetForPreview()
95     SettingsTheme {
96         HomePageProvider.Page(null)
97     }
98 }
99