tmp commit
Signed-off-by: dignow <linlong1265@gmail.com>
This commit is contained in:
parent
e4ac34da0d
commit
e12d0ef4aa
@ -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(
|
||||||
|
Loading…
x
Reference in New Issue
Block a user