Skip to content

Commit 5b3490f

Browse files
committed
GUI: Add "LIVE" indicator
1 parent 725cab8 commit 5b3490f

File tree

5 files changed

+85
-2
lines changed

5 files changed

+85
-2
lines changed

gui/QT/ui/ultragrid_window.ui

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@
7777
<item>
7878
<widget class="QLabel" name="previewLabel">
7979
<property name="sizePolicy">
80-
<sizepolicy hsizetype="Preferred" vsizetype="Maximum">
80+
<sizepolicy hsizetype="Minimum" vsizetype="Maximum">
8181
<horstretch>0</horstretch>
8282
<verstretch>0</verstretch>
8383
</sizepolicy>
@@ -90,10 +90,20 @@
9090
</property>
9191
</widget>
9292
</item>
93+
<item>
94+
<widget class="LiveWidget" name="liveIndicator" native="true">
95+
<property name="sizePolicy">
96+
<sizepolicy hsizetype="Maximum" vsizetype="Preferred">
97+
<horstretch>0</horstretch>
98+
<verstretch>0</verstretch>
99+
</sizepolicy>
100+
</property>
101+
</widget>
102+
</item>
93103
<item>
94104
<widget class="BandwidthWidget" name="send_bandwidth">
95105
<property name="sizePolicy">
96-
<sizepolicy hsizetype="Preferred" vsizetype="Maximum">
106+
<sizepolicy hsizetype="Maximum" vsizetype="Maximum">
97107
<horstretch>0</horstretch>
98108
<verstretch>0</verstretch>
99109
</sizepolicy>
@@ -854,6 +864,12 @@
854864
<extends>QLabel</extends>
855865
<header>bandwidth_widget.hpp</header>
856866
</customwidget>
867+
<customwidget>
868+
<class>LiveWidget</class>
869+
<extends>QWidget</extends>
870+
<header>live_widget.hpp</header>
871+
<container>1</container>
872+
</customwidget>
857873
</customwidgets>
858874
<resources/>
859875
<connections>

gui/QT/uv-qt.pro

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ HEADERS += window/ultragrid_window.hpp \
5757
widget/recv_loss.hpp \
5858
widget/bandwidth_widget.hpp \
5959
window/settings_window.hpp \
60+
widget/live_widget.hpp \
6061
option/widget_ui.hpp \
6162
option/checkable_ui.hpp \
6263
option/checkbox_ui.hpp \
@@ -91,6 +92,7 @@ SOURCES += window/ultragrid_window.cpp \
9192
widget/recv_report.cpp \
9293
widget/recv_loss.cpp \
9394
widget/bandwidth_widget.cpp \
95+
widget/live_widget.cpp \
9496
window/settings_window.cpp \
9597
option/widget_ui.cpp \
9698
option/checkable_ui.cpp \

gui/QT/widget/live_widget.cpp

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
#include "live_widget.hpp"
2+
3+
#include <QPainter>
4+
5+
constexpr auto label = "LIVE";
6+
7+
LiveWidget::LiveWidget(QWidget *parent) :
8+
QWidget(parent),
9+
liveText(label)
10+
{
11+
QFontMetrics fm = fontMetrics();
12+
boundingRect = fm.boundingRect(liveText);
13+
boundingRect.setWidth(boundingRect.width() + boundingRect.height()); //Add space for dot
14+
15+
setMinimumSize(boundingRect.width(), boundingRect.height());
16+
}
17+
18+
void LiveWidget::setLive(bool live){
19+
this->live = live;
20+
update();
21+
}
22+
23+
void LiveWidget::paintEvent(QPaintEvent *event){
24+
QPainter painter(this);
25+
26+
27+
if(live){
28+
painter.setBrush(Qt::red);
29+
painter.setPen(Qt::red);
30+
} else{
31+
painter.setPen(Qt::gray);
32+
auto font = painter.font();
33+
font.setStrikeOut(true);
34+
painter.setFont(font);
35+
}
36+
painter.drawEllipse(0, boundingRect.height() / 4, boundingRect.height() / 2, boundingRect.height() / 2);
37+
painter.drawText(QRect(0, 0, boundingRect.width(), boundingRect.height()), Qt::AlignRight, liveText);
38+
}

gui/QT/widget/live_widget.hpp

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
#ifndef LIVE_WIDGET_HPP_14CFE779EB7746999FBF8CE66D903392
2+
#define LIVE_WIDGET_HPP_14CFE779EB7746999FBF8CE66D903392
3+
4+
#include <QWidget>
5+
6+
class LiveWidget : public QWidget{
7+
Q_OBJECT
8+
public:
9+
LiveWidget(QWidget *parent);
10+
11+
12+
protected:
13+
void paintEvent(QPaintEvent *paintEvent);
14+
15+
public slots:
16+
void setLive(bool live);
17+
18+
19+
private:
20+
QString liveText;
21+
QRect boundingRect;
22+
bool live = false;
23+
};
24+
25+
#endif //LIVE_WIDGET_HPP_14CFE779EB7746999FBF8CE66D903392

gui/QT/window/ultragrid_window.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -353,6 +353,7 @@ void UltragridWindow::start(){
353353
ui.startButton->setEnabled(true);
354354
processStatus.setText("UG: Running");
355355
ui.actionRefresh->setEnabled(false);
356+
ui.liveIndicator->setLive(true);
356357
});
357358

358359
connect(ctx.get(), &LaunchContext::processTerminated,
@@ -365,6 +366,7 @@ void UltragridWindow::start(){
365366
clearFmtLabels();
366367
rtcpRr.resetRecvReports();
367368
ui.send_bandwidth->reset();
369+
ui.liveIndicator->setLive(false);
368370

369371
if(!requested && (es == QProcess::ExitStatus::CrashExit || ec != 0)){
370372
processStatus.setText("UG: Crashed");

0 commit comments

Comments
 (0)