Add Indexable.SearchIndexProvider.getNonIndexableKeys(Context)

- getNonIndexableKeys(Context) allow a SearchIndexProvider to tell which data
he does not want to index by providing a list of the data keys
- use this new API for SoundSettings and removing KEY_EMERGENCY_TONE related
settings if the device is not CDMA
- add a BaseSearchIndexProvider for code simplification

Change-Id: I23633ace1d7e390ee05fac0a5458a33e04e72d8d
This commit is contained in:
Fabrice Di Meglio
2014-04-10 19:25:42 -07:00
parent a9d37050cb
commit 45f754e506
10 changed files with 152 additions and 76 deletions

View File

@@ -47,11 +47,14 @@ import android.provider.MediaStore;
import android.provider.Settings;
import android.telephony.TelephonyManager;
import android.util.Log;
import com.android.settings.search.BaseSearchIndexProvider;
import com.android.settings.search.Indexable;
import java.util.ArrayList;
import java.util.List;
public class SoundSettings extends SettingsPreferenceFragment implements
Preference.OnPreferenceChangeListener {
Preference.OnPreferenceChangeListener, Indexable {
private static final String TAG = "SoundSettings";
private static final int DIALOG_NOT_DOCKED = 1;
@@ -446,5 +449,23 @@ public class SoundSettings extends SettingsPreferenceFragment implements
ab.setPositiveButton(android.R.string.ok, null);
return ab.create();
}
public static final Indexable.SearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
new BaseSearchIndexProvider() {
@Override
public List<String> getNonIndexableKeys(Context context) {
final List<String> keys = new ArrayList<String>();
int activePhoneType = TelephonyManager.getDefault().getCurrentPhoneType();
if (TelephonyManager.PHONE_TYPE_CDMA != activePhoneType) {
// device is not CDMA, do not display CDMA emergency_tone
keys.add(KEY_EMERGENCY_TONE);
}
return keys;
}
};
}