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