Add primary switch for vibration settings screen

Add primary switch that updates the VIBRATE_ON user setting.

Update all settings in this page to be disabled when this main toggle is
off.

Bug: 30028435
Test: VibrationMainSwitchPreferenceControllerTest
Change-Id: I752ca3b914c46678a1347034c5b6cf24fd40cc13
This commit is contained in:
Lais Andrade
2022-01-14 02:26:15 +00:00
parent eaaf5331d6
commit fd54fc34c6
14 changed files with 563 additions and 65 deletions

View File

@@ -58,16 +58,29 @@ public abstract class VibrationTogglePreferenceController extends TogglePreferen
super.displayPreference(screen);
final Preference preference = screen.findPreference(getPreferenceKey());
mSettingsContentObserver.onDisplayPreference(this, preference);
preference.setEnabled(mPreferenceConfig.isPreferenceEnabled());
}
@Override
public void updateState(Preference preference) {
super.updateState(preference);
if (preference != null) {
preference.setEnabled(mPreferenceConfig.isPreferenceEnabled());
}
}
@Override
public boolean isChecked() {
final int position = mPreferenceConfig.readIntensity();
return position != Vibrator.VIBRATION_INTENSITY_OFF;
return mPreferenceConfig.isPreferenceEnabled()
&& (mPreferenceConfig.readIntensity() != Vibrator.VIBRATION_INTENSITY_OFF);
}
@Override
public boolean setChecked(boolean isChecked) {
if (!mPreferenceConfig.isPreferenceEnabled()) {
// Ignore toggle updates when the preference is disabled.
return false;
}
final int newIntensity = isChecked
? mPreferenceConfig.getDefaultIntensity()
: Vibrator.VIBRATION_INTENSITY_OFF;