Migrating to new footer button for ChooseLockPattern page

Bug: 120805516
Test: RunSettingsRoboTests
Change-Id: Ifeaf402548146fca9f5fd5dfe0d976d38246b7e9
This commit is contained in:
pastychang
2019-01-17 15:44:08 +08:00
parent 90f75b2f3f
commit c3c5a5c57e
5 changed files with 84 additions and 100 deletions

View File

@@ -50,6 +50,8 @@ import com.android.settings.core.InstrumentedFragment;
import com.android.settings.notification.RedactionInterstitial;
import com.google.android.collect.Lists;
import com.google.android.setupcompat.item.FooterButton;
import com.google.android.setupcompat.template.ButtonFooterMixin;
import com.google.android.setupdesign.GlifLayout;
import java.util.ArrayList;
@@ -171,7 +173,7 @@ public class ChooseLockPattern extends SettingsActivity {
}
public static class ChooseLockPatternFragment extends InstrumentedFragment
implements View.OnClickListener, SaveAndFinishWorker.Listener {
implements SaveAndFinishWorker.Listener {
public static final int CONFIRM_EXISTING_REQUEST = 55;
@@ -193,8 +195,8 @@ public class ChooseLockPattern extends SettingsActivity {
protected TextView mMessageText;
protected LockPatternView mLockPatternView;
protected TextView mFooterText;
private TextView mFooterLeftButton;
private TextView mFooterRightButton;
protected FooterButton mSkipOrClearButton;
private FooterButton mNextButton;
protected List<LockPatternView.Cell> mChosenPattern = null;
private ColorStateList mDefaultHeaderColorList;
@@ -232,11 +234,11 @@ public class ChooseLockPattern extends SettingsActivity {
}
protected void setRightButtonEnabled(boolean enabled) {
mFooterRightButton.setEnabled(enabled);
mNextButton.setEnabled(enabled);
}
protected void setRightButtonText(int text) {
mFooterRightButton.setText(text);
mNextButton.setText(getActivity(), text);
}
/**
@@ -287,8 +289,7 @@ public class ChooseLockPattern extends SettingsActivity {
mHeaderText.setTextColor(mDefaultHeaderColorList);
}
mFooterText.setText("");
mFooterLeftButton.setEnabled(false);
mFooterRightButton.setEnabled(false);
mNextButton.setEnabled(false);
if (mTitleHeaderScrollView != null) {
mTitleHeaderScrollView.post(new Runnable() {
@@ -487,6 +488,27 @@ public class ChooseLockPattern extends SettingsActivity {
layout.setIcon(getActivity().getDrawable(R.drawable.ic_face_header));
}
}
final ButtonFooterMixin mixin = layout.getMixin(ButtonFooterMixin.class);
mixin.setSecondaryButton(
new FooterButton.Builder(getActivity())
.setText(R.string.lockpattern_tutorial_cancel_label)
.setListener(this::onSkipOrClearButtonClick)
.setButtonType(FooterButton.ButtonType.OTHER)
.setTheme(R.style.SudGlifButton_Secondary)
.build()
);
mixin.setPrimaryButton(
new FooterButton.Builder(getActivity())
.setText(R.string.lockpattern_tutorial_continue_label)
.setListener(this::onNextButtonClick)
.setButtonType(FooterButton.ButtonType.NEXT)
.setTheme(R.style.SudGlifButton_Primary)
.build()
);
mSkipOrClearButton = mixin.getSecondaryButton();
mNextButton = mixin.getPrimaryButton();
return layout;
}
@@ -506,15 +528,9 @@ public class ChooseLockPattern extends SettingsActivity {
mFooterText = (TextView) view.findViewById(R.id.footerText);
mFooterLeftButton = (TextView) view.findViewById(R.id.footerLeftButton);
mFooterRightButton = (TextView) view.findViewById(R.id.footerRightButton);
mTitleHeaderScrollView = (ScrollView) view.findViewById(R.id
.scroll_layout_title_header);
mFooterLeftButton.setOnClickListener(this);
mFooterRightButton.setOnClickListener(this);
// make it so unhandled touch events within the unlock screen go to the
// lock pattern view.
final LinearLayoutWithDefaultTouchRecepient topLayout
@@ -623,12 +639,12 @@ public class ChooseLockPattern extends SettingsActivity {
}
}
public void onClick(View v) {
if (v == mFooterLeftButton) {
handleLeftButton();
} else if (v == mFooterRightButton) {
handleRightButton();
}
protected void onSkipOrClearButtonClick(View view) {
handleLeftButton();
}
protected void onNextButtonClick(View view) {
handleRightButton();
}
public boolean onKeyDown(int keyCode, KeyEvent event) {
@@ -711,7 +727,7 @@ public class ChooseLockPattern extends SettingsActivity {
}
}
updateFooterLeftButton(stage, mFooterLeftButton);
updateFooterLeftButton(stage);
setRightButtonText(stage.rightMode.text);
setRightButtonEnabled(stage.rightMode.enabled);
@@ -761,13 +777,13 @@ public class ChooseLockPattern extends SettingsActivity {
}
}
protected void updateFooterLeftButton(Stage stage, TextView footerLeftButton) {
protected void updateFooterLeftButton(Stage stage) {
if (stage.leftMode == LeftButtonMode.Gone) {
footerLeftButton.setVisibility(View.GONE);
mSkipOrClearButton.setVisibility(View.GONE);
} else {
footerLeftButton.setVisibility(View.VISIBLE);
footerLeftButton.setText(stage.leftMode.text);
footerLeftButton.setEnabled(stage.leftMode.enabled);
mSkipOrClearButton.setVisibility(View.VISIBLE);
mSkipOrClearButton.setText(getActivity(), stage.leftMode.text);
mSkipOrClearButton.setEnabled(stage.leftMode.enabled);
}
}

View File

@@ -59,7 +59,7 @@ public class SetupChooseLockPattern extends ChooseLockPattern {
@Nullable
private Button mOptionsButton;
private Button mSkipButton;
private boolean mLeftButtonIsSkip;
@Override
public View onCreateView(
@@ -72,14 +72,20 @@ public class SetupChooseLockPattern extends ChooseLockPattern {
.show(getChildFragmentManager(), null));
}
// Show the skip button during SUW but not during Settings > Biometric Enrollment
mSkipButton = view.findViewById(R.id.skip_button);
mSkipButton.setOnClickListener(v -> {
mSkipOrClearButton.setOnClickListener(this::onSkipOrClearButtonClick);
return view;
}
@Override
protected void onSkipOrClearButtonClick(View view) {
if (mLeftButtonIsSkip) {
SetupSkipDialog dialog = SetupSkipDialog.newInstance(
getActivity().getIntent()
.getBooleanExtra(SetupSkipDialog.EXTRA_FRP_SUPPORTED, false));
dialog.show(getFragmentManager());
});
return view;
return;
}
super.onSkipOrClearButtonClick(view);
}
@Override
@@ -102,9 +108,11 @@ public class SetupChooseLockPattern extends ChooseLockPattern {
}
if (stage.leftMode == LeftButtonMode.Gone && stage == Stage.Introduction) {
mSkipButton.setVisibility(View.VISIBLE);
mSkipOrClearButton.setVisibility(View.VISIBLE);
mSkipOrClearButton.setText(getActivity(), R.string.skip_label);
mLeftButtonIsSkip = true;
} else {
mSkipButton.setVisibility(View.GONE);
mLeftButtonIsSkip = false;
}
}