tmp commit

Signed-off-by: dignow <linlong1265@gmail.com>
This commit is contained in:
dignow 2023-08-04 00:17:11 +08:00
parent e4ac34da0d
commit e12d0ef4aa

View File

@ -45,25 +45,29 @@ class RustDeskMultiWindowManager {
separateWindows() async { separateWindows() async {
for (final windowId in _remoteDesktopWindows) { for (final windowId in _remoteDesktopWindows) {
final sessionIdList = await DesktopMultiWindow.invokeMethod( final String sessionIdList = await DesktopMultiWindow.invokeMethod(
windowId, kWindowEventGetSessionIdList, null); windowId, kWindowEventGetSessionIdList, null);
if (sessionIdList != null) { final idList = sessionIdList.split(';');
final idList = sessionIdList.split(';') as List<String>; if (idList.length <= 1) {
if (idList.length <= 1) { continue;
continue; }
} for (final idPair in idList.sublist(1)) {
for (final idPair in idList.sublist(1)) { final peerSession = idPair.split(',');
final peerSession = idPair.split(','); var params = {
var params = { 'type': WindowType.RemoteDesktop.index,
'type': WindowType.RemoteDesktop.index, 'id': peerSession[0],
'id': peerSession[0], 'sessionId': peerSession[1],
'sessionId': peerSession[1], };
}; await _newSession(
await newSessionWindow(WindowType.RemoteDesktop, peerSession[0], true,
jsonEncode(params), _remoteDesktopWindows); WindowType.RemoteDesktop,
await DesktopMultiWindow.invokeMethod( kWindowEventNewRemoteDesktop,
windowId, kWindowEventCloseForSeparateWindow, peerSession[0]); peerSession[0],
} _remoteDesktopWindows,
jsonEncode(params),
);
await DesktopMultiWindow.invokeMethod(
windowId, kWindowEventCloseForSeparateWindow, peerSession[0]);
} }
} }
} }
@ -87,6 +91,36 @@ class RustDeskMultiWindowManager {
windows.add(windowController.windowId); windows.add(windowController.windowId);
} }
_newSession(
bool separateWindow,
WindowType type,
String methodName,
String remoteId,
List<int> windows,
String msg,
) async {
if (separateWindow) {
if (kCloseMultiWindowByHide && _inactiveWindows.isNotEmpty) {
final windowId = _inactiveWindows.first;
final invokeRes =
await DesktopMultiWindow.invokeMethod(windowId, methodName, msg);
final windowController = WindowController.fromWindowId(windowId);
windowController.show();
registerActiveWindow(windowController.windowId);
windows.add(windowController.windowId);
return invokeRes;
} else {
await newSessionWindow(type, remoteId, msg, windows);
}
} else {
if (windows.isEmpty) {
await newSessionWindow(type, remoteId, msg, windows);
} else {
return call(type, methodName, msg);
}
}
}
Future<dynamic> newSession( Future<dynamic> newSession(
WindowType type, WindowType type,
String methodName, String methodName,
@ -126,26 +160,7 @@ class RustDeskMultiWindowManager {
} }
} }
if (separateWindow) { await _newSession(separateWindow, type, methodName, remoteId, windows, msg);
if (kCloseMultiWindowByHide && _inactiveWindows.isNotEmpty) {
final windowId = _inactiveWindows.first;
final invokeRes =
await DesktopMultiWindow.invokeMethod(windowId, methodName, msg);
final windowController = WindowController.fromWindowId(windowId);
windowController.show();
registerActiveWindow(windowController.windowId);
windows.add(windowController.windowId);
return invokeRes;
} else {
await newSessionWindow(type, remoteId, msg, windows);
}
} else {
if (windows.isEmpty) {
await newSessionWindow(type, remoteId, msg, windows);
} else {
return call(type, methodName, msg);
}
}
} }
Future<dynamic> newRemoteDesktop( Future<dynamic> newRemoteDesktop(