Update Fingerprint adding button with expressive design

Flag: EXEMPT flag by System prop (SettingsThemeHelper.isExpressiveTheme)

Bug: 388260897

Test: build and manually check the UI and its behaviors.
Change-Id: I1c6d859f78305d0f14476e12a5bb4e1b0258d06e
This commit is contained in:
Jason Chang
2025-01-07 12:56:45 +00:00
parent ea095beb6c
commit 3e1e855094
2 changed files with 55 additions and 5 deletions

View File

@@ -29,6 +29,14 @@
android:title="@string/fingerprint_add_title"
android:icon="@drawable/ic_add_24dp"/>
<com.android.settingslib.widget.ButtonPreference
android:key="key_fingerprint_add_expressive"
android:title="@string/add"
settings:buttonPreferenceSize="large"
settings:buttonPreferenceType="tonal"
android:visibility="gone"
android:icon="@drawable/ic_add_24dp"/>
<PreferenceCategory
android:key="security_settings_fingerprint_unlock_category"
android:title="@string/security_settings_fingerprint_settings_preferences_category"

View File

@@ -99,7 +99,9 @@ import com.android.settingslib.RestrictedSwitchPreference;
import com.android.settingslib.core.AbstractPreferenceController;
import com.android.settingslib.search.SearchIndexable;
import com.android.settingslib.transition.SettingsTransitionHelper;
import com.android.settingslib.widget.ButtonPreference;
import com.android.settingslib.widget.FooterPreference;
import com.android.settingslib.widget.SettingsThemeHelper;
import com.android.settingslib.widget.TwoTargetPreference;
import com.google.android.setupdesign.util.DeviceHelper;
@@ -250,6 +252,8 @@ public class FingerprintSettings extends SubSettings {
"key_fingerprint_check_enrolled";
@VisibleForTesting
static final String KEY_FINGERPRINT_ADD = "key_fingerprint_add";
@VisibleForTesting
static final String KEY_FINGERPRINT_ADD_EXPRESSIVE = "key_fingerprint_add_expressive";
private static final String KEY_FINGERPRINT_ENABLE_KEYGUARD_TOGGLE =
"fingerprint_enable_keyguard_toggle";
private static final String KEY_LAUNCHED_CONFIRM = "launched_confirm";
@@ -325,6 +329,8 @@ public class FingerprintSettings extends SubSettings {
@Nullable
private UdfpsEnrollCalibrator mCalibrator;
private boolean mIsExpressiveThemeStyle;
FingerprintAuthenticateSidecar.Listener mAuthenticateListener =
new FingerprintAuthenticateSidecar.Listener() {
@Override
@@ -471,6 +477,7 @@ public class FingerprintSettings extends SubSettings {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mIsExpressiveThemeStyle = SettingsThemeHelper.isExpressiveTheme(getPrefContext());
Activity activity = getActivity();
mFingerprintManager = Utils.getFingerprintManagerOrNull(activity);
@@ -679,7 +686,8 @@ public class FingerprintSettings extends SubSettings {
mFingerprintsEnrolledCategory.removeAll();
}
String keyToReturn = KEY_FINGERPRINT_ADD;
String keyToReturn = mIsExpressiveThemeStyle
? KEY_FINGERPRINT_ADD_EXPRESSIVE : KEY_FINGERPRINT_ADD;
final List<Fingerprint> 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,7 +967,7 @@ 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,