Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 10 additions & 14 deletions src/qt/forms/debugwindow.ui
Original file line number Diff line number Diff line change
Expand Up @@ -630,20 +630,26 @@
<item>
<widget class="QSlider" name="sldGraphRange">
<property name="minimum">
<number>1</number>
<number>0</number>
</property>
<property name="maximum">
<number>288</number>
<number>2400</number>
</property>
<property name="pageStep">
<number>12</number>
<number>200</number>
</property>
<property name="value">
<number>6</number>
<number>0</number>
</property>
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="tickPosition">
<enum>QSlider::TicksBelow</enum>
</property>
<property name="tickInterval">
<number>200</number>
</property>
</widget>
</item>
<item>
Expand All @@ -659,16 +665,6 @@
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="btnClearTrafficGraph">
<property name="text">
<string>&amp;Reset</string>
</property>
<property name="autoDefault">
<bool>false</bool>
</property>
</widget>
</item>
</layout>
</item>
</layout>
Expand Down
42 changes: 42 additions & 0 deletions src/qt/guiutil.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -799,14 +799,56 @@ QString formatBytes(uint64_t bytes)
{
if (bytes < 1'000)
return QObject::tr("%1 B").arg(bytes);
if (bytes < 10'000)
return QObject::tr("%1 kB").arg(0.01 * (bytes / 10));
if (bytes < 100'000)
return QObject::tr("%1 kB").arg(0.1 * (bytes / 100));
if (bytes < 1'000'000)
return QObject::tr("%1 kB").arg(bytes / 1'000);
if (bytes < 10'000'000)
return QObject::tr("%1 MB").arg(0.01 * (bytes / 10'000));
if (bytes < 100'000'000)
return QObject::tr("%1 MB").arg(0.1 * (bytes / 100'000));
if (bytes < 1'000'000'000)
return QObject::tr("%1 MB").arg(bytes / 1'000'000);

return QObject::tr("%1 GB").arg(bytes / 1'000'000'000);
}

QString formatBytesps(float val)
{
if (val < 10)
//: "Bytes per second"
return QObject::tr("%1 B/s").arg(0.01 * int(val * 100 + 0.5));
if (val < 100)
//: "Bytes per second"
return QObject::tr("%1 B/s").arg(0.1 * int(val * 10 + 0.5));
if (val < 1'000)
//: "Bytes per second"
return QObject::tr("%1 B/s").arg(int(val + 0.5));
if (val < 10'000)
//: "Kilobytes per second"
return QObject::tr("%1 kB/s").arg(0.01 * int(val / 10 + 0.5));
if (val < 100'000)
//: "Kilobytes per second"
return QObject::tr("%1 kB/s").arg(0.1 * int(val / 100 + 0.5));
if (val < 1'000'000)
//: "Kilobytes per second"
return QObject::tr("%1 kB/s").arg(int(val / 1'000 + 0.5));
if (val < 10'000'000)
//: "Megabytes per second"
return QObject::tr("%1 MB/s").arg(0.01 * int(val / 10'000 + 0.5));
if (val < 100'000'000)
//: "Megabytes per second"
return QObject::tr("%1 MB/s").arg(0.1 * int(val / 100'000 + 0.5));
if (val < 10'000'000'000)
//: "Megabytes per second"
return QObject::tr("%1 MB/s").arg(long(val / 1'000'000 + 0.5));

//: "Gigabytes per second"
return QObject::tr("%1 GB/s").arg(long(val / 1'000'000'000 + 0.5));
}

qreal calculateIdealFontSize(int width, const QString& text, QFont font, qreal minPointSize, qreal font_size) {
while(font_size >= minPointSize) {
font.setPointSizeF(font_size);
Expand Down
1 change: 1 addition & 0 deletions src/qt/guiutil.h
Original file line number Diff line number Diff line change
Expand Up @@ -235,6 +235,7 @@ namespace GUIUtil
QString formatNiceTimeOffset(qint64 secs);

QString formatBytes(uint64_t bytes);
QString formatBytesps(float bytes);

qreal calculateIdealFontSize(int width, const QString& text, QFont font, qreal minPointSize = 4, qreal startPointSize = 14);

Expand Down
60 changes: 50 additions & 10 deletions src/qt/rpcconsole.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,6 @@
#include <chrono>

const int CONSOLE_HISTORY = 50;
const int INITIAL_TRAFFIC_GRAPH_MINS = 30;
const QSize FONT_RANGE(4, 40);
const char fontSizeSettingsKey[] = "consoleFontSize";

Expand Down Expand Up @@ -560,7 +559,6 @@ RPCConsole::RPCConsole(interfaces::Node& node, const PlatformStyle *_platformSty
connect(ui->clearButton, &QAbstractButton::clicked, [this] { clear(); });
connect(ui->fontBiggerButton, &QAbstractButton::clicked, this, &RPCConsole::fontBigger);
connect(ui->fontSmallerButton, &QAbstractButton::clicked, this, &RPCConsole::fontSmaller);
connect(ui->btnClearTrafficGraph, &QPushButton::clicked, ui->trafficGraph, &TrafficGraphWidget::clear);

// disable the wallet selector by default
ui->WalletSelector->setVisible(false);
Expand All @@ -572,7 +570,7 @@ RPCConsole::RPCConsole(interfaces::Node& node, const PlatformStyle *_platformSty
// based timer interface
m_node.rpcSetTimerInterfaceIfUnset(rpcTimerInterface);

setTrafficGraphRange(INITIAL_TRAFFIC_GRAPH_MINS);
setTrafficGraphRange(1); // 1 is the lowest setting (0 bumps up)
updateDetailWidget();

consoleFontSize = settings.value(fontSizeSettingsKey, QFont().pointSize()).toInt();
Expand Down Expand Up @@ -1133,21 +1131,63 @@ void RPCConsole::scrollToEnd()
scrollbar->setValue(scrollbar->maximum());
}

void RPCConsole::on_sldGraphRange_valueChanged(int value)
void RPCConsole::on_sldGraphRange_valueChanged(int slider_value)
{
const int multiplier = 5; // each position on the slider represents 5 min
int mins = value * multiplier;
setTrafficGraphRange(mins);
static int64_t last_click_time = 0;
static bool last_click_was_up = false;
unsigned int value = (slider_value + 100) / 200 + 1; // minimum of 1, 0 reserve for scale bump
if (!slider_in_use) {
// Avoid accidental boucing of direction
int64_t now = GetTimeMillis();
bool this_click_is_up = false;
bool bouncing = false;
if (slider_value > set_slider_value)
this_click_is_up = true;
if (now - last_click_time < 250 && this_click_is_up != last_click_was_up) {
bouncing = true;
ui->sldGraphRange->blockSignals(true);
ui->sldGraphRange->setValue(set_slider_value);
ui->sldGraphRange->blockSignals(false);
}
last_click_time = now;
last_click_was_up = this_click_is_up;
set_slider_value = slider_value;
if (bouncing) return;
}
set_slider_value = slider_value;
setTrafficGraphRange(value);
}

void RPCConsole::setTrafficGraphRange(unsigned int value)
{
std::chrono::minutes mins = ui->trafficGraph->setGraphRange(value);
if (value)
set_slider_value = (value - 1) * 200;
else {
set_slider_value += 200;
ui->sldGraphRange->blockSignals(true);
ui->sldGraphRange->setValue(set_slider_value);
ui->sldGraphRange->blockSignals(false);
}
ui->lblGraphRange->setText(GUIUtil::formatDurationStr(mins));
}

void RPCConsole::setTrafficGraphRange(int mins)
void RPCConsole::on_sldGraphRange_sliderReleased()
{
ui->trafficGraph->setGraphRange(std::chrono::minutes{mins});
ui->lblGraphRange->setText(GUIUtil::formatDurationStr(std::chrono::minutes{mins}));
ui->sldGraphRange->setValue(set_slider_value); // Snap the slider to where this value is
slider_in_use = false;
}

void RPCConsole::on_sldGraphRange_sliderPressed()
{
slider_in_use = true;
}

void RPCConsole::updateTrafficStats(quint64 totalBytesIn, quint64 totalBytesOut)
{
if (!slider_in_use && ui->trafficGraph->GraphRangeBump()) {
setTrafficGraphRange(0); // bump it up
}
ui->lblBytesIn->setText(GUIUtil::formatBytes(totalBytesIn));
ui->lblBytesOut->setText(GUIUtil::formatBytes(totalBytesOut));
}
Expand Down
6 changes: 5 additions & 1 deletion src/qt/rpcconsole.h
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,8 @@ private Q_SLOTS:
void on_openDebugLogfileButton_clicked();
/** change the time range of the network traffic graph */
void on_sldGraphRange_valueChanged(int value);
void on_sldGraphRange_sliderReleased();
void on_sldGraphRange_sliderPressed();
/** update traffic statistics */
void updateTrafficStats(quint64 totalBytesIn, quint64 totalBytesOut);
void resizeEvent(QResizeEvent *event) override;
Expand Down Expand Up @@ -140,7 +142,7 @@ public Q_SLOTS:
} const ts;

void startExecutor();
void setTrafficGraphRange(int mins);
void setTrafficGraphRange(unsigned int value);

enum ColumnWidths
{
Expand Down Expand Up @@ -170,6 +172,8 @@ public Q_SLOTS:
bool m_is_executing{false};
QByteArray m_peer_widget_header_state;
QByteArray m_banlist_widget_header_state;
bool slider_in_use{false};
int set_slider_value{0};

/** Update UI with latest network info from model. */
void updateNetworkState();
Expand Down
Loading