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

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