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:
@@ -29,6 +29,7 @@ import android.widget.TextView;
|
|||||||
|
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
import androidx.annotation.Nullable;
|
import androidx.annotation.Nullable;
|
||||||
|
import androidx.annotation.StringRes;
|
||||||
|
|
||||||
import com.android.internal.widget.LockPatternUtils;
|
import com.android.internal.widget.LockPatternUtils;
|
||||||
import com.android.settings.R;
|
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.ChooseLockGeneric;
|
||||||
import com.android.settings.password.ChooseLockSettingsHelper;
|
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.template.FooterButton;
|
||||||
import com.google.android.setupcompat.util.WizardManagerHelper;
|
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.span.LinkSpan;
|
||||||
import com.google.android.setupdesign.template.RequireScrollMixin;
|
import com.google.android.setupdesign.template.RequireScrollMixin;
|
||||||
import com.google.android.setupdesign.template.RequireScrollMixin.OnRequireScrollStateChangedListener;
|
|
||||||
import com.google.android.setupdesign.util.DynamicColorPalette;
|
import com.google.android.setupdesign.util.DynamicColorPalette;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -183,32 +185,26 @@ public abstract class BiometricEnrollIntroduction extends BiometricEnrollBase
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
FooterButton primaryButton = getPrimaryFooterButton();
|
final GlifLayout layout = getLayout();
|
||||||
FooterButton secondaryButton = getSecondaryFooterButton();
|
mFooterBarMixin = layout.getMixin(FooterBarMixin.class);
|
||||||
if (primaryButton == null) {
|
mFooterBarMixin.setPrimaryButton(getPrimaryFooterButton());
|
||||||
Log.d(TAG, "getPrimaryFooterButton() was null");
|
mFooterBarMixin.setSecondaryButton(getSecondaryFooterButton(), true /* usePrimaryStyle */);
|
||||||
return;
|
mFooterBarMixin.getSecondaryButton().setVisibility(View.INVISIBLE);
|
||||||
}
|
|
||||||
|
|
||||||
if (secondaryButton == null) {
|
final RequireScrollMixin requireScrollMixin = layout.getMixin(RequireScrollMixin.class);
|
||||||
Log.d(TAG, "getSecondaryFooterButton() was null");
|
requireScrollMixin.requireScrollWithButton(this, getPrimaryFooterButton(),
|
||||||
return;
|
getMoreButtonTextRes(), this::onNextButtonClick);
|
||||||
}
|
|
||||||
|
|
||||||
// Setup scroll mixin
|
|
||||||
final RequireScrollMixin requireScrollMixin = getLayout().getMixin(
|
|
||||||
RequireScrollMixin.class);
|
|
||||||
requireScrollMixin.requireScrollWithButton(this, primaryButton, getScrollCompletedText(),
|
|
||||||
this::onNextButtonClick);
|
|
||||||
|
|
||||||
secondaryButton.setVisibility(View.INVISIBLE);
|
|
||||||
requireScrollMixin.setOnRequireScrollStateChangedListener(
|
requireScrollMixin.setOnRequireScrollStateChangedListener(
|
||||||
new OnRequireScrollStateChangedListener() {
|
scrollNeeded -> {
|
||||||
@Override
|
// Update text of primary button from "More" to "Agree".
|
||||||
public void onRequireScrollStateChanged(boolean scrollNeeded) {
|
final int primaryButtonTextRes = scrollNeeded
|
||||||
if (!scrollNeeded && secondaryButton.getVisibility() == View.INVISIBLE) {
|
? getMoreButtonTextRes()
|
||||||
secondaryButton.setVisibility(View.VISIBLE);
|
: 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;
|
return mIconColorFilter;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Nullable
|
@NonNull
|
||||||
protected FooterButton getPrimaryFooterButton() {
|
protected abstract FooterButton getPrimaryFooterButton();
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Nullable
|
@NonNull
|
||||||
protected FooterButton getSecondaryFooterButton() {
|
protected abstract FooterButton getSecondaryFooterButton();
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
protected int getScrollCompletedText() {
|
@StringRes
|
||||||
return R.string.security_settings_face_enroll_introduction_more;
|
protected abstract int getAgreeButtonTextRes();
|
||||||
}
|
|
||||||
|
@StringRes
|
||||||
|
protected abstract int getMoreButtonTextRes();
|
||||||
}
|
}
|
||||||
|
@@ -26,6 +26,10 @@ import android.view.View;
|
|||||||
import android.widget.ImageView;
|
import android.widget.ImageView;
|
||||||
import android.widget.TextView;
|
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.R;
|
||||||
import com.android.settings.Utils;
|
import com.android.settings.Utils;
|
||||||
import com.android.settings.biometrics.BiometricEnrollIntroduction;
|
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.settings.password.ChooseLockSettingsHelper;
|
||||||
import com.android.settingslib.RestrictedLockUtilsInternal;
|
import com.android.settingslib.RestrictedLockUtilsInternal;
|
||||||
|
|
||||||
import com.google.android.setupcompat.template.FooterBarMixin;
|
|
||||||
import com.google.android.setupcompat.template.FooterButton;
|
import com.google.android.setupcompat.template.FooterButton;
|
||||||
import com.google.android.setupcompat.util.WizardManagerHelper;
|
import com.google.android.setupcompat.util.WizardManagerHelper;
|
||||||
import com.google.android.setupdesign.span.LinkSpan;
|
import com.google.android.setupdesign.span.LinkSpan;
|
||||||
@@ -50,6 +53,8 @@ public class FaceEnrollIntroduction extends BiometricEnrollIntroduction {
|
|||||||
|
|
||||||
private FaceManager mFaceManager;
|
private FaceManager mFaceManager;
|
||||||
private FaceFeatureProvider mFaceFeatureProvider;
|
private FaceFeatureProvider mFaceFeatureProvider;
|
||||||
|
@Nullable private FooterButton mPrimaryFooterButton;
|
||||||
|
@Nullable private FooterButton mSecondaryFooterButton;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onCancelButtonClick(View view) {
|
protected void onCancelButtonClick(View view) {
|
||||||
@@ -207,38 +212,42 @@ public class FaceEnrollIntroduction extends BiometricEnrollIntroduction {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@NonNull
|
||||||
protected FooterButton getPrimaryFooterButton() {
|
protected FooterButton getPrimaryFooterButton() {
|
||||||
if (mFooterBarMixin == null) {
|
if (mPrimaryFooterButton == null) {
|
||||||
mFooterBarMixin = getLayout().getMixin(FooterBarMixin.class);
|
mPrimaryFooterButton = new FooterButton.Builder(this)
|
||||||
}
|
|
||||||
|
|
||||||
if (mFooterBarMixin.getPrimaryButton() == null) {
|
|
||||||
final FooterButton nextButtonBuilder = new FooterButton.Builder(this)
|
|
||||||
.setText(R.string.security_settings_face_enroll_introduction_agree)
|
.setText(R.string.security_settings_face_enroll_introduction_agree)
|
||||||
.setButtonType(FooterButton.ButtonType.OPT_IN)
|
.setButtonType(FooterButton.ButtonType.OPT_IN)
|
||||||
.setListener(this::onNextButtonClick)
|
.setListener(this::onNextButtonClick)
|
||||||
.setTheme(R.style.SudGlifButton_Primary)
|
.setTheme(R.style.SudGlifButton_Primary)
|
||||||
.build();
|
.build();
|
||||||
mFooterBarMixin.setPrimaryButton(nextButtonBuilder);
|
|
||||||
}
|
}
|
||||||
return mFooterBarMixin.getPrimaryButton();
|
return mPrimaryFooterButton;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@NonNull
|
||||||
protected FooterButton getSecondaryFooterButton() {
|
protected FooterButton getSecondaryFooterButton() {
|
||||||
if (mFooterBarMixin == null) {
|
if (mSecondaryFooterButton == null) {
|
||||||
mFooterBarMixin = getLayout().getMixin(FooterBarMixin.class);
|
mSecondaryFooterButton = new FooterButton.Builder(this)
|
||||||
}
|
|
||||||
|
|
||||||
if (mFooterBarMixin.getSecondaryButton() == null) {
|
|
||||||
final FooterButton noThanksButton = new FooterButton.Builder(this)
|
|
||||||
.setText(R.string.security_settings_face_enroll_introduction_no_thanks)
|
.setText(R.string.security_settings_face_enroll_introduction_no_thanks)
|
||||||
.setListener(this::onSkipButtonClick)
|
.setListener(this::onSkipButtonClick)
|
||||||
.setButtonType(FooterButton.ButtonType.NEXT)
|
.setButtonType(FooterButton.ButtonType.NEXT)
|
||||||
.setTheme(R.style.SudGlifButton_Primary)
|
.setTheme(R.style.SudGlifButton_Primary)
|
||||||
.build();
|
.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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -27,6 +27,10 @@ import android.util.Log;
|
|||||||
import android.widget.ImageView;
|
import android.widget.ImageView;
|
||||||
import android.widget.TextView;
|
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.R;
|
||||||
import com.android.settings.Utils;
|
import com.android.settings.Utils;
|
||||||
import com.android.settings.biometrics.BiometricEnrollIntroduction;
|
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.HelpUtils;
|
||||||
import com.android.settingslib.RestrictedLockUtilsInternal;
|
import com.android.settingslib.RestrictedLockUtilsInternal;
|
||||||
|
|
||||||
import com.google.android.setupcompat.template.FooterBarMixin;
|
|
||||||
import com.google.android.setupcompat.template.FooterButton;
|
import com.google.android.setupcompat.template.FooterButton;
|
||||||
import com.google.android.setupdesign.span.LinkSpan;
|
import com.google.android.setupdesign.span.LinkSpan;
|
||||||
|
|
||||||
@@ -46,6 +49,8 @@ public class FingerprintEnrollIntroduction extends BiometricEnrollIntroduction {
|
|||||||
private static final String TAG = "FingerprintIntro";
|
private static final String TAG = "FingerprintIntro";
|
||||||
|
|
||||||
private FingerprintManager mFingerprintManager;
|
private FingerprintManager mFingerprintManager;
|
||||||
|
@Nullable private FooterButton mPrimaryFooterButton;
|
||||||
|
@Nullable private FooterButton mSecondaryFooterButton;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onCreate(Bundle savedInstanceState) {
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
@@ -194,43 +199,42 @@ public class FingerprintEnrollIntroduction extends BiometricEnrollIntroduction {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@NonNull
|
||||||
protected FooterButton getPrimaryFooterButton() {
|
protected FooterButton getPrimaryFooterButton() {
|
||||||
if (mFooterBarMixin == null) {
|
if (mPrimaryFooterButton == null) {
|
||||||
mFooterBarMixin = getLayout().getMixin(FooterBarMixin.class);
|
mPrimaryFooterButton = new FooterButton.Builder(this)
|
||||||
}
|
|
||||||
|
|
||||||
if (mFooterBarMixin.getPrimaryButton() == null) {
|
|
||||||
final FooterButton nextButtonBuilder = new FooterButton.Builder(this)
|
|
||||||
.setText(R.string.security_settings_fingerprint_enroll_introduction_agree)
|
.setText(R.string.security_settings_fingerprint_enroll_introduction_agree)
|
||||||
.setListener(this::onNextButtonClick)
|
.setListener(this::onNextButtonClick)
|
||||||
.setButtonType(FooterButton.ButtonType.OPT_IN)
|
.setButtonType(FooterButton.ButtonType.OPT_IN)
|
||||||
.setTheme(R.style.SudGlifButton_Primary)
|
.setTheme(R.style.SudGlifButton_Primary)
|
||||||
.build();
|
.build();
|
||||||
mFooterBarMixin.setPrimaryButton(nextButtonBuilder);
|
|
||||||
}
|
}
|
||||||
return mFooterBarMixin.getPrimaryButton();
|
return mPrimaryFooterButton;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@NonNull
|
||||||
protected FooterButton getSecondaryFooterButton() {
|
protected FooterButton getSecondaryFooterButton() {
|
||||||
if (mFooterBarMixin == null) {
|
if (mSecondaryFooterButton == null) {
|
||||||
mFooterBarMixin = getLayout().getMixin(FooterBarMixin.class);
|
mSecondaryFooterButton = new FooterButton.Builder(this)
|
||||||
}
|
|
||||||
|
|
||||||
if (mFooterBarMixin.getSecondaryButton() == null) {
|
|
||||||
final FooterButton noThanksButton = new FooterButton.Builder(this)
|
|
||||||
.setText(getNegativeButtonTextId())
|
.setText(getNegativeButtonTextId())
|
||||||
.setListener(this::onSkipButtonClick)
|
.setListener(this::onSkipButtonClick)
|
||||||
.setButtonType(FooterButton.ButtonType.NEXT)
|
.setButtonType(FooterButton.ButtonType.NEXT)
|
||||||
.setTheme(R.style.SudGlifButton_Primary)
|
.setTheme(R.style.SudGlifButton_Primary)
|
||||||
.build();
|
.build();
|
||||||
mFooterBarMixin.setSecondaryButton(noThanksButton, true /* usePrimaryStyle */);
|
|
||||||
}
|
}
|
||||||
return mFooterBarMixin.getSecondaryButton();
|
return mSecondaryFooterButton;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@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;
|
return R.string.security_settings_face_enroll_introduction_more;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user