diff --git a/pages/Receive.qml b/pages/Receive.qml index 55d6f932..fd03803c 100644 --- a/pages/Receive.qml +++ b/pages/Receive.qml @@ -31,6 +31,7 @@ import QtQuick.Controls 2.0 import QtQuick.Controls.Styles 1.4 import QtQuick.Layouts 1.1 import QtQuick.Dialogs 1.2 +import FontAwesome 1.0 import "../components" as MoneroComponents import "../components/effects/" as MoneroEffects @@ -309,6 +310,20 @@ Rectangle { appWindow.showStatusMessage(qsTr("Copied to clipboard") + translationManager.emptyString, 3); } } + + MoneroComponents.StandardButton { + text: FontAwesome.eye + label.font.family: FontAwesome.fontFamily + fontSize: 24 + width: 36 + visible: appWindow.currentWallet && appWindow.currentWallet.isHwBacked() + onClicked: { + appWindow.currentWallet.deviceShowAddressAsync( + appWindow.currentWallet.currentSubaddressAccount, + appWindow.current_subaddress_table_index, + ''); + } + } } } diff --git a/src/libwalletqt/Wallet.cpp b/src/libwalletqt/Wallet.cpp index 90172d15..0d7ca68c 100644 --- a/src/libwalletqt/Wallet.cpp +++ b/src/libwalletqt/Wallet.cpp @@ -253,6 +253,11 @@ void Wallet::initAsync(const QString &daemonAddress, quint64 upperTransactionLim }); } +bool Wallet::isHwBacked() const +{ + return m_walletImpl->getDeviceType() != Monero::Wallet::Device_Software; +} + //! create a view only wallet bool Wallet::createViewOnly(const QString &path, const QString &password) const { @@ -335,6 +340,13 @@ void Wallet::setSubaddressLabel(quint32 accountIndex, quint32 addressIndex, cons { m_walletImpl->setSubaddressLabel(accountIndex, addressIndex, label.toStdString()); } +void Wallet::deviceShowAddressAsync(quint32 accountIndex, quint32 addressIndex, const QString &paymentId) +{ + m_scheduler.run([this, accountIndex, addressIndex, paymentId] { + m_walletImpl->deviceShowAddress(accountIndex, addressIndex, paymentId.toStdString()); + emit deviceShowAddressShowed(); + }); +} void Wallet::refreshHeightAsync() { diff --git a/src/libwalletqt/Wallet.h b/src/libwalletqt/Wallet.h index 15da7a80..cbff25df 100644 --- a/src/libwalletqt/Wallet.h +++ b/src/libwalletqt/Wallet.h @@ -179,6 +179,10 @@ public: Q_INVOKABLE void addSubaddress(const QString& label); Q_INVOKABLE QString getSubaddressLabel(quint32 accountIndex, quint32 addressIndex) const; Q_INVOKABLE void setSubaddressLabel(quint32 accountIndex, quint32 addressIndex, const QString &label); + Q_INVOKABLE void deviceShowAddressAsync(quint32 accountIndex, quint32 addressIndex, const QString &paymentId); + + //! hw-device backed wallets + Q_INVOKABLE bool isHwBacked() const; //! returns if view only wallet Q_INVOKABLE bool viewOnly() const; @@ -353,6 +357,7 @@ signals: void deviceButtonPressed(); void transactionCommitted(bool status, PendingTransaction *t, const QStringList& txid); void heightRefreshed(quint64 walletHeight, quint64 daemonHeight, quint64 targetHeight) const; + void deviceShowAddressShowed(); // emitted when transaction is created async void transactionCreated(PendingTransaction * transaction, QString address, QString paymentId, quint32 mixinCount);