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:
@@ -29,6 +29,14 @@
|
|||||||
android:title="@string/fingerprint_add_title"
|
android:title="@string/fingerprint_add_title"
|
||||||
android:icon="@drawable/ic_add_24dp"/>
|
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
|
<PreferenceCategory
|
||||||
android:key="security_settings_fingerprint_unlock_category"
|
android:key="security_settings_fingerprint_unlock_category"
|
||||||
android:title="@string/security_settings_fingerprint_settings_preferences_category"
|
android:title="@string/security_settings_fingerprint_settings_preferences_category"
|
||||||
|
@@ -99,7 +99,9 @@ import com.android.settingslib.RestrictedSwitchPreference;
|
|||||||
import com.android.settingslib.core.AbstractPreferenceController;
|
import com.android.settingslib.core.AbstractPreferenceController;
|
||||||
import com.android.settingslib.search.SearchIndexable;
|
import com.android.settingslib.search.SearchIndexable;
|
||||||
import com.android.settingslib.transition.SettingsTransitionHelper;
|
import com.android.settingslib.transition.SettingsTransitionHelper;
|
||||||
|
import com.android.settingslib.widget.ButtonPreference;
|
||||||
import com.android.settingslib.widget.FooterPreference;
|
import com.android.settingslib.widget.FooterPreference;
|
||||||
|
import com.android.settingslib.widget.SettingsThemeHelper;
|
||||||
import com.android.settingslib.widget.TwoTargetPreference;
|
import com.android.settingslib.widget.TwoTargetPreference;
|
||||||
|
|
||||||
import com.google.android.setupdesign.util.DeviceHelper;
|
import com.google.android.setupdesign.util.DeviceHelper;
|
||||||
@@ -250,6 +252,8 @@ public class FingerprintSettings extends SubSettings {
|
|||||||
"key_fingerprint_check_enrolled";
|
"key_fingerprint_check_enrolled";
|
||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
static final String KEY_FINGERPRINT_ADD = "key_fingerprint_add";
|
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 =
|
private static final String KEY_FINGERPRINT_ENABLE_KEYGUARD_TOGGLE =
|
||||||
"fingerprint_enable_keyguard_toggle";
|
"fingerprint_enable_keyguard_toggle";
|
||||||
private static final String KEY_LAUNCHED_CONFIRM = "launched_confirm";
|
private static final String KEY_LAUNCHED_CONFIRM = "launched_confirm";
|
||||||
@@ -325,6 +329,8 @@ public class FingerprintSettings extends SubSettings {
|
|||||||
@Nullable
|
@Nullable
|
||||||
private UdfpsEnrollCalibrator mCalibrator;
|
private UdfpsEnrollCalibrator mCalibrator;
|
||||||
|
|
||||||
|
private boolean mIsExpressiveThemeStyle;
|
||||||
|
|
||||||
FingerprintAuthenticateSidecar.Listener mAuthenticateListener =
|
FingerprintAuthenticateSidecar.Listener mAuthenticateListener =
|
||||||
new FingerprintAuthenticateSidecar.Listener() {
|
new FingerprintAuthenticateSidecar.Listener() {
|
||||||
@Override
|
@Override
|
||||||
@@ -471,6 +477,7 @@ public class FingerprintSettings extends SubSettings {
|
|||||||
@Override
|
@Override
|
||||||
public void onCreate(Bundle savedInstanceState) {
|
public void onCreate(Bundle savedInstanceState) {
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
|
mIsExpressiveThemeStyle = SettingsThemeHelper.isExpressiveTheme(getPrefContext());
|
||||||
|
|
||||||
Activity activity = getActivity();
|
Activity activity = getActivity();
|
||||||
mFingerprintManager = Utils.getFingerprintManagerOrNull(activity);
|
mFingerprintManager = Utils.getFingerprintManagerOrNull(activity);
|
||||||
@@ -679,7 +686,8 @@ public class FingerprintSettings extends SubSettings {
|
|||||||
mFingerprintsEnrolledCategory.removeAll();
|
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 List<Fingerprint> items = mFingerprintManager.getEnrolledFingerprints(mUserId);
|
||||||
final int fingerprintCount = items.size();
|
final int fingerprintCount = items.size();
|
||||||
for (int i = 0; i < fingerprintCount; i++) {
|
for (int i = 0; i < fingerprintCount; i++) {
|
||||||
@@ -715,13 +723,30 @@ public class FingerprintSettings extends SubSettings {
|
|||||||
mFingerprintsEnrolledCategory.addPreference(pref);
|
mFingerprintsEnrolledCategory.addPreference(pref);
|
||||||
pref.setOnPreferenceChangeListener(this);
|
pref.setOnPreferenceChangeListener(this);
|
||||||
}
|
}
|
||||||
mAddFingerprintPreference = findPreference(KEY_FINGERPRINT_ADD);
|
mAddFingerprintPreference = findPreference(mIsExpressiveThemeStyle
|
||||||
|
? KEY_FINGERPRINT_ADD_EXPRESSIVE : KEY_FINGERPRINT_ADD);
|
||||||
setupAddFingerprintPreference();
|
setupAddFingerprintPreference();
|
||||||
return keyToReturn;
|
return keyToReturn;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setupAddFingerprintPreference() {
|
private void setupAddFingerprintPreference() {
|
||||||
mAddFingerprintPreference.setOnPreferenceChangeListener(this);
|
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();
|
updateAddPreference();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -803,12 +828,15 @@ public class FingerprintSettings extends SubSettings {
|
|||||||
return; // Activity went away
|
return; // Activity went away
|
||||||
}
|
}
|
||||||
|
|
||||||
mAddFingerprintPreference = findPreference(KEY_FINGERPRINT_ADD);
|
mAddFingerprintPreference = findPreference(
|
||||||
|
mIsExpressiveThemeStyle ? KEY_FINGERPRINT_ADD_EXPRESSIVE : KEY_FINGERPRINT_ADD);
|
||||||
|
|
||||||
if (mAddFingerprintPreference == null) {
|
if (mAddFingerprintPreference == null) {
|
||||||
return; // b/275519315 Skip if updateAddPreference() invoke before addPreference()
|
return; // b/275519315 Skip if updateAddPreference() invoke before addPreference()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
updateAddingButtonStyle();
|
||||||
|
|
||||||
/* Disable preference if too many fingerprints added */
|
/* Disable preference if too many fingerprints added */
|
||||||
final int max = getContext().getResources().getInteger(
|
final int max = getContext().getResources().getInteger(
|
||||||
com.android.internal.R.integer.config_fingerprintMaxTemplatesPerUser);
|
com.android.internal.R.integer.config_fingerprintMaxTemplatesPerUser);
|
||||||
@@ -828,6 +856,20 @@ public class FingerprintSettings extends SubSettings {
|
|||||||
&& !tooMany && !removalInProgress && mToken != null);
|
&& !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) {
|
private void createFooterPreference(PreferenceGroup root) {
|
||||||
final Context context = getActivity();
|
final Context context = getActivity();
|
||||||
if (context == null) {
|
if (context == null) {
|
||||||
@@ -925,11 +967,11 @@ public class FingerprintSettings extends SubSettings {
|
|||||||
@Override
|
@Override
|
||||||
public boolean onPreferenceTreeClick(Preference pref) {
|
public boolean onPreferenceTreeClick(Preference pref) {
|
||||||
final String key = pref.getKey();
|
final String key = pref.getKey();
|
||||||
if (KEY_FINGERPRINT_ADD.equals(key)) {
|
if (!mIsExpressiveThemeStyle && KEY_FINGERPRINT_ADD.equals(key)) {
|
||||||
mIsEnrolling = true;
|
mIsEnrolling = true;
|
||||||
Intent intent = new Intent();
|
Intent intent = new Intent();
|
||||||
intent.setClassName(SETTINGS_PACKAGE_NAME,
|
intent.setClassName(SETTINGS_PACKAGE_NAME,
|
||||||
FingerprintEnroll.AddAdditionalFingerprint.class.getName());
|
FingerprintEnroll.AddAdditionalFingerprint.class.getName());
|
||||||
intent.putExtra(Intent.EXTRA_USER_ID, mUserId);
|
intent.putExtra(Intent.EXTRA_USER_ID, mUserId);
|
||||||
intent.putExtra(ChooseLockSettingsHelper.EXTRA_KEY_CHALLENGE_TOKEN, mToken);
|
intent.putExtra(ChooseLockSettingsHelper.EXTRA_KEY_CHALLENGE_TOKEN, mToken);
|
||||||
if (mCalibrator != null) {
|
if (mCalibrator != null) {
|
||||||
|
Reference in New Issue
Block a user