gui: make '-min' minimize wallet loading dialog

When '-min' is enabled, no loading dialog should
be presented on screen during startup.
This commit is contained in:
furszy 2023-08-13 20:28:37 -03:00
parent 3654d84c6f
commit 32db15450a
No known key found for this signature in database
GPG key ID: 5DD23CCC686AA623
5 changed files with 17 additions and 11 deletions

View file

@ -407,18 +407,21 @@ void BitcoinApplication::initializeResult(bool success, interfaces::BlockAndHead
qInfo() << "Platform customization:" << platformStyle->getName(); qInfo() << "Platform customization:" << platformStyle->getName();
clientModel = new ClientModel(node(), optionsModel); clientModel = new ClientModel(node(), optionsModel);
window->setClientModel(clientModel, &tip_info); window->setClientModel(clientModel, &tip_info);
// If '-min' option passed, start window minimized (iconified) or minimized to tray
bool start_minimized = gArgs.GetBoolArg("-min", false);
#ifdef ENABLE_WALLET #ifdef ENABLE_WALLET
if (WalletModel::isWalletEnabled()) { if (WalletModel::isWalletEnabled()) {
m_wallet_controller = new WalletController(*clientModel, platformStyle, this); m_wallet_controller = new WalletController(*clientModel, platformStyle, this);
window->setWalletController(m_wallet_controller); window->setWalletController(m_wallet_controller, /*show_loading_minimized=*/start_minimized);
if (paymentServer) { if (paymentServer) {
paymentServer->setOptionsModel(optionsModel); paymentServer->setOptionsModel(optionsModel);
} }
} }
#endif // ENABLE_WALLET #endif // ENABLE_WALLET
// If -min option passed, start window minimized (iconified) or minimized to tray // Show or minimize window
if (!gArgs.GetBoolArg("-min", false)) { if (!start_minimized) {
window->show(); window->show();
} else if (clientModel->getOptionsModel()->getMinimizeToTray() && window->hasTrayIcon()) { } else if (clientModel->getOptionsModel()->getMinimizeToTray() && window->hasTrayIcon()) {
// do nothing as the window is managed by the tray icon // do nothing as the window is managed by the tray icon

View file

@ -679,7 +679,7 @@ void BitcoinGUI::enableHistoryAction(bool privacy)
if (historyAction->isChecked()) gotoOverviewPage(); if (historyAction->isChecked()) gotoOverviewPage();
} }
void BitcoinGUI::setWalletController(WalletController* wallet_controller) void BitcoinGUI::setWalletController(WalletController* wallet_controller, bool show_loading_minimized)
{ {
assert(!m_wallet_controller); assert(!m_wallet_controller);
assert(wallet_controller); assert(wallet_controller);
@ -699,7 +699,7 @@ void BitcoinGUI::setWalletController(WalletController* wallet_controller)
}); });
auto activity = new LoadWalletsActivity(m_wallet_controller, this); auto activity = new LoadWalletsActivity(m_wallet_controller, this);
activity->load(); activity->load(show_loading_minimized);
} }
WalletController* BitcoinGUI::getWalletController() WalletController* BitcoinGUI::getWalletController()

View file

@ -81,7 +81,7 @@ public:
*/ */
void setClientModel(ClientModel *clientModel = nullptr, interfaces::BlockAndHeaderTipInfo* tip_info = nullptr); void setClientModel(ClientModel *clientModel = nullptr, interfaces::BlockAndHeaderTipInfo* tip_info = nullptr);
#ifdef ENABLE_WALLET #ifdef ENABLE_WALLET
void setWalletController(WalletController* wallet_controller); void setWalletController(WalletController* wallet_controller, bool show_loading_minimized);
WalletController* getWalletController(); WalletController* getWalletController();
#endif #endif

View file

@ -191,7 +191,7 @@ WalletControllerActivity::WalletControllerActivity(WalletController* wallet_cont
connect(this, &WalletControllerActivity::finished, this, &QObject::deleteLater); connect(this, &WalletControllerActivity::finished, this, &QObject::deleteLater);
} }
void WalletControllerActivity::showProgressDialog(const QString& title_text, const QString& label_text) void WalletControllerActivity::showProgressDialog(const QString& title_text, const QString& label_text, bool show_minimized)
{ {
auto progress_dialog = new QProgressDialog(m_parent_widget); auto progress_dialog = new QProgressDialog(m_parent_widget);
progress_dialog->setAttribute(Qt::WA_DeleteOnClose); progress_dialog->setAttribute(Qt::WA_DeleteOnClose);
@ -206,6 +206,8 @@ void WalletControllerActivity::showProgressDialog(const QString& title_text, con
// The setValue call forces QProgressDialog to start the internal duration estimation. // The setValue call forces QProgressDialog to start the internal duration estimation.
// See details in https://bugreports.qt.io/browse/QTBUG-47042. // See details in https://bugreports.qt.io/browse/QTBUG-47042.
progress_dialog->setValue(0); progress_dialog->setValue(0);
// When requested, launch dialog minimized
if (show_minimized) progress_dialog->showMinimized();
} }
CreateWalletActivity::CreateWalletActivity(WalletController* wallet_controller, QWidget* parent_widget) CreateWalletActivity::CreateWalletActivity(WalletController* wallet_controller, QWidget* parent_widget)
@ -368,14 +370,15 @@ LoadWalletsActivity::LoadWalletsActivity(WalletController* wallet_controller, QW
{ {
} }
void LoadWalletsActivity::load() void LoadWalletsActivity::load(bool show_loading_minimized)
{ {
showProgressDialog( showProgressDialog(
//: Title of progress window which is displayed when wallets are being loaded. //: Title of progress window which is displayed when wallets are being loaded.
tr("Load Wallets"), tr("Load Wallets"),
/*: Descriptive text of the load wallets progress window which indicates to /*: Descriptive text of the load wallets progress window which indicates to
the user that wallets are currently being loaded.*/ the user that wallets are currently being loaded.*/
tr("Loading wallets…")); tr("Loading wallets…"),
/*show_minimized=*/show_loading_minimized);
QTimer::singleShot(0, worker(), [this] { QTimer::singleShot(0, worker(), [this] {
for (auto& wallet : node().walletLoader().getWallets()) { for (auto& wallet : node().walletLoader().getWallets()) {

View file

@ -100,7 +100,7 @@ protected:
interfaces::Node& node() const { return m_wallet_controller->m_node; } interfaces::Node& node() const { return m_wallet_controller->m_node; }
QObject* worker() const { return m_wallet_controller->m_activity_worker; } QObject* worker() const { return m_wallet_controller->m_activity_worker; }
void showProgressDialog(const QString& title_text, const QString& label_text); void showProgressDialog(const QString& title_text, const QString& label_text, bool show_minimized=false);
WalletController* const m_wallet_controller; WalletController* const m_wallet_controller;
QWidget* const m_parent_widget; QWidget* const m_parent_widget;
@ -156,7 +156,7 @@ class LoadWalletsActivity : public WalletControllerActivity
public: public:
LoadWalletsActivity(WalletController* wallet_controller, QWidget* parent_widget); LoadWalletsActivity(WalletController* wallet_controller, QWidget* parent_widget);
void load(); void load(bool show_loading_minimized);
}; };
class RestoreWalletActivity : public WalletControllerActivity class RestoreWalletActivity : public WalletControllerActivity