Skip to content

Commit 9a61eed

Browse files
ryanofskyjnewbery
authored andcommitted
Use WalletBalances struct in Qt
Suggested by John Newbery <[email protected]> bitcoin/bitcoin#10244 (comment)
1 parent 56f33ca commit 9a61eed

File tree

6 files changed

+32
-56
lines changed

6 files changed

+32
-56
lines changed

src/qt/overviewpage.cpp

Lines changed: 21 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@
2121
#define DECORATION_SIZE 54
2222
#define NUM_ITEMS 5
2323

24+
Q_DECLARE_METATYPE(interface::WalletBalances)
25+
2426
class TxViewDelegate : public QAbstractItemDelegate
2527
{
2628
Q_OBJECT
@@ -113,16 +115,12 @@ OverviewPage::OverviewPage(const PlatformStyle *platformStyle, QWidget *parent)
113115
ui(new Ui::OverviewPage),
114116
clientModel(0),
115117
walletModel(0),
116-
currentBalance(-1),
117-
currentUnconfirmedBalance(-1),
118-
currentImmatureBalance(-1),
119-
currentWatchOnlyBalance(-1),
120-
currentWatchUnconfBalance(-1),
121-
currentWatchImmatureBalance(-1),
122118
txdelegate(new TxViewDelegate(platformStyle, this))
123119
{
124120
ui->setupUi(this);
125121

122+
m_balances.balance = -1;
123+
126124
// use a SingleColorIcon for the "out of sync warning" icon
127125
QIcon icon = platformStyle->SingleColorIcon(":/icons/warning");
128126
icon.addPixmap(icon.pixmap(QSize(64,64), QIcon::Normal), QIcon::Disabled); // also set the disabled icon because we are using a disabled QPushButton to work around missing HiDPI support of QLabel (https://bugreports.qt.io/browse/QTBUG-42503)
@@ -159,28 +157,23 @@ OverviewPage::~OverviewPage()
159157
delete ui;
160158
}
161159

162-
void OverviewPage::setBalance(const CAmount& balance, const CAmount& unconfirmedBalance, const CAmount& immatureBalance, const CAmount& watchOnlyBalance, const CAmount& watchUnconfBalance, const CAmount& watchImmatureBalance)
160+
void OverviewPage::setBalance(const interface::WalletBalances& balances)
163161
{
164162
int unit = walletModel->getOptionsModel()->getDisplayUnit();
165-
currentBalance = balance;
166-
currentUnconfirmedBalance = unconfirmedBalance;
167-
currentImmatureBalance = immatureBalance;
168-
currentWatchOnlyBalance = watchOnlyBalance;
169-
currentWatchUnconfBalance = watchUnconfBalance;
170-
currentWatchImmatureBalance = watchImmatureBalance;
171-
ui->labelBalance->setText(BitcoinUnits::formatWithUnit(unit, balance, false, BitcoinUnits::separatorAlways));
172-
ui->labelUnconfirmed->setText(BitcoinUnits::formatWithUnit(unit, unconfirmedBalance, false, BitcoinUnits::separatorAlways));
173-
ui->labelImmature->setText(BitcoinUnits::formatWithUnit(unit, immatureBalance, false, BitcoinUnits::separatorAlways));
174-
ui->labelTotal->setText(BitcoinUnits::formatWithUnit(unit, balance + unconfirmedBalance + immatureBalance, false, BitcoinUnits::separatorAlways));
175-
ui->labelWatchAvailable->setText(BitcoinUnits::formatWithUnit(unit, watchOnlyBalance, false, BitcoinUnits::separatorAlways));
176-
ui->labelWatchPending->setText(BitcoinUnits::formatWithUnit(unit, watchUnconfBalance, false, BitcoinUnits::separatorAlways));
177-
ui->labelWatchImmature->setText(BitcoinUnits::formatWithUnit(unit, watchImmatureBalance, false, BitcoinUnits::separatorAlways));
178-
ui->labelWatchTotal->setText(BitcoinUnits::formatWithUnit(unit, watchOnlyBalance + watchUnconfBalance + watchImmatureBalance, false, BitcoinUnits::separatorAlways));
163+
m_balances = balances;
164+
ui->labelBalance->setText(BitcoinUnits::formatWithUnit(unit, balances.balance, false, BitcoinUnits::separatorAlways));
165+
ui->labelUnconfirmed->setText(BitcoinUnits::formatWithUnit(unit, balances.unconfirmed_balance, false, BitcoinUnits::separatorAlways));
166+
ui->labelImmature->setText(BitcoinUnits::formatWithUnit(unit, balances.immature_balance, false, BitcoinUnits::separatorAlways));
167+
ui->labelTotal->setText(BitcoinUnits::formatWithUnit(unit, balances.balance + balances.unconfirmed_balance + balances.immature_balance, false, BitcoinUnits::separatorAlways));
168+
ui->labelWatchAvailable->setText(BitcoinUnits::formatWithUnit(unit, balances.watch_only_balance, false, BitcoinUnits::separatorAlways));
169+
ui->labelWatchPending->setText(BitcoinUnits::formatWithUnit(unit, balances.unconfirmed_watch_only_balance, false, BitcoinUnits::separatorAlways));
170+
ui->labelWatchImmature->setText(BitcoinUnits::formatWithUnit(unit, balances.immature_watch_only_balance, false, BitcoinUnits::separatorAlways));
171+
ui->labelWatchTotal->setText(BitcoinUnits::formatWithUnit(unit, balances.watch_only_balance + balances.unconfirmed_watch_only_balance + balances.immature_watch_only_balance, false, BitcoinUnits::separatorAlways));
179172

180173
// only show immature (newly mined) balance if it's non-zero, so as not to complicate things
181174
// for the non-mining users
182-
bool showImmature = immatureBalance != 0;
183-
bool showWatchOnlyImmature = watchImmatureBalance != 0;
175+
bool showImmature = balances.immature_balance != 0;
176+
bool showWatchOnlyImmature = balances.immature_watch_only_balance != 0;
184177

185178
// for symmetry reasons also show immature label when the watch-only one is shown
186179
ui->labelImmature->setVisible(showImmature || showWatchOnlyImmature);
@@ -233,9 +226,8 @@ void OverviewPage::setWalletModel(WalletModel *model)
233226
// Keep up to date with wallet
234227
interface::Wallet& wallet = model->wallet();
235228
interface::WalletBalances balances = wallet.getBalances();
236-
setBalance(balances.balance, balances.unconfirmed_balance, balances.immature_balance,
237-
balances.watch_only_balance, balances.unconfirmed_watch_only_balance, balances.immature_watch_only_balance);
238-
connect(model, SIGNAL(balanceChanged(CAmount,CAmount,CAmount,CAmount,CAmount,CAmount)), this, SLOT(setBalance(CAmount,CAmount,CAmount,CAmount,CAmount,CAmount)));
229+
setBalance(balances);
230+
connect(model, SIGNAL(balanceChanged(interface::WalletBalances)), this, SLOT(setBalance(interface::WalletBalances)));
239231

240232
connect(model->getOptionsModel(), SIGNAL(displayUnitChanged(int)), this, SLOT(updateDisplayUnit()));
241233

@@ -251,9 +243,9 @@ void OverviewPage::updateDisplayUnit()
251243
{
252244
if(walletModel && walletModel->getOptionsModel())
253245
{
254-
if(currentBalance != -1)
255-
setBalance(currentBalance, currentUnconfirmedBalance, currentImmatureBalance,
256-
currentWatchOnlyBalance, currentWatchUnconfBalance, currentWatchImmatureBalance);
246+
if (m_balances.balance != -1) {
247+
setBalance(m_balances);
248+
}
257249

258250
// Update txdelegate->unit with the current unit
259251
txdelegate->unit = walletModel->getOptionsModel()->getDisplayUnit();

src/qt/overviewpage.h

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
#ifndef BITCOIN_QT_OVERVIEWPAGE_H
66
#define BITCOIN_QT_OVERVIEWPAGE_H
77

8-
#include <amount.h>
8+
#include <interface/wallet.h>
99

1010
#include <QWidget>
1111
#include <memory>
@@ -38,8 +38,7 @@ class OverviewPage : public QWidget
3838
void showOutOfSyncWarning(bool fShow);
3939

4040
public Q_SLOTS:
41-
void setBalance(const CAmount& balance, const CAmount& unconfirmedBalance, const CAmount& immatureBalance,
42-
const CAmount& watchOnlyBalance, const CAmount& watchUnconfBalance, const CAmount& watchImmatureBalance);
41+
void setBalance(const interface::WalletBalances& balances);
4342

4443
Q_SIGNALS:
4544
void transactionClicked(const QModelIndex &index);
@@ -49,12 +48,7 @@ public Q_SLOTS:
4948
Ui::OverviewPage *ui;
5049
ClientModel *clientModel;
5150
WalletModel *walletModel;
52-
CAmount currentBalance;
53-
CAmount currentUnconfirmedBalance;
54-
CAmount currentImmatureBalance;
55-
CAmount currentWatchOnlyBalance;
56-
CAmount currentWatchUnconfBalance;
57-
CAmount currentWatchImmatureBalance;
51+
interface::WalletBalances m_balances;
5852

5953
TxViewDelegate *txdelegate;
6054
std::unique_ptr<TransactionFilterProxy> filter;

src/qt/sendcoinsdialog.cpp

Lines changed: 5 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -150,9 +150,8 @@ void SendCoinsDialog::setModel(WalletModel *_model)
150150
}
151151

152152
interface::WalletBalances balances = _model->wallet().getBalances();
153-
setBalance(balances.balance, balances.unconfirmed_balance, balances.immature_balance,
154-
balances.watch_only_balance, balances.unconfirmed_watch_only_balance, balances.immature_watch_only_balance);
155-
connect(_model, SIGNAL(balanceChanged(CAmount,CAmount,CAmount,CAmount,CAmount,CAmount)), this, SLOT(setBalance(CAmount,CAmount,CAmount,CAmount,CAmount,CAmount)));
153+
setBalance(balances);
154+
connect(_model, SIGNAL(balanceChanged(interface::WalletBalances)), this, SLOT(setBalance(interface::WalletBalances)));
156155
connect(_model->getOptionsModel(), SIGNAL(displayUnitChanged(int)), this, SLOT(updateDisplayUnit()));
157156
updateDisplayUnit();
158157

@@ -516,24 +515,17 @@ bool SendCoinsDialog::handlePaymentRequest(const SendCoinsRecipient &rv)
516515
return true;
517516
}
518517

519-
void SendCoinsDialog::setBalance(const CAmount& balance, const CAmount& unconfirmedBalance, const CAmount& immatureBalance,
520-
const CAmount& watchBalance, const CAmount& watchUnconfirmedBalance, const CAmount& watchImmatureBalance)
518+
void SendCoinsDialog::setBalance(const interface::WalletBalances& balances)
521519
{
522-
Q_UNUSED(unconfirmedBalance);
523-
Q_UNUSED(immatureBalance);
524-
Q_UNUSED(watchBalance);
525-
Q_UNUSED(watchUnconfirmedBalance);
526-
Q_UNUSED(watchImmatureBalance);
527-
528520
if(model && model->getOptionsModel())
529521
{
530-
ui->labelBalance->setText(BitcoinUnits::formatWithUnit(model->getOptionsModel()->getDisplayUnit(), balance));
522+
ui->labelBalance->setText(BitcoinUnits::formatWithUnit(model->getOptionsModel()->getDisplayUnit(), balances.balance));
531523
}
532524
}
533525

534526
void SendCoinsDialog::updateDisplayUnit()
535527
{
536-
setBalance(model->wallet().getBalance(), 0, 0, 0, 0, 0);
528+
setBalance(model->wallet().getBalances());
537529
ui->customFee->setDisplayUnit(model->getOptionsModel()->getDisplayUnit());
538530
updateMinFeeLabel();
539531
updateSmartFeeLabel();

src/qt/sendcoinsdialog.h

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,8 +51,7 @@ public Q_SLOTS:
5151
void accept();
5252
SendCoinsEntry *addEntry();
5353
void updateTabsAndLabels();
54-
void setBalance(const CAmount& balance, const CAmount& unconfirmedBalance, const CAmount& immatureBalance,
55-
const CAmount& watchOnlyBalance, const CAmount& watchUnconfBalance, const CAmount& watchImmatureBalance);
54+
void setBalance(const interface::WalletBalances& balances);
5655

5756
Q_SIGNALS:
5857
void coinsSent(const uint256& txid);

src/qt/walletmodel.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ void WalletModel::checkBalanceChanged(const interface::WalletBalances& new_balan
9393
{
9494
if(new_balances.balanceChanged(m_cached_balances)) {
9595
m_cached_balances = new_balances;
96-
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);
96+
Q_EMIT balanceChanged(new_balances);
9797
}
9898
}
9999

src/qt/walletmodel.h

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -237,8 +237,7 @@ class WalletModel : public QObject
237237

238238
Q_SIGNALS:
239239
// Signal that balance in wallet changed
240-
void balanceChanged(const CAmount& balance, const CAmount& unconfirmedBalance, const CAmount& immatureBalance,
241-
const CAmount& watchOnlyBalance, const CAmount& watchUnconfBalance, const CAmount& watchImmatureBalance);
240+
void balanceChanged(const interface::WalletBalances& balances);
242241

243242
// Encryption status of wallet changed
244243
void encryptionStatusChanged();

0 commit comments

Comments
 (0)