From f5dba0f7aa2b15b7d81b9b4a6c23a5ed86dce9b4 Mon Sep 17 00:00:00 2001 From: 21pages Date: Thu, 8 Sep 2022 17:22:24 +0800 Subject: [PATCH] rdp and tcpTunnel use same tabPage Signed-off-by: 21pages --- flutter/lib/common.dart | 5 +---- flutter/lib/consts.dart | 1 - flutter/lib/desktop/pages/port_forward_page.dart | 11 +++++------ flutter/lib/desktop/pages/port_forward_tab_page.dart | 9 +++++++-- flutter/lib/desktop/widgets/tabbar_widget.dart | 1 - flutter/lib/main.dart | 3 +-- src/flutter.rs | 1 - src/flutter_ffi.rs | 7 ++++++- 8 files changed, 20 insertions(+), 18 deletions(-) diff --git a/flutter/lib/common.dart b/flutter/lib/common.dart index 73334baae..53b23c5cf 100644 --- a/flutter/lib/common.dart +++ b/flutter/lib/common.dart @@ -52,7 +52,6 @@ enum DesktopType { fileTransfer, cm, portForward, - rdp, } class IconFont { @@ -572,9 +571,7 @@ void msgBox( submit() { dialogManager.dismissAll(); // https://github.com/fufesou/rustdesk/blob/5e9a31340b899822090a3731769ae79c6bf5f3e5/src/ui/common.tis#L263 - if (!type.contains("custom") && - !(desktopType == DesktopType.portForward || - desktopType == DesktopType.rdp)) { + if (!type.contains("custom") && desktopType != DesktopType.portForward) { closeConnection(); } } diff --git a/flutter/lib/consts.dart b/flutter/lib/consts.dart index e48c85b0d..70fc9f065 100644 --- a/flutter/lib/consts.dart +++ b/flutter/lib/consts.dart @@ -5,7 +5,6 @@ const String kAppTypeMain = "main"; const String kAppTypeDesktopRemote = "remote"; const String kAppTypeDesktopFileTransfer = "file transfer"; const String kAppTypeDesktopPortForward = "port forward"; -const String kAppTypeDesktopRDP = "rdp"; const String kTabLabelHomePage = "Home"; const String kTabLabelSettingPage = "Settings"; diff --git a/flutter/lib/desktop/pages/port_forward_page.dart b/flutter/lib/desktop/pages/port_forward_page.dart index 6cfd0cdb2..06ee7bd94 100644 --- a/flutter/lib/desktop/pages/port_forward_page.dart +++ b/flutter/lib/desktop/pages/port_forward_page.dart @@ -37,7 +37,6 @@ class PortForwardPage extends StatefulWidget { class _PortForwardPageState extends State with AutomaticKeepAliveClientMixin { - final bool isRdp = false; final TextEditingController localPortController = TextEditingController(); final TextEditingController remoteHostController = TextEditingController(); final TextEditingController remotePortController = TextEditingController(); @@ -53,7 +52,7 @@ class _PortForwardPageState extends State if (!Platform.isLinux) { Wakelock.enable(); } - print("init success with id ${widget.id}"); + debugPrint("init success with id ${widget.id}"); } @override @@ -73,7 +72,7 @@ class _PortForwardPageState extends State return Scaffold( backgroundColor: MyTheme.color(context).grayBg, body: FutureBuilder(future: () async { - if (!isRdp) { + if (!widget.isRDP) { refreshTunnelConfig(); } }(), builder: (context, snapshot) { @@ -288,7 +287,7 @@ class _PortForwardPageState extends State text2(String lable) => Expanded( child: Text( lable, - style: TextStyle(fontSize: 20), + style: const TextStyle(fontSize: 20), ).marginOnly(left: _kTextLeftMargin)); return Theme( data: Theme.of(context) @@ -321,10 +320,10 @@ class _PortForwardPageState extends State style: ElevatedButton.styleFrom( elevation: 0, side: const BorderSide(color: MyTheme.border)), - onPressed: () {}, + onPressed: () => bind.sessionNewRdp(id: widget.id), child: Text( translate('New RDP'), - style: TextStyle( + style: const TextStyle( fontWeight: FontWeight.w300, fontSize: 14), ), ).marginSymmetric(vertical: 10), diff --git a/flutter/lib/desktop/pages/port_forward_tab_page.dart b/flutter/lib/desktop/pages/port_forward_tab_page.dart index 5dd69e8eb..d078af458 100644 --- a/flutter/lib/desktop/pages/port_forward_tab_page.dart +++ b/flutter/lib/desktop/pages/port_forward_tab_page.dart @@ -26,8 +26,8 @@ class _PortForwardTabPageState extends State { _PortForwardTabPageState(Map params) { isRDP = params['isRDP']; - tabController = Get.put(DesktopTabController( - tabType: isRDP ? DesktopTabType.rdp : DesktopTabType.portForward)); + tabController = + Get.put(DesktopTabController(tabType: DesktopTabType.portForward)); tabController.add(TabInfo( key: params['id'], label: params['id'], @@ -55,6 +55,11 @@ class _PortForwardTabPageState extends State { final id = args['id']; final isRDP = args['isRDP']; window_on_top(windowId()); + if (tabController.state.value.tabs.indexWhere((e) => e.key == id) >= + 0) { + debugPrint("port forward $id exists"); + return; + } tabController.add(TabInfo( key: id, label: id, diff --git a/flutter/lib/desktop/widgets/tabbar_widget.dart b/flutter/lib/desktop/widgets/tabbar_widget.dart index fef5fbf1f..fb7989108 100644 --- a/flutter/lib/desktop/widgets/tabbar_widget.dart +++ b/flutter/lib/desktop/widgets/tabbar_widget.dart @@ -44,7 +44,6 @@ enum DesktopTabType { remoteScreen, fileTransfer, portForward, - rdp, } class DesktopTabState { diff --git a/flutter/lib/main.dart b/flutter/lib/main.dart index 0ae5b583d..98ac20bfe 100644 --- a/flutter/lib/main.dart +++ b/flutter/lib/main.dart @@ -51,8 +51,7 @@ Future main(List args) async { runFileTransferScreen(argument); break; case WindowType.PortForward: - desktopType = - argument['isRDP'] ? DesktopType.rdp : DesktopType.portForward; + desktopType = DesktopType.portForward; runPortForwardScreen(argument); break; default: diff --git a/src/flutter.rs b/src/flutter.rs index b22c0da83..eb66260c9 100644 --- a/src/flutter.rs +++ b/src/flutter.rs @@ -18,7 +18,6 @@ pub(super) const APP_TYPE_MAIN: &str = "main"; pub(super) const APP_TYPE_DESKTOP_REMOTE: &str = "remote"; pub(super) const APP_TYPE_DESKTOP_FILE_TRANSFER: &str = "file transfer"; pub(super) const APP_TYPE_DESKTOP_PORT_FORWARD: &str = "port forward"; -pub(super) const APP_TYPE_DESKTOP_RDP: &str = "rdp"; lazy_static::lazy_static! { pub static ref SESSIONS: RwLock>> = Default::default(); diff --git a/src/flutter_ffi.rs b/src/flutter_ffi.rs index 10ab95487..f3c7b3735 100644 --- a/src/flutter_ffi.rs +++ b/src/flutter_ffi.rs @@ -663,7 +663,6 @@ fn main_broadcast_message(data: &HashMap<&str, &str>) { flutter::APP_TYPE_DESKTOP_REMOTE, flutter::APP_TYPE_DESKTOP_FILE_TRANSFER, flutter::APP_TYPE_DESKTOP_PORT_FORWARD, - flutter::APP_TYPE_DESKTOP_RDP, ]; for app in apps { @@ -703,6 +702,12 @@ pub fn session_remove_port_forward(id: String, local_port: i32) { } } +pub fn session_new_rdp(id: String) { + if let Some(session) = SESSIONS.write().unwrap().get_mut(&id) { + session.new_rdp(); + } +} + pub fn main_get_last_remote_id() -> String { // if !config::APP_DIR.read().unwrap().is_empty() { // res = LocalConfig::get_remote_id();