diff options
Diffstat (limited to 'wallet/src/main/java/net/taler/wallet/transactions/TransactionPeerFragment.kt')
-rw-r--r-- | wallet/src/main/java/net/taler/wallet/transactions/TransactionPeerFragment.kt | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/wallet/src/main/java/net/taler/wallet/transactions/TransactionPeerFragment.kt b/wallet/src/main/java/net/taler/wallet/transactions/TransactionPeerFragment.kt index 297c937..170c719 100644 --- a/wallet/src/main/java/net/taler/wallet/transactions/TransactionPeerFragment.kt +++ b/wallet/src/main/java/net/taler/wallet/transactions/TransactionPeerFragment.kt @@ -24,6 +24,7 @@ import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.foundation.rememberScrollState +import androidx.compose.foundation.text.ClickableText import androidx.compose.foundation.verticalScroll import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Text @@ -35,12 +36,18 @@ import androidx.compose.ui.graphics.Color import androidx.compose.ui.platform.ComposeView import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.res.colorResource +import androidx.compose.ui.text.SpanStyle +import androidx.compose.ui.text.TextStyle +import androidx.compose.ui.text.buildAnnotatedString +import androidx.compose.ui.text.style.TextAlign +import androidx.compose.ui.text.withStyle import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import net.taler.common.Amount import net.taler.common.toAbsoluteTime import net.taler.wallet.R import net.taler.wallet.compose.TalerSurface +import net.taler.wallet.getAttrColor import net.taler.wallet.peer.TransactionPeerPullCreditComposable import net.taler.wallet.peer.TransactionPeerPullDebitComposable import net.taler.wallet.peer.TransactionPeerPushCreditComposable @@ -125,3 +132,34 @@ fun TransactionInfoComposable(label: String, info: String) { fontSize = 24.sp, ) } + +@Composable +fun TransactionLinkComposable(label: String, info: String, onClick: () -> Unit) { + Text( + modifier = Modifier.padding(top = 16.dp, start = 16.dp, end = 16.dp), + text = label, + style = MaterialTheme.typography.bodyMedium, + ) + val context = LocalContext.current + val linkColor = Color(context.getAttrColor(android.R.attr.textColorLink)) + val annotatedString = buildAnnotatedString { + pushStringAnnotation(tag = "url", annotation = info) + withStyle(style = SpanStyle(color = linkColor)) { + append(info) + } + pop() + } + ClickableText( + modifier = Modifier.padding(top = 8.dp, start = 16.dp, end = 16.dp, bottom = 16.dp), + text = annotatedString, + style = TextStyle(fontSize = 24.sp, textAlign = TextAlign.Center), + ) { offset -> + annotatedString.getStringAnnotations( + tag = "url", + start = offset, + end = offset, + ).firstOrNull()?.let { + onClick() + } + } +}
\ No newline at end of file |