mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-12-20 04:36:08 +01:00
qt: clean up signal handling in walletframe/walletview
Use proper signals everywhere. Removes the need to store a pointer to the BitcoinGUI object in the walletview. Also removes the interdependence between setWalletModel / setBitcoinGUI.
This commit is contained in:
@@ -32,7 +32,6 @@
|
||||
|
||||
WalletView::WalletView(QWidget *parent):
|
||||
QStackedWidget(parent),
|
||||
gui(0),
|
||||
clientModel(0),
|
||||
walletModel(0)
|
||||
{
|
||||
@@ -70,6 +69,9 @@ WalletView::WalletView(QWidget *parent):
|
||||
|
||||
// Clicking on "Export" allows to export the transaction list
|
||||
connect(exportButton, SIGNAL(clicked()), transactionView, SLOT(exportClicked()));
|
||||
|
||||
// Pass through messages from sendCoinsPage
|
||||
connect(sendCoinsPage, SIGNAL(message(QString,QString,unsigned int)), this, SIGNAL(message(QString,QString,unsigned int)));
|
||||
}
|
||||
|
||||
WalletView::~WalletView()
|
||||
@@ -78,8 +80,6 @@ WalletView::~WalletView()
|
||||
|
||||
void WalletView::setBitcoinGUI(BitcoinGUI *gui)
|
||||
{
|
||||
this->gui = gui;
|
||||
|
||||
if (gui)
|
||||
{
|
||||
// Clicking on a transaction on the overview page sends you to the transactions tab
|
||||
@@ -87,46 +87,51 @@ void WalletView::setBitcoinGUI(BitcoinGUI *gui)
|
||||
|
||||
// Receive and report messages
|
||||
connect(this, SIGNAL(message(QString,QString,unsigned int)), gui, SLOT(message(QString,QString,unsigned int)));
|
||||
connect(sendCoinsPage, SIGNAL(message(QString,QString,unsigned int)), gui, SLOT(message(QString,QString,unsigned int)));
|
||||
|
||||
// Pass through encryption status changed signals
|
||||
connect(this, SIGNAL(encryptionStatusChanged(int)), gui, SLOT(setEncryptionStatus(int)));
|
||||
|
||||
// Pass through transaction notifications
|
||||
connect(this, SIGNAL(incomingTransaction(QString,int,qint64,QString,QString)), gui, SLOT(incomingTransaction(QString,int,qint64,QString,QString)));
|
||||
}
|
||||
}
|
||||
|
||||
void WalletView::setClientModel(ClientModel *clientModel)
|
||||
{
|
||||
this->clientModel = clientModel;
|
||||
if (clientModel)
|
||||
{
|
||||
overviewPage->setClientModel(clientModel);
|
||||
}
|
||||
|
||||
overviewPage->setClientModel(clientModel);
|
||||
}
|
||||
|
||||
void WalletView::setWalletModel(WalletModel *walletModel)
|
||||
{
|
||||
this->walletModel = walletModel;
|
||||
if (walletModel && gui)
|
||||
|
||||
// Put transaction list in tabs
|
||||
transactionView->setModel(walletModel);
|
||||
overviewPage->setWalletModel(walletModel);
|
||||
receiveCoinsPage->setModel(walletModel);
|
||||
sendCoinsPage->setModel(walletModel);
|
||||
|
||||
if (walletModel)
|
||||
{
|
||||
// Receive and report messages from wallet thread
|
||||
connect(walletModel, SIGNAL(message(QString,QString,unsigned int)), gui, SLOT(message(QString,QString,unsigned int)));
|
||||
connect(walletModel, SIGNAL(message(QString,QString,unsigned int)), this, SIGNAL(message(QString,QString,unsigned int)));
|
||||
|
||||
// Put transaction list in tabs
|
||||
transactionView->setModel(walletModel);
|
||||
overviewPage->setWalletModel(walletModel);
|
||||
receiveCoinsPage->setModel(walletModel);
|
||||
sendCoinsPage->setModel(walletModel);
|
||||
|
||||
setEncryptionStatus();
|
||||
connect(walletModel, SIGNAL(encryptionStatusChanged(int)), gui, SLOT(setEncryptionStatus(int)));
|
||||
// Handle changes in encryption status
|
||||
connect(walletModel, SIGNAL(encryptionStatusChanged(int)), this, SIGNAL(encryptionStatusChanged(int)));
|
||||
updateEncryptionStatus();
|
||||
|
||||
// Balloon pop-up for new transaction
|
||||
connect(walletModel->getTransactionTableModel(), SIGNAL(rowsInserted(QModelIndex,int,int)),
|
||||
this, SLOT(incomingTransaction(QModelIndex,int,int)));
|
||||
this, SLOT(processNewTransaction(QModelIndex,int,int)));
|
||||
|
||||
// Ask for passphrase if needed
|
||||
connect(walletModel, SIGNAL(requireUnlock()), this, SLOT(unlockWallet()));
|
||||
}
|
||||
}
|
||||
|
||||
void WalletView::incomingTransaction(const QModelIndex& parent, int start, int /*end*/)
|
||||
void WalletView::processNewTransaction(const QModelIndex& parent, int start, int /*end*/)
|
||||
{
|
||||
// Prevent balloon-spam when initial block download is in progress
|
||||
if (!walletModel || !clientModel || clientModel->inInitialBlockDownload())
|
||||
@@ -139,7 +144,7 @@ void WalletView::incomingTransaction(const QModelIndex& parent, int start, int /
|
||||
QString type = ttm->index(start, TransactionTableModel::Type, parent).data().toString();
|
||||
QString address = ttm->index(start, TransactionTableModel::ToAddress, parent).data().toString();
|
||||
|
||||
gui->incomingTransaction(date, walletModel->getOptionsModel()->getDisplayUnit(), amount, type, address);
|
||||
emit incomingTransaction(date, walletModel->getOptionsModel()->getDisplayUnit(), amount, type, address);
|
||||
}
|
||||
|
||||
void WalletView::gotoOverviewPage()
|
||||
@@ -199,9 +204,9 @@ void WalletView::showOutOfSyncWarning(bool fShow)
|
||||
overviewPage->showOutOfSyncWarning(fShow);
|
||||
}
|
||||
|
||||
void WalletView::setEncryptionStatus()
|
||||
void WalletView::updateEncryptionStatus()
|
||||
{
|
||||
gui->setEncryptionStatus(walletModel->getEncryptionStatus());
|
||||
emit encryptionStatusChanged(walletModel->getEncryptionStatus());
|
||||
}
|
||||
|
||||
void WalletView::encryptWallet(bool status)
|
||||
@@ -212,7 +217,7 @@ void WalletView::encryptWallet(bool status)
|
||||
dlg.setModel(walletModel);
|
||||
dlg.exec();
|
||||
|
||||
setEncryptionStatus();
|
||||
updateEncryptionStatus();
|
||||
}
|
||||
|
||||
void WalletView::backupWallet()
|
||||
|
||||
Reference in New Issue
Block a user