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.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<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
fun PreferenceGroupHeading(
heading: String? = null