Merge #15195: gui: Add Close Wallet action
94086fb59
gui: Add close wallet action (João Barbosa)f77ba3431
gui: Add closeWallet to WalletController (João Barbosa)f6122abe0
interfaces: Add remove to Wallet (João Barbosa) Pull request description: This PR adds support to close the current wallet in the GUI. <img width="543" alt="screenshot 2019-01-18 at 00 44 26" src="https://user-images.githubusercontent.com/3534524/51358241-424b9680-1aba-11e9-88f2-b85869507737.png"> <img width="532" alt="screenshot 2019-01-18 at 00 44 38" src="https://user-images.githubusercontent.com/3534524/51358242-424b9680-1aba-11e9-83e2-fa275a9017b3.png"> Tree-SHA512: fd7da4d0f73dc240864cc57a1ff1526daf2376904ce3872e52eeca5d40cc21c6dd29eb2ef25f85ffa63697362c150221a2369d80ad36ae445cc99989d337b688
This commit is contained in:
commit
b7456e6bf9
6 changed files with 33 additions and 0 deletions
|
@ -468,6 +468,10 @@ public:
|
|||
bool IsWalletFlagSet(uint64_t flag) override { return m_wallet.IsWalletFlagSet(flag); }
|
||||
OutputType getDefaultAddressType() override { return m_wallet.m_default_address_type; }
|
||||
OutputType getDefaultChangeType() override { return m_wallet.m_default_change_type; }
|
||||
void remove() override
|
||||
{
|
||||
RemoveWallet(m_shared_wallet);
|
||||
}
|
||||
std::unique_ptr<Handler> handleUnload(UnloadFn fn) override
|
||||
{
|
||||
return MakeHandler(m_wallet.NotifyUnload.connect(fn));
|
||||
|
|
|
@ -247,6 +247,9 @@ public:
|
|||
// Get default change type.
|
||||
virtual OutputType getDefaultChangeType() = 0;
|
||||
|
||||
// Remove wallet.
|
||||
virtual void remove() = 0;
|
||||
|
||||
//! Register handler for unload message.
|
||||
using UnloadFn = std::function<void()>;
|
||||
virtual std::unique_ptr<Handler> handleUnload(UnloadFn fn) = 0;
|
||||
|
|
|
@ -338,6 +338,9 @@ void BitcoinGUI::createActions()
|
|||
m_open_wallet_action->setMenu(new QMenu(this));
|
||||
m_open_wallet_action->setStatusTip(tr("Open a wallet"));
|
||||
|
||||
m_close_wallet_action = new QAction(tr("Close Wallet..."), this);
|
||||
m_close_wallet_action->setStatusTip(tr("Close wallet"));
|
||||
|
||||
showHelpMessageAction = new QAction(platformStyle->TextColorIcon(":/icons/info"), tr("&Command-line options"), this);
|
||||
showHelpMessageAction->setMenuRole(QAction::NoRole);
|
||||
showHelpMessageAction->setStatusTip(tr("Show the %1 help message to get a list with possible Bitcoin command-line options").arg(tr(PACKAGE_NAME)));
|
||||
|
@ -396,6 +399,9 @@ void BitcoinGUI::createActions()
|
|||
});
|
||||
}
|
||||
});
|
||||
connect(m_close_wallet_action, &QAction::triggered, [this] {
|
||||
m_wallet_controller->closeWallet(walletFrame->currentWalletModel(), this);
|
||||
});
|
||||
}
|
||||
#endif // ENABLE_WALLET
|
||||
|
||||
|
@ -418,6 +424,7 @@ void BitcoinGUI::createMenuBar()
|
|||
if(walletFrame)
|
||||
{
|
||||
file->addAction(m_open_wallet_action);
|
||||
file->addAction(m_close_wallet_action);
|
||||
file->addSeparator();
|
||||
file->addAction(openAction);
|
||||
file->addAction(backupWalletAction);
|
||||
|
@ -693,6 +700,7 @@ void BitcoinGUI::setWalletActionsEnabled(bool enabled)
|
|||
usedSendingAddressesAction->setEnabled(enabled);
|
||||
usedReceivingAddressesAction->setEnabled(enabled);
|
||||
openAction->setEnabled(enabled);
|
||||
m_close_wallet_action->setEnabled(enabled);
|
||||
}
|
||||
|
||||
void BitcoinGUI::createTrayIcon()
|
||||
|
|
|
@ -148,6 +148,7 @@ private:
|
|||
QAction* openAction = nullptr;
|
||||
QAction* showHelpMessageAction = nullptr;
|
||||
QAction* m_open_wallet_action{nullptr};
|
||||
QAction* m_close_wallet_action{nullptr};
|
||||
QAction* m_wallet_selector_label_action = nullptr;
|
||||
QAction* m_wallet_selector_action = nullptr;
|
||||
|
||||
|
|
|
@ -63,6 +63,22 @@ OpenWalletActivity* WalletController::openWallet(const std::string& name, QWidge
|
|||
return activity;
|
||||
}
|
||||
|
||||
void WalletController::closeWallet(WalletModel* wallet_model, QWidget* parent)
|
||||
{
|
||||
QMessageBox box(parent);
|
||||
box.setWindowTitle(tr("Close wallet"));
|
||||
box.setText(tr("Are you sure you wish to close wallet <i>%1</i>?").arg(wallet_model->getDisplayName()));
|
||||
box.setInformativeText(tr("Closing the wallet for too long can result in having to resync the entire chain if pruning is enabled."));
|
||||
box.setStandardButtons(QMessageBox::Yes|QMessageBox::Cancel);
|
||||
box.setDefaultButton(QMessageBox::Yes);
|
||||
if (box.exec() != QMessageBox::Yes) return;
|
||||
|
||||
// First remove wallet from node.
|
||||
wallet_model->wallet().remove();
|
||||
// Now release the model.
|
||||
removeAndDeleteWallet(wallet_model);
|
||||
}
|
||||
|
||||
WalletModel* WalletController::getOrCreateWallet(std::unique_ptr<interfaces::Wallet> wallet)
|
||||
{
|
||||
QMutexLocker locker(&m_mutex);
|
||||
|
|
|
@ -44,6 +44,7 @@ public:
|
|||
std::vector<std::string> getWalletsAvailableToOpen() const;
|
||||
|
||||
OpenWalletActivity* openWallet(const std::string& name, QWidget* parent = nullptr);
|
||||
void closeWallet(WalletModel* wallet_model, QWidget* parent = nullptr);
|
||||
|
||||
private Q_SLOTS:
|
||||
void addWallet(WalletModel* wallet_model);
|
||||
|
|
Loading…
Reference in a new issue