mirror of
https://github.com/bitcoin/bitcoin.git
synced 2026-06-07 13:18:43 +02:00
qt, refactor: Pass WalletModel object to WalletView constructor
An instance of the WalletView class without walletModel data member being set is invalid. So, it is better to set it in the constructor.
This commit is contained in:
@@ -30,19 +30,24 @@
|
||||
#include <QPushButton>
|
||||
#include <QVBoxLayout>
|
||||
|
||||
WalletView::WalletView(const PlatformStyle *_platformStyle, QWidget *parent):
|
||||
QStackedWidget(parent),
|
||||
clientModel(nullptr),
|
||||
walletModel(nullptr),
|
||||
platformStyle(_platformStyle)
|
||||
WalletView::WalletView(WalletModel* wallet_model, const PlatformStyle* _platformStyle, QWidget* parent)
|
||||
: QStackedWidget(parent),
|
||||
clientModel(nullptr),
|
||||
walletModel(wallet_model),
|
||||
platformStyle(_platformStyle)
|
||||
{
|
||||
assert(walletModel);
|
||||
|
||||
// Create tabs
|
||||
overviewPage = new OverviewPage(platformStyle);
|
||||
overviewPage->setWalletModel(walletModel);
|
||||
|
||||
transactionsPage = new QWidget(this);
|
||||
QVBoxLayout *vbox = new QVBoxLayout();
|
||||
QHBoxLayout *hbox_buttons = new QHBoxLayout();
|
||||
transactionView = new TransactionView(platformStyle, this);
|
||||
transactionView->setModel(walletModel);
|
||||
|
||||
vbox->addWidget(transactionView);
|
||||
QPushButton *exportButton = new QPushButton(tr("&Export"), this);
|
||||
exportButton->setToolTip(tr("Export the data in the current tab to a file"));
|
||||
@@ -55,10 +60,16 @@ WalletView::WalletView(const PlatformStyle *_platformStyle, QWidget *parent):
|
||||
transactionsPage->setLayout(vbox);
|
||||
|
||||
receiveCoinsPage = new ReceiveCoinsDialog(platformStyle);
|
||||
receiveCoinsPage->setModel(walletModel);
|
||||
|
||||
sendCoinsPage = new SendCoinsDialog(platformStyle);
|
||||
sendCoinsPage->setModel(walletModel);
|
||||
|
||||
usedSendingAddressesPage = new AddressBookPage(platformStyle, AddressBookPage::ForEditing, AddressBookPage::SendingTab, this);
|
||||
usedSendingAddressesPage->setModel(walletModel->getAddressTableModel());
|
||||
|
||||
usedReceivingAddressesPage = new AddressBookPage(platformStyle, AddressBookPage::ForEditing, AddressBookPage::ReceivingTab, this);
|
||||
usedReceivingAddressesPage->setModel(walletModel->getAddressTableModel());
|
||||
|
||||
addWidget(overviewPage);
|
||||
addWidget(transactionsPage);
|
||||
@@ -84,6 +95,21 @@ WalletView::WalletView(const PlatformStyle *_platformStyle, QWidget *parent):
|
||||
connect(transactionView, &TransactionView::message, this, &WalletView::message);
|
||||
|
||||
connect(this, &WalletView::setPrivacy, overviewPage, &OverviewPage::setPrivacy);
|
||||
|
||||
// Receive and pass through messages from wallet model
|
||||
connect(walletModel, &WalletModel::message, this, &WalletView::message);
|
||||
|
||||
// Handle changes in encryption status
|
||||
connect(walletModel, &WalletModel::encryptionStatusChanged, this, &WalletView::encryptionStatusChanged);
|
||||
|
||||
// Balloon pop-up for new transaction
|
||||
connect(walletModel->getTransactionTableModel(), &TransactionTableModel::rowsInserted, this, &WalletView::processNewTransaction);
|
||||
|
||||
// Ask for passphrase if needed
|
||||
connect(walletModel, &WalletModel::requireUnlock, this, &WalletView::unlockWallet);
|
||||
|
||||
// Show progress dialog
|
||||
connect(walletModel, &WalletModel::showProgress, this, &WalletView::showProgress);
|
||||
}
|
||||
|
||||
WalletView::~WalletView()
|
||||
@@ -99,37 +125,6 @@ void WalletView::setClientModel(ClientModel *_clientModel)
|
||||
if (walletModel) walletModel->setClientModel(_clientModel);
|
||||
}
|
||||
|
||||
void WalletView::setWalletModel(WalletModel *_walletModel)
|
||||
{
|
||||
this->walletModel = _walletModel;
|
||||
|
||||
// Put transaction list in tabs
|
||||
transactionView->setModel(_walletModel);
|
||||
overviewPage->setWalletModel(_walletModel);
|
||||
receiveCoinsPage->setModel(_walletModel);
|
||||
sendCoinsPage->setModel(_walletModel);
|
||||
usedReceivingAddressesPage->setModel(_walletModel ? _walletModel->getAddressTableModel() : nullptr);
|
||||
usedSendingAddressesPage->setModel(_walletModel ? _walletModel->getAddressTableModel() : nullptr);
|
||||
|
||||
if (_walletModel)
|
||||
{
|
||||
// Receive and pass through messages from wallet model
|
||||
connect(_walletModel, &WalletModel::message, this, &WalletView::message);
|
||||
|
||||
// Handle changes in encryption status
|
||||
connect(_walletModel, &WalletModel::encryptionStatusChanged, this, &WalletView::encryptionStatusChanged);
|
||||
|
||||
// Balloon pop-up for new transaction
|
||||
connect(_walletModel->getTransactionTableModel(), &TransactionTableModel::rowsInserted, this, &WalletView::processNewTransaction);
|
||||
|
||||
// Ask for passphrase if needed
|
||||
connect(_walletModel, &WalletModel::requireUnlock, this, &WalletView::unlockWallet);
|
||||
|
||||
// Show progress dialog
|
||||
connect(_walletModel, &WalletModel::showProgress, this, &WalletView::showProgress);
|
||||
}
|
||||
}
|
||||
|
||||
void WalletView::processNewTransaction(const QModelIndex& parent, int start, int /*end*/)
|
||||
{
|
||||
// Prevent balloon-spam when initial block download is in progress
|
||||
|
||||
Reference in New Issue
Block a user