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: If38157d9414243b4411a652577ce4ae668a3e889
This commit is contained in:
@@ -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();
|
||||
}
|
||||
|
@@ -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;
|
||||
}
|
||||
}
|
||||
|
@@ -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;
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user