diff --git a/res/xml/security_settings_fingerprint.xml b/res/xml/security_settings_fingerprint.xml index 32f09244f97..331549c2743 100644 --- a/res/xml/security_settings_fingerprint.xml +++ b/res/xml/security_settings_fingerprint.xml @@ -29,6 +29,14 @@ android:title="@string/fingerprint_add_title" android:icon="@drawable/ic_add_24dp"/> + + items = mFingerprintManager.getEnrolledFingerprints(mUserId); final int fingerprintCount = items.size(); for (int i = 0; i < fingerprintCount; i++) { @@ -715,13 +723,30 @@ public class FingerprintSettings extends SubSettings { mFingerprintsEnrolledCategory.addPreference(pref); pref.setOnPreferenceChangeListener(this); } - mAddFingerprintPreference = findPreference(KEY_FINGERPRINT_ADD); + mAddFingerprintPreference = findPreference(mIsExpressiveThemeStyle + ? KEY_FINGERPRINT_ADD_EXPRESSIVE : KEY_FINGERPRINT_ADD); setupAddFingerprintPreference(); return keyToReturn; } private void setupAddFingerprintPreference() { mAddFingerprintPreference.setOnPreferenceChangeListener(this); + if (mIsExpressiveThemeStyle + && (mAddFingerprintPreference instanceof ButtonPreference)) { + ((ButtonPreference) mAddFingerprintPreference).setOnClickListener(view -> { + mIsEnrolling = true; + Intent intent = new Intent(); + intent.setClassName(SETTINGS_PACKAGE_NAME, + FingerprintEnroll.AddAdditionalFingerprint.class.getName()); + intent.putExtra(Intent.EXTRA_USER_ID, mUserId); + intent.putExtra(ChooseLockSettingsHelper.EXTRA_KEY_CHALLENGE_TOKEN, mToken); + if (mCalibrator != null) { + intent.putExtras(mCalibrator.getExtrasForNextIntent()); + } + startActivityForResult(intent, ADD_FINGERPRINT_REQUEST); + }); + } + updateAddPreference(); } @@ -803,12 +828,15 @@ public class FingerprintSettings extends SubSettings { return; // Activity went away } - mAddFingerprintPreference = findPreference(KEY_FINGERPRINT_ADD); + mAddFingerprintPreference = findPreference( + mIsExpressiveThemeStyle ? KEY_FINGERPRINT_ADD_EXPRESSIVE : KEY_FINGERPRINT_ADD); if (mAddFingerprintPreference == null) { return; // b/275519315 Skip if updateAddPreference() invoke before addPreference() } + updateAddingButtonStyle(); + /* Disable preference if too many fingerprints added */ final int max = getContext().getResources().getInteger( com.android.internal.R.integer.config_fingerprintMaxTemplatesPerUser); @@ -828,6 +856,20 @@ public class FingerprintSettings extends SubSettings { && !tooMany && !removalInProgress && mToken != null); } + private void updateAddingButtonStyle() { + final Preference nonExpressiveBtnPreference = findPreference(KEY_FINGERPRINT_ADD); + final ButtonPreference expressiveBtnPreference = + findPreference(KEY_FINGERPRINT_ADD_EXPRESSIVE); + + if (nonExpressiveBtnPreference != null) { + nonExpressiveBtnPreference.setVisible(!mIsExpressiveThemeStyle); + } + + if (expressiveBtnPreference != null) { + expressiveBtnPreference.setVisible(mIsExpressiveThemeStyle); + } + } + private void createFooterPreference(PreferenceGroup root) { final Context context = getActivity(); if (context == null) { @@ -925,11 +967,11 @@ public class FingerprintSettings extends SubSettings { @Override public boolean onPreferenceTreeClick(Preference pref) { final String key = pref.getKey(); - if (KEY_FINGERPRINT_ADD.equals(key)) { + if (!mIsExpressiveThemeStyle && KEY_FINGERPRINT_ADD.equals(key)) { mIsEnrolling = true; Intent intent = new Intent(); intent.setClassName(SETTINGS_PACKAGE_NAME, - FingerprintEnroll.AddAdditionalFingerprint.class.getName()); + FingerprintEnroll.AddAdditionalFingerprint.class.getName()); intent.putExtra(Intent.EXTRA_USER_ID, mUserId); intent.putExtra(ChooseLockSettingsHelper.EXTRA_KEY_CHALLENGE_TOKEN, mToken); if (mCalibrator != null) {