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 21 import com.android.settings.DisplaySettings; 22 import com.android.settings.accounts.AccountDashboardFragment; 23 import com.android.settings.accounts.AccountDetailDashboardFragment; 24 import com.android.settings.applications.AppAndNotificationDashboardFragment; 25 import com.android.settings.applications.DefaultAppSettings; 26 import com.android.settings.connecteddevice.AdvancedConnectedDeviceDashboardFragment; 27 import com.android.settings.connecteddevice.ConnectedDeviceDashboardFragment; 28 import com.android.settings.development.DevelopmentSettingsDashboardFragment; 29 import com.android.settings.deviceinfo.StorageDashboardFragment; 30 import com.android.settings.display.NightDisplaySettings; 31 import com.android.settings.fuelgauge.PowerUsageSummary; 32 import com.android.settings.gestures.GestureSettings; 33 import com.android.settings.language.LanguageAndInputSettings; 34 import com.android.settings.network.NetworkDashboardFragment; 35 import com.android.settings.notification.ConfigureNotificationSettings; 36 import com.android.settings.notification.SoundSettings; 37 import com.android.settings.notification.ZenModeSettings; 38 import com.android.settings.security.LockscreenDashboardFragment; 39 import com.android.settings.security.SecuritySettings; 40 import com.android.settings.system.SystemDashboardFragment; 41 import com.android.settingslib.drawer.CategoryKey; 42 43 import java.util.Map; 44 45 /** 46 * A registry to keep track of which page hosts which category. 47 */ 48 public class DashboardFragmentRegistry { 49 50 /** 51 * Map from parent fragment to category key. The parent fragment hosts child with 52 * category_key. 53 */ 54 public static final Map<String, String> PARENT_TO_CATEGORY_KEY_MAP; 55 56 /** 57 * Map from category_key to parent. This is a helper to look up which fragment hosts the 58 * category_key. 59 */ 60 public static final Map<String, String> CATEGORY_KEY_TO_PARENT_MAP; 61 62 static { 63 PARENT_TO_CATEGORY_KEY_MAP = new ArrayMap<>(); 64 PARENT_TO_CATEGORY_KEY_MAP.put( 65 NetworkDashboardFragment.class.getName(), CategoryKey.CATEGORY_NETWORK); 66 PARENT_TO_CATEGORY_KEY_MAP.put(ConnectedDeviceDashboardFragment.class.getName(), 67 CategoryKey.CATEGORY_CONNECT); 68 PARENT_TO_CATEGORY_KEY_MAP.put(AdvancedConnectedDeviceDashboardFragment.class.getName(), 69 CategoryKey.CATEGORY_DEVICE); 70 PARENT_TO_CATEGORY_KEY_MAP.put(AppAndNotificationDashboardFragment.class.getName(), 71 CategoryKey.CATEGORY_APPS); 72 PARENT_TO_CATEGORY_KEY_MAP.put(PowerUsageSummary.class.getName(), 73 CategoryKey.CATEGORY_BATTERY); 74 PARENT_TO_CATEGORY_KEY_MAP.put(DefaultAppSettings.class.getName(), 75 CategoryKey.CATEGORY_APPS_DEFAULT); 76 PARENT_TO_CATEGORY_KEY_MAP.put(DisplaySettings.class.getName(), 77 CategoryKey.CATEGORY_DISPLAY); 78 PARENT_TO_CATEGORY_KEY_MAP.put(SoundSettings.class.getName(), 79 CategoryKey.CATEGORY_SOUND); 80 PARENT_TO_CATEGORY_KEY_MAP.put(StorageDashboardFragment.class.getName(), 81 CategoryKey.CATEGORY_STORAGE); 82 PARENT_TO_CATEGORY_KEY_MAP.put(SecuritySettings.class.getName(), 83 CategoryKey.CATEGORY_SECURITY); 84 PARENT_TO_CATEGORY_KEY_MAP.put(AccountDetailDashboardFragment.class.getName(), 85 CategoryKey.CATEGORY_ACCOUNT_DETAIL); 86 PARENT_TO_CATEGORY_KEY_MAP.put(AccountDashboardFragment.class.getName(), 87 CategoryKey.CATEGORY_ACCOUNT); 88 PARENT_TO_CATEGORY_KEY_MAP.put( 89 SystemDashboardFragment.class.getName(), CategoryKey.CATEGORY_SYSTEM); 90 PARENT_TO_CATEGORY_KEY_MAP.put(LanguageAndInputSettings.class.getName(), 91 CategoryKey.CATEGORY_SYSTEM_LANGUAGE); 92 PARENT_TO_CATEGORY_KEY_MAP.put(DevelopmentSettingsDashboardFragment.class.getName(), 93 CategoryKey.CATEGORY_SYSTEM_DEVELOPMENT); 94 PARENT_TO_CATEGORY_KEY_MAP.put(ConfigureNotificationSettings.class.getName(), 95 CategoryKey.CATEGORY_NOTIFICATIONS); 96 PARENT_TO_CATEGORY_KEY_MAP.put(LockscreenDashboardFragment.class.getName(), 97 CategoryKey.CATEGORY_SECURITY_LOCKSCREEN); 98 PARENT_TO_CATEGORY_KEY_MAP.put(ZenModeSettings.class.getName(), 99 CategoryKey.CATEGORY_DO_NOT_DISTURB); 100 PARENT_TO_CATEGORY_KEY_MAP.put(GestureSettings.class.getName(), 101 CategoryKey.CATEGORY_GESTURES); 102 PARENT_TO_CATEGORY_KEY_MAP.put(NightDisplaySettings.class.getName(), 103 CategoryKey.CATEGORY_NIGHT_DISPLAY); 104 105 CATEGORY_KEY_TO_PARENT_MAP = new ArrayMap<>(PARENT_TO_CATEGORY_KEY_MAP.size()); 106 107 for (Map.Entry<String, String> parentToKey : PARENT_TO_CATEGORY_KEY_MAP.entrySet()) { 108 CATEGORY_KEY_TO_PARENT_MAP.put(parentToKey.getValue(), parentToKey.getKey()); 109 } 110 } 111 } 112