35
35
#include < QSettings>
36
36
#include < QVBoxLayout>
37
37
38
- WalletView::WalletView (QWidget* parent) :
39
- QStackedWidget(parent),
40
- clientModel(nullptr ),
41
- walletModel(nullptr )
38
+ WalletView::WalletView (WalletModel* wallet_model, QWidget* parent)
39
+ : QStackedWidget(parent),
40
+ clientModel(nullptr ),
41
+ walletModel(wallet_model )
42
42
{
43
+ assert (walletModel);
44
+
43
45
// Create tabs
44
46
overviewPage = new OverviewPage ();
47
+ overviewPage->setWalletModel (walletModel);
45
48
46
49
transactionsPage = new QWidget (this );
47
50
QVBoxLayout *vbox = new QVBoxLayout ();
48
51
QHBoxLayout *hbox_buttons = new QHBoxLayout ();
49
52
transactionView = new TransactionView (this );
53
+ transactionView->setModel (walletModel);
54
+
50
55
vbox->addWidget (transactionView);
51
56
QPushButton *exportButton = new QPushButton (tr (" &Export" ), this );
52
57
exportButton->setToolTip (tr (" Export the data in the current tab to a file" ));
@@ -75,11 +80,19 @@ WalletView::WalletView(QWidget* parent) :
75
80
transactionsPage->setLayout (vbox);
76
81
77
82
receiveCoinsPage = new ReceiveCoinsDialog ();
83
+ receiveCoinsPage->setModel (walletModel);
84
+
78
85
sendCoinsPage = new SendCoinsDialog ();
86
+ sendCoinsPage->setModel (walletModel);
87
+
79
88
coinJoinCoinsPage = new SendCoinsDialog (true );
89
+ coinJoinCoinsPage->setModel (walletModel);
80
90
81
91
usedSendingAddressesPage = new AddressBookPage (AddressBookPage::ForEditing, AddressBookPage::SendingTab, this );
92
+ usedSendingAddressesPage->setModel (walletModel->getAddressTableModel ());
93
+
82
94
usedReceivingAddressesPage = new AddressBookPage (AddressBookPage::ForEditing, AddressBookPage::ReceivingTab, this );
95
+ usedReceivingAddressesPage->setModel (walletModel->getAddressTableModel ());
83
96
84
97
addWidget (overviewPage);
85
98
addWidget (transactionsPage);
@@ -90,6 +103,7 @@ WalletView::WalletView(QWidget* parent) :
90
103
QSettings settings;
91
104
if (settings.value (" fShowMasternodesTab" ).toBool ()) {
92
105
masternodeListPage = new MasternodeList ();
106
+ masternodeListPage->setWalletModel (walletModel);
93
107
addWidget (masternodeListPage);
94
108
}
95
109
if (settings.value (" fShowGovernanceTab" ).toBool ()) {
@@ -123,6 +137,21 @@ WalletView::WalletView(QWidget* parent) :
123
137
124
138
connect (this , &WalletView::setPrivacy, overviewPage, &OverviewPage::setPrivacy);
125
139
140
+ // Receive and pass through messages from wallet model
141
+ connect (walletModel, &WalletModel::message, this , &WalletView::message);
142
+
143
+ // Handle changes in encryption status
144
+ connect (walletModel, &WalletModel::encryptionStatusChanged, this , &WalletView::encryptionStatusChanged);
145
+
146
+ // Balloon pop-up for new transaction
147
+ connect (walletModel->getTransactionTableModel (), &TransactionTableModel::rowsInserted, this , &WalletView::processNewTransaction);
148
+
149
+ // Ask for passphrase if needed
150
+ connect (walletModel, &WalletModel::requireUnlock, this , &WalletView::unlockWallet);
151
+
152
+ // Show progress dialog
153
+ connect (walletModel, &WalletModel::showProgress, this , &WalletView::showProgress);
154
+
126
155
GUIUtil::disableMacFocusRect (this );
127
156
}
128
157
@@ -150,50 +179,15 @@ void WalletView::setClientModel(ClientModel *_clientModel)
150
179
if (settings.value (" fShowGovernanceTab" ).toBool () && governanceListPage != nullptr ) {
151
180
governanceListPage->setClientModel (_clientModel);
152
181
}
153
- if (walletModel) walletModel->setClientModel (_clientModel);
154
- }
155
-
156
- void WalletView::setWalletModel (WalletModel *_walletModel)
157
- {
158
- this ->walletModel = _walletModel;
159
-
160
- // Put transaction list in tabs
161
- transactionView->setModel (_walletModel);
162
- overviewPage->setWalletModel (_walletModel);
163
- QSettings settings;
164
- if (settings.value (" fShowMasternodesTab" ).toBool ()) {
165
- masternodeListPage->setWalletModel (_walletModel);
166
- }
167
- receiveCoinsPage->setModel (_walletModel);
168
- sendCoinsPage->setModel (_walletModel);
169
- coinJoinCoinsPage->setModel (_walletModel);
170
- usedReceivingAddressesPage->setModel (_walletModel ? _walletModel->getAddressTableModel () : nullptr );
171
- usedSendingAddressesPage->setModel (_walletModel ? _walletModel->getAddressTableModel () : nullptr );
172
-
173
- if (_walletModel)
174
- {
175
- // Receive and pass through messages from wallet model
176
- connect (_walletModel, &WalletModel::message, this , &WalletView::message);
177
-
178
- // Handle changes in encryption status
179
- connect (_walletModel, &WalletModel::encryptionStatusChanged, this , &WalletView::encryptionStatusChanged);
180
-
181
- // Balloon pop-up for new transaction
182
- connect (_walletModel->getTransactionTableModel (), &TransactionTableModel::rowsInserted, this , &WalletView::processNewTransaction);
183
-
184
- // Ask for passphrase if needed
185
- connect (_walletModel, &WalletModel::requireUnlock, this , &WalletView::unlockWallet);
186
-
187
- // Show progress dialog
188
- connect (_walletModel, &WalletModel::showProgress, this , &WalletView::showProgress);
189
- }
182
+ walletModel->setClientModel (_clientModel);
190
183
}
191
184
192
185
void WalletView::processNewTransaction (const QModelIndex& parent, int start, int /* end*/ )
193
186
{
194
187
// Prevent balloon-spam when initial block download is in progress
195
- if (!walletModel || ! clientModel || clientModel->node ().isInitialBlockDownload ())
188
+ if (!clientModel || clientModel->node ().isInitialBlockDownload ()) {
196
189
return ;
190
+ }
197
191
198
192
TransactionTableModel *ttm = walletModel->getTransactionTableModel ();
199
193
if (!ttm || ttm->processingQueuedTransactions ())
@@ -302,8 +296,6 @@ void WalletView::showOutOfSyncWarning(bool fShow)
302
296
303
297
void WalletView::encryptWallet ()
304
298
{
305
- if (!walletModel)
306
- return ;
307
299
AskPassphraseDialog dlg (AskPassphraseDialog::Encrypt, this );
308
300
dlg.setModel (walletModel);
309
301
dlg.exec ();
@@ -340,10 +332,7 @@ void WalletView::changePassphrase()
340
332
341
333
void WalletView::unlockWallet (bool fForMixingOnly )
342
334
{
343
- if (!walletModel)
344
- return ;
345
335
// Unlock wallet when requested by wallet model
346
-
347
336
if (walletModel->getEncryptionStatus () == WalletModel::Locked || walletModel->getEncryptionStatus () == WalletModel::UnlockedForMixingOnly)
348
337
{
349
338
AskPassphraseDialog dlg (fForMixingOnly ? AskPassphraseDialog::UnlockMixing : AskPassphraseDialog::Unlock, this );
@@ -354,25 +343,16 @@ void WalletView::unlockWallet(bool fForMixingOnly)
354
343
355
344
void WalletView::lockWallet ()
356
345
{
357
- if (!walletModel)
358
- return ;
359
-
360
346
walletModel->setWalletLocked (true );
361
347
}
362
348
363
349
void WalletView::usedSendingAddresses ()
364
350
{
365
- if (!walletModel)
366
- return ;
367
-
368
351
GUIUtil::bringToFront (usedSendingAddressesPage);
369
352
}
370
353
371
354
void WalletView::usedReceivingAddresses ()
372
355
{
373
- if (!walletModel)
374
- return ;
375
-
376
356
GUIUtil::bringToFront (usedReceivingAddressesPage);
377
357
}
378
358
0 commit comments