Bitcoin Core  21.99.0
P2P Digital Currency
walletview.cpp
Go to the documentation of this file.
1 // Copyright (c) 2011-2020 The Bitcoin Core developers
2 // Distributed under the MIT software license, see the accompanying
3 // file COPYING or http://www.opensource.org/licenses/mit-license.php.
4 
5 #include <qt/walletview.h>
6 
7 #include <qt/addressbookpage.h>
9 #include <qt/clientmodel.h>
10 #include <qt/guiutil.h>
12 #include <qt/optionsmodel.h>
13 #include <qt/overviewpage.h>
14 #include <qt/platformstyle.h>
15 #include <qt/receivecoinsdialog.h>
16 #include <qt/sendcoinsdialog.h>
19 #include <qt/transactionview.h>
20 #include <qt/walletmodel.h>
21 
22 #include <interfaces/node.h>
23 #include <node/ui_interface.h>
24 #include <psbt.h>
25 #include <util/strencodings.h>
26 
27 #include <QAction>
28 #include <QActionGroup>
29 #include <QApplication>
30 #include <QClipboard>
31 #include <QFileDialog>
32 #include <QHBoxLayout>
33 #include <QProgressDialog>
34 #include <QPushButton>
35 #include <QVBoxLayout>
36 
37 WalletView::WalletView(const PlatformStyle *_platformStyle, QWidget *parent):
38  QStackedWidget(parent),
39  clientModel(nullptr),
40  walletModel(nullptr),
41  platformStyle(_platformStyle)
42 {
43  // Create tabs
45 
46  transactionsPage = new QWidget(this);
47  QVBoxLayout *vbox = new QVBoxLayout();
48  QHBoxLayout *hbox_buttons = new QHBoxLayout();
50  vbox->addWidget(transactionView);
51  QPushButton *exportButton = new QPushButton(tr("&Export"), this);
52  exportButton->setToolTip(tr("Export the data in the current tab to a file"));
54  exportButton->setIcon(platformStyle->SingleColorIcon(":/icons/export"));
55  }
56  hbox_buttons->addStretch();
57  hbox_buttons->addWidget(exportButton);
58  vbox->addLayout(hbox_buttons);
59  transactionsPage->setLayout(vbox);
60 
63 
66 
67  addWidget(overviewPage);
68  addWidget(transactionsPage);
69  addWidget(receiveCoinsPage);
70  addWidget(sendCoinsPage);
71 
73  // Clicking on a transaction on the overview pre-selects the transaction on the transaction history page
75 
77 
79  // Highlight transaction after send
81 
82  // Clicking on "Export" allows to export the transaction list
83  connect(exportButton, &QPushButton::clicked, transactionView, &TransactionView::exportClicked);
84 
85  // Pass through messages from sendCoinsPage
87  // Pass through messages from transactionView
89 
91 }
92 
94 {
95 }
96 
98 {
99  this->clientModel = _clientModel;
100 
101  overviewPage->setClientModel(_clientModel);
102  sendCoinsPage->setClientModel(_clientModel);
103  if (walletModel) walletModel->setClientModel(_clientModel);
104 }
105 
107 {
108  this->walletModel = _walletModel;
109 
110  // Put transaction list in tabs
111  transactionView->setModel(_walletModel);
112  overviewPage->setWalletModel(_walletModel);
113  receiveCoinsPage->setModel(_walletModel);
114  sendCoinsPage->setModel(_walletModel);
115  usedReceivingAddressesPage->setModel(_walletModel ? _walletModel->getAddressTableModel() : nullptr);
116  usedSendingAddressesPage->setModel(_walletModel ? _walletModel->getAddressTableModel() : nullptr);
117 
118  if (_walletModel)
119  {
120  // Receive and pass through messages from wallet model
121  connect(_walletModel, &WalletModel::message, this, &WalletView::message);
122 
123  // Handle changes in encryption status
126 
127  // update HD status
128  Q_EMIT hdEnabledStatusChanged();
129 
130  // Balloon pop-up for new transaction
131  connect(_walletModel->getTransactionTableModel(), &TransactionTableModel::rowsInserted, this, &WalletView::processNewTransaction);
132 
133  // Ask for passphrase if needed
134  connect(_walletModel, &WalletModel::requireUnlock, this, &WalletView::unlockWallet);
135 
136  // Show progress dialog
137  connect(_walletModel, &WalletModel::showProgress, this, &WalletView::showProgress);
138  }
139 }
140 
141 void WalletView::processNewTransaction(const QModelIndex& parent, int start, int /*end*/)
142 {
143  // Prevent balloon-spam when initial block download is in progress
145  return;
146 
148  if (!ttm || ttm->processingQueuedTransactions())
149  return;
150 
151  QString date = ttm->index(start, TransactionTableModel::Date, parent).data().toString();
152  qint64 amount = ttm->index(start, TransactionTableModel::Amount, parent).data(Qt::EditRole).toULongLong();
153  QString type = ttm->index(start, TransactionTableModel::Type, parent).data().toString();
154  QModelIndex index = ttm->index(start, 0, parent);
155  QString address = ttm->data(index, TransactionTableModel::AddressRole).toString();
156  QString label = GUIUtil::HtmlEscape(ttm->data(index, TransactionTableModel::LabelRole).toString());
157 
158  Q_EMIT incomingTransaction(date, walletModel->getOptionsModel()->getDisplayUnit(), amount, type, address, label, GUIUtil::HtmlEscape(walletModel->getWalletName()));
159 }
160 
162 {
163  setCurrentWidget(overviewPage);
164 }
165 
167 {
168  setCurrentWidget(transactionsPage);
169 }
170 
172 {
173  setCurrentWidget(receiveCoinsPage);
174 }
175 
177 {
178  setCurrentWidget(sendCoinsPage);
179 
180  if (!addr.isEmpty())
181  sendCoinsPage->setAddress(addr);
182 }
183 
185 {
186  // calls show() in showTab_SM()
187  SignVerifyMessageDialog *signVerifyMessageDialog = new SignVerifyMessageDialog(platformStyle, this);
188  signVerifyMessageDialog->setAttribute(Qt::WA_DeleteOnClose);
189  signVerifyMessageDialog->setModel(walletModel);
190  signVerifyMessageDialog->showTab_SM(true);
191 
192  if (!addr.isEmpty())
193  signVerifyMessageDialog->setAddress_SM(addr);
194 }
195 
197 {
198  // calls show() in showTab_VM()
199  SignVerifyMessageDialog *signVerifyMessageDialog = new SignVerifyMessageDialog(platformStyle, this);
200  signVerifyMessageDialog->setAttribute(Qt::WA_DeleteOnClose);
201  signVerifyMessageDialog->setModel(walletModel);
202  signVerifyMessageDialog->showTab_VM(true);
203 
204  if (!addr.isEmpty())
205  signVerifyMessageDialog->setAddress_VM(addr);
206 }
207 
208 void WalletView::gotoLoadPSBT(bool from_clipboard)
209 {
210  std::string data;
211 
212  if (from_clipboard) {
213  std::string raw = QApplication::clipboard()->text().toStdString();
214  bool invalid;
215  data = DecodeBase64(raw, &invalid);
216  if (invalid) {
217  Q_EMIT message(tr("Error"), tr("Unable to decode PSBT from clipboard (invalid base64)"), CClientUIInterface::MSG_ERROR);
218  return;
219  }
220  } else {
221  QString filename = GUIUtil::getOpenFileName(this,
222  tr("Load Transaction Data"), QString(),
223  tr("Partially Signed Transaction (*.psbt)"), nullptr);
224  if (filename.isEmpty()) return;
225  if (GetFileSize(filename.toLocal8Bit().data(), MAX_FILE_SIZE_PSBT) == MAX_FILE_SIZE_PSBT) {
226  Q_EMIT message(tr("Error"), tr("PSBT file must be smaller than 100 MiB"), CClientUIInterface::MSG_ERROR);
227  return;
228  }
229  std::ifstream in(filename.toLocal8Bit().data(), std::ios::binary);
230  data = std::string(std::istreambuf_iterator<char>{in}, {});
231  }
232 
233  std::string error;
235  if (!DecodeRawPSBT(psbtx, data, error)) {
236  Q_EMIT message(tr("Error"), tr("Unable to decode PSBT") + "\n" + QString::fromStdString(error), CClientUIInterface::MSG_ERROR);
237  return;
238  }
239 
241  dlg->openWithPSBT(psbtx);
242  dlg->setAttribute(Qt::WA_DeleteOnClose);
243  dlg->exec();
244 }
245 
247 {
248  return sendCoinsPage->handlePaymentRequest(recipient);
249 }
250 
252 {
254 }
255 
257 {
258  Q_EMIT encryptionStatusChanged();
259 }
260 
262 {
263  if(!walletModel)
264  return;
266  dlg.setModel(walletModel);
267  dlg.exec();
268 
270 }
271 
273 {
274  QString filename = GUIUtil::getSaveFileName(this,
275  tr("Backup Wallet"), QString(),
276  tr("Wallet Data", "Name of wallet data file format") + QLatin1String(" (*.dat)"), nullptr);
277 
278  if (filename.isEmpty())
279  return;
280 
281  if (!walletModel->wallet().backupWallet(filename.toLocal8Bit().data())) {
282  Q_EMIT message(tr("Backup Failed"), tr("There was an error trying to save the wallet data to %1.").arg(filename),
284  }
285  else {
286  Q_EMIT message(tr("Backup Successful"), tr("The wallet data was successfully saved to %1.").arg(filename),
288  }
289 }
290 
292 {
294  dlg.setModel(walletModel);
295  dlg.exec();
296 }
297 
299 {
300  if(!walletModel)
301  return;
302  // Unlock wallet when requested by wallet model
304  {
306  dlg.setModel(walletModel);
307  dlg.exec();
308  }
309 }
310 
312 {
313  if(!walletModel)
314  return;
315 
317 }
318 
320 {
321  if(!walletModel)
322  return;
323 
325 }
326 
327 void WalletView::showProgress(const QString &title, int nProgress)
328 {
329  if (nProgress == 0) {
330  progressDialog = new QProgressDialog(title, tr("Cancel"), 0, 100);
332  progressDialog->setWindowModality(Qt::ApplicationModal);
333  progressDialog->setMinimumDuration(0);
334  progressDialog->setAutoClose(false);
335  progressDialog->setValue(0);
336  } else if (nProgress == 100) {
337  if (progressDialog) {
338  progressDialog->close();
339  progressDialog->deleteLater();
340  progressDialog = nullptr;
341  }
342  } else if (progressDialog) {
343  if (progressDialog->wasCanceled()) {
345  } else {
346  progressDialog->setValue(nProgress);
347  }
348  }
349 }
350 
352 {
353  Q_EMIT outOfSyncWarningClicked();
354 }
WalletView::sendCoinsPage
SendCoinsDialog * sendCoinsPage
Definition: walletview.h:63
signverifymessagedialog.h
TransactionView
Widget showing the transaction list for a wallet, including a filter row.
Definition: transactionview.h:32
CClientUIInterface::MSG_INFORMATION
@ MSG_INFORMATION
Predefined combinations for certain default usage cases.
Definition: ui_interface.h:66
WalletModel::getOptionsModel
OptionsModel * getOptionsModel()
Definition: walletmodel.cpp:281
transactiontablemodel.h
WalletView::platformStyle
const PlatformStyle * platformStyle
Definition: walletview.h:70
AddressBookPage::setModel
void setModel(AddressTableModel *model)
Definition: addressbookpage.cpp:148
AddressBookPage::SendingTab
@ SendingTab
Definition: addressbookpage.h:32
fsbridge::ifstream
fs::ifstream ifstream
Definition: fs.h:101
ReceiveCoinsDialog
Dialog for requesting payment of bitcoins.
Definition: receivecoinsdialog.h:30
SendCoinsDialog::coinsSent
void coinsSent(const uint256 &txid)
WalletView::transactionView
TransactionView * transactionView
Definition: walletview.h:67
AskPassphraseDialog::Unlock
@ Unlock
Ask passphrase and unlock.
Definition: askpassphrasedialog.h:27
ReceiveCoinsDialog::setModel
void setModel(WalletModel *model)
Definition: receivecoinsdialog.cpp:86
TransactionTableModel::Date
@ Date
Definition: transactiontablemodel.h:37
WalletModel
Interface to Bitcoin wallet from Qt view code.
Definition: walletmodel.h:51
OverviewPage::outOfSyncWarningClicked
void outOfSyncWarningClicked()
TransactionTableModel::AddressRole
@ AddressRole
Address of transaction.
Definition: transactiontablemodel.h:58
SignVerifyMessageDialog::setAddress_VM
void setAddress_VM(const QString &address)
Definition: signverifymessagedialog.cpp:70
WalletView::showOutOfSyncWarning
void showOutOfSyncWarning(bool fShow)
Definition: walletview.cpp:251
PlatformStyle::SingleColorIcon
QIcon SingleColorIcon(const QString &filename) const
Colorize an icon (given filename) with the icon color.
Definition: platformstyle.cpp:102
WalletView::usedSendingAddressesPage
AddressBookPage * usedSendingAddressesPage
Definition: walletview.h:64
addressbookpage.h
SignVerifyMessageDialog::showTab_VM
void showTab_VM(bool fShow)
Definition: signverifymessagedialog.cpp:83
sendcoinsdialog.h
TransactionView::focusTransaction
void focusTransaction(const QModelIndex &)
Definition: transactionview.cpp:593
walletmodel.h
WalletView::gotoReceiveCoinsPage
void gotoReceiveCoinsPage()
Switch to receive coins page.
Definition: walletview.cpp:171
WalletView::overviewPage
OverviewPage * overviewPage
Definition: walletview.h:60
WalletModel::getAddressTableModel
AddressTableModel * getAddressTableModel()
Definition: walletmodel.cpp:286
ClientModel::node
interfaces::Node & node() const
Definition: clientmodel.h:54
OverviewPage
Overview ("home") page widget.
Definition: overviewpage.h:28
AskPassphraseDialog
Multifunctional dialog to ask for passphrases.
Definition: askpassphrasedialog.h:20
WalletView::showProgress
void showProgress(const QString &title, int nProgress)
Show progress dialog e.g.
Definition: walletview.cpp:327
WalletView::clientModel
ClientModel * clientModel
Definition: walletview.h:57
WalletModel::getTransactionTableModel
TransactionTableModel * getTransactionTableModel()
Definition: walletmodel.cpp:291
GUIUtil::bringToFront
void bringToFront(QWidget *w)
Definition: guiutil.cpp:375
WalletView::setPrivacy
void setPrivacy(bool privacy)
WalletView::handlePaymentRequest
bool handlePaymentRequest(const SendCoinsRecipient &recipient)
Definition: walletview.cpp:246
SignVerifyMessageDialog::setModel
void setModel(WalletModel *model)
Definition: signverifymessagedialog.cpp:59
WalletView::gotoSendCoinsPage
void gotoSendCoinsPage(QString addr="")
Switch to send coins page.
Definition: walletview.cpp:176
WalletView::gotoSignMessageTab
void gotoSignMessageTab(QString addr="")
Show Sign/Verify Message dialog and switch to sign message tab.
Definition: walletview.cpp:184
WalletView::encryptWallet
void encryptWallet()
Encrypt the wallet.
Definition: walletview.cpp:261
WalletModel::setClientModel
void setClientModel(ClientModel *client_model)
Definition: walletmodel.cpp:72
SignVerifyMessageDialog
Definition: signverifymessagedialog.h:17
overviewpage.h
WalletView::incomingTransaction
void incomingTransaction(const QString &date, int unit, const CAmount &amount, const QString &type, const QString &address, const QString &label, const QString &walletName)
Notify that a new transaction appeared.
WalletView::processNewTransaction
void processNewTransaction(const QModelIndex &parent, int start, int)
Show incoming transaction notification for new transactions.
Definition: walletview.cpp:141
TransactionTableModel::index
QModelIndex index(int row, int column, const QModelIndex &parent=QModelIndex()) const override
Definition: transactiontablemodel.cpp:696
WalletView::hdEnabledStatusChanged
void hdEnabledStatusChanged()
HD-Enabled status of wallet changed (only possible during startup)
strencodings.h
SendCoinsRecipient
Definition: sendcoinsrecipient.h:19
PSBTOperationsDialog::openWithPSBT
void openWithPSBT(PartiallySignedTransaction psbtx)
Definition: psbtoperationsdialog.cpp:46
WalletView::getWalletModel
WalletModel * getWalletModel()
Definition: walletview.h:45
WalletModel::wallet
interfaces::Wallet & wallet() const
Definition: walletmodel.h:146
WalletModel::showProgress
void showProgress(const QString &title, int nProgress)
WalletView::setClientModel
void setClientModel(ClientModel *clientModel)
Set the client model.
Definition: walletview.cpp:97
WalletView::requestedSyncWarningInfo
void requestedSyncWarningInfo()
User has requested more information about the out of sync state.
Definition: walletview.cpp:351
GUIUtil::getOpenFileName
QString getOpenFileName(QWidget *parent, const QString &caption, const QString &dir, const QString &filter, QString *selectedSuffixOut)
Get open filename, convenience wrapper for QFileDialog::getOpenFileName.
Definition: guiutil.cpp:316
WalletModel::encryptionStatusChanged
void encryptionStatusChanged()
WalletModel::message
void message(const QString &title, const QString &message, unsigned int style)
PlatformStyle::getImagesOnButtons
bool getImagesOnButtons() const
Definition: platformstyle.h:21
node.h
DecodeBase64
std::vector< unsigned char > DecodeBase64(const char *p, bool *pf_invalid)
Definition: strencodings.cpp:147
SendCoinsDialog::handlePaymentRequest
bool handlePaymentRequest(const SendCoinsRecipient &recipient)
Definition: sendcoinsdialog.cpp:601
WalletView::usedReceivingAddressesPage
AddressBookPage * usedReceivingAddressesPage
Definition: walletview.h:65
OverviewPage::setClientModel
void setClientModel(ClientModel *clientModel)
Definition: overviewpage.cpp:253
WalletView::updateEncryptionStatus
void updateEncryptionStatus()
Re-emit encryption status signal.
Definition: walletview.cpp:256
WalletView::message
void message(const QString &title, const QString &message, unsigned int style)
Fired when a message should be reported to the user.
WalletModel::getEncryptionStatus
EncryptionStatus getEncryptionStatus() const
Definition: walletmodel.cpp:301
GUIUtil::PolishProgressDialog
void PolishProgressDialog(QProgressDialog *dialog)
Definition: guiutil.cpp:804
AddressBookPage
Widget that shows a list of sending or receiving addresses.
Definition: addressbookpage.h:26
SendCoinsDialog
Dialog for sending bitcoins.
Definition: sendcoinsdialog.h:31
guiutil.h
WalletModel::getWalletName
QString getWalletName() const
Definition: walletmodel.cpp:576
WalletView::transactionsPage
QWidget * transactionsPage
Definition: walletview.h:61
TransactionView::message
void message(const QString &title, const QString &message, unsigned int style)
Fired when a message should be reported to the user.
interfaces::Wallet::backupWallet
virtual bool backupWallet(const std::string &filename)=0
Back up wallet.
WalletView::encryptionStatusChanged
void encryptionStatusChanged()
Encryption status of wallet changed.
TransactionTableModel::Amount
@ Amount
Definition: transactiontablemodel.h:40
SendCoinsDialog::setAddress
void setAddress(const QString &address)
Definition: sendcoinsdialog.cpp:557
uint256
256-bit opaque blob.
Definition: uint256.h:124
WalletView::gotoVerifyMessageTab
void gotoVerifyMessageTab(QString addr="")
Show Sign/Verify Message dialog and switch to verify message tab.
Definition: walletview.cpp:196
WalletModel::Locked
@ Locked
Definition: walletmodel.h:75
walletview.h
interfaces::Node::isInitialBlockDownload
virtual bool isInitialBlockDownload()=0
Is initial block download.
WalletView::WalletView
WalletView(const PlatformStyle *platformStyle, QWidget *parent)
Definition: walletview.cpp:37
TransactionTableModel::processingQueuedTransactions
bool processingQueuedTransactions() const
Definition: transactiontablemodel.h:84
GetFileSize
std::streampos GetFileSize(const char *path, std::streamsize max)
Get the size of a file by scanning it.
Definition: system.cpp:147
DecodeRawPSBT
bool DecodeRawPSBT(PartiallySignedTransaction &psbt, const std::string &tx_data, std::string &error)
Decode a raw (binary blob) PSBT into a PartiallySignedTransaction.
Definition: psbt.cpp:364
SignVerifyMessageDialog::setAddress_SM
void setAddress_SM(const QString &address)
Definition: signverifymessagedialog.cpp:64
ui_interface.h
OverviewPage::transactionClicked
void transactionClicked(const QModelIndex &index)
GUIUtil::getSaveFileName
QString getSaveFileName(QWidget *parent, const QString &caption, const QString &dir, const QString &filter, QString *selectedSuffixOut)
Get save filename, mimics QFileDialog::getSaveFileName, except that it appends a default suffix when ...
Definition: guiutil.cpp:270
platformstyle.h
CClientUIInterface::MSG_ERROR
@ MSG_ERROR
Definition: ui_interface.h:68
ClientModel
Model for Bitcoin network client.
Definition: clientmodel.h:46
TransactionTableModel
UI model for the transaction table of a wallet.
Definition: transactiontablemodel.h:26
WalletView::outOfSyncWarningClicked
void outOfSyncWarningClicked()
Notify that the out of sync warning icon has been pressed.
WalletView::~WalletView
~WalletView()
Definition: walletview.cpp:93
receivecoinsdialog.h
GUIUtil::HtmlEscape
QString HtmlEscape(const QString &str, bool fMultiLine)
Definition: guiutil.cpp:223
WalletView::coinsSent
void coinsSent()
WalletView::gotoOverviewPage
void gotoOverviewPage()
Switch to overview (home) page.
Definition: walletview.cpp:161
OptionsModel::getDisplayUnit
int getDisplayUnit() const
Definition: optionsmodel.h:86
SendCoinsDialog::setClientModel
void setClientModel(ClientModel *clientModel)
Definition: sendcoinsdialog.cpp:134
WalletView::setWalletModel
void setWalletModel(WalletModel *walletModel)
Set the wallet model.
Definition: walletview.cpp:106
PartiallySignedTransaction
A version of CTransaction with the PSBT format.
Definition: psbt.h:391
WalletView::changePassphrase
void changePassphrase()
Change encrypted wallet passphrase.
Definition: walletview.cpp:291
interfaces::Wallet::abortRescan
virtual void abortRescan()=0
Abort a rescan.
TransactionTableModel::Type
@ Type
Definition: transactiontablemodel.h:38
TransactionView::setModel
void setModel(WalletModel *model)
Definition: transactionview.cpp:226
WalletModel::requireUnlock
void requireUnlock()
SendCoinsDialog::setModel
void setModel(WalletModel *model)
Definition: sendcoinsdialog.cpp:143
WalletView::unlockWallet
void unlockWallet()
Ask for passphrase to unlock wallet temporarily.
Definition: walletview.cpp:298
WalletView::gotoLoadPSBT
void gotoLoadPSBT(bool from_clipboard=false)
Load Partially Signed Bitcoin Transaction.
Definition: walletview.cpp:208
WalletView::walletModel
WalletModel * walletModel
Definition: walletview.h:58
WalletView::backupWallet
void backupWallet()
Backup the wallet.
Definition: walletview.cpp:272
SendCoinsDialog::message
void message(const QString &title, const QString &message, unsigned int style)
WalletView::receiveCoinsPage
ReceiveCoinsDialog * receiveCoinsPage
Definition: walletview.h:62
transactionview.h
OverviewPage::setWalletModel
void setWalletModel(WalletModel *walletModel)
Definition: overviewpage.cpp:266
OverviewPage::setPrivacy
void setPrivacy(bool privacy)
Definition: overviewpage.cpp:182
MAX_FILE_SIZE_PSBT
const std::streamsize MAX_FILE_SIZE_PSBT
Definition: psbt.h:46
AskPassphraseDialog::ChangePass
@ ChangePass
Ask old passphrase + new passphrase twice.
Definition: askpassphrasedialog.h:28
WalletView::usedSendingAddresses
void usedSendingAddresses()
Show used sending addresses.
Definition: walletview.cpp:311
optionsmodel.h
error
bool error(const char *fmt, const Args &... args)
Definition: system.h:50
WalletView::usedReceivingAddresses
void usedReceivingAddresses()
Show used receiving addresses.
Definition: walletview.cpp:319
PlatformStyle
Definition: platformstyle.h:13
WalletView::transactionClicked
void transactionClicked()
psbtoperationsdialog.h
OverviewPage::showOutOfSyncWarning
void showOutOfSyncWarning(bool fShow)
Definition: overviewpage.cpp:322
AskPassphraseDialog::Encrypt
@ Encrypt
Ask passphrase twice and encrypt.
Definition: askpassphrasedialog.h:26
SignVerifyMessageDialog::showTab_SM
void showTab_SM(bool fShow)
Definition: signverifymessagedialog.cpp:76
WalletView::gotoHistoryPage
void gotoHistoryPage()
Switch to history (transactions) page.
Definition: walletview.cpp:166
TransactionView::exportClicked
void exportClicked()
Definition: transactionview.cpp:351
TransactionTableModel::LabelRole
@ LabelRole
Label of address related to transaction.
Definition: transactiontablemodel.h:60
askpassphrasedialog.h
AddressBookPage::ForEditing
@ ForEditing
Open address book for editing.
Definition: addressbookpage.h:38
clientmodel.h
WalletView::progressDialog
QProgressDialog * progressDialog
Definition: walletview.h:69
AddressBookPage::ReceivingTab
@ ReceivingTab
Definition: addressbookpage.h:33
AskPassphraseDialog::setModel
void setModel(WalletModel *model)
Definition: askpassphrasedialog.cpp:81
PSBTOperationsDialog
Dialog showing transaction details.
Definition: psbtoperationsdialog.h:19
TransactionTableModel::data
QVariant data(const QModelIndex &index, int role) const override
Definition: transactiontablemodel.cpp:523