diff --git a/res/xml/storage_dashboard_fragment.xml b/res/xml/storage_dashboard_fragment.xml index 463dd96f7e0..81191e83e10 100644 --- a/res/xml/storage_dashboard_fragment.xml +++ b/res/xml/storage_dashboard_fragment.xml @@ -14,7 +14,9 @@ limitations under the License. --> - + keys); /** * Removes preference from screen. diff --git a/src/com/android/settings/deviceinfo/ManageStoragePreferenceController.java b/src/com/android/settings/deviceinfo/ManageStoragePreferenceController.java index 86dc07dc422..aae4be0bf87 100644 --- a/src/com/android/settings/deviceinfo/ManageStoragePreferenceController.java +++ b/src/com/android/settings/deviceinfo/ManageStoragePreferenceController.java @@ -22,6 +22,8 @@ import android.support.v7.preference.PreferenceScreen; import com.android.settings.R; import com.android.settings.core.PreferenceController; +import java.util.List; + public class ManageStoragePreferenceController extends PreferenceController { public static final String KEY_MANAGE_STORAGE = "pref_manage_storage"; @@ -37,6 +39,13 @@ public class ManageStoragePreferenceController extends PreferenceController { } } + @Override + public void updateNonIndexableKeys(List keys) { + if (!isAvailable()) { + keys.add(KEY_MANAGE_STORAGE); + } + } + @Override public boolean handlePreferenceTreeClick(Preference preference) { return false; diff --git a/src/com/android/settings/deviceinfo/StorageDashboardFragment.java b/src/com/android/settings/deviceinfo/StorageDashboardFragment.java index f32731c899a..cb6343a16f0 100644 --- a/src/com/android/settings/deviceinfo/StorageDashboardFragment.java +++ b/src/com/android/settings/deviceinfo/StorageDashboardFragment.java @@ -18,10 +18,19 @@ package com.android.settings.deviceinfo; import android.content.Context; import android.os.Bundle; +import android.os.UserManager; +import android.provider.SearchIndexableResource; import android.support.v7.preference.PreferenceScreen; import com.android.settings.R; import com.android.settings.dashboard.DashboardFragment; +import com.android.settings.overlay.FeatureFactory; +import com.android.settings.search.BaseSearchIndexProvider; +import com.android.settings.search.Indexable; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; public class StorageDashboardFragment extends DashboardFragment { @@ -62,4 +71,35 @@ public class StorageDashboardFragment extends DashboardFragment { displayTilesAsPreference(TAG, getPreferenceScreen(), mDashboardFeatureProvider.getTilesForStorageCategory()); } + + /** + * For Search. + */ + public static final Indexable.SearchIndexProvider SEARCH_INDEX_DATA_PROVIDER = + new BaseSearchIndexProvider() { + @Override + public List getXmlResourcesToIndex( + Context context, boolean enabled) { + if (!FeatureFactory.getFactory(context).getDashboardFeatureProvider(context) + .isEnabled()) { + return null; + } + final SearchIndexableResource sir = new SearchIndexableResource(context); + sir.xmlResId = R.xml.storage_dashboard_fragment; + return Arrays.asList(sir); + } + + @Override + public List getNonIndexableKeys(Context context) { + if (!FeatureFactory.getFactory(context).getDashboardFeatureProvider(context) + .isEnabled()) { + return null; + } + final ManageStoragePreferenceController controller = + new ManageStoragePreferenceController(context); + final List keys = new ArrayList<>(); + controller.updateNonIndexableKeys(keys); + return keys; + } + }; } diff --git a/src/com/android/settings/deviceinfo/SystemUpdatePreferenceController.java b/src/com/android/settings/deviceinfo/SystemUpdatePreferenceController.java index dfab9816dd3..5c2ebcb4b7d 100644 --- a/src/com/android/settings/deviceinfo/SystemUpdatePreferenceController.java +++ b/src/com/android/settings/deviceinfo/SystemUpdatePreferenceController.java @@ -62,11 +62,7 @@ public class SystemUpdatePreferenceController extends PreferenceController { } } - /** - * Updates non-indexable keys for search provider. - * - * Called by SearchIndexProvider#getNonIndexableKeys - */ + @Override public void updateNonIndexableKeys(List keys) { // TODO: system update needs to be fixed for non-owner user b/22760654 if (!isAvailable(mContext, KEY_SYSTEM_UPDATE_SETTINGS)) { diff --git a/src/com/android/settings/search/Ranking.java b/src/com/android/settings/search/Ranking.java index 1f5df85cd91..e9ceb85d089 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.applications.SpecialAccessSettings; import com.android.settings.bluetooth.BluetoothSettings; import com.android.settings.datausage.DataUsageMeteredSettings; import com.android.settings.datausage.DataUsageSummary; +import com.android.settings.deviceinfo.StorageDashboardFragment; import com.android.settings.deviceinfo.StorageSettings; import com.android.settings.display.ScreenZoomSettings; import com.android.settings.fuelgauge.BatterySaverSettings; @@ -186,6 +187,7 @@ public final class Ranking { sRankMap.put(DeviceInfoSettings.class.getName(), RANK_DEVICE_INFO); sRankMap.put(LegalSettings.class.getName(), RANK_DEVICE_INFO); + sRankMap.put(StorageDashboardFragment.class.getName(), RANK_STORAGE); sRankMap.put(SystemDashboardFragment.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 299f0591a60..1b8e0befec6 100644 --- a/src/com/android/settings/search/SearchIndexableResources.java +++ b/src/com/android/settings/search/SearchIndexableResources.java @@ -35,6 +35,7 @@ import com.android.settings.applications.SpecialAccessSettings; import com.android.settings.bluetooth.BluetoothSettings; import com.android.settings.datausage.DataUsageMeteredSettings; import com.android.settings.datausage.DataUsageSummary; +import com.android.settings.deviceinfo.StorageDashboardFragment; import com.android.settings.deviceinfo.StorageSettings; import com.android.settings.display.ScreenZoomSettings; import com.android.settings.fuelgauge.BatterySaverSettings; @@ -334,6 +335,12 @@ public final class SearchIndexableResources { NO_DATA_RES_ID, SystemDashboardFragment.class.getName(), R.drawable.ic_settings_about)); + sResMap.put(StorageDashboardFragment.class.getName(), + new SearchIndexableResource( + Ranking.getRankForClassName(StorageDashboardFragment.class.getName()), + NO_DATA_RES_ID, + StorageDashboardFragment.class.getName(), + R.drawable.ic_settings_storage)); } private SearchIndexableResources() {