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 /src | |
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.
![mask values - hiding wallet balances on overview tab but not on transactions tab](https://user-images.githubusercontent.com/110166421/216876325-56a68006-1be0-4b3f-b1e2-a0575c377cf5.gif)
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:
![mask values - hiding amounts on transactions tab](https://user-images.githubusercontent.com/110166421/216876440-0ff1a2ec-2ef2-405c-8b62-e4a94b9221cc.gif)
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
Diffstat (limited to 'src')
-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(); |