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 /src/com/android/settings/net | |
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
Diffstat (limited to 'src/com/android/settings/net')
-rw-r--r-- | src/com/android/settings/net/DataUsageMeteredSettings.java | 89 |
1 files changed, 88 insertions, 1 deletions
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; + } + }; + } |