From 4b55c4f515d87041b6a56f54366d6756f758e1a2 Mon Sep 17 00:00:00 2001 From: machiav3lli Date: Sat, 17 Sep 2022 02:29:03 +0200 Subject: [PATCH] Add: PrefsGroup list-based constructor --- .../ui/compose/components/prefs/PrefsGroup.kt | 35 +++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/src/main/kotlin/com/machiav3lli/fdroid/ui/compose/components/prefs/PrefsGroup.kt b/src/main/kotlin/com/machiav3lli/fdroid/ui/compose/components/prefs/PrefsGroup.kt index 40d4c4c8..fdd3575d 100644 --- a/src/main/kotlin/com/machiav3lli/fdroid/ui/compose/components/prefs/PrefsGroup.kt +++ b/src/main/kotlin/com/machiav3lli/fdroid/ui/compose/components/prefs/PrefsGroup.kt @@ -13,11 +13,15 @@ import androidx.compose.material3.Surface import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.CompositionLocalProvider +import androidx.compose.runtime.mutableStateListOf +import androidx.compose.runtime.remember import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp +import com.machiav3lli.fdroid.content.Preferences +import com.machiav3lli.fdroid.content.PrefsDependencies @Composable fun PreferenceGroup( @@ -37,6 +41,37 @@ fun PreferenceGroup( } } +@Composable +fun PreferenceGroup( + modifier: Modifier = Modifier, + heading: String? = null, + keys: List>, + onPrefDialog: (Any) -> Unit, +) { + val size = keys.size + val enabledList = remember() { + mutableStateListOf( + *keys.filter { PrefsDependencies[it]?.let { Preferences[it] } ?: true }.toTypedArray() + ) + } + + PreferenceGroup( + modifier = modifier, + heading = heading + ) { + keys.forEachIndexed { index, item -> + PrefsBuilder( + item, + onPrefDialog, + enabledList, + index, + size + ) + if (index < size - 1) Spacer(modifier = Modifier.height(4.dp)) + } + } +} + @Composable fun PreferenceGroupHeading( heading: String? = null