From f79173a66499a7d53081a6e415bcf1433426b976 Mon Sep 17 00:00:00 2001 From: Jacky Wang Date: Mon, 9 Dec 2024 16:59:16 +0800 Subject: [PATCH] [Catalyst] Support callChangeListener for MainSwitchBarPreference Bug: 335132588 Flag: EXEMPT library Test: manual Change-Id: I6924ccfa0d66b9a643811f49a2ec3fcdc1d749ae --- src/com/android/settings/widget/MainSwitchBarPreference.kt | 6 +++++- src/com/android/settings/widget/SettingsMainSwitchBar.java | 2 +- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/com/android/settings/widget/MainSwitchBarPreference.kt b/src/com/android/settings/widget/MainSwitchBarPreference.kt index 6ed887790c8..5cf96397184 100644 --- a/src/com/android/settings/widget/MainSwitchBarPreference.kt +++ b/src/com/android/settings/widget/MainSwitchBarPreference.kt @@ -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() } } diff --git a/src/com/android/settings/widget/SettingsMainSwitchBar.java b/src/com/android/settings/widget/SettingsMainSwitchBar.java index e8c6fc9b0b9..6bccbd7205d 100644 --- a/src/com/android/settings/widget/SettingsMainSwitchBar.java +++ b/src/com/android/settings/widget/SettingsMainSwitchBar.java @@ -109,7 +109,7 @@ public class SettingsMainSwitchBar extends MainSwitchBar { return true; } - return mSwitch.performClick(); + return callPreChangeListener() && mSwitch.performClick(); } @Override