taler-android

Android apps for GNU Taler (wallet, PoS, cashier)
Log | Files | Refs | README | LICENSE

commit 67c5f6813ae54148622f522202612557fa82b2f2
parent 4a202140b604b6a40574b009d15bc70bf19e2865
Author: Florian Dold <dold@taler.net>
Date:   Mon, 10 Aug 2026 02:20:08 +0200

Add deposit payto URI copy menu

Diffstat:
Mwallet/src/main/java/net/taler/wallet/transactions/TransactionDetailScreen.kt | 35+++++++++++++++++++++++++++++++++++
1 file changed, 35 insertions(+), 0 deletions(-)

diff --git a/wallet/src/main/java/net/taler/wallet/transactions/TransactionDetailScreen.kt b/wallet/src/main/java/net/taler/wallet/transactions/TransactionDetailScreen.kt @@ -31,8 +31,12 @@ import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.verticalScroll import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.ContentCopy +import androidx.compose.material.icons.filled.MoreVert import androidx.compose.material3.ButtonDefaults +import androidx.compose.material3.DropdownMenu +import androidx.compose.material3.DropdownMenuItem import androidx.compose.material3.Icon +import androidx.compose.material3.IconButton import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Surface import androidx.compose.material3.Text @@ -106,6 +110,13 @@ fun TransactionDetailScreen( } val t by transactionManager.selectedTransaction.collectAsStateLifecycleAware() + val targetPaytoUri = if (destination is WalletDestination.TransactionDeposit) { + (t as? TransactionDeposit)?.targetPaytoUri + } else { + null + } + var showMenu by remember(targetPaytoUri) { mutableStateOf(false) } + val copyPaytoUri = stringResource(R.string.copy_payto_uri) GlobalScaffold( model = model, @@ -146,6 +157,30 @@ fun TransactionDetailScreen( } Text(title) }, + actions = { + if (targetPaytoUri != null) { + Box { + IconButton(onClick = { showMenu = true }) { + Icon( + Icons.Default.MoreVert, + contentDescription = stringResource(R.string.menu), + ) + } + DropdownMenu( + expanded = showMenu, + onDismissRequest = { showMenu = false }, + ) { + DropdownMenuItem( + text = { Text(copyPaytoUri) }, + onClick = { + showMenu = false + copyToClipBoard(context, copyPaytoUri, targetPaytoUri) + }, + ) + } + } + } + }, onNavigateBack = onNavigateBack, ) { paddingValues -> if (t == null) {