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

Commit 1c8e0743 authored by Jason Chiu's avatar Jason Chiu Committed by Android (Google) Code Review
Browse files

Merge "Prevent scrolling after the homepage recreating" into tm-dev

parents 4f829146 764e7fbc
Loading
Loading
Loading
Loading
+2 −3
Original line number Diff line number Diff line
@@ -182,6 +182,8 @@ public class SettingsHomepageActivity extends FragmentActivity implements
            showSuggestionFragment(scrollNeeded);
            if (FeatureFlagUtils.isEnabled(this, FeatureFlags.CONTEXTUAL_HOME)) {
                showFragment(() -> new ContextualCardsFragment(), R.id.contextual_cards_content);
                ((FrameLayout) findViewById(R.id.main_content))
                        .getLayoutTransition().enableTransitionType(LayoutTransition.CHANGING);
            }
        }
        mMainFragment = showFragment(() -> {
@@ -191,9 +193,6 @@ public class SettingsHomepageActivity extends FragmentActivity implements
            return fragment;
        }, R.id.main_content);

        ((FrameLayout) findViewById(R.id.main_content))
                .getLayoutTransition().enableTransitionType(LayoutTransition.CHANGING);

        // Launch the intent from deep link for large screen devices.
        launchDeepLinkIntentToRight();
    }
+16 −5
Original line number Diff line number Diff line
@@ -23,7 +23,6 @@ import android.os.Parcelable;
import android.text.TextUtils;
import android.util.Log;

import androidx.fragment.app.FragmentActivity;
import androidx.preference.PreferenceScreen;
import androidx.recyclerview.widget.RecyclerView;

@@ -43,14 +42,17 @@ public class TopLevelHighlightMixin implements Parcelable, DialogInterface.OnSho
    private String mHiddenKey;
    private DialogInterface mDialog;
    private HighlightableTopLevelPreferenceAdapter mTopLevelAdapter;
    private boolean mActivityEmbedded;

    public TopLevelHighlightMixin() {
    public TopLevelHighlightMixin(boolean activityEmbedded) {
        mActivityEmbedded = activityEmbedded;
    }

    public TopLevelHighlightMixin(Parcel source) {
        mCurrentKey = source.readString();
        mPreviousKey = source.readString();
        mHiddenKey = source.readString();
        mActivityEmbedded = source.readBoolean();
    }

    @Override
@@ -58,6 +60,7 @@ public class TopLevelHighlightMixin implements Parcelable, DialogInterface.OnSho
        dest.writeString(mCurrentKey);
        dest.writeString(mPreviousKey);
        dest.writeString(mHiddenKey);
        dest.writeBoolean(mActivityEmbedded);
    }

    @Override
@@ -96,8 +99,16 @@ public class TopLevelHighlightMixin implements Parcelable, DialogInterface.OnSho
        }
    }

    void setActivityEmbedded(boolean activityEmbedded) {
        mActivityEmbedded = activityEmbedded;
    }

    boolean isActivityEmbedded() {
        return mActivityEmbedded;
    }

    RecyclerView.Adapter onCreateAdapter(TopLevelSettings topLevelSettings,
            PreferenceScreen preferenceScreen) {
            PreferenceScreen preferenceScreen, boolean scrollNeeded) {
        if (TextUtils.isEmpty(mCurrentKey)) {
            mCurrentKey = getHighlightPrefKeyFromArguments(topLevelSettings.getArguments());
        }
@@ -105,7 +116,7 @@ public class TopLevelHighlightMixin implements Parcelable, DialogInterface.OnSho
        Log.d(TAG, "onCreateAdapter, pref key: " + mCurrentKey);
        mTopLevelAdapter = new HighlightableTopLevelPreferenceAdapter(
                (SettingsHomepageActivity) topLevelSettings.getActivity(), preferenceScreen,
                topLevelSettings.getListView(), mCurrentKey);
                topLevelSettings.getListView(), mCurrentKey, scrollNeeded);
        return mTopLevelAdapter;
    }

@@ -129,7 +140,7 @@ public class TopLevelHighlightMixin implements Parcelable, DialogInterface.OnSho
        }
    }

    void highlightPreferenceIfNeeded(FragmentActivity activity) {
    void highlightPreferenceIfNeeded() {
        if (mTopLevelAdapter != null) {
            mTopLevelAdapter.requestHighlight();
        }
+7 −3
Original line number Diff line number Diff line
@@ -58,6 +58,7 @@ public class TopLevelSettings extends DashboardFragment implements

    private boolean mIsEmbeddingActivityEnabled;
    private TopLevelHighlightMixin mHighlightMixin;
    private boolean mScrollNeeded = true;
    private boolean mFirstStarted = true;

    public TopLevelSettings() {
@@ -133,11 +134,14 @@ public class TopLevelSettings extends DashboardFragment implements
            return;
        }

        boolean activityEmbedded = SplitController.getInstance().isActivityEmbedded(getActivity());
        if (icicle != null) {
            mHighlightMixin = icicle.getParcelable(SAVED_HIGHLIGHT_MIXIN);
            mScrollNeeded = !mHighlightMixin.isActivityEmbedded() && activityEmbedded;
            mHighlightMixin.setActivityEmbedded(activityEmbedded);
        }
        if (mHighlightMixin == null) {
            mHighlightMixin = new TopLevelHighlightMixin();
            mHighlightMixin = new TopLevelHighlightMixin(activityEmbedded);
        }
    }

@@ -201,7 +205,7 @@ public class TopLevelSettings extends DashboardFragment implements
    @Override
    public void highlightPreferenceIfNeeded() {
        if (mHighlightMixin != null) {
            mHighlightMixin.highlightPreferenceIfNeeded(getActivity());
            mHighlightMixin.highlightPreferenceIfNeeded();
        }
    }

@@ -243,7 +247,7 @@ public class TopLevelSettings extends DashboardFragment implements
        if (!mIsEmbeddingActivityEnabled || !(getActivity() instanceof SettingsHomepageActivity)) {
            return super.onCreateAdapter(preferenceScreen);
        }
        return mHighlightMixin.onCreateAdapter(this, preferenceScreen);
        return mHighlightMixin.onCreateAdapter(this, preferenceScreen, mScrollNeeded);
    }

    @Override
+3 −1
Original line number Diff line number Diff line
@@ -67,10 +67,12 @@ public class HighlightableTopLevelPreferenceAdapter extends PreferenceGroupAdapt
    private SparseArray<PreferenceViewHolder> mViewHolders;

    public HighlightableTopLevelPreferenceAdapter(SettingsHomepageActivity homepageActivity,
            PreferenceGroup preferenceGroup, RecyclerView recyclerView, String key) {
            PreferenceGroup preferenceGroup, RecyclerView recyclerView, String key,
            boolean scrollNeeded) {
        super(preferenceGroup);
        mRecyclerView = recyclerView;
        mHighlightKey = key;
        mScrolled = !scrollNeeded;
        mViewHolders = new SparseArray<>();
        mContext = preferenceGroup.getContext();
        mHomepageActivity = homepageActivity;