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'))));
}
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;
}

View File

@ -66,7 +66,7 @@ const String kPointerEventKindTouch = "touch";
const String kPointerEventKindMouse = "mouse";
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';
// 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',
kKeyShowDisplaysAsIndividualWindows));
children.add(otherRow('Use all my displays for the remote session',
kKeyUseAllMyMonitorsWhenConnecting));
kKeyUseAllMyDisplaysForTheRemoteSession));
}
return _Card(title: 'Other Default Options', children: children);
}

View File

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

View File

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

View File

@ -1218,14 +1218,14 @@ impl LoginConfigHandler {
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
///
/// * `value` - The "use_all_my_monitors_when_connecting" value ("", "Y").
pub fn save_use_all_my_monitors_when_connecting(&mut self, value: String) {
/// * `value` - The "use_all_my_displays_for_the_remote_session" value ("", "Y").
pub fn save_use_all_my_displays_for_the_remote_session(&mut self, value: String) {
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);
}

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,
) -> SyncReturn<Option<String>> {
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 {
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) {
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()
}
pub fn get_use_all_my_monitors_when_connecting(&self) -> String {
self.lc.read().unwrap().use_all_my_monitors_when_connecting.clone()
pub fn get_use_all_my_displays_for_the_remote_session(&self) -> String {
self.lc.read().unwrap().use_all_my_displays_for_the_remote_session.clone()
}
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);
}
pub fn save_use_all_my_monitors_when_connecting(&self, value: String) {
self.lc.write().unwrap().save_use_all_my_monitors_when_connecting(value);
pub fn save_use_all_my_displays_for_the_remote_session(&self, value: String) {
self.lc.write().unwrap().save_use_all_my_displays_for_the_remote_session(value);
}
pub fn save_view_style(&self, value: String) {