Show/hide back button for 2nd page

By design, we want to show/hide back button for 2nd
layer page when it's in two pane mode.

Test: Manual test
Bug: 219000314
Change-Id: I14d8d7ee08280d5ce80c0b59e1e91d077f0b6d09
This commit is contained in:
Tsung-Mao Fang
2022-01-21 18:14:53 +08:00
parent b254c62506
commit 2df79641cb
6 changed files with 79 additions and 42 deletions

View File

@@ -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);