Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4a2ee7e2 authored by Fabrice Di Meglio's avatar Fabrice Di Meglio
Browse files

Improve Preference highlighting for Search

- cache hightlight Drawable
- set mPreferenceHighlighted as early as possible

Change-Id: I512d4677e94309175ead22c46b7a78e2aa387e1c
parent bbfaa11c
Loading
Loading
Loading
Loading
+5 −1
Original line number Original line Diff line number Diff line
@@ -32,6 +32,7 @@ public class HighlightingFragment extends Fragment {


    private String mViewKey;
    private String mViewKey;
    private boolean mViewHighlighted = false;
    private boolean mViewHighlighted = false;
    private Drawable mHighlightDrawable;


    @Override
    @Override
    public void onCreate(Bundle icicle) {
    public void onCreate(Bundle icicle) {
@@ -67,7 +68,10 @@ public class HighlightingFragment extends Fragment {
    }
    }


    private Drawable getHighlightDrawable() {
    private Drawable getHighlightDrawable() {
        return getActivity().getDrawable(R.drawable.preference_highlight);
        if (mHighlightDrawable == null) {
            mHighlightDrawable = getActivity().getDrawable(R.drawable.preference_highlight);
        }
        return mHighlightDrawable;
    }
    }


    private void highlightView(String key) {
    private void highlightView(String key) {
+14 −4
Original line number Original line Diff line number Diff line
@@ -61,6 +61,7 @@ public class SettingsPreferenceFragment extends PreferenceFragment implements Di


    private String mPreferenceKey;
    private String mPreferenceKey;
    private boolean mPreferenceHighlighted = false;
    private boolean mPreferenceHighlighted = false;
    private Drawable mHighlightDrawable;


    private boolean mIsDataSetObserverRegistered = false;
    private boolean mIsDataSetObserverRegistered = false;
    private DataSetObserver mDataSetObserver = new DataSetObserver() {
    private DataSetObserver mDataSetObserver = new DataSetObserver() {
@@ -103,6 +104,11 @@ public class SettingsPreferenceFragment extends PreferenceFragment implements Di
        if (!TextUtils.isEmpty(mHelpUrl)) {
        if (!TextUtils.isEmpty(mHelpUrl)) {
            setHasOptionsMenu(true);
            setHasOptionsMenu(true);
        }
        }
    }

    @Override
    public void onResume() {
        super.onResume();


        final Bundle args = getArguments();
        final Bundle args = getArguments();
        if (args != null) {
        if (args != null) {
@@ -144,7 +150,10 @@ public class SettingsPreferenceFragment extends PreferenceFragment implements Di
    }
    }


    private Drawable getHighlightDrawable() {
    private Drawable getHighlightDrawable() {
        return getActivity().getDrawable(R.drawable.preference_highlight);
        if (mHighlightDrawable == null) {
            mHighlightDrawable = getActivity().getDrawable(R.drawable.preference_highlight);
        }
        return mHighlightDrawable;
    }
    }


    /**
    /**
@@ -170,6 +179,8 @@ public class SettingsPreferenceFragment extends PreferenceFragment implements Di


        final int position = canUseListViewForHighLighting(key);
        final int position = canUseListViewForHighLighting(key);
        if (position >= 0) {
        if (position >= 0) {
            mPreferenceHighlighted = true;

            final ListView listView = getListView();
            final ListView listView = getListView();
            final ListAdapter adapter = listView.getAdapter();
            final ListAdapter adapter = listView.getAdapter();


@@ -189,17 +200,16 @@ public class SettingsPreferenceFragment extends PreferenceFragment implements Di
                            highlight.setHotspot(centerX, centerY);
                            highlight.setHotspot(centerX, centerY);
                            v.setPressed(true);
                            v.setPressed(true);
                            v.setPressed(false);
                            v.setPressed(false);
                            ((PreferenceGroupAdapter) adapter).setHighlighted(-1);
                        }
                        }
                    }, DELAY_HIGHLIGHT_DURATION_MILLIS);
                    }, DELAY_HIGHLIGHT_DURATION_MILLIS);

                    mPreferenceHighlighted = true;
                }
                }
            });
            });
        } else {
        } else {
            // Try locating the Preference View thru its tag
            // Try locating the Preference View thru its tag
            View preferenceView = findPreferenceViewForKey(getView(), key);
            View preferenceView = findPreferenceViewForKey(getView(), key);
            if (preferenceView != null ) {
            if (preferenceView != null ) {
                mPreferenceHighlighted = true;

                preferenceView.setBackground(highlight);
                preferenceView.setBackground(highlight);
                final int centerX = preferenceView.getWidth() / 2;
                final int centerX = preferenceView.getWidth() / 2;
                final int centerY = preferenceView.getHeight() / 2;
                final int centerY = preferenceView.getHeight() / 2;