@@ -168,8 +168,6 @@ OverviewPage::OverviewPage(QWidget* parent) :
168168
169169 GUIUtil::updateFonts ();
170170
171- m_balances.balance = -1 ;
172-
173171 // Recent transactions
174172 ui->listTransactions ->setItemDelegate (txdelegate);
175173 // Note: minimum height of listTransactions will be set later in updateAdvancedCJUI() to reflect actual settings
@@ -206,8 +204,9 @@ void OverviewPage::handleTransactionClicked(const QModelIndex &index)
206204void OverviewPage::setPrivacy (bool privacy)
207205{
208206 m_privacy = privacy;
209- if (m_balances.balance != -1 ) {
210- setBalance (m_balances);
207+ const auto & balances = walletModel->getCachedBalance ();
208+ if (balances.balance != -1 ) {
209+ setBalance (balances);
211210 coinJoinStatus (true );
212211 }
213212
@@ -230,7 +229,6 @@ OverviewPage::~OverviewPage()
230229void OverviewPage::setBalance (const interfaces::WalletBalances& balances)
231230{
232231 BitcoinUnit unit = walletModel->getOptionsModel ()->getDisplayUnit ();
233- m_balances = balances;
234232 if (walletModel->wallet ().isLegacy ()) {
235233 if (walletModel->wallet ().privateKeysDisabled ()) {
236234 ui->labelBalance ->setText (BitcoinUnits::floorHtmlWithPrivacy (unit, balances.watch_only_balance , BitcoinUnits::SeparatorStyle::ALWAYS , m_privacy));
@@ -316,14 +314,13 @@ void OverviewPage::setWalletModel(WalletModel *model)
316314 // update the display unit, to not use the default ("DASH")
317315 updateDisplayUnit ();
318316 // Keep up to date with wallet
319- interfaces::Wallet& wallet = model->wallet ();
320- interfaces::WalletBalances balances = wallet.getBalances ();
321- setBalance (balances);
317+ setBalance (model->getCachedBalance ());
322318 connect (model, &WalletModel::balanceChanged, this , &OverviewPage::setBalance);
323319
324320 connect (model->getOptionsModel (), &OptionsModel::displayUnitChanged, this , &OverviewPage::updateDisplayUnit);
325321
326- updateWatchOnlyLabels ((wallet.haveWatchOnly () && !model->wallet ().privateKeysDisabled ()) || gArgs .GetBoolArg (" -debug-ui" , false ));
322+ interfaces::Wallet& wallet = model->wallet ();
323+ updateWatchOnlyLabels ((wallet.haveWatchOnly () && !wallet.privateKeysDisabled ()) || gArgs .GetBoolArg (" -debug-ui" , false ));
327324 connect (model, &WalletModel::notifyWatchonlyChanged, [this ](bool showWatchOnly) {
328325 updateWatchOnlyLabels (showWatchOnly && !walletModel->wallet ().privateKeysDisabled ());
329326 });
@@ -348,11 +345,11 @@ void OverviewPage::setWalletModel(WalletModel *model)
348345
349346void OverviewPage::updateDisplayUnit ()
350347{
351- if (walletModel && walletModel->getOptionsModel ())
352- {
348+ if (walletModel && walletModel->getOptionsModel ()) {
353349 m_display_bitcoin_unit = walletModel->getOptionsModel ()->getDisplayUnit ();
354- if (m_balances.balance != -1 ) {
355- setBalance (m_balances);
350+ const auto & balances = walletModel->getCachedBalance ();
351+ if (balances.balance != -1 ) {
352+ setBalance (balances);
356353 }
357354
358355 // Update txdelegate->unit with the current unit
@@ -379,10 +376,11 @@ void OverviewPage::updateCoinJoinProgress()
379376{
380377 if (!walletModel || !clientModel || clientModel->node ().shutdownRequested () || !clientModel->masternodeSync ().isBlockchainSynced ()) return ;
381378
379+ const auto & cached_balances = walletModel->getCachedBalance ();
382380 QString strAmountAndRounds;
383381 QString strCoinJoinAmount = BitcoinUnits::formatHtmlWithUnit (m_display_bitcoin_unit, clientModel->coinJoinOptions ().getAmount () * COIN , false , BitcoinUnits::SeparatorStyle::ALWAYS );
384382
385- if (m_balances .balance == 0 )
383+ if (cached_balances .balance == 0 )
386384 {
387385 ui->coinJoinProgress ->setValue (0 );
388386 ui->coinJoinProgress ->setToolTip (tr (" No inputs detected" ));
@@ -398,7 +396,7 @@ void OverviewPage::updateCoinJoinProgress()
398396
399397 CAmount nAnonymizableBalance = walletModel->wallet ().getAnonymizableBalance (false , false );
400398
401- CAmount nMaxToAnonymize = nAnonymizableBalance + m_balances .anonymized_balance ;
399+ CAmount nMaxToAnonymize = nAnonymizableBalance + cached_balances .anonymized_balance ;
402400
403401 // If it's more than the anon threshold, limit to that.
404402 if (nMaxToAnonymize > clientModel->coinJoinOptions ().getAmount () * COIN ) nMaxToAnonymize = clientModel->coinJoinOptions ().getAmount () * COIN ;
@@ -455,7 +453,7 @@ void OverviewPage::updateCoinJoinProgress()
455453 anonNormPart = anonNormPart > 1 ? 1 : anonNormPart;
456454 anonNormPart *= 100 ;
457455
458- anonFullPart = (float )m_balances .anonymized_balance / nMaxToAnonymize;
456+ anonFullPart = (float )cached_balances .anonymized_balance / nMaxToAnonymize;
459457 anonFullPart = anonFullPart > 1 ? 1 : anonFullPart;
460458 anonFullPart *= 100 ;
461459
@@ -683,7 +681,7 @@ void OverviewPage::toggleCoinJoin(){
683681 if (!walletModel->coinJoin ()->isMixing ()) {
684682 auto & options = walletModel->node ().coinJoinOptions ();
685683 const CAmount nMinAmount = options.getSmallestDenomination () + options.getMaxCollateralAmount ();
686- if (m_balances .balance < nMinAmount) {
684+ if (walletModel-> getCachedBalance () .balance < nMinAmount) {
687685 QString strMinAmount (BitcoinUnits::formatWithUnit (m_display_bitcoin_unit, nMinAmount));
688686 QMessageBox::warning (this , strCoinJoinName,
689687 tr (" %1 requires at least %2 to use." ).arg (strCoinJoinName).arg (strMinAmount),
0 commit comments