Skip to content

Commit f05c1ac

Browse files
committed
Merge #17937: gui: Remove WalletView and BitcoinGUI circular dependency
cb8a86d gui: Remove WalletView and BitcoinGUI circular dependency (João Barbosa) ac3d107 gui: Add transactionClicked and coinsSent signals to WalletView (João Barbosa) Pull request description: Essentially moves the code in `WalletView::setBitcoinGUI` to the only caller. Two new signals are added beforehand in the first commit so that the connections in `WalletFrame` are all from the wallet view. ACKs for top commit: hebasto: ACK cb8a86d, tested on Linux Mint 19.3. jonasschnelli: utACK cb8a86d Tree-SHA512: 250316cd3689e51c8cded9ccd75963c836dcafa6db25d684f2aa691dea9738895f9140793e0f925784909e39f8257f7e1c7d611e8bd6d6634e1a50333f4ddb1e
2 parents cadb9d3 + cb8a86d commit f05c1ac

File tree

4 files changed

+12
-31
lines changed

4 files changed

+12
-31
lines changed

src/qt/walletframe.cpp

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,6 @@ bool WalletFrame::addWallet(WalletModel *walletModel)
4646
if (mapWalletViews.count(walletModel) > 0) return false;
4747

4848
WalletView *walletView = new WalletView(platformStyle, this);
49-
walletView->setBitcoinGUI(gui);
5049
walletView->setClientModel(clientModel);
5150
walletView->setWalletModel(walletModel);
5251
walletView->showOutOfSyncWarning(bOutOfSync);
@@ -62,6 +61,14 @@ bool WalletFrame::addWallet(WalletModel *walletModel)
6261
mapWalletViews[walletModel] = walletView;
6362

6463
connect(walletView, &WalletView::outOfSyncWarningClicked, this, &WalletFrame::outOfSyncWarningClicked);
64+
connect(walletView, &WalletView::transactionClicked, gui, &BitcoinGUI::gotoHistoryPage);
65+
connect(walletView, &WalletView::coinsSent, gui, &BitcoinGUI::gotoHistoryPage);
66+
connect(walletView, &WalletView::message, [this](const QString& title, const QString& message, unsigned int style) {
67+
gui->message(title, message, style);
68+
});
69+
connect(walletView, &WalletView::encryptionStatusChanged, gui, &BitcoinGUI::updateWalletStatus);
70+
connect(walletView, &WalletView::incomingTransaction, gui, &BitcoinGUI::incomingTransaction);
71+
connect(walletView, &WalletView::hdEnabledStatusChanged, gui, &BitcoinGUI::updateWalletStatus);
6572

6673
return true;
6774
}

src/qt/walletview.cpp

Lines changed: 2 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66

77
#include <qt/addressbookpage.h>
88
#include <qt/askpassphrasedialog.h>
9-
#include <qt/bitcoingui.h>
109
#include <qt/clientmodel.h>
1110
#include <qt/guiutil.h>
1211
#include <qt/optionsmodel.h>
@@ -65,11 +64,13 @@ WalletView::WalletView(const PlatformStyle *_platformStyle, QWidget *parent):
6564
addWidget(receiveCoinsPage);
6665
addWidget(sendCoinsPage);
6766

67+
connect(overviewPage, &OverviewPage::transactionClicked, this, &WalletView::transactionClicked);
6868
// Clicking on a transaction on the overview pre-selects the transaction on the transaction history page
6969
connect(overviewPage, &OverviewPage::transactionClicked, transactionView, static_cast<void (TransactionView::*)(const QModelIndex&)>(&TransactionView::focusTransaction));
7070

7171
connect(overviewPage, &OverviewPage::outOfSyncWarningClicked, this, &WalletView::requestedSyncWarningInfo);
7272

73+
connect(sendCoinsPage, &SendCoinsDialog::coinsSent, this, &WalletView::coinsSent);
7374
// Highlight transaction after send
7475
connect(sendCoinsPage, &SendCoinsDialog::coinsSent, transactionView, static_cast<void (TransactionView::*)(const uint256&)>(&TransactionView::focusTransaction));
7576

@@ -86,32 +87,6 @@ WalletView::~WalletView()
8687
{
8788
}
8889

89-
void WalletView::setBitcoinGUI(BitcoinGUI *gui)
90-
{
91-
if (gui)
92-
{
93-
// Clicking on a transaction on the overview page simply sends you to transaction history page
94-
connect(overviewPage, &OverviewPage::transactionClicked, gui, &BitcoinGUI::gotoHistoryPage);
95-
96-
// Navigate to transaction history page after send
97-
connect(sendCoinsPage, &SendCoinsDialog::coinsSent, gui, &BitcoinGUI::gotoHistoryPage);
98-
99-
// Receive and report messages
100-
connect(this, &WalletView::message, [gui](const QString &title, const QString &message, unsigned int style) {
101-
gui->message(title, message, style);
102-
});
103-
104-
// Pass through encryption status changed signals
105-
connect(this, &WalletView::encryptionStatusChanged, gui, &BitcoinGUI::updateWalletStatus);
106-
107-
// Pass through transaction notifications
108-
connect(this, &WalletView::incomingTransaction, gui, &BitcoinGUI::incomingTransaction);
109-
110-
// Connect HD enabled state signal
111-
connect(this, &WalletView::hdEnabledStatusChanged, gui, &BitcoinGUI::updateWalletStatus);
112-
}
113-
}
114-
11590
void WalletView::setClientModel(ClientModel *_clientModel)
11691
{
11792
this->clientModel = _clientModel;

src/qt/walletview.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99

1010
#include <QStackedWidget>
1111

12-
class BitcoinGUI;
1312
class ClientModel;
1413
class OverviewPage;
1514
class PlatformStyle;
@@ -39,7 +38,6 @@ class WalletView : public QStackedWidget
3938
explicit WalletView(const PlatformStyle *platformStyle, QWidget *parent);
4039
~WalletView();
4140

42-
void setBitcoinGUI(BitcoinGUI *gui);
4341
/** Set the client model.
4442
The client model represents the part of the core that communicates with the P2P network, and is wallet-agnostic.
4543
*/
@@ -115,6 +113,8 @@ public Q_SLOTS:
115113
void requestedSyncWarningInfo();
116114

117115
Q_SIGNALS:
116+
void transactionClicked();
117+
void coinsSent();
118118
/** Fired when a message should be reported to the user */
119119
void message(const QString &title, const QString &message, unsigned int style);
120120
/** Encryption status of wallet changed */

test/lint/lint-circular-dependencies.sh

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@ EXPECTED_CIRCULAR_DEPENDENCIES=(
1414
"policy/fees -> txmempool -> policy/fees"
1515
"qt/addresstablemodel -> qt/walletmodel -> qt/addresstablemodel"
1616
"qt/bitcoingui -> qt/walletframe -> qt/bitcoingui"
17-
"qt/bitcoingui -> qt/walletview -> qt/bitcoingui"
1817
"qt/clientmodel -> qt/peertablemodel -> qt/clientmodel"
1918
"qt/recentrequeststablemodel -> qt/walletmodel -> qt/recentrequeststablemodel"
2019
"qt/sendcoinsdialog -> qt/walletmodel -> qt/sendcoinsdialog"

0 commit comments

Comments
 (0)