Add: PrefsGroup list-based constructor

This commit is contained in:
machiav3lli 2022-09-17 02:29:03 +02:00
parent 07e9eb83dc
commit 4b55c4f515

View File

@ -13,11 +13,15 @@ import androidx.compose.material3.Surface
import androidx.compose.material3.Text import androidx.compose.material3.Text
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.CompositionLocalProvider import androidx.compose.runtime.CompositionLocalProvider
import androidx.compose.runtime.mutableStateListOf
import androidx.compose.runtime.remember
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.Color
import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp import androidx.compose.ui.unit.sp
import com.machiav3lli.fdroid.content.Preferences
import com.machiav3lli.fdroid.content.PrefsDependencies
@Composable @Composable
fun PreferenceGroup( fun PreferenceGroup(
@ -37,6 +41,37 @@ fun PreferenceGroup(
} }
} }
@Composable
fun PreferenceGroup(
modifier: Modifier = Modifier,
heading: String? = null,
keys: List<Preferences.Key<*>>,
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 @Composable
fun PreferenceGroupHeading( fun PreferenceGroupHeading(
heading: String? = null heading: String? = null