66
77#include < key_io.h>
88#include < qml/bitcoinunits.h>
9+ #include < qml/models/receiverequesthistorymodel.h>
910
1011#include < QString>
1112
@@ -15,6 +16,7 @@ PaymentRequest::PaymentRequest(QObject* parent)
1516 m_amount = new BitcoinAmount (this );
1617 const auto persisted_unit = QmlBitcoinUnits::unitFromSettings ();
1718 m_amount->setUnit (persisted_unit == QmlBitcoinUnits::Unit::SAT ? BitcoinAmount::Unit::SAT : BitcoinAmount::Unit::BTC);
19+ connect (m_amount, &BitcoinAmount::amountChanged, this , &PaymentRequest::uriChanged);
1820}
1921
2022QString PaymentRequest::address () const
@@ -39,6 +41,7 @@ void PaymentRequest::setLabel(const QString& label)
3941 }
4042 m_label = label;
4143 Q_EMIT labelChanged ();
44+ Q_EMIT uriChanged ();
4245}
4346
4447QString PaymentRequest::message () const
@@ -53,6 +56,7 @@ void PaymentRequest::setMessage(const QString& message)
5356 }
5457 m_message = message;
5558 Q_EMIT messageChanged ();
59+ Q_EMIT uriChanged ();
5660}
5761
5862BitcoinAmount* PaymentRequest::amount () const
@@ -89,10 +93,22 @@ void PaymentRequest::setId(unsigned int id)
8993 Q_EMIT idChanged ();
9094}
9195
96+ QString PaymentRequest::uri () const
97+ {
98+ return ReceiveRequestHistoryModel::BuildBitcoinUri (address (), m_amount->satoshi (), m_label, m_message);
99+ }
100+
101+ QString PaymentRequest::qrPayload () const
102+ {
103+ const QString request_uri = uri ();
104+ return request_uri.isEmpty () ? address () : request_uri;
105+ }
106+
92107void PaymentRequest::setDestination (const CTxDestination& destination)
93108{
94109 m_destination = destination;
95110 Q_EMIT addressChanged ();
111+ Q_EMIT uriChanged ();
96112}
97113
98114CTxDestination PaymentRequest::destination () const
@@ -113,6 +129,7 @@ void PaymentRequest::clear()
113129 Q_EMIT messageChanged ();
114130 Q_EMIT amountErrorChanged ();
115131 Q_EMIT idChanged ();
132+ Q_EMIT uriChanged ();
116133}
117134
118135void PaymentRequest::setDisplayUnit (const int display_unit)
0 commit comments