From 77335b300a45645e8c01bb3c167877070f7a3f29 Mon Sep 17 00:00:00 2001 From: Jaquee Date: Sun, 6 Aug 2017 16:27:55 +0200 Subject: QrCodeScanner: parse extra parameters --- src/QR-Code-scanner/QrCodeScanner.cpp | 22 +++++++++++++++++++++- src/QR-Code-scanner/QrCodeScanner.h | 4 ++-- src/QR-Code-scanner/QrScanThread.cpp | 6 ++++-- src/QR-Code-scanner/QrScanThread.h | 2 +- 4 files changed, 28 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/QR-Code-scanner/QrCodeScanner.cpp b/src/QR-Code-scanner/QrCodeScanner.cpp index 1129e986..62c639f9 100644 --- a/src/QR-Code-scanner/QrCodeScanner.cpp +++ b/src/QR-Code-scanner/QrCodeScanner.cpp @@ -61,15 +61,23 @@ void QrCodeScanner::processCode(int type, const QString &data) emit notifyError(error); return; } + QVariantMap parsed_unknown_parameters; if(unknown_parameters.size() > 0) { qDebug() << "unknown parameters " << unknown_parameters; + foreach(const QString &item, unknown_parameters ) + { + QStringList parsed_item = item.split("="); + if(parsed_item.size() == 2) { + parsed_unknown_parameters.insert(parsed_item[0], parsed_item[1]); + } + } emit notifyError(error, true); } qDebug() << "Parsed URI : " << address << " " << payment_id << " " << amount << " " << tx_description << " " << recipient_name << " " << error; QString s_amount = WalletManager::instance()->displayAmount(amount); qDebug() << "Amount passed " << s_amount ; - emit decoded(address, payment_id, s_amount, tx_description, recipient_name); + emit decoded(address, payment_id, s_amount, tx_description, recipient_name, parsed_unknown_parameters); } void QrCodeScanner::processFrame(QVideoFrame frame) { @@ -102,3 +110,15 @@ void QrCodeScanner::timerEvent(QTimerEvent *event) } } +QrCodeScanner::~QrCodeScanner() +{ + m_thread->stop(); + m_thread->quit(); + if(!m_thread->wait(5000)) + { + m_thread->terminate(); + m_thread->wait(); + } + +} + diff --git a/src/QR-Code-scanner/QrCodeScanner.h b/src/QR-Code-scanner/QrCodeScanner.h index a6a747b3..a83cf2ac 100644 --- a/src/QR-Code-scanner/QrCodeScanner.h +++ b/src/QR-Code-scanner/QrCodeScanner.h @@ -44,7 +44,7 @@ class QrCodeScanner : public QObject public: QrCodeScanner(QObject *parent = Q_NULLPTR); - + ~QrCodeScanner(); void setSource(QCamera*); bool enabled() const; @@ -57,7 +57,7 @@ public Q_SLOTS: Q_SIGNALS: void enabledChanged(); - void decoded(const QString &address, const QString &payment_id, const QString &amount, const QString &tx_description, const QString &recipient_name); + void decoded(const QString &address, const QString &payment_id, const QString &amount, const QString &tx_description, const QString &recipient_name, const QVariantMap &extra_parameters); void decode(int type, const QString &data); void notifyError(const QString &error, bool warning = false); diff --git a/src/QR-Code-scanner/QrScanThread.cpp b/src/QR-Code-scanner/QrScanThread.cpp index b6e9b9ff..48ecb53a 100644 --- a/src/QR-Code-scanner/QrScanThread.cpp +++ b/src/QR-Code-scanner/QrScanThread.cpp @@ -110,6 +110,7 @@ void QrScanThread::processVideoFrame(const QVideoFrame &frame) void QrScanThread::stop() { m_running = false; + m_waitCondition.wakeOne(); } void QrScanThread::addFrame(const QVideoFrame &frame) @@ -124,9 +125,10 @@ void QrScanThread::run() QVideoFrame frame; while(m_running) { QMutexLocker locker(&m_mutex); - while(m_queue.isEmpty()) + while(m_queue.isEmpty() && m_running) m_waitCondition.wait(&m_mutex); - processVideoFrame(m_queue.takeFirst()); + if(!m_queue.isEmpty()) + processVideoFrame(m_queue.takeFirst()); } } diff --git a/src/QR-Code-scanner/QrScanThread.h b/src/QR-Code-scanner/QrScanThread.h index 03f17be3..296e1dc5 100644 --- a/src/QR-Code-scanner/QrScanThread.h +++ b/src/QR-Code-scanner/QrScanThread.h @@ -44,6 +44,7 @@ class QrScanThread : public QThread, public zbar::Image::Handler public: QrScanThread(QObject *parent = Q_NULLPTR); void addFrame(const QVideoFrame &frame); + virtual void stop(); Q_SIGNALS: void decoded(int type, const QString &data); @@ -51,7 +52,6 @@ Q_SIGNALS: protected: virtual void run(); - virtual void stop(); void processVideoFrame(const QVideoFrame &); void processQImage(const QImage &); void processZImage(zbar::Image &image); -- cgit v1.2.3 From d78f9f5e70d4b380cbcc1586c245b9f965dcc54a Mon Sep 17 00:00:00 2001 From: Jaquee Date: Sun, 6 Aug 2017 16:44:32 +0200 Subject: delete addressbook in wallet destructor --- src/libwalletqt/Wallet.cpp | 2 ++ 1 file changed, 2 insertions(+) (limited to 'src') diff --git a/src/libwalletqt/Wallet.cpp b/src/libwalletqt/Wallet.cpp index 409d3d1a..e5ffef82 100644 --- a/src/libwalletqt/Wallet.cpp +++ b/src/libwalletqt/Wallet.cpp @@ -646,6 +646,8 @@ Wallet::Wallet(Monero::Wallet *w, QObject *parent) Wallet::~Wallet() { qDebug("~Wallet: Closing wallet"); + delete m_addressBook; + m_addressBook = NULL; delete m_history; m_history = NULL; -- cgit v1.2.3 From 8553771f897751be47db092bbb7739b4bc2f625a Mon Sep 17 00:00:00 2001 From: Jaquee Date: Sun, 6 Aug 2017 16:47:11 +0200 Subject: add localDaemonSynced() --- src/libwalletqt/WalletManager.cpp | 5 +++++ src/libwalletqt/WalletManager.h | 1 + 2 files changed, 6 insertions(+) (limited to 'src') diff --git a/src/libwalletqt/WalletManager.cpp b/src/libwalletqt/WalletManager.cpp index 396274c6..a8346478 100644 --- a/src/libwalletqt/WalletManager.cpp +++ b/src/libwalletqt/WalletManager.cpp @@ -275,6 +275,11 @@ bool WalletManager::stopMining() return m_pimpl->stopMining(); } +bool WalletManager::localDaemonSynced() const +{ + return blockchainHeight() > 1 && blockchainHeight() >= blockchainTargetHeight(); +} + QString WalletManager::resolveOpenAlias(const QString &address) const { bool dnssec_valid = false; diff --git a/src/libwalletqt/WalletManager.h b/src/libwalletqt/WalletManager.h index bf9bf19a..69c63b05 100644 --- a/src/libwalletqt/WalletManager.h +++ b/src/libwalletqt/WalletManager.h @@ -112,6 +112,7 @@ public: Q_INVOKABLE quint64 blockchainHeight() const; Q_INVOKABLE quint64 blockchainTargetHeight() const; Q_INVOKABLE double miningHashRate() const; + Q_INVOKABLE bool localDaemonSynced() const; Q_INVOKABLE bool isMining() const; Q_INVOKABLE bool startMining(const QString &address, quint32 threads, bool backgroundMining, bool ignoreBattery); -- cgit v1.2.3 From c72207c2e28051b93274996bba3989938e4bcea4 Mon Sep 17 00:00:00 2001 From: Jaquee Date: Sun, 6 Aug 2017 16:48:18 +0200 Subject: transactionInfo: use empty str when fee=0 --- components/HistoryTable.qml | 2 +- src/libwalletqt/TransactionInfo.cpp | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/components/HistoryTable.qml b/components/HistoryTable.qml index 082822d3..37665f15 100644 --- a/components/HistoryTable.qml +++ b/components/HistoryTable.qml @@ -383,7 +383,7 @@ ListView { Column { anchors.top: parent.top width: 148 - visible: isOut + visible: isOut && fee != "" Text { anchors.left: parent.left font.family: "Arial" diff --git a/src/libwalletqt/TransactionInfo.cpp b/src/libwalletqt/TransactionInfo.cpp index 5ad739bf..a787b151 100644 --- a/src/libwalletqt/TransactionInfo.cpp +++ b/src/libwalletqt/TransactionInfo.cpp @@ -38,6 +38,8 @@ QString TransactionInfo::displayAmount() const QString TransactionInfo::fee() const { + if(m_pimpl->fee() == 0) + return ""; return WalletManager::instance()->displayAmount(m_pimpl->fee()); } -- cgit v1.2.3