[Catalyst] Support callChangeListener for MainSwitchBarPreference

Bug: 335132588
Flag: EXEMPT library
Test: manual
Change-Id: I6924ccfa0d66b9a643811f49a2ec3fcdc1d749ae
This commit is contained in:
Jacky Wang
2024-12-09 16:59:16 +08:00
parent 2e3fc47765
commit f79173a664
2 changed files with 6 additions and 2 deletions

View File

@@ -26,7 +26,7 @@ import com.android.settingslib.widget.MainSwitchBar
/** Preference abstraction of the [MainSwitchBar] in settings activity. */
class MainSwitchBarPreference(context: Context, private val metadata: MainSwitchBarMetadata) :
TwoStatePreference(context), OnCheckedChangeListener {
TwoStatePreference(context), OnCheckedChangeListener, MainSwitchBar.PreChangeListener {
private val mainSwitchBar: MainSwitchBar = (context as SettingsActivity).switchBar
@@ -62,9 +62,12 @@ class MainSwitchBarPreference(context: Context, private val metadata: MainSwitch
override fun onAttached() {
super.onAttached()
mainSwitchBar.setPreChangeListener(this)
mainSwitchBar.addOnSwitchChangeListener(this)
}
override fun preChange(isCheck: Boolean) = callChangeListener(isCheck)
override fun onCheckedChanged(buttonView: CompoundButton, isChecked: Boolean) {
// prevent user from toggling the switch before data store operation is done
isEnabled = false
@@ -74,6 +77,7 @@ class MainSwitchBarPreference(context: Context, private val metadata: MainSwitch
override fun onDetached() {
mainSwitchBar.removeOnSwitchChangeListener(this)
mainSwitchBar.setPreChangeListener(null)
super.onDetached()
}
}

View File

@@ -109,7 +109,7 @@ public class SettingsMainSwitchBar extends MainSwitchBar {
return true;
}
return mSwitch.performClick();
return callPreChangeListener() && mSwitch.performClick();
}
@Override