Merge #11499: [Qt] Add upload and download info to the peerlist (debug menu)
6b1891e2c
Add Sent and Received information to the debug menu peer list (Aaron Golliver)8e4aa35ff
move human-readable byte formatting to guiutil (Aaron Golliver) Pull request description: Makes the peer list display how much you've uploaded/downloaded from each peer. Here's a screenshot ~~[outdated](https://i.imgur.com/MhPbItp.png)~~, [current](https://i.imgur.com/K1htrVv.png) of how it looks. You can now sort to see who are the peers you've uploaded the most too. I also moved `RPCConsole::FormatBytes` to `guiutil::formatBytes` so I could use it in the peerlist Tree-SHA512: 8845ef406e4cbe7f981879a78c063542ce90f50f45c8fa3514ba3e6e1164b4c70bb2093c4e1cac268aef0328b7b63545bc1dfa435c227f28fdb4cb0a596800f5
This commit is contained in:
commit
6157e8ce39
6 changed files with 39 additions and 22 deletions
|
@ -984,6 +984,18 @@ QString formatNiceTimeOffset(qint64 secs)
|
|||
return timeBehindText;
|
||||
}
|
||||
|
||||
QString formatBytes(uint64_t bytes)
|
||||
{
|
||||
if(bytes < 1024)
|
||||
return QString(QObject::tr("%1 B")).arg(bytes);
|
||||
if(bytes < 1024 * 1024)
|
||||
return QString(QObject::tr("%1 KB")).arg(bytes / 1024);
|
||||
if(bytes < 1024 * 1024 * 1024)
|
||||
return QString(QObject::tr("%1 MB")).arg(bytes / 1024 / 1024);
|
||||
|
||||
return QString(QObject::tr("%1 GB")).arg(bytes / 1024 / 1024 / 1024);
|
||||
}
|
||||
|
||||
void ClickableLabel::mouseReleaseEvent(QMouseEvent *event)
|
||||
{
|
||||
Q_EMIT clicked(event->pos());
|
||||
|
|
|
@ -199,6 +199,8 @@ namespace GUIUtil
|
|||
|
||||
QString formatNiceTimeOffset(qint64 secs);
|
||||
|
||||
QString formatBytes(uint64_t bytes);
|
||||
|
||||
class ClickableLabel : public QLabel
|
||||
{
|
||||
Q_OBJECT
|
||||
|
|
|
@ -33,6 +33,10 @@ bool NodeLessThan::operator()(const CNodeCombinedStats &left, const CNodeCombine
|
|||
return pLeft->cleanSubVer.compare(pRight->cleanSubVer) < 0;
|
||||
case PeerTableModel::Ping:
|
||||
return pLeft->dMinPing < pRight->dMinPing;
|
||||
case PeerTableModel::Sent:
|
||||
return pLeft->nSendBytes < pRight->nSendBytes;
|
||||
case PeerTableModel::Received:
|
||||
return pLeft->nRecvBytes < pRight->nRecvBytes;
|
||||
}
|
||||
|
||||
return false;
|
||||
|
@ -114,7 +118,7 @@ PeerTableModel::PeerTableModel(ClientModel *parent) :
|
|||
clientModel(parent),
|
||||
timer(0)
|
||||
{
|
||||
columns << tr("NodeId") << tr("Node/Service") << tr("User Agent") << tr("Ping");
|
||||
columns << tr("NodeId") << tr("Node/Service") << tr("Ping") << tr("Sent") << tr("Received") << tr("User Agent");
|
||||
priv.reset(new PeerTablePriv());
|
||||
// default to unsorted
|
||||
priv->sortColumn = -1;
|
||||
|
@ -173,10 +177,20 @@ QVariant PeerTableModel::data(const QModelIndex &index, int role) const
|
|||
return QString::fromStdString(rec->nodeStats.cleanSubVer);
|
||||
case Ping:
|
||||
return GUIUtil::formatPingTime(rec->nodeStats.dMinPing);
|
||||
case Sent:
|
||||
return GUIUtil::formatBytes(rec->nodeStats.nSendBytes);
|
||||
case Received:
|
||||
return GUIUtil::formatBytes(rec->nodeStats.nRecvBytes);
|
||||
}
|
||||
} else if (role == Qt::TextAlignmentRole) {
|
||||
if (index.column() == Ping)
|
||||
return (QVariant)(Qt::AlignRight | Qt::AlignVCenter);
|
||||
switch (index.column()) {
|
||||
case Ping:
|
||||
case Sent:
|
||||
case Received:
|
||||
return QVariant(Qt::AlignRight | Qt::AlignVCenter);
|
||||
default:
|
||||
return QVariant();
|
||||
}
|
||||
}
|
||||
|
||||
return QVariant();
|
||||
|
|
|
@ -55,8 +55,10 @@ public:
|
|||
enum ColumnIndex {
|
||||
NetNodeId = 0,
|
||||
Address = 1,
|
||||
Subversion = 2,
|
||||
Ping = 3
|
||||
Ping = 2,
|
||||
Sent = 3,
|
||||
Received = 4,
|
||||
Subversion = 5
|
||||
};
|
||||
|
||||
/** @name Methods overridden from QAbstractTableModel
|
||||
|
|
|
@ -935,18 +935,6 @@ void RPCConsole::on_sldGraphRange_valueChanged(int value)
|
|||
setTrafficGraphRange(mins);
|
||||
}
|
||||
|
||||
QString RPCConsole::FormatBytes(quint64 bytes)
|
||||
{
|
||||
if(bytes < 1024)
|
||||
return QString(tr("%1 B")).arg(bytes);
|
||||
if(bytes < 1024 * 1024)
|
||||
return QString(tr("%1 KB")).arg(bytes / 1024);
|
||||
if(bytes < 1024 * 1024 * 1024)
|
||||
return QString(tr("%1 MB")).arg(bytes / 1024 / 1024);
|
||||
|
||||
return QString(tr("%1 GB")).arg(bytes / 1024 / 1024 / 1024);
|
||||
}
|
||||
|
||||
void RPCConsole::setTrafficGraphRange(int mins)
|
||||
{
|
||||
ui->trafficGraph->setGraphRangeMins(mins);
|
||||
|
@ -955,8 +943,8 @@ void RPCConsole::setTrafficGraphRange(int mins)
|
|||
|
||||
void RPCConsole::updateTrafficStats(quint64 totalBytesIn, quint64 totalBytesOut)
|
||||
{
|
||||
ui->lblBytesIn->setText(FormatBytes(totalBytesIn));
|
||||
ui->lblBytesOut->setText(FormatBytes(totalBytesOut));
|
||||
ui->lblBytesIn->setText(GUIUtil::formatBytes(totalBytesIn));
|
||||
ui->lblBytesOut->setText(GUIUtil::formatBytes(totalBytesOut));
|
||||
}
|
||||
|
||||
void RPCConsole::peerSelected(const QItemSelection &selected, const QItemSelection &deselected)
|
||||
|
@ -1050,8 +1038,8 @@ void RPCConsole::updateNodeDetail(const CNodeCombinedStats *stats)
|
|||
ui->peerServices->setText(GUIUtil::formatServicesStr(stats->nodeStats.nServices));
|
||||
ui->peerLastSend->setText(stats->nodeStats.nLastSend ? GUIUtil::formatDurationStr(GetSystemTimeInSeconds() - stats->nodeStats.nLastSend) : tr("never"));
|
||||
ui->peerLastRecv->setText(stats->nodeStats.nLastRecv ? GUIUtil::formatDurationStr(GetSystemTimeInSeconds() - stats->nodeStats.nLastRecv) : tr("never"));
|
||||
ui->peerBytesSent->setText(FormatBytes(stats->nodeStats.nSendBytes));
|
||||
ui->peerBytesRecv->setText(FormatBytes(stats->nodeStats.nRecvBytes));
|
||||
ui->peerBytesSent->setText(GUIUtil::formatBytes(stats->nodeStats.nSendBytes));
|
||||
ui->peerBytesRecv->setText(GUIUtil::formatBytes(stats->nodeStats.nRecvBytes));
|
||||
ui->peerConnTime->setText(GUIUtil::formatDurationStr(GetSystemTimeInSeconds() - stats->nodeStats.nTimeConnected));
|
||||
ui->peerPingTime->setText(GUIUtil::formatPingTime(stats->nodeStats.dPingTime));
|
||||
ui->peerPingWait->setText(GUIUtil::formatPingTime(stats->nodeStats.dPingWait));
|
||||
|
|
|
@ -123,7 +123,6 @@ Q_SIGNALS:
|
|||
void cmdRequest(const QString &command);
|
||||
|
||||
private:
|
||||
static QString FormatBytes(quint64 bytes);
|
||||
void startExecutor();
|
||||
void setTrafficGraphRange(int mins);
|
||||
/** show detailed information on ui about selected node */
|
||||
|
|
Loading…
Reference in a new issue