• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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.settings.spa.app
18 
19 import android.os.Bundle
20 import androidx.compose.material.icons.Icons
21 import androidx.compose.material.icons.outlined.Apps
22 import androidx.compose.runtime.Composable
23 import androidx.compose.ui.res.stringResource
24 import com.android.settings.R
25 import com.android.settings.spa.app.backgroundinstall.BackgroundInstalledAppsPageProvider
26 import com.android.settings.spa.app.specialaccess.SpecialAppAccessPageProvider
27 import com.android.settingslib.spa.framework.common.SettingsEntry
28 import com.android.settingslib.spa.framework.common.SettingsEntryBuilder
29 import com.android.settingslib.spa.framework.common.SettingsPageProvider
30 import com.android.settingslib.spa.framework.common.SpaEnvironmentFactory
31 import com.android.settingslib.spa.framework.common.createSettingsPage
32 import com.android.settingslib.spa.framework.compose.navigator
33 import com.android.settingslib.spa.framework.compose.toState
34 import com.android.settingslib.spa.widget.preference.Preference
35 import com.android.settingslib.spa.widget.preference.PreferenceModel
36 import com.android.settingslib.spa.widget.scaffold.RegularScaffold
37 import com.android.settingslib.spa.widget.ui.SettingsIcon
38 
39 object AppsMainPageProvider : SettingsPageProvider {
40     override val name = "AppsMain"
41     private val owner = createSettingsPage()
42 
isEnablednull43     override fun isEnabled(arguments: Bundle?) = false
44 
45     @Composable
46     override fun Page(arguments: Bundle?) {
47         RegularScaffold(title = getTitle(arguments)) {
48             AllAppListPageProvider.buildInjectEntry().build().UiLayout()
49             SpecialAppAccessPageProvider.EntryItem()
50             BackgroundInstalledAppsPageProvider.EntryItem()
51         }
52     }
53 
buildInjectEntrynull54     fun buildInjectEntry() =
55         SettingsEntryBuilder.createInject(owner = owner)
56             .setUiLayoutFn {
57                 Preference(object : PreferenceModel {
58                     override val title = stringResource(R.string.apps_dashboard_title)
59                     override val summary =
60                         stringResource(R.string.app_and_notification_dashboard_summary).toState()
61                     override val onClick = navigator(name)
62                     override val icon = @Composable {
63                         SettingsIcon(imageVector = Icons.Outlined.Apps)
64                     }
65                 })
66             }
67 
getTitlenull68     override fun getTitle(arguments: Bundle?): String {
69         return SpaEnvironmentFactory.instance.appContext.getString(R.string.apps_dashboard_title)
70     }
71 
buildEntrynull72     override fun buildEntry(arguments: Bundle?): List<SettingsEntry> {
73         return listOf(
74             AllAppListPageProvider.buildInjectEntry().setLink(fromPage = owner).build(),
75             SpecialAppAccessPageProvider.buildInjectEntry().setLink(fromPage = owner).build(),
76             BackgroundInstalledAppsPageProvider.buildInjectEntry().setLink(fromPage = owner).build(),
77         )
78     }
79 }
80