aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRiccardo Spagni <ric@spagni.net>2016-11-09 20:42:44 +0200
committerRiccardo Spagni <ric@spagni.net>2016-11-09 20:42:44 +0200
commit60b65b9bcc9d3445593a6eca435819144ee64021 (patch)
treed7c80a8abea9e0ff4d89f18f87dc9dfc268b746e
parentdca51b97b70452f16ec962f0315f337c0e21d46c (diff)
parentd95e4a37cf45a0e8cad77bcf421bf7b7fa7df22b (diff)
downloadmonzero-gui-60b65b9bcc9d3445593a6eca435819144ee64021.tar.gz
monzero-gui-60b65b9bcc9d3445593a6eca435819144ee64021.tar.xz
monzero-gui-60b65b9bcc9d3445593a6eca435819144ee64021.zip
Merge pull request #115
d95e4a3 Write support for tx notes (moneromooo.monero)
-rw-r--r--BasicPanel.qml4
-rw-r--r--MiddlePanel.qml4
-rw-r--r--main.qml30
-rw-r--r--pages/Transfer.qml4
-rw-r--r--src/libwalletqt/PendingTransaction.cpp9
-rw-r--r--src/libwalletqt/PendingTransaction.h2
-rw-r--r--src/libwalletqt/Wallet.cpp9
-rw-r--r--src/libwalletqt/Wallet.h3
8 files changed, 56 insertions, 9 deletions
diff --git a/BasicPanel.qml b/BasicPanel.qml
index ff3fc7cb..d85b84f9 100644
--- a/BasicPanel.qml
+++ b/BasicPanel.qml
@@ -47,13 +47,13 @@ Rectangle {
property alias unlockedBalanceText : availableBalanceText.text;
// repeating signal to the outside world
signal paymentClicked(string address, string paymentId, double amount, int mixinCount,
- int priority)
+ int priority, string description)
Connections {
target: transferBasic
onPaymentClicked: {
console.log("BasicPanel: paymentClicked")
- root.paymentClicked(address, paymentId, amount, mixinCount, priority)
+ root.paymentClicked(address, paymentId, amount, mixinCount, priority, description)
}
}
diff --git a/MiddlePanel.qml b/MiddlePanel.qml
index 146e3e11..f1254760 100644
--- a/MiddlePanel.qml
+++ b/MiddlePanel.qml
@@ -50,7 +50,7 @@ Rectangle {
property Settings settingsView: Settings { }
- signal paymentClicked(string address, string paymentId, double amount, int mixinCount, int priority)
+ signal paymentClicked(string address, string paymentId, double amount, int mixinCount, int priority, string description)
signal generatePaymentIdInvoked()
signal checkPaymentClicked(string address, string txid, string txkey);
@@ -302,7 +302,7 @@ Rectangle {
target: transferView
onPaymentClicked : {
console.log("MiddlePanel: paymentClicked")
- paymentClicked(address, paymentId, amount, mixinCount, priority)
+ paymentClicked(address, paymentId, amount, mixinCount, priority, description)
}
}
}
diff --git a/main.qml b/main.qml
index 206ee4cd..8e01c310 100644
--- a/main.qml
+++ b/main.qml
@@ -52,6 +52,7 @@ ApplicationWindow {
property alias persistentSettings : persistentSettings
property var currentWallet;
property var transaction;
+ property var transactionDescription;
property alias password : passwordDialog.password
property int splashCounter: 0
property bool isNewWallet: false
@@ -347,13 +348,14 @@ ApplicationWindow {
// called on "transfer"
- function handlePayment(address, paymentId, amount, mixinCount, priority) {
+ function handlePayment(address, paymentId, amount, mixinCount, priority, description) {
console.log("Creating transaction: ")
console.log("\taddress: ", address,
", payment_id: ", paymentId,
", amount: ", amount,
", mixins: ", mixinCount,
- ", priority: ", priority);
+ ", priority: ", priority,
+ ", description: ", description);
// validate amount;
@@ -399,6 +401,8 @@ ApplicationWindow {
console.log("Transaction created, amount: " + walletManager.displayAmount(transaction.amount)
+ ", fee: " + walletManager.displayAmount(transaction.fee));
+ transactionDescription = description;
+
// here we show confirmation popup;
transactionConfirmationPopup.title = qsTr("Confirmation") + translationManager.emptyString
@@ -408,6 +412,7 @@ ApplicationWindow {
+ qsTr("\n\nAmount: ") + walletManager.displayAmount(transaction.amount)
+ qsTr("\nFee: ") + walletManager.displayAmount(transaction.fee)
+ qsTr("\n\nMixin: ") + mixinCount
+ + qsTr("\n\nDescription: ") + description
+ translationManager.emptyString
transactionConfirmationPopup.icon = StandardIcon.Question
transactionConfirmationPopup.open()
@@ -417,6 +422,16 @@ ApplicationWindow {
// called after user confirms transaction
function handleTransactionConfirmed() {
+ // grab transaction.txid before commit, since it clears it.
+ // we actually need to copy it, because QML will incredibly
+ // call the function multiple times when the variable is used
+ // after commit, where it returns another result...
+ // Of course, this loop is also calling the function multiple
+ // times, but at least with the same result.
+ var txid = [], txid_org = transaction.txid, txid_text = ""
+ for (var i = 0; i < txid_org.length; ++i)
+ txid[i] = txid_org[i]
+
if (!transaction.commit()) {
console.log("Error committing transaction: " + transaction.errorString);
informationPopup.title = qsTr("Error") + translationManager.emptyString
@@ -424,8 +439,17 @@ ApplicationWindow {
informationPopup.icon = StandardIcon.Critical
} else {
informationPopup.title = qsTr("Information") + translationManager.emptyString
- informationPopup.text = qsTr("Money sent successfully") + translationManager.emptyString
+ for (var i = 0; i < txid.length; ++i) {
+ if (txid_text.length > 0)
+ txid_text += ", "
+ txid_text += txid[i]
+ }
+ informationPopup.text = qsTr("Money sent successfully: %1 transaction(s) ").arg(txid.length) + txid_text + translationManager.emptyString
informationPopup.icon = StandardIcon.Information
+ if (transactionDescription.length > 0) {
+ for (var i = 0; i < txid.length; ++i)
+ currentWallet.setUserNote(txid[i], transactionDescription);
+ }
}
informationPopup.onCloseCallback = null
informationPopup.open()
diff --git a/pages/Transfer.qml b/pages/Transfer.qml
index 2ea3fb9a..1cc654d4 100644
--- a/pages/Transfer.qml
+++ b/pages/Transfer.qml
@@ -34,7 +34,7 @@ import "../components"
Rectangle {
id: root
signal paymentClicked(string address, string paymentId, double amount, int mixinCount,
- int priority)
+ int priority, string description)
color: "#F0EEEE"
@@ -277,7 +277,7 @@ Rectangle {
addressLine.text = addressLine.text.trim()
paymentIdLine.text = paymentIdLine.text.trim()
root.paymentClicked(addressLine.text, paymentIdLine.text, amountLine.text, scaleValueToMixinCount(privacyLevelItem.fillLevel),
- priority)
+ priority, descriptionLine.text)
}
}
diff --git a/src/libwalletqt/PendingTransaction.cpp b/src/libwalletqt/PendingTransaction.cpp
index 8c0d8c29..b1441f20 100644
--- a/src/libwalletqt/PendingTransaction.cpp
+++ b/src/libwalletqt/PendingTransaction.cpp
@@ -31,6 +31,15 @@ quint64 PendingTransaction::fee() const
return m_pimpl->fee();
}
+QList<QString> PendingTransaction::txid() const
+{
+ QList<QString> list;
+ std::vector<std::string> txid = m_pimpl->txid();
+ for (const auto &t: txid)
+ list.append(QString::fromStdString(t));
+ return list;
+}
+
PendingTransaction::PendingTransaction(Bitmonero::PendingTransaction *pt, QObject *parent)
: QObject(parent), m_pimpl(pt)
{
diff --git a/src/libwalletqt/PendingTransaction.h b/src/libwalletqt/PendingTransaction.h
index 8f5fca1c..866431fb 100644
--- a/src/libwalletqt/PendingTransaction.h
+++ b/src/libwalletqt/PendingTransaction.h
@@ -17,6 +17,7 @@ class PendingTransaction : public QObject
Q_PROPERTY(quint64 amount READ amount)
Q_PROPERTY(quint64 dust READ dust)
Q_PROPERTY(quint64 fee READ fee)
+ Q_PROPERTY(QList<QString> txid READ txid)
public:
enum Status {
@@ -39,6 +40,7 @@ public:
quint64 amount() const;
quint64 dust() const;
quint64 fee() const;
+ QList<QString> txid() const;
private:
explicit PendingTransaction(Bitmonero::PendingTransaction * pt, QObject *parent = 0);
diff --git a/src/libwalletqt/Wallet.cpp b/src/libwalletqt/Wallet.cpp
index ef98828c..5ab27a27 100644
--- a/src/libwalletqt/Wallet.cpp
+++ b/src/libwalletqt/Wallet.cpp
@@ -260,6 +260,15 @@ void Wallet::setPaymentId(const QString &paymentId)
m_paymentId = paymentId;
}
+bool Wallet::setUserNote(const QString &txid, const QString &note)
+{
+ return m_walletImpl->setUserNote(txid.toStdString(), note.toStdString());
+}
+
+QString Wallet::getUserNote(const QString &txid) const
+{
+ return QString::fromStdString(m_walletImpl->getUserNote(txid.toStdString()));
+}
Wallet::Wallet(Bitmonero::Wallet *w, QObject *parent)
: QObject(parent)
diff --git a/src/libwalletqt/Wallet.h b/src/libwalletqt/Wallet.h
index 303dfd24..aec9b2e4 100644
--- a/src/libwalletqt/Wallet.h
+++ b/src/libwalletqt/Wallet.h
@@ -138,6 +138,9 @@ public:
void setPaymentId(const QString &paymentId);
+ Q_INVOKABLE bool setUserNote(const QString &txid, const QString &note);
+ Q_INVOKABLE QString getUserNote(const QString &txid) const;
+
// TODO: setListenter() when it implemented in API
signals:
// emitted on every event happened with wallet