diff --git a/monero b/monero index 665c304..f10ad63 160000 --- a/monero +++ b/monero @@ -1 +1 @@ -Subproject commit 665c304735b68b2a6e55ed8a5efadbeb60056248 +Subproject commit f10ad631fe7a35fc0c00e9706ae57b8d8eb8f30d diff --git a/src/MainWindow.cpp b/src/MainWindow.cpp index f852263..4a54c72 100644 --- a/src/MainWindow.cpp +++ b/src/MainWindow.cpp @@ -1431,7 +1431,7 @@ void MainWindow::importTransaction() { dialog.exec(); } -void MainWindow::onDeviceError(const QString &error) { +void MainWindow::onDeviceError(const QString &error, quint64 errorCode) { qCritical() << "Device error: " << error; if (m_showDeviceError) { @@ -1441,7 +1441,13 @@ void MainWindow::onDeviceError(const QString &error) { m_statusBtnHwDevice->setIcon(this->hardwareDeviceUnpairedIcon()); while (true) { m_showDeviceError = true; - auto result = QMessageBox::question(this, "Hardware device", "Lost connection to hardware device. Attempt to reconnect?"); + + QString prompt = "Lost connection to hardware device. Attempt to reconnect?"; + if (errorCode == 0x5515) { + prompt = QString("Device must be unlocked to continue scanning. Attempt to continue?"); + } + + auto result = QMessageBox::question(this, "Hardware device", prompt); if (result == QMessageBox::Yes) { bool r = m_wallet->reconnectDevice(); if (r) { diff --git a/src/MainWindow.h b/src/MainWindow.h index 84cbe41..9cdf2ec 100644 --- a/src/MainWindow.h +++ b/src/MainWindow.h @@ -161,7 +161,7 @@ private slots: void onResendTransaction(const QString &txid); void importContacts(); void importTransaction(); - void onDeviceError(const QString &error); + void onDeviceError(const QString &error, quint64 errorCode); void onDeviceButtonRequest(quint64 code); void onDeviceButtonPressed(); void onWalletPassphraseNeeded(bool on_device); diff --git a/src/WindowManager.cpp b/src/WindowManager.cpp index 48b5de1..c94e55f 100644 --- a/src/WindowManager.cpp +++ b/src/WindowManager.cpp @@ -608,7 +608,7 @@ void WindowManager::onDeviceButtonPressed() { m_splashDialog->hide(); } -void WindowManager::onDeviceError(const QString &errorMessage) { +void WindowManager::onDeviceError(const QString &errorMessage, quint64 errorCode) { // TODO: when does this get called? qCritical() << Q_FUNC_INFO << errorMessage; } diff --git a/src/WindowManager.h b/src/WindowManager.h index a694ef7..d6a5553 100644 --- a/src/WindowManager.h +++ b/src/WindowManager.h @@ -68,7 +68,7 @@ private slots: void onInitialNetworkConfigured(); void onDeviceButtonRequest(quint64 code); void onDeviceButtonPressed(); - void onDeviceError(const QString &errorMessage); + void onDeviceError(const QString &errorMessage, quint64 errorCode); void onWalletPassphraseNeeded(bool on_device); void onChangeTheme(const QString &themeName); diff --git a/src/libwalletqt/Wallet.h b/src/libwalletqt/Wallet.h index 8d64760..0282e00 100644 --- a/src/libwalletqt/Wallet.h +++ b/src/libwalletqt/Wallet.h @@ -441,7 +441,7 @@ signals: void walletCreationHeightChanged(); void deviceButtonRequest(quint64 buttonCode); void deviceButtonPressed(); - void deviceError(const QString &message); + void deviceError(const QString &message, quint64 errorCode); void walletPassphraseNeeded(bool onDevice); void beginCommitTransaction(); void transactionCommitted(bool status, PendingTransaction *t, const QStringList& txid, const QMap &txHexMap); diff --git a/src/libwalletqt/WalletListenerImpl.cpp b/src/libwalletqt/WalletListenerImpl.cpp index ff32efb..b6e0b43 100644 --- a/src/libwalletqt/WalletListenerImpl.cpp +++ b/src/libwalletqt/WalletListenerImpl.cpp @@ -73,10 +73,10 @@ void WalletListenerImpl::onDeviceButtonPressed() emit m_wallet->deviceButtonPressed(); } -void WalletListenerImpl::onDeviceError(const std::string &message) +void WalletListenerImpl::onDeviceError(const std::string &message, unsigned int error_code) { qDebug() << __FUNCTION__; - emit m_wallet->deviceError(QString::fromStdString(message)); + emit m_wallet->deviceError(QString::fromStdString(message), error_code); } void WalletListenerImpl::onPassphraseEntered(const QString &passphrase, bool enter_on_device, bool entry_abort) diff --git a/src/libwalletqt/WalletListenerImpl.h b/src/libwalletqt/WalletListenerImpl.h index a2a60ef..8050620 100644 --- a/src/libwalletqt/WalletListenerImpl.h +++ b/src/libwalletqt/WalletListenerImpl.h @@ -31,7 +31,7 @@ public: virtual void onDeviceButtonPressed() override; - virtual void onDeviceError(const std::string &message) override; + virtual void onDeviceError(const std::string &message, unsigned int error_code) override; virtual void onPassphraseEntered(const QString &passphrase, bool enter_on_device, bool entry_abort) override; diff --git a/src/libwalletqt/WalletManager.cpp b/src/libwalletqt/WalletManager.cpp index c88f014..51a5e13 100644 --- a/src/libwalletqt/WalletManager.cpp +++ b/src/libwalletqt/WalletManager.cpp @@ -43,10 +43,10 @@ public: emit m_mgr->deviceButtonPressed(); } - void onDeviceError(const std::string &message) override + void onDeviceError(const std::string &message, unsigned int error_code) override { qDebug() << __FUNCTION__; - emit m_mgr->deviceError(QString::fromStdString(message)); + emit m_mgr->deviceError(QString::fromStdString(message), error_code); } private: diff --git a/src/libwalletqt/WalletManager.h b/src/libwalletqt/WalletManager.h index 2a43cfc..1064cf7 100644 --- a/src/libwalletqt/WalletManager.h +++ b/src/libwalletqt/WalletManager.h @@ -121,7 +121,7 @@ signals: void walletPassphraseNeeded(bool onDevice); void deviceButtonRequest(quint64 buttonCode); void deviceButtonPressed(); - void deviceError(const QString &message); + void deviceError(const QString &message, quint64 errorCode); void openAliasResolved(const QString &alias, const QString &address, bool dnssecValid); private: