feat: add audio switch ui
This commit is contained in:
parent
95d06e160b
commit
cb228bef2b
@ -106,6 +106,12 @@ const kRemoteImageQualityLow = 'low';
|
|||||||
/// [kRemoteImageQualityCustom] Custom image quality.
|
/// [kRemoteImageQualityCustom] Custom image quality.
|
||||||
const kRemoteImageQualityCustom = 'custom';
|
const kRemoteImageQualityCustom = 'custom';
|
||||||
|
|
||||||
|
/// [kRemoteAudioGuestToHost] Guest to host audio mode(default).
|
||||||
|
const kRemoteAudioGuestToHost = 'guest-to-host';
|
||||||
|
|
||||||
|
/// [kRemoteAudioTwoWay] two-way audio mode(default).
|
||||||
|
const kRemoteAudioTwoWay = 'two-way';
|
||||||
|
|
||||||
const kIgnoreDpi = true;
|
const kIgnoreDpi = true;
|
||||||
|
|
||||||
/// flutter/packages/flutter/lib/src/services/keyboard_key.dart -> _keyLabels
|
/// flutter/packages/flutter/lib/src/services/keyboard_key.dart -> _keyLabels
|
||||||
|
@ -1106,6 +1106,30 @@ class _RemoteMenubarState extends State<RemoteMenubar> {
|
|||||||
padding: padding,
|
padding: padding,
|
||||||
),
|
),
|
||||||
MenuEntryDivider<String>(),
|
MenuEntryDivider<String>(),
|
||||||
|
MenuEntryRadios<String>(
|
||||||
|
text: translate('Audio Transmission Mode'),
|
||||||
|
optionsGetter: () => [
|
||||||
|
MenuEntryRadioOption(
|
||||||
|
text: translate('Guest to Host'),
|
||||||
|
value: kRemoteAudioGuestToHost,
|
||||||
|
dismissOnClicked: true,
|
||||||
|
),
|
||||||
|
MenuEntryRadioOption(
|
||||||
|
text: translate('Two way'),
|
||||||
|
value: kRemoteAudioTwoWay,
|
||||||
|
dismissOnClicked: true,
|
||||||
|
),
|
||||||
|
],
|
||||||
|
curOptionGetter: () async =>
|
||||||
|
// null means peer id is not found, which there's no need to care about
|
||||||
|
await bind.sessionGetAudioMode(id: widget.id) ?? '',
|
||||||
|
optionSetter: (String oldValue, String newValue) async {
|
||||||
|
if (oldValue != newValue) {
|
||||||
|
await bind.sessionSetAudioMode(id: widget.id, value: newValue);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
padding: padding,
|
||||||
|
),
|
||||||
];
|
];
|
||||||
|
|
||||||
if (widget.state.viewStyle.value == kRemoteViewStyleOriginal) {
|
if (widget.state.viewStyle.value == kRemoteViewStyleOriginal) {
|
||||||
@ -1337,6 +1361,8 @@ class _RemoteMenubarState extends State<RemoteMenubar> {
|
|||||||
if (perms['audio'] != false) {
|
if (perms['audio'] != false) {
|
||||||
displayMenu
|
displayMenu
|
||||||
.add(_createSwitchMenuEntry('Mute', 'disable-audio', padding, true));
|
.add(_createSwitchMenuEntry('Mute', 'disable-audio', padding, true));
|
||||||
|
displayMenu
|
||||||
|
.add(_createSwitchMenuEntry('Mute', 'disable-audio', padding, true));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Platform.isWindows &&
|
if (Platform.isWindows &&
|
||||||
|
@ -444,6 +444,11 @@ enum ImageQuality {
|
|||||||
Best = 4;
|
Best = 4;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
enum AudioMode {
|
||||||
|
GuestToHost = 0;
|
||||||
|
TwoWay = 1;
|
||||||
|
}
|
||||||
|
|
||||||
message VideoCodecState {
|
message VideoCodecState {
|
||||||
enum PreferCodec {
|
enum PreferCodec {
|
||||||
Auto = 0;
|
Auto = 0;
|
||||||
@ -475,6 +480,7 @@ message OptionMessage {
|
|||||||
BoolOption enable_file_transfer = 9;
|
BoolOption enable_file_transfer = 9;
|
||||||
VideoCodecState video_codec_state = 10;
|
VideoCodecState video_codec_state = 10;
|
||||||
int32 custom_fps = 11;
|
int32 custom_fps = 11;
|
||||||
|
AudioMode audio_mode = 12;
|
||||||
}
|
}
|
||||||
|
|
||||||
message TestDelay {
|
message TestDelay {
|
||||||
|
@ -212,6 +212,11 @@ pub struct PeerConfig {
|
|||||||
deserialize_with = "PeerConfig::deserialize_image_quality"
|
deserialize_with = "PeerConfig::deserialize_image_quality"
|
||||||
)]
|
)]
|
||||||
pub image_quality: String,
|
pub image_quality: String,
|
||||||
|
#[serde(
|
||||||
|
default = "PeerConfig::default_audio_mode",
|
||||||
|
deserialize_with = "PeerConfig::deserialize_audio_mode"
|
||||||
|
)]
|
||||||
|
pub audio_mode: String,
|
||||||
#[serde(
|
#[serde(
|
||||||
default = "PeerConfig::default_custom_image_quality",
|
default = "PeerConfig::default_custom_image_quality",
|
||||||
deserialize_with = "PeerConfig::deserialize_custom_image_quality"
|
deserialize_with = "PeerConfig::deserialize_custom_image_quality"
|
||||||
@ -996,6 +1001,11 @@ impl PeerConfig {
|
|||||||
deserialize_image_quality,
|
deserialize_image_quality,
|
||||||
UserDefaultConfig::load().get("image_quality")
|
UserDefaultConfig::load().get("image_quality")
|
||||||
);
|
);
|
||||||
|
serde_field_string!(
|
||||||
|
default_audio_mode,
|
||||||
|
deserialize_audio_mode,
|
||||||
|
"guest-to-host".to_owned()
|
||||||
|
);
|
||||||
|
|
||||||
fn default_custom_image_quality() -> Vec<i32> {
|
fn default_custom_image_quality() -> Vec<i32> {
|
||||||
let f: f64 = UserDefaultConfig::load()
|
let f: f64 = UserDefaultConfig::load()
|
||||||
|
@ -1252,6 +1252,27 @@ impl LoginConfigHandler {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Parse the audio mode option.
|
||||||
|
/// Return [`AudioMode`] if the option is valid, otherwise return `None`.
|
||||||
|
///
|
||||||
|
/// # Arguments
|
||||||
|
///
|
||||||
|
/// * `q` - The audio mode option.
|
||||||
|
/// * `ignore_default` - Ignore the default value.
|
||||||
|
fn get_audio_mode_enum(&self, q: &str, ignore_default: bool) -> Option<AudioMode> {
|
||||||
|
if q == "guest-to-host" {
|
||||||
|
Some(AudioMode::GuestToHost)
|
||||||
|
} else if q == "two-way" {
|
||||||
|
Some(AudioMode::TwoWay)
|
||||||
|
} else {
|
||||||
|
if ignore_default {
|
||||||
|
None
|
||||||
|
} else {
|
||||||
|
Some(AudioMode::GuestToHost)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// Get the status of a toggle option.
|
/// Get the status of a toggle option.
|
||||||
///
|
///
|
||||||
/// # Arguments
|
/// # Arguments
|
||||||
@ -1338,6 +1359,24 @@ impl LoginConfigHandler {
|
|||||||
res
|
res
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn save_audio_mode(&mut self, value: String) -> Option<Message> {
|
||||||
|
let mut res = None;
|
||||||
|
if let Some(q) = self.get_audio_mode_enum(&value, false) {
|
||||||
|
let mut misc = Misc::new();
|
||||||
|
misc.set_option(OptionMessage {
|
||||||
|
audio_mode: q.into(),
|
||||||
|
..Default::default()
|
||||||
|
});
|
||||||
|
let mut msg_out = Message::new();
|
||||||
|
msg_out.set_misc(misc);
|
||||||
|
res = Some(msg_out);
|
||||||
|
}
|
||||||
|
let mut config = self.load_config();
|
||||||
|
config.audio_mode = value;
|
||||||
|
self.save_config(config);
|
||||||
|
res
|
||||||
|
}
|
||||||
|
|
||||||
/// Create a [`Message`] for saving custom fps.
|
/// Create a [`Message`] for saving custom fps.
|
||||||
///
|
///
|
||||||
/// # Arguments
|
/// # Arguments
|
||||||
|
@ -233,6 +233,20 @@ pub fn session_set_image_quality(id: String, value: String) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn session_get_audio_mode(id: String) -> Option<String> {
|
||||||
|
if let Some(session) = SESSIONS.read().unwrap().get(&id) {
|
||||||
|
Some(session.get_audio_mode())
|
||||||
|
} else {
|
||||||
|
None
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn session_set_audio_mode(id: String, value: String) {
|
||||||
|
if let Some(session) = SESSIONS.write().unwrap().get_mut(&id) {
|
||||||
|
session.save_audio_mode(value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
pub fn session_get_keyboard_mode(id: String) -> Option<String> {
|
pub fn session_get_keyboard_mode(id: String) -> Option<String> {
|
||||||
if let Some(session) = SESSIONS.read().unwrap().get(&id) {
|
if let Some(session) = SESSIONS.read().unwrap().get(&id) {
|
||||||
Some(session.get_keyboard_mode())
|
Some(session.get_keyboard_mode())
|
||||||
|
@ -445,5 +445,8 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||||||
("FPS", ""),
|
("FPS", ""),
|
||||||
("Auto", ""),
|
("Auto", ""),
|
||||||
("Other Default Options", ""),
|
("Other Default Options", ""),
|
||||||
|
("Guest to Host", ""),
|
||||||
|
("Two way", ""),
|
||||||
|
("Audio Transmission Mode", ""),
|
||||||
].iter().cloned().collect();
|
].iter().cloned().collect();
|
||||||
}
|
}
|
||||||
|
@ -445,5 +445,8 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||||||
("FPS", "帧率"),
|
("FPS", "帧率"),
|
||||||
("Auto", "自动"),
|
("Auto", "自动"),
|
||||||
("Other Default Options", "其它默认选项"),
|
("Other Default Options", "其它默认选项"),
|
||||||
|
("Guest to Host", "被控到主机"),
|
||||||
|
("Two way", "双向"),
|
||||||
|
("Audio Transmission Mode", "音频传输模式"),
|
||||||
].iter().cloned().collect();
|
].iter().cloned().collect();
|
||||||
}
|
}
|
||||||
|
@ -445,5 +445,8 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||||||
("FPS", ""),
|
("FPS", ""),
|
||||||
("Auto", ""),
|
("Auto", ""),
|
||||||
("Other Default Options", ""),
|
("Other Default Options", ""),
|
||||||
|
("Guest to Host", ""),
|
||||||
|
("Two way", ""),
|
||||||
|
("Audio Transmission Mode", ""),
|
||||||
].iter().cloned().collect();
|
].iter().cloned().collect();
|
||||||
}
|
}
|
||||||
|
@ -436,6 +436,9 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||||||
("Switch Sides", ""),
|
("Switch Sides", ""),
|
||||||
("Please confirm if you want to share your desktop?", ""),
|
("Please confirm if you want to share your desktop?", ""),
|
||||||
("Closed as expected", ""),
|
("Closed as expected", ""),
|
||||||
|
("Guest to Host", ""),
|
||||||
|
("Two way", ""),
|
||||||
|
("Audio Transmission Mode", ""),
|
||||||
("Display", ""),
|
("Display", ""),
|
||||||
("Default View Style", ""),
|
("Default View Style", ""),
|
||||||
("Default Scroll Style", ""),
|
("Default Scroll Style", ""),
|
||||||
|
@ -445,5 +445,8 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||||||
("FPS", "fps"),
|
("FPS", "fps"),
|
||||||
("Auto", "Automatisch"),
|
("Auto", "Automatisch"),
|
||||||
("Other Default Options", "Weitere Standardoptionen"),
|
("Other Default Options", "Weitere Standardoptionen"),
|
||||||
|
("Guest to Host", ""),
|
||||||
|
("Two way", ""),
|
||||||
|
("Audio Transmission Mode", ""),
|
||||||
].iter().cloned().collect();
|
].iter().cloned().collect();
|
||||||
}
|
}
|
||||||
|
@ -445,5 +445,8 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||||||
("FPS", ""),
|
("FPS", ""),
|
||||||
("Auto", ""),
|
("Auto", ""),
|
||||||
("Other Default Options", ""),
|
("Other Default Options", ""),
|
||||||
|
("Guest to Host", ""),
|
||||||
|
("Two way", ""),
|
||||||
|
("Audio Transmission Mode", ""),
|
||||||
].iter().cloned().collect();
|
].iter().cloned().collect();
|
||||||
}
|
}
|
||||||
|
@ -445,5 +445,9 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||||||
("FPS", ""),
|
("FPS", ""),
|
||||||
("Auto", ""),
|
("Auto", ""),
|
||||||
("Other Default Options", "Otras opciones predeterminadas"),
|
("Other Default Options", "Otras opciones predeterminadas"),
|
||||||
|
("Closed as expected", ""),
|
||||||
|
("Guest to Host", ""),
|
||||||
|
("Two way", ""),
|
||||||
|
("Audio Transmission Mode", ""),
|
||||||
].iter().cloned().collect();
|
].iter().cloned().collect();
|
||||||
}
|
}
|
||||||
|
@ -445,5 +445,8 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||||||
("FPS", "FPS"),
|
("FPS", "FPS"),
|
||||||
("Auto", "خودکار"),
|
("Auto", "خودکار"),
|
||||||
("Other Default Options", "سایر گزینه های پیش فرض"),
|
("Other Default Options", "سایر گزینه های پیش فرض"),
|
||||||
|
("Guest to Host", ""),
|
||||||
|
("Two way", ""),
|
||||||
|
("Audio Transmission Mode", ""),
|
||||||
].iter().cloned().collect();
|
].iter().cloned().collect();
|
||||||
}
|
}
|
||||||
|
@ -445,5 +445,8 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||||||
("FPS", "FPS"),
|
("FPS", "FPS"),
|
||||||
("Auto", "Auto"),
|
("Auto", "Auto"),
|
||||||
("Other Default Options", "Autres options par défaut"),
|
("Other Default Options", "Autres options par défaut"),
|
||||||
|
("Guest to Host", ""),
|
||||||
|
("Two way", ""),
|
||||||
|
("Audio Transmission Mode", ""),
|
||||||
].iter().cloned().collect();
|
].iter().cloned().collect();
|
||||||
}
|
}
|
||||||
|
@ -445,5 +445,8 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||||||
("FPS", ""),
|
("FPS", ""),
|
||||||
("Auto", ""),
|
("Auto", ""),
|
||||||
("Other Default Options", ""),
|
("Other Default Options", ""),
|
||||||
|
("Guest to Host", ""),
|
||||||
|
("Two way", ""),
|
||||||
|
("Audio Transmission Mode", ""),
|
||||||
].iter().cloned().collect();
|
].iter().cloned().collect();
|
||||||
}
|
}
|
||||||
|
@ -445,5 +445,8 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||||||
("FPS", ""),
|
("FPS", ""),
|
||||||
("Auto", ""),
|
("Auto", ""),
|
||||||
("Other Default Options", ""),
|
("Other Default Options", ""),
|
||||||
|
("Guest to Host", ""),
|
||||||
|
("Two way", ""),
|
||||||
|
("Audio Transmission Mode", ""),
|
||||||
].iter().cloned().collect();
|
].iter().cloned().collect();
|
||||||
}
|
}
|
||||||
|
@ -445,5 +445,8 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||||||
("FPS", ""),
|
("FPS", ""),
|
||||||
("Auto", ""),
|
("Auto", ""),
|
||||||
("Other Default Options", ""),
|
("Other Default Options", ""),
|
||||||
|
("Guest to Host", ""),
|
||||||
|
("Two way", ""),
|
||||||
|
("Audio Transmission Mode", ""),
|
||||||
].iter().cloned().collect();
|
].iter().cloned().collect();
|
||||||
}
|
}
|
||||||
|
@ -445,5 +445,8 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||||||
("FPS", "FPS"),
|
("FPS", "FPS"),
|
||||||
("Auto", "Auto"),
|
("Auto", "Auto"),
|
||||||
("Other Default Options", "Altre Opzioni Predefinite"),
|
("Other Default Options", "Altre Opzioni Predefinite"),
|
||||||
|
("Guest to Host", ""),
|
||||||
|
("Two way", ""),
|
||||||
|
("Audio Transmission Mode", ""),
|
||||||
].iter().cloned().collect();
|
].iter().cloned().collect();
|
||||||
}
|
}
|
||||||
|
@ -445,5 +445,8 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||||||
("FPS", ""),
|
("FPS", ""),
|
||||||
("Auto", ""),
|
("Auto", ""),
|
||||||
("Other Default Options", ""),
|
("Other Default Options", ""),
|
||||||
|
("Guest to Host", ""),
|
||||||
|
("Two way", ""),
|
||||||
|
("Audio Transmission Mode", ""),
|
||||||
].iter().cloned().collect();
|
].iter().cloned().collect();
|
||||||
}
|
}
|
||||||
|
@ -445,5 +445,8 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||||||
("FPS", ""),
|
("FPS", ""),
|
||||||
("Auto", ""),
|
("Auto", ""),
|
||||||
("Other Default Options", ""),
|
("Other Default Options", ""),
|
||||||
|
("Guest to Host", ""),
|
||||||
|
("Two way", ""),
|
||||||
|
("Audio Transmission Mode", ""),
|
||||||
].iter().cloned().collect();
|
].iter().cloned().collect();
|
||||||
}
|
}
|
||||||
|
@ -445,5 +445,8 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||||||
("FPS", ""),
|
("FPS", ""),
|
||||||
("Auto", ""),
|
("Auto", ""),
|
||||||
("Other Default Options", ""),
|
("Other Default Options", ""),
|
||||||
|
("Guest to Host", ""),
|
||||||
|
("Two way", ""),
|
||||||
|
("Audio Transmission Mode", ""),
|
||||||
].iter().cloned().collect();
|
].iter().cloned().collect();
|
||||||
}
|
}
|
||||||
|
@ -445,5 +445,8 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||||||
("FPS", "FPS"),
|
("FPS", "FPS"),
|
||||||
("Auto", "Auto"),
|
("Auto", "Auto"),
|
||||||
("Other Default Options", "Inne opcje domyślne"),
|
("Other Default Options", "Inne opcje domyślne"),
|
||||||
|
("Guest to Host", ""),
|
||||||
|
("Two way", ""),
|
||||||
|
("Audio Transmission Mode", ""),
|
||||||
].iter().cloned().collect();
|
].iter().cloned().collect();
|
||||||
}
|
}
|
||||||
|
@ -445,5 +445,8 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||||||
("FPS", ""),
|
("FPS", ""),
|
||||||
("Auto", ""),
|
("Auto", ""),
|
||||||
("Other Default Options", ""),
|
("Other Default Options", ""),
|
||||||
|
("Guest to Host", ""),
|
||||||
|
("Two way", ""),
|
||||||
|
("Audio Transmission Mode", ""),
|
||||||
].iter().cloned().collect();
|
].iter().cloned().collect();
|
||||||
}
|
}
|
||||||
|
@ -445,5 +445,8 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||||||
("FPS", ""),
|
("FPS", ""),
|
||||||
("Auto", ""),
|
("Auto", ""),
|
||||||
("Other Default Options", ""),
|
("Other Default Options", ""),
|
||||||
|
("Guest to Host", ""),
|
||||||
|
("Two way", ""),
|
||||||
|
("Audio Transmission Mode", ""),
|
||||||
].iter().cloned().collect();
|
].iter().cloned().collect();
|
||||||
}
|
}
|
||||||
|
@ -445,5 +445,8 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||||||
("FPS", ""),
|
("FPS", ""),
|
||||||
("Auto", ""),
|
("Auto", ""),
|
||||||
("Other Default Options", ""),
|
("Other Default Options", ""),
|
||||||
|
("Guest to Host", ""),
|
||||||
|
("Two way", ""),
|
||||||
|
("Audio Transmission Mode", ""),
|
||||||
].iter().cloned().collect();
|
].iter().cloned().collect();
|
||||||
}
|
}
|
||||||
|
@ -445,5 +445,10 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||||||
("FPS", "FPS"),
|
("FPS", "FPS"),
|
||||||
("Auto", "Авто"),
|
("Auto", "Авто"),
|
||||||
("Other Default Options", "Другие параметры по умолчанию"),
|
("Other Default Options", "Другие параметры по умолчанию"),
|
||||||
|
("Please confirm if you want to share your desktop?", "Подтвердите, что хотите поделиться своим рабочим столом?"),
|
||||||
|
("Closed as expected", ""),
|
||||||
|
("Guest to Host", ""),
|
||||||
|
("Two way", ""),
|
||||||
|
("Audio Transmission Mode", ""),
|
||||||
].iter().cloned().collect();
|
].iter().cloned().collect();
|
||||||
}
|
}
|
||||||
|
@ -445,5 +445,8 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||||||
("FPS", ""),
|
("FPS", ""),
|
||||||
("Auto", ""),
|
("Auto", ""),
|
||||||
("Other Default Options", ""),
|
("Other Default Options", ""),
|
||||||
|
("Guest to Host", ""),
|
||||||
|
("Two way", ""),
|
||||||
|
("Audio Transmission Mode", ""),
|
||||||
].iter().cloned().collect();
|
].iter().cloned().collect();
|
||||||
}
|
}
|
||||||
|
@ -445,5 +445,8 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||||||
("FPS", ""),
|
("FPS", ""),
|
||||||
("Auto", ""),
|
("Auto", ""),
|
||||||
("Other Default Options", ""),
|
("Other Default Options", ""),
|
||||||
|
("Guest to Host", ""),
|
||||||
|
("Two way", ""),
|
||||||
|
("Audio Transmission Mode", ""),
|
||||||
].iter().cloned().collect();
|
].iter().cloned().collect();
|
||||||
}
|
}
|
||||||
|
@ -445,5 +445,8 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||||||
("FPS", ""),
|
("FPS", ""),
|
||||||
("Auto", ""),
|
("Auto", ""),
|
||||||
("Other Default Options", ""),
|
("Other Default Options", ""),
|
||||||
|
("Guest to Host", ""),
|
||||||
|
("Two way", ""),
|
||||||
|
("Audio Transmission Mode", ""),
|
||||||
].iter().cloned().collect();
|
].iter().cloned().collect();
|
||||||
}
|
}
|
||||||
|
@ -445,5 +445,8 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||||||
("FPS", ""),
|
("FPS", ""),
|
||||||
("Auto", ""),
|
("Auto", ""),
|
||||||
("Other Default Options", ""),
|
("Other Default Options", ""),
|
||||||
|
("Guest to Host", ""),
|
||||||
|
("Two way", ""),
|
||||||
|
("Audio Transmission Mode", ""),
|
||||||
].iter().cloned().collect();
|
].iter().cloned().collect();
|
||||||
}
|
}
|
||||||
|
@ -445,5 +445,8 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||||||
("FPS", ""),
|
("FPS", ""),
|
||||||
("Auto", ""),
|
("Auto", ""),
|
||||||
("Other Default Options", ""),
|
("Other Default Options", ""),
|
||||||
|
("Guest to Host", ""),
|
||||||
|
("Two way", ""),
|
||||||
|
("Audio Transmission Mode", ""),
|
||||||
].iter().cloned().collect();
|
].iter().cloned().collect();
|
||||||
}
|
}
|
||||||
|
@ -445,5 +445,8 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||||||
("FPS", ""),
|
("FPS", ""),
|
||||||
("Auto", ""),
|
("Auto", ""),
|
||||||
("Other Default Options", ""),
|
("Other Default Options", ""),
|
||||||
|
("Guest to Host", ""),
|
||||||
|
("Two way", ""),
|
||||||
|
("Audio Transmission Mode", ""),
|
||||||
].iter().cloned().collect();
|
].iter().cloned().collect();
|
||||||
}
|
}
|
||||||
|
@ -445,5 +445,8 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||||||
("FPS", ""),
|
("FPS", ""),
|
||||||
("Auto", ""),
|
("Auto", ""),
|
||||||
("Other Default Options", ""),
|
("Other Default Options", ""),
|
||||||
|
("Guest to Host", ""),
|
||||||
|
("Two way", ""),
|
||||||
|
("Audio Transmission Mode", ""),
|
||||||
].iter().cloned().collect();
|
].iter().cloned().collect();
|
||||||
}
|
}
|
||||||
|
@ -445,5 +445,8 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||||||
("FPS", ""),
|
("FPS", ""),
|
||||||
("Auto", ""),
|
("Auto", ""),
|
||||||
("Other Default Options", ""),
|
("Other Default Options", ""),
|
||||||
|
("Guest to Host", ""),
|
||||||
|
("Two way", ""),
|
||||||
|
("Audio Transmission Mode", ""),
|
||||||
].iter().cloned().collect();
|
].iter().cloned().collect();
|
||||||
}
|
}
|
||||||
|
@ -445,5 +445,8 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||||||
("FPS", "幀率"),
|
("FPS", "幀率"),
|
||||||
("Auto", "自動"),
|
("Auto", "自動"),
|
||||||
("Other Default Options", "其它默認選項"),
|
("Other Default Options", "其它默認選項"),
|
||||||
|
("Guest to Host", ""),
|
||||||
|
("Two way", ""),
|
||||||
|
("Audio Transmission Mode", ""),
|
||||||
].iter().cloned().collect();
|
].iter().cloned().collect();
|
||||||
}
|
}
|
||||||
|
@ -445,5 +445,8 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||||||
("FPS", ""),
|
("FPS", ""),
|
||||||
("Auto", ""),
|
("Auto", ""),
|
||||||
("Other Default Options", ""),
|
("Other Default Options", ""),
|
||||||
|
("Guest to Host", ""),
|
||||||
|
("Two way", ""),
|
||||||
|
("Audio Transmission Mode", ""),
|
||||||
].iter().cloned().collect();
|
].iter().cloned().collect();
|
||||||
}
|
}
|
||||||
|
@ -445,5 +445,8 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||||||
("FPS", ""),
|
("FPS", ""),
|
||||||
("Auto", ""),
|
("Auto", ""),
|
||||||
("Other Default Options", ""),
|
("Other Default Options", ""),
|
||||||
|
("Guest to Host", ""),
|
||||||
|
("Two way", ""),
|
||||||
|
("Audio Transmission Mode", ""),
|
||||||
].iter().cloned().collect();
|
].iter().cloned().collect();
|
||||||
}
|
}
|
||||||
|
@ -89,6 +89,18 @@ impl<T: InvokeUiSession> Session<T> {
|
|||||||
self.lc.write().unwrap().save_keyboard_mode(value);
|
self.lc.write().unwrap().save_keyboard_mode(value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn get_audio_mode(&self) -> String {
|
||||||
|
self.lc.read().unwrap().audio_mode.clone()
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn save_audio_mode(&self, value: String) {
|
||||||
|
let msg = self.lc.write().unwrap().save_audio_mode(value);
|
||||||
|
// Notify remote guest that the audio mode has been changed.
|
||||||
|
if let Some(msg) = msg {
|
||||||
|
self.send(Data::Message(msg));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
pub fn save_view_style(&mut self, value: String) {
|
pub fn save_view_style(&mut self, value: String) {
|
||||||
self.lc.write().unwrap().save_view_style(value);
|
self.lc.write().unwrap().save_view_style(value);
|
||||||
}
|
}
|
||||||
@ -653,6 +665,13 @@ impl<T: InvokeUiSession> Session<T> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn get_audio_transmission_mode(&self, id: &str) {
|
||||||
|
|
||||||
|
}
|
||||||
|
fn set_audio_transmission_mode(&self, id: &str, mode: String) {
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub trait InvokeUiSession: Send + Sync + Clone + 'static + Sized + Default {
|
pub trait InvokeUiSession: Send + Sync + Clone + 'static + Sized + Default {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user