Use vectorResource in CallLink fragments.

Resolves #13911
This commit is contained in:
Sagar 2025-01-14 20:38:51 +05:30 committed by Greyson Parrelli
parent dea2094e3e
commit 9bd4fecc4f
3 changed files with 55 additions and 7 deletions

View file

@ -25,9 +25,11 @@ import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.vector.ImageVector
import androidx.compose.ui.res.dimensionResource
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.res.vectorResource
import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.unit.dp
import androidx.core.app.ShareCompat
@ -299,19 +301,19 @@ private fun CreateCallLinkBottomSheetContent(
Rows.TextRow(
text = stringResource(id = R.string.CreateCallLinkBottomSheetDialogFragment__share_link_via_signal),
icon = painterResource(id = R.drawable.symbol_forward_24),
icon = ImageVector.vectorResource(id = R.drawable.symbol_forward_24),
onClick = onShareViaSignalClicked
)
Rows.TextRow(
text = stringResource(id = R.string.CreateCallLinkBottomSheetDialogFragment__copy_link),
icon = painterResource(id = R.drawable.symbol_copy_android_24),
icon = ImageVector.vectorResource(id = R.drawable.symbol_copy_android_24),
onClick = onCopyLinkClicked
)
Rows.TextRow(
text = stringResource(id = R.string.CreateCallLinkBottomSheetDialogFragment__share_link),
icon = painterResource(id = R.drawable.symbol_share_android_24),
icon = ImageVector.vectorResource(id = R.drawable.symbol_share_android_24),
onClick = onShareLinkClicked
)

View file

@ -17,8 +17,10 @@ import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
import androidx.compose.runtime.remember
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.vector.ImageVector
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.res.vectorResource
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import androidx.core.app.ActivityCompat
@ -316,25 +318,25 @@ private fun CallLinkDetails(
Rows.TextRow(
text = stringResource(id = R.string.CreateCallLinkBottomSheetDialogFragment__share_link_via_signal),
icon = painterResource(id = R.drawable.symbol_forward_24),
icon = ImageVector.vectorResource(id = R.drawable.symbol_forward_24),
onClick = callback::onShareLinkViaSignalClicked
)
Rows.TextRow(
text = stringResource(id = R.string.CreateCallLinkBottomSheetDialogFragment__copy_link),
icon = painterResource(id = R.drawable.symbol_copy_android_24),
icon = ImageVector.vectorResource(id = R.drawable.symbol_copy_android_24),
onClick = callback::onCopyClicked
)
Rows.TextRow(
text = stringResource(id = R.string.CallLinkDetailsFragment__share_link),
icon = painterResource(id = R.drawable.symbol_link_24),
icon = ImageVector.vectorResource(id = R.drawable.symbol_link_24),
onClick = callback::onShareClicked
)
Rows.TextRow(
text = stringResource(id = R.string.CallLinkDetailsFragment__delete_call_link),
icon = painterResource(id = R.drawable.symbol_trash_24),
icon = ImageVector.vectorResource(id = R.drawable.symbol_trash_24),
foregroundTint = MaterialTheme.colorScheme.error,
onClick = callback::onDeleteClicked
)

View file

@ -33,6 +33,7 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.alpha
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.painter.Painter
import androidx.compose.ui.graphics.vector.ImageVector
import androidx.compose.ui.res.dimensionResource
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.text.TextStyle
@ -198,6 +199,49 @@ object Rows {
)
}
/**
* Text row that positions [text] and optional [label] in a [TextAndLabel] to the side of an [icon] using ImageVector.
*/
@Composable
fun TextRow(
text: String,
icon: ImageVector?,
modifier: Modifier = Modifier,
iconModifier: Modifier = Modifier,
label: String? = null,
foregroundTint: Color = MaterialTheme.colorScheme.onSurface,
onClick: (() -> Unit)? = null,
onLongClick: (() -> Unit)? = null,
enabled: Boolean = true
) {
TextRow(
text = {
TextAndLabel(
text = text,
label = label,
textColor = foregroundTint,
enabled = enabled
)
},
icon = if (icon != null) {
{
Icon(
imageVector = icon,
contentDescription = null,
tint = foregroundTint,
modifier = iconModifier
)
}
} else {
null
},
modifier = modifier,
onClick = onClick,
onLongClick = onLongClick,
enabled = enabled
)
}
/**
* Customizable text row that allows [text] and [icon] to be provided as composable functions instead of primitives.
*/