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,
}
}