@@ -331,8 +331,7 @@ void RPCConsole::setClientModel(ClientModel *model)
331331{
332332 clientModel = model;
333333 ui->trafficGraph ->setClientModel (model);
334- if (model)
335- {
334+ if (model && clientModel->getPeerTableModel () && clientModel->getBanTableModel ()) {
336335 // Keep up to date with client
337336 setNumConnections (model->getNumConnections ());
338337 connect (model, SIGNAL (numConnectionsChanged (int )), this , SLOT (setNumConnections (int )));
@@ -404,19 +403,23 @@ void RPCConsole::setClientModel(ClientModel *model)
404403 ui->banlistWidget ->setContextMenuPolicy (Qt::CustomContextMenu);
405404 ui->banlistWidget ->horizontalHeader ()->setStretchLastSection (true );
406405
407- // ensure ban table is shown or hidden (if empty)
408- connect (model, SIGNAL (banListChanged ()), this , SLOT (showOrHideBanTableIfRequired ()));
409- showOrHideBanTableIfRequired ();
410-
411- // create banlist context menu actions
406+ // create ban table context menu action
412407 QAction* unbanAction = new QAction (tr (" &Unban Node" ), this );
408+
409+ // create ban table context menu
413410 banTableContextMenu = new QMenu ();
414411 banTableContextMenu->addAction (unbanAction);
415412
416- // context menu signals
413+ // ban table context menu signals
417414 connect (ui->banlistWidget , SIGNAL (customContextMenuRequested (const QPoint&)), this , SLOT (showBanTableContextMenu (const QPoint&)));
418415 connect (unbanAction, SIGNAL (triggered ()), this , SLOT (unbanSelectedNode ()));
419416
417+ // ban table signal handling - clear peer details when clicking a peer in the ban table
418+ connect (ui->banlistWidget , SIGNAL (clicked (const QModelIndex&)), this , SLOT (clearSelectedNode ()));
419+ // ban table signal handling - ensure ban table is shown or hidden (if empty)
420+ connect (model->getBanTableModel (), SIGNAL (layoutChanged ()), this , SLOT (showOrHideBanTableIfRequired ()));
421+ showOrHideBanTableIfRequired ();
422+
420423 // Provide initial values
421424 ui->clientVersion ->setText (model->formatFullVersion ());
422425 ui->clientUserAgent ->setText (model->formatSubVersion ());
@@ -790,6 +793,9 @@ void RPCConsole::disconnectSelectedNode()
790793
791794void RPCConsole::banSelectedNode (int bantime)
792795{
796+ if (!clientModel)
797+ return ;
798+
793799 // Get currently selected peer address
794800 QString strNode = GUIUtil::getEntryData (ui->peerWidget , 0 , PeerTableModel::Address);
795801 // Find possible nodes, ban it and clear the selected node
@@ -803,23 +809,23 @@ void RPCConsole::banSelectedNode(int bantime)
803809 bannedNode->fDisconnect = true ;
804810
805811 clearSelectedNode ();
806- ui->banlistWidget ->setVisible (true );
807- ui->banHeading ->setVisible (true );
808- clientModel->updateBanlist ();
812+ clientModel->getBanTableModel ()->refresh ();
809813 }
810814}
811815
812816void RPCConsole::unbanSelectedNode ()
813817{
818+ if (!clientModel)
819+ return ;
820+
814821 // Get currently selected ban address
815822 QString strNode = GUIUtil::getEntryData (ui->banlistWidget , 0 , BanTableModel::Address);
816823 CSubNet possibleSubnet (strNode.toStdString ());
817824
818825 if (possibleSubnet.IsValid ())
819826 {
820827 CNode::Unban (possibleSubnet);
821- clientModel->updateBanlist ();
822- showOrHideBanTableIfRequired ();
828+ clientModel->getBanTableModel ()->refresh ();
823829 }
824830}
825831
0 commit comments