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();