Skip to content

Commit 6e27ee8

Browse files
committed
qt: Use PeerTableModel::StatsRole
This change prevents direct calls to the PeerTableModel object that is a layer violation.
1 parent 644f5f5 commit 6e27ee8

File tree

1 file changed

+7
-21
lines changed

1 file changed

+7
-21
lines changed

src/qt/rpcconsole.cpp

Lines changed: 7 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1018,11 +1018,9 @@ void RPCConsole::updateTrafficStats(quint64 totalBytesIn, quint64 totalBytesOut)
10181018

10191019
void RPCConsole::peerLayoutAboutToChange()
10201020
{
1021-
QModelIndexList selected = ui->peerWidget->selectionModel()->selectedIndexes();
10221021
cachedNodeids.clear();
1023-
for(int i = 0; i < selected.size(); i++)
1024-
{
1025-
const CNodeCombinedStats *stats = clientModel->getPeerTableModel()->getNodeStats(selected.at(i).row());
1022+
for (const auto& peer : GUIUtil::getEntryData(ui->peerWidget, PeerTableModel::NetNodeId)) {
1023+
const auto stats = peer.data(PeerTableModel::StatsRole).value<CNodeCombinedStats*>();
10261024
cachedNodeids.append(stats->nodeStats.nodeid);
10271025
}
10281026
}
@@ -1081,15 +1079,13 @@ void RPCConsole::peerLayoutChanged()
10811079

10821080
void RPCConsole::updateDetailWidget()
10831081
{
1084-
QModelIndexList selected_rows;
1085-
auto selection_model = ui->peerWidget->selectionModel();
1086-
if (selection_model) selected_rows = selection_model->selectedRows();
1087-
if (!clientModel || !clientModel->getPeerTableModel() || selected_rows.size() != 1) {
1082+
const auto selected_peers = GUIUtil::getEntryData(ui->peerWidget, PeerTableModel::NetNodeId);
1083+
if (!clientModel || !clientModel->getPeerTableModel() || selected_peers.size() != 1) {
10881084
ui->detailWidget->hide();
10891085
ui->peerHeading->setText(tr("Select a peer to view detailed information."));
10901086
return;
10911087
}
1092-
const CNodeCombinedStats *stats = clientModel->getPeerTableModel()->getNodeStats(selected_rows.first().row());
1088+
const auto stats = selected_peers.first().data(PeerTableModel::StatsRole).value<CNodeCombinedStats*>();
10931089
// update the detail ui with latest node information
10941090
QString peerAddrDetails(QString::fromStdString(stats->nodeStats.addrName) + " ");
10951091
peerAddrDetails += tr("(node id: %1)").arg(QString::number(stats->nodeStats.nodeid));
@@ -1201,19 +1197,9 @@ void RPCConsole::banSelectedNode(int bantime)
12011197
if (!clientModel)
12021198
return;
12031199

1204-
// Get selected peer addresses
1205-
QList<QModelIndex> nodes = GUIUtil::getEntryData(ui->peerWidget, PeerTableModel::NetNodeId);
1206-
for(int i = 0; i < nodes.count(); i++)
1207-
{
1208-
// Get currently selected peer address
1209-
NodeId id = nodes.at(i).data().toLongLong();
1210-
1211-
// Get currently selected peer address
1212-
int detailNodeRow = clientModel->getPeerTableModel()->getRowByNodeId(id);
1213-
if (detailNodeRow < 0) return;
1214-
1200+
for (const auto& peer : GUIUtil::getEntryData(ui->peerWidget, PeerTableModel::NetNodeId)) {
12151201
// Find possible nodes, ban it and clear the selected node
1216-
const CNodeCombinedStats *stats = clientModel->getPeerTableModel()->getNodeStats(detailNodeRow);
1202+
const auto stats = peer.data(PeerTableModel::StatsRole).value<CNodeCombinedStats*>();
12171203
if (stats) {
12181204
m_node.ban(stats->nodeStats.addr, bantime);
12191205
m_node.disconnectByAddress(stats->nodeStats.addr);

0 commit comments

Comments
 (0)