Refactor nfc preference controller

- Remove BaseNfcPreferenceController.
- NfcPreferenceController inherit from TogglePreferenceController.
- AndroidBeamPreferenceController inherit from BasePreferenceController.
- Override getIntentFilter in NfcPreferenceController to listen changes.
- Add an API (hasAsyncUpdate) into BasePreferenceController to
distinguish the setting which is updated asynchronously.

Change-Id: I7c9c48ea7f1ad01a02524beabf9d30baa3db891f
Fixes: 67997761
Fixes: 74887543
Test: RunSettingsRoboTests
This commit is contained in:
Chihhang Chuang
2018-03-29 17:26:04 +08:00
parent 8f36eb8cfb
commit 3b387a028a
19 changed files with 474 additions and 214 deletions

View File

@@ -18,52 +18,21 @@ package com.android.settings.nfc;
import android.content.Context;
import android.nfc.NfcAdapter;
import androidx.preference.Preference;
import androidx.preference.SwitchPreference;
/**
* NfcEnabler is a helper to manage the Nfc on/off checkbox preference. It turns on/off Nfc
* and ensures the summary of the preference reflects the current state.
*/
public class NfcEnabler extends BaseNfcEnabler implements Preference.OnPreferenceChangeListener {
public class NfcEnabler extends BaseNfcEnabler {
private final SwitchPreference mPreference;
public NfcEnabler(Context context, SwitchPreference preference) {
super(context);
mPreference = preference;
}
public void resume() {
super.resume();
if (isNfcAvailable()) {
mPreference.setOnPreferenceChangeListener(this);
}
}
public void pause() {
super.pause();
if (isNfcAvailable()) {
mPreference.setOnPreferenceChangeListener(null);
}
}
public boolean onPreferenceChange(Preference preference, Object value) {
// Turn NFC on/off
final boolean desiredState = (Boolean) value;
mPreference.setChecked(desiredState);
mPreference.setEnabled(false);
if (desiredState) {
mNfcAdapter.enable();
} else {
mNfcAdapter.disable();
}
return false;
}
@Override
protected void handleNfcStateChanged(int newState) {
switch (newState) {