Add indexing for Storage preferences

- implement the contract for SEARCH_INDEX_DATA_PROVIDER

Change-Id: I131e9176c47ccd697d05961b09546ba0e51059f7
This commit is contained in:
Fabrice Di Meglio
2014-04-02 17:07:36 -07:00
parent fb5e639b30
commit f66eb7a8c8
2 changed files with 86 additions and 4 deletions

View File

@@ -41,6 +41,7 @@ import android.os.storage.StorageManager;
import android.os.storage.StorageVolume;
import android.preference.Preference;
import android.preference.PreferenceScreen;
import android.provider.SearchIndexableResource;
import android.util.Log;
import android.view.Menu;
import android.view.MenuInflater;
@@ -51,6 +52,8 @@ import com.android.settings.R;
import com.android.settings.SettingsActivity;
import com.android.settings.SettingsPreferenceFragment;
import com.android.settings.Utils;
import com.android.settings.search.Indexable;
import com.android.settings.search.SearchIndexableRaw;
import com.google.android.collect.Lists;
import java.util.ArrayList;
@@ -60,7 +63,7 @@ import java.util.List;
* Panel showing storage usage on disk for known {@link StorageVolume} returned
* by {@link StorageManager}. Calculates and displays usage of data types.
*/
public class Memory extends SettingsPreferenceFragment {
public class Memory extends SettingsPreferenceFragment implements Indexable{
private static final String TAG = "MemorySettings";
private static final String TAG_CONFIRM_CLEAR_CACHE = "confirmClearCache";
@@ -424,4 +427,85 @@ public class Memory extends SettingsPreferenceFragment {
return builder.create();
}
}
/**
* Enable indexing of searchable data
*/
public static final SearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
new SearchIndexProvider() {
@Override
public List<SearchIndexableResource> getXmlResourcesToIndex(
Context context, boolean enabled) {
return null;
}
@Override
public List<SearchIndexableRaw> getRawDataToIndex(Context context, boolean enabled) {
final List<SearchIndexableRaw> result = new ArrayList<SearchIndexableRaw>();
SearchIndexableRaw data = new SearchIndexableRaw(context);
data.title = context.getString(R.string.storage_settings);
data.screenTitle = context.getString(R.string.storage_settings);
result.add(data);
data = new SearchIndexableRaw(context);
data.title = context.getString(R.string.internal_storage);
data.screenTitle = context.getString(R.string.storage_settings);
result.add(data);
data = new SearchIndexableRaw(context);
final StorageVolume[] storageVolumes = StorageManager.from(context).getVolumeList();
for (StorageVolume volume : storageVolumes) {
if (!volume.isEmulated()) {
data.title = volume.getDescription(context);
data.screenTitle = context.getString(R.string.storage_settings);
result.add(data);
}
}
data = new SearchIndexableRaw(context);
data.title = context.getString(R.string.memory_size);
data.screenTitle = context.getString(R.string.storage_settings);
result.add(data);
data = new SearchIndexableRaw(context);
data.title = context.getString(R.string.memory_available);
data.screenTitle = context.getString(R.string.storage_settings);
result.add(data);
data = new SearchIndexableRaw(context);
data.title = context.getString(R.string.memory_apps_usage);
data.screenTitle = context.getString(R.string.storage_settings);
result.add(data);
data = new SearchIndexableRaw(context);
data.title = context.getString(R.string.memory_dcim_usage);
data.screenTitle = context.getString(R.string.storage_settings);
result.add(data);
data = new SearchIndexableRaw(context);
data.title = context.getString(R.string.memory_music_usage);
data.screenTitle = context.getString(R.string.storage_settings);
result.add(data);
data = new SearchIndexableRaw(context);
data.title = context.getString(R.string.memory_downloads_usage);
data.screenTitle = context.getString(R.string.storage_settings);
result.add(data);
data = new SearchIndexableRaw(context);
data.title = context.getString(R.string.memory_media_cache_usage);
data.screenTitle = context.getString(R.string.storage_settings);
result.add(data);
data = new SearchIndexableRaw(context);
data.title = context.getString(R.string.memory_media_misc_usage);
data.screenTitle = context.getString(R.string.storage_settings);
result.add(data);
return result;
}
};
}

View File

@@ -22,7 +22,6 @@ import com.android.settings.DevelopmentSettings;
import com.android.settings.DeviceInfoSettings;
import com.android.settings.DisplaySettings;
import com.android.settings.HomeSettings;
import com.android.settings.NotificationAccessSettings;
import com.android.settings.NotificationSettings;
import com.android.settings.PrivacySettings;
import com.android.settings.R;
@@ -44,7 +43,6 @@ import com.android.settings.wifi.WifiSettings;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
public final class SearchIndexableResources {
@@ -139,7 +137,7 @@ public final class SearchIndexableResources {
sResMap.put(Memory.class.getName(),
new SearchIndexableResource(RANK_MEMORY,
R.xml.device_info_memory,
NO_DATA_RES_ID,
Memory.class.getName(),
R.drawable.ic_settings_storage));