mirror of
https://github.com/rustdesk/rustdesk.git
synced 2025-06-08 02:12:49 +08:00
1. new mobile connect.
2. _forceAlwaysRelayAction dismissOnClicked: false. 3. no tcp tunneling on mobile 4. adjust peer tab border on mobile
This commit is contained in:
parent
9bbc3376a4
commit
00077676f4
@ -17,6 +17,8 @@ import 'package:shared_preferences/shared_preferences.dart';
|
|||||||
import 'package:window_manager/window_manager.dart';
|
import 'package:window_manager/window_manager.dart';
|
||||||
|
|
||||||
import 'common/widgets/overlay.dart';
|
import 'common/widgets/overlay.dart';
|
||||||
|
import 'mobile/pages/file_manager_page.dart';
|
||||||
|
import 'mobile/pages/remote_page.dart';
|
||||||
import 'models/model.dart';
|
import 'models/model.dart';
|
||||||
import 'models/platform_model.dart';
|
import 'models/platform_model.dart';
|
||||||
|
|
||||||
@ -1071,14 +1073,38 @@ void connect(BuildContext context, String id,
|
|||||||
assert(!(isFileTransfer && isTcpTunneling && isRDP),
|
assert(!(isFileTransfer && isTcpTunneling && isRDP),
|
||||||
"more than one connect type");
|
"more than one connect type");
|
||||||
|
|
||||||
FocusScopeNode currentFocus = FocusScope.of(context);
|
if (isDesktop) {
|
||||||
if (isFileTransfer) {
|
if (isFileTransfer) {
|
||||||
await rustDeskWinManager.newFileTransfer(id);
|
await rustDeskWinManager.newFileTransfer(id);
|
||||||
} else if (isTcpTunneling || isRDP) {
|
} else if (isTcpTunneling || isRDP) {
|
||||||
await rustDeskWinManager.newPortForward(id, isRDP);
|
await rustDeskWinManager.newPortForward(id, isRDP);
|
||||||
|
} else {
|
||||||
|
await rustDeskWinManager.newRemoteDesktop(id);
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
await rustDeskWinManager.newRemoteDesktop(id);
|
if (isFileTransfer) {
|
||||||
|
if (!await PermissionManager.check("file")) {
|
||||||
|
if (!await PermissionManager.request("file")) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Navigator.push(
|
||||||
|
context,
|
||||||
|
MaterialPageRoute(
|
||||||
|
builder: (BuildContext context) => FileManagerPage(id: id),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
Navigator.push(
|
||||||
|
context,
|
||||||
|
MaterialPageRoute(
|
||||||
|
builder: (BuildContext context) => RemotePage(id: id),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
FocusScopeNode currentFocus = FocusScope.of(context);
|
||||||
if (!currentFocus.hasPrimaryFocus) {
|
if (!currentFocus.hasPrimaryFocus) {
|
||||||
currentFocus.unfocus();
|
currentFocus.unfocus();
|
||||||
}
|
}
|
||||||
|
@ -77,8 +77,11 @@ class _PeerCardState extends State<_PeerCard>
|
|||||||
subtitle: Text('${peer.username}@${peer.hostname}'),
|
subtitle: Text('${peer.username}@${peer.hostname}'),
|
||||||
title: Text(peer.alias.isEmpty ? formatID(peer.id) : peer.alias),
|
title: Text(peer.alias.isEmpty ? formatID(peer.id) : peer.alias),
|
||||||
leading: Container(
|
leading: Container(
|
||||||
|
decoration: BoxDecoration(
|
||||||
|
color: str2color('${peer.id}${peer.platform}', 0x7f),
|
||||||
|
borderRadius: BorderRadius.circular(4),
|
||||||
|
),
|
||||||
padding: const EdgeInsets.all(6),
|
padding: const EdgeInsets.all(6),
|
||||||
color: str2color('${peer.id}${peer.platform}', 0x7f),
|
|
||||||
child: getPlatformImage(peer.platform)),
|
child: getPlatformImage(peer.platform)),
|
||||||
trailing: InkWell(
|
trailing: InkWell(
|
||||||
child: const Padding(
|
child: const Padding(
|
||||||
@ -458,7 +461,7 @@ abstract class BasePeerCard extends StatelessWidget {
|
|||||||
}
|
}
|
||||||
await bind.mainSetPeerOption(id: id, key: option, value: value);
|
await bind.mainSetPeerOption(id: id, key: option, value: value);
|
||||||
},
|
},
|
||||||
dismissOnClicked: true,
|
dismissOnClicked: false,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -543,7 +546,6 @@ abstract class BasePeerCard extends StatelessWidget {
|
|||||||
if (favs.remove(id)) {
|
if (favs.remove(id)) {
|
||||||
await bind.mainStoreFav(favs: favs);
|
await bind.mainStoreFav(favs: favs);
|
||||||
await reloadFunc();
|
await reloadFunc();
|
||||||
// Get.forceAppUpdate(); // TODO use inner model / state
|
|
||||||
}
|
}
|
||||||
}();
|
}();
|
||||||
},
|
},
|
||||||
@ -624,15 +626,13 @@ class RecentPeerCard extends BasePeerCard {
|
|||||||
final List<MenuEntryBase<String>> menuItems = [
|
final List<MenuEntryBase<String>> menuItems = [
|
||||||
_connectAction(context, peer),
|
_connectAction(context, peer),
|
||||||
_transferFileAction(context, peer.id),
|
_transferFileAction(context, peer.id),
|
||||||
_tcpTunnelingAction(context, peer.id),
|
|
||||||
];
|
];
|
||||||
MenuEntryBase<String>? rdpAction;
|
if (isDesktop) {
|
||||||
if (peer.platform == 'Windows') {
|
menuItems.add(_tcpTunnelingAction(context, peer.id));
|
||||||
rdpAction = _rdpAction(context, peer.id);
|
|
||||||
}
|
}
|
||||||
menuItems.add(await _forceAlwaysRelayAction(peer.id));
|
menuItems.add(await _forceAlwaysRelayAction(peer.id));
|
||||||
if (rdpAction != null) {
|
if (peer.platform == 'Windows') {
|
||||||
menuItems.add(rdpAction);
|
menuItems.add(_rdpAction(context, peer.id));
|
||||||
}
|
}
|
||||||
menuItems.add(_wolAction(peer.id));
|
menuItems.add(_wolAction(peer.id));
|
||||||
menuItems.add(MenuEntryDivider());
|
menuItems.add(MenuEntryDivider());
|
||||||
@ -656,15 +656,13 @@ class FavoritePeerCard extends BasePeerCard {
|
|||||||
final List<MenuEntryBase<String>> menuItems = [
|
final List<MenuEntryBase<String>> menuItems = [
|
||||||
_connectAction(context, peer),
|
_connectAction(context, peer),
|
||||||
_transferFileAction(context, peer.id),
|
_transferFileAction(context, peer.id),
|
||||||
_tcpTunnelingAction(context, peer.id),
|
|
||||||
];
|
];
|
||||||
MenuEntryBase<String>? rdpAction;
|
if (isDesktop) {
|
||||||
if (peer.platform == 'Windows') {
|
menuItems.add(_tcpTunnelingAction(context, peer.id));
|
||||||
rdpAction = _rdpAction(context, peer.id);
|
|
||||||
}
|
}
|
||||||
menuItems.add(await _forceAlwaysRelayAction(peer.id));
|
menuItems.add(await _forceAlwaysRelayAction(peer.id));
|
||||||
if (rdpAction != null) {
|
if (peer.platform == 'Windows') {
|
||||||
menuItems.add(rdpAction);
|
menuItems.add(_rdpAction(context, peer.id));
|
||||||
}
|
}
|
||||||
menuItems.add(_wolAction(peer.id));
|
menuItems.add(_wolAction(peer.id));
|
||||||
menuItems.add(MenuEntryDivider());
|
menuItems.add(MenuEntryDivider());
|
||||||
@ -690,15 +688,13 @@ class DiscoveredPeerCard extends BasePeerCard {
|
|||||||
final List<MenuEntryBase<String>> menuItems = [
|
final List<MenuEntryBase<String>> menuItems = [
|
||||||
_connectAction(context, peer),
|
_connectAction(context, peer),
|
||||||
_transferFileAction(context, peer.id),
|
_transferFileAction(context, peer.id),
|
||||||
_tcpTunnelingAction(context, peer.id),
|
|
||||||
];
|
];
|
||||||
MenuEntryBase<String>? rdpAction;
|
if (isDesktop) {
|
||||||
if (peer.platform == 'Windows') {
|
menuItems.add(_tcpTunnelingAction(context, peer.id));
|
||||||
rdpAction = _rdpAction(context, peer.id);
|
|
||||||
}
|
}
|
||||||
menuItems.add(await _forceAlwaysRelayAction(peer.id));
|
menuItems.add(await _forceAlwaysRelayAction(peer.id));
|
||||||
if (rdpAction != null) {
|
if (peer.platform == 'Windows') {
|
||||||
menuItems.add(rdpAction);
|
menuItems.add(_rdpAction(context, peer.id));
|
||||||
}
|
}
|
||||||
menuItems.add(_wolAction(peer.id));
|
menuItems.add(_wolAction(peer.id));
|
||||||
menuItems.add(MenuEntryDivider());
|
menuItems.add(MenuEntryDivider());
|
||||||
@ -721,15 +717,13 @@ class AddressBookPeerCard extends BasePeerCard {
|
|||||||
final List<MenuEntryBase<String>> menuItems = [
|
final List<MenuEntryBase<String>> menuItems = [
|
||||||
_connectAction(context, peer),
|
_connectAction(context, peer),
|
||||||
_transferFileAction(context, peer.id),
|
_transferFileAction(context, peer.id),
|
||||||
_tcpTunnelingAction(context, peer.id),
|
|
||||||
];
|
];
|
||||||
MenuEntryBase<String>? rdpAction;
|
if (isDesktop) {
|
||||||
if (peer.platform == 'Windows') {
|
menuItems.add(_tcpTunnelingAction(context, peer.id));
|
||||||
rdpAction = _rdpAction(context, peer.id);
|
|
||||||
}
|
}
|
||||||
menuItems.add(await _forceAlwaysRelayAction(peer.id));
|
menuItems.add(await _forceAlwaysRelayAction(peer.id));
|
||||||
if (rdpAction != null) {
|
if (peer.platform == 'Windows') {
|
||||||
menuItems.add(rdpAction);
|
menuItems.add(_rdpAction(context, peer.id));
|
||||||
}
|
}
|
||||||
menuItems.add(_wolAction(peer.id));
|
menuItems.add(_wolAction(peer.id));
|
||||||
menuItems.add(MenuEntryDivider());
|
menuItems.add(MenuEntryDivider());
|
||||||
|
@ -113,7 +113,7 @@ class _PeerTabPageState extends State<PeerTabPage>
|
|||||||
color: _tabIndex.value == t.key
|
color: _tabIndex.value == t.key
|
||||||
? MyTheme.color(context).bg
|
? MyTheme.color(context).bg
|
||||||
: null,
|
: null,
|
||||||
borderRadius: BorderRadius.circular(2),
|
borderRadius: BorderRadius.circular(isDesktop ? 2 : 6),
|
||||||
),
|
),
|
||||||
child: Align(
|
child: Align(
|
||||||
alignment: Alignment.center,
|
alignment: Alignment.center,
|
||||||
|
@ -2,7 +2,6 @@ import 'dart:async';
|
|||||||
|
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_hbb/common/formatter/id_formatter.dart';
|
import 'package:flutter_hbb/common/formatter/id_formatter.dart';
|
||||||
import 'package:flutter_hbb/mobile/pages/file_manager_page.dart';
|
|
||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
import 'package:provider/provider.dart';
|
import 'package:provider/provider.dart';
|
||||||
import 'package:url_launcher/url_launcher.dart';
|
import 'package:url_launcher/url_launcher.dart';
|
||||||
@ -15,7 +14,6 @@ import '../../consts.dart';
|
|||||||
import '../../models/model.dart';
|
import '../../models/model.dart';
|
||||||
import '../../models/platform_model.dart';
|
import '../../models/platform_model.dart';
|
||||||
import 'home_page.dart';
|
import 'home_page.dart';
|
||||||
import 'remote_page.dart';
|
|
||||||
import 'scan_page.dart';
|
import 'scan_page.dart';
|
||||||
import 'settings_page.dart';
|
import 'settings_page.dart';
|
||||||
|
|
||||||
@ -97,38 +95,7 @@ class _ConnectionPageState extends State<ConnectionPage> {
|
|||||||
/// Connects to the selected peer.
|
/// Connects to the selected peer.
|
||||||
void onConnect() {
|
void onConnect() {
|
||||||
var id = _idController.id;
|
var id = _idController.id;
|
||||||
connect(id);
|
connect(context, id);
|
||||||
}
|
|
||||||
|
|
||||||
/// Connect to a peer with [id].
|
|
||||||
/// If [isFileTransfer], starts a session only for file transfer.
|
|
||||||
void connect(String id, {bool isFileTransfer = false}) async {
|
|
||||||
if (id == '') return;
|
|
||||||
id = id.replaceAll(' ', '');
|
|
||||||
if (isFileTransfer) {
|
|
||||||
if (!await PermissionManager.check("file")) {
|
|
||||||
if (!await PermissionManager.request("file")) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Navigator.push(
|
|
||||||
context,
|
|
||||||
MaterialPageRoute(
|
|
||||||
builder: (BuildContext context) => FileManagerPage(id: id),
|
|
||||||
),
|
|
||||||
);
|
|
||||||
} else {
|
|
||||||
Navigator.push(
|
|
||||||
context,
|
|
||||||
MaterialPageRoute(
|
|
||||||
builder: (BuildContext context) => RemotePage(id: id),
|
|
||||||
),
|
|
||||||
);
|
|
||||||
}
|
|
||||||
FocusScopeNode currentFocus = FocusScope.of(context);
|
|
||||||
if (!currentFocus.hasPrimaryFocus) {
|
|
||||||
currentFocus.unfocus();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// UI for software update.
|
/// UI for software update.
|
||||||
|
Loading…
Reference in New Issue
Block a user