diff --git a/src/qt/forms/debugwindow.ui b/src/qt/forms/debugwindow.ui
index 15e0d3fad99..7aaa9d1d3fa 100644
--- a/src/qt/forms/debugwindow.ui
+++ b/src/qt/forms/debugwindow.ui
@@ -893,9 +893,6 @@
false
-
- true
-
Qt::ElideMiddle
@@ -957,9 +954,6 @@
false
-
- true
-
true
diff --git a/src/qt/forms/optionsdialog.ui b/src/qt/forms/optionsdialog.ui
index 4fed1ed45d6..0ef13e1ce1b 100644
--- a/src/qt/forms/optionsdialog.ui
+++ b/src/qt/forms/optionsdialog.ui
@@ -6,8 +6,8 @@
0
0
- 560
- 440
+ 646
+ 529
@@ -805,6 +805,16 @@
+ -
+
+
+ Alternate the row colors for the "Peers" and "Banned peers" tables in the Peers tab.
+
+
+ Alternate row colors in the Peers tab
+
+
+
-
diff --git a/src/qt/optionsdialog.cpp b/src/qt/optionsdialog.cpp
index 8a32994e3f5..b6b5f8950f2 100644
--- a/src/qt/optionsdialog.cpp
+++ b/src/qt/optionsdialog.cpp
@@ -261,6 +261,7 @@ void OptionsDialog::setMapper()
mapper->addMapping(ui->unit, OptionsModel::DisplayUnit);
mapper->addMapping(ui->thirdPartyTxUrls, OptionsModel::ThirdPartyTxUrls);
mapper->addMapping(ui->embeddedFont_radioButton, OptionsModel::UseEmbeddedMonospacedFont);
+ mapper->addMapping(ui->peersTabAlternatingRowColors, OptionsModel::PeersTabAlternatingRowColors);
}
void OptionsDialog::setOkButtonState(bool fState)
diff --git a/src/qt/optionsmodel.cpp b/src/qt/optionsmodel.cpp
index abdf9e9ae6f..1160426c914 100644
--- a/src/qt/optionsmodel.cpp
+++ b/src/qt/optionsmodel.cpp
@@ -170,6 +170,12 @@ void OptionsModel::Init(bool resetSettings)
}
m_use_embedded_monospaced_font = settings.value("UseEmbeddedMonospacedFont").toBool();
Q_EMIT useEmbeddedMonospacedFontChanged(m_use_embedded_monospaced_font);
+
+ if (!settings.contains("PeersTabAlternatingRowColors")) {
+ settings.setValue("PeersTabAlternatingRowColors", "false");
+ }
+ m_peers_tab_alternating_row_colors = settings.value("PeersTabAlternatingRowColors").toBool();
+ Q_EMIT peersTabAlternatingRowColorsChanged(m_peers_tab_alternating_row_colors);
}
/** Helper function to copy contents from one QSettings to another.
@@ -335,6 +341,8 @@ QVariant OptionsModel::data(const QModelIndex & index, int role) const
return settings.value("language");
case UseEmbeddedMonospacedFont:
return m_use_embedded_monospaced_font;
+ case PeersTabAlternatingRowColors:
+ return m_peers_tab_alternating_row_colors;
case CoinControlFeatures:
return fCoinControlFeatures;
case Prune:
@@ -467,6 +475,11 @@ bool OptionsModel::setData(const QModelIndex & index, const QVariant & value, in
settings.setValue("UseEmbeddedMonospacedFont", m_use_embedded_monospaced_font);
Q_EMIT useEmbeddedMonospacedFontChanged(m_use_embedded_monospaced_font);
break;
+ case PeersTabAlternatingRowColors:
+ m_peers_tab_alternating_row_colors = value.toBool();
+ settings.setValue("PeersTabAlternatingRowColors", m_peers_tab_alternating_row_colors);
+ Q_EMIT peersTabAlternatingRowColorsChanged(m_peers_tab_alternating_row_colors);
+ break;
case CoinControlFeatures:
fCoinControlFeatures = value.toBool();
settings.setValue("fCoinControlFeatures", fCoinControlFeatures);
diff --git a/src/qt/optionsmodel.h b/src/qt/optionsmodel.h
index 4d012a9b8f4..d6619e2f191 100644
--- a/src/qt/optionsmodel.h
+++ b/src/qt/optionsmodel.h
@@ -60,6 +60,7 @@ class OptionsModel : public QAbstractListModel
ThirdPartyTxUrls, // QString
Language, // QString
UseEmbeddedMonospacedFont, // bool
+ PeersTabAlternatingRowColors, // bool
CoinControlFeatures, // bool
ThreadsScriptVerif, // int
Prune, // bool
@@ -86,6 +87,7 @@ class OptionsModel : public QAbstractListModel
int getDisplayUnit() const { return nDisplayUnit; }
QString getThirdPartyTxUrls() const { return strThirdPartyTxUrls; }
bool getUseEmbeddedMonospacedFont() const { return m_use_embedded_monospaced_font; }
+ bool getPeersTabAlternatingRowColors() const { return m_peers_tab_alternating_row_colors; }
bool getCoinControlFeatures() const { return fCoinControlFeatures; }
const QString& getOverriddenByCommandLine() { return strOverriddenByCommandLine; }
@@ -110,6 +112,7 @@ class OptionsModel : public QAbstractListModel
int nDisplayUnit;
QString strThirdPartyTxUrls;
bool m_use_embedded_monospaced_font;
+ bool m_peers_tab_alternating_row_colors;
bool fCoinControlFeatures;
/* settings that were overridden by command-line */
QString strOverriddenByCommandLine;
@@ -124,6 +127,7 @@ class OptionsModel : public QAbstractListModel
void coinControlFeaturesChanged(bool);
void showTrayIconChanged(bool);
void useEmbeddedMonospacedFontChanged(bool);
+ void peersTabAlternatingRowColorsChanged(bool);
};
#endif // BITCOIN_QT_OPTIONSMODEL_H
diff --git a/src/qt/rpcconsole.cpp b/src/qt/rpcconsole.cpp
index e6e767c5afa..749dc6d2934 100644
--- a/src/qt/rpcconsole.cpp
+++ b/src/qt/rpcconsole.cpp
@@ -14,6 +14,7 @@
#include
#include
#include
+#include
#include
#include
#include
@@ -489,6 +490,7 @@ RPCConsole::RPCConsole(interfaces::Node& node, const PlatformStyle *_platformSty
m_peer_widget_header_state = settings.value("PeersTabPeerHeaderState").toByteArray();
m_banlist_widget_header_state = settings.value("PeersTabBanlistHeaderState").toByteArray();
+ m_alternating_row_colors = settings.value("PeersTabAlternatingRowColors").toBool();
constexpr QChar nonbreaking_hyphen(8209);
const std::vector CONNECTION_TYPE_DOC{
@@ -658,6 +660,11 @@ void RPCConsole::setClientModel(ClientModel *model, int bestblock_height, int64_
connect(model, &ClientModel::mempoolSizeChanged, this, &RPCConsole::setMempoolSize);
+ connect(model->getOptionsModel(), &OptionsModel::peersTabAlternatingRowColorsChanged, [this](bool alternating_row_colors) {
+ ui->peerWidget->setAlternatingRowColors(alternating_row_colors);
+ ui->banlistWidget->setAlternatingRowColors(alternating_row_colors);
+ });
+
// set up peer table
ui->peerWidget->setModel(model->peerTableSortProxy());
ui->peerWidget->verticalHeader()->hide();
@@ -672,6 +679,7 @@ void RPCConsole::setClientModel(ClientModel *model, int bestblock_height, int64_
}
ui->peerWidget->horizontalHeader()->setStretchLastSection(true);
ui->peerWidget->setItemDelegateForColumn(PeerTableModel::NetNodeId, new PeerIdViewDelegate(this));
+ ui->peerWidget->setAlternatingRowColors(m_alternating_row_colors);
// create peer table context menu
peersTableContextMenu = new QMenu(this);
@@ -698,6 +706,7 @@ void RPCConsole::setClientModel(ClientModel *model, int bestblock_height, int64_
ui->banlistWidget->setColumnWidth(BanTableModel::Bantime, BANTIME_COLUMN_WIDTH);
}
ui->banlistWidget->horizontalHeader()->setStretchLastSection(true);
+ ui->banlistWidget->setAlternatingRowColors(m_alternating_row_colors);
// create ban table context menu
banTableContextMenu = new QMenu(this);
diff --git a/src/qt/rpcconsole.h b/src/qt/rpcconsole.h
index 2412ae543c8..0fd2073238d 100644
--- a/src/qt/rpcconsole.h
+++ b/src/qt/rpcconsole.h
@@ -170,6 +170,7 @@ public Q_SLOTS:
bool m_is_executing{false};
QByteArray m_peer_widget_header_state;
QByteArray m_banlist_widget_header_state;
+ bool m_alternating_row_colors{false};
/** Update UI with latest network info from model. */
void updateNetworkState();