aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormoneromooo.monero <moneromooo.monero@users.noreply.github.com>2016-11-08 20:23:50 +0000
committermoneromooo.monero <moneromooo.monero@users.noreply.github.com>2016-11-12 19:24:13 +0000
commit2143392b84e089319decee65e63c2376e6fdffd4 (patch)
tree55b1f905ea17a6f79cc6ff15ed27522f22b20ee1
parentb8ea2ffc745edaa250f2da5b65b121469d5045df (diff)
downloadmonzero-gui-2143392b84e089319decee65e63c2376e6fdffd4.tar.gz
monzero-gui-2143392b84e089319decee65e63c2376e6fdffd4.tar.xz
monzero-gui-2143392b84e089319decee65e63c2376e6fdffd4.zip
Add a button to sweep unmixable outputs
-rw-r--r--MiddlePanel.qml5
-rw-r--r--main.qml40
-rw-r--r--pages/Transfer.qml21
-rw-r--r--src/libwalletqt/Wallet.cpp8
-rw-r--r--src/libwalletqt/Wallet.h5
5 files changed, 77 insertions, 2 deletions
diff --git a/MiddlePanel.qml b/MiddlePanel.qml
index 7080e338..74c731c8 100644
--- a/MiddlePanel.qml
+++ b/MiddlePanel.qml
@@ -52,6 +52,7 @@ Rectangle {
signal paymentClicked(string address, string paymentId, string amount, int mixinCount, int priority, string description)
+ signal sweepUnmixableClicked()
signal generatePaymentIdInvoked()
signal checkPaymentClicked(string address, string txid, string txkey);
@@ -308,5 +309,9 @@ Rectangle {
console.log("MiddlePanel: paymentClicked")
paymentClicked(address, paymentId, amount, mixinCount, priority, description)
}
+ onSweepUnmixableClicked : {
+ console.log("MiddlePanel: sweepUnmixableClicked")
+ sweepUnmixableClicked()
+ }
}
}
diff --git a/main.qml b/main.qml
index 1114a56e..cf355aab 100644
--- a/main.qml
+++ b/main.qml
@@ -157,6 +157,7 @@ ApplicationWindow {
middlePanel.checkPaymentClicked.disconnect(handleCheckPayment);
}
middlePanel.paymentClicked.connect(handlePayment);
+ middlePanel.sweepUnmixableClicked.connect(handleSweepUnmixable);
// basicPanel.paymentClicked.connect(handlePayment);
middlePanel.checkPaymentClicked.connect(handleCheckPayment);
@@ -451,6 +452,45 @@ ApplicationWindow {
currentWallet.createTransactionAsync(address, paymentId, amountxmr, mixinCount, priority);
}
+ function handleSweepUnmixable() {
+ console.log("Creating transaction: ")
+
+ 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();
+ // deleting transaction object, we don't want memleaks
+ currentWallet.disposeTransaction(transaction);
+
+ } else if (transaction.txCount == 0) {
+ informationPopup.title = qsTr("No unmixable outputs to sweep") + translationManager.emptyString
+ informationPopup.text = qsTr("No unmixable outputs to sweep") + translationManager.emptyString
+ informationPopup.icon = StandardIcon.Information
+ informationPopup.onCloseCallback = null
+ informationPopup.open()
+ // 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()
+ // committing transaction
+ }
+ }
+
// called after user confirms transaction
function handleTransactionConfirmed() {
// grab transaction.txid before commit, since it clears it.
diff --git a/pages/Transfer.qml b/pages/Transfer.qml
index 95c3e993..260f4b54 100644
--- a/pages/Transfer.qml
+++ b/pages/Transfer.qml
@@ -35,6 +35,7 @@ Rectangle {
id: root
signal paymentClicked(string address, string paymentId, string amount, int mixinCount,
int priority, string description)
+ signal sweepUnmixableClicked()
color: "#F0EEEE"
@@ -295,4 +296,24 @@ Rectangle {
}
}
+
+ StandardButton {
+ id: sweepUnmixableButton
+ anchors.right: parent.right
+ anchors.top: descriptionLine.bottom
+ anchors.rightMargin: 17
+ anchors.topMargin: 17
+ width: 60*2
+ text: qsTr("SWEEP UNMIXABLE") + translationManager.emptyString
+ shadowReleasedColor: "#FF4304"
+ shadowPressedColor: "#B32D00"
+ releasedColor: "#FF6C3C"
+ pressedColor: "#FF4304"
+ enabled : true
+ onClicked: {
+ console.log("Transfer: sweepUnmixableClicked")
+ root.sweepUnmixableClicked()
+
+ }
+ }
}
diff --git a/src/libwalletqt/Wallet.cpp b/src/libwalletqt/Wallet.cpp
index 78cb6949..d7fefbf9 100644
--- a/src/libwalletqt/Wallet.cpp
+++ b/src/libwalletqt/Wallet.cpp
@@ -216,7 +216,6 @@ PendingTransaction *Wallet::createTransaction(const QString &dst_addr, const QSt
return result;
}
-
void Wallet::createTransactionAsync(const QString &dst_addr, const QString &payment_id,
quint64 amount, quint32 mixin_count,
PendingTransaction::Priority priority)
@@ -233,7 +232,12 @@ void Wallet::createTransactionAsync(const QString &dst_addr, const QString &paym
});
}
-
+PendingTransaction *Wallet::createSweepUnmixableTransaction()
+{
+ Bitmonero::PendingTransaction * ptImpl = m_walletImpl->createSweepUnmixableTransaction();
+ PendingTransaction * result = new PendingTransaction(ptImpl, this);
+ return result;
+}
void Wallet::disposeTransaction(PendingTransaction *t)
{
diff --git a/src/libwalletqt/Wallet.h b/src/libwalletqt/Wallet.h
index fc7363e8..ecdfa2fd 100644
--- a/src/libwalletqt/Wallet.h
+++ b/src/libwalletqt/Wallet.h
@@ -130,6 +130,11 @@ public:
Q_INVOKABLE void createTransactionAsync(const QString &dst_addr, const QString &payment_id,
quint64 amount, quint32 mixin_count,
PendingTransaction::Priority priority);
+
+ //
+ //! creates sweep unmixable transaction
+ Q_INVOKABLE PendingTransaction * createSweepUnmixableTransaction();
+
//! deletes transaction and frees memory
Q_INVOKABLE void disposeTransaction(PendingTransaction * t);