aboutsummaryrefslogtreecommitdiff
path: root/src/qt/walletcontroller.cpp
diff options
context:
space:
mode:
authorJoão Barbosa <joao.paulo.barbosa@gmail.com>2019-01-21 16:58:20 +0000
committerJoão Barbosa <joao.paulo.barbosa@gmail.com>2019-02-04 12:23:40 +0000
commit8847cdaaaeb45c1ddee89f43ac4b8fafb20e5c0d (patch)
tree321d97f44c2168eef5725b5e2528de375d96dbaf /src/qt/walletcontroller.cpp
parent4c8982a88e3d9fae4f8fc147a2d9f9650a493da7 (diff)
downloadbitcoin-8847cdaaaeb45c1ddee89f43ac4b8fafb20e5c0d.tar.xz
gui: Add OpenWalletActivity
Diffstat (limited to 'src/qt/walletcontroller.cpp')
-rw-r--r--src/qt/walletcontroller.cpp36
1 files changed, 26 insertions, 10 deletions
diff --git a/src/qt/walletcontroller.cpp b/src/qt/walletcontroller.cpp
index a103f4c89b..3483c75970 100644
--- a/src/qt/walletcontroller.cpp
+++ b/src/qt/walletcontroller.cpp
@@ -55,17 +55,12 @@ std::vector<std::string> WalletController::getWalletsAvailableToOpen() const
return wallets;
}
-WalletModel* WalletController::openWallet(const std::string& name, QWidget* parent)
+OpenWalletActivity* WalletController::openWallet(const std::string& name, QWidget* parent)
{
- std::string error, warning;
- WalletModel* wallet_model = getOrCreateWallet(m_node.loadWallet(name, error, warning));
- if (!wallet_model) {
- QMessageBox::warning(parent, tr("Open Wallet"), QString::fromStdString(error));
- }
- if (!warning.empty()) {
- QMessageBox::information(parent, tr("Open Wallet"), QString::fromStdString(warning));
- }
- return wallet_model;
+ OpenWalletActivity* activity = new OpenWalletActivity(this, name);
+ activity->moveToThread(&m_activity_thread);
+ QMetaObject::invokeMethod(activity, "open", Qt::QueuedConnection);
+ return activity;
}
WalletModel* WalletController::getOrCreateWallet(std::unique_ptr<interfaces::Wallet> wallet)
@@ -124,3 +119,24 @@ void WalletController::removeAndDeleteWallet(WalletModel* wallet_model)
// CWallet shared pointer.
delete wallet_model;
}
+
+
+OpenWalletActivity::OpenWalletActivity(WalletController* wallet_controller, const std::string& name)
+ : m_wallet_controller(wallet_controller)
+ , m_name(name)
+{}
+
+void OpenWalletActivity::open()
+{
+ std::string error, warning;
+ std::unique_ptr<interfaces::Wallet> wallet = m_wallet_controller->m_node.loadWallet(m_name, error, warning);
+ if (!warning.empty()) {
+ Q_EMIT message(QMessageBox::Warning, QString::fromStdString(warning));
+ }
+ if (wallet) {
+ Q_EMIT opened(m_wallet_controller->getOrCreateWallet(std::move(wallet)));
+ } else {
+ Q_EMIT message(QMessageBox::Critical, QString::fromStdString(error));
+ }
+ Q_EMIT finished();
+}