From b1b3d63bf74df6e273bb57eb23dc20e946353769 Mon Sep 17 00:00:00 2001 From: machiav3lli Date: Sat, 17 Sep 2022 02:37:54 +0200 Subject: [PATCH] Add: PrefsBuilder (inclusive BooleanPref handler) --- .../compose/components/prefs/PrefsBuilder.kt | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 src/main/kotlin/com/machiav3lli/fdroid/ui/compose/components/prefs/PrefsBuilder.kt diff --git a/src/main/kotlin/com/machiav3lli/fdroid/ui/compose/components/prefs/PrefsBuilder.kt b/src/main/kotlin/com/machiav3lli/fdroid/ui/compose/components/prefs/PrefsBuilder.kt new file mode 100644 index 00000000..199da5fa --- /dev/null +++ b/src/main/kotlin/com/machiav3lli/fdroid/ui/compose/components/prefs/PrefsBuilder.kt @@ -0,0 +1,29 @@ +package com.machiav3lli.fdroid.ui.compose.components.prefs + +import androidx.compose.runtime.Composable +import androidx.compose.runtime.snapshots.SnapshotStateList +import com.machiav3lli.fdroid.content.Preferences +import com.machiav3lli.fdroid.content.PrefsDependencies + +@Composable +fun PrefsBuilder( + prefKey: Preferences.Key<*>, + onDialogPref: (Any) -> Unit, + enabledSetState: SnapshotStateList>, + index: Int, + size: Int +) { + when (prefKey.default.value) { + is Boolean -> SwitchPreference( + prefKey = prefKey as Preferences.Key, + index = index, + groupSize = size, + enabled = enabledSetState.contains(prefKey) + ) { + val dependents = + PrefsDependencies.entries.filter { it.value == prefKey }.map { it.key }.toSet() + if (it) enabledSetState.addAll(dependents) + else enabledSetState.removeAll(dependents) + } + } +} \ No newline at end of file