diff options
author | Fabrice Di Meglio <fdimeglio@google.com> | 2014-06-17 12:30:18 -0700 |
---|---|---|
committer | Fabrice Di Meglio <fdimeglio@google.com> | 2014-06-17 12:30:18 -0700 |
commit | c9711beb3c6313c1ea0c39a5ab7d59af56ee78c7 (patch) | |
tree | 1857e1a50126630a5d8bec561a1514acedd1299c | |
parent | dbaf080f44c72dcd08136c8b026c782696102df6 (diff) | |
download | packages_apps_Settings-c9711beb3c6313c1ea0c39a5ab7d59af56ee78c7.zip packages_apps_Settings-c9711beb3c6313c1ea0c39a5ab7d59af56ee78c7.tar.gz packages_apps_Settings-c9711beb3c6313c1ea0c39a5ab7d59af56ee78c7.tar.bz2 |
Add Search / Indexing to Data Usage / Mobile Hotspots
- implement a BaseSearchIndexProvider and pass all the needed
strings to index (including the Wi-Fi SSIDs)
Change-Id: Ic7a640c76cd7c2af77585e87e216b283af61a29e
-rw-r--r-- | res/xml/data_usage_metered_prefs.xml | 3 | ||||
-rw-r--r-- | src/com/android/settings/Utils.java | 2 | ||||
-rw-r--r-- | src/com/android/settings/net/DataUsageMeteredSettings.java | 89 | ||||
-rw-r--r-- | src/com/android/settings/search/Ranking.java | 22 | ||||
-rw-r--r-- | src/com/android/settings/search/SearchIndexableResources.java | 8 |
5 files changed, 121 insertions, 3 deletions
diff --git a/res/xml/data_usage_metered_prefs.xml b/res/xml/data_usage_metered_prefs.xml index a0c6df4..5026a35 100644 --- a/res/xml/data_usage_metered_prefs.xml +++ b/res/xml/data_usage_metered_prefs.xml @@ -14,7 +14,8 @@ limitations under the License. --> -<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"> +<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" + android:title="@string/display_settings"> <Preference android:summary="@string/data_usage_metered_body" diff --git a/src/com/android/settings/Utils.java b/src/com/android/settings/Utils.java index 8bcd266..78d4098 100644 --- a/src/com/android/settings/Utils.java +++ b/src/com/android/settings/Utils.java @@ -66,7 +66,7 @@ import java.util.Iterator; import java.util.List; import java.util.Locale; -public class Utils { +public final class Utils { /** * Set the preference's title to the matching activity's label. diff --git a/src/com/android/settings/net/DataUsageMeteredSettings.java b/src/com/android/settings/net/DataUsageMeteredSettings.java index fb000db..87358f6 100644 --- a/src/com/android/settings/net/DataUsageMeteredSettings.java +++ b/src/com/android/settings/net/DataUsageMeteredSettings.java @@ -22,6 +22,7 @@ import static com.android.settings.DataUsageSummary.hasReadyMobileRadio; import static com.android.settings.DataUsageSummary.hasWifiRadio; import android.content.Context; +import android.content.res.Resources; import android.net.NetworkPolicy; import android.net.NetworkPolicyManager; import android.net.NetworkTemplate; @@ -31,15 +32,23 @@ import android.os.Bundle; import android.preference.CheckBoxPreference; import android.preference.Preference; import android.preference.PreferenceCategory; +import android.provider.SearchIndexableResource; import android.telephony.TelephonyManager; import com.android.settings.R; import com.android.settings.SettingsPreferenceFragment; +import com.android.settings.search.BaseSearchIndexProvider; +import com.android.settings.search.Indexable; +import com.android.settings.search.SearchIndexableRaw; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; /** * Panel to configure {@link NetworkPolicy#metered} for networks. */ -public class DataUsageMeteredSettings extends SettingsPreferenceFragment { +public class DataUsageMeteredSettings extends SettingsPreferenceFragment implements Indexable { private static final boolean SHOW_MOBILE_CATEGORY = false; @@ -141,4 +150,82 @@ public class DataUsageMeteredSettings extends SettingsPreferenceFragment { } } } + + /** + * For search + */ + public static final Indexable.SearchIndexProvider SEARCH_INDEX_DATA_PROVIDER = + new BaseSearchIndexProvider() { + @Override + public List<SearchIndexableRaw> getRawDataToIndex(Context context, boolean enabled) { + final List<SearchIndexableRaw> result = new ArrayList<SearchIndexableRaw>(); + final Resources res = context.getResources(); + + // Add fragment title + SearchIndexableRaw data = new SearchIndexableRaw(context); + data.title = res.getString(R.string.data_usage_menu_metered); + data.screenTitle = res.getString(R.string.data_usage_menu_metered); + result.add(data); + + // Body + data = new SearchIndexableRaw(context); + data.title = res.getString(R.string.data_usage_metered_body); + data.screenTitle = res.getString(R.string.data_usage_menu_metered); + result.add(data); + + if (SHOW_MOBILE_CATEGORY && hasReadyMobileRadio(context)) { + // Mobile networks category + data = new SearchIndexableRaw(context); + data.title = res.getString(R.string.data_usage_metered_mobile); + data.screenTitle = res.getString(R.string.data_usage_menu_metered); + result.add(data); + + final TelephonyManager tele = TelephonyManager.from(context); + + data = new SearchIndexableRaw(context); + data.title = tele.getNetworkOperatorName(); + data.screenTitle = res.getString(R.string.data_usage_menu_metered); + result.add(data); + } + + // Wi-Fi networks category + data = new SearchIndexableRaw(context); + data.title = res.getString(R.string.data_usage_metered_wifi); + data.screenTitle = res.getString(R.string.data_usage_menu_metered); + result.add(data); + + final WifiManager wifiManager = + (WifiManager) context.getSystemService(Context.WIFI_SERVICE); + if (hasWifiRadio(context) && wifiManager.isWifiEnabled()) { + for (WifiConfiguration config : wifiManager.getConfiguredNetworks()) { + if (config.SSID != null) { + final String networkId = config.SSID; + + data = new SearchIndexableRaw(context); + data.title = removeDoubleQuotes(networkId); + data.screenTitle = res.getString(R.string.data_usage_menu_metered); + result.add(data); + } + } + } else { + data = new SearchIndexableRaw(context); + data.title = res.getString(R.string.data_usage_metered_wifi_disabled); + data.screenTitle = res.getString(R.string.data_usage_menu_metered); + result.add(data); + } + + return result; + } + + @Override + public List<String> getNonIndexableKeys(Context context) { + final ArrayList<String> result = new ArrayList<String>(); + if (!SHOW_MOBILE_CATEGORY || !hasReadyMobileRadio(context)) { + result.add("mobile"); + } + + return result; + } + }; + } diff --git a/src/com/android/settings/search/Ranking.java b/src/com/android/settings/search/Ranking.java index 80ea83a..b3d90dd 100644 --- a/src/com/android/settings/search/Ranking.java +++ b/src/com/android/settings/search/Ranking.java @@ -34,6 +34,7 @@ import com.android.settings.fuelgauge.BatterySaverSettings; import com.android.settings.fuelgauge.PowerUsageSummary; import com.android.settings.inputmethod.InputMethodAndLanguageSettings; import com.android.settings.location.LocationSettings; +import com.android.settings.net.DataUsageMeteredSettings; import com.android.settings.notification.NotificationDisplaySettings; import com.android.settings.notification.NotificationSettings; import com.android.settings.notification.OtherSoundSettings; @@ -81,50 +82,71 @@ public final class Ranking { private static HashMap<String, Integer> sBaseRankMap = new HashMap<String, Integer>(); static { + // Wi-Fi sRankMap.put(WifiSettings.class.getName(), RANK_WIFI); sRankMap.put(AdvancedWifiSettings.class.getName(), RANK_WIFI); + // BT sRankMap.put(BluetoothSettings.class.getName(), RANK_BT); + // DataUsage sRankMap.put(DataUsageSummary.class.getName(), RANK_DATA_USAGE); + sRankMap.put(DataUsageMeteredSettings.class.getName(), RANK_DATA_USAGE); + // Other wireless settinfs sRankMap.put(WirelessSettings.class.getName(), RANK_WIRELESS); + // Home sRankMap.put(HomeSettings.class.getName(), RANK_HOME); + // Display sRankMap.put(DisplaySettings.class.getName(), RANK_DISPLAY); + // Wallpapers sRankMap.put(WallpaperTypeSettings.class.getName(), RANK_WALLPAPER); + // Notifications sRankMap.put(NotificationSettings.class.getName(), RANK_NOTIFICATIONS); sRankMap.put(NotificationDisplaySettings.class.getName(), RANK_NOTIFICATIONS); sRankMap.put(OtherSoundSettings.class.getName(), RANK_NOTIFICATIONS); sRankMap.put(ZenModeSettings.class.getName(), RANK_NOTIFICATIONS); + // Memory sRankMap.put(Memory.class.getName(), RANK_MEMORY); + // Battery sRankMap.put(PowerUsageSummary.class.getName(), RANK_POWER_USAGE); sRankMap.put(BatterySaverSettings.class.getName(), RANK_POWER_USAGE); + // Users sRankMap.put(UserSettings.class.getName(), RANK_USERS); + // Location sRankMap.put(LocationSettings.class.getName(), RANK_LOCATION); + // Security sRankMap.put(SecuritySettings.class.getName(), RANK_SECURITY); sRankMap.put(ChooseLockGeneric.ChooseLockGenericFragment.class.getName(), RANK_SECURITY); + // IMEs sRankMap.put(InputMethodAndLanguageSettings.class.getName(), RANK_IME); + // Privacy sRankMap.put(PrivacySettings.class.getName(), RANK_PRIVACY); + // Date / Time sRankMap.put(DateTimeSettings.class.getName(), RANK_DATE_TIME); + // Accessibility sRankMap.put(AccessibilitySettings.class.getName(), RANK_ACCESSIBILITY); + // Print sRankMap.put(PrintSettingsFragment.class.getName(), RANK_PRINTING); + // Development sRankMap.put(DevelopmentSettings.class.getName(), RANK_DEVELOPEMENT); + // Device infos sRankMap.put(DeviceInfoSettings.class.getName(), RANK_DEVICE_INFO); sBaseRankMap.put("com.android.settings", 0); diff --git a/src/com/android/settings/search/SearchIndexableResources.java b/src/com/android/settings/search/SearchIndexableResources.java index 086ebfc..5f380eb 100644 --- a/src/com/android/settings/search/SearchIndexableResources.java +++ b/src/com/android/settings/search/SearchIndexableResources.java @@ -37,6 +37,7 @@ import com.android.settings.fuelgauge.BatterySaverSettings; import com.android.settings.fuelgauge.PowerUsageSummary; import com.android.settings.inputmethod.InputMethodAndLanguageSettings; import com.android.settings.location.LocationSettings; +import com.android.settings.net.DataUsageMeteredSettings; import com.android.settings.notification.NotificationDisplaySettings; import com.android.settings.notification.NotificationSettings; import com.android.settings.notification.OtherSoundSettings; @@ -85,6 +86,13 @@ public final class SearchIndexableResources { DataUsageSummary.class.getName(), R.drawable.ic_settings_data_usage)); + sResMap.put(DataUsageMeteredSettings.class.getName(), + new SearchIndexableResource( + Ranking.getRankForClassName(DataUsageMeteredSettings.class.getName()), + NO_DATA_RES_ID, + DataUsageMeteredSettings.class.getName(), + R.drawable.ic_settings_data_usage)); + sResMap.put(WirelessSettings.class.getName(), new SearchIndexableResource( Ranking.getRankForClassName(WirelessSettings.class.getName()), |