Skip to content

Commit

Permalink
Merge #655: [Qt] Fix PIV balances on overview page
Browse files Browse the repository at this point in the history
2c2988b Simplify watch only balance display logic (Fuzzbawls)
45a1537 Remove trailing whitespace from overviewpage.cpp (Fuzzbawls)
0443512 Improve code readability and logic for zero-balance hiding (Fuzzbawls)
142bbc2 [Qt] Fix PIV balances on overview page (Fuzzbawls)

Tree-SHA512: 52f0cabadad0eab9455141dbaecb4cdde9e578c3ec5c1607b78b13568aef9a61964e7f9889528e2c298ed6143373a12f1bef23438d61683909d81a927b1b17df
  • Loading branch information
Fuzzbawls committed Aug 12, 2018
2 parents 71ac528 + 2c2988b commit de0c4e0
Showing 1 changed file with 47 additions and 28 deletions.
75 changes: 47 additions & 28 deletions src/qt/overviewpage.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -182,13 +182,13 @@ void OverviewPage::getPercentage(CAmount nUnlockedBalance, CAmount nZerocoinBala
}

double dPercentage = 100.0 - dzPercentage;

szPIVPercentage = "(" + QLocale(QLocale::system()).toString(dzPercentage, 'f', nPrecision) + " %)";
sPIVPercentage = "(" + QLocale(QLocale::system()).toString(dPercentage, 'f', nPrecision) + " %)";

}

void OverviewPage::setBalance(const CAmount& balance, const CAmount& unconfirmedBalance, const CAmount& immatureBalance,
void OverviewPage::setBalance(const CAmount& balance, const CAmount& unconfirmedBalance, const CAmount& immatureBalance,
const CAmount& zerocoinBalance, const CAmount& unconfirmedZerocoinBalance, const CAmount& immatureZerocoinBalance,
const CAmount& watchOnlyBalance, const CAmount& watchUnconfBalance, const CAmount& watchImmatureBalance)
{
Expand All @@ -208,14 +208,19 @@ void OverviewPage::setBalance(const CAmount& balance, const CAmount& unconfirmed
nLockedBalance = pwalletMain->GetLockedCoins();
nWatchOnlyLockedBalance = pwalletMain->GetLockedWatchOnlyBalance();
}

// PIV Balance
CAmount nTotalBalance = balance + unconfirmedBalance + nLockedBalance;
CAmount pivAvailableBalance = balance - immatureBalance;
CAmount nTotalWatchBalance = watchOnlyBalance + watchUnconfBalance + watchImmatureBalance;
CAmount nUnlockedBalance = nTotalBalance - nLockedBalance - nLockedBalance; // increment nLockedBalance twice because it was added to
// nTotalBalance above
CAmount nTotalBalance = balance + unconfirmedBalance;
CAmount pivAvailableBalance = balance - immatureBalance - nLockedBalance;
CAmount nUnlockedBalance = nTotalBalance - nLockedBalance;

// PIV Watch-Only Balance
CAmount nTotalWatchBalance = watchOnlyBalance + watchUnconfBalance;
CAmount nAvailableWatchBalance = watchOnlyBalance - watchImmatureBalance - nWatchOnlyLockedBalance;

// zPIV Balance
CAmount matureZerocoinBalance = zerocoinBalance - unconfirmedZerocoinBalance - immatureZerocoinBalance;

// Percentages
QString szPercentage = "";
QString sPercentage = "";
Expand All @@ -232,7 +237,7 @@ void OverviewPage::setBalance(const CAmount& balance, const CAmount& unconfirmed
ui->labelTotal->setText(BitcoinUnits::floorHtmlWithUnit(nDisplayUnit, nTotalBalance, false, BitcoinUnits::separatorAlways));

// Watchonly labels
ui->labelWatchAvailable->setText(BitcoinUnits::floorHtmlWithUnit(nDisplayUnit, watchOnlyBalance, false, BitcoinUnits::separatorAlways));
ui->labelWatchAvailable->setText(BitcoinUnits::floorHtmlWithUnit(nDisplayUnit, nAvailableWatchBalance, false, BitcoinUnits::separatorAlways));
ui->labelWatchPending->setText(BitcoinUnits::floorHtmlWithUnit(nDisplayUnit, watchUnconfBalance, false, BitcoinUnits::separatorAlways));
ui->labelWatchImmature->setText(BitcoinUnits::floorHtmlWithUnit(nDisplayUnit, watchImmatureBalance, false, BitcoinUnits::separatorAlways));
ui->labelWatchLocked->setText(BitcoinUnits::floorHtmlWithUnit(nDisplayUnit, nWatchOnlyLockedBalance, false, BitcoinUnits::separatorAlways));
Expand Down Expand Up @@ -267,30 +272,42 @@ void OverviewPage::setBalance(const CAmount& balance, const CAmount& unconfirmed
// Only show most balances if they are non-zero for the sake of simplicity
QSettings settings;
bool settingShowAllBalances = !settings.value("fHideZeroBalances").toBool();

bool showSumAvailable = settingShowAllBalances || sumTotalBalance != availableTotalBalance;
ui->labelBalanceTextz->setVisible(showSumAvailable);
ui->labelBalancez->setVisible(showSumAvailable);
bool showPIVAvailable = settingShowAllBalances || pivAvailableBalance != nTotalBalance;
bool showWatchOnlyPIVAvailable = watchOnlyBalance != nTotalWatchBalance;
bool showPIVPending = settingShowAllBalances || unconfirmedBalance != 0;
bool showWatchOnlyPIVPending = watchUnconfBalance != 0;
bool showPIVLocked = settingShowAllBalances || nLockedBalance != 0;
bool showWatchOnlyPIVLocked = nWatchOnlyLockedBalance != 0;
bool showImmature = settingShowAllBalances || immatureBalance != 0;
bool showWatchOnlyImmature = watchImmatureBalance != 0;

bool showWatchOnly = nTotalWatchBalance != 0;
ui->labelBalance->setVisible(showPIVAvailable || showWatchOnlyPIVAvailable);

// PIV Available
bool showPIVAvailable = settingShowAllBalances || pivAvailableBalance != nTotalBalance;
bool showWatchOnlyPIVAvailable = showPIVAvailable || nAvailableWatchBalance != nTotalWatchBalance;
ui->labelBalanceText->setVisible(showPIVAvailable || showWatchOnlyPIVAvailable);
ui->labelWatchAvailable->setVisible(showPIVAvailable && showWatchOnly);
ui->labelUnconfirmed->setVisible(showPIVPending || showWatchOnlyPIVPending);
ui->labelBalance->setVisible(showPIVAvailable || showWatchOnlyPIVAvailable);
ui->labelWatchAvailable->setVisible(showWatchOnlyPIVAvailable && showWatchOnly);

// PIV Pending
bool showPIVPending = settingShowAllBalances || unconfirmedBalance != 0;
bool showWatchOnlyPIVPending = showPIVPending || watchUnconfBalance != 0;
ui->labelPendingText->setVisible(showPIVPending || showWatchOnlyPIVPending);
ui->labelWatchPending->setVisible(showPIVPending && showWatchOnly);
ui->labelLockedBalance->setVisible(showPIVLocked || showWatchOnlyPIVLocked);
ui->labelUnconfirmed->setVisible(showPIVPending || showWatchOnlyPIVPending);
ui->labelWatchPending->setVisible(showWatchOnlyPIVPending && showWatchOnly);

// PIV Immature
bool showPIVImmature = settingShowAllBalances || immatureBalance != 0;
bool showWatchOnlyImmature = showPIVImmature || watchImmatureBalance != 0;
ui->labelImmatureText->setVisible(showPIVImmature || showWatchOnlyImmature);
ui->labelImmature->setVisible(showPIVImmature || showWatchOnlyImmature); // for symmetry reasons also show immature label when the watch-only one is shown
ui->labelWatchImmature->setVisible(showWatchOnlyImmature && showWatchOnly); // show watch-only immature balance

// PIV Locked
bool showPIVLocked = settingShowAllBalances || nLockedBalance != 0;
bool showWatchOnlyPIVLocked = showPIVLocked || nWatchOnlyLockedBalance != 0;
ui->labelLockedBalanceText->setVisible(showPIVLocked || showWatchOnlyPIVLocked);
ui->labelWatchLocked->setVisible(showPIVLocked && showWatchOnly);
ui->labelImmature->setVisible(showImmature || showWatchOnlyImmature); // for symmetry reasons also show immature label when the watch-only one is shown
ui->labelImmatureText->setVisible(showImmature || showWatchOnlyImmature);
ui->labelWatchImmature->setVisible(showImmature && showWatchOnly); // show watch-only immature balance
ui->labelLockedBalance->setVisible(showPIVLocked || showWatchOnlyPIVLocked);
ui->labelWatchLocked->setVisible(showWatchOnlyPIVLocked && showWatchOnly);

// zPIV
bool showzPIVAvailable = settingShowAllBalances || zerocoinBalance != matureZerocoinBalance;
bool showzPIVUnconfirmed = settingShowAllBalances || unconfirmedZerocoinBalance != 0;
bool showzPIVImmature = settingShowAllBalances || immatureZerocoinBalance != 0;
Expand All @@ -300,6 +317,8 @@ void OverviewPage::setBalance(const CAmount& balance, const CAmount& unconfirmed
ui->labelzBalanceUnconfirmedText->setVisible(showzPIVUnconfirmed);
ui->labelzBalanceImmature->setVisible(showzPIVImmature);
ui->labelzBalanceImmatureText->setVisible(showzPIVImmature);

// Percent split
bool showPercentages = ! (zerocoinBalance == 0 && nTotalBalance == 0);
ui->labelPIVPercent->setVisible(showPercentages);
ui->labelzPIVPercent->setVisible(showPercentages);
Expand Down Expand Up @@ -361,9 +380,9 @@ void OverviewPage::setWalletModel(WalletModel* model)

// Keep up to date with wallet
setBalance(model->getBalance(), model->getUnconfirmedBalance(), model->getImmatureBalance(),
model->getZerocoinBalance(), model->getUnconfirmedZerocoinBalance(), model->getImmatureZerocoinBalance(),
model->getZerocoinBalance(), model->getUnconfirmedZerocoinBalance(), model->getImmatureZerocoinBalance(),
model->getWatchBalance(), model->getWatchUnconfirmedBalance(), model->getWatchImmatureBalance());
connect(model, SIGNAL(balanceChanged(CAmount, CAmount, CAmount, CAmount, CAmount, CAmount, CAmount, CAmount, CAmount)), this,
connect(model, SIGNAL(balanceChanged(CAmount, CAmount, CAmount, CAmount, CAmount, CAmount, CAmount, CAmount, CAmount)), this,
SLOT(setBalance(CAmount, CAmount, CAmount, CAmount, CAmount, CAmount, CAmount, CAmount, CAmount)));

connect(model->getOptionsModel(), SIGNAL(displayUnitChanged(int)), this, SLOT(updateDisplayUnit()));
Expand Down

0 comments on commit de0c4e0

Please sign in to comment.