1 /* 2 * Copyright (C) 2014 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.search; 18 19 import com.android.settings.ChooseLockGeneric; 20 import com.android.settings.DateTimeSettings; 21 import com.android.settings.DevelopmentSettings; 22 import com.android.settings.DeviceInfoSettings; 23 import com.android.settings.DisplaySettings; 24 import com.android.settings.LegalSettings; 25 import com.android.settings.PrivacySettings; 26 import com.android.settings.ScreenPinningSettings; 27 import com.android.settings.SecuritySettings; 28 import com.android.settings.WallpaperTypeSettings; 29 import com.android.settings.WirelessSettings; 30 import com.android.settings.accessibility.AccessibilitySettings; 31 import com.android.settings.accounts.AccountSettings; 32 import com.android.settings.applications.AdvancedAppSettings; 33 import com.android.settings.applications.SpecialAccessSettings; 34 import com.android.settings.bluetooth.BluetoothSettings; 35 import com.android.settings.datausage.DataUsageMeteredSettings; 36 import com.android.settings.datausage.DataUsageSummary; 37 import com.android.settings.deviceinfo.StorageSettings; 38 import com.android.settings.display.ScreenZoomSettings; 39 import com.android.settings.fuelgauge.BatterySaverSettings; 40 import com.android.settings.fuelgauge.PowerUsageSummary; 41 import com.android.settings.gestures.GestureSettings; 42 import com.android.settings.inputmethod.InputMethodAndLanguageSettings; 43 import com.android.settings.location.LocationSettings; 44 import com.android.settings.location.ScanningSettings; 45 import com.android.settings.notification.ConfigureNotificationSettings; 46 import com.android.settings.notification.OtherSoundSettings; 47 import com.android.settings.notification.SoundSettings; 48 import com.android.settings.notification.ZenModeAutomationSettings; 49 import com.android.settings.notification.ZenModePrioritySettings; 50 import com.android.settings.notification.ZenModeSettings; 51 import com.android.settings.notification.ZenModeVisualInterruptionSettings; 52 import com.android.settings.print.PrintSettingsFragment; 53 import com.android.settings.sim.SimSettings; 54 import com.android.settings.users.UserSettings; 55 import com.android.settings.wifi.AdvancedWifiSettings; 56 import com.android.settings.wifi.SavedAccessPointsWifiSettings; 57 import com.android.settings.wifi.WifiSettings; 58 59 import java.util.HashMap; 60 61 /** 62 * Utility class for dealing with Search Ranking. 63 */ 64 public final class Ranking { 65 66 public static final int RANK_WIFI = 1; 67 public static final int RANK_BT = 2; 68 public static final int RANK_SIM = 3; 69 public static final int RANK_DATA_USAGE = 4; 70 public static final int RANK_WIRELESS = 5; 71 public static final int RANK_DISPLAY = 6; 72 public static final int RANK_WALLPAPER = 7; 73 public static final int RANK_NOTIFICATIONS = 8; 74 public static final int RANK_SOUND = 9; 75 public static final int RANK_APPS = 10; 76 public static final int RANK_STORAGE = 11; 77 public static final int RANK_POWER_USAGE = 12; 78 public static final int RANK_USERS = 13; 79 public static final int RANK_LOCATION = 14; 80 public static final int RANK_SECURITY = 15; 81 public static final int RANK_ACCOUNT = 16; 82 public static final int RANK_IME = 17; 83 public static final int RANK_PRIVACY = 18; 84 public static final int RANK_DATE_TIME = 19; 85 public static final int RANK_ACCESSIBILITY = 20; 86 public static final int RANK_PRINTING = 21; 87 public static final int RANK_DEVELOPEMENT = 22; 88 public static final int RANK_DEVICE_INFO = 23; 89 public static final int RANK_GESTURE = 24; 90 91 public static final int RANK_UNDEFINED = -1; 92 public static final int RANK_OTHERS = 1024; 93 public static final int BASE_RANK_DEFAULT = 2048; 94 95 public static int sCurrentBaseRank = BASE_RANK_DEFAULT; 96 97 private static HashMap<String, Integer> sRankMap = new HashMap<String, Integer>(); 98 private static HashMap<String, Integer> sBaseRankMap = new HashMap<String, Integer>(); 99 100 static { 101 // Wi-Fi WifiSettings.class.getName()102 sRankMap.put(WifiSettings.class.getName(), RANK_WIFI); AdvancedWifiSettings.class.getName()103 sRankMap.put(AdvancedWifiSettings.class.getName(), RANK_WIFI); SavedAccessPointsWifiSettings.class.getName()104 sRankMap.put(SavedAccessPointsWifiSettings.class.getName(), RANK_WIFI); 105 106 // BT BluetoothSettings.class.getName()107 sRankMap.put(BluetoothSettings.class.getName(), RANK_BT); 108 109 // SIM Cards SimSettings.class.getName()110 sRankMap.put(SimSettings.class.getName(), RANK_SIM); 111 112 // DataUsage DataUsageSummary.class.getName()113 sRankMap.put(DataUsageSummary.class.getName(), RANK_DATA_USAGE); DataUsageMeteredSettings.class.getName()114 sRankMap.put(DataUsageMeteredSettings.class.getName(), RANK_DATA_USAGE); 115 116 // Other wireless settinfs WirelessSettings.class.getName()117 sRankMap.put(WirelessSettings.class.getName(), RANK_WIRELESS); 118 119 // Display DisplaySettings.class.getName()120 sRankMap.put(DisplaySettings.class.getName(), RANK_DISPLAY); ScreenZoomSettings.class.getName()121 sRankMap.put(ScreenZoomSettings.class.getName(), RANK_WIFI); 122 123 // Wallpapers WallpaperTypeSettings.class.getName()124 sRankMap.put(WallpaperTypeSettings.class.getName(), RANK_WALLPAPER); 125 126 // Sound SoundSettings.class.getName()127 sRankMap.put(SoundSettings.class.getName(), RANK_SOUND); 128 129 // Notifications ConfigureNotificationSettings.class.getName()130 sRankMap.put(ConfigureNotificationSettings.class.getName(), RANK_NOTIFICATIONS); OtherSoundSettings.class.getName()131 sRankMap.put(OtherSoundSettings.class.getName(), RANK_NOTIFICATIONS); ZenModeSettings.class.getName()132 sRankMap.put(ZenModeSettings.class.getName(), RANK_NOTIFICATIONS); ZenModePrioritySettings.class.getName()133 sRankMap.put(ZenModePrioritySettings.class.getName(), RANK_NOTIFICATIONS); ZenModeAutomationSettings.class.getName()134 sRankMap.put(ZenModeAutomationSettings.class.getName(), RANK_NOTIFICATIONS); ZenModeVisualInterruptionSettings.class.getName()135 sRankMap.put(ZenModeVisualInterruptionSettings.class.getName(), RANK_NOTIFICATIONS); 136 137 // Storage StorageSettings.class.getName()138 sRankMap.put(StorageSettings.class.getName(), RANK_STORAGE); 139 140 // Battery PowerUsageSummary.class.getName()141 sRankMap.put(PowerUsageSummary.class.getName(), RANK_POWER_USAGE); BatterySaverSettings.class.getName()142 sRankMap.put(BatterySaverSettings.class.getName(), RANK_POWER_USAGE); 143 144 // Advanced app settings AdvancedAppSettings.class.getName()145 sRankMap.put(AdvancedAppSettings.class.getName(), RANK_APPS); SpecialAccessSettings.class.getName()146 sRankMap.put(SpecialAccessSettings.class.getName(), RANK_APPS); 147 148 // Users UserSettings.class.getName()149 sRankMap.put(UserSettings.class.getName(), RANK_USERS); 150 151 // Gestures GestureSettings.class.getName()152 sRankMap.put(GestureSettings.class.getName(), RANK_GESTURE); 153 154 // Location LocationSettings.class.getName()155 sRankMap.put(LocationSettings.class.getName(), RANK_LOCATION); ScanningSettings.class.getName()156 sRankMap.put(ScanningSettings.class.getName(), RANK_LOCATION); 157 158 // Security SecuritySettings.class.getName()159 sRankMap.put(SecuritySettings.class.getName(), RANK_SECURITY); ChooseLockGeneric.ChooseLockGenericFragment.class.getName()160 sRankMap.put(ChooseLockGeneric.ChooseLockGenericFragment.class.getName(), RANK_SECURITY); ScreenPinningSettings.class.getName()161 sRankMap.put(ScreenPinningSettings.class.getName(), RANK_SECURITY); 162 163 // Accounts AccountSettings.class.getName()164 sRankMap.put(AccountSettings.class.getName(), RANK_ACCOUNT); 165 166 // IMEs InputMethodAndLanguageSettings.class.getName()167 sRankMap.put(InputMethodAndLanguageSettings.class.getName(), RANK_IME); 168 169 // Privacy PrivacySettings.class.getName()170 sRankMap.put(PrivacySettings.class.getName(), RANK_PRIVACY); 171 172 // Date / Time DateTimeSettings.class.getName()173 sRankMap.put(DateTimeSettings.class.getName(), RANK_DATE_TIME); 174 175 // Accessibility AccessibilitySettings.class.getName()176 sRankMap.put(AccessibilitySettings.class.getName(), RANK_ACCESSIBILITY); 177 178 // Print PrintSettingsFragment.class.getName()179 sRankMap.put(PrintSettingsFragment.class.getName(), RANK_PRINTING); 180 181 // Development DevelopmentSettings.class.getName()182 sRankMap.put(DevelopmentSettings.class.getName(), RANK_DEVELOPEMENT); 183 184 // Device infos DeviceInfoSettings.class.getName()185 sRankMap.put(DeviceInfoSettings.class.getName(), RANK_DEVICE_INFO); LegalSettings.class.getName()186 sRankMap.put(LegalSettings.class.getName(), RANK_DEVICE_INFO); 187 188 sBaseRankMap.put("com.android.settings", 0); 189 } 190 getRankForClassName(String className)191 public static int getRankForClassName(String className) { 192 Integer rank = sRankMap.get(className); 193 return (rank != null) ? (int) rank: RANK_OTHERS; 194 } 195 getBaseRankForAuthority(String authority)196 public static int getBaseRankForAuthority(String authority) { 197 synchronized (sBaseRankMap) { 198 Integer base = sBaseRankMap.get(authority); 199 if (base != null) { 200 return base; 201 } 202 sCurrentBaseRank++; 203 sBaseRankMap.put(authority, sCurrentBaseRank); 204 return sCurrentBaseRank; 205 } 206 } 207 } 208