diff --git a/src/com/android/settings/network/BluetoothTetherPreferenceController.java b/src/com/android/settings/network/BluetoothTetherPreferenceController.java index b1dede72dcb..480cd2641c4 100644 --- a/src/com/android/settings/network/BluetoothTetherPreferenceController.java +++ b/src/com/android/settings/network/BluetoothTetherPreferenceController.java @@ -31,9 +31,8 @@ import androidx.lifecycle.LifecycleObserver; import androidx.lifecycle.OnLifecycleEvent; import androidx.preference.Preference; import androidx.preference.PreferenceScreen; -import androidx.preference.SwitchPreference; -import com.android.settings.core.BasePreferenceController; +import com.android.settings.core.TogglePreferenceController; import com.google.common.annotations.VisibleForTesting; @@ -41,9 +40,8 @@ import com.google.common.annotations.VisibleForTesting; * This controller helps to manage the switch state and visibility of bluetooth tether switch * preference. It stores preference value when preference changed. */ -public final class BluetoothTetherPreferenceController extends BasePreferenceController - implements LifecycleObserver, Preference.OnPreferenceChangeListener, - SharedPreferences.OnSharedPreferenceChangeListener { +public final class BluetoothTetherPreferenceController extends TogglePreferenceController + implements LifecycleObserver, SharedPreferences.OnSharedPreferenceChangeListener { private static final String TAG = "BluetoothTetherPreferenceController"; private static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG); @@ -59,6 +57,22 @@ public final class BluetoothTetherPreferenceController extends BasePreferenceCon context.getSharedPreferences(TetherEnabler.SHARED_PREF, Context.MODE_PRIVATE); } + @Override + public boolean isChecked() { + return mSharedPreferences.getBoolean(mPreferenceKey, false); + } + + @Override + public boolean setChecked(boolean isChecked) { + if (DEBUG) { + Log.d(TAG, "preference changing to " + isChecked); + } + final SharedPreferences.Editor editor = mSharedPreferences.edit(); + editor.putBoolean(mPreferenceKey, isChecked); + editor.apply(); + return true; + } + @OnLifecycleEvent(Lifecycle.Event.ON_START) public void onStart() { mBluetoothState = BluetoothAdapter.getDefaultAdapter().getState(); @@ -107,11 +121,6 @@ public final class BluetoothTetherPreferenceController extends BasePreferenceCon default: preference.setEnabled(false); } - - if (preference instanceof SwitchPreference) { - ((SwitchPreference) preference) - .setChecked(mSharedPreferences.getBoolean(mPreferenceKey, false)); - } } @Override @@ -136,18 +145,6 @@ public final class BluetoothTetherPreferenceController extends BasePreferenceCon } }; - - @Override - public boolean onPreferenceChange(Preference preference, Object o) { - if (DEBUG) { - Log.d(TAG, "preference changing to " + o); - } - final SharedPreferences.Editor editor = mSharedPreferences.edit(); - editor.putBoolean(mPreferenceKey, (Boolean) o); - editor.apply(); - return true; - } - @Override public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) { if (TextUtils.equals(mPreferenceKey, key)) { diff --git a/src/com/android/settings/network/UsbTetherPreferenceController.java b/src/com/android/settings/network/UsbTetherPreferenceController.java index 380e253ce26..7305a482d43 100644 --- a/src/com/android/settings/network/UsbTetherPreferenceController.java +++ b/src/com/android/settings/network/UsbTetherPreferenceController.java @@ -32,20 +32,18 @@ import androidx.lifecycle.LifecycleObserver; import androidx.lifecycle.OnLifecycleEvent; import androidx.preference.Preference; import androidx.preference.PreferenceScreen; -import androidx.preference.SwitchPreference; import com.android.internal.annotations.VisibleForTesting; import com.android.settings.Utils; -import com.android.settings.core.BasePreferenceController; +import com.android.settings.core.TogglePreferenceController; /** * This controller helps to manage the switch state and visibility of USB tether switch * preference. It stores preference values when preference changed. * */ -public final class UsbTetherPreferenceController extends BasePreferenceController implements - LifecycleObserver, Preference.OnPreferenceChangeListener, - SharedPreferences.OnSharedPreferenceChangeListener { +public final class UsbTetherPreferenceController extends TogglePreferenceController implements + LifecycleObserver, SharedPreferences.OnSharedPreferenceChangeListener { private static final String TAG = "UsbTetherPrefController"; private static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG); @@ -63,6 +61,22 @@ public final class UsbTetherPreferenceController extends BasePreferenceControlle context.getSharedPreferences(TetherEnabler.SHARED_PREF, Context.MODE_PRIVATE); } + @Override + public boolean isChecked() { + return mSharedPreferences.getBoolean(mPreferenceKey, false); + } + + @Override + public boolean setChecked(boolean isChecked) { + if (DEBUG) { + Log.d(TAG, "preference changing to " + isChecked); + } + final SharedPreferences.Editor editor = mSharedPreferences.edit(); + editor.putBoolean(mPreferenceKey, isChecked); + editor.apply(); + return true; + } + @OnLifecycleEvent(Lifecycle.Event.ON_START) public void onStart() { mMassStorageActive = Environment.MEDIA_SHARED.equals(Environment.getExternalStorageState()); @@ -107,15 +121,9 @@ public final class UsbTetherPreferenceController extends BasePreferenceControlle @Override public void updateState(Preference preference) { super.updateState(preference); - if (preference == null) { - return; + if (preference != null) { + preference.setEnabled(mUsbConnected && !mMassStorageActive); } - - if (preference instanceof SwitchPreference) { - ((SwitchPreference) preference) - .setChecked(mSharedPreferences.getBoolean(mPreferenceKey, false)); - } - preference.setEnabled(mUsbConnected && !mMassStorageActive); } @VisibleForTesting @@ -134,17 +142,6 @@ public final class UsbTetherPreferenceController extends BasePreferenceControlle } }; - @Override - public boolean onPreferenceChange(Preference preference, Object o) { - if (DEBUG) { - Log.d(TAG, "preference changing to " + o); - } - final SharedPreferences.Editor editor = mSharedPreferences.edit(); - editor.putBoolean(mPreferenceKey, (Boolean) o); - editor.apply(); - return true; - } - @Override public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) { if (TextUtils.equals(mPreferenceKey, key)) { diff --git a/src/com/android/settings/network/WifiTetherDisablePreferenceController.java b/src/com/android/settings/network/WifiTetherDisablePreferenceController.java index 891ce3a57a1..26c3acb7e41 100644 --- a/src/com/android/settings/network/WifiTetherDisablePreferenceController.java +++ b/src/com/android/settings/network/WifiTetherDisablePreferenceController.java @@ -31,7 +31,7 @@ import androidx.preference.SwitchPreference; import com.android.internal.annotations.VisibleForTesting; import com.android.settings.R; -import com.android.settings.core.BasePreferenceController; +import com.android.settings.core.TogglePreferenceController; import com.android.settingslib.TetherUtil; /** @@ -43,9 +43,8 @@ import com.android.settingslib.TetherUtil; * @see BluetoothTetherPreferenceController * @see UsbTetherPreferenceController */ -public final class WifiTetherDisablePreferenceController extends BasePreferenceController - implements LifecycleObserver, Preference.OnPreferenceChangeListener, - SharedPreferences.OnSharedPreferenceChangeListener { +public final class WifiTetherDisablePreferenceController extends TogglePreferenceController + implements LifecycleObserver, SharedPreferences.OnSharedPreferenceChangeListener { private static final String TAG = "WifiTetherDisablePreferenceController"; private static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG); @@ -68,6 +67,24 @@ public final class WifiTetherDisablePreferenceController extends BasePreferenceC TetherEnabler.BLUETOOTH_TETHER_KEY, false); } + @Override + public boolean isChecked() { + return !mSharedPreferences.getBoolean(TetherEnabler.KEY_ENABLE_WIFI_TETHERING, true); + } + + @Override + public boolean setChecked(boolean isChecked) { + // The shared preference's value is in the opposite of this preference's value. + final boolean enableWifi = !isChecked; + if (DEBUG) { + Log.d(TAG, "check state changing to " + isChecked); + } + final SharedPreferences.Editor editor = mSharedPreferences.edit(); + editor.putBoolean(TetherEnabler.KEY_ENABLE_WIFI_TETHERING, enableWifi); + editor.apply(); + return true; + } + @OnLifecycleEvent(Lifecycle.Event.ON_RESUME) public void onResume() { mSharedPreferences.registerOnSharedPreferenceChangeListener(this); @@ -119,12 +136,6 @@ public final class WifiTetherDisablePreferenceController extends BasePreferenceC @Override public void updateState(Preference preference) { super.updateState(preference); - - if (preference instanceof SwitchPreference) { - ((SwitchPreference) preference) - .setChecked(!mSharedPreferences.getBoolean( - TetherEnabler.KEY_ENABLE_WIFI_TETHERING, true)); - } setVisible(mScreen, mPreferenceKey, shouldShow()); } @@ -167,17 +178,4 @@ public final class WifiTetherDisablePreferenceController extends BasePreferenceC updateState(mPreference); } } - - @Override - public boolean onPreferenceChange(Preference preference, Object o) { - // The shared preference's value is in the opposite of this preference's value. - final boolean enableWifi = !(boolean) o; - if (DEBUG) { - Log.d(TAG, "check state changing to " + o); - } - final SharedPreferences.Editor editor = mSharedPreferences.edit(); - editor.putBoolean(TetherEnabler.KEY_ENABLE_WIFI_TETHERING, enableWifi); - editor.apply(); - return true; - } }