Add network traffic graph
This commit is contained in:
@@ -22,6 +22,8 @@
|
||||
const int CONSOLE_HISTORY = 50;
|
||||
const QSize ICON_SIZE(24, 24);
|
||||
|
||||
const int INITIAL_TRAFFIC_GRAPH_MINS = 30;
|
||||
|
||||
const struct {
|
||||
const char *url;
|
||||
const char *source;
|
||||
@@ -204,6 +206,7 @@ RPCConsole::RPCConsole(QWidget *parent) :
|
||||
ui->openSSLVersion->setText(SSLeay_version(SSLEAY_VERSION));
|
||||
|
||||
startExecutor();
|
||||
setTrafficGraphRange(INITIAL_TRAFFIC_GRAPH_MINS);
|
||||
|
||||
clear();
|
||||
}
|
||||
@@ -253,7 +256,8 @@ bool RPCConsole::eventFilter(QObject* obj, QEvent *event)
|
||||
|
||||
void RPCConsole::setClientModel(ClientModel *model)
|
||||
{
|
||||
this->clientModel = model;
|
||||
clientModel = model;
|
||||
ui->trafficGraph->setClientModel(model);
|
||||
if(model)
|
||||
{
|
||||
// Keep up to date with client
|
||||
@@ -263,6 +267,9 @@ void RPCConsole::setClientModel(ClientModel *model)
|
||||
setNumBlocks(model->getNumBlocks(), model->getNumBlocksOfPeers());
|
||||
connect(model, SIGNAL(numBlocksChanged(int,int)), this, SLOT(setNumBlocks(int,int)));
|
||||
|
||||
updateTrafficStats(model->getTotalBytesRecv(), model->getTotalBytesSent());
|
||||
connect(model, SIGNAL(bytesChanged(quint64,quint64)), this, SLOT(updateTrafficStats(quint64, quint64)));
|
||||
|
||||
// Provide initial values
|
||||
ui->clientVersion->setText(model->formatFullVersion());
|
||||
ui->clientName->setText(model->clientName());
|
||||
@@ -431,3 +438,49 @@ void RPCConsole::on_showCLOptionsButton_clicked()
|
||||
GUIUtil::HelpMessageBox help;
|
||||
help.exec();
|
||||
}
|
||||
|
||||
void RPCConsole::on_sldGraphRange_valueChanged(int value)
|
||||
{
|
||||
const int multiplier = 5; // each position on the slider represents 5 min
|
||||
int mins = value * multiplier;
|
||||
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);
|
||||
if(mins < 60) {
|
||||
ui->lblGraphRange->setText(QString(tr("%1 m")).arg(mins));
|
||||
} else {
|
||||
int hours = mins / 60;
|
||||
int minsLeft = mins % 60;
|
||||
if(minsLeft == 0) {
|
||||
ui->lblGraphRange->setText(QString(tr("%1 h")).arg(hours));
|
||||
} else {
|
||||
ui->lblGraphRange->setText(QString(tr("%1 h %2 m")).arg(hours).arg(minsLeft));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void RPCConsole::updateTrafficStats(quint64 totalBytesIn, quint64 totalBytesOut)
|
||||
{
|
||||
ui->lblBytesIn->setText(FormatBytes(totalBytesIn));
|
||||
ui->lblBytesOut->setText(FormatBytes(totalBytesOut));
|
||||
}
|
||||
|
||||
void RPCConsole::on_btnClearTrafficGraph_clicked()
|
||||
{
|
||||
ui->trafficGraph->clear();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user