summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFabrice Di Meglio <fdimeglio@google.com>2014-06-17 12:30:18 -0700
committerFabrice Di Meglio <fdimeglio@google.com>2014-06-17 12:30:18 -0700
commitc9711beb3c6313c1ea0c39a5ab7d59af56ee78c7 (patch)
tree1857e1a50126630a5d8bec561a1514acedd1299c
parentdbaf080f44c72dcd08136c8b026c782696102df6 (diff)
downloadpackages_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.xml3
-rw-r--r--src/com/android/settings/Utils.java2
-rw-r--r--src/com/android/settings/net/DataUsageMeteredSettings.java89
-rw-r--r--src/com/android/settings/search/Ranking.java22
-rw-r--r--src/com/android/settings/search/SearchIndexableResources.java8
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()),