open multi windows, add remote toolbar option

Signed-off-by: dignow <linlong1265@gmail.com>
This commit is contained in:
dignow 2023-10-17 13:57:06 +08:00
parent e997b148e1
commit f1d3a553d1
8 changed files with 40 additions and 25 deletions

View File

@ -535,5 +535,20 @@ Future<List<TToggleMenu>> toolbarDisplayToggle(
child: Text(translate('Show displays as individual windows')))); child: Text(translate('Show displays as individual windows'))));
} }
final screenList = await getScreenRectList();
if (useTextureRender && pi.isSupportMultiDisplay && screenList.length > 1) {
final value = bind.sessionGetUseAllMyDisplaysForTheRemoteSession(
sessionId: ffi.sessionId) ==
'Y';
v.add(TToggleMenu(
value: value,
onChanged: (value) {
if (value == null) return;
bind.sessionSetUseAllMyDisplaysForTheRemoteSession(
sessionId: sessionId, value: value ? 'Y' : '');
},
child: Text(translate('Use all my displays for the remote session'))));
}
return v; return v;
} }

View File

@ -66,7 +66,7 @@ const String kPointerEventKindTouch = "touch";
const String kPointerEventKindMouse = "mouse"; const String kPointerEventKindMouse = "mouse";
const String kKeyShowDisplaysAsIndividualWindows = 'displays_as_individual_windows'; const String kKeyShowDisplaysAsIndividualWindows = 'displays_as_individual_windows';
const String kKeyUseAllMyMonitorsWhenConnecting = 'use_all_my_monitors_when_connecting'; const String kKeyUseAllMyDisplaysForTheRemoteSession = 'use_all_my_displays_for_the_remote_session';
const String kKeyShowMonitorsToolbar = 'show_monitors_toolbar'; const String kKeyShowMonitorsToolbar = 'show_monitors_toolbar';
// the executable name of the portable version // the executable name of the portable version

View File

@ -1325,7 +1325,7 @@ class _DisplayState extends State<_Display> {
children.add(otherRow('Show displays as individual windows', children.add(otherRow('Show displays as individual windows',
kKeyShowDisplaysAsIndividualWindows)); kKeyShowDisplaysAsIndividualWindows));
children.add(otherRow('Use all my displays for the remote session', children.add(otherRow('Use all my displays for the remote session',
kKeyUseAllMyMonitorsWhenConnecting)); kKeyUseAllMyDisplaysForTheRemoteSession));
} }
return _Card(title: 'Other Default Options', children: children); return _Card(title: 'Other Default Options', children: children);
} }

View File

@ -705,13 +705,13 @@ class FfiModel with ChangeNotifier {
notifyListeners(); notifyListeners();
if (!isCache) { if (!isCache) {
tryUseAllMyDisplaysWhenConnecting(peerId); tryUseAllMyDisplaysForTheRemoteSession(peerId);
} }
} }
tryUseAllMyDisplaysWhenConnecting(String peerId) async { tryUseAllMyDisplaysForTheRemoteSession(String peerId) async {
if (bind.mainGetUserDefaultOption( if (bind.sessionGetUseAllMyDisplaysForTheRemoteSession(
key: kKeyUseAllMyMonitorsWhenConnecting) != sessionId: sessionId) !=
'Y') { 'Y') {
return; return;
} }

View File

@ -291,11 +291,11 @@ pub struct PeerConfig {
)] )]
pub displays_as_individual_windows: String, pub displays_as_individual_windows: String,
#[serde( #[serde(
default = "PeerConfig::default_use_all_my_monitors_when_connecting", default = "PeerConfig::default_use_all_my_displays_for_the_remote_session",
deserialize_with = "PeerConfig::deserialize_use_all_my_monitors_when_connecting", deserialize_with = "PeerConfig::deserialize_use_all_my_displays_for_the_remote_session",
skip_serializing_if = "String::is_empty" skip_serializing_if = "String::is_empty"
)] )]
pub use_all_my_monitors_when_connecting: String, pub use_all_my_displays_for_the_remote_session: String,
#[serde( #[serde(
default, default,
@ -341,7 +341,7 @@ impl Default for PeerConfig {
view_only: Default::default(), view_only: Default::default(),
reverse_mouse_wheel: Self::default_reverse_mouse_wheel(), reverse_mouse_wheel: Self::default_reverse_mouse_wheel(),
displays_as_individual_windows: Self::default_displays_as_individual_windows(), displays_as_individual_windows: Self::default_displays_as_individual_windows(),
use_all_my_monitors_when_connecting: Self::default_use_all_my_monitors_when_connecting( use_all_my_displays_for_the_remote_session: Self::default_use_all_my_displays_for_the_remote_session(
), ),
custom_resolutions: Default::default(), custom_resolutions: Default::default(),
options: Self::default_options(), options: Self::default_options(),
@ -1165,9 +1165,9 @@ impl PeerConfig {
UserDefaultConfig::read().get("displays_as_individual_windows") UserDefaultConfig::read().get("displays_as_individual_windows")
); );
serde_field_string!( serde_field_string!(
default_use_all_my_monitors_when_connecting, default_use_all_my_displays_for_the_remote_session,
deserialize_use_all_my_monitors_when_connecting, deserialize_use_all_my_displays_for_the_remote_session,
UserDefaultConfig::read().get("use_all_my_monitors_when_connecting") UserDefaultConfig::read().get("use_all_my_displays_for_the_remote_session")
); );
fn default_custom_image_quality() -> Vec<i32> { fn default_custom_image_quality() -> Vec<i32> {

View File

@ -1218,14 +1218,14 @@ impl LoginConfigHandler {
self.save_config(config); self.save_config(config);
} }
/// Save "use_all_my_monitors_when_connecting" ("", "Y") to the current config. /// Save "use_all_my_displays_for_the_remote_session" ("", "Y") to the current config.
/// ///
/// # Arguments /// # Arguments
/// ///
/// * `value` - The "use_all_my_monitors_when_connecting" value ("", "Y"). /// * `value` - The "use_all_my_displays_for_the_remote_session" value ("", "Y").
pub fn save_use_all_my_monitors_when_connecting(&mut self, value: String) { pub fn save_use_all_my_displays_for_the_remote_session(&mut self, value: String) {
let mut config = self.load_config(); let mut config = self.load_config();
config.use_all_my_monitors_when_connecting = value; config.use_all_my_displays_for_the_remote_session = value;
self.save_config(config); self.save_config(config);
} }

View File

@ -355,19 +355,19 @@ pub fn session_set_displays_as_individual_windows(session_id: SessionID, value:
} }
} }
pub fn session_get_use_all_my_monitors_when_connecting( pub fn session_get_use_all_my_displays_for_the_remote_session(
session_id: SessionID, session_id: SessionID,
) -> SyncReturn<Option<String>> { ) -> SyncReturn<Option<String>> {
if let Some(session) = sessions::get_session_by_session_id(&session_id) { if let Some(session) = sessions::get_session_by_session_id(&session_id) {
SyncReturn(Some(session.get_use_all_my_monitors_when_connecting())) SyncReturn(Some(session.get_use_all_my_displays_for_the_remote_session()))
} else { } else {
SyncReturn(None) SyncReturn(None)
} }
} }
pub fn session_set_use_all_my_monitors_when_connecting(session_id: SessionID, value: String) { pub fn session_set_use_all_my_displays_for_the_remote_session(session_id: SessionID, value: String) {
if let Some(session) = sessions::get_session_by_session_id(&session_id) { if let Some(session) = sessions::get_session_by_session_id(&session_id) {
session.save_use_all_my_monitors_when_connecting(value); session.save_use_all_my_displays_for_the_remote_session(value);
} }
} }

View File

@ -240,8 +240,8 @@ impl<T: InvokeUiSession> Session<T> {
self.lc.read().unwrap().displays_as_individual_windows.clone() self.lc.read().unwrap().displays_as_individual_windows.clone()
} }
pub fn get_use_all_my_monitors_when_connecting(&self) -> String { pub fn get_use_all_my_displays_for_the_remote_session(&self) -> String {
self.lc.read().unwrap().use_all_my_monitors_when_connecting.clone() self.lc.read().unwrap().use_all_my_displays_for_the_remote_session.clone()
} }
pub fn save_reverse_mouse_wheel(&self, value: String) { pub fn save_reverse_mouse_wheel(&self, value: String) {
@ -252,8 +252,8 @@ impl<T: InvokeUiSession> Session<T> {
self.lc.write().unwrap().save_displays_as_individual_windows(value); self.lc.write().unwrap().save_displays_as_individual_windows(value);
} }
pub fn save_use_all_my_monitors_when_connecting(&self, value: String) { pub fn save_use_all_my_displays_for_the_remote_session(&self, value: String) {
self.lc.write().unwrap().save_use_all_my_monitors_when_connecting(value); self.lc.write().unwrap().save_use_all_my_displays_for_the_remote_session(value);
} }
pub fn save_view_style(&self, value: String) { pub fn save_view_style(&self, value: String) {