|
48 | 48 | #include <QDateTime>
|
49 | 49 | #include <QDragEnterEvent>
|
50 | 50 | #include <QKeySequence>
|
| 51 | +#include <QInputDialog> |
51 | 52 | #include <QListWidget>
|
52 | 53 | #include <QMenu>
|
53 | 54 | #include <QMenuBar>
|
@@ -348,6 +349,12 @@ void BitcoinGUI::createActions()
|
348 | 349 | m_create_wallet_action->setEnabled(false);
|
349 | 350 | m_create_wallet_action->setStatusTip(tr("Create a new wallet"));
|
350 | 351 |
|
| 352 | + //: Name of the menu item that restores wallet from a backup file. |
| 353 | + m_restore_wallet_action = new QAction(tr("Restore Wallet…"), this); |
| 354 | + m_restore_wallet_action->setEnabled(false); |
| 355 | + //: Status tip for Restore Wallet menu item |
| 356 | + m_restore_wallet_action->setStatusTip(tr("Restore a wallet from a backup file")); |
| 357 | + |
351 | 358 | m_close_all_wallets_action = new QAction(tr("Close All Wallets…"), this);
|
352 | 359 | m_close_all_wallets_action->setStatusTip(tr("Close all wallets"));
|
353 | 360 |
|
@@ -412,6 +419,25 @@ void BitcoinGUI::createActions()
|
412 | 419 | action->setEnabled(false);
|
413 | 420 | }
|
414 | 421 | });
|
| 422 | + connect(m_restore_wallet_action, &QAction::triggered, [this] { |
| 423 | + QString backup_file = GUIUtil::getOpenFileName(this, |
| 424 | + //: The title for Restore Wallet File Windows |
| 425 | + tr("Load Wallet Backup"), QString(), |
| 426 | + //: The file extension for Restore Wallet File Windows |
| 427 | + tr("Wallet Data File (*.dat)"), nullptr); |
| 428 | + if (backup_file.isEmpty()) return; |
| 429 | + |
| 430 | + bool walletNameOk; |
| 431 | + //: Title of the Restore Wallet input dialog (where the wallet name is entered) |
| 432 | + QString walletName = QInputDialog::getText(this, tr("Restore Name"), tr("Wallet Name:"), QLineEdit::Normal, "", &walletNameOk); |
| 433 | + if (!walletNameOk || walletName.isEmpty()) return; |
| 434 | + |
| 435 | + auto activity = new RestoreWalletActivity(m_wallet_controller, this); |
| 436 | + connect(activity, &RestoreWalletActivity::restored, this, &BitcoinGUI::setCurrentWallet, Qt::QueuedConnection); |
| 437 | + |
| 438 | + auto backup_file_path = fs::PathFromString(backup_file.toStdString()); |
| 439 | + activity->restore(backup_file_path, walletName.toStdString()); |
| 440 | + }); |
415 | 441 | connect(m_close_wallet_action, &QAction::triggered, [this] {
|
416 | 442 | m_wallet_controller->closeWallet(walletFrame->currentWalletModel(), this);
|
417 | 443 | });
|
@@ -447,6 +473,7 @@ void BitcoinGUI::createMenuBar()
|
447 | 473 | {
|
448 | 474 | file->addAction(m_create_wallet_action);
|
449 | 475 | file->addAction(m_open_wallet_action);
|
| 476 | + file->addAction(m_restore_wallet_action); |
450 | 477 | file->addAction(m_close_wallet_action);
|
451 | 478 | file->addAction(m_close_all_wallets_action);
|
452 | 479 | file->addSeparator();
|
@@ -642,6 +669,7 @@ void BitcoinGUI::setWalletController(WalletController* wallet_controller)
|
642 | 669 | m_create_wallet_action->setEnabled(true);
|
643 | 670 | m_open_wallet_action->setEnabled(true);
|
644 | 671 | m_open_wallet_action->setMenu(m_open_wallet_menu);
|
| 672 | + m_restore_wallet_action->setEnabled(true); |
645 | 673 |
|
646 | 674 | GUIUtil::ExceptionSafeConnect(wallet_controller, &WalletController::walletAdded, this, &BitcoinGUI::addWallet);
|
647 | 675 | connect(wallet_controller, &WalletController::walletRemoved, this, &BitcoinGUI::removeWallet);
|
|
0 commit comments