[fix] show encryption status and simplify network stats labels

This commit is contained in:
dijunkun
2026-09-17 02:01:55 +08:00
parent 4302ab291c
commit fb34f42744
5 changed files with 34 additions and 8 deletions
@@ -2652,6 +2652,8 @@ void GuiApplication::SyncStreamWindow() {
(*ui_->stream)->set_selected_display(props->selected_display_);
const auto& net = props->net_traffic_stats_;
(*ui_->stream)->set_stats_encryption_enabled(
status == ConnectionStatus::Connected && net.srtp_active);
std::vector<ui::NetworkStatsRow> stats_rows;
stats_rows.reserve(4);
const auto append_stats_row = [&](const std::string& label,
@@ -233,6 +233,9 @@ struct TranslationRow {
X(connection_mode, u8"连接模式", "Mode", u8"Режим") \
X(connection_mode_direct, u8"直连", "Direct", u8"Прямой") \
X(connection_mode_relay, u8"中继", "Relay", u8"Релейный") \
X(transport_encryption, u8"加密传输", "Encryption", u8"Шифрование") \
X(transport_encryption_enabled, u8"已开启", "Enabled", u8"Включено") \
X(transport_encryption_disabled, u8"未开启", "Disabled", u8"Выключено") \
X(online, u8"在线", "Online", u8"Онлайн") \
X(offline, u8"离线", "Offline", u8"Офлайн") \
X(device_offline, u8"设备离线", "Device Offline", u8"Устройство офлайн") \
+22 -7
View File
@@ -45,6 +45,9 @@ export global StreamStrings {
in-out property <string> stats-loss-rate: "Loss Rate";
in-out property <string> stats-resolution: "Res";
in-out property <string> stats-connection-mode: "Mode";
in-out property <string> stats-encryption: "Encryption";
in-out property <string> stats-encryption-enabled: "Enabled";
in-out property <string> stats-encryption-disabled: "Disabled";
}
struct ControlBarTooltip {
@@ -166,6 +169,7 @@ export component StreamWindow inherits Window {
in property <string> stats-fps: "0";
in property <string> stats-resolution: "";
in property <string> stats-connection-mode: "";
in property <bool> stats-encryption-enabled: false;
in property <bool> file-transfer-visible: false;
in property <[FileTransferEntry]> file-transfers;
@@ -684,7 +688,7 @@ export component StreamWindow inherits Window {
x: root.control-dragging ? root.control-drag-x : root.control-docked-left ? 0px : parent.width - self.width;
y: min(max(0px, root.control-pos-y), parent.height - self.height);
width: root.control-expanded ? min(332px, parent.width) : 20px;
height: root.stats-visible && root.control-expanded ? min(180px, parent.height) : root.control-toolbar-height;
height: root.stats-visible && root.control-expanded ? min(196px, parent.height) : root.control-toolbar-height;
background: white;
border-width: 1px;
border-color: ImGuiLineStyle.border;
@@ -803,14 +807,23 @@ export component StreamWindow inherits Window {
x: 14px;
y: root.control-toolbar-height;
width: parent.width - 28px;
height: 128px;
height: 144px;
background: transparent;
private property <length> row-height: 16px;
private property <length> label-column-width: 60px;
private property <length> label-column-width:
max(60px, stats-label-width-probe.preferred-width + 8px);
private property <length> loss-column-width: 66px;
private property <length> value-column-width:
(self.width - self.label-column-width - self.loss-column-width) / 2;
stats-label-width-probe := Text {
visible: false;
text: StreamStrings.stats-resolution + "\n"
+ StreamStrings.stats-connection-mode + "\n"
+ StreamStrings.stats-encryption;
font-size: ImGuiFontStyle.small;
}
Rectangle {
y: 0px;
height: 1px;
@@ -898,9 +911,11 @@ export component StreamWindow inherits Window {
}
for metric[index] in [
{ label: "FPS:", value: root.stats-fps },
{ label: StreamStrings.stats-resolution + ":", value: root.stats-resolution },
{ label: StreamStrings.stats-connection-mode + ":", value: root.stats-connection-mode },
{ label: "FPS", value: root.stats-fps },
{ label: StreamStrings.stats-resolution, value: root.stats-resolution },
{ label: StreamStrings.stats-connection-mode, value: root.stats-connection-mode },
{ label: StreamStrings.stats-encryption, value: root.stats-encryption-enabled
? StreamStrings.stats-encryption-enabled : StreamStrings.stats-encryption-disabled },
]: Rectangle {
y: (index + 5) * stats-table.row-height;
height: stats-table.row-height;
@@ -914,7 +929,7 @@ export component StreamWindow inherits Window {
}
Text {
x: stats-table.label-column-width + 4px;
width: stats-table.value-column-width - 8px;
width: parent.width - self.x - 4px;
text: metric.value;
color: #30343b;
font-size: ImGuiFontStyle.small;
@@ -166,6 +166,12 @@ inline int ApplyStreamWindowStrings(
strings.set_stats_resolution(Text(localization::resolution[language]));
strings.set_stats_connection_mode(
Text(localization::connection_mode[language]));
strings.set_stats_encryption(
Text(localization::transport_encryption[language]));
strings.set_stats_encryption_enabled(
Text(localization::transport_encryption_enabled[language]));
strings.set_stats_encryption_disabled(
Text(localization::transport_encryption_disabled[language]));
return language;
}