Try and fit all stream stats column within window

* Resize columns to content (instead of using default width)
 * Use Kpps/Mpps for Pkt Rate with 3 decimal
 * Use 3 decimal places for bit-rates (is more logical because units change
   every 1000 anyway)
 * Use 2 decimal places for time interval

This just improves the chances of all columns fitting - but is not guaranteed
This commit is contained in:
Srivats P 2023-06-26 17:03:47 +05:30
parent bfda96a888
commit 28b308ce6c
3 changed files with 28 additions and 9 deletions

View File

@ -168,12 +168,12 @@ QVariant StreamStatsModel::data(const QModelIndex &index, int role) const
return QString("%L1").arg(aggrGuidStats_.value(guid).txDuration); return QString("%L1").arg(aggrGuidStats_.value(guid).txDuration);
case kAvgTxFrameRate: case kAvgTxFrameRate:
return aggrGuidStats_.value(guid).txDuration <= 0 ? QString("-") : return aggrGuidStats_.value(guid).txDuration <= 0 ? QString("-") :
QString("%L1").arg( XLocale().toPktRateString(
aggrGuidStats_.value(guid).txPkts aggrGuidStats_.value(guid).txPkts
/ aggrGuidStats_.value(guid).txDuration); / aggrGuidStats_.value(guid).txDuration);
case kAvgRxFrameRate: case kAvgRxFrameRate:
return aggrGuidStats_.value(guid).txDuration <= 0 ? QString("-") : return aggrGuidStats_.value(guid).txDuration <= 0 ? QString("-") :
QString("%L1").arg( XLocale().toPktRateString(
aggrGuidStats_.value(guid).rxPkts aggrGuidStats_.value(guid).rxPkts
/ aggrGuidStats_.value(guid).txDuration); / aggrGuidStats_.value(guid).txDuration);
case kAvgTxBitRate: case kAvgTxBitRate:

View File

@ -46,6 +46,10 @@ StreamStatsWindow::StreamStatsWindow(QAbstractItemModel *model, QWidget *parent)
streamStats->verticalHeader()->setHighlightSections(false); streamStats->verticalHeader()->setHighlightSections(false);
streamStats->verticalHeader()->setDefaultSectionSize( streamStats->verticalHeader()->setDefaultSectionSize(
streamStats->verticalHeader()->minimumSectionSize()); streamStats->verticalHeader()->minimumSectionSize());
// Fit all columns in window whenever data changes
connect(model, &QAbstractItemModel::modelReset,
[=]() { streamStats->resizeColumnsToContents(); });
} }
StreamStatsWindow::~StreamStatsWindow() StreamStatsWindow::~StreamStatsWindow()
@ -62,4 +66,6 @@ void StreamStatsWindow::on_actionShowDetails_triggered(bool checked)
filterModel_->setFilterRegExp(QRegExp(".*")); filterModel_->setFilterRegExp(QRegExp(".*"));
else else
filterModel_->setFilterRegExp(QRegExp(kDefaultFilter_)); filterModel_->setFilterRegExp(QRegExp(kDefaultFilter_));
streamStats->resizeColumnsToContents();
} }

View File

@ -85,20 +85,33 @@ public:
return toDouble(text, ok) * multiplier; return toDouble(text, ok) * multiplier;
} }
QString toPktRateString(double pps) const
{
QString text;
if (pps >= 1e6)
return QObject::tr("%L1 Mpps").arg(pps/1e6, 0, 'f', 3);
if (pps >= 1e3)
return QObject::tr("%L1 Kpps").arg(pps/1e3, 0, 'f', 3);
return QObject::tr("%L1").arg(pps, 0, 'f', 3);
}
QString toBitRateString(double bps) const QString toBitRateString(double bps) const
{ {
QString text; QString text;
if (bps >= 1e9) if (bps >= 1e9)
return QObject::tr("%L1 Gbps").arg(bps/1e9, 0, 'f', 4); return QObject::tr("%L1 Gbps").arg(bps/1e9, 0, 'f', 3);
if (bps >= 1e6) if (bps >= 1e6)
return QObject::tr("%L1 Mbps").arg(bps/1e6, 0, 'f', 4); return QObject::tr("%L1 Mbps").arg(bps/1e6, 0, 'f', 3);
if (bps >= 1e3) if (bps >= 1e3)
return QObject::tr("%L1 Kbps").arg(bps/1e3, 0, 'f', 4); return QObject::tr("%L1 Kbps").arg(bps/1e3, 0, 'f', 3);
return QObject::tr("%L1 bps").arg(bps, 0, 'f', 4); return QObject::tr("%L1 bps").arg(bps, 0, 'f', 3);
} }
QString toTimeIntervalString(qint64 nanosecs) const QString toTimeIntervalString(qint64 nanosecs) const
@ -106,13 +119,13 @@ public:
QString text; QString text;
if (nanosecs >= 1e9) if (nanosecs >= 1e9)
return QObject::tr("%L1 s").arg(nanosecs/1e9, 0, 'f', 3); return QObject::tr("%L1 s").arg(nanosecs/1e9, 0, 'f', 2);
if (nanosecs >= 1e6) if (nanosecs >= 1e6)
return QObject::tr("%L1 ms").arg(nanosecs/1e6, 0, 'f', 3); return QObject::tr("%L1 ms").arg(nanosecs/1e6, 0, 'f', 2);
if (nanosecs >= 1e3) if (nanosecs >= 1e3)
return QObject::tr("%L1 us").arg(nanosecs/1e3, 0, 'f', 3); return QObject::tr("%L1 us").arg(nanosecs/1e3, 0, 'f', 2);
return QObject::tr("%L1 ns").arg(nanosecs); return QObject::tr("%L1 ns").arg(nanosecs);
} }