Loading packages/SettingsLib/Metadata/src/com/android/settingslib/metadata/PreferenceTypes.kt +8 −0 Original line number Diff line number Diff line Loading @@ -38,3 +38,11 @@ constructor( @StringRes override val title: Int = 0, @StringRes override val summary: Int = 0, ) : TwoStatePreference /** A preference that provides a two-state toggleable option that can be used as a main switch. */ open class MainSwitchPreference @JvmOverloads constructor( override val key: String, @StringRes override val title: Int = 0, ) : TwoStatePreference No newline at end of file packages/SettingsLib/Preference/Android.bp +1 −0 Original line number Diff line number Diff line Loading @@ -32,6 +32,7 @@ android_library { static_libs: [ "SettingsLibDataStore", "SettingsLibMetadata", "SettingsLibMainSwitchPreference", "androidx.annotation_annotation", "androidx.preference_preference", "guava", Loading packages/SettingsLib/Preference/src/com/android/settingslib/preference/PreferenceBindingFactory.kt +2 −0 Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ package com.android.settingslib.preference import com.android.settingslib.metadata.MainSwitchPreference import com.android.settingslib.metadata.PreferenceGroup import com.android.settingslib.metadata.PreferenceMetadata import com.android.settingslib.metadata.SwitchPreference Loading @@ -36,6 +37,7 @@ object DefaultPreferenceBindingFactory : PreferenceBindingFactory { is SwitchPreference -> SwitchPreferenceBinding.INSTANCE is PreferenceGroup -> PreferenceGroupBinding.INSTANCE is PreferenceScreenCreator -> PreferenceScreenBinding.INSTANCE is MainSwitchPreference -> MainSwitchPreferenceBinding.INSTANCE else -> DefaultPreferenceBinding } } Loading packages/SettingsLib/Preference/src/com/android/settingslib/preference/PreferenceBindings.kt +21 −5 Original line number Diff line number Diff line Loading @@ -21,11 +21,13 @@ import androidx.preference.Preference import androidx.preference.PreferenceCategory import androidx.preference.PreferenceScreen import androidx.preference.SwitchPreferenceCompat import androidx.preference.TwoStatePreference import com.android.settingslib.metadata.EXTRA_BINDING_SCREEN_KEY import com.android.settingslib.metadata.PersistentPreference import com.android.settingslib.metadata.PreferenceMetadata import com.android.settingslib.metadata.PreferenceScreenMetadata import com.android.settingslib.metadata.PreferenceTitleProvider import com.android.settingslib.widget.MainSwitchPreference /** Binding of preference group associated with [PreferenceCategory]. */ interface PreferenceScreenBinding : PreferenceBinding { Loading Loading @@ -64,23 +66,37 @@ interface PreferenceGroupBinding : PreferenceBinding { } } /** A boolean value type preference associated with [SwitchPreferenceCompat]. */ interface SwitchPreferenceBinding : PreferenceBinding { override fun createWidget(context: Context): Preference = SwitchPreferenceCompat(context) /** A boolean value type preference associated with the abstract [TwoStatePreference]. */ interface TwoStatePreferenceBinding : PreferenceBinding { override fun bind(preference: Preference, metadata: PreferenceMetadata) { super.bind(preference, metadata) (metadata as? PersistentPreference<*>) ?.storage(preference.context) ?.getValue(metadata.key, Boolean::class.javaObjectType) ?.let { (preference as SwitchPreferenceCompat).isChecked = it } ?.let { (preference as TwoStatePreference).isChecked = it } } } /** A boolean value type preference associated with [SwitchPreferenceCompat]. */ interface SwitchPreferenceBinding : TwoStatePreferenceBinding { override fun createWidget(context: Context): Preference = SwitchPreferenceCompat(context) companion object { @JvmStatic val INSTANCE = object : SwitchPreferenceBinding {} } } /** A boolean value type preference associated with [MainSwitchPreference]. */ interface MainSwitchPreferenceBinding : TwoStatePreferenceBinding { override fun createWidget(context: Context): Preference = MainSwitchPreference(context) companion object { @JvmStatic val INSTANCE = object : MainSwitchPreferenceBinding {} } } /** Default [PreferenceBinding] for [Preference]. */ object DefaultPreferenceBinding : PreferenceBinding Loading
packages/SettingsLib/Metadata/src/com/android/settingslib/metadata/PreferenceTypes.kt +8 −0 Original line number Diff line number Diff line Loading @@ -38,3 +38,11 @@ constructor( @StringRes override val title: Int = 0, @StringRes override val summary: Int = 0, ) : TwoStatePreference /** A preference that provides a two-state toggleable option that can be used as a main switch. */ open class MainSwitchPreference @JvmOverloads constructor( override val key: String, @StringRes override val title: Int = 0, ) : TwoStatePreference No newline at end of file
packages/SettingsLib/Preference/Android.bp +1 −0 Original line number Diff line number Diff line Loading @@ -32,6 +32,7 @@ android_library { static_libs: [ "SettingsLibDataStore", "SettingsLibMetadata", "SettingsLibMainSwitchPreference", "androidx.annotation_annotation", "androidx.preference_preference", "guava", Loading
packages/SettingsLib/Preference/src/com/android/settingslib/preference/PreferenceBindingFactory.kt +2 −0 Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ package com.android.settingslib.preference import com.android.settingslib.metadata.MainSwitchPreference import com.android.settingslib.metadata.PreferenceGroup import com.android.settingslib.metadata.PreferenceMetadata import com.android.settingslib.metadata.SwitchPreference Loading @@ -36,6 +37,7 @@ object DefaultPreferenceBindingFactory : PreferenceBindingFactory { is SwitchPreference -> SwitchPreferenceBinding.INSTANCE is PreferenceGroup -> PreferenceGroupBinding.INSTANCE is PreferenceScreenCreator -> PreferenceScreenBinding.INSTANCE is MainSwitchPreference -> MainSwitchPreferenceBinding.INSTANCE else -> DefaultPreferenceBinding } } Loading
packages/SettingsLib/Preference/src/com/android/settingslib/preference/PreferenceBindings.kt +21 −5 Original line number Diff line number Diff line Loading @@ -21,11 +21,13 @@ import androidx.preference.Preference import androidx.preference.PreferenceCategory import androidx.preference.PreferenceScreen import androidx.preference.SwitchPreferenceCompat import androidx.preference.TwoStatePreference import com.android.settingslib.metadata.EXTRA_BINDING_SCREEN_KEY import com.android.settingslib.metadata.PersistentPreference import com.android.settingslib.metadata.PreferenceMetadata import com.android.settingslib.metadata.PreferenceScreenMetadata import com.android.settingslib.metadata.PreferenceTitleProvider import com.android.settingslib.widget.MainSwitchPreference /** Binding of preference group associated with [PreferenceCategory]. */ interface PreferenceScreenBinding : PreferenceBinding { Loading Loading @@ -64,23 +66,37 @@ interface PreferenceGroupBinding : PreferenceBinding { } } /** A boolean value type preference associated with [SwitchPreferenceCompat]. */ interface SwitchPreferenceBinding : PreferenceBinding { override fun createWidget(context: Context): Preference = SwitchPreferenceCompat(context) /** A boolean value type preference associated with the abstract [TwoStatePreference]. */ interface TwoStatePreferenceBinding : PreferenceBinding { override fun bind(preference: Preference, metadata: PreferenceMetadata) { super.bind(preference, metadata) (metadata as? PersistentPreference<*>) ?.storage(preference.context) ?.getValue(metadata.key, Boolean::class.javaObjectType) ?.let { (preference as SwitchPreferenceCompat).isChecked = it } ?.let { (preference as TwoStatePreference).isChecked = it } } } /** A boolean value type preference associated with [SwitchPreferenceCompat]. */ interface SwitchPreferenceBinding : TwoStatePreferenceBinding { override fun createWidget(context: Context): Preference = SwitchPreferenceCompat(context) companion object { @JvmStatic val INSTANCE = object : SwitchPreferenceBinding {} } } /** A boolean value type preference associated with [MainSwitchPreference]. */ interface MainSwitchPreferenceBinding : TwoStatePreferenceBinding { override fun createWidget(context: Context): Preference = MainSwitchPreference(context) companion object { @JvmStatic val INSTANCE = object : MainSwitchPreferenceBinding {} } } /** Default [PreferenceBinding] for [Preference]. */ object DefaultPreferenceBinding : PreferenceBinding