From 3f7e3ba3c40fb789af675e7754b09cb2dac336b2 Mon Sep 17 00:00:00 2001 From: Jaquee Date: Sun, 6 Aug 2017 00:10:59 +0200 Subject: check updates async --- src/libwalletqt/WalletManager.cpp | 18 ++++++++++++++++++ src/libwalletqt/WalletManager.h | 2 ++ 2 files changed, 20 insertions(+) (limited to 'src') diff --git a/src/libwalletqt/WalletManager.cpp b/src/libwalletqt/WalletManager.cpp index 300b3699..396274c6 100644 --- a/src/libwalletqt/WalletManager.cpp +++ b/src/libwalletqt/WalletManager.cpp @@ -331,8 +331,26 @@ bool WalletManager::saveQrCode(const QString &code, const QString &path) const return QRCodeImageProvider::genQrImage(code, &size).scaled(size.expandedTo(QSize(240, 240)), Qt::KeepAspectRatio).save(path, "PNG", 100); } +void WalletManager::checkUpdatesAsync(const QString &software, const QString &subdir) const +{ + QFuture future = QtConcurrent::run(this, &WalletManager::checkUpdates, + software, subdir); + QFutureWatcher * watcher = new QFutureWatcher(); + connect(watcher, &QFutureWatcher::finished, + this, [this, watcher]() { + QFuture future = watcher->future(); + watcher->deleteLater(); + qDebug() << "Checking for updates - done"; + emit checkUpdatesComplete(future.result()); + }); + watcher->setFuture(future); +} + + + QString WalletManager::checkUpdates(const QString &software, const QString &subdir) const { + qDebug() << "Checking for updates"; const std::tuple result = Monero::WalletManager::checkUpdates(software.toStdString(), subdir.toStdString()); if (!std::get<0>(result)) return QString(""); diff --git a/src/libwalletqt/WalletManager.h b/src/libwalletqt/WalletManager.h index 6824d603..bf9bf19a 100644 --- a/src/libwalletqt/WalletManager.h +++ b/src/libwalletqt/WalletManager.h @@ -134,6 +134,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 &unknown_parameters, QString &error); Q_INVOKABLE bool saveQrCode(const QString &, const QString &) const; + Q_INVOKABLE void checkUpdatesAsync(const QString &software, const QString &subdir) const; Q_INVOKABLE QString checkUpdates(const QString &software, const QString &subdir) const; // clear/rename wallet cache @@ -143,6 +144,7 @@ signals: void walletOpened(Wallet * wallet); void walletClosed(const QString &walletAddress); + void checkUpdatesComplete(const QString &result) const; public slots: private: -- cgit v1.2.3