diff --git a/src/qt/overviewpage.cpp b/src/qt/overviewpage.cpp --- a/src/qt/overviewpage.cpp +++ b/src/qt/overviewpage.cpp @@ -165,32 +165,52 @@ void OverviewPage::setBalance(const interfaces::WalletBalances &balances) { int unit = walletModel->getOptionsModel()->getDisplayUnit(); m_balances = balances; - ui->labelBalance->setText(BitcoinUnits::formatWithUnit( - unit, balances.balance, false, BitcoinUnits::separatorAlways)); - ui->labelUnconfirmed->setText( - BitcoinUnits::formatWithUnit(unit, balances.unconfirmed_balance, false, - BitcoinUnits::separatorAlways)); - ui->labelImmature->setText(BitcoinUnits::formatWithUnit( - unit, balances.immature_balance, false, BitcoinUnits::separatorAlways)); - ui->labelTotal->setText(BitcoinUnits::formatWithUnit( - unit, - balances.balance + balances.unconfirmed_balance + - balances.immature_balance, - false, BitcoinUnits::separatorAlways)); - ui->labelWatchAvailable->setText( - BitcoinUnits::formatWithUnit(unit, balances.watch_only_balance, false, - BitcoinUnits::separatorAlways)); - ui->labelWatchPending->setText(BitcoinUnits::formatWithUnit( - unit, balances.unconfirmed_watch_only_balance, false, - BitcoinUnits::separatorAlways)); - ui->labelWatchImmature->setText( - BitcoinUnits::formatWithUnit(unit, balances.immature_watch_only_balance, - false, BitcoinUnits::separatorAlways)); - ui->labelWatchTotal->setText(BitcoinUnits::formatWithUnit( - unit, - balances.watch_only_balance + balances.unconfirmed_watch_only_balance + - balances.immature_watch_only_balance, - false, BitcoinUnits::separatorAlways)); + if (walletModel->privateKeysDisabled()) { + ui->labelBalance->setText( + BitcoinUnits::formatWithUnit(unit, balances.watch_only_balance, + false, BitcoinUnits::separatorAlways)); + ui->labelUnconfirmed->setText(BitcoinUnits::formatWithUnit( + unit, balances.unconfirmed_watch_only_balance, false, + BitcoinUnits::separatorAlways)); + ui->labelImmature->setText(BitcoinUnits::formatWithUnit( + unit, balances.immature_watch_only_balance, false, + BitcoinUnits::separatorAlways)); + ui->labelTotal->setText(BitcoinUnits::formatWithUnit( + unit, + balances.watch_only_balance + + balances.unconfirmed_watch_only_balance + + balances.immature_watch_only_balance, + false, BitcoinUnits::separatorAlways)); + } else { + ui->labelBalance->setText(BitcoinUnits::formatWithUnit( + unit, balances.balance, false, BitcoinUnits::separatorAlways)); + ui->labelUnconfirmed->setText( + BitcoinUnits::formatWithUnit(unit, balances.unconfirmed_balance, + false, BitcoinUnits::separatorAlways)); + ui->labelImmature->setText( + BitcoinUnits::formatWithUnit(unit, balances.immature_balance, false, + BitcoinUnits::separatorAlways)); + ui->labelTotal->setText(BitcoinUnits::formatWithUnit( + unit, + balances.balance + balances.unconfirmed_balance + + balances.immature_balance, + false, BitcoinUnits::separatorAlways)); + ui->labelWatchAvailable->setText( + BitcoinUnits::formatWithUnit(unit, balances.watch_only_balance, + false, BitcoinUnits::separatorAlways)); + ui->labelWatchPending->setText(BitcoinUnits::formatWithUnit( + unit, balances.unconfirmed_watch_only_balance, false, + BitcoinUnits::separatorAlways)); + ui->labelWatchImmature->setText(BitcoinUnits::formatWithUnit( + unit, balances.immature_watch_only_balance, false, + BitcoinUnits::separatorAlways)); + ui->labelWatchTotal->setText(BitcoinUnits::formatWithUnit( + unit, + balances.watch_only_balance + + balances.unconfirmed_watch_only_balance + + balances.immature_watch_only_balance, + false, BitcoinUnits::separatorAlways)); + } // only show immature (newly mined) balance if it's non-zero, so as not to // complicate things for the non-mining users @@ -202,8 +222,9 @@ // shown ui->labelImmature->setVisible(showImmature || showWatchOnlyImmature); ui->labelImmatureText->setVisible(showImmature || showWatchOnlyImmature); - ui->labelWatchImmature->setVisible( - showWatchOnlyImmature); // show watch-only immature balance + // show watch-only immature balance + ui->labelWatchImmature->setVisible(!walletModel->privateKeysDisabled() && + showWatchOnlyImmature); } // show/hide watch-only labels @@ -261,9 +282,13 @@ connect(model->getOptionsModel(), &OptionsModel::displayUnitChanged, this, &OverviewPage::updateDisplayUnit); - updateWatchOnlyLabels(wallet.haveWatchOnly()); - connect(model, &WalletModel::notifyWatchonlyChanged, this, - &OverviewPage::updateWatchOnlyLabels); + updateWatchOnlyLabels(wallet.haveWatchOnly() && + !model->privateKeysDisabled()); + connect(model, &WalletModel::notifyWatchonlyChanged, + [this](bool showWatchOnly) { + updateWatchOnlyLabels(showWatchOnly && + !walletModel->privateKeysDisabled()); + }); } // update the display unit, to not use the default ("BCH")