feat: add tcp only in wivrn config editor

This commit is contained in:
Gabriele Musco 2024-07-26 10:30:45 +02:00
commit 9e330dc3e3

View file

@ -7,11 +7,12 @@ use super::{
use crate::{ use crate::{
file_builders::wivrn_config::{dump_wivrn_config, get_wivrn_config, WivrnConfig}, file_builders::wivrn_config::{dump_wivrn_config, get_wivrn_config, WivrnConfig},
ui::{ ui::{
preference_rows::{number_entry_row, spin_row}, preference_rows::{number_entry_row, spin_row, switch_row},
util::bits_to_mbits, util::bits_to_mbits,
}, },
}; };
use adw::prelude::*; use adw::prelude::*;
use gtk4::glib::clone;
use relm4::{factory::AsyncFactoryVecDeque, prelude::*}; use relm4::{factory::AsyncFactoryVecDeque, prelude::*};
#[tracker::track] #[tracker::track]
@ -35,6 +36,7 @@ pub enum WivrnConfEditorMsg {
Save, Save,
AddEncoder, AddEncoder,
DeleteEncoder(String), DeleteEncoder(String),
TcpOnlyChanged(bool),
} }
pub struct WivrnConfEditorInit { pub struct WivrnConfEditorInit {
@ -122,6 +124,23 @@ impl SimpleComponent for WivrnConfEditor {
move |_| {} move |_| {}
) -> adw::EntryRow, ) -> adw::EntryRow,
}, },
// TODO: add application? conflicts with envision autostart
add: networkgrp = &adw::PreferencesGroup {
set_title: "Network",
add: &switch_row(
"TCP Only Mode",
Some(concat!(
"Only use TCP for communications with the client, ",
"this may have increased latency. If off, WiVRn ",
"will use both TCP and UDP."
)),
model.conf.tcp_only,
clone!(@strong sender => move |_, val| {
sender.input(Self::Input::TcpOnlyChanged(val));
gtk::glib::Propagation::Proceed
}),
),
},
add: encodersrgp = &adw::PreferencesGroup { add: encodersrgp = &adw::PreferencesGroup {
set_title: "Encoders", set_title: "Encoders",
adw::ActionRow { adw::ActionRow {
@ -177,6 +196,9 @@ impl SimpleComponent for WivrnConfEditor {
dump_wivrn_config(&self.conf); dump_wivrn_config(&self.conf);
self.win.as_ref().unwrap().close(); self.win.as_ref().unwrap().close();
} }
Self::Input::TcpOnlyChanged(val) => {
self.conf.tcp_only = val;
}
Self::Input::AddEncoder => { Self::Input::AddEncoder => {
self.encoder_models self.encoder_models
.as_mut() .as_mut()