feat: support painterResource in SocialItem

This commit is contained in:
Ushie 2022-10-06 22:26:48 +03:00
parent 31dce1a0f8
commit 0533381dd6
No known key found for this signature in database
GPG Key ID: 0EF73F1CA38B2D5F

View File

@ -1,9 +1,8 @@
package app.revanced.manager.ui.component
import androidx.annotation.DrawableRes
import androidx.annotation.StringRes
import androidx.compose.foundation.clickable
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.Code
import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.Icon
import androidx.compose.material3.ListItem
@ -11,32 +10,39 @@ import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.vector.ImageVector
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import app.revanced.manager.R
import app.revanced.manager.util.ghOrganization
import app.revanced.manager.util.openUrl
@OptIn(ExperimentalMaterial3Api::class)
@Composable
fun SocialItem(@StringRes label: Int, vec: ImageVector, fn: () -> Unit) {
val rsc = stringResource(label)
fun SocialItem(@StringRes label: Int, imageVector: ImageVector? = null, fn: () -> Unit) {
ListItem(
modifier = Modifier.clickable { fn() },
leadingContent = {
Icon(
imageVector = vec,
contentDescription = rsc
)
if (imageVector != null) {
Icon(
imageVector = imageVector,
contentDescription = stringResource(label)
)
}
},
headlineText = { Text(rsc) }
headlineText = { Text(stringResource(label)) }
)
}
@OptIn(ExperimentalMaterial3Api::class)
@Composable
fun SocialItemPreview() {
val ctx = LocalContext.current.applicationContext
SocialItem(R.string.github, Icons.Default.Code) {
ctx.openUrl(ghOrganization)
}
fun SocialItem(@StringRes label: Int, @DrawableRes painterResource: Int? = null, fn: () -> Unit) {
ListItem(
modifier = Modifier.clickable { fn() },
leadingContent = {
if (painterResource != null) {
Icon(
painter = painterResource(painterResource),
contentDescription = stringResource(label)
)
}
},
headlineText = { Text(stringResource(label)) }
)
}