Skip to content

Commit 49c6040

Browse files
committed
qt: Use PeerTableModel::StatsRole
This change prevents direct calls to the PeerTableModel object that is a layer violation.
1 parent 35007ed commit 49c6040

File tree

1 file changed

+7
-21
lines changed

1 file changed

+7
-21
lines changed

src/qt/rpcconsole.cpp

+7-21
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 QModelIndex& 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 QList<QModelIndex> 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("(peer id: %1)").arg(QString::number(stats->nodeStats.nodeid));
@@ -1202,19 +1198,9 @@ void RPCConsole::banSelectedNode(int bantime)
12021198
if (!clientModel)
12031199
return;
12041200

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

0 commit comments

Comments
 (0)