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

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

Merge "Show/hide back button for 2nd page"

parents c78c5e11 2df79641
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -75,6 +75,7 @@ android_library {
        "lottie",
        "WifiTrackerLib",
        "windowExtLib",
        "SettingsLibActivityEmbedding",
    ],

    libs: [
+17 −3
Original line number Diff line number Diff line
@@ -143,6 +143,8 @@ public class SettingsActivity extends SettingsBaseActivity

    public static final String EXTRA_SHOW_FRAGMENT_AS_SUBSETTING =
            ":settings:show_fragment_as_subsetting";
    public static final String EXTRA_IS_SECONDARY_LAYER_PAGE =
            ":settings:is_secondary_layer_page";

    /**
     * Additional extra of Settings#ACTION_SETTINGS_LARGE_SCREEN_DEEP_LINK.
@@ -301,12 +303,12 @@ public class SettingsActivity extends SettingsBaseActivity
            launchSettingFragment(initialFragmentName, intent);
        }

        final boolean isInSetupWizard = WizardManagerHelper.isAnySetupWizard(getIntent());
        final boolean isActionBarButtonEnabled = isActionBarButtonEnabled(intent);

        final ActionBar actionBar = getActionBar();
        if (actionBar != null) {
            actionBar.setDisplayHomeAsUpEnabled(!isInSetupWizard);
            actionBar.setHomeButtonEnabled(!isInSetupWizard);
            actionBar.setDisplayHomeAsUpEnabled(isActionBarButtonEnabled);
            actionBar.setHomeButtonEnabled(isActionBarButtonEnabled);
            actionBar.setDisplayShowTitleEnabled(true);
        }
        mMainSwitch = findViewById(R.id.switch_bar);
@@ -366,6 +368,18 @@ public class SettingsActivity extends SettingsBaseActivity
        }
    }

    private boolean isActionBarButtonEnabled(Intent intent) {
        if (WizardManagerHelper.isAnySetupWizard(intent)) {
            return false;
        }
        final boolean isSecondaryLayerPage =
                intent.getBooleanExtra(EXTRA_IS_SECONDARY_LAYER_PAGE, false);

        // TODO: move Settings's ActivityEmbeddingUtils to SettingsLib.
        return !com.android.settingslib.activityembedding.ActivityEmbeddingUtils
                        .shouldHideBackButton(this, isSecondaryLayerPage);
    }

    private boolean isSubSettings(Intent intent) {
        return this instanceof SubSettings ||
            intent.getBooleanExtra(EXTRA_SHOW_FRAGMENT_AS_SUBSETTING, false);
+2 −0
Original line number Diff line number Diff line
@@ -34,6 +34,7 @@ import androidx.window.embedding.SplitPlaceholderRule;
import androidx.window.embedding.SplitRule;

import com.android.settings.Settings;
import com.android.settings.SettingsActivity;
import com.android.settings.SubSettings;
import com.android.settings.biometrics.fingerprint.FingerprintEnrollEnrolling;
import com.android.settings.biometrics.fingerprint.FingerprintEnrollIntroduction;
@@ -196,6 +197,7 @@ public class ActivityEmbeddingRulesController {
        addActivityFilter(activityFilters, Settings.class);

        final Intent intent = new Intent(mContext, Settings.NetworkDashboardActivity.class);
        intent.putExtra(SettingsActivity.EXTRA_IS_SECONDARY_LAYER_PAGE, true);
        final SplitPlaceholderRule placeholderRule = new SplitPlaceholderRule(
                activityFilters,
                intent,
+48 −39
Original line number Diff line number Diff line
@@ -43,11 +43,11 @@ public class SubSettingLauncher {
        }
        mContext = context;
        mLaunchRequest = new LaunchRequest();
        mLaunchRequest.transitionType = TransitionType.TRANSITION_SHARED_AXIS;
        mLaunchRequest.mTransitionType = TransitionType.TRANSITION_SHARED_AXIS;
    }

    public SubSettingLauncher setDestination(String fragmentName) {
        mLaunchRequest.destinationName = fragmentName;
        mLaunchRequest.mDestinationName = fragmentName;
        return this;
    }

@@ -67,9 +67,9 @@ public class SubSettingLauncher {
     * @param titleResId       res id of string, will use package name to resolve
     */
    public SubSettingLauncher setTitleRes(String titlePackageName, @StringRes int titleResId) {
        mLaunchRequest.titleResPackageName = titlePackageName;
        mLaunchRequest.titleResId = titleResId;
        mLaunchRequest.title = null;
        mLaunchRequest.mTitleResPackageName = titlePackageName;
        mLaunchRequest.mTitleResId = titleResId;
        mLaunchRequest.mTitle = null;
        return this;
    }

@@ -82,22 +82,22 @@ public class SubSettingLauncher {
     * @param title text title
     */
    public SubSettingLauncher setTitleText(CharSequence title) {
        mLaunchRequest.title = title;
        mLaunchRequest.mTitle = title;
        return this;
    }

    public SubSettingLauncher setArguments(Bundle arguments) {
        mLaunchRequest.arguments = arguments;
        mLaunchRequest.mArguments = arguments;
        return this;
    }

    public SubSettingLauncher setExtras(Bundle extras) {
        mLaunchRequest.extras = extras;
        mLaunchRequest.mExtras = extras;
        return this;
    }

    public SubSettingLauncher setSourceMetricsCategory(int sourceMetricsCategory) {
        mLaunchRequest.sourceMetricsCategory = sourceMetricsCategory;
        mLaunchRequest.mSourceMetricsCategory = sourceMetricsCategory;
        return this;
    }

@@ -108,17 +108,23 @@ public class SubSettingLauncher {
    }

    public SubSettingLauncher addFlags(int flags) {
        mLaunchRequest.flags |= flags;
        mLaunchRequest.mFlags |= flags;
        return this;
    }

    public SubSettingLauncher setUserHandle(UserHandle userHandle) {
        mLaunchRequest.userHandle = userHandle;
        mLaunchRequest.mUserHandle = userHandle;
        return this;
    }

    public SubSettingLauncher setTransitionType(int transitionType) {
        mLaunchRequest.transitionType = transitionType;
        mLaunchRequest.mTransitionType = transitionType;
        return this;
    }

    /** Decide whether the next page is secondary layer page or not. */
    public SubSettingLauncher setIsSecondaryLayerPage(boolean isSecondaryLayerPage) {
        mLaunchRequest.mIsSecondaryLayerPage = isSecondaryLayerPage;
        return this;
    }

@@ -131,14 +137,14 @@ public class SubSettingLauncher {

        final Intent intent = toIntent();

        boolean launchAsUser = mLaunchRequest.userHandle != null
                && mLaunchRequest.userHandle.getIdentifier() != UserHandle.myUserId();
        boolean launchAsUser = mLaunchRequest.mUserHandle != null
                && mLaunchRequest.mUserHandle.getIdentifier() != UserHandle.myUserId();
        boolean launchForResult = mLaunchRequest.mResultListener != null;
        if (launchAsUser && launchForResult) {
            launchForResultAsUser(intent, mLaunchRequest.userHandle, mLaunchRequest.mResultListener,
                    mLaunchRequest.mRequestCode);
            launchForResultAsUser(intent, mLaunchRequest.mUserHandle,
                    mLaunchRequest.mResultListener, mLaunchRequest.mRequestCode);
        } else if (launchAsUser && !launchForResult) {
            launchAsUser(intent, mLaunchRequest.userHandle);
            launchAsUser(intent, mLaunchRequest.mUserHandle);
        } else if (!launchAsUser && launchForResult) {
            launchForResult(mLaunchRequest.mResultListener, intent, mLaunchRequest.mRequestCode);
        } else {
@@ -150,26 +156,28 @@ public class SubSettingLauncher {
        final Intent intent = new Intent(Intent.ACTION_MAIN);
        copyExtras(intent);
        intent.setClass(mContext, SubSettings.class);
        if (TextUtils.isEmpty(mLaunchRequest.destinationName)) {
        if (TextUtils.isEmpty(mLaunchRequest.mDestinationName)) {
            throw new IllegalArgumentException("Destination fragment must be set");
        }
        intent.putExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT, mLaunchRequest.destinationName);
        intent.putExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT, mLaunchRequest.mDestinationName);

        if (mLaunchRequest.sourceMetricsCategory < 0) {
        if (mLaunchRequest.mSourceMetricsCategory < 0) {
            throw new IllegalArgumentException("Source metrics category must be set");
        }
        intent.putExtra(MetricsFeatureProvider.EXTRA_SOURCE_METRICS_CATEGORY,
                mLaunchRequest.sourceMetricsCategory);
                mLaunchRequest.mSourceMetricsCategory);

        intent.putExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT_ARGUMENTS, mLaunchRequest.arguments);
        intent.putExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT_ARGUMENTS, mLaunchRequest.mArguments);
        intent.putExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT_TITLE_RES_PACKAGE_NAME,
                mLaunchRequest.titleResPackageName);
                mLaunchRequest.mTitleResPackageName);
        intent.putExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT_TITLE_RESID,
                mLaunchRequest.titleResId);
        intent.putExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT_TITLE, mLaunchRequest.title);
        intent.addFlags(mLaunchRequest.flags);
                mLaunchRequest.mTitleResId);
        intent.putExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT_TITLE, mLaunchRequest.mTitle);
        intent.addFlags(mLaunchRequest.mFlags);
        intent.putExtra(SettingsBaseActivity.EXTRA_PAGE_TRANSITION_TYPE,
                mLaunchRequest.transitionType);
                mLaunchRequest.mTransitionType);
        intent.putExtra(SettingsActivity.EXTRA_IS_SECONDARY_LAYER_PAGE,
                mLaunchRequest.mIsSecondaryLayerPage);

        return intent;
    }
@@ -196,8 +204,8 @@ public class SubSettingLauncher {
    }

    private void copyExtras(Intent intent) {
        if (mLaunchRequest.extras != null) {
            intent.replaceExtras(mLaunchRequest.extras);
        if (mLaunchRequest.mExtras != null) {
            intent.replaceExtras(mLaunchRequest.mExtras);
        }
    }

@@ -205,17 +213,18 @@ public class SubSettingLauncher {
     * Simple container that has information about how to launch a subsetting.
     */
    static class LaunchRequest {
        String destinationName;
        int titleResId;
        String titleResPackageName;
        CharSequence title;
        int sourceMetricsCategory = -100;
        int flags;
        String mDestinationName;
        int mTitleResId;
        String mTitleResPackageName;
        CharSequence mTitle;
        int mSourceMetricsCategory = -100;
        int mFlags;
        Fragment mResultListener;
        int mRequestCode;
        UserHandle userHandle;
        int transitionType;
        Bundle arguments;
        Bundle extras;
        UserHandle mUserHandle;
        int mTransitionType;
        Bundle mArguments;
        Bundle mExtras;
        boolean mIsSecondaryLayerPage;
    }
}
+10 −0
Original line number Diff line number Diff line
@@ -17,6 +17,8 @@
package com.android.settings.development.featureflags;

import android.content.Context;
import android.provider.Settings;
import android.text.TextUtils;
import android.util.FeatureFlagUtils;

import androidx.preference.SwitchPreference;
@@ -49,5 +51,13 @@ public class FeatureFlagPreference extends SwitchPreference {
        } else {
            FeatureFlagUtils.setEnabled(getContext(), mKey, isChecked);
        }

        // A temporary logic for settings_hide_secondary_page_back_button_in_two_pane
        // Remove it before Android T release.
        if (TextUtils.equals(mKey,
                FeatureFlagUtils.SETTINGS_HIDE_SECONDARY_PAGE_BACK_BUTTON_IN_TWO_PANE)) {
            Settings.Global.putString(getContext().getContentResolver(),
                    mKey, String.valueOf(isChecked));
        }
    }
}
Loading