|
9 | 9 | #include <qt/rpcconsole.h>
|
10 | 10 | #include <qt/forms/ui_debugwindow.h>
|
11 | 11 |
|
| 12 | +#include <chainparams.h> |
| 13 | +#include <interfaces/node.h> |
| 14 | +#include <netbase.h> |
12 | 15 | #include <qt/bantablemodel.h>
|
13 | 16 | #include <qt/clientmodel.h>
|
| 17 | +#include <qt/peertablesortproxy.h> |
14 | 18 | #include <qt/platformstyle.h>
|
15 | 19 | #include <qt/walletmodel.h>
|
16 |
| -#include <chainparams.h> |
17 |
| -#include <interfaces/node.h> |
18 |
| -#include <netbase.h> |
19 | 20 | #include <rpc/client.h>
|
20 | 21 | #include <rpc/server.h>
|
21 | 22 | #include <util/strencodings.h>
|
@@ -606,7 +607,7 @@ void RPCConsole::setClientModel(ClientModel *model, int bestblock_height, int64_
|
606 | 607 | connect(model, &ClientModel::mempoolSizeChanged, this, &RPCConsole::setMempoolSize);
|
607 | 608 |
|
608 | 609 | // set up peer table
|
609 |
| - ui->peerWidget->setModel(model->getPeerTableModel()); |
| 610 | + ui->peerWidget->setModel(model->peerTableSortProxy()); |
610 | 611 | ui->peerWidget->verticalHeader()->hide();
|
611 | 612 | ui->peerWidget->setEditTriggers(QAbstractItemView::NoEditTriggers);
|
612 | 613 | ui->peerWidget->setSelectionBehavior(QAbstractItemView::SelectRows);
|
@@ -643,10 +644,7 @@ void RPCConsole::setClientModel(ClientModel *model, int bestblock_height, int64_
|
643 | 644 |
|
644 | 645 | // peer table signal handling - update peer details when selecting new node
|
645 | 646 | connect(ui->peerWidget->selectionModel(), &QItemSelectionModel::selectionChanged, this, &RPCConsole::updateDetailWidget);
|
646 |
| - // peer table signal handling - update peer details when new nodes are added to the model |
647 |
| - connect(model->getPeerTableModel(), &PeerTableModel::layoutChanged, this, &RPCConsole::peerLayoutChanged); |
648 |
| - // peer table signal handling - cache selected node ids |
649 |
| - connect(model->getPeerTableModel(), &PeerTableModel::layoutAboutToBeChanged, this, &RPCConsole::peerLayoutAboutToChange); |
| 647 | + connect(model->getPeerTableModel(), &PeerTableModel::layoutChanged, this, &RPCConsole::updateDetailWidget); |
650 | 648 |
|
651 | 649 | // set up ban table
|
652 | 650 | ui->banlistWidget->setModel(model->getBanTableModel());
|
@@ -1037,67 +1035,6 @@ void RPCConsole::updateTrafficStats(quint64 totalBytesIn, quint64 totalBytesOut)
|
1037 | 1035 | ui->lblBytesOut->setText(GUIUtil::formatBytes(totalBytesOut));
|
1038 | 1036 | }
|
1039 | 1037 |
|
1040 |
| -void RPCConsole::peerLayoutAboutToChange() |
1041 |
| -{ |
1042 |
| - cachedNodeids.clear(); |
1043 |
| - for (const QModelIndex& peer : GUIUtil::getEntryData(ui->peerWidget, PeerTableModel::NetNodeId)) { |
1044 |
| - const auto stats = peer.data(PeerTableModel::StatsRole).value<CNodeCombinedStats*>(); |
1045 |
| - cachedNodeids.append(stats->nodeStats.nodeid); |
1046 |
| - } |
1047 |
| -} |
1048 |
| - |
1049 |
| -void RPCConsole::peerLayoutChanged() |
1050 |
| -{ |
1051 |
| - if (!clientModel || !clientModel->getPeerTableModel()) |
1052 |
| - return; |
1053 |
| - |
1054 |
| - bool fUnselect = false; |
1055 |
| - bool fReselect = false; |
1056 |
| - |
1057 |
| - if (cachedNodeids.empty()) // no node selected yet |
1058 |
| - return; |
1059 |
| - |
1060 |
| - // find the currently selected row |
1061 |
| - int selectedRow = -1; |
1062 |
| - QModelIndexList selectedModelIndex = ui->peerWidget->selectionModel()->selectedIndexes(); |
1063 |
| - if (!selectedModelIndex.isEmpty()) { |
1064 |
| - selectedRow = selectedModelIndex.first().row(); |
1065 |
| - } |
1066 |
| - |
1067 |
| - // check if our detail node has a row in the table (it may not necessarily |
1068 |
| - // be at selectedRow since its position can change after a layout change) |
1069 |
| - int detailNodeRow = clientModel->getPeerTableModel()->getRowByNodeId(cachedNodeids.first()); |
1070 |
| - |
1071 |
| - if (detailNodeRow < 0) |
1072 |
| - { |
1073 |
| - // detail node disappeared from table (node disconnected) |
1074 |
| - fUnselect = true; |
1075 |
| - } |
1076 |
| - else |
1077 |
| - { |
1078 |
| - if (detailNodeRow != selectedRow) |
1079 |
| - { |
1080 |
| - // detail node moved position |
1081 |
| - fUnselect = true; |
1082 |
| - fReselect = true; |
1083 |
| - } |
1084 |
| - } |
1085 |
| - |
1086 |
| - if (fUnselect && selectedRow >= 0) { |
1087 |
| - clearSelectedNode(); |
1088 |
| - } |
1089 |
| - |
1090 |
| - if (fReselect) |
1091 |
| - { |
1092 |
| - for(int i = 0; i < cachedNodeids.size(); i++) |
1093 |
| - { |
1094 |
| - ui->peerWidget->selectRow(clientModel->getPeerTableModel()->getRowByNodeId(cachedNodeids.at(i))); |
1095 |
| - } |
1096 |
| - } |
1097 |
| - |
1098 |
| - updateDetailWidget(); |
1099 |
| -} |
1100 |
| - |
1101 | 1038 | void RPCConsole::updateDetailWidget()
|
1102 | 1039 | {
|
1103 | 1040 | const QList<QModelIndex> selected_peers = GUIUtil::getEntryData(ui->peerWidget, PeerTableModel::NetNodeId);
|
|
0 commit comments