aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--js/TxUtils.js27
-rw-r--r--pages/Receive.qml9
-rw-r--r--pages/merchant/Merchant.qml6
-rw-r--r--src/libwalletqt/Wallet.cpp6
-rw-r--r--src/libwalletqt/Wallet.h2
-rw-r--r--src/libwalletqt/WalletManager.cpp8
-rw-r--r--src/libwalletqt/WalletManager.h1
7 files changed, 24 insertions, 35 deletions
diff --git a/js/TxUtils.js b/js/TxUtils.js
index 42a5d449..63405338 100644
--- a/js/TxUtils.js
+++ b/js/TxUtils.js
@@ -73,30 +73,3 @@ function isValidOpenAliasAddress(address) {
// we can get an awful lot of valid domains, including non ASCII chars... accept anything
return true
}
-
-function makeQRCodeString(addr, amount, txDescription, recipientName) {
- var XMR_URI_SCHEME = "monero:"
- var XMR_AMOUNT = "tx_amount"
- var XMR_RECIPIENT_NAME = "recipient_name"
- var XMR_TX_DESCRIPTION = "tx_description"
- var qrCodeString =""
- qrCodeString += (XMR_URI_SCHEME + addr)
- if (amount !== undefined && amount !== ""){
- qrCodeString += ("?" + XMR_AMOUNT + "=" + amount)
- }
- if (txDescription !== undefined && txDescription !== ""){
- if (amount == ""){
- qrCodeString += ("?" + XMR_TX_DESCRIPTION + "=" + encodeURI(txDescription))
- } else {
- qrCodeString += ("&" + XMR_TX_DESCRIPTION + "=" + encodeURI(txDescription))
- }
- }
- if (recipientName !== undefined && recipientName !== ""){
- if (amount == "" && txDescription == ""){
- qrCodeString += ("?" + XMR_RECIPIENT_NAME + "=" + encodeURI(recipientName))
- } else {
- qrCodeString += ("&" + XMR_RECIPIENT_NAME + "=" + encodeURI(recipientName))
- }
- }
- return qrCodeString
-}
diff --git a/pages/Receive.qml b/pages/Receive.qml
index 5e34f59e..b97c0657 100644
--- a/pages/Receive.qml
+++ b/pages/Receive.qml
@@ -63,12 +63,11 @@ Rectangle {
function generateQRCodeString() {
if (pageReceive.state == "PaymentRequest") {
- return TxUtils.makeQRCodeString(appWindow.current_address,
- (amountToReceiveXMR.text != "" && parseFloat(amountToReceiveXMR.text) != 0 ? amountToReceiveXMR.text : ""),
- (txDescriptionInput.text != "" ? txDescriptionInput.text : ""),
- (receiverNameInput.text != "" ? receiverNameInput.text : ""));
+ return walletManager.make_uri(appWindow.current_address,
+ walletManager.amountFromString(amountToReceiveXMR.text),
+ txDescriptionInput.text, receiverNameInput.text);
} else {
- return TxUtils.makeQRCodeString(appWindow.current_address);
+ return walletManager.make_uri(appWindow.current_address);
}
}
diff --git a/pages/merchant/Merchant.qml b/pages/merchant/Merchant.qml
index 3722a7a6..e17ed870 100644
--- a/pages/merchant/Merchant.qml
+++ b/pages/merchant/Merchant.qml
@@ -211,7 +211,7 @@ Item {
smooth: false
fillMode: Image.PreserveAspectFit
- source: "image://qrcode/" + TxUtils.makeQRCodeString(appWindow.current_address, amountToReceive.text)
+ source: "image://qrcode/" + walletManager.make_uri(appWindow.current_address, walletManager.amountFromString(amountToReceive.text))
MouseArea {
anchors.fill: parent
@@ -400,7 +400,7 @@ Item {
font.pixelSize: 12
font.bold: true
color: _color
- text: TxUtils.makeQRCodeString(appWindow.current_address, amountToReceive.text)
+ text: walletManager.make_uri(appWindow.current_address, walletManager.amountFromString(amountToReceive.text))
themeTransition: false
MouseArea {
@@ -685,7 +685,7 @@ Item {
selectExisting: false
nameFilters: ["Image (*.png)"]
onAccepted: {
- if(!walletManager.saveQrCode(TxUtils.makeQRCodeString(appWindow.current_address, amountToReceive.text), walletManager.urlToLocalPath(fileUrl))) {
+ if (!walletManager.saveQrCode(walletManager.make_uri(appWindow.current_address, walletManager.amountFromString(amountToReceive.text)), walletManager.urlToLocalPath(fileUrl))) {
console.log("Failed to save QrCode to file " + walletManager.urlToLocalPath(fileUrl) )
receivePageDialog.title = qsTr("Save QrCode") + translationManager.emptyString;
receivePageDialog.text = qsTr("Failed to save QrCode to ") + walletManager.urlToLocalPath(fileUrl) + translationManager.emptyString;
diff --git a/src/libwalletqt/Wallet.cpp b/src/libwalletqt/Wallet.cpp
index c2aaab8f..e19a810c 100644
--- a/src/libwalletqt/Wallet.cpp
+++ b/src/libwalletqt/Wallet.cpp
@@ -933,6 +933,12 @@ bool Wallet::parse_uri(const QString &uri, QString &address, QString &payment_id
return res;
}
+QString Wallet::make_uri(const QString &address, const quint64 &amount, const QString &tx_description, const QString &recipient_name) const
+{
+ std::string error;
+ return QString::fromStdString(m_walletImpl->make_uri(address.toStdString(), "", amount, tx_description.toStdString(), recipient_name.toStdString(), error));
+}
+
bool Wallet::rescanSpent()
{
QMutexLocker locker(&m_asyncMutex);
diff --git a/src/libwalletqt/Wallet.h b/src/libwalletqt/Wallet.h
index c736df7d..9b5bdd46 100644
--- a/src/libwalletqt/Wallet.h
+++ b/src/libwalletqt/Wallet.h
@@ -300,6 +300,8 @@ public:
//! Parse URI
Q_INVOKABLE bool parse_uri(const QString &uri, QString &address, QString &payment_id, uint64_t &amount, QString &tx_description, QString &recipient_name, QVector<QString> &unknown_parameters, QString &error);
+ //! Make URI
+ Q_INVOKABLE QString make_uri(const QString &address, const quint64 &amount = 0, const QString &tx_description = "", const QString &recipient_name = "") const;
//! Namespace your cacheAttribute keys to avoid collisions
Q_INVOKABLE bool setCacheAttribute(const QString &key, const QString &val);
diff --git a/src/libwalletqt/WalletManager.cpp b/src/libwalletqt/WalletManager.cpp
index 338c2f0c..65d108e8 100644
--- a/src/libwalletqt/WalletManager.cpp
+++ b/src/libwalletqt/WalletManager.cpp
@@ -441,6 +441,14 @@ QVariantMap WalletManager::parse_uri_to_object(const QString &uri) const
return result;
}
+QString WalletManager::make_uri(const QString &address, const quint64 &amount, const QString &tx_description, const QString &recipient_name) const
+{
+ QMutexLocker locker(&m_mutex);
+ if (m_currentWallet)
+ return m_currentWallet->make_uri(address, amount, tx_description, recipient_name);
+ return "";
+}
+
void WalletManager::setLogLevel(int logLevel)
{
Monero::WalletManagerFactory::setLogLevel(logLevel);
diff --git a/src/libwalletqt/WalletManager.h b/src/libwalletqt/WalletManager.h
index 2b424b73..84835a9c 100644
--- a/src/libwalletqt/WalletManager.h
+++ b/src/libwalletqt/WalletManager.h
@@ -179,6 +179,7 @@ public:
Q_INVOKABLE QString resolveOpenAlias(const QString &address) const;
Q_INVOKABLE bool parse_uri(const QString &uri, QString &address, QString &payment_id, uint64_t &amount, QString &tx_description, QString &recipient_name, QVector<QString> &unknown_parameters, QString &error) const;
Q_INVOKABLE QVariantMap parse_uri_to_object(const QString &uri) const;
+ Q_INVOKABLE QString make_uri(const QString &address, const quint64 &amount = 0, const QString &tx_description = "", const QString &recipient_name = "") const;
Q_INVOKABLE bool saveQrCode(const QString &, const QString &) const;
Q_INVOKABLE void saveQrCodeToClipboard(const QString &) const;
Q_INVOKABLE void checkUpdatesAsync(