|
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