Refact/options (#9318)
* refact options Signed-off-by: fufesou <linlong1266@gmail.com> * Remove unused msg Signed-off-by: fufesou <linlong1266@gmail.com> * web, toggle virtual display Signed-off-by: fufesou <linlong1266@gmail.com> --------- Signed-off-by: fufesou <linlong1266@gmail.com>
This commit is contained in:
parent
519539ed0a
commit
9380f33d7c
@ -1718,7 +1718,9 @@ class _KeyboardMenu extends StatelessWidget {
|
|||||||
if (value == null) return;
|
if (value == null) return;
|
||||||
await bind.sessionToggleOption(
|
await bind.sessionToggleOption(
|
||||||
sessionId: ffi.sessionId, value: kOptionToggleViewOnly);
|
sessionId: ffi.sessionId, value: kOptionToggleViewOnly);
|
||||||
ffiModel.setViewOnly(id, value);
|
final viewOnly = await bind.sessionGetToggleOption(
|
||||||
|
sessionId: ffi.sessionId, arg: kOptionToggleViewOnly);
|
||||||
|
ffiModel.setViewOnly(id, viewOnly ?? value);
|
||||||
}
|
}
|
||||||
: null,
|
: null,
|
||||||
ffi: ffi,
|
ffi: ffi,
|
||||||
|
@ -795,7 +795,7 @@ class FfiModel with ChangeNotifier {
|
|||||||
isRefreshing = false;
|
isRefreshing = false;
|
||||||
}
|
}
|
||||||
Map<String, dynamic> features = json.decode(evt['features']);
|
Map<String, dynamic> features = json.decode(evt['features']);
|
||||||
_pi.features.privacyMode = features['privacy_mode'] == 1;
|
_pi.features.privacyMode = features['privacy_mode'] == true;
|
||||||
if (!isCache) {
|
if (!isCache) {
|
||||||
handleResolutions(peerId, evt["resolutions"]);
|
handleResolutions(peerId, evt["resolutions"]);
|
||||||
}
|
}
|
||||||
|
@ -196,8 +196,8 @@ class RustdeskImpl {
|
|||||||
required bool on,
|
required bool on,
|
||||||
dynamic hint}) {
|
dynamic hint}) {
|
||||||
return Future(() => js.context.callMethod('setByName', [
|
return Future(() => js.context.callMethod('setByName', [
|
||||||
'option:toggle',
|
'toggle_privacy_mode',
|
||||||
jsonEncode({implKey, on})
|
jsonEncode({'impl_key': implKey, 'on': on})
|
||||||
]));
|
]));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1204,8 +1204,10 @@ class RustdeskImpl {
|
|||||||
required int index,
|
required int index,
|
||||||
required bool on,
|
required bool on,
|
||||||
dynamic hint}) {
|
dynamic hint}) {
|
||||||
// TODO
|
return Future(() => js.context.callMethod('setByName', [
|
||||||
throw UnimplementedError();
|
'toggle_virtual_display',
|
||||||
|
jsonEncode({'index': index, 'on': on})
|
||||||
|
]));
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<void> mainSetHomeDir({required String home, dynamic hint}) {
|
Future<void> mainSetHomeDir({required String home, dynamic hint}) {
|
||||||
|
@ -316,7 +316,7 @@ impl ToString for CodecFormat {
|
|||||||
CodecFormat::AV1 => "AV1".into(),
|
CodecFormat::AV1 => "AV1".into(),
|
||||||
CodecFormat::H264 => "H264".into(),
|
CodecFormat::H264 => "H264".into(),
|
||||||
CodecFormat::H265 => "H265".into(),
|
CodecFormat::H265 => "H265".into(),
|
||||||
CodecFormat::Unknown => "Unknow".into(),
|
CodecFormat::Unknown => "Unknown".into(),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1800,28 +1800,6 @@ impl LoginConfigHandler {
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn get_option_message_after_login(&self) -> Option<OptionMessage> {
|
|
||||||
if self.conn_type.eq(&ConnType::FILE_TRANSFER)
|
|
||||||
|| self.conn_type.eq(&ConnType::PORT_FORWARD)
|
|
||||||
|| self.conn_type.eq(&ConnType::RDP)
|
|
||||||
{
|
|
||||||
return None;
|
|
||||||
}
|
|
||||||
let mut n = 0;
|
|
||||||
let mut msg = OptionMessage::new();
|
|
||||||
if self.version < hbb_common::get_version_number("1.2.4") {
|
|
||||||
if self.get_toggle_option("privacy-mode") {
|
|
||||||
msg.privacy_mode = BoolOption::Yes.into();
|
|
||||||
n += 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if n > 0 {
|
|
||||||
Some(msg)
|
|
||||||
} else {
|
|
||||||
None
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Parse the image quality option.
|
/// Parse the image quality option.
|
||||||
/// Return [`ImageQuality`] if the option is valid, otherwise return `None`.
|
/// Return [`ImageQuality`] if the option is valid, otherwise return `None`.
|
||||||
///
|
///
|
||||||
|
@ -958,22 +958,6 @@ impl<T: InvokeUiSession> Remote<T> {
|
|||||||
true
|
true
|
||||||
}
|
}
|
||||||
|
|
||||||
async fn send_opts_after_login(&self, peer: &mut Stream) {
|
|
||||||
if let Some(opts) = self
|
|
||||||
.handler
|
|
||||||
.lc
|
|
||||||
.read()
|
|
||||||
.unwrap()
|
|
||||||
.get_option_message_after_login()
|
|
||||||
{
|
|
||||||
let mut misc = Misc::new();
|
|
||||||
misc.set_option(opts);
|
|
||||||
let mut msg_out = Message::new();
|
|
||||||
msg_out.set_misc(misc);
|
|
||||||
allow_err!(peer.send(&msg_out).await);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
async fn send_toggle_virtual_display_msg(&self, peer: &mut Stream) {
|
async fn send_toggle_virtual_display_msg(&self, peer: &mut Stream) {
|
||||||
if !self.peer_info.is_support_virtual_display() {
|
if !self.peer_info.is_support_virtual_display() {
|
||||||
return;
|
return;
|
||||||
@ -1135,7 +1119,6 @@ impl<T: InvokeUiSession> Remote<T> {
|
|||||||
self.first_frame = true;
|
self.first_frame = true;
|
||||||
self.handler.close_success();
|
self.handler.close_success();
|
||||||
self.handler.adapt_size();
|
self.handler.adapt_size();
|
||||||
self.send_opts_after_login(peer).await;
|
|
||||||
self.send_toggle_virtual_display_msg(peer).await;
|
self.send_toggle_virtual_display_msg(peer).await;
|
||||||
self.send_toggle_privacy_mode_msg(peer).await;
|
self.send_toggle_privacy_mode_msg(peer).await;
|
||||||
}
|
}
|
||||||
|
@ -802,13 +802,13 @@ impl InvokeUiSession for FlutterHandler {
|
|||||||
|
|
||||||
fn set_peer_info(&self, pi: &PeerInfo) {
|
fn set_peer_info(&self, pi: &PeerInfo) {
|
||||||
let displays = Self::make_displays_msg(&pi.displays);
|
let displays = Self::make_displays_msg(&pi.displays);
|
||||||
let mut features: HashMap<&str, i32> = Default::default();
|
let mut features: HashMap<&str, bool> = Default::default();
|
||||||
for ref f in pi.features.iter() {
|
for ref f in pi.features.iter() {
|
||||||
features.insert("privacy_mode", if f.privacy_mode { 1 } else { 0 });
|
features.insert("privacy_mode", f.privacy_mode);
|
||||||
}
|
}
|
||||||
// compatible with 1.1.9
|
// compatible with 1.1.9
|
||||||
if get_version_number(&pi.version) < get_version_number("1.2.0") {
|
if get_version_number(&pi.version) < get_version_number("1.2.0") {
|
||||||
features.insert("privacy_mode", 0);
|
features.insert("privacy_mode", false);
|
||||||
}
|
}
|
||||||
let features = serde_json::ser::to_string(&features).unwrap_or("".to_owned());
|
let features = serde_json::ser::to_string(&features).unwrap_or("".to_owned());
|
||||||
let resolutions = serialize_resolutions(&pi.resolutions.resolutions);
|
let resolutions = serialize_resolutions(&pi.resolutions.resolutions);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user