From b3661777827a0e28ebbea70fb8b2ee15dac8be89 Mon Sep 17 00:00:00 2001
From: Thauan Amorim <62410807+ThauanAmorim@users.noreply.github.com>
Date: Thu, 13 Feb 2025 04:05:11 -0300
Subject: [PATCH] add show transaction as qr button to signed transaction tab
when offline
* [feature/1630] Add QR code button on signed transaction screen
* [feature/1630] Button positioning improvements
* [feature/1630] Added owner to qrDisplayDialog
---
.../transaction/HeadersController.java | 21 +++++++++++++++++++
.../sparrow/transaction/headers.fxml | 5 +++++
2 files changed, 26 insertions(+)
diff --git a/src/main/java/com/sparrowwallet/sparrow/transaction/HeadersController.java b/src/main/java/com/sparrowwallet/sparrow/transaction/HeadersController.java
index 2a7f2912..84bcee49 100644
--- a/src/main/java/com/sparrowwallet/sparrow/transaction/HeadersController.java
+++ b/src/main/java/com/sparrowwallet/sparrow/transaction/HeadersController.java
@@ -9,6 +9,7 @@ import com.sparrowwallet.drongo.psbt.PSBT;
import com.sparrowwallet.drongo.psbt.PSBTInput;
import com.sparrowwallet.drongo.uri.BitcoinURI;
import com.sparrowwallet.drongo.wallet.*;
+import com.sparrowwallet.hummingbird.UR;
import com.sparrowwallet.hummingbird.registry.CryptoPSBT;
import com.sparrowwallet.sparrow.AppServices;
import com.sparrowwallet.sparrow.EventManager;
@@ -227,6 +228,9 @@ public class HeadersController extends TransactionFormController implements Init
@FXML
private Button broadcastButton;
+ @FXML
+ private Button showTransactionButton;
+
@FXML
private Button saveFinalButton;
@@ -461,6 +465,8 @@ public class HeadersController extends TransactionFormController implements Init
broadcastProgressBar.visibleProperty().bind(signaturesProgressBar.visibleProperty().not());
broadcastButton.managedProperty().bind(broadcastButton.visibleProperty());
+ showTransactionButton.managedProperty().bind(showTransactionButton.visibleProperty());
+ showTransactionButton.visibleProperty().bind(broadcastButton.visibleProperty().not());
saveFinalButton.managedProperty().bind(saveFinalButton.visibleProperty());
saveFinalButton.visibleProperty().bind(broadcastButton.visibleProperty().not());
broadcastButton.visibleProperty().bind(AppServices.onlineProperty());
@@ -1255,6 +1261,21 @@ public class HeadersController extends TransactionFormController implements Init
broadcastTransactionService.start();
}
+ public void showTransaction(ActionEvent event) {
+ try {
+ Transaction transaction = headersForm.getPsbt().extractTransaction();
+ byte[] txBytes = transaction.bitcoinSerialize();
+ UR ur = UR.fromBytes(txBytes);
+ BBQR bbqr = new BBQR(BBQRType.TXN, txBytes);
+ QRDisplayDialog qrDisplayDialog = new QRDisplayDialog(ur, bbqr, false, false, false);
+ qrDisplayDialog.initOwner(showTransactionButton.getScene().getWindow());
+ qrDisplayDialog.showAndWait();
+ } catch (Exception exception) {
+ log.error("Error creating UR", exception);
+ AppServices.showErrorDialog("Error displaying transaction QR code", exception.getMessage());
+ }
+ }
+
public void saveFinalTransaction(ActionEvent event) {
Stage window = new Stage();
diff --git a/src/main/resources/com/sparrowwallet/sparrow/transaction/headers.fxml b/src/main/resources/com/sparrowwallet/sparrow/transaction/headers.fxml
index b6b92ac6..b1cfdcbd 100644
--- a/src/main/resources/com/sparrowwallet/sparrow/transaction/headers.fxml
+++ b/src/main/resources/com/sparrowwallet/sparrow/transaction/headers.fxml
@@ -285,6 +285,11 @@
+