diff options
author | Hennadii Stepanov <32963518+hebasto@users.noreply.github.com> | 2023-03-14 10:01:23 +0000 |
---|---|---|
committer | Hennadii Stepanov <32963518+hebasto@users.noreply.github.com> | 2023-03-14 10:03:31 +0000 |
commit | 460e394625fab2942748aaeec9be31f460f91c58 (patch) | |
tree | b077471a6270948a32c26fb1dc2098e07df2d0b7 | |
parent | b175bdb9b25c0a95cc6d2340cf756f17aaa435fb (diff) | |
parent | 4492de1be11f4131811f504a037342c78f480e20 (diff) |
Merge bitcoin-core/gui#708: Mask values on Transactions View
4492de1be11f4131811f504a037342c78f480e20 qt: mask values on transactions view (pablomartin4btc)
Pull request description:
Currently the mask values option (Settings menu->Mask values) hides the wallet balances shown on the Overview page including the recent transactions list from the right panel but it doesn't hide the amounts from the transaction view.

This enhancement has been mentioned on PR #701 as a [desirable follow-up](https://github.com/bitcoin-core/gui/pull/701#issuecomment-1401350037).
First approach was to hide the amounts on the transactions view when mask values option is checked:

But later on as reviewer **furszy** recommended, I've disabled the Transaction tab directly and switch to the Overview tab if the mask values option is set, check the new screenshots in the [comment below](https://github.com/bitcoin-core/gui/pull/708#issuecomment-1449025828).
ACKs for top commit:
achow101:
ACK 4492de1be11f4131811f504a037342c78f480e20
furszy:
ACK 4492de1
hernanmarino:
ACK 4492de1be11f4131811f504a037342c78f480e20
Tree-SHA512: 94c04064cde456ab916cb91fc4619353cf4c8ef0e92aa1522a6b2c18a8d0fa641db9fddac04c2e1a290128879db598a9dfc4a0003dcf6e3413543908ada95afb
-rw-r--r-- | src/qt/bitcoingui.cpp | 11 | ||||
-rw-r--r-- | src/qt/bitcoingui.h | 2 | ||||
-rw-r--r-- | src/qt/transactionview.cpp | 15 | ||||
-rw-r--r-- | src/qt/transactionview.h | 4 | ||||
-rw-r--r-- | src/qt/walletview.cpp | 6 | ||||
-rw-r--r-- | src/qt/walletview.h | 3 |
6 files changed, 40 insertions, 1 deletions
diff --git a/src/qt/bitcoingui.cpp b/src/qt/bitcoingui.cpp index c025d4e3aa..0eae7d3e79 100644 --- a/src/qt/bitcoingui.cpp +++ b/src/qt/bitcoingui.cpp @@ -456,6 +456,7 @@ void BitcoinGUI::createActions() m_wallet_controller->closeAllWallets(this); }); connect(m_mask_values_action, &QAction::toggled, this, &BitcoinGUI::setPrivacy); + connect(m_mask_values_action, &QAction::toggled, this, &BitcoinGUI::enableHistoryAction); } #endif // ENABLE_WALLET @@ -668,6 +669,12 @@ void BitcoinGUI::setClientModel(ClientModel *_clientModel, interfaces::BlockAndH } #ifdef ENABLE_WALLET +void BitcoinGUI::enableHistoryAction(bool privacy) +{ + historyAction->setEnabled(!privacy); + if (historyAction->isChecked()) gotoOverviewPage(); +} + void BitcoinGUI::setWalletController(WalletController* wallet_controller) { assert(!m_wallet_controller); @@ -716,7 +723,9 @@ void BitcoinGUI::addWallet(WalletModel* walletModel) connect(wallet_view, &WalletView::encryptionStatusChanged, this, &BitcoinGUI::updateWalletStatus); connect(wallet_view, &WalletView::incomingTransaction, this, &BitcoinGUI::incomingTransaction); connect(this, &BitcoinGUI::setPrivacy, wallet_view, &WalletView::setPrivacy); - wallet_view->setPrivacy(isPrivacyModeActivated()); + const bool privacy = isPrivacyModeActivated(); + wallet_view->setPrivacy(privacy); + enableHistoryAction(privacy); const QString display_name = walletModel->getDisplayName(); m_wallet_selector->addItem(display_name, QVariant::fromValue(walletModel)); } diff --git a/src/qt/bitcoingui.h b/src/qt/bitcoingui.h index 1a83057146..92b889263b 100644 --- a/src/qt/bitcoingui.h +++ b/src/qt/bitcoingui.h @@ -288,6 +288,8 @@ public Q_SLOTS: void gotoVerifyMessageTab(QString addr = ""); /** Load Partially Signed Bitcoin Transaction from file or clipboard */ void gotoLoadPSBT(bool from_clipboard = false); + /** Enable history action when privacy is changed */ + void enableHistoryAction(bool privacy); /** Show open dialog */ void openClicked(); diff --git a/src/qt/transactionview.cpp b/src/qt/transactionview.cpp index aa5c82ddb1..351305f3fa 100644 --- a/src/qt/transactionview.cpp +++ b/src/qt/transactionview.cpp @@ -531,6 +531,7 @@ void TransactionView::showDetails() { TransactionDescDialog *dlg = new TransactionDescDialog(selection.at(0)); dlg->setAttribute(Qt::WA_DeleteOnClose); + m_opened_dialogs.append(dlg); dlg->show(); } } @@ -637,6 +638,11 @@ bool TransactionView::eventFilter(QObject *obj, QEvent *event) return true; } } + if (event->type() == QEvent::EnabledChange) { + if (!isEnabled()) { + closeOpenedDialogs(); + } + } return QWidget::eventFilter(obj, event); } @@ -646,3 +652,12 @@ void TransactionView::updateWatchOnlyColumn(bool fHaveWatchOnly) watchOnlyWidget->setVisible(fHaveWatchOnly); transactionView->setColumnHidden(TransactionTableModel::Watchonly, !fHaveWatchOnly); } + +void TransactionView::closeOpenedDialogs() +{ + // close all dialogs opened from this view + for (QDialog* dlg : m_opened_dialogs) { + dlg->close(); + } + m_opened_dialogs.clear(); +} diff --git a/src/qt/transactionview.h b/src/qt/transactionview.h index fe6e3ac7c0..29fb722afe 100644 --- a/src/qt/transactionview.h +++ b/src/qt/transactionview.h @@ -13,6 +13,7 @@ #include <QKeyEvent> class PlatformStyle; +class TransactionDescDialog; class TransactionFilterProxy; class WalletModel; @@ -90,6 +91,8 @@ private: const PlatformStyle* m_platform_style; + QList<TransactionDescDialog*> m_opened_dialogs; + private Q_SLOTS: void contextualMenu(const QPoint &); void dateRangeChanged(); @@ -121,6 +124,7 @@ public Q_SLOTS: void changedAmount(); void changedSearch(); void exportClicked(); + void closeOpenedDialogs(); void focusTransaction(const QModelIndex&); void focusTransaction(const uint256& txid); }; diff --git a/src/qt/walletview.cpp b/src/qt/walletview.cpp index e62821d5bd..09e0771534 100644 --- a/src/qt/walletview.cpp +++ b/src/qt/walletview.cpp @@ -93,6 +93,7 @@ WalletView::WalletView(WalletModel* wallet_model, const PlatformStyle* _platform connect(transactionView, &TransactionView::message, this, &WalletView::message); connect(this, &WalletView::setPrivacy, overviewPage, &OverviewPage::setPrivacy); + connect(this, &WalletView::setPrivacy, this, &WalletView::disableTransactionView); // Receive and pass through messages from wallet model connect(walletModel, &WalletModel::message, this, &WalletView::message); @@ -278,3 +279,8 @@ void WalletView::showProgress(const QString &title, int nProgress) } } } + +void WalletView::disableTransactionView(bool disable) +{ + transactionView->setDisabled(disable); +} diff --git a/src/qt/walletview.h b/src/qt/walletview.h index ebceef9cf9..475085044d 100644 --- a/src/qt/walletview.h +++ b/src/qt/walletview.h @@ -107,6 +107,9 @@ public Q_SLOTS: /** Show progress dialog e.g. for rescan */ void showProgress(const QString &title, int nProgress); +private Q_SLOTS: + void disableTransactionView(bool disable); + Q_SIGNALS: void setPrivacy(bool privacy); void transactionClicked(); |