[ToA] Use radio button style for single selection
1. Change TickButtonPreference to SelectorWithWidgetPreference 2. Modify tests Bug: 375979373 Flag: EXEMPT bugfix Test: atest TermsOfAddressFeminineControllerTest, TermsOfAddressMasculineControllerTest, TermsOfAddressNeutralControllerTest, TermsOfAddressNotSpecifiedControllerTest Change-Id: I29c01fb3d2fa9545bdd817f50d9c48b3610f9785
This commit is contained in:
committed by
Daniel Huang
parent
cf7e295b4a
commit
2d2f523abe
@@ -23,8 +23,8 @@ import androidx.preference.PreferenceScreen;
|
||||
|
||||
import com.android.settings.core.BasePreferenceController;
|
||||
import com.android.settings.overlay.FeatureFactory;
|
||||
import com.android.settings.widget.TickButtonPreference;
|
||||
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
|
||||
import com.android.settingslib.widget.SelectorWithWidgetPreference;
|
||||
|
||||
import java.util.concurrent.Executor;
|
||||
import java.util.concurrent.Executors;
|
||||
@@ -32,9 +32,9 @@ import java.util.concurrent.Executors;
|
||||
public abstract class TermsOfAddressBaseController extends BasePreferenceController {
|
||||
|
||||
private static final Executor sExecutor = Executors.newSingleThreadExecutor();
|
||||
private PreferenceScreen mPreferenceScreen;
|
||||
private MetricsFeatureProvider mMetricsFeatureProvider;
|
||||
private TickButtonPreference mPreference;
|
||||
private SelectorWithWidgetPreference mPreference;
|
||||
|
||||
private TermsOfAddressHelper mTermsOfAddressHelper;
|
||||
|
||||
public TermsOfAddressBaseController(Context context, String preferenceKey) {
|
||||
@@ -49,34 +49,17 @@ public abstract class TermsOfAddressBaseController extends BasePreferenceControl
|
||||
@Override
|
||||
public void displayPreference(PreferenceScreen screen) {
|
||||
super.displayPreference(screen);
|
||||
mPreferenceScreen = screen;
|
||||
mPreference = screen.findPreference(getPreferenceKey());
|
||||
mPreference.setOnPreferenceClickListener(clickedPref -> {
|
||||
mPreference.setChecked(
|
||||
mTermsOfAddressHelper.getSystemGrammaticalGender() == getGrammaticalGenderType());
|
||||
mPreference.setOnClickListener(v -> {
|
||||
sExecutor.execute(
|
||||
() -> {
|
||||
mTermsOfAddressHelper.setSystemGrammaticalGender(
|
||||
getGrammaticalGenderType());
|
||||
});
|
||||
setSelected(mPreference);
|
||||
mMetricsFeatureProvider.action(mContext, getMetricsActionKey());
|
||||
return true;
|
||||
});
|
||||
updatePreferences();
|
||||
}
|
||||
|
||||
private void setSelected(TickButtonPreference preference) {
|
||||
for (int i = 1; i < mPreferenceScreen.getPreferenceCount(); i++) {
|
||||
TickButtonPreference pref = (TickButtonPreference) mPreferenceScreen.getPreference(i);
|
||||
pref.setSelected(pref.getKey().equals(preference.getKey()));
|
||||
}
|
||||
}
|
||||
|
||||
private void updatePreferences() {
|
||||
if (mPreference == null) {
|
||||
return;
|
||||
}
|
||||
mPreference.setSelected(
|
||||
mTermsOfAddressHelper.getSystemGrammaticalGender() == getGrammaticalGenderType());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
Reference in New Issue
Block a user