diff --git a/src/qt/bantablemodel.cpp b/src/qt/bantablemodel.cpp index 6cb4a4c5468..fc3c7ba55fe 100644 --- a/src/qt/bantablemodel.cpp +++ b/src/qt/bantablemodel.cpp @@ -28,6 +28,8 @@ bool BannedNodeLessThan::operator()(const CCombinedBan& left, const CCombinedBan return pLeft->subnet.ToString().compare(pRight->subnet.ToString()) < 0; case BanTableModel::Bantime: return pLeft->banEntry.nBanUntil < pRight->banEntry.nBanUntil; + case BanTableModel::Bumper: + return 0; } // no default case, so the compiler can warn about missing cases assert(false); } @@ -82,7 +84,7 @@ BanTableModel::BanTableModel(interfaces::Node& node, QObject* parent) : QAbstractTableModel(parent), m_node(node) { - columns << tr("IP/Netmask") << tr("Banned Until"); + columns << tr("IP/Netmask") << tr("Banned Until") << tr("•"); priv.reset(new BanTablePriv()); // load initial data @@ -120,6 +122,8 @@ QVariant BanTableModel::data(const QModelIndex &index, int role) const const auto column = static_cast(index.column()); if (role == Qt::DisplayRole) { switch (column) { + case Bumper: + return QString::fromStdString(""); case Address: return QString::fromStdString(rec->subnet.ToString()); case Bantime: @@ -129,6 +133,15 @@ QVariant BanTableModel::data(const QModelIndex &index, int role) const } // no default case, so the compiler can warn about missing cases assert(false); } + else if (role == Qt::TextAlignmentRole) { + switch (column) { + case Address: + case Bantime: + case Bumper: + return QVariant(Qt::AlignLeft | Qt::AlignVCenter); + } + assert(false); + } return QVariant(); } diff --git a/src/qt/bantablemodel.h b/src/qt/bantablemodel.h index 57f559fc14c..3e0dd85a39c 100644 --- a/src/qt/bantablemodel.h +++ b/src/qt/bantablemodel.h @@ -51,7 +51,8 @@ class BanTableModel : public QAbstractTableModel enum ColumnIndex { Address = 0, - Bantime = 1 + Bantime, + Bumper }; /** @name Methods overridden from QAbstractTableModel diff --git a/src/qt/peertablemodel.cpp b/src/qt/peertablemodel.cpp index b3246936926..095cf26f1a9 100644 --- a/src/qt/peertablemodel.cpp +++ b/src/qt/peertablemodel.cpp @@ -86,6 +86,8 @@ QVariant PeerTableModel::data(const QModelIndex& index, int role) const return GUIUtil::formatBytes(rec->nodeStats.nRecvBytes); case Subversion: return QString::fromStdString(rec->nodeStats.cleanSubVer); + case Bumper: + return QString::fromStdString(""); } // no default case, so the compiler can warn about missing cases assert(false); } else if (role == Qt::TextAlignmentRole) { @@ -100,10 +102,12 @@ QVariant PeerTableModel::data(const QModelIndex& index, int role) const case Ping: case Sent: case Received: - return QVariant(Qt::AlignRight | Qt::AlignVCenter); - case Subversion: return {}; - } // no default case, so the compiler can warn about missing cases + case Subversion: + return QVariant(Qt::AlignLeft | Qt::AlignVCenter); + case Bumper: + return QVariant(Qt::AlignCenter); + } assert(false); } else if (role == StatsRole) { return QVariant::fromValue(rec); diff --git a/src/qt/peertablemodel.h b/src/qt/peertablemodel.h index 0ff1b5dba77..c0beffab1f3 100644 --- a/src/qt/peertablemodel.h +++ b/src/qt/peertablemodel.h @@ -53,7 +53,8 @@ class PeerTableModel : public QAbstractTableModel Ping, Sent, Received, - Subversion + Subversion, + Bumper }; enum { @@ -104,7 +105,9 @@ public Q_SLOTS: tr("Received"), /*: Title of Peers Table column which contains the peer's User Agent string. */ - tr("User Agent")}; + tr("User Agent"), + tr("•")}; + std::unique_ptr priv; QTimer *timer; }; diff --git a/src/qt/peertablesortproxy.cpp b/src/qt/peertablesortproxy.cpp index 78932da8d48..53df93e4786 100644 --- a/src/qt/peertablesortproxy.cpp +++ b/src/qt/peertablesortproxy.cpp @@ -38,6 +38,8 @@ bool PeerTableSortProxy::lessThan(const QModelIndex& left_index, const QModelInd return left_stats.nRecvBytes < right_stats.nRecvBytes; case PeerTableModel::Subversion: return left_stats.cleanSubVer.compare(right_stats.cleanSubVer) < 0; + case PeerTableModel::Bumper: + return left_stats.nodeid < right_stats.nodeid; } // no default case, so the compiler can warn about missing cases assert(false); } diff --git a/src/qt/rpcconsole.cpp b/src/qt/rpcconsole.cpp index 9579e6dc24f..d74bb4046cc 100644 --- a/src/qt/rpcconsole.cpp +++ b/src/qt/rpcconsole.cpp @@ -672,6 +672,15 @@ void RPCConsole::setClientModel(ClientModel *model, int bestblock_height, int64_ } ui->peerWidget->horizontalHeader()->setStretchLastSection(true); ui->peerWidget->setItemDelegateForColumn(PeerTableModel::NetNodeId, new PeerIdViewDelegate(this)); + ui->peerWidget->horizontalHeader()->setSectionResizeMode(0, QHeaderView::ResizeToContents); + ui->peerWidget->horizontalHeader()->setSectionResizeMode(1, QHeaderView::ResizeToContents); + ui->peerWidget->horizontalHeader()->setSectionResizeMode(2, QHeaderView::ResizeToContents); + ui->peerWidget->horizontalHeader()->setSectionResizeMode(3, QHeaderView::ResizeToContents); + ui->peerWidget->horizontalHeader()->setSectionResizeMode(4, QHeaderView::ResizeToContents); + ui->peerWidget->horizontalHeader()->setSectionResizeMode(5, QHeaderView::ResizeToContents); + ui->peerWidget->horizontalHeader()->setSectionResizeMode(6, QHeaderView::ResizeToContents); + ui->peerWidget->horizontalHeader()->setSectionResizeMode(7, QHeaderView::ResizeToContents); + ui->peerWidget->horizontalHeader()->setSectionResizeMode(8, QHeaderView::ResizeToContents); // create peer table context menu peersTableContextMenu = new QMenu(this); @@ -698,6 +707,9 @@ void RPCConsole::setClientModel(ClientModel *model, int bestblock_height, int64_ ui->banlistWidget->setColumnWidth(BanTableModel::Bantime, BANTIME_COLUMN_WIDTH); } ui->banlistWidget->horizontalHeader()->setStretchLastSection(true); + ui->banlistWidget->horizontalHeader()->setSectionResizeMode(0, QHeaderView::ResizeToContents); + ui->banlistWidget->horizontalHeader()->setSectionResizeMode(1, QHeaderView::ResizeToContents); + ui->banlistWidget->horizontalHeader()->setSectionResizeMode(2, QHeaderView::ResizeToContents); // create ban table context menu banTableContextMenu = new QMenu(this); @@ -1259,6 +1271,7 @@ void RPCConsole::banSelectedNode(int bantime) } clearSelectedNode(); clientModel->getBanTableModel()->refresh(); + ui->banlistWidget->resizeColumnsToContents(); } void RPCConsole::unbanSelectedNode()