| Fan Zhang | a96b11f | 2017-01-21 14:53:01 -0800 | [diff] [blame] | 1 | /* |
| 2 | * Copyright (C) 2017 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.dashboard; |
| 18 | |
| 19 | import android.util.ArrayMap; |
| 20 | |
| Fan Zhang | a96b11f | 2017-01-21 14:53:01 -0800 | [diff] [blame] | 21 | import com.android.settings.DisplaySettings; |
| jin.dong | a3a24be | 2018-12-20 11:48:20 +0800 | [diff] [blame] | 22 | import com.android.settings.LegalSettings; |
| Fan Zhang | 881d579 | 2018-01-26 10:15:56 -0800 | [diff] [blame] | 23 | import com.android.settings.accounts.AccountDashboardFragment; |
| Fan Zhang | 970bacd | 2018-02-14 14:57:51 -0800 | [diff] [blame] | 24 | import com.android.settings.accounts.AccountDetailDashboardFragment; |
| Yanting Yang | ba8e580 | 2021-05-25 02:35:58 +0800 | [diff] [blame] | 25 | import com.android.settings.applications.AppDashboardFragment; |
| Yilin Cai | 9bcd6ba | 2023-01-17 21:32:26 +0800 | [diff] [blame] | 26 | import com.android.settings.applications.specialaccess.SpecialAccessSettings; |
| Darrell Shi | 65836b1 | 2022-12-14 16:46:48 +0000 | [diff] [blame] | 27 | import com.android.settings.communal.CommunalDashboardFragment; |
| jackqdyulei | 5ef1f50 | 2017-12-15 10:42:15 -0800 | [diff] [blame] | 28 | import com.android.settings.connecteddevice.AdvancedConnectedDeviceDashboardFragment; |
| HJ ChangLiao | c338e26 | 2018-04-12 16:29:33 +0800 | [diff] [blame] | 29 | import com.android.settings.connecteddevice.ConnectedDeviceDashboardFragment; |
| Fan Zhang | 4c26da9 | 2017-09-08 15:29:54 -0700 | [diff] [blame] | 30 | import com.android.settings.development.DevelopmentSettingsDashboardFragment; |
| Fan Zhang | a96b11f | 2017-01-21 14:53:01 -0800 | [diff] [blame] | 31 | import com.android.settings.deviceinfo.StorageDashboardFragment; |
| jin.dong | a3a24be | 2018-12-20 11:48:20 +0800 | [diff] [blame] | 32 | import com.android.settings.deviceinfo.aboutphone.MyDeviceInfoFragment; |
| Doris Ling | 24827a1 | 2018-05-10 13:32:24 -0700 | [diff] [blame] | 33 | import com.android.settings.display.NightDisplaySettings; |
| Fan Zhang | 9b1fb77 | 2021-01-06 17:26:50 -0800 | [diff] [blame] | 34 | import com.android.settings.emergency.EmergencyDashboardFragment; |
| Alex Chau | eaf7893 | 2018-12-03 16:21:03 +0000 | [diff] [blame] | 35 | import com.android.settings.enterprise.EnterprisePrivacySettings; |
| Kenny Guy | 1c045db | 2020-01-13 19:52:08 +0000 | [diff] [blame] | 36 | import com.android.settings.fuelgauge.SmartBatterySettings; |
| jin.dong | a3a24be | 2018-12-20 11:48:20 +0800 | [diff] [blame] | 37 | import com.android.settings.fuelgauge.batterysaver.BatterySaverSettings; |
| xuezaiyue | ac73184 | 2022-06-08 21:53:23 +0800 | [diff] [blame] | 38 | import com.android.settings.fuelgauge.batteryusage.PowerUsageSummary; |
| Doris Ling | 24827a1 | 2018-05-10 13:32:24 -0700 | [diff] [blame] | 39 | import com.android.settings.gestures.GestureSettings; |
| Fan Zhang | 130c477 | 2018-10-01 12:14:06 -0700 | [diff] [blame] | 40 | import com.android.settings.homepage.TopLevelSettings; |
| Fan Zhang | a96b11f | 2017-01-21 14:53:01 -0800 | [diff] [blame] | 41 | import com.android.settings.network.NetworkDashboardFragment; |
| Julia Reynolds | 8cf8bf0 | 2017-04-17 17:22:09 -0400 | [diff] [blame] | 42 | import com.android.settings.notification.ConfigureNotificationSettings; |
| Fan Zhang | a96b11f | 2017-01-21 14:53:01 -0800 | [diff] [blame] | 43 | import com.android.settings.notification.SoundSettings; |
| tmfang | 80d03d1 | 2018-11-02 16:53:47 +0800 | [diff] [blame] | 44 | import com.android.settings.privacy.PrivacyDashboardFragment; |
| Prabal Singh | 9463e91 | 2023-02-07 16:56:15 +0000 | [diff] [blame] | 45 | import com.android.settings.safetycenter.MoreSecurityPrivacyFragment; |
| Aena Verma | 9284533 | 2025-08-25 04:54:51 -0700 | [diff] [blame] | 46 | import com.android.settings.safetycenter.ui.PrivacyControlsFragment; |
| Katsiaryna Naliuka | 7e4fc2b | 2017-06-12 17:37:33 +0200 | [diff] [blame] | 47 | import com.android.settings.security.LockscreenDashboardFragment; |
| Yuri Ufimtsev | 4eea126 | 2021-12-03 15:43:11 +0000 | [diff] [blame] | 48 | import com.android.settings.security.SecurityAdvancedSettings; |
| Fan Zhang | 73dc479 | 2018-01-29 12:06:58 -0800 | [diff] [blame] | 49 | import com.android.settings.security.SecuritySettings; |
| rashipatil | c360a80 | 2025-06-05 11:33:11 +0000 | [diff] [blame] | 50 | import com.android.settings.sound.MediaControlsSettings; |
| Yvonne Jiang | 484c83f | 2025-01-30 16:37:38 -0800 | [diff] [blame] | 51 | import com.android.settings.supervision.SupervisionDashboardFragment; |
| Fan Zhang | a96b11f | 2017-01-21 14:53:01 -0800 | [diff] [blame] | 52 | import com.android.settings.system.SystemDashboardFragment; |
| 53 | import com.android.settingslib.drawer.CategoryKey; |
| 54 | |
| 55 | import java.util.Map; |
| 56 | |
| 57 | /** |
| 58 | * A registry to keep track of which page hosts which category. |
| Fan Zhang | a96b11f | 2017-01-21 14:53:01 -0800 | [diff] [blame] | 59 | */ |
| 60 | public class DashboardFragmentRegistry { |
| 61 | |
| 62 | /** |
| 63 | * Map from parent fragment to category key. The parent fragment hosts child with |
| 64 | * category_key. |
| 65 | */ |
| 66 | public static final Map<String, String> PARENT_TO_CATEGORY_KEY_MAP; |
| 67 | |
| 68 | /** |
| 69 | * Map from category_key to parent. This is a helper to look up which fragment hosts the |
| 70 | * category_key. |
| 71 | */ |
| 72 | public static final Map<String, String> CATEGORY_KEY_TO_PARENT_MAP; |
| 73 | |
| 74 | static { |
| 75 | PARENT_TO_CATEGORY_KEY_MAP = new ArrayMap<>(); |
| Fan Zhang | 130c477 | 2018-10-01 12:14:06 -0700 | [diff] [blame] | 76 | PARENT_TO_CATEGORY_KEY_MAP.put(TopLevelSettings.class.getName(), |
| 77 | CategoryKey.CATEGORY_HOMEPAGE); |
| Fan Zhang | a96b11f | 2017-01-21 14:53:01 -0800 | [diff] [blame] | 78 | PARENT_TO_CATEGORY_KEY_MAP.put( |
| 79 | NetworkDashboardFragment.class.getName(), CategoryKey.CATEGORY_NETWORK); |
| HJ ChangLiao | c338e26 | 2018-04-12 16:29:33 +0800 | [diff] [blame] | 80 | PARENT_TO_CATEGORY_KEY_MAP.put(ConnectedDeviceDashboardFragment.class.getName(), |
| 81 | CategoryKey.CATEGORY_CONNECT); |
| jackqdyulei | 5ef1f50 | 2017-12-15 10:42:15 -0800 | [diff] [blame] | 82 | PARENT_TO_CATEGORY_KEY_MAP.put(AdvancedConnectedDeviceDashboardFragment.class.getName(), |
| 83 | CategoryKey.CATEGORY_DEVICE); |
| Yanting Yang | ba8e580 | 2021-05-25 02:35:58 +0800 | [diff] [blame] | 84 | PARENT_TO_CATEGORY_KEY_MAP.put(AppDashboardFragment.class.getName(), |
| Fan Zhang | a96b11f | 2017-01-21 14:53:01 -0800 | [diff] [blame] | 85 | CategoryKey.CATEGORY_APPS); |
| Fan Zhang | 7e6df83 | 2017-01-24 14:02:17 -0800 | [diff] [blame] | 86 | PARENT_TO_CATEGORY_KEY_MAP.put(PowerUsageSummary.class.getName(), |
| 87 | CategoryKey.CATEGORY_BATTERY); |
| Fan Zhang | a96b11f | 2017-01-21 14:53:01 -0800 | [diff] [blame] | 88 | PARENT_TO_CATEGORY_KEY_MAP.put(DisplaySettings.class.getName(), |
| 89 | CategoryKey.CATEGORY_DISPLAY); |
| Fan Zhang | 9b1fb77 | 2021-01-06 17:26:50 -0800 | [diff] [blame] | 90 | PARENT_TO_CATEGORY_KEY_MAP.put(EmergencyDashboardFragment.class.getName(), |
| 91 | CategoryKey.CATEGORY_EMERGENCY); |
| Fan Zhang | a96b11f | 2017-01-21 14:53:01 -0800 | [diff] [blame] | 92 | PARENT_TO_CATEGORY_KEY_MAP.put(SoundSettings.class.getName(), |
| 93 | CategoryKey.CATEGORY_SOUND); |
| 94 | PARENT_TO_CATEGORY_KEY_MAP.put(StorageDashboardFragment.class.getName(), |
| 95 | CategoryKey.CATEGORY_STORAGE); |
| Fan Zhang | 73dc479 | 2018-01-29 12:06:58 -0800 | [diff] [blame] | 96 | PARENT_TO_CATEGORY_KEY_MAP.put(SecuritySettings.class.getName(), |
| Fan Zhang | a96b11f | 2017-01-21 14:53:01 -0800 | [diff] [blame] | 97 | CategoryKey.CATEGORY_SECURITY); |
| Yuri Ufimtsev | 4eea126 | 2021-12-03 15:43:11 +0000 | [diff] [blame] | 98 | PARENT_TO_CATEGORY_KEY_MAP.put(SecurityAdvancedSettings.class.getName(), |
| 99 | CategoryKey.CATEGORY_SECURITY_ADVANCED_SETTINGS); |
| Fan Zhang | 7e6df83 | 2017-01-24 14:02:17 -0800 | [diff] [blame] | 100 | PARENT_TO_CATEGORY_KEY_MAP.put(AccountDetailDashboardFragment.class.getName(), |
| Doris Ling | b30ce6f | 2017-06-14 15:25:24 -0700 | [diff] [blame] | 101 | CategoryKey.CATEGORY_ACCOUNT_DETAIL); |
| Fan Zhang | 881d579 | 2018-01-26 10:15:56 -0800 | [diff] [blame] | 102 | PARENT_TO_CATEGORY_KEY_MAP.put(AccountDashboardFragment.class.getName(), |
| Fan Zhang | a96b11f | 2017-01-21 14:53:01 -0800 | [diff] [blame] | 103 | CategoryKey.CATEGORY_ACCOUNT); |
| 104 | PARENT_TO_CATEGORY_KEY_MAP.put( |
| 105 | SystemDashboardFragment.class.getName(), CategoryKey.CATEGORY_SYSTEM); |
| danielwbhuang | c9cb680 | 2022-08-17 22:17:08 +0800 | [diff] [blame] | 106 | // TODO(b/242680328) Tie new category key to LanguageSettings and KeyboardSettings page |
| jeffreyhuang | cb823d5 | 2017-11-17 11:19:44 -0800 | [diff] [blame] | 107 | PARENT_TO_CATEGORY_KEY_MAP.put(DevelopmentSettingsDashboardFragment.class.getName(), |
| 108 | CategoryKey.CATEGORY_SYSTEM_DEVELOPMENT); |
| Julia Reynolds | 8cf8bf0 | 2017-04-17 17:22:09 -0400 | [diff] [blame] | 109 | PARENT_TO_CATEGORY_KEY_MAP.put(ConfigureNotificationSettings.class.getName(), |
| 110 | CategoryKey.CATEGORY_NOTIFICATIONS); |
| Katsiaryna Naliuka | 7e4fc2b | 2017-06-12 17:37:33 +0200 | [diff] [blame] | 111 | PARENT_TO_CATEGORY_KEY_MAP.put(LockscreenDashboardFragment.class.getName(), |
| 112 | CategoryKey.CATEGORY_SECURITY_LOCKSCREEN); |
| Doris Ling | 24827a1 | 2018-05-10 13:32:24 -0700 | [diff] [blame] | 113 | PARENT_TO_CATEGORY_KEY_MAP.put(GestureSettings.class.getName(), |
| Fan Zhang | 3541dcb | 2018-08-09 16:50:04 -0700 | [diff] [blame] | 114 | CategoryKey.CATEGORY_GESTURES); |
| Doris Ling | 24827a1 | 2018-05-10 13:32:24 -0700 | [diff] [blame] | 115 | PARENT_TO_CATEGORY_KEY_MAP.put(NightDisplaySettings.class.getName(), |
| Fan Zhang | 3541dcb | 2018-08-09 16:50:04 -0700 | [diff] [blame] | 116 | CategoryKey.CATEGORY_NIGHT_DISPLAY); |
| tmfang | 80d03d1 | 2018-11-02 16:53:47 +0800 | [diff] [blame] | 117 | PARENT_TO_CATEGORY_KEY_MAP.put(PrivacyDashboardFragment.class.getName(), |
| 118 | CategoryKey.CATEGORY_PRIVACY); |
| Alex Chau | eaf7893 | 2018-12-03 16:21:03 +0000 | [diff] [blame] | 119 | PARENT_TO_CATEGORY_KEY_MAP.put(EnterprisePrivacySettings.class.getName(), |
| 120 | CategoryKey.CATEGORY_ENTERPRISE_PRIVACY); |
| jin.dong | a3a24be | 2018-12-20 11:48:20 +0800 | [diff] [blame] | 121 | PARENT_TO_CATEGORY_KEY_MAP.put(LegalSettings.class.getName(), |
| 122 | CategoryKey.CATEGORY_ABOUT_LEGAL); |
| 123 | PARENT_TO_CATEGORY_KEY_MAP.put(MyDeviceInfoFragment.class.getName(), |
| 124 | CategoryKey.CATEGORY_MY_DEVICE_INFO); |
| 125 | PARENT_TO_CATEGORY_KEY_MAP.put(BatterySaverSettings.class.getName(), |
| 126 | CategoryKey.CATEGORY_BATTERY_SAVER_SETTINGS); |
| Kenny Guy | 1c045db | 2020-01-13 19:52:08 +0000 | [diff] [blame] | 127 | PARENT_TO_CATEGORY_KEY_MAP.put(SmartBatterySettings.class.getName(), |
| 128 | CategoryKey.CATEGORY_SMART_BATTERY_SETTINGS); |
| Darrell Shi | 65836b1 | 2022-12-14 16:46:48 +0000 | [diff] [blame] | 129 | PARENT_TO_CATEGORY_KEY_MAP.put(CommunalDashboardFragment.class.getName(), |
| 130 | CategoryKey.CATEGORY_COMMUNAL_SETTINGS); |
| Yilin Cai | 9bcd6ba | 2023-01-17 21:32:26 +0800 | [diff] [blame] | 131 | PARENT_TO_CATEGORY_KEY_MAP.put(SpecialAccessSettings.class.getName(), |
| 132 | CategoryKey.CATEGORY_SPECIAL_APP_ACCESS); |
| Prabal Singh | 9463e91 | 2023-02-07 16:56:15 +0000 | [diff] [blame] | 133 | PARENT_TO_CATEGORY_KEY_MAP.put(MoreSecurityPrivacyFragment.class.getName(), |
| 134 | CategoryKey.CATEGORY_MORE_SECURITY_PRIVACY_SETTINGS); |
| Yvonne Jiang | 484c83f | 2025-01-30 16:37:38 -0800 | [diff] [blame] | 135 | PARENT_TO_CATEGORY_KEY_MAP.put(SupervisionDashboardFragment.class.getName(), |
| 136 | CategoryKey.CATEGORY_SUPERVISION); |
| rashipatil | c360a80 | 2025-06-05 11:33:11 +0000 | [diff] [blame] | 137 | PARENT_TO_CATEGORY_KEY_MAP.put(MediaControlsSettings.class.getName(), |
| 138 | CategoryKey.CATEGORY_MEDIA_CONTROLS_SETTINGS); |
| Aena Verma | 9284533 | 2025-08-25 04:54:51 -0700 | [diff] [blame] | 139 | PARENT_TO_CATEGORY_KEY_MAP.put(PrivacyControlsFragment.class.getName(), |
| 140 | CategoryKey.CATEGORY_PRIVACY_CONTROLS); |
| Fan Zhang | a96b11f | 2017-01-21 14:53:01 -0800 | [diff] [blame] | 141 | |
| 142 | CATEGORY_KEY_TO_PARENT_MAP = new ArrayMap<>(PARENT_TO_CATEGORY_KEY_MAP.size()); |
| 143 | |
| 144 | for (Map.Entry<String, String> parentToKey : PARENT_TO_CATEGORY_KEY_MAP.entrySet()) { |
| 145 | CATEGORY_KEY_TO_PARENT_MAP.put(parentToKey.getValue(), parentToKey.getKey()); |
| 146 | } |
| Stanley Wang | 732514c | 2020-05-18 20:17:19 +0800 | [diff] [blame] | 147 | |
| 148 | // For injection index, redirect CATEGORY_ACCOUNT_DETAIL to AccountDashboardFragment. |
| 149 | CATEGORY_KEY_TO_PARENT_MAP.put(CategoryKey.CATEGORY_ACCOUNT_DETAIL, |
| 150 | AccountDashboardFragment.class.getName()); |
| Fan Zhang | a96b11f | 2017-01-21 14:53:01 -0800 | [diff] [blame] | 151 | } |
| 152 | } |