Merge "Fix face/fingerprint consent primary footer button logic" into sc-dev am: cd6c64a5c7

Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/Settings/+/14941211

Change-Id: I44d170baf79a4418fba5c3ec30fe628131c177c7
This commit is contained in:
TreeHugger Robot
2021-06-12 23:44:33 +00:00
committed by Automerger Merge Worker
3 changed files with 78 additions and 71 deletions

View File

@@ -29,6 +29,7 @@ import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.StringRes;
import com.android.internal.widget.LockPatternUtils;
import com.android.settings.R;
@@ -36,11 +37,12 @@ import com.android.settings.SetupWizardUtils;
import com.android.settings.password.ChooseLockGeneric;
import com.android.settings.password.ChooseLockSettingsHelper;
import com.google.android.setupcompat.template.FooterBarMixin;
import com.google.android.setupcompat.template.FooterButton;
import com.google.android.setupcompat.util.WizardManagerHelper;
import com.google.android.setupdesign.GlifLayout;
import com.google.android.setupdesign.span.LinkSpan;
import com.google.android.setupdesign.template.RequireScrollMixin;
import com.google.android.setupdesign.template.RequireScrollMixin.OnRequireScrollStateChangedListener;
import com.google.android.setupdesign.util.DynamicColorPalette;
/**
@@ -183,32 +185,26 @@ public abstract class BiometricEnrollIntroduction extends BiometricEnrollBase
}
}
FooterButton primaryButton = getPrimaryFooterButton();
FooterButton secondaryButton = getSecondaryFooterButton();
if (primaryButton == null) {
Log.d(TAG, "getPrimaryFooterButton() was null");
return;
}
final GlifLayout layout = getLayout();
mFooterBarMixin = layout.getMixin(FooterBarMixin.class);
mFooterBarMixin.setPrimaryButton(getPrimaryFooterButton());
mFooterBarMixin.setSecondaryButton(getSecondaryFooterButton(), true /* usePrimaryStyle */);
mFooterBarMixin.getSecondaryButton().setVisibility(View.INVISIBLE);
if (secondaryButton == null) {
Log.d(TAG, "getSecondaryFooterButton() was null");
return;
}
// Setup scroll mixin
final RequireScrollMixin requireScrollMixin = getLayout().getMixin(
RequireScrollMixin.class);
requireScrollMixin.requireScrollWithButton(this, primaryButton, getScrollCompletedText(),
this::onNextButtonClick);
secondaryButton.setVisibility(View.INVISIBLE);
final RequireScrollMixin requireScrollMixin = layout.getMixin(RequireScrollMixin.class);
requireScrollMixin.requireScrollWithButton(this, getPrimaryFooterButton(),
getMoreButtonTextRes(), this::onNextButtonClick);
requireScrollMixin.setOnRequireScrollStateChangedListener(
new OnRequireScrollStateChangedListener() {
@Override
public void onRequireScrollStateChanged(boolean scrollNeeded) {
if (!scrollNeeded && secondaryButton.getVisibility() == View.INVISIBLE) {
secondaryButton.setVisibility(View.VISIBLE);
}
scrollNeeded -> {
// Update text of primary button from "More" to "Agree".
final int primaryButtonTextRes = scrollNeeded
? getMoreButtonTextRes()
: getAgreeButtonTextRes();
getPrimaryFooterButton().setText(this, primaryButtonTextRes);
// Show secondary button once scroll is completed.
if (!scrollNeeded) {
getSecondaryFooterButton().setVisibility(View.VISIBLE);
}
});
}
@@ -367,17 +363,15 @@ public abstract class BiometricEnrollIntroduction extends BiometricEnrollBase
return mIconColorFilter;
}
@Nullable
protected FooterButton getPrimaryFooterButton() {
return null;
}
@NonNull
protected abstract FooterButton getPrimaryFooterButton();
@Nullable
protected FooterButton getSecondaryFooterButton() {
return null;
}
@NonNull
protected abstract FooterButton getSecondaryFooterButton();
protected int getScrollCompletedText() {
return R.string.security_settings_face_enroll_introduction_more;
}
@StringRes
protected abstract int getAgreeButtonTextRes();
@StringRes
protected abstract int getMoreButtonTextRes();
}

View File

@@ -26,6 +26,10 @@ import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.StringRes;
import com.android.settings.R;
import com.android.settings.Utils;
import com.android.settings.biometrics.BiometricEnrollIntroduction;
@@ -34,7 +38,6 @@ import com.android.settings.overlay.FeatureFactory;
import com.android.settings.password.ChooseLockSettingsHelper;
import com.android.settingslib.RestrictedLockUtilsInternal;
import com.google.android.setupcompat.template.FooterBarMixin;
import com.google.android.setupcompat.template.FooterButton;
import com.google.android.setupcompat.util.WizardManagerHelper;
import com.google.android.setupdesign.span.LinkSpan;
@@ -50,6 +53,8 @@ public class FaceEnrollIntroduction extends BiometricEnrollIntroduction {
private FaceManager mFaceManager;
private FaceFeatureProvider mFaceFeatureProvider;
@Nullable private FooterButton mPrimaryFooterButton;
@Nullable private FooterButton mSecondaryFooterButton;
@Override
protected void onCancelButtonClick(View view) {
@@ -207,38 +212,42 @@ public class FaceEnrollIntroduction extends BiometricEnrollIntroduction {
}
@Override
@NonNull
protected FooterButton getPrimaryFooterButton() {
if (mFooterBarMixin == null) {
mFooterBarMixin = getLayout().getMixin(FooterBarMixin.class);
}
if (mFooterBarMixin.getPrimaryButton() == null) {
final FooterButton nextButtonBuilder = new FooterButton.Builder(this)
if (mPrimaryFooterButton == null) {
mPrimaryFooterButton = new FooterButton.Builder(this)
.setText(R.string.security_settings_face_enroll_introduction_agree)
.setButtonType(FooterButton.ButtonType.OPT_IN)
.setListener(this::onNextButtonClick)
.setTheme(R.style.SudGlifButton_Primary)
.build();
mFooterBarMixin.setPrimaryButton(nextButtonBuilder);
}
return mFooterBarMixin.getPrimaryButton();
return mPrimaryFooterButton;
}
@Override
@NonNull
protected FooterButton getSecondaryFooterButton() {
if (mFooterBarMixin == null) {
mFooterBarMixin = getLayout().getMixin(FooterBarMixin.class);
}
if (mFooterBarMixin.getSecondaryButton() == null) {
final FooterButton noThanksButton = new FooterButton.Builder(this)
if (mSecondaryFooterButton == null) {
mSecondaryFooterButton = new FooterButton.Builder(this)
.setText(R.string.security_settings_face_enroll_introduction_no_thanks)
.setListener(this::onSkipButtonClick)
.setButtonType(FooterButton.ButtonType.NEXT)
.setTheme(R.style.SudGlifButton_Primary)
.build();
mFooterBarMixin.setSecondaryButton(noThanksButton, true /* usePrimaryStyle */);
}
return mFooterBarMixin.getSecondaryButton();
return mSecondaryFooterButton;
}
@Override
@StringRes
protected int getAgreeButtonTextRes() {
return R.string.security_settings_fingerprint_enroll_introduction_agree;
}
@Override
@StringRes
protected int getMoreButtonTextRes() {
return R.string.security_settings_face_enroll_introduction_more;
}
}

View File

@@ -27,6 +27,10 @@ import android.util.Log;
import android.widget.ImageView;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.StringRes;
import com.android.settings.R;
import com.android.settings.Utils;
import com.android.settings.biometrics.BiometricEnrollIntroduction;
@@ -35,7 +39,6 @@ import com.android.settings.password.ChooseLockSettingsHelper;
import com.android.settingslib.HelpUtils;
import com.android.settingslib.RestrictedLockUtilsInternal;
import com.google.android.setupcompat.template.FooterBarMixin;
import com.google.android.setupcompat.template.FooterButton;
import com.google.android.setupdesign.span.LinkSpan;
@@ -46,6 +49,8 @@ public class FingerprintEnrollIntroduction extends BiometricEnrollIntroduction {
private static final String TAG = "FingerprintIntro";
private FingerprintManager mFingerprintManager;
@Nullable private FooterButton mPrimaryFooterButton;
@Nullable private FooterButton mSecondaryFooterButton;
@Override
protected void onCreate(Bundle savedInstanceState) {
@@ -194,43 +199,42 @@ public class FingerprintEnrollIntroduction extends BiometricEnrollIntroduction {
}
@Override
@NonNull
protected FooterButton getPrimaryFooterButton() {
if (mFooterBarMixin == null) {
mFooterBarMixin = getLayout().getMixin(FooterBarMixin.class);
}
if (mFooterBarMixin.getPrimaryButton() == null) {
final FooterButton nextButtonBuilder = new FooterButton.Builder(this)
if (mPrimaryFooterButton == null) {
mPrimaryFooterButton = new FooterButton.Builder(this)
.setText(R.string.security_settings_fingerprint_enroll_introduction_agree)
.setListener(this::onNextButtonClick)
.setButtonType(FooterButton.ButtonType.OPT_IN)
.setTheme(R.style.SudGlifButton_Primary)
.build();
mFooterBarMixin.setPrimaryButton(nextButtonBuilder);
}
return mFooterBarMixin.getPrimaryButton();
return mPrimaryFooterButton;
}
@Override
@NonNull
protected FooterButton getSecondaryFooterButton() {
if (mFooterBarMixin == null) {
mFooterBarMixin = getLayout().getMixin(FooterBarMixin.class);
}
if (mFooterBarMixin.getSecondaryButton() == null) {
final FooterButton noThanksButton = new FooterButton.Builder(this)
if (mSecondaryFooterButton == null) {
mSecondaryFooterButton = new FooterButton.Builder(this)
.setText(getNegativeButtonTextId())
.setListener(this::onSkipButtonClick)
.setButtonType(FooterButton.ButtonType.NEXT)
.setTheme(R.style.SudGlifButton_Primary)
.build();
mFooterBarMixin.setSecondaryButton(noThanksButton, true /* usePrimaryStyle */);
}
return mFooterBarMixin.getSecondaryButton();
return mSecondaryFooterButton;
}
@Override
protected int getScrollCompletedText() {
@StringRes
protected int getAgreeButtonTextRes() {
return R.string.security_settings_fingerprint_enroll_introduction_agree;
}
@Override
@StringRes
protected int getMoreButtonTextRes() {
return R.string.security_settings_face_enroll_introduction_more;
}
}