From ac4da4a92cd0fedcbd2e13c84edc57b4eb831aec Mon Sep 17 00:00:00 2001 From: Jacky Wang Date: Thu, 16 Jan 2025 16:27:19 +0800 Subject: [Catalyst] Introduce PrimarySwitchPreferenceBinding Bug: 335132588 Flag: com.android.settings.flags.catalyst Test: manual Change-Id: Ia953cecee012945392fd2822e45f15c914f3e441 --- packages/SettingsLib/Android.bp | 3 ++ .../settingslib/preference/PreferenceBinding.kt | 2 ++ .../com/android/settingslib/PreferenceBindings.kt | 37 ++++++++++++++++++++++ 3 files changed, 42 insertions(+) create mode 100644 packages/SettingsLib/src/com/android/settingslib/PreferenceBindings.kt diff --git a/packages/SettingsLib/Android.bp b/packages/SettingsLib/Android.bp index 933c512313ce..e5b58370e6dd 100644 --- a/packages/SettingsLib/Android.bp +++ b/packages/SettingsLib/Android.bp @@ -46,6 +46,8 @@ android_library { "SettingsLibIntroPreference", "SettingsLibLayoutPreference", "SettingsLibMainSwitchPreference", + "SettingsLibMetadata", + "SettingsLibPreference", "SettingsLibProfileSelector", "SettingsLibProgressBar", "SettingsLibRestrictedLockUtils", @@ -77,6 +79,7 @@ android_library { "src/**/*.kt", "src/**/I*.aidl", ], + kotlincflags: ["-Xjvm-default=all"], } // defaults for lint option diff --git a/packages/SettingsLib/Preference/src/com/android/settingslib/preference/PreferenceBinding.kt b/packages/SettingsLib/Preference/src/com/android/settingslib/preference/PreferenceBinding.kt index 6b7be91c1903..c61c6a5c75fa 100644 --- a/packages/SettingsLib/Preference/src/com/android/settingslib/preference/PreferenceBinding.kt +++ b/packages/SettingsLib/Preference/src/com/android/settingslib/preference/PreferenceBinding.kt @@ -17,6 +17,7 @@ package com.android.settingslib.preference import android.content.Context +import androidx.annotation.CallSuper import androidx.preference.DialogPreference import androidx.preference.ListPreference import androidx.preference.Preference @@ -59,6 +60,7 @@ interface PreferenceBinding { * @param preference preference widget created by [createWidget] * @param metadata metadata to apply */ + @CallSuper fun bind(preference: Preference, metadata: PreferenceMetadata) { metadata.apply { preference.key = key diff --git a/packages/SettingsLib/src/com/android/settingslib/PreferenceBindings.kt b/packages/SettingsLib/src/com/android/settingslib/PreferenceBindings.kt new file mode 100644 index 000000000000..a64e8cc07b15 --- /dev/null +++ b/packages/SettingsLib/src/com/android/settingslib/PreferenceBindings.kt @@ -0,0 +1,37 @@ +/* + * Copyright (C) 2025 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +@file:Suppress("ktlint:standard:filename") // remove once we have more bindings + +package com.android.settingslib + +import android.content.Context +import androidx.preference.Preference +import com.android.settingslib.metadata.PreferenceMetadata +import com.android.settingslib.preference.PreferenceBinding + +/** Preference binding for [PrimarySwitchPreference]. */ +interface PrimarySwitchPreferenceBinding : PreferenceBinding { + + override fun createWidget(context: Context): Preference = PrimarySwitchPreference(context) + + override fun bind(preference: Preference, metadata: PreferenceMetadata) { + super.bind(preference, metadata) + (preference as PrimarySwitchPreference).apply { + isChecked = preferenceDataStore!!.getBoolean(key, false) + isSwitchEnabled = isEnabled + } + } +} -- cgit v1.2.3-59-g8ed1b