Update: PermissionItems' drawable placeholder icon with compose

This commit is contained in:
machiav3lli 2022-10-05 02:47:57 +02:00
parent 84017bb9db
commit 7bdaba5ac0

View File

@ -6,6 +6,7 @@ import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size
import androidx.compose.foundation.layout.wrapContentSize import androidx.compose.foundation.layout.wrapContentSize
import androidx.compose.material3.Icon import androidx.compose.material3.Icon
import androidx.compose.material3.MaterialTheme import androidx.compose.material3.MaterialTheme
@ -20,6 +21,8 @@ import androidx.compose.ui.unit.dp
import coil.compose.rememberAsyncImagePainter import coil.compose.rememberAsyncImagePainter
import com.machiav3lli.fdroid.R import com.machiav3lli.fdroid.R
import com.machiav3lli.fdroid.entity.PermissionsType import com.machiav3lli.fdroid.entity.PermissionsType
import com.machiav3lli.fdroid.ui.compose.icons.Phosphor
import com.machiav3lli.fdroid.ui.compose.icons.phosphor.ShieldStar
import com.machiav3lli.fdroid.utility.getLabels import com.machiav3lli.fdroid.utility.getLabels
@Composable @Composable
@ -30,6 +33,11 @@ fun PermissionsItem(
) { ) {
val context = LocalContext.current val context = LocalContext.current
val pm = context.packageManager val pm = context.packageManager
val painter = if (permissionsType.group != null && permissionsType.group.icon != 0) {
rememberAsyncImagePainter(permissionsType.group.loadUnbadgedIcon(pm))
} else {
null
}
Row( Row(
modifier = modifier modifier = modifier
@ -44,14 +52,16 @@ fun PermissionsItem(
horizontalArrangement = Arrangement.spacedBy(8.dp), horizontalArrangement = Arrangement.spacedBy(8.dp),
verticalAlignment = Alignment.Top verticalAlignment = Alignment.Top
) { ) {
Icon( if (painter != null)
painter = rememberAsyncImagePainter( Icon(
model = if (permissionsType.group != null && permissionsType.group.icon != 0) { painter = painter,
permissionsType.group.loadUnbadgedIcon(pm) contentDescription = stringResource(
} else { id = permissionsType.group?.descriptionRes ?: R.string.unknown
null )
} ?: (R.drawable.ic_perm_device_information) )
), else Icon(
modifier = Modifier.size(24.dp),
imageVector = Phosphor.ShieldStar,
contentDescription = stringResource( contentDescription = stringResource(
id = permissionsType.group?.descriptionRes ?: R.string.unknown id = permissionsType.group?.descriptionRes ?: R.string.unknown
) )