summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Jacky Wang <jiannan@google.com> 2025-01-16 16:27:19 +0800
committer Jacky Wang <jiannan@google.com> 2025-01-16 17:12:40 +0800
commitac4da4a92cd0fedcbd2e13c84edc57b4eb831aec (patch)
treefebb70c9b9c92ed4756f35b32d71582a9a6a534c
parent6c5c933d04b7b1894463e5308668263906be25fa (diff)
[Catalyst] Introduce PrimarySwitchPreferenceBinding
Bug: 335132588 Flag: com.android.settings.flags.catalyst Test: manual Change-Id: Ia953cecee012945392fd2822e45f15c914f3e441
-rw-r--r--packages/SettingsLib/Android.bp3
-rw-r--r--packages/SettingsLib/Preference/src/com/android/settingslib/preference/PreferenceBinding.kt2
-rw-r--r--packages/SettingsLib/src/com/android/settingslib/PreferenceBindings.kt37
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
+ }
+ }
+}