qt: Hide peer detail view if multiple are selected

This commit is contained in:
João Barbosa 2020-06-27 11:41:17 +01:00
parent 4946400470
commit 76277cc77d
2 changed files with 16 additions and 29 deletions

View File

@ -492,9 +492,7 @@ RPCConsole::RPCConsole(interfaces::Node& node, const PlatformStyle *_platformSty
m_node.rpcSetTimerInterfaceIfUnset(rpcTimerInterface); m_node.rpcSetTimerInterfaceIfUnset(rpcTimerInterface);
setTrafficGraphRange(INITIAL_TRAFFIC_GRAPH_MINS); setTrafficGraphRange(INITIAL_TRAFFIC_GRAPH_MINS);
updateDetailWidget();
ui->detailWidget->hide();
ui->peerHeading->setText(tr("Select a peer to view detailed information."));
consoleFontSize = settings.value(fontSizeSettingsKey, QFont().pointSize()).toInt(); consoleFontSize = settings.value(fontSizeSettingsKey, QFont().pointSize()).toInt();
clear(); clear();
@ -625,7 +623,7 @@ void RPCConsole::setClientModel(ClientModel *model)
connect(disconnectAction, &QAction::triggered, this, &RPCConsole::disconnectSelectedNode); connect(disconnectAction, &QAction::triggered, this, &RPCConsole::disconnectSelectedNode);
// peer table signal handling - update peer details when selecting new node // peer table signal handling - update peer details when selecting new node
connect(ui->peerWidget->selectionModel(), &QItemSelectionModel::selectionChanged, this, &RPCConsole::peerSelected); connect(ui->peerWidget->selectionModel(), &QItemSelectionModel::selectionChanged, this, &RPCConsole::updateDetailWidget);
// peer table signal handling - update peer details when new nodes are added to the model // peer table signal handling - update peer details when new nodes are added to the model
connect(model->getPeerTableModel(), &PeerTableModel::layoutChanged, this, &RPCConsole::peerLayoutChanged); connect(model->getPeerTableModel(), &PeerTableModel::layoutChanged, this, &RPCConsole::peerLayoutChanged);
// peer table signal handling - cache selected node ids // peer table signal handling - cache selected node ids
@ -1017,18 +1015,6 @@ void RPCConsole::updateTrafficStats(quint64 totalBytesIn, quint64 totalBytesOut)
ui->lblBytesOut->setText(GUIUtil::formatBytes(totalBytesOut)); ui->lblBytesOut->setText(GUIUtil::formatBytes(totalBytesOut));
} }
void RPCConsole::peerSelected(const QItemSelection &selected, const QItemSelection &deselected)
{
Q_UNUSED(deselected);
if (!clientModel || !clientModel->getPeerTableModel() || selected.indexes().isEmpty())
return;
const CNodeCombinedStats *stats = clientModel->getPeerTableModel()->getNodeStats(selected.indexes().first().row());
if (stats)
updateNodeDetail(stats);
}
void RPCConsole::peerLayoutAboutToChange() void RPCConsole::peerLayoutAboutToChange()
{ {
QModelIndexList selected = ui->peerWidget->selectionModel()->selectedIndexes(); QModelIndexList selected = ui->peerWidget->selectionModel()->selectedIndexes();
@ -1045,7 +1031,6 @@ void RPCConsole::peerLayoutChanged()
if (!clientModel || !clientModel->getPeerTableModel()) if (!clientModel || !clientModel->getPeerTableModel())
return; return;
const CNodeCombinedStats *stats = nullptr;
bool fUnselect = false; bool fUnselect = false;
bool fReselect = false; bool fReselect = false;
@ -1076,9 +1061,6 @@ void RPCConsole::peerLayoutChanged()
fUnselect = true; fUnselect = true;
fReselect = true; fReselect = true;
} }
// get fresh stats on the detail node.
stats = clientModel->getPeerTableModel()->getNodeStats(detailNodeRow);
} }
if (fUnselect && selectedRow >= 0) { if (fUnselect && selectedRow >= 0) {
@ -1093,12 +1075,20 @@ void RPCConsole::peerLayoutChanged()
} }
} }
if (stats) updateDetailWidget();
updateNodeDetail(stats);
} }
void RPCConsole::updateNodeDetail(const CNodeCombinedStats *stats) void RPCConsole::updateDetailWidget()
{ {
QModelIndexList selected_rows;
auto selection_model = ui->peerWidget->selectionModel();
if (selection_model) selected_rows = selection_model->selectedRows();
if (!clientModel || !clientModel->getPeerTableModel() || selected_rows.size() != 1) {
ui->detailWidget->hide();
ui->peerHeading->setText(tr("Select a peer to view detailed information."));
return;
}
const CNodeCombinedStats *stats = clientModel->getPeerTableModel()->getNodeStats(selected_rows.first().row());
// update the detail ui with latest node information // update the detail ui with latest node information
QString peerAddrDetails(QString::fromStdString(stats->nodeStats.addrName) + " "); QString peerAddrDetails(QString::fromStdString(stats->nodeStats.addrName) + " ");
peerAddrDetails += tr("(node id: %1)").arg(QString::number(stats->nodeStats.nodeid)); peerAddrDetails += tr("(node id: %1)").arg(QString::number(stats->nodeStats.nodeid));
@ -1251,8 +1241,7 @@ void RPCConsole::clearSelectedNode()
{ {
ui->peerWidget->selectionModel()->clearSelection(); ui->peerWidget->selectionModel()->clearSelection();
cachedNodeids.clear(); cachedNodeids.clear();
ui->detailWidget->hide(); updateDetailWidget();
ui->peerHeading->setText(tr("Select a peer to view detailed information."));
} }
void RPCConsole::showOrHideBanTableIfRequired() void RPCConsole::showOrHideBanTableIfRequired()

View File

@ -94,6 +94,8 @@ private Q_SLOTS:
void showOrHideBanTableIfRequired(); void showOrHideBanTableIfRequired();
/** clear the selected node */ /** clear the selected node */
void clearSelectedNode(); void clearSelectedNode();
/** show detailed information on ui about selected node */
void updateDetailWidget();
public Q_SLOTS: public Q_SLOTS:
void clear(bool clearHistory = true); void clear(bool clearHistory = true);
@ -115,8 +117,6 @@ public Q_SLOTS:
void browseHistory(int offset); void browseHistory(int offset);
/** Scroll console view to end */ /** Scroll console view to end */
void scrollToEnd(); void scrollToEnd();
/** Handle selection of peer in peers list */
void peerSelected(const QItemSelection &selected, const QItemSelection &deselected);
/** Handle selection caching before update */ /** Handle selection caching before update */
void peerLayoutAboutToChange(); void peerLayoutAboutToChange();
/** Handle updated peer information */ /** Handle updated peer information */
@ -137,8 +137,6 @@ Q_SIGNALS:
private: private:
void startExecutor(); void startExecutor();
void setTrafficGraphRange(int mins); void setTrafficGraphRange(int mins);
/** show detailed information on ui about selected node */
void updateNodeDetail(const CNodeCombinedStats *stats);
enum ColumnWidths enum ColumnWidths
{ {