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