From 4a8b90ef8212b1a268f55375303d8f389484ff99 Mon Sep 17 00:00:00 2001 From: jamescowens Date: Sun, 26 Apr 2020 21:05:10 -0400 Subject: [PATCH] Add options checkbox to disable transaction notifications --- src/qt/bitcoingui.cpp | 8 +++++--- src/qt/forms/optionsdialog.ui | 7 +++++++ src/qt/optionsdialog.cpp | 1 + src/qt/optionsmodel.cpp | 14 +++++++++++++- src/qt/optionsmodel.h | 3 +++ 5 files changed, 29 insertions(+), 4 deletions(-) diff --git a/src/qt/bitcoingui.cpp b/src/qt/bitcoingui.cpp index 1b9cb7b000..ed60249d3b 100644 --- a/src/qt/bitcoingui.cpp +++ b/src/qt/bitcoingui.cpp @@ -1014,10 +1014,12 @@ void BitcoinGUI::incomingTransaction(const QModelIndex & parent, int start, int TransactionTableModel *ttm = walletModel->getTransactionTableModel(); qint64 amount = ttm->index(start, TransactionTableModel::Amount, parent) .data(Qt::EditRole).toULongLong(); - if(!clientModel->inInitialBlockDownload()) + + // On new transaction, make an info balloon + // Unless the initial block download is in progress OR transaction notification + // is disabled, to prevent balloon-spam. + if(!(clientModel->inInitialBlockDownload() || walletModel->getOptionsModel()->getDisableTrxNotifications())) { - // On new transaction, make an info balloon - // Unless the initial block download is in progress, to prevent balloon-spam QString date = ttm->index(start, TransactionTableModel::Date, parent) .data().toString(); QString type = ttm->index(start, TransactionTableModel::Type, parent) diff --git a/src/qt/forms/optionsdialog.ui b/src/qt/forms/optionsdialog.ui index 82a73d5ab2..544c8943dc 100644 --- a/src/qt/forms/optionsdialog.ui +++ b/src/qt/forms/optionsdialog.ui @@ -324,6 +324,13 @@ + + + + Disable Transaction Notifications + + + diff --git a/src/qt/optionsdialog.cpp b/src/qt/optionsdialog.cpp index 4d1a67352a..b2a80e32e0 100644 --- a/src/qt/optionsdialog.cpp +++ b/src/qt/optionsdialog.cpp @@ -141,6 +141,7 @@ void OptionsDialog::setMapper() mapper->addMapping(ui->socksVersion, OptionsModel::ProxySocksVersion); /* Window */ + mapper->addMapping(ui->disableTransactionNotifications, OptionsModel::DisableTrxNotifications); #ifndef Q_OS_MAC mapper->addMapping(ui->minimizeToTray, OptionsModel::MinimizeToTray); mapper->addMapping(ui->minimizeOnClose, OptionsModel::MinimizeOnClose); diff --git a/src/qt/optionsmodel.cpp b/src/qt/optionsmodel.cpp index 07ca7d135b..0539a52336 100644 --- a/src/qt/optionsmodel.cpp +++ b/src/qt/optionsmodel.cpp @@ -41,7 +41,8 @@ void OptionsModel::Init() // These are Qt-only settings: nDisplayUnit = settings.value("nDisplayUnit", BitcoinUnits::BTC).toInt(); fMinimizeToTray = settings.value("fMinimizeToTray", false).toBool(); - bDisplayAddresses = settings.value("bDisplayAddresses", false).toBool(); + fDisableTrxNotifications = settings.value("fDisableTrxNotifications", false).toBool(); + bDisplayAddresses = settings.value("bDisplayAddresses", false).toBool(); fMinimizeOnClose = settings.value("fMinimizeOnClose", false).toBool(); fCoinControlFeatures = settings.value("fCoinControlFeatures", false).toBool(); nTransactionFee = settings.value("nTransactionFee").toLongLong(); @@ -79,6 +80,8 @@ QVariant OptionsModel::data(const QModelIndex & index, int role) const return QVariant(GUIUtil::GetStartOnSystemStartup()); case MinimizeToTray: return QVariant(fMinimizeToTray); + case DisableTrxNotifications: + return QVariant(fDisableTrxNotifications); case MapPortUPnP: return settings.value("fUseUPnP", GetBoolArg("-upnp", true)); case MinimizeOnClose: @@ -139,6 +142,10 @@ bool OptionsModel::setData(const QModelIndex & index, const QVariant & value, in fMinimizeToTray = value.toBool(); settings.setValue("fMinimizeToTray", fMinimizeToTray); break; + case DisableTrxNotifications: + fDisableTrxNotifications = value.toBool(); + settings.setValue("fDisableTrxNotifications", fDisableTrxNotifications); + break; case MapPortUPnP: fUseUPnP = value.toBool(); settings.setValue("fUseUPnP", fUseUPnP); @@ -249,6 +256,11 @@ bool OptionsModel::getMinimizeToTray() return fMinimizeToTray; } +bool OptionsModel::getDisableTrxNotifications() +{ + return fDisableTrxNotifications; +} + bool OptionsModel::getMinimizeOnClose() { return fMinimizeOnClose; diff --git a/src/qt/optionsmodel.h b/src/qt/optionsmodel.h index a3b6a7b3b2..25e8c6684a 100644 --- a/src/qt/optionsmodel.h +++ b/src/qt/optionsmodel.h @@ -19,6 +19,7 @@ class OptionsModel : public QAbstractListModel enum OptionID { StartAtStartup, // bool MinimizeToTray, // bool + DisableTrxNotifications, // bool MapPortUPnP, // bool MinimizeOnClose, // bool ProxyUse, // bool @@ -46,6 +47,7 @@ class OptionsModel : public QAbstractListModel qint64 getTransactionFee(); qint64 getReserveBalance(); bool getMinimizeToTray(); + bool getDisableTrxNotifications(); bool getMinimizeOnClose(); int getDisplayUnit(); bool getDisplayAddresses(); @@ -56,6 +58,7 @@ class OptionsModel : public QAbstractListModel private: int nDisplayUnit; bool fMinimizeToTray; + bool fDisableTrxNotifications; bool bDisplayAddresses; bool fMinimizeOnClose; bool fCoinControlFeatures;