UI: Apply minimum width to Stats fields

Helps prevent Stats dock from resizing OBS when long text is set.
This commit is contained in:
jpark37 2020-10-15 23:29:40 -07:00 committed by Jim
parent 2b50263d5c
commit dbf318a388

View File

@ -32,6 +32,22 @@ void OBSBasicStats::OBSFrontendEvent(enum obs_frontend_event event, void *ptr)
}
}
static QString MakeTimeLeftText(int hours, int minutes)
{
return QString::asprintf("%d %s, %d %s", hours,
QT_TO_UTF8(QTStr("Hours")), minutes,
QT_TO_UTF8(QTStr("Minutes")));
}
static QString MakeMissedFramesText(uint32_t total_lagged,
uint32_t total_rendered, long double num)
{
return QString("%1 / %2 (%3%)")
.arg(QString::number(total_lagged),
QString::number(total_rendered),
QString::number(num, 'f', 1));
}
OBSBasicStats::OBSBasicStats(QWidget *parent, bool closeable)
: QWidget(parent),
cpu_info(os_cpu_usage_info_start()),
@ -65,6 +81,10 @@ OBSBasicStats::OBSBasicStats(QWidget *parent, bool closeable)
recordTimeLeft = new QLabel(this);
memUsage = new QLabel(this);
QString str = MakeTimeLeftText(99999, 59);
int textWidth = recordTimeLeft->fontMetrics().boundingRect(str).width();
recordTimeLeft->setMinimumWidth(textWidth);
newStat("CPUUsage", cpuUsage, 0);
newStat("HDDSpaceAvailable", hddSpace, 0);
newStat("DiskFullIn", recordTimeLeft, 0);
@ -74,6 +94,11 @@ OBSBasicStats::OBSBasicStats(QWidget *parent, bool closeable)
renderTime = new QLabel(this);
skippedFrames = new QLabel(this);
missedFrames = new QLabel(this);
str = MakeMissedFramesText(999999, 999999, 99.99);
textWidth = missedFrames->fontMetrics().boundingRect(str).width();
missedFrames->setMinimumWidth(textWidth);
row = 0;
newStatBare("FPS", fps, 2);
@ -388,10 +413,7 @@ void OBSBasicStats::Update()
: 0.0l;
num *= 100.0l;
str = QString("%1 / %2 (%3%)")
.arg(QString::number(total_lagged),
QString::number(total_rendered),
QString::number(num, 'f', 1));
str = MakeMissedFramesText(total_lagged, total_rendered, num);
missedFrames->setText(str);
if (num > 5.0l)
@ -445,9 +467,7 @@ void OBSBasicStats::RecordingTimeLeft()
int minutes = totalMinutes % 60;
int hours = totalMinutes / 60;
QString text = QString::asprintf("%d %s, %d %s", hours,
QT_TO_UTF8(QTStr("Hours")), minutes,
QT_TO_UTF8(QTStr("Minutes")));
QString text = MakeTimeLeftText(hours, minutes);
recordTimeLeft->setText(text);
recordTimeLeft->setMinimumWidth(recordTimeLeft->width());
}