check updates async

This commit is contained in:
Jaquee 2017-08-06 00:10:59 +02:00
parent c68c317776
commit 3f7e3ba3c4
3 changed files with 26 additions and 2 deletions

View file

@ -821,6 +821,7 @@ ApplicationWindow {
// //
walletManager.walletOpened.connect(onWalletOpened); walletManager.walletOpened.connect(onWalletOpened);
walletManager.walletClosed.connect(onWalletClosed); walletManager.walletClosed.connect(onWalletClosed);
walletManager.checkUpdatesComplete.connect(onWalletCheckUpdatesComplete);
if(typeof daemonManager != "undefined") { if(typeof daemonManager != "undefined") {
daemonManager.daemonStarted.connect(onDaemonStarted); daemonManager.daemonStarted.connect(onDaemonStarted);
@ -1341,8 +1342,7 @@ ApplicationWindow {
Qt.quit(); Qt.quit();
} }
function checkUpdates() { function onWalletCheckUpdatesComplete(update) {
var update = walletManager.checkUpdates("monero-gui", "gui")
if (update === "") if (update === "")
return return
print("Update found: " + update) print("Update found: " + update)
@ -1360,6 +1360,10 @@ ApplicationWindow {
} }
} }
function checkUpdates() {
walletManager.checkUpdatesAsync("monero-gui", "gui")
}
Timer { Timer {
id: updatesTimer id: updatesTimer
interval: 3600*1000; running: true; repeat: true interval: 3600*1000; running: true; repeat: true

View file

@ -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); 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 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()); 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)) if (!std::get<0>(result))
return QString(""); return QString("");

View file

@ -134,6 +134,7 @@ public:
Q_INVOKABLE QString resolveOpenAlias(const QString &address) const; 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 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 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; Q_INVOKABLE QString checkUpdates(const QString &software, const QString &subdir) const;
// clear/rename wallet cache // clear/rename wallet cache
@ -143,6 +144,7 @@ signals:
void walletOpened(Wallet * wallet); void walletOpened(Wallet * wallet);
void walletClosed(const QString &walletAddress); void walletClosed(const QString &walletAddress);
void checkUpdatesComplete(const QString &result) const;
public slots: public slots:
private: private: