190 lines
7.1 KiB
Rust
190 lines
7.1 KiB
Rust
{
|
|
let left_pane = left_pane;
|
|
let right_pane = right_pane;
|
|
if let Some(preview) = preview.as_ref() {
|
|
*left_pane.preview_binding.borrow_mut() =
|
|
if state.feed_source_preset(0) == FeedSourcePreset::Off {
|
|
None
|
|
} else {
|
|
preview.install_on_picture(
|
|
0,
|
|
PreviewSurface::Inline,
|
|
&left_pane.picture,
|
|
&left_pane.stream_status,
|
|
)
|
|
};
|
|
*right_pane.preview_binding.borrow_mut() =
|
|
if state.feed_source_preset(1) == FeedSourcePreset::Off {
|
|
None
|
|
} else {
|
|
preview.install_on_picture(
|
|
1,
|
|
PreviewSurface::Inline,
|
|
&right_pane.picture,
|
|
&right_pane.stream_status,
|
|
)
|
|
};
|
|
} else {
|
|
left_pane.stream_status.set_text("Preview unavailable");
|
|
left_pane.preview_placeholder.set_visible(true);
|
|
right_pane.stream_status.set_text("Preview unavailable");
|
|
right_pane.preview_placeholder.set_visible(true);
|
|
}
|
|
sync_feed_source_combo(
|
|
&left_pane.feed_source_combo,
|
|
state.feed_source_options(0),
|
|
state.feed_source_preset(0),
|
|
);
|
|
sync_feed_source_combo(
|
|
&right_pane.feed_source_combo,
|
|
state.feed_source_options(1),
|
|
state.feed_source_preset(1),
|
|
);
|
|
if state.feed_source_preset(0) != FeedSourcePreset::Off {
|
|
let choice = state
|
|
.display_capture_size_choice(0)
|
|
.unwrap_or_else(|| state.capture_size_choice(0));
|
|
if state.feed_source_preset(0) == FeedSourcePreset::ThisEye {
|
|
sync_capture_resolution_combo(
|
|
&left_pane.capture_resolution_combo,
|
|
state.capture_size_options(),
|
|
state.capture_size_preset(0),
|
|
);
|
|
} else {
|
|
sync_capture_resolution_locked(
|
|
&left_pane.capture_resolution_combo,
|
|
state.capture_size_options(),
|
|
choice.preset,
|
|
);
|
|
}
|
|
} else {
|
|
sync_capture_resolution_disabled(&left_pane.capture_resolution_combo);
|
|
}
|
|
if state.feed_source_preset(1) != FeedSourcePreset::Off {
|
|
let choice = state
|
|
.display_capture_size_choice(1)
|
|
.unwrap_or_else(|| state.capture_size_choice(1));
|
|
if state.feed_source_preset(1) == FeedSourcePreset::ThisEye {
|
|
sync_capture_resolution_combo(
|
|
&right_pane.capture_resolution_combo,
|
|
state.capture_size_options(),
|
|
state.capture_size_preset(1),
|
|
);
|
|
} else {
|
|
sync_capture_resolution_locked(
|
|
&right_pane.capture_resolution_combo,
|
|
state.capture_size_options(),
|
|
choice.preset,
|
|
);
|
|
}
|
|
} else {
|
|
sync_capture_resolution_disabled(&right_pane.capture_resolution_combo);
|
|
}
|
|
sync_breakout_size_combo(
|
|
&left_pane.breakout_combo,
|
|
state.breakout_size_options(0),
|
|
state.breakout_size_preset(0),
|
|
);
|
|
sync_breakout_size_combo(
|
|
&right_pane.breakout_combo,
|
|
state.breakout_size_options(1),
|
|
state.breakout_size_preset(1),
|
|
);
|
|
let diagnostics_popout_label = Rc::new(RefCell::new(None));
|
|
let diagnostics_popout_scroll = Rc::new(RefCell::new(None));
|
|
|
|
let widgets = LauncherWidgets {
|
|
status_label: status_label.clone(),
|
|
diagnostics_log: diagnostics_log.clone(),
|
|
diagnostics_label: diagnostics_label.clone(),
|
|
diagnostics_scroll: diagnostics_scroll.clone(),
|
|
diagnostics_popout_label: diagnostics_popout_label.clone(),
|
|
diagnostics_popout_scroll: diagnostics_popout_scroll.clone(),
|
|
diagnostics_rendered_text: Rc::new(RefCell::new(String::new())),
|
|
session_log_buffer: session_log_buffer.clone(),
|
|
session_log_view: session_log_view.clone(),
|
|
summary: SummaryWidgets {
|
|
relay_light,
|
|
relay_value,
|
|
routing_light,
|
|
routing_value,
|
|
gpio_light,
|
|
gpio_value,
|
|
shortcut_value,
|
|
},
|
|
power_detail,
|
|
audio_check_detail,
|
|
audio_check_meter,
|
|
display_panes: [left_pane.clone(), right_pane.clone()],
|
|
server_entry: server_entry.clone(),
|
|
start_button: start_button.clone(),
|
|
camera_combo: camera_combo.clone(),
|
|
camera_quality_combo: camera_quality_combo.clone(),
|
|
microphone_combo: microphone_combo.clone(),
|
|
speaker_combo: speaker_combo.clone(),
|
|
keyboard_combo: keyboard_combo.clone(),
|
|
mouse_combo: mouse_combo.clone(),
|
|
camera_channel_toggle: camera_channel_toggle.clone(),
|
|
microphone_channel_toggle: microphone_channel_toggle.clone(),
|
|
audio_channel_toggle: audio_channel_toggle.clone(),
|
|
power_auto_button: power_auto_button.clone(),
|
|
power_on_button: power_on_button.clone(),
|
|
power_off_button: power_off_button.clone(),
|
|
audio_gain_scale: audio_gain_scale.clone(),
|
|
audio_gain_value: audio_gain_value.clone(),
|
|
mic_gain_scale: mic_gain_scale.clone(),
|
|
mic_gain_value: mic_gain_value.clone(),
|
|
input_toggle_button: input_toggle_button.clone(),
|
|
clipboard_button: clipboard_button.clone(),
|
|
probe_button: probe_button.clone(),
|
|
usb_recover_button: usb_recover_button.clone(),
|
|
device_refresh_button: device_refresh_button.clone(),
|
|
swap_key_button: swap_key_button.clone(),
|
|
camera_test_button: camera_test_button.clone(),
|
|
camera_preview_stack: camera_preview_stack.clone(),
|
|
camera_mirror_button: camera_mirror_button.clone(),
|
|
camera_mirror_revealer: camera_mirror_revealer.clone(),
|
|
microphone_test_button: microphone_test_button.clone(),
|
|
microphone_replay_button: microphone_replay_button.clone(),
|
|
speaker_test_button: speaker_test_button.clone(),
|
|
diagnostics_copy_button: diagnostics_copy_button.clone(),
|
|
diagnostics_popout_button: diagnostics_popout_button.clone(),
|
|
console_copy_button: console_copy_button.clone(),
|
|
console_popout_button: console_popout_button.clone(),
|
|
console_level_combo: console_level_combo.clone(),
|
|
session_log_level: session_log_level.clone(),
|
|
};
|
|
let popouts = Rc::new(RefCell::new([None, None]));
|
|
let diagnostics_popout = Rc::new(RefCell::new(None));
|
|
let log_popout = Rc::new(RefCell::new(None));
|
|
|
|
super::ui_runtime::refresh_diagnostics_report(&widgets, state, false);
|
|
|
|
window.set_child(Some(&root));
|
|
|
|
LauncherView {
|
|
window,
|
|
server_entry,
|
|
camera_combo,
|
|
camera_quality_combo,
|
|
microphone_combo,
|
|
speaker_combo,
|
|
keyboard_combo,
|
|
mouse_combo,
|
|
device_stage: DeviceStageWidgets {
|
|
devices_panel,
|
|
preview_panel,
|
|
camera_preview_stack,
|
|
camera_preview_frame,
|
|
camera_preview,
|
|
camera_mirror_button,
|
|
camera_status,
|
|
},
|
|
widgets,
|
|
preview,
|
|
popouts,
|
|
diagnostics_popout,
|
|
log_popout,
|
|
}
|
|
}
|