Enable highlighting of Print services
- add to SettingsPreferenceFragment to know when the associated RootAdapter is changing and thus being able to find the highlighted Preference - also, add the correct Search key during indexing. She should match the one created when adding dynamically the Preference - last, increase to 400ms the delay to do the highlight Change-Id: I3a1a81fdf5c8ab5f3aaab29f16ea9879ab6df056
This commit is contained in:
@@ -23,6 +23,7 @@ import android.content.ContentResolver;
|
||||
import android.content.Context;
|
||||
import android.content.DialogInterface;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.database.DataSetObserver;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.os.Bundle;
|
||||
import android.preference.Preference;
|
||||
@@ -47,7 +48,7 @@ public class SettingsPreferenceFragment extends PreferenceFragment implements Di
|
||||
private static final String TAG = "SettingsPreferenceFragment";
|
||||
|
||||
private static final int MENU_HELP = Menu.FIRST + 100;
|
||||
private static final int DELAY_HIGHLIGHT_DURATION_MILLIS = 300;
|
||||
private static final int DELAY_HIGHLIGHT_DURATION_MILLIS = 400;
|
||||
|
||||
private static final String SAVE_HIGHLIGHTED_KEY = "android:preference_highlighted";
|
||||
|
||||
@@ -61,6 +62,18 @@ public class SettingsPreferenceFragment extends PreferenceFragment implements Di
|
||||
private String mPreferenceKey;
|
||||
private boolean mPreferenceHighlighted = false;
|
||||
|
||||
private DataSetObserver mDataSetObserver = new DataSetObserver() {
|
||||
@Override
|
||||
public void onChanged() {
|
||||
highlightPreferenceIfNeeded();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onInvalidated() {
|
||||
highlightPreferenceIfNeeded();
|
||||
}
|
||||
};
|
||||
|
||||
@Override
|
||||
public void onCreate(Bundle icicle) {
|
||||
super.onCreate(icicle);
|
||||
@@ -99,11 +112,18 @@ public class SettingsPreferenceFragment extends PreferenceFragment implements Di
|
||||
|
||||
@Override
|
||||
protected void onBindPreferences() {
|
||||
highlightPreferenceIfNeeded();
|
||||
getPreferenceScreen().getRootAdapter().registerDataSetObserver(mDataSetObserver);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDestroy() {
|
||||
super.onDestroy();
|
||||
|
||||
getPreferenceScreen().getRootAdapter().unregisterDataSetObserver(mDataSetObserver);
|
||||
}
|
||||
|
||||
public void highlightPreferenceIfNeeded() {
|
||||
if (!mPreferenceHighlighted &&!TextUtils.isEmpty(mPreferenceKey)) {
|
||||
if (isAdded() && !mPreferenceHighlighted &&!TextUtils.isEmpty(mPreferenceKey)) {
|
||||
highlightPreference(mPreferenceKey);
|
||||
}
|
||||
}
|
||||
|
@@ -565,7 +565,13 @@ public class PrintSettingsFragment extends SettingsPreferenceFragment
|
||||
final int serviceCount = services.size();
|
||||
for (int i = 0; i < serviceCount; i++) {
|
||||
PrintServiceInfo service = services.get(i);
|
||||
|
||||
ComponentName componentName = new ComponentName(
|
||||
service.getResolveInfo().serviceInfo.packageName,
|
||||
service.getResolveInfo().serviceInfo.name);
|
||||
|
||||
SearchIndexableRaw indexable = new SearchIndexableRaw(context);
|
||||
indexable.key = componentName.flattenToString();
|
||||
indexable.title = service.getResolveInfo().loadLabel(packageManager).toString();
|
||||
indexable.summaryOn = context.getString(R.string.print_feature_state_on);
|
||||
indexable.summaryOff = context.getString(R.string.print_feature_state_off);
|
||||
|
Reference in New Issue
Block a user