New UX for the NFC default payment settings
Re-design the UX. Bug: 202367033 Test: maunal make RunSettingsRoboTests ROBOTEST_FILTER=NfcForegroundPreferenceControllerTest make RunSettingsRoboTests ROBOTEST_FILTER=PaymentSettingsTest Change-Id: I4c05ac4a1974645c76a37900d64aa8e1a491bca1
This commit is contained in:
@@ -16,11 +16,9 @@ package com.android.settings.nfc;
|
||||
import android.app.settings.SettingsEnums;
|
||||
import android.content.Context;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.text.TextUtils;
|
||||
|
||||
import androidx.preference.DropDownPreference;
|
||||
import androidx.preference.ListPreference;
|
||||
import androidx.preference.Preference;
|
||||
import androidx.preference.PreferenceScreen;
|
||||
|
||||
import com.android.settings.R;
|
||||
import com.android.settings.core.BasePreferenceController;
|
||||
@@ -36,13 +34,18 @@ public class NfcForegroundPreferenceController extends BasePreferenceController
|
||||
PaymentBackend.Callback, Preference.OnPreferenceChangeListener,
|
||||
LifecycleObserver, OnStart, OnStop {
|
||||
|
||||
private DropDownPreference mPreference;
|
||||
private ListPreference mPreference;
|
||||
private PaymentBackend mPaymentBackend;
|
||||
private MetricsFeatureProvider mMetricsFeatureProvider;
|
||||
|
||||
private final String[] mListValues;
|
||||
private final String[] mListEntries;
|
||||
|
||||
public NfcForegroundPreferenceController(Context context, String key) {
|
||||
super(context, key);
|
||||
mMetricsFeatureProvider = FeatureFactory.getFactory(context).getMetricsFeatureProvider();
|
||||
mListValues = context.getResources().getStringArray(R.array.nfc_payment_favor_values);
|
||||
mListEntries = context.getResources().getStringArray(R.array.nfc_payment_favor);
|
||||
}
|
||||
|
||||
public void setPaymentBackend(PaymentBackend backend) {
|
||||
@@ -78,21 +81,6 @@ public class NfcForegroundPreferenceController extends BasePreferenceController
|
||||
: UNSUPPORTED_ON_DEVICE;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void displayPreference(PreferenceScreen screen) {
|
||||
super.displayPreference(screen);
|
||||
mPreference = screen.findPreference(getPreferenceKey());
|
||||
if (mPreference == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
mPreference.setEntries(new CharSequence[]{
|
||||
mContext.getText(R.string.nfc_payment_favor_open),
|
||||
mContext.getText(R.string.nfc_payment_favor_default)
|
||||
});
|
||||
mPreference.setEntryValues(new CharSequence[]{"1", "0"});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPaymentAppsChanged() {
|
||||
updateState(mPreference);
|
||||
@@ -100,26 +88,29 @@ public class NfcForegroundPreferenceController extends BasePreferenceController
|
||||
|
||||
@Override
|
||||
public void updateState(Preference preference) {
|
||||
if (preference instanceof DropDownPreference) {
|
||||
((DropDownPreference) preference).setValue(
|
||||
mPaymentBackend.isForegroundMode() ? "1" : "0");
|
||||
}
|
||||
super.updateState(preference);
|
||||
if (!(preference instanceof ListPreference)) {
|
||||
return;
|
||||
}
|
||||
final ListPreference listPreference = (ListPreference) preference;
|
||||
listPreference.setIconSpaceReserved(true);
|
||||
listPreference.setValue(mListValues[mPaymentBackend.isForegroundMode() ? 1 : 0]);
|
||||
}
|
||||
|
||||
@Override
|
||||
public CharSequence getSummary() {
|
||||
return mPreference.getEntry();
|
||||
return mListEntries[mPaymentBackend.isForegroundMode() ? 1 : 0];
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onPreferenceChange(Preference preference, Object newValue) {
|
||||
if (!(preference instanceof DropDownPreference)) {
|
||||
if (!(preference instanceof ListPreference)) {
|
||||
return false;
|
||||
}
|
||||
final DropDownPreference pref = (DropDownPreference) preference;
|
||||
|
||||
final ListPreference listPreference = (ListPreference) preference;
|
||||
final String newValueString = (String) newValue;
|
||||
pref.setSummary(pref.getEntries()[pref.findIndexOfValue(newValueString)]);
|
||||
listPreference.setSummary(mListEntries[listPreference.findIndexOfValue(newValueString)]);
|
||||
final boolean foregroundMode = Integer.parseInt(newValueString) != 0;
|
||||
mPaymentBackend.setForegroundMode(foregroundMode);
|
||||
mMetricsFeatureProvider.action(mContext,
|
||||
@@ -127,12 +118,4 @@ public class NfcForegroundPreferenceController extends BasePreferenceController
|
||||
: SettingsEnums.ACTION_NFC_PAYMENT_ALWAYS_SETTING);
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateNonIndexableKeys(List<String> keys) {
|
||||
final String key = getPreferenceKey();
|
||||
if (!TextUtils.isEmpty(key)) {
|
||||
keys.add(key);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user