diff options
author | 2025-01-16 16:27:19 +0800 | |
---|---|---|
committer | 2025-01-16 17:12:40 +0800 | |
commit | ac4da4a92cd0fedcbd2e13c84edc57b4eb831aec (patch) | |
tree | febb70c9b9c92ed4756f35b32d71582a9a6a534c | |
parent | 6c5c933d04b7b1894463e5308668263906be25fa (diff) |
[Catalyst] Introduce PrimarySwitchPreferenceBinding
Bug: 335132588
Flag: com.android.settings.flags.catalyst
Test: manual
Change-Id: Ia953cecee012945392fd2822e45f15c914f3e441
3 files changed, 42 insertions, 0 deletions
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 + } + } +} |