aboutsummaryrefslogtreecommitdiff
path: root/src/libwalletqt
diff options
context:
space:
mode:
authorIlya Kitaev <mbg033@gmail.com>2016-08-18 21:55:34 +0300
committerIlya Kitaev <mbg033@gmail.com>2016-08-18 21:55:34 +0300
commitd3234bb91564ee8327b111e0acf2a83153929c25 (patch)
tree8831398e88dfcefe8656486a227105e84a58bb7c /src/libwalletqt
parentc1269301f7c19a849b0fae7ddbe9afd38aaf71d3 (diff)
downloadmonzero-gui-d3234bb91564ee8327b111e0acf2a83153929c25.tar.gz
monzero-gui-d3234bb91564ee8327b111e0acf2a83153929c25.tar.xz
monzero-gui-d3234bb91564ee8327b111e0acf2a83153929c25.zip
WalletManager::openWalletAsync in progress
Diffstat (limited to 'src/libwalletqt')
-rw-r--r--src/libwalletqt/WalletManager.cpp34
-rw-r--r--src/libwalletqt/WalletManager.h33
2 files changed, 62 insertions, 5 deletions
diff --git a/src/libwalletqt/WalletManager.cpp b/src/libwalletqt/WalletManager.cpp
index a7742bca..50a61553 100644
--- a/src/libwalletqt/WalletManager.cpp
+++ b/src/libwalletqt/WalletManager.cpp
@@ -6,6 +6,7 @@
#include <QDir>
#include <QDebug>
#include <QUrl>
+#include <QtConcurrent/QtConcurrent>
@@ -42,6 +43,20 @@ Wallet *WalletManager::openWallet(const QString &path, const QString &password,
return wallet;
}
+void WalletManager::openWalletAsync(const QString &path, const QString &password, bool testnet)
+{
+ QFuture<Wallet*> future = QtConcurrent::run(this, &WalletManager::openWallet,
+ path, password, testnet);
+ QFutureWatcher<Wallet*> * watcher = new QFutureWatcher<Wallet*>();
+ watcher->setFuture(future);
+ connect(watcher, &QFutureWatcher<Wallet*>::finished,
+ this, [this, watcher]() {
+ QFuture<Wallet*> future = watcher->future();
+ watcher->deleteLater();
+ emit walletOpened(future.result());
+ });
+}
+
Wallet *WalletManager::recoveryWallet(const QString &path, const QString &memo, bool testnet)
{
@@ -51,9 +66,26 @@ Wallet *WalletManager::recoveryWallet(const QString &path, const QString &memo,
}
-void WalletManager::closeWallet(Wallet *wallet)
+QString WalletManager::closeWallet(Wallet *wallet)
{
+ QString result = wallet->address();
delete wallet;
+ return result;
+}
+
+void WalletManager::closeWalletAsync(Wallet *wallet)
+{
+ QFuture<QString> future = QtConcurrent::run(this, &WalletManager::closeWallet,
+ wallet);
+ QFutureWatcher<QString> * watcher = new QFutureWatcher<QString>();
+ watcher->setFuture(future);
+
+ connect(watcher, &QFutureWatcher<QString>::finished,
+ this, [this, watcher]() {
+ QFuture<QString> future = watcher->future();
+ watcher->deleteLater();
+ emit future.result();
+ });
}
bool WalletManager::walletExists(const QString &path) const
diff --git a/src/libwalletqt/WalletManager.h b/src/libwalletqt/WalletManager.h
index 29df9048..27224b5f 100644
--- a/src/libwalletqt/WalletManager.h
+++ b/src/libwalletqt/WalletManager.h
@@ -16,15 +16,38 @@ public:
// wizard: createWallet path;
Q_INVOKABLE Wallet * createWallet(const QString &path, const QString &password,
const QString &language, bool testnet = false);
- // just for future use
+
+ /*!
+ * \brief openWallet - opens wallet by given path
+ * \param path - wallet filename
+ * \param password - wallet password. Empty string in wallet isn't password protected
+ * \param testnet - determines if we running testnet
+ * \return wallet object pointer
+ */
Q_INVOKABLE Wallet * openWallet(const QString &path, const QString &password, bool testnet = false);
+ /*!
+ * \brief openWalletAsync - asynchronous version of "openWallet". Returns immediately. "walletOpened" signal
+ * emitted when wallet opened;
+ */
+ Q_INVOKABLE void openWalletAsync(const QString &path, const QString &password, bool testnet = false);
+
// wizard: recoveryWallet path; hint: internally it recorvers wallet and set password = ""
Q_INVOKABLE Wallet * recoveryWallet(const QString &path, const QString &memo,
bool testnet = false);
- //! utils: close wallet to free memory
- Q_INVOKABLE void closeWallet(Wallet * wallet);
+ /*!
+ * \brief closeWallet - closes wallet and frees memory
+ * \param wallet
+ * \return wallet address
+ */
+ Q_INVOKABLE QString closeWallet(Wallet * wallet);
+
+ /*!
+ * \brief closeWalletAsync - asynchronous version of "closeWallet"
+ * \param wallet - wallet pointer;
+ */
+ Q_INVOKABLE void closeWalletAsync(Wallet * wallet);
//! checks is given filename is a wallet;
Q_INVOKABLE bool walletExists(const QString &path) const;
@@ -50,8 +73,10 @@ public:
signals:
-public slots:
+ void walletOpened(Wallet * wallet);
+ void walletClosed(const QString &walletAddress);
+public slots:
private:
explicit WalletManager(QObject *parent = 0);