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

Commit 244df10d authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Fine tune the homepage scrolling behavior" into sc-v2-dev

parents 82eeacf2 ae5327d4
Loading
Loading
Loading
Loading
+30 −1
Original line number Diff line number Diff line
@@ -1197,6 +1197,8 @@
            </intent-filter>
            <meta-data android:name="com.android.settings.FRAGMENT_CLASS"
                       android:value="com.android.settings.security.LockscreenDashboardFragment" />
            <meta-data android:name="com.android.settings.HIGHLIGHT_MENU_KEY"
                       android:value="@string/menu_key_display"/>
            <meta-data android:name="com.android.settings.PRIMARY_PROFILE_CONTROLLED"
                       android:value="true" />
        </activity>
@@ -1223,6 +1225,8 @@
            </intent-filter>
            <meta-data android:name="com.android.settings.FRAGMENT_CLASS"
                       android:value="com.android.settings.deviceinfo.legal.ModuleLicensesDashboard" />
            <meta-data android:name="com.android.settings.HIGHLIGHT_MENU_KEY"
                       android:value="@string/menu_key_about_device"/>
            <meta-data android:name="com.android.settings.PRIMARY_PROFILE_CONTROLLED"
                       android:value="true" />
        </activity>
@@ -1243,6 +1247,8 @@
            </intent-filter>
            <meta-data android:name="com.android.settings.FRAGMENT_CLASS"
                android:value="com.android.settings.applications.manageapplications.ManageApplications" />
            <meta-data android:name="com.android.settings.HIGHLIGHT_MENU_KEY"
                       android:value="@string/menu_key_apps"/>
            <meta-data android:name="com.android.settings.PRIMARY_PROFILE_CONTROLLED"
                android:value="true" />
        </activity>
@@ -1266,6 +1272,8 @@
            </intent-filter>
            <meta-data android:name="com.android.settings.FRAGMENT_CLASS"
                       android:value="com.android.settings.applications.managedomainurls.ManageDomainUrls" />
            <meta-data android:name="com.android.settings.HIGHLIGHT_MENU_KEY"
                       android:value="@string/menu_key_apps"/>
        </activity>

        <activity android:name="Settings$AppMemoryUsageActivity"
@@ -1278,6 +1286,8 @@
            </intent-filter>
            <meta-data android:name="com.android.settings.FRAGMENT_CLASS"
                       android:value="com.android.settings.applications.ProcessStatsUi" />
            <meta-data android:name="com.android.settings.HIGHLIGHT_MENU_KEY"
                       android:value="@string/menu_key_apps"/>
        </activity>

        <activity
@@ -1290,6 +1300,8 @@
            </intent-filter>
            <meta-data android:name="com.android.settings.FRAGMENT_CLASS"
                android:value="com.android.settings.applications.manageapplications.ManageApplications" />
            <meta-data android:name="com.android.settings.HIGHLIGHT_MENU_KEY"
                       android:value="@string/menu_key_apps"/>
            <meta-data android:name="com.android.settings.PRIMARY_PROFILE_CONTROLLED"
                android:value="true" />
        </activity>
@@ -1396,6 +1408,8 @@
            </intent-filter>
            <meta-data android:name="com.android.settings.FRAGMENT_CLASS"
                android:value="com.android.settings.applications.manageapplications.ManageApplications" />
            <meta-data android:name="com.android.settings.HIGHLIGHT_MENU_KEY"
                       android:value="@string/menu_key_apps"/>
            <meta-data android:name="com.android.settings.PRIMARY_PROFILE_CONTROLLED"
                android:value="true" />
        </activity>
@@ -1417,6 +1431,8 @@
            </intent-filter>
            <meta-data android:name="com.android.settings.FRAGMENT_CLASS"
                android:value="com.android.settings.applications.manageapplications.ManageApplications" />
            <meta-data android:name="com.android.settings.HIGHLIGHT_MENU_KEY"
                       android:value="@string/menu_key_apps"/>
            <meta-data android:name="com.android.settings.PRIMARY_PROFILE_CONTROLLED"
                android:value="true" />
        </activity>
@@ -2245,6 +2261,8 @@
            </intent-filter>
            <meta-data android:name="com.android.settings.FRAGMENT_CLASS"
                       android:value="com.android.settings.network.apn.ApnEditor" />
            <meta-data android:name="com.android.settings.HIGHLIGHT_MENU_KEY"
                       android:value="@string/menu_key_network"/>
        </activity>

        <activity
@@ -2273,6 +2291,8 @@
                       android:value="com.android.settings.development.DevelopmentSettingsDashboardFragment" />
            <meta-data android:name="com.android.settings.PRIMARY_PROFILE_CONTROLLED"
                       android:value="true" />
            <meta-data android:name="com.android.settings.HIGHLIGHT_MENU_KEY"
                       android:value="@string/menu_key_system"/>
        </activity>

        <!-- The opposite of DevelopmentSettingsActivity, it's no-op and only enabled when the real
@@ -2307,6 +2327,8 @@
            </intent-filter>
            <meta-data android:name="com.android.settings.FRAGMENT_CLASS"
                android:value="com.android.settings.print.PrintSettingsFragment" />
            <meta-data android:name="com.android.settings.HIGHLIGHT_MENU_KEY"
                       android:value="@string/menu_key_connected_devices"/>
        </activity>

        <activity android:name="Settings$PrintJobSettingsActivity"
@@ -2319,6 +2341,8 @@
            </intent-filter>
            <meta-data android:name="com.android.settings.FRAGMENT_CLASS"
                android:value="com.android.settings.print.PrintJobSettingsFragment" />
            <meta-data android:name="com.android.settings.HIGHLIGHT_MENU_KEY"
                       android:value="@string/menu_key_connected_devices"/>
        </activity>

        <activity android:name=".development.AppPicker"
@@ -2339,7 +2363,10 @@
                  android:label="@string/accessor_info_title" />

        <activity android:name="Settings$WebViewAppPickerActivity"
                  android:label="@string/select_webview_provider_dialog_title" />
                  android:label="@string/select_webview_provider_dialog_title">
            <meta-data android:name="com.android.settings.HIGHLIGHT_MENU_KEY"
                       android:value="@string/menu_key_system"/>
        </activity>

        <activity android:name="Settings$BugReportHandlerPickerActivity"
            android:label="@string/bug_report_handler_title"
@@ -2353,6 +2380,8 @@
                android:value="true" />
            <meta-data android:name="com.android.settings.FRAGMENT_CLASS"
                android:value="com.android.settings.bugreporthandler.BugReportHandlerPicker" />
            <meta-data android:name="com.android.settings.HIGHLIGHT_MENU_KEY"
                       android:value="@string/menu_key_system"/>
        </activity>

        <activity android:name=".bluetooth.BluetoothPairingDialog"
+7 −3
Original line number Diff line number Diff line
@@ -99,7 +99,9 @@ public class SettingsHomepageActivity extends FragmentActivity implements
        if (mHomepageView == null) {
            return false;
        } else {
            if (!mLoadedListeners.contains(listener)) {
                mLoadedListeners.add(listener);
            }
            return true;
        }
    }
@@ -113,11 +115,13 @@ public class SettingsHomepageActivity extends FragmentActivity implements
            return;
        }
        Log.i(TAG, "showHomepageWithSuggestion: " + showSuggestion);
        final View homepageView = mHomepageView;
        mSuggestionView.setVisibility(showSuggestion ? View.VISIBLE : View.GONE);
        mHomepageView.setVisibility(View.VISIBLE);
        mHomepageView = null;

        mLoadedListeners.forEach(listener -> listener.onHomepageLoaded());
        mLoadedListeners.clear();
        homepageView.setVisibility(View.VISIBLE);
    }

    @Override
@@ -199,7 +203,7 @@ public class SettingsHomepageActivity extends FragmentActivity implements
        mSuggestionView = findViewById(R.id.suggestion_content);
        mHomepageView = findViewById(R.id.settings_homepage_container);
        // Hide the homepage for preparing the suggestion.
        mHomepageView.setVisibility(View.GONE);
        mHomepageView.setVisibility(View.INVISIBLE);
        // Schedule a timer to show the homepage and hide the suggestion on timeout.
        mHomepageView.postDelayed(() -> showHomepageWithSuggestion(false),
                HOMEPAGE_LOADING_TIMEOUT_MS);
+2 −1
Original line number Diff line number Diff line
@@ -201,7 +201,8 @@ public class TopLevelSettings extends DashboardFragment implements

    @Override
    protected RecyclerView.Adapter onCreateAdapter(PreferenceScreen preferenceScreen) {
        if (!ActivityEmbeddingUtils.isEmbeddingActivityEnabled(getContext())) {
        if (!ActivityEmbeddingUtils.isEmbeddingActivityEnabled(getContext())
                || !(getActivity() instanceof SettingsHomepageActivity)) {
            return super.onCreateAdapter(preferenceScreen);
        }

+2 −3
Original line number Diff line number Diff line
@@ -94,7 +94,7 @@ public class SearchResultTrampoline extends Activity {

        if (!ActivityEmbeddingUtils.isEmbeddingActivityEnabled(this)) {
            startActivity(intent);
        } else if (isFromSettingsIntelligence(callingActivity)) {
        } else if (isSettingsIntelligence(callingActivity)) {
            // Register SplitPairRule for SubSettings, set clearTop false to prevent unexpected back
            // navigation behavior.
            ActivityEmbeddingRulesController.registerSubSettingsPairRule(this,
@@ -104,7 +104,6 @@ public class SearchResultTrampoline extends Activity {
            startActivity(intent);
        } else {
            // Two-pane case
            intent.setFlags(intent.getFlags() & ~Intent.FLAG_ACTIVITY_NEW_TASK);
            startActivity(SettingsActivity.getTrampolineIntent(intent, highlightMenuKey));
        }

@@ -112,7 +111,7 @@ public class SearchResultTrampoline extends Activity {
        finish();
    }

    private boolean isFromSettingsIntelligence(ComponentName callingActivity) {
    private boolean isSettingsIntelligence(ComponentName callingActivity) {
        return callingActivity != null && TextUtils.equals(
                callingActivity.getPackageName(),
                FeatureFactory.getFactory(this).getSearchFeatureProvider()
+17 −10
Original line number Diff line number Diff line
@@ -38,7 +38,8 @@ import com.android.settings.homepage.SettingsHomepageActivity;
/**
 *  Adapter for highlighting top level preferences
 */
public class HighlightableTopLevelPreferenceAdapter extends PreferenceGroupAdapter {
public class HighlightableTopLevelPreferenceAdapter extends PreferenceGroupAdapter implements
        SettingsHomepageActivity.HomepageLoadedListener {

    private static final String TAG = "HighlightableTopLevelAdapter";

@@ -60,6 +61,7 @@ public class HighlightableTopLevelPreferenceAdapter extends PreferenceGroupAdapt
    private String mHighlightKey;
    private String mPreviousHighlightKey;
    private int mHighlightPosition = RecyclerView.NO_POSITION;
    private int mScrollPosition = RecyclerView.NO_POSITION;
    private boolean mHighlightNeeded;
    private boolean mScrolled;

@@ -135,9 +137,11 @@ public class HighlightableTopLevelPreferenceAdapter extends PreferenceGroupAdapt
            return;
        }

        // Scroll before highlight if needed.
        final boolean highlightNeeded = isHighlightNeeded();
        if (highlightNeeded) {
            scrollToPositionIfNeeded(position);
            mScrollPosition = position;
            scroll();
        }

        // Turn on/off highlight when screen split mode is changed.
@@ -189,26 +193,29 @@ public class HighlightableTopLevelPreferenceAdapter extends PreferenceGroupAdapt
        requestHighlight();
    }

    private void scrollToPositionIfNeeded(int position) {
        if (mScrolled || position < 0) {
    @Override
    public void onHomepageLoaded() {
        scroll();
    }

    private void scroll() {
        if (mScrolled || mScrollPosition < 0) {
            return;
        }

        if (mHomepageActivity.registerHomepageLoadedListenerIfNeeded(
                () -> scrollToPositionIfNeeded(position))) {
        if (mHomepageActivity.registerHomepageLoadedListenerIfNeeded(this)) {
            return;
        }

        // Only when the recyclerView is loaded, it can be scrolled
        final View view = mRecyclerView.getChildAt(position);
        final View view = mRecyclerView.getChildAt(mScrollPosition);
        if (view == null) {
            mRecyclerView.postDelayed(() -> scrollToPositionIfNeeded(position),
                    DELAY_HIGHLIGHT_DURATION_MILLIS);
            mRecyclerView.postDelayed(() -> scroll(), DELAY_HIGHLIGHT_DURATION_MILLIS);
            return;
        }

        mScrolled = true;
        Log.d(TAG, "Scroll to position " + position);
        Log.d(TAG, "Scroll to position " + mScrollPosition);
        // Scroll to the top to reset the position.
        mRecyclerView.nestedScrollBy(0, -mRecyclerView.getHeight());