Skip to content

Commit 4c097f9

Browse files
committed
Merge pull request #4225
65f78a1 Qt: Add GUI view of peer information. #4133 (Ashley Holman)
2 parents 522a8fa + 65f78a1 commit 4c097f9

File tree

10 files changed

+870
-12
lines changed

10 files changed

+870
-12
lines changed

src/qt/Makefile.am

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,7 @@ QT_MOC_CPP = \
126126
moc_optionsdialog.cpp \
127127
moc_optionsmodel.cpp \
128128
moc_overviewpage.cpp \
129+
moc_peertablemodel.cpp \
129130
moc_paymentserver.cpp \
130131
moc_qvalidatedlineedit.cpp \
131132
moc_qvaluecombobox.cpp \
@@ -191,6 +192,7 @@ BITCOIN_QT_H = \
191192
overviewpage.h \
192193
paymentrequestplus.h \
193194
paymentserver.h \
195+
peertablemodel.h \
194196
qvalidatedlineedit.h \
195197
qvaluecombobox.h \
196198
receivecoinsdialog.h \
@@ -294,6 +296,7 @@ BITCOIN_QT_CPP += \
294296
overviewpage.cpp \
295297
paymentrequestplus.cpp \
296298
paymentserver.cpp \
299+
peertablemodel.cpp \
297300
receivecoinsdialog.cpp \
298301
receiverequestdialog.cpp \
299302
recentrequeststablemodel.cpp \

src/qt/clientmodel.cpp

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
#include "clientmodel.h"
66

77
#include "guiconstants.h"
8+
#include "peertablemodel.h"
89

910
#include "alert.h"
1011
#include "chainparams.h"
@@ -22,11 +23,12 @@
2223
static const int64_t nClientStartupTime = GetTime();
2324

2425
ClientModel::ClientModel(OptionsModel *optionsModel, QObject *parent) :
25-
QObject(parent), optionsModel(optionsModel),
26+
QObject(parent), optionsModel(optionsModel), peerTableModel(0),
2627
cachedNumBlocks(0),
2728
cachedReindexing(0), cachedImporting(0),
2829
numBlocksAtStartup(-1), pollTimer(0)
2930
{
31+
peerTableModel = new PeerTableModel(this);
3032
pollTimer = new QTimer(this);
3133
connect(pollTimer, SIGNAL(timeout()), this, SLOT(updateTimer()));
3234
pollTimer->start(MODEL_UPDATE_DELAY);
@@ -173,6 +175,11 @@ OptionsModel *ClientModel::getOptionsModel()
173175
return optionsModel;
174176
}
175177

178+
PeerTableModel *ClientModel::getPeerTableModel()
179+
{
180+
return peerTableModel;
181+
}
182+
176183
QString ClientModel::formatFullVersion() const
177184
{
178185
return QString::fromStdString(FormatFullVersion());

src/qt/clientmodel.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99

1010
class AddressTableModel;
1111
class OptionsModel;
12+
class PeerTableModel;
1213
class TransactionTableModel;
1314

1415
class CWallet;
@@ -42,6 +43,7 @@ class ClientModel : public QObject
4243
~ClientModel();
4344

4445
OptionsModel *getOptionsModel();
46+
PeerTableModel *getPeerTableModel();
4547

4648
//! Return number of connections, default is in- and outbound (total)
4749
int getNumConnections(unsigned int flags = CONNECTIONS_ALL) const;
@@ -71,6 +73,7 @@ class ClientModel : public QObject
7173

7274
private:
7375
OptionsModel *optionsModel;
76+
PeerTableModel *peerTableModel;
7477

7578
int cachedNumBlocks;
7679
bool cachedReindexing;

src/qt/forms/rpcconsole.ui

Lines changed: 275 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -652,6 +652,281 @@
652652
</item>
653653
</layout>
654654
</widget>
655+
<widget class="QWidget" name="tab_peers">
656+
<attribute name="title">
657+
<string>&amp;Peers</string>
658+
</attribute>
659+
<layout class="QGridLayout" name="gridLayout_2">
660+
<item row="0" column="1">
661+
<widget class="QLabel" name="peerHeading">
662+
<property name="sizePolicy">
663+
<sizepolicy hsizetype="Preferred" vsizetype="Minimum">
664+
<horstretch>0</horstretch>
665+
<verstretch>0</verstretch>
666+
</sizepolicy>
667+
</property>
668+
<property name="text">
669+
<string>Select a peer to view detailed information.</string>
670+
</property>
671+
<property name="margin">
672+
<number>3</number>
673+
</property>
674+
</widget>
675+
</item>
676+
<item row="0" column="0" rowspan="2">
677+
<widget class="QTableView" name="peerWidget">
678+
<property name="sizePolicy">
679+
<sizepolicy hsizetype="Expanding" vsizetype="Expanding">
680+
<horstretch>0</horstretch>
681+
<verstretch>0</verstretch>
682+
</sizepolicy>
683+
</property>
684+
<property name="horizontalScrollBarPolicy">
685+
<enum>Qt::ScrollBarAlwaysOff</enum>
686+
</property>
687+
<property name="editTriggers">
688+
<set>QAbstractItemView::AnyKeyPressed|QAbstractItemView::DoubleClicked|QAbstractItemView::EditKeyPressed</set>
689+
</property>
690+
<property name="sortingEnabled">
691+
<bool>true</bool>
692+
</property>
693+
</widget>
694+
</item>
695+
<item row="1" column="1">
696+
<widget class="QWidget" name="detailWidget" native="true">
697+
<property name="sizePolicy">
698+
<sizepolicy hsizetype="Preferred" vsizetype="Expanding">
699+
<horstretch>0</horstretch>
700+
<verstretch>0</verstretch>
701+
</sizepolicy>
702+
</property>
703+
<layout class="QGridLayout" name="gridLayout_3">
704+
<property name="leftMargin">
705+
<number>3</number>
706+
</property>
707+
<item row="12" column="0">
708+
<widget class="QLabel" name="label_21">
709+
<property name="text">
710+
<string>Version:</string>
711+
</property>
712+
</widget>
713+
</item>
714+
<item row="11" column="1">
715+
<widget class="QLabel" name="peerPingTime">
716+
<property name="text">
717+
<string>N/A</string>
718+
</property>
719+
</widget>
720+
</item>
721+
<item row="5" column="0">
722+
<widget class="QLabel" name="label_19">
723+
<property name="text">
724+
<string>Last Receive:</string>
725+
</property>
726+
</widget>
727+
</item>
728+
<item row="14" column="0">
729+
<widget class="QLabel" name="label_28">
730+
<property name="text">
731+
<string>User Agent:</string>
732+
</property>
733+
</widget>
734+
</item>
735+
<item row="12" column="1">
736+
<widget class="QLabel" name="peerVersion">
737+
<property name="text">
738+
<string>N/A</string>
739+
</property>
740+
</widget>
741+
</item>
742+
<item row="8" column="1">
743+
<widget class="QLabel" name="peerConnTime">
744+
<property name="minimumSize">
745+
<size>
746+
<width>160</width>
747+
<height>0</height>
748+
</size>
749+
</property>
750+
<property name="text">
751+
<string>N/A</string>
752+
</property>
753+
</widget>
754+
</item>
755+
<item row="11" column="0">
756+
<widget class="QLabel" name="label_26">
757+
<property name="text">
758+
<string>Ping Time:</string>
759+
</property>
760+
</widget>
761+
</item>
762+
<item row="5" column="1">
763+
<widget class="QLabel" name="peerLastRecv">
764+
<property name="sizePolicy">
765+
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
766+
<horstretch>0</horstretch>
767+
<verstretch>0</verstretch>
768+
</sizepolicy>
769+
</property>
770+
<property name="text">
771+
<string>N/A</string>
772+
</property>
773+
</widget>
774+
</item>
775+
<item row="8" column="0">
776+
<widget class="QLabel" name="label_22">
777+
<property name="text">
778+
<string>Connection Time:</string>
779+
</property>
780+
</widget>
781+
</item>
782+
<item row="6" column="1">
783+
<widget class="QLabel" name="peerBytesSent">
784+
<property name="text">
785+
<string>N/A</string>
786+
</property>
787+
</widget>
788+
</item>
789+
<item row="14" column="1">
790+
<widget class="QLabel" name="peerSubversion">
791+
<property name="text">
792+
<string>N/A</string>
793+
</property>
794+
</widget>
795+
</item>
796+
<item row="15" column="0">
797+
<widget class="QLabel" name="label_29">
798+
<property name="text">
799+
<string>Starting Height:</string>
800+
</property>
801+
</widget>
802+
</item>
803+
<item row="7" column="1">
804+
<widget class="QLabel" name="peerBytesRecv">
805+
<property name="text">
806+
<string>N/A</string>
807+
</property>
808+
</widget>
809+
</item>
810+
<item row="6" column="0">
811+
<widget class="QLabel" name="label_18">
812+
<property name="text">
813+
<string>Bytes Sent:</string>
814+
</property>
815+
</widget>
816+
</item>
817+
<item row="7" column="0">
818+
<widget class="QLabel" name="label_20">
819+
<property name="text">
820+
<string>Bytes Received:</string>
821+
</property>
822+
</widget>
823+
</item>
824+
<item row="15" column="1">
825+
<widget class="QLabel" name="peerHeight">
826+
<property name="text">
827+
<string>N/A</string>
828+
</property>
829+
</widget>
830+
</item>
831+
<item row="16" column="0">
832+
<widget class="QLabel" name="label_24">
833+
<property name="text">
834+
<string>Ban Score:</string>
835+
</property>
836+
</widget>
837+
</item>
838+
<item row="16" column="1">
839+
<widget class="QLabel" name="peerBanScore">
840+
<property name="text">
841+
<string>N/A</string>
842+
</property>
843+
</widget>
844+
</item>
845+
<item row="17" column="0">
846+
<widget class="QLabel" name="label_23">
847+
<property name="text">
848+
<string>Direction:</string>
849+
</property>
850+
</widget>
851+
</item>
852+
<item row="17" column="1">
853+
<widget class="QLabel" name="peerDirection">
854+
<property name="text">
855+
<string>N/A</string>
856+
</property>
857+
</widget>
858+
</item>
859+
<item row="19" column="0">
860+
<widget class="QLabel" name="label_25">
861+
<property name="text">
862+
<string>Sync Node:</string>
863+
</property>
864+
</widget>
865+
</item>
866+
<item row="19" column="1">
867+
<widget class="QLabel" name="peerSyncNode">
868+
<property name="text">
869+
<string>N/A</string>
870+
</property>
871+
</widget>
872+
</item>
873+
<item row="3" column="0">
874+
<widget class="QLabel" name="label_15">
875+
<property name="text">
876+
<string>Last Send:</string>
877+
</property>
878+
</widget>
879+
</item>
880+
<item row="2" column="0">
881+
<widget class="QLabel" name="label_4">
882+
<property name="text">
883+
<string>Services:</string>
884+
</property>
885+
</widget>
886+
</item>
887+
<item row="1" column="0">
888+
<widget class="QLabel" name="label_27">
889+
<property name="text">
890+
<string>IP Address/port:</string>
891+
</property>
892+
</widget>
893+
</item>
894+
<item row="3" column="1">
895+
<widget class="QLabel" name="peerLastSend">
896+
<property name="text">
897+
<string>N/A</string>
898+
</property>
899+
</widget>
900+
</item>
901+
<item row="2" column="1">
902+
<widget class="QLabel" name="peerServices">
903+
<property name="text">
904+
<string>N/A</string>
905+
</property>
906+
</widget>
907+
</item>
908+
<item row="1" column="1">
909+
<widget class="QLabel" name="peerAddr">
910+
<property name="text">
911+
<string>N/A</string>
912+
</property>
913+
</widget>
914+
</item>
915+
<item row="20" column="0">
916+
<widget class="QWidget" name="widget" native="true">
917+
<property name="sizePolicy">
918+
<sizepolicy hsizetype="Preferred" vsizetype="Expanding">
919+
<horstretch>0</horstretch>
920+
<verstretch>0</verstretch>
921+
</sizepolicy>
922+
</property>
923+
</widget>
924+
</item>
925+
</layout>
926+
</widget>
927+
</item>
928+
</layout>
929+
</widget>
655930
</widget>
656931
</item>
657932
</layout>

0 commit comments

Comments
 (0)