Add dynamic Preferences indexing

- introduce a new private interface "Indexable".
- refactor Wallpaper and Wi-Fi settings to support this new
interface.
- only index saved/remembered Wi-Fi networks
- also add the capability to remove some data from the Index.

Fragments that want to publish some dynamic indexable data should
implement the "Indexable" interface and provide a static final field
named "INDEX_DATA_PROVIDER" with is the Indexable.IndexDataProvider
interface for providing the data for indexing.

Thru this interface the Index can ask what are the data chuncks to
index.

Change-Id: I31e7212c87b8218efe1a8f3028147cb19e119be6
diff --git a/src/com/android/settings/SettingsActivity.java b/src/com/android/settings/SettingsActivity.java
index 8582bc6..b3ea79a 100644
--- a/src/com/android/settings/SettingsActivity.java
+++ b/src/com/android/settings/SettingsActivity.java
@@ -95,7 +95,7 @@
 import com.android.settings.deviceinfo.UsbSettings;
 import com.android.settings.fuelgauge.PowerUsageSummary;
 import com.android.settings.indexer.Index;
-import com.android.settings.indexer.IndexableData;
+import com.android.settings.indexer.IndexableRef;
 import com.android.settings.inputmethod.InputMethodAndLanguageSettings;
 import com.android.settings.inputmethod.KeyboardLayoutPickerFragment;
 import com.android.settings.inputmethod.SpellCheckersSettings;
@@ -341,67 +341,72 @@
         }
     };
 
+    private static int NO_DATA_RES_ID = 0;
+
     /**
-     * Searchable data description.
+     * Indexable data description.
      *
      * Known restriction: we are only searching (for now) the first level of Settings.
      */
-    private static IndexableData[] INDEXABLE_DATA = new IndexableData[] {
-            new IndexableData(1, R.xml.wifi_settings,
+    private static IndexableRef[] INDEXABLE_REFS = new IndexableRef[] {
+            new IndexableRef(1, NO_DATA_RES_ID,
                     "com.android.settings.wifi.WifiSettings",
                     R.drawable.ic_settings_wireless),
-            new IndexableData(2, R.xml.bluetooth_settings,
+            new IndexableRef(2, R.xml.bluetooth_settings,
                     "com.android.settings.bluetooth.BluetoothSettings",
                     R.drawable.ic_settings_bluetooth2),
-            new IndexableData(3, R.xml.data_usage_metered_prefs,
+            new IndexableRef(3, R.xml.data_usage_metered_prefs,
                     "com.android.settings.net.DataUsageMeteredSettings",
                     R.drawable.ic_settings_data_usage),
-            new IndexableData(4, R.xml.wireless_settings,
+            new IndexableRef(4, R.xml.wireless_settings,
                     "com.android.settings.WirelessSettings",
                     R.drawable.empty_icon),
-            new IndexableData(5, R.xml.home_selection,
+            new IndexableRef(5, R.xml.home_selection,
                     "com.android.settings.HomeSettings",
                     R.drawable.ic_settings_home),
-            new IndexableData(6, R.xml.sound_settings,
+            new IndexableRef(6, R.xml.sound_settings,
                     "com.android.settings.SoundSettings",
                     R.drawable.ic_settings_sound),
-            new IndexableData(7, R.xml.display_settings,
+            new IndexableRef(7, R.xml.display_settings,
                     "com.android.settings.DisplaySettings",
                     R.drawable.ic_settings_display),
-            new IndexableData(8, R.xml.device_info_memory,
+            new IndexableRef(7, NO_DATA_RES_ID,
+                    "com.android.settings.WallpaperTypeSettings",
+                    R.drawable.ic_settings_display),
+            new IndexableRef(8, R.xml.device_info_memory,
                     "com.android.settings.deviceinfo.Memory",
                     R.drawable.ic_settings_storage),
-            new IndexableData(9, R.xml.power_usage_summary,
+            new IndexableRef(9, R.xml.power_usage_summary,
                     "com.android.settings.fuelgauge.PowerUsageSummary",
                     R.drawable.ic_settings_battery),
-            new IndexableData(10, R.xml.user_settings,
+            new IndexableRef(10, R.xml.user_settings,
                     "com.android.settings.users.UserSettings",
                     R.drawable.ic_settings_multiuser),
-            new IndexableData(11, R.xml.location_settings,
+            new IndexableRef(11, R.xml.location_settings,
                     "com.android.settings.location.LocationSettings",
                     R.drawable.ic_settings_location),
-            new IndexableData(12, R.xml.security_settings,
+            new IndexableRef(12, R.xml.security_settings,
                     "com.android.settings.SecuritySettings",
                     R.drawable.ic_settings_security),
-            new IndexableData(13, R.xml.language_settings,
+            new IndexableRef(13, R.xml.language_settings,
                     "com.android.settings.inputmethod.InputMethodAndLanguageSettings",
                     R.drawable.ic_settings_language),
-            new IndexableData(14, R.xml.privacy_settings,
+            new IndexableRef(14, R.xml.privacy_settings,
                     "com.android.settings.PrivacySettings",
                     R.drawable.ic_settings_backup),
-            new IndexableData(15, R.xml.date_time_prefs,
+            new IndexableRef(15, R.xml.date_time_prefs,
                     "com.android.settings.DateTimeSettings",
                     R.drawable.ic_settings_date_time),
-            new IndexableData(16, R.xml.accessibility_settings,
+            new IndexableRef(16, R.xml.accessibility_settings,
                     "com.android.settings.accessibility.AccessibilitySettings",
                     R.drawable.ic_settings_accessibility),
-            new IndexableData(17, R.xml.print_settings,
+            new IndexableRef(17, R.xml.print_settings,
                     "com.android.settings.print.PrintSettingsFragment",
                     com.android.internal.R.drawable.ic_print),
-            new IndexableData(18, R.xml.development_prefs,
+            new IndexableRef(18, R.xml.development_prefs,
                     "com.android.settings.DevelopmentSettings",
                     R.drawable.ic_settings_development),
-            new IndexableData(19, R.xml.device_info_settings,
+            new IndexableRef(19, R.xml.device_info_settings,
                     "com.android.settings.DeviceInfoSettings",
                     R.drawable.ic_settings_about),
     };
@@ -546,7 +551,7 @@
             getWindow().setUiOptions(getIntent().getIntExtra(EXTRA_UI_OPTIONS, 0));
         }
 
-        Index.getInstance(this).addIndexableData(INDEXABLE_DATA);
+        Index.getInstance(this).addIndexableData(INDEXABLE_REFS);
         Index.getInstance(this).update();
 
         mAuthenticatorHelper = new AuthenticatorHelper();