aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRiccardo Spagni <ric@spagni.net>2017-08-23 21:23:13 +0200
committerRiccardo Spagni <ric@spagni.net>2017-08-23 21:23:13 +0200
commitc29ccc13ae4cbfc915d86c3d8878552a85c04283 (patch)
tree889faebb3f70cd8010fd8e0417b610f0886f87ed
parentc04417d37b80752e4f4e6b2ea1d6c702aeabd18a (diff)
parent3f7e3ba3c40fb789af675e7754b09cb2dac336b2 (diff)
downloadmonzero-gui-c29ccc13ae4cbfc915d86c3d8878552a85c04283.tar.gz
monzero-gui-c29ccc13ae4cbfc915d86c3d8878552a85c04283.tar.xz
monzero-gui-c29ccc13ae4cbfc915d86c3d8878552a85c04283.zip
Merge pull request #808
3f7e3ba check updates async (Jaquee)
-rw-r--r--main.qml8
-rw-r--r--src/libwalletqt/WalletManager.cpp18
-rw-r--r--src/libwalletqt/WalletManager.h2
3 files changed, 26 insertions, 2 deletions
diff --git a/main.qml b/main.qml
index cb1be4fe..b51ff61a 100644
--- a/main.qml
+++ b/main.qml
@@ -827,6 +827,7 @@ ApplicationWindow {
//
walletManager.walletOpened.connect(onWalletOpened);
walletManager.walletClosed.connect(onWalletClosed);
+ walletManager.checkUpdatesComplete.connect(onWalletCheckUpdatesComplete);
if(typeof daemonManager != "undefined") {
daemonManager.daemonStarted.connect(onDaemonStarted);
@@ -1347,8 +1348,7 @@ ApplicationWindow {
Qt.quit();
}
- function checkUpdates() {
- var update = walletManager.checkUpdates("monero-gui", "gui")
+ function onWalletCheckUpdatesComplete(update) {
if (update === "")
return
print("Update found: " + update)
@@ -1366,6 +1366,10 @@ ApplicationWindow {
}
}
+ function checkUpdates() {
+ walletManager.checkUpdatesAsync("monero-gui", "gui")
+ }
+
Timer {
id: updatesTimer
interval: 3600*1000; running: true; repeat: true
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<QString> future = QtConcurrent::run(this, &WalletManager::checkUpdates,
+ software, subdir);
+ QFutureWatcher<QString> * watcher = new QFutureWatcher<QString>();
+ connect(watcher, &QFutureWatcher<Wallet*>::finished,
+ this, [this, watcher]() {
+ QFuture<QString> 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<bool, std::string, std::string, std::string, std::string> 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<QString> &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: