From a3643f53bf1b80cc2a715f101ce199da2d42c1c1 Mon Sep 17 00:00:00 2001 From: fufesou Date: Tue, 10 Jan 2023 17:13:40 +0800 Subject: [PATCH] set image center when remote resolution is changed Signed-off-by: fufesou --- flutter/lib/common.dart | 6 +++--- flutter/lib/consts.dart | 5 +++++ flutter/lib/desktop/pages/remote_tab_page.dart | 2 +- .../desktop/widgets/kb_layout_type_chooser.dart | 7 ++++--- flutter/lib/desktop/widgets/remote_menubar.dart | 12 ++++++------ flutter/lib/mobile/pages/remote_page.dart | 14 +++++++------- flutter/lib/models/file_model.dart | 3 ++- flutter/lib/models/model.dart | 7 ++++++- 8 files changed, 34 insertions(+), 22 deletions(-) diff --git a/flutter/lib/common.dart b/flutter/lib/common.dart index ed78a8e09..93cbe135d 100644 --- a/flutter/lib/common.dart +++ b/flutter/lib/common.dart @@ -977,10 +977,10 @@ Future matchPeer(String searchText, Peer peer) async { /// Get the image for the current [platform]. Widget getPlatformImage(String platform, {double size = 50}) { - platform = platform.toLowerCase(); - if (platform == 'mac os') { + if (platform == kPeerPlatformMacOS) { platform = 'mac'; - } else if (platform != 'linux' && platform != 'android') { + } else if (platform != kPeerPlatformLinux && + platform != kPeerPlatformAndroid) { platform = 'win'; } return SvgPicture.asset('assets/$platform.svg', height: size, width: size); diff --git a/flutter/lib/consts.dart b/flutter/lib/consts.dart index 7aa200ae9..e4081d9a5 100644 --- a/flutter/lib/consts.dart +++ b/flutter/lib/consts.dart @@ -5,6 +5,11 @@ import 'package:flutter_hbb/common.dart'; const double kDesktopRemoteTabBarHeight = 28.0; +const String kPeerPlatformWindows = "Windows"; +const String kPeerPlatformLinux = "Linux"; +const String kPeerPlatformMacOS = "Mac OS"; +const String kPeerPlatformAndroid = "Android"; + /// [kAppTypeMain] used by 'Desktop Main Page' , 'Mobile (Client and Server)' , 'Desktop CM Page', "Install Page" const String kAppTypeMain = "main"; const String kAppTypeDesktopRemote = "remote"; diff --git a/flutter/lib/desktop/pages/remote_tab_page.dart b/flutter/lib/desktop/pages/remote_tab_page.dart index 604787290..198b2aea7 100644 --- a/flutter/lib/desktop/pages/remote_tab_page.dart +++ b/flutter/lib/desktop/pages/remote_tab_page.dart @@ -308,7 +308,7 @@ class _ConnectionTabPageState extends State { dismissOnClicked: true, )); - if (pi.platform == 'Linux' || pi.sasEnabled) { + if (pi.platform == kPeerPlatformLinux || pi.sasEnabled) { menu.add(MenuEntryButton( childBuilder: (TextStyle? style) => Text( '${translate("Insert")} Ctrl + Alt + Del', diff --git a/flutter/lib/desktop/widgets/kb_layout_type_chooser.dart b/flutter/lib/desktop/widgets/kb_layout_type_chooser.dart index 58a8f7109..384b0f3bd 100644 --- a/flutter/lib/desktop/widgets/kb_layout_type_chooser.dart +++ b/flutter/lib/desktop/widgets/kb_layout_type_chooser.dart @@ -1,6 +1,7 @@ import 'dart:io'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; +import 'package:flutter_hbb/consts.dart'; import 'package:flutter_svg/flutter_svg.dart'; import 'package:flutter_hbb/models/platform_model.dart'; @@ -170,14 +171,14 @@ RxString KBLayoutType = ''.obs; String getLocalPlatformForKBLayoutType(String peerPlatform) { String localPlatform = ''; - if (peerPlatform != 'Mac OS') { + if (peerPlatform != kPeerPlatformMacOS) { return localPlatform; } if (Platform.isWindows) { - localPlatform = 'Windows'; + localPlatform = kPeerPlatformWindows; } else if (Platform.isLinux) { - localPlatform = 'Linux'; + localPlatform = kPeerPlatformLinux; } // to-do: web desktop support ? return localPlatform; diff --git a/flutter/lib/desktop/widgets/remote_menubar.dart b/flutter/lib/desktop/widgets/remote_menubar.dart index db95d33ca..fbeb2d469 100644 --- a/flutter/lib/desktop/widgets/remote_menubar.dart +++ b/flutter/lib/desktop/widgets/remote_menubar.dart @@ -589,7 +589,7 @@ class _RemoteMenubarState extends State { } displayMenu.add(MenuEntryDivider()); if (perms['keyboard'] != false) { - if (pi.platform == 'Linux' || pi.sasEnabled) { + if (pi.platform == kPeerPlatformLinux || pi.sasEnabled) { displayMenu.add(MenuEntryButton( childBuilder: (TextStyle? style) => Text( '${translate("Insert")} Ctrl + Alt + Del', @@ -604,9 +604,9 @@ class _RemoteMenubarState extends State { } } if (perms['restart'] != false && - (pi.platform == 'Linux' || - pi.platform == 'Windows' || - pi.platform == 'Mac OS')) { + (pi.platform == kPeerPlatformLinux || + pi.platform == kPeerPlatformWindows || + pi.platform == kPeerPlatformMacOS)) { displayMenu.add(MenuEntryButton( childBuilder: (TextStyle? style) => Text( translate('Restart Remote Device'), @@ -633,7 +633,7 @@ class _RemoteMenubarState extends State { dismissOnClicked: true, )); - if (pi.platform == 'Windows') { + if (pi.platform == kPeerPlatformWindows) { displayMenu.add(MenuEntryButton( childBuilder: (TextStyle? style) => Obx(() => Text( translate( @@ -1157,7 +1157,7 @@ class _RemoteMenubarState extends State { } if (Platform.isWindows && - pi.platform == 'Windows' && + pi.platform == kPeerPlatformWindows && perms['file'] != false) { displayMenu.add(_createSwitchMenuEntry( 'Allow file copy and paste', 'enable-file-transfer', padding, true)); diff --git a/flutter/lib/mobile/pages/remote_page.dart b/flutter/lib/mobile/pages/remote_page.dart index 97ce6268d..f0c49e9a9 100644 --- a/flutter/lib/mobile/pages/remote_page.dart +++ b/flutter/lib/mobile/pages/remote_page.dart @@ -574,14 +574,14 @@ class _RemotePageState extends State { more.add(PopupMenuItem( child: Text(translate('Physical Keyboard Input Mode')), value: 'input-mode')); - if (pi.platform == 'Linux' || pi.sasEnabled) { + if (pi.platform == kPeerPlatformLinux || pi.sasEnabled) { more.add(PopupMenuItem( child: Text('${translate('Insert')} Ctrl + Alt + Del'), value: 'cad')); } more.add(PopupMenuItem( child: Text(translate('Insert Lock')), value: 'lock')); - if (pi.platform == 'Windows' && + if (pi.platform == kPeerPlatformWindows && await bind.sessionGetToggleOption(id: id, arg: 'privacy-mode') != true) { more.add(PopupMenuItem( @@ -591,9 +591,9 @@ class _RemotePageState extends State { } } if (perms["restart"] != false && - (pi.platform == "Linux" || - pi.platform == "Windows" || - pi.platform == "Mac OS")) { + (pi.platform == kPeerPlatformLinux || + pi.platform == kPeerPlatformWindows || + pi.platform == kPeerPlatformMacOS)) { more.add(PopupMenuItem( child: Text(translate('Restart Remote Device')), value: 'restart')); } @@ -740,7 +740,7 @@ class _RemotePageState extends State { } final pi = gFFI.ffiModel.pi; - final isMac = pi.platform == "Mac OS"; + final isMac = pi.platform == kPeerPlatformMacOS; final modifiers = [ wrap('Ctrl ', () { setState(() => inputModel.ctrl = !inputModel.ctrl); @@ -995,7 +995,7 @@ void showOptions( } more.add(getToggle( id, setState, 'lock-after-session-end', 'Lock after session end')); - if (pi.platform == 'Windows') { + if (pi.platform == kPeerPlatformWindows) { more.add(getToggle(id, setState, 'privacy-mode', 'Privacy mode')); } } diff --git a/flutter/lib/models/file_model.dart b/flutter/lib/models/file_model.dart index c08d2e623..b730e6074 100644 --- a/flutter/lib/models/file_model.dart +++ b/flutter/lib/models/file_model.dart @@ -4,6 +4,7 @@ import 'dart:io'; import 'package:flutter/material.dart'; import 'package:flutter_hbb/common.dart'; +import 'package:flutter_hbb/consts.dart'; import 'package:get/get.dart'; import 'package:path/path.dart' as path; @@ -347,7 +348,7 @@ class FileModel extends ChangeNotifier { id: parent.target?.id ?? "", name: "remote_show_hidden")) .isNotEmpty; _remoteOption.isWindows = - parent.target?.ffiModel.pi.platform.toLowerCase() == "windows"; + parent.target?.ffiModel.pi.platform == kPeerPlatformWindows; await Future.delayed(Duration(milliseconds: 100)); diff --git a/flutter/lib/models/model.dart b/flutter/lib/models/model.dart index 1cdecbd03..3a383d9a1 100644 --- a/flutter/lib/models/model.dart +++ b/flutter/lib/models/model.dart @@ -61,7 +61,7 @@ class FfiModel with ChangeNotifier { bool get touchMode => _touchMode; - bool get isPeerAndroid => _pi.platform == 'Android'; + bool get isPeerAndroid => _pi.platform == kPeerPlatformAndroid; set inputBlocked(v) { _inputBlocked = v; @@ -238,6 +238,11 @@ class FfiModel with ChangeNotifier { if ((_display.width > _display.height) != oldOrientation) { gFFI.canvasModel.updateViewStyle(); } + if (_pi.platform == kPeerPlatformLinux || + _pi.platform == kPeerPlatformWindows || + _pi.platform == kPeerPlatformMacOS) { + parent.target?.canvasModel.updateViewStyle(); + } parent.target?.recordingModel.onSwitchDisplay(); notifyListeners(); }