From 9bd4fecc4f9d007ffbd47ea92da8e46bd497dc2d Mon Sep 17 00:00:00 2001 From: Sagar Date: Tue, 14 Jan 2025 20:38:51 +0530 Subject: [PATCH] Use vectorResource in CallLink fragments. Resolves #13911 --- ...CreateCallLinkBottomSheetDialogFragment.kt | 8 ++-- .../links/details/CallLinkDetailsFragment.kt | 10 +++-- .../src/main/java/org/signal/core/ui/Rows.kt | 44 +++++++++++++++++++ 3 files changed, 55 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/calls/links/create/CreateCallLinkBottomSheetDialogFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/calls/links/create/CreateCallLinkBottomSheetDialogFragment.kt index 79bcdbf37d..6a1bb93953 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/calls/links/create/CreateCallLinkBottomSheetDialogFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/calls/links/create/CreateCallLinkBottomSheetDialogFragment.kt @@ -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 ) diff --git a/app/src/main/java/org/thoughtcrime/securesms/calls/links/details/CallLinkDetailsFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/calls/links/details/CallLinkDetailsFragment.kt index c85e80f519..b7e41052d4 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/calls/links/details/CallLinkDetailsFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/calls/links/details/CallLinkDetailsFragment.kt @@ -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 ) diff --git a/core-ui/src/main/java/org/signal/core/ui/Rows.kt b/core-ui/src/main/java/org/signal/core/ui/Rows.kt index b165948aee..f9d386f232 100644 --- a/core-ui/src/main/java/org/signal/core/ui/Rows.kt +++ b/core-ui/src/main/java/org/signal/core/ui/Rows.kt @@ -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. */