diff options
| author | rating89us <45968869+rating89us@users.noreply.github.com> | 2020-10-17 11:57:37 +0200 |
|---|---|---|
| committer | rating89us <rating89us@rating89us.com> | 2020-10-17 12:11:13 +0200 |
| commit | 25ca0811099ad3485e47155bc23916da270a5604 (patch) | |
| tree | ee609407293abd2021afaa21b4106b4772c6427c /main.qml | |
| parent | cb1f3ad0ce228b9c272df76838754e303b074a32 (diff) | |
| download | monzero-gui-25ca0811099ad3485e47155bc23916da270a5604.tar.gz monzero-gui-25ca0811099ad3485e47155bc23916da270a5604.tar.xz monzero-gui-25ca0811099ad3485e47155bc23916da270a5604.zip | |
transfer: new TxConfirmationDialog
Diffstat (limited to 'main.qml')
| -rw-r--r-- | main.qml | 155 |
1 files changed, 63 insertions, 92 deletions
@@ -65,7 +65,6 @@ ApplicationWindow { property var currentWallet; property bool disconnected: currentWallet ? currentWallet.disconnected : false property var transaction; - property var transactionDescription; property var walletPassword property int restoreHeight:0 property bool daemonSynced: false @@ -508,16 +507,30 @@ ApplicationWindow { } function onDeviceButtonRequest(code){ - prevSplashText = splash.messageText; - splashDisplayedBeforeButtonRequest = splash.visible; - appWindow.showProcessingSplash(qsTr("Please proceed to the device...")); + if (txConfirmationPopup.visible) { + txConfirmationPopup.bottomTextAnimation.running = true + if (!txConfirmationPopup.errorText.visible) { + txConfirmationPopup.bottomText.text = qsTr("Please confirm transaction on the device...") + translationManager.emptyString; + } else { + txConfirmationPopup.bottomText.text = qsTr("Please proceed to the device...") + translationManager.emptyString; + } + } else { + prevSplashText = splash.messageText; + splashDisplayedBeforeButtonRequest = splash.visible; + appWindow.showProcessingSplash(qsTr("Please proceed to the device...")); + } } function onDeviceButtonPressed(){ - if (splashDisplayedBeforeButtonRequest){ - appWindow.showProcessingSplash(prevSplashText); + if (txConfirmationPopup.visible) { + txConfirmationPopup.bottomTextAnimation.running = false; + txConfirmationPopup.bottomText.text = qsTr("Signing transaction in the device...") + translationManager.emptyString; } else { - hideProcessingSplash(); + if (splashDisplayedBeforeButtonRequest){ + appWindow.showProcessingSplash(prevSplashText); + } else { + hideProcessingSplash(); + } } } @@ -811,51 +824,33 @@ ApplicationWindow { function onTransactionCreated(pendingTransaction,address,paymentId,mixinCount){ console.log("Transaction created"); - hideProcessingSplash(); + txConfirmationPopup.bottomText.text = ""; transaction = pendingTransaction; // validate address; if (transaction.status !== PendingTransaction.Status_Ok) { console.error("Can't create transaction: ", transaction.errorString); - informationPopup.title = qsTr("Error") + translationManager.emptyString; - if (currentWallet.connected() == Wallet.ConnectionStatus_WrongVersion) - informationPopup.text = qsTr("Can't create transaction: Wrong daemon version: ") + transaction.errorString - else - informationPopup.text = qsTr("Can't create transaction: ") + transaction.errorString - informationPopup.icon = StandardIcon.Critical - informationPopup.onCloseCallback = null - informationPopup.open(); + if (currentWallet.connected() == Wallet.ConnectionStatus_WrongVersion) { + txConfirmationPopup.errorText.text = qsTr("Can't create transaction: Wrong daemon version: ") + transaction.errorString + } else { + txConfirmationPopup.errorText.text = qsTr("Can't create transaction: ") + transaction.errorString + } // deleting transaction object, we don't want memleaks currentWallet.disposeTransaction(transaction); } else if (transaction.txCount == 0) { - informationPopup.title = qsTr("Error") + translationManager.emptyString - informationPopup.text = qsTr("No unmixable outputs to sweep") + translationManager.emptyString - informationPopup.icon = StandardIcon.Information - informationPopup.onCloseCallback = null - informationPopup.open() + console.error("Can't create transaction: ", transaction.errorString); + txConfirmationPopup.errorText.text = qsTr("No unmixable outputs to sweep") + translationManager.emptyString // deleting transaction object, we don't want memleaks currentWallet.disposeTransaction(transaction); } else { console.log("Transaction created, amount: " + walletManager.displayAmount(transaction.amount) + ", fee: " + walletManager.displayAmount(transaction.fee)); - // here we show confirmation popup; - transactionConfirmationPopup.title = qsTr("Please confirm transaction:\n") + translationManager.emptyString; - transactionConfirmationPopup.text = ""; - transactionConfirmationPopup.text += (address === "" ? "" : (qsTr("Address: ") + address)); - transactionConfirmationPopup.text += (paymentId === "" ? "" : (qsTr("\nPayment ID: ") + paymentId)); - transactionConfirmationPopup.text += qsTr("\n\nAmount: ") + walletManager.displayAmount(transaction.amount); - transactionConfirmationPopup.text += qsTr("\nFee: ") + walletManager.displayAmount(transaction.fee); - transactionConfirmationPopup.text += qsTr("\nRingsize: ") + (mixinCount + 1); - transactionConfirmationPopup.text += qsTr("\n\nNumber of transactions: ") + transaction.txCount - transactionConfirmationPopup.text += (transactionDescription === "" ? "" : (qsTr("\nDescription: ") + transactionDescription)) - for (var i = 0; i < transaction.subaddrIndices.length; ++i){ - transactionConfirmationPopup.text += qsTr("\nSpending address index: ") + transaction.subaddrIndices[i]; - } - - transactionConfirmationPopup.text += translationManager.emptyString; - transactionConfirmationPopup.icon = StandardIcon.Question - transactionConfirmationPopup.open() + // here we update txConfirmationPopup + txConfirmationPopup.transactionAmount = Utils.removeTrailingZeros(walletManager.displayAmount(transaction.amount)); + txConfirmationPopup.transactionFee = Utils.removeTrailingZeros(walletManager.displayAmount(transaction.fee)); + txConfirmationPopup.confirmButton.text = viewOnly ? qsTr("Save as file") : qsTr("Confirm") + translationManager.emptyString; + txConfirmationPopup.confirmButton.rightIcon = viewOnly ? "" : "qrc:///images/rightArrow.png" } } @@ -869,12 +864,12 @@ ApplicationWindow { ", mixins: ", mixinCount, ", priority: ", priority, ", description: ", description); - - var splashMsg = qsTr("Creating transaction..."); - splashMsg += appWindow.currentWallet.isLedger() ? qsTr("\n\nPlease check your hardware wallet –\nyour input may be required.") : ""; - showProcessingSplash(splashMsg); - - transactionDescription = description; + txConfirmationPopup.bottomTextAnimation.running = false + txConfirmationPopup.bottomText.text = qsTr("Creating transaction...") + translationManager.emptyString; + txConfirmationPopup.transactionAddress = address; + txConfirmationPopup.transactionAmount = Utils.removeTrailingZeros(amount); + txConfirmationPopup.transactionPriority = priority; + txConfirmationPopup.transactionDescription = description; // validate amount; if (amount !== "(all)") { @@ -882,31 +877,21 @@ ApplicationWindow { console.log("integer amount: ", amountxmr); console.log("integer unlocked", currentWallet.unlockedBalance()) if (amountxmr <= 0) { - hideProcessingSplash() - informationPopup.title = qsTr("Error") + translationManager.emptyString; - informationPopup.text = qsTr("Amount is wrong: expected number from %1 to %2") - .arg(walletManager.displayAmount(0)) - .arg(walletManager.displayAmount(currentWallet.unlockedBalance())) - + translationManager.emptyString - - informationPopup.icon = StandardIcon.Critical - informationPopup.onCloseCallback = null - informationPopup.open() + txConfirmationPopup.errorText.text = qsTr("Amount is wrong: expected number from %1 to %2") + .arg(walletManager.displayAmount(0)) + .arg(walletManager.displayAmount(currentWallet.unlockedBalance())) + + translationManager.emptyString; return; } else if (amountxmr > currentWallet.unlockedBalance()) { - hideProcessingSplash() - informationPopup.title = qsTr("Error") + translationManager.emptyString; - informationPopup.text = qsTr("Insufficient funds. Unlocked balance: %1") - .arg(walletManager.displayAmount(currentWallet.unlockedBalance())) - + translationManager.emptyString - - informationPopup.icon = StandardIcon.Critical - informationPopup.onCloseCallback = null - informationPopup.open() + txConfirmationPopup.errorText.text = qsTr("Insufficient funds. Unlocked balance: %1") + .arg(walletManager.displayAmount(currentWallet.unlockedBalance())) + + translationManager.emptyString; return; } } + txConfirmationPopup.open(); + if (amount === "(all)") currentWallet.createTransactionAllAsync(address, paymentId, mixinCount, priority); else @@ -934,40 +919,27 @@ ApplicationWindow { function handleSweepUnmixable() { console.log("Creating transaction: ") + txConfirmationPopup.sweepUnmixable = true; transaction = currentWallet.createSweepUnmixableTransaction(); if (transaction.status !== PendingTransaction.Status_Ok) { console.error("Can't create transaction: ", transaction.errorString); - informationPopup.title = qsTr("Error") + translationManager.emptyString; - informationPopup.text = qsTr("Can't create transaction: ") + transaction.errorString - informationPopup.icon = StandardIcon.Critical - informationPopup.onCloseCallback = null - informationPopup.open(); + txConfirmationPopup.errorText.text = qsTr("Can't create transaction: ") + transaction.errorString + translationManager.emptyString // deleting transaction object, we don't want memleaks currentWallet.disposeTransaction(transaction); } else if (transaction.txCount == 0) { - informationPopup.title = qsTr("Error") + translationManager.emptyString - informationPopup.text = qsTr("No unmixable outputs to sweep") + translationManager.emptyString - informationPopup.icon = StandardIcon.Information - informationPopup.onCloseCallback = null - informationPopup.open() + console.error("No unmixable outputs to sweep"); + txConfirmationPopup.errorText.text = qsTr("No unmixable outputs to sweep") + translationManager.emptyString // deleting transaction object, we don't want memleaks currentWallet.disposeTransaction(transaction); } else { console.log("Transaction created, amount: " + walletManager.displayAmount(transaction.amount) + ", fee: " + walletManager.displayAmount(transaction.fee)); - - // here we show confirmation popup; - - transactionConfirmationPopup.title = qsTr("Confirmation") + translationManager.emptyString - transactionConfirmationPopup.text = qsTr("Please confirm transaction:\n") - + qsTr("\n\nAmount: ") + walletManager.displayAmount(transaction.amount) - + qsTr("\nFee: ") + walletManager.displayAmount(transaction.fee) - + translationManager.emptyString - transactionConfirmationPopup.icon = StandardIcon.Question - transactionConfirmationPopup.open() + txConfirmationPopup.transactionAmount = Utils.removeTrailingZeros(walletManager.displayAmount(transaction.amount)); + txConfirmationPopup.transactionFee = Utils.removeTrailingZeros(walletManager.displayAmount(transaction.fee)); // committing transaction } + txConfirmationPopup.open(); } // called after user confirms transaction @@ -985,13 +957,10 @@ ApplicationWindow { // Store to file transaction.setFilename(path); } - - appWindow.showProcessingSplash(qsTr("Sending transaction ...")); currentWallet.commitTransactionAsync(transaction); } function onTransactionCommitted(success, transaction, txid) { - hideProcessingSplash(); if (!success) { console.log("Error committing transaction: " + transaction.errorString); informationPopup.title = qsTr("Error") + translationManager.emptyString @@ -1000,13 +969,14 @@ ApplicationWindow { informationPopup.onCloseCallback = null; informationPopup.open(); } else { - if (transactionDescription.length > 0) { + if (txConfirmationPopup.transactionDescription.length > 0) { for (var i = 0; i < txid.length; ++i) - currentWallet.setUserNote(txid[i], transactionDescription); + currentWallet.setUserNote(txid[i], txConfirmationPopup.transactionDescription); } // Clear tx fields middlePanel.transferView.clearFields() + txConfirmationPopup.clearFields() successfulTxPopup.open(txid) } currentWallet.refresh() @@ -1458,10 +1428,11 @@ ApplicationWindow { } } - // Confrirmation aka question dialog - StandardDialog { + // Transaction confirmation popup + TxConfirmationDialog { + // dynamically change onclose handler + id: txConfirmationPopup z: parent.z + 1 - id: transactionConfirmationPopup onAccepted: { var handleAccepted = function() { // Save transaction to file if view only wallet @@ -1767,7 +1738,7 @@ ApplicationWindow { anchors.fill: blurredArea source: blurredArea radius: 64 - visible: passwordDialog.visible || inputDialog.visible || splash.visible || updateDialog.visible || devicePassphraseDialog.visible || successfulTxPopup.visible + visible: passwordDialog.visible || inputDialog.visible || splash.visible || updateDialog.visible || devicePassphraseDialog.visible || txConfirmationPopup.visible || successfulTxPopup.visible } |
