diff --git a/src/qt/overviewpage.h b/src/qt/overviewpage.h --- a/src/qt/overviewpage.h +++ b/src/qt/overviewpage.h @@ -5,7 +5,7 @@ #ifndef BITCOIN_QT_OVERVIEWPAGE_H #define BITCOIN_QT_OVERVIEWPAGE_H -#include "amount.h" +#include #include #include @@ -38,10 +38,7 @@ void showOutOfSyncWarning(bool fShow); public Q_SLOTS: - void setBalance(const Amount balance, const Amount unconfirmedBalance, - const Amount immatureBalance, const Amount watchOnlyBalance, - const Amount watchUnconfBalance, - const Amount watchImmatureBalance); + void setBalance(const interfaces::WalletBalances &balances); Q_SIGNALS: void transactionClicked(const QModelIndex &index); @@ -51,12 +48,7 @@ Ui::OverviewPage *ui; ClientModel *clientModel; WalletModel *walletModel; - Amount currentBalance; - Amount currentUnconfirmedBalance; - Amount currentImmatureBalance; - Amount currentWatchOnlyBalance; - Amount currentWatchUnconfBalance; - Amount currentWatchImmatureBalance; + interfaces::WalletBalances m_balances; TxViewDelegate *txdelegate; std::unique_ptr filter; diff --git a/src/qt/overviewpage.cpp b/src/qt/overviewpage.cpp --- a/src/qt/overviewpage.cpp +++ b/src/qt/overviewpage.cpp @@ -2,18 +2,18 @@ // Distributed under the MIT software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. -#include "overviewpage.h" -#include "ui_overviewpage.h" - -#include "bitcoinunits.h" -#include "clientmodel.h" -#include "guiconstants.h" -#include "guiutil.h" -#include "optionsmodel.h" -#include "platformstyle.h" -#include "transactionfilterproxy.h" -#include "transactiontablemodel.h" -#include "walletmodel.h" +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include #include #include @@ -21,6 +21,8 @@ #define DECORATION_SIZE 54 #define NUM_ITEMS 5 +Q_DECLARE_METATYPE(interfaces::WalletBalances) + class TxViewDelegate : public QAbstractItemDelegate { Q_OBJECT public: @@ -110,18 +112,15 @@ int unit; const PlatformStyle *platformStyle; }; - -#include "overviewpage.moc" +#include OverviewPage::OverviewPage(const PlatformStyle *platformStyle, QWidget *parent) : QWidget(parent), ui(new Ui::OverviewPage), clientModel(0), walletModel(0), - currentBalance(-SATOSHI), currentUnconfirmedBalance(-SATOSHI), - currentImmatureBalance(-SATOSHI), currentWatchOnlyBalance(-SATOSHI), - currentWatchUnconfBalance(-SATOSHI), - currentWatchImmatureBalance(-SATOSHI), txdelegate(new TxViewDelegate(platformStyle, this)) { ui->setupUi(this); + m_balances.balance = -SATOSHI; + // use a SingleColorIcon for the "out of sync warning" icon QIcon icon = platformStyle->SingleColorIcon(":/icons/warning"); // also set the disabled icon because we are using a disabled QPushButton to @@ -160,43 +159,41 @@ delete ui; } -void OverviewPage::setBalance(const Amount balance, - const Amount unconfirmedBalance, - const Amount immatureBalance, - const Amount watchOnlyBalance, - const Amount watchUnconfBalance, - const Amount watchImmatureBalance) { +void OverviewPage::setBalance(const interfaces::WalletBalances &balances) { int unit = walletModel->getOptionsModel()->getDisplayUnit(); - currentBalance = balance; - currentUnconfirmedBalance = unconfirmedBalance; - currentImmatureBalance = immatureBalance; - currentWatchOnlyBalance = watchOnlyBalance; - currentWatchUnconfBalance = watchUnconfBalance; - currentWatchImmatureBalance = watchImmatureBalance; + m_balances = balances; ui->labelBalance->setText(BitcoinUnits::formatWithUnit( - unit, balance, false, BitcoinUnits::separatorAlways)); - ui->labelUnconfirmed->setText(BitcoinUnits::formatWithUnit( - unit, unconfirmedBalance, false, BitcoinUnits::separatorAlways)); + unit, balances.balance, false, BitcoinUnits::separatorAlways)); + ui->labelUnconfirmed->setText( + BitcoinUnits::formatWithUnit(unit, balances.unconfirmed_balance, false, + BitcoinUnits::separatorAlways)); ui->labelImmature->setText(BitcoinUnits::formatWithUnit( - unit, immatureBalance, false, BitcoinUnits::separatorAlways)); + unit, balances.immature_balance, false, BitcoinUnits::separatorAlways)); ui->labelTotal->setText(BitcoinUnits::formatWithUnit( - unit, balance + unconfirmedBalance + immatureBalance, false, - BitcoinUnits::separatorAlways)); - ui->labelWatchAvailable->setText(BitcoinUnits::formatWithUnit( - unit, watchOnlyBalance, false, BitcoinUnits::separatorAlways)); + 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, watchUnconfBalance, false, BitcoinUnits::separatorAlways)); - ui->labelWatchImmature->setText(BitcoinUnits::formatWithUnit( - unit, watchImmatureBalance, false, BitcoinUnits::separatorAlways)); + 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, watchOnlyBalance + watchUnconfBalance + watchImmatureBalance, + 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 - bool showImmature = immatureBalance != Amount::zero(); - bool showWatchOnlyImmature = watchImmatureBalance != Amount::zero(); + // complicate things for the non-mining users + bool showImmature = balances.immature_balance != Amount::zero(); + bool showWatchOnlyImmature = + balances.immature_watch_only_balance != Amount::zero(); // for symmetry reasons also show immature label when the watch-only one is // shown @@ -254,16 +251,9 @@ // Keep up to date with wallet interfaces::Wallet &wallet = model->wallet(); interfaces::WalletBalances balances = wallet.getBalances(); - setBalance(balances.balance, balances.unconfirmed_balance, - balances.immature_balance, balances.watch_only_balance, - balances.unconfirmed_watch_only_balance, - balances.immature_watch_only_balance); - connect( - model, - SIGNAL( - balanceChanged(Amount, Amount, Amount, Amount, Amount, Amount)), - this, - SLOT(setBalance(Amount, Amount, Amount, Amount, Amount, Amount))); + setBalance(balances); + connect(model, SIGNAL(balanceChanged(interfaces::WalletBalances)), this, + SLOT(setBalance(interfaces::WalletBalances))); connect(model->getOptionsModel(), SIGNAL(displayUnitChanged(int)), this, SLOT(updateDisplayUnit())); @@ -279,10 +269,8 @@ void OverviewPage::updateDisplayUnit() { if (walletModel && walletModel->getOptionsModel()) { - if (currentBalance != -SATOSHI) { - setBalance(currentBalance, currentUnconfirmedBalance, - currentImmatureBalance, currentWatchOnlyBalance, - currentWatchUnconfBalance, currentWatchImmatureBalance); + if (m_balances.balance != -SATOSHI) { + setBalance(m_balances); } // Update txdelegate->unit with the current unit diff --git a/src/qt/sendcoinsdialog.h b/src/qt/sendcoinsdialog.h --- a/src/qt/sendcoinsdialog.h +++ b/src/qt/sendcoinsdialog.h @@ -5,7 +5,7 @@ #ifndef BITCOIN_QT_SENDCOINSDIALOG_H #define BITCOIN_QT_SENDCOINSDIALOG_H -#include "walletmodel.h" +#include #include #include @@ -55,10 +55,7 @@ void accept() override; SendCoinsEntry *addEntry(); void updateTabsAndLabels(); - void setBalance(const Amount balance, const Amount unconfirmedBalance, - const Amount immatureBalance, const Amount watchOnlyBalance, - const Amount watchUnconfBalance, - const Amount watchImmatureBalance); + void setBalance(const interfaces::WalletBalances &balances); Q_SIGNALS: void coinsSent(const uint256 &txid); diff --git a/src/qt/sendcoinsdialog.cpp b/src/qt/sendcoinsdialog.cpp --- a/src/qt/sendcoinsdialog.cpp +++ b/src/qt/sendcoinsdialog.cpp @@ -165,16 +165,9 @@ } interfaces::WalletBalances balances = _model->wallet().getBalances(); - setBalance(balances.balance, balances.unconfirmed_balance, - balances.immature_balance, balances.watch_only_balance, - balances.unconfirmed_watch_only_balance, - balances.immature_watch_only_balance); - connect( - _model, - SIGNAL( - balanceChanged(Amount, Amount, Amount, Amount, Amount, Amount)), - this, - SLOT(setBalance(Amount, Amount, Amount, Amount, Amount, Amount))); + setBalance(balances); + connect(_model, SIGNAL(balanceChanged(interfaces::WalletBalances)), + this, SLOT(setBalance(interfaces::WalletBalances))); connect(_model->getOptionsModel(), SIGNAL(displayUnitChanged(int)), this, SLOT(updateDisplayUnit())); updateDisplayUnit(); @@ -529,27 +522,15 @@ return true; } -void SendCoinsDialog::setBalance(const Amount balance, - const Amount unconfirmedBalance, - const Amount immatureBalance, - const Amount watchBalance, - const Amount watchUnconfirmedBalance, - const Amount watchImmatureBalance) { - Q_UNUSED(unconfirmedBalance); - Q_UNUSED(immatureBalance); - Q_UNUSED(watchBalance); - Q_UNUSED(watchUnconfirmedBalance); - Q_UNUSED(watchImmatureBalance); - +void SendCoinsDialog::setBalance(const interfaces::WalletBalances &balances) { if (model && model->getOptionsModel()) { ui->labelBalance->setText(BitcoinUnits::formatWithUnit( - model->getOptionsModel()->getDisplayUnit(), balance)); + model->getOptionsModel()->getDisplayUnit(), balances.balance)); } } void SendCoinsDialog::updateDisplayUnit() { - setBalance(model->wallet().getBalance(), Amount::zero(), Amount::zero(), - Amount::zero(), Amount::zero(), Amount::zero()); + setBalance(model->wallet().getBalances()); ui->customFee->setDisplayUnit(model->getOptionsModel()->getDisplayUnit()); updateMinFeeLabel(); updateSmartFeeLabel(); diff --git a/src/qt/walletmodel.h b/src/qt/walletmodel.h --- a/src/qt/walletmodel.h +++ b/src/qt/walletmodel.h @@ -251,11 +251,7 @@ Q_SIGNALS: // Signal that balance in wallet changed - void balanceChanged(const Amount balance, const Amount unconfirmedBalance, - const Amount immatureBalance, - const Amount watchOnlyBalance, - const Amount watchUnconfBalance, - const Amount watchImmatureBalance); + void balanceChanged(const interfaces::WalletBalances &balances); // Encryption status of wallet changed void encryptionStatusChanged(); diff --git a/src/qt/walletmodel.cpp b/src/qt/walletmodel.cpp --- a/src/qt/walletmodel.cpp +++ b/src/qt/walletmodel.cpp @@ -87,11 +87,7 @@ const interfaces::WalletBalances &new_balances) { if (new_balances.balanceChanged(m_cached_balances)) { m_cached_balances = new_balances; - Q_EMIT balanceChanged( - new_balances.balance, new_balances.unconfirmed_balance, - new_balances.immature_balance, new_balances.watch_only_balance, - new_balances.unconfirmed_watch_only_balance, - new_balances.immature_watch_only_balance); + Q_EMIT balanceChanged(new_balances); } }