aboutsummaryrefslogtreecommitdiff
path: root/main.qml
diff options
context:
space:
mode:
authorrating89us <45968869+rating89us@users.noreply.github.com>2020-10-17 11:57:37 +0200
committerrating89us <rating89us@rating89us.com>2020-10-17 12:11:13 +0200
commit25ca0811099ad3485e47155bc23916da270a5604 (patch)
treeee609407293abd2021afaa21b4106b4772c6427c /main.qml
parentcb1f3ad0ce228b9c272df76838754e303b074a32 (diff)
downloadmonzero-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.qml155
1 files changed, 63 insertions, 92 deletions
diff --git a/main.qml b/main.qml
index c849939c..b5f8dcd3 100644
--- a/main.qml
+++ b/main.qml
@@ -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
}