mirror of
https://github.com/rustdesk/rustdesk.git
synced 2024-11-23 19:49:05 +08:00
Fix/custom client styles (#7373)
* Fix. qs styles Signed-off-by: fufesou <shuanglongchen@yeah.net> * custom client, options Signed-off-by: fufesou <shuanglongchen@yeah.net> * Move logo.svg to icon.svg Signed-off-by: fufesou <shuanglongchen@yeah.net> * Refact. Custom client, connection status ui. Signed-off-by: fufesou <shuanglongchen@yeah.net> * Custom client ui. Disable settings, hide "Change password" Signed-off-by: fufesou <shuanglongchen@yeah.net> * Custom client, logo align center Signed-off-by: fufesou <shuanglongchen@yeah.net> * Custom client, refact, outgoing ui Signed-off-by: fufesou <shuanglongchen@yeah.net> * Custom client, outgoing, settings icon Signed-off-by: fufesou <shuanglongchen@yeah.net> * Custom client, powered by RustDesk Signed-off-by: fufesou <shuanglongchen@yeah.net> * Custom client, remove unused SizeBox Signed-off-by: fufesou <shuanglongchen@yeah.net> * Update config.rs * Update flutter_ffi.rs --------- Signed-off-by: fufesou <shuanglongchen@yeah.net> Co-authored-by: RustDesk <71636191+rustdesk@users.noreply.github.com>
This commit is contained in:
parent
a314f59db9
commit
5253d67e04
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.1 KiB |
@ -1522,7 +1522,10 @@ class LastWindowPosition {
|
||||
}
|
||||
|
||||
String get windowFramePrefix =>
|
||||
bind.isIncomingOnly() ? "${kWindowPrefix}qs_" : kWindowPrefix;
|
||||
kWindowPrefix +
|
||||
(bind.isIncomingOnly()
|
||||
? "incoming_"
|
||||
: (bind.isOutgoingOnly() ? "outgoing_" : ""));
|
||||
|
||||
/// Save window position and size on exit
|
||||
/// Note that windowId must be provided if it's subwindow
|
||||
@ -1793,11 +1796,11 @@ Future<bool> restoreWindowPosition(WindowType type,
|
||||
}
|
||||
if (lpos.isMaximized == true) {
|
||||
await restorePos();
|
||||
if (!bind.isIncomingOnly()) {
|
||||
if (!(bind.isIncomingOnly() || bind.isOutgoingOnly())) {
|
||||
await windowManager.maximize();
|
||||
}
|
||||
} else {
|
||||
if (!bind.isIncomingOnly()) {
|
||||
if (!bind.isIncomingOnly() || bind.isOutgoingOnly()) {
|
||||
await windowManager.setSize(size);
|
||||
}
|
||||
await restorePos();
|
||||
@ -3079,25 +3082,46 @@ Color? disabledTextColor(BuildContext context, bool enabled) {
|
||||
: Theme.of(context).textTheme.titleLarge?.color?.withOpacity(0.6);
|
||||
}
|
||||
|
||||
Widget loadLogo(double size) {
|
||||
return Image.asset('assets/logo.png',
|
||||
// max 200 x 40
|
||||
Widget? loadLogo() {
|
||||
bool isFound = true;
|
||||
final image = Image.asset(
|
||||
'assets/logo.png',
|
||||
fit: BoxFit.contain,
|
||||
errorBuilder: (ctx, error, stackTrace) {
|
||||
isFound = false;
|
||||
return Container();
|
||||
},
|
||||
);
|
||||
if (isFound) {
|
||||
return Container(
|
||||
constraints: BoxConstraints(maxWidth: 200, maxHeight: 40),
|
||||
child: image,
|
||||
).marginOnly(bottom: 10);
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
Widget loadIcon(double size) {
|
||||
return Image.asset('assets/icon.png',
|
||||
width: size,
|
||||
height: size,
|
||||
errorBuilder: (ctx, error, stackTrace) => SvgPicture.asset(
|
||||
'assets/logo.svg',
|
||||
'assets/icon.svg',
|
||||
width: size,
|
||||
height: size,
|
||||
));
|
||||
}
|
||||
|
||||
var desktopQsHomeLeftPaneSize = Size(280, 300);
|
||||
Size getDesktopQsHomeSize() {
|
||||
final magicWidth = 11.0;
|
||||
var imcomingOnlyHomeSize = Size(280, 300);
|
||||
Size getIncomingOnlyHomeSize() {
|
||||
final magicWidth = Platform.isWindows ? 11.0 : 0.0;
|
||||
final magicHeight = 8.0;
|
||||
return desktopQsHomeLeftPaneSize +
|
||||
return imcomingOnlyHomeSize +
|
||||
Offset(magicWidth, kDesktopRemoteTabBarHeight + magicHeight);
|
||||
}
|
||||
|
||||
Size getDesktopQsSettingsSize() {
|
||||
Size getIncomingOnlySettingsSize() {
|
||||
return Size(768, 600);
|
||||
}
|
||||
|
@ -21,7 +21,10 @@ import '../../models/platform_model.dart';
|
||||
import '../widgets/button.dart';
|
||||
|
||||
class OnlineStatusWidget extends StatefulWidget {
|
||||
const OnlineStatusWidget({Key? key}) : super(key: key);
|
||||
const OnlineStatusWidget({Key? key, this.onSvcStatusChanged})
|
||||
: super(key: key);
|
||||
|
||||
final VoidCallback? onSvcStatusChanged;
|
||||
|
||||
@override
|
||||
State<OnlineStatusWidget> createState() => _OnlineStatusWidgetState();
|
||||
@ -34,7 +37,7 @@ class _OnlineStatusWidgetState extends State<OnlineStatusWidget> {
|
||||
Timer? _updateTimer;
|
||||
|
||||
double get em => 14.0;
|
||||
double get height => em * 3;
|
||||
double? get height => bind.isIncomingOnly() ? null : em * 3;
|
||||
|
||||
void onUsePublicServerGuide() {
|
||||
const url = "https://rustdesk.com/pricing.html";
|
||||
@ -79,15 +82,10 @@ class _OnlineStatusWidgetState extends State<OnlineStatusWidget> {
|
||||
: Color.fromARGB(255, 224, 79, 95)),
|
||||
),
|
||||
).marginSymmetric(horizontal: em),
|
||||
Text(
|
||||
_svcStopped.value
|
||||
? translate("Service is not running")
|
||||
: stateGlobal.svcStatus.value == SvcStatus.connecting
|
||||
? translate("connecting_status")
|
||||
: stateGlobal.svcStatus.value == SvcStatus.notReady
|
||||
? translate("not_ready_status")
|
||||
: translate('Ready'),
|
||||
style: TextStyle(fontSize: em)),
|
||||
Container(
|
||||
width: bind.isIncomingOnly() ? 240 : null,
|
||||
child: _buildConnStatusMsg(),
|
||||
),
|
||||
// stop
|
||||
Offstage(
|
||||
offstage: !_svcStopped.value,
|
||||
@ -102,7 +100,8 @@ class _OnlineStatusWidgetState extends State<OnlineStatusWidget> {
|
||||
.marginOnly(left: em),
|
||||
),
|
||||
// ready && public
|
||||
Flexible(
|
||||
// No need to show the guide if is custom client.
|
||||
if (!bind.isIncomingOnly()) Flexible(
|
||||
child: Offstage(
|
||||
offstage: !(!_svcStopped.value &&
|
||||
stateGlobal.svcStatus.value == SvcStatus.ready &&
|
||||
@ -137,6 +136,20 @@ class _OnlineStatusWidgetState extends State<OnlineStatusWidget> {
|
||||
).paddingOnly(right: bind.isIncomingOnly() ? 8 : 0);
|
||||
}
|
||||
|
||||
_buildConnStatusMsg() {
|
||||
widget.onSvcStatusChanged?.call();
|
||||
return Text(
|
||||
_svcStopped.value
|
||||
? translate("Service is not running")
|
||||
: stateGlobal.svcStatus.value == SvcStatus.connecting
|
||||
? translate("connecting_status")
|
||||
: stateGlobal.svcStatus.value == SvcStatus.notReady
|
||||
? translate("not_ready_status")
|
||||
: translate('Ready'),
|
||||
style: TextStyle(fontSize: em),
|
||||
);
|
||||
}
|
||||
|
||||
updateStatus() async {
|
||||
final status =
|
||||
jsonDecode(await bind.mainGetConnectStatus()) as Map<String, dynamic>;
|
||||
@ -260,8 +273,8 @@ class _ConnectionPageState extends State<ConnectionPage>
|
||||
Expanded(child: PeerTabPage()),
|
||||
],
|
||||
).paddingOnly(left: 12.0)),
|
||||
const Divider(height: 1),
|
||||
OnlineStatusWidget()
|
||||
if (!bind.isOutgoingOnly()) const Divider(height: 1),
|
||||
if (!bind.isOutgoingOnly()) OnlineStatusWidget()
|
||||
],
|
||||
);
|
||||
}
|
||||
|
@ -13,6 +13,7 @@ import 'package:flutter_hbb/desktop/pages/connection_page.dart';
|
||||
import 'package:flutter_hbb/desktop/pages/desktop_setting_page.dart';
|
||||
import 'package:flutter_hbb/desktop/pages/desktop_tab_page.dart';
|
||||
import 'package:flutter_hbb/desktop/widgets/scroll_wrapper.dart';
|
||||
import 'package:flutter_hbb/desktop/widgets/tabbar_widget.dart';
|
||||
import 'package:flutter_hbb/models/platform_model.dart';
|
||||
import 'package:flutter_hbb/models/server_model.dart';
|
||||
import 'package:flutter_hbb/plugin/ui_manager.dart';
|
||||
@ -51,38 +52,43 @@ class _DesktopHomePageState extends State<DesktopHomePage>
|
||||
Timer? _updateTimer;
|
||||
bool isCardClosed = false;
|
||||
|
||||
RxBool _editHover = false.obs;
|
||||
|
||||
final GlobalKey _childKey = GlobalKey();
|
||||
|
||||
bool _isInHomePage() {
|
||||
final controller = Get.find<DesktopTabController>();
|
||||
return controller.state.value.selected == 0;
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
super.build(context);
|
||||
|
||||
final children = [buildLeftPane(context)];
|
||||
if (!bind.isIncomingOnly()) {
|
||||
children.addAll([
|
||||
const VerticalDivider(width: 1),
|
||||
Expanded(child: buildRightPane(context)),
|
||||
]);
|
||||
}
|
||||
return Row(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: children,
|
||||
children: [
|
||||
buildLeftPane(context),
|
||||
if (!bind.isIncomingOnly()) const VerticalDivider(width: 1),
|
||||
if (!bind.isIncomingOnly()) Expanded(child: buildRightPane(context)),
|
||||
],
|
||||
);
|
||||
}
|
||||
|
||||
Widget buildLeftPane(BuildContext context) {
|
||||
final children = <Widget>[
|
||||
buildTip(context),
|
||||
buildIDBoard(context),
|
||||
buildPasswordBoard(context),
|
||||
if (!bind.isOutgoingOnly()) buildIDBoard(context),
|
||||
if (!bind.isOutgoingOnly()) buildPasswordBoard(context),
|
||||
FutureBuilder<Widget>(
|
||||
future: buildHelpCards(),
|
||||
builder: (_, data) {
|
||||
if (data.hasData) {
|
||||
if (bind.isIncomingOnly()) {
|
||||
Future.delayed(Duration(milliseconds: 300), () {
|
||||
_updateWindowSize();
|
||||
});
|
||||
if (_isInHomePage()) {
|
||||
Future.delayed(Duration(milliseconds: 300), () {
|
||||
_updateWindowSize();
|
||||
});
|
||||
}
|
||||
}
|
||||
return data.data!;
|
||||
} else {
|
||||
@ -97,10 +103,19 @@ class _DesktopHomePageState extends State<DesktopHomePage>
|
||||
Divider(),
|
||||
Container(
|
||||
margin: EdgeInsets.fromLTRB(0, 0, 8, 6),
|
||||
child: OnlineStatusWidget(),
|
||||
child: OnlineStatusWidget(
|
||||
onSvcStatusChanged: () {
|
||||
if (_isInHomePage()) {
|
||||
Future.delayed(Duration(milliseconds: 300), () {
|
||||
_updateWindowSize();
|
||||
});
|
||||
}
|
||||
},
|
||||
),
|
||||
),
|
||||
]);
|
||||
}
|
||||
final textColor = Theme.of(context).textTheme.titleLarge?.color;
|
||||
return ChangeNotifierProvider.value(
|
||||
value: gFFI.serverModel,
|
||||
child: Container(
|
||||
@ -108,13 +123,45 @@ class _DesktopHomePageState extends State<DesktopHomePage>
|
||||
color: Theme.of(context).colorScheme.background,
|
||||
child: DesktopScrollWrapper(
|
||||
scrollController: _leftPaneScrollController,
|
||||
child: SingleChildScrollView(
|
||||
controller: _leftPaneScrollController,
|
||||
physics: DraggableNeverScrollableScrollPhysics(),
|
||||
child: Column(
|
||||
key: _childKey,
|
||||
children: children,
|
||||
),
|
||||
child: Stack(
|
||||
children: [
|
||||
SingleChildScrollView(
|
||||
controller: _leftPaneScrollController,
|
||||
physics: DraggableNeverScrollableScrollPhysics(),
|
||||
child: Column(
|
||||
key: _childKey,
|
||||
children: children,
|
||||
),
|
||||
),
|
||||
if (bind.isOutgoingOnly() && !bind.isDisableSettings())
|
||||
Positioned(
|
||||
child: Divider(),
|
||||
bottom: 26,
|
||||
left: 0,
|
||||
right: 0,
|
||||
),
|
||||
if (bind.isOutgoingOnly() && !bind.isDisableSettings())
|
||||
Positioned(
|
||||
bottom: 6,
|
||||
left: 12,
|
||||
child: Align(
|
||||
alignment: Alignment.centerLeft,
|
||||
child: InkWell(
|
||||
child: Obx(
|
||||
() => Icon(
|
||||
Icons.settings,
|
||||
color: _editHover.value
|
||||
? textColor
|
||||
: Colors.grey.withOpacity(0.5),
|
||||
size: 22,
|
||||
),
|
||||
),
|
||||
onTap: () => DesktopSettingPage.switch2page(1),
|
||||
onHover: (value) => _editHover.value = value,
|
||||
),
|
||||
),
|
||||
)
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
@ -197,6 +244,10 @@ class _DesktopHomePageState extends State<DesktopHomePage>
|
||||
}
|
||||
|
||||
Widget buildPopupMenu(BuildContext context) {
|
||||
if (bind.isDisableSettings()) {
|
||||
return Offstage();
|
||||
}
|
||||
|
||||
final textColor = Theme.of(context).textTheme.titleLarge?.color;
|
||||
RxBool hover = false.obs;
|
||||
return InkWell(
|
||||
@ -287,21 +338,22 @@ class _DesktopHomePageState extends State<DesktopHomePage>
|
||||
)))),
|
||||
onHover: (value) => refreshHover.value = value,
|
||||
).marginOnly(right: 8, top: 4),
|
||||
InkWell(
|
||||
child: Obx(
|
||||
() => Tooltip(
|
||||
message: translate('Change Password'),
|
||||
child: Icon(
|
||||
Icons.edit,
|
||||
color: editHover.value
|
||||
? textColor
|
||||
: Color(0xFFDDDDDD),
|
||||
size: 22,
|
||||
)).marginOnly(right: 8, top: 4),
|
||||
if (!bind.isDisableSettings())
|
||||
InkWell(
|
||||
child: Obx(
|
||||
() => Tooltip(
|
||||
message: translate('Change Password'),
|
||||
child: Icon(
|
||||
Icons.edit,
|
||||
color: editHover.value
|
||||
? textColor
|
||||
: Color(0xFFDDDDDD),
|
||||
size: 22,
|
||||
)).marginOnly(right: 8, top: 4),
|
||||
),
|
||||
onTap: () => DesktopSettingPage.switch2page(1),
|
||||
onHover: (value) => editHover.value = value,
|
||||
),
|
||||
onTap: () => DesktopSettingPage.switch2page(1),
|
||||
onHover: (value) => editHover.value = value,
|
||||
),
|
||||
],
|
||||
),
|
||||
],
|
||||
@ -314,6 +366,7 @@ class _DesktopHomePageState extends State<DesktopHomePage>
|
||||
}
|
||||
|
||||
buildTip(BuildContext context) {
|
||||
final logo = loadLogo();
|
||||
return Padding(
|
||||
padding:
|
||||
const EdgeInsets.only(left: 20.0, right: 16, top: 16.0, bottom: 5),
|
||||
@ -321,29 +374,68 @@ class _DesktopHomePageState extends State<DesktopHomePage>
|
||||
mainAxisAlignment: MainAxisAlignment.start,
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
Text(
|
||||
translate("Your Desktop"),
|
||||
style: Theme.of(context).textTheme.titleLarge,
|
||||
// style: TextStyle(
|
||||
// // color: MyTheme.color(context).text,
|
||||
// fontWeight: FontWeight.normal,
|
||||
// fontSize: 19),
|
||||
Align(
|
||||
alignment: Alignment.center,
|
||||
child: logo == null ? Offstage() : logo.marginOnly(bottom: 0.0),
|
||||
),
|
||||
Column(
|
||||
children: [
|
||||
Align(
|
||||
alignment: Alignment.centerLeft,
|
||||
child: Text(
|
||||
translate("Your Desktop"),
|
||||
style: Theme.of(context).textTheme.titleLarge,
|
||||
// style: TextStyle(
|
||||
// // color: MyTheme.color(context).text,
|
||||
// fontWeight: FontWeight.normal,
|
||||
// fontSize: 19),
|
||||
),
|
||||
),
|
||||
if (bind.isCustomClient())
|
||||
Align(
|
||||
alignment: Alignment.centerRight,
|
||||
child: MouseRegion(
|
||||
cursor: SystemMouseCursors.click,
|
||||
child: GestureDetector(
|
||||
onTap: () {
|
||||
launchUrl(Uri.parse('https://rustdesk.com'));
|
||||
},
|
||||
child: Text(
|
||||
translate("powered by RustDesk"),
|
||||
overflow: TextOverflow.clip,
|
||||
style: Theme.of(context)
|
||||
.textTheme
|
||||
.bodySmall
|
||||
?.copyWith(color: Colors.grey.withOpacity(0.7)),
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
SizedBox(
|
||||
height: 10.0,
|
||||
),
|
||||
Text(
|
||||
translate("desk_tip"),
|
||||
overflow: TextOverflow.clip,
|
||||
style: Theme.of(context).textTheme.bodySmall,
|
||||
)
|
||||
if (!bind.isOutgoingOnly())
|
||||
Text(
|
||||
translate("desk_tip"),
|
||||
overflow: TextOverflow.clip,
|
||||
style: Theme.of(context).textTheme.bodySmall,
|
||||
),
|
||||
if (bind.isOutgoingOnly())
|
||||
Text(
|
||||
translate("outgoing_only_desk_tip"),
|
||||
overflow: TextOverflow.clip,
|
||||
style: Theme.of(context).textTheme.bodySmall,
|
||||
),
|
||||
],
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
Future<Widget> buildHelpCards() async {
|
||||
if (updateUrl.isNotEmpty &&
|
||||
if (!bind.isCustomClient() &&
|
||||
updateUrl.isNotEmpty &&
|
||||
!isCardClosed &&
|
||||
bind.mainUriPrefixSync().contains('rustdesk')) {
|
||||
return buildInstallCard(
|
||||
@ -357,7 +449,7 @@ class _DesktopHomePageState extends State<DesktopHomePage>
|
||||
if (systemError.isNotEmpty) {
|
||||
return buildInstallCard("", systemError, "", () {});
|
||||
}
|
||||
if (Platform.isWindows) {
|
||||
if (Platform.isWindows && !bind.isDisableInstallation()) {
|
||||
if (!bind.mainIsInstalled()) {
|
||||
return buildInstallCard("", "install_tip", "Install", () async {
|
||||
await rustDeskWinManager.closeAllSubWindows();
|
||||
@ -372,7 +464,8 @@ class _DesktopHomePageState extends State<DesktopHomePage>
|
||||
});
|
||||
}
|
||||
} else if (Platform.isMacOS) {
|
||||
if (!bind.mainIsCanScreenRecording(prompt: false)) {
|
||||
if (!(bind.isOutgoingOnly() ||
|
||||
bind.mainIsCanScreenRecording(prompt: false))) {
|
||||
return buildInstallCard("Permissions", "config_screen", "Configure",
|
||||
() async {
|
||||
bind.mainIsCanScreenRecording(prompt: true);
|
||||
@ -407,6 +500,9 @@ class _DesktopHomePageState extends State<DesktopHomePage>
|
||||
// });
|
||||
// }
|
||||
} else if (Platform.isLinux) {
|
||||
if (bind.isOutgoingOnly()) {
|
||||
return Container();
|
||||
}
|
||||
final LinuxCards = <Widget>[];
|
||||
if (bind.isSelinuxEnforcing()) {
|
||||
// Check is SELinux enforcing, but show user a tip of is SELinux enabled for simple.
|
||||
@ -473,8 +569,8 @@ class _DesktopHomePageState extends State<DesktopHomePage>
|
||||
return Stack(
|
||||
children: [
|
||||
Container(
|
||||
margin:
|
||||
EdgeInsets.fromLTRB(0, marginTop, 0, bind.isIncomingOnly() ? marginTop : 0),
|
||||
margin: EdgeInsets.fromLTRB(
|
||||
0, marginTop, 0, bind.isIncomingOnly() ? marginTop : 0),
|
||||
child: Container(
|
||||
decoration: BoxDecoration(
|
||||
gradient: LinearGradient(
|
||||
@ -701,10 +797,17 @@ class _DesktopHomePageState extends State<DesktopHomePage>
|
||||
}
|
||||
|
||||
_updateWindowSize() {
|
||||
RenderBox renderBox =
|
||||
_childKey.currentContext?.findRenderObject() as RenderBox;
|
||||
desktopQsHomeLeftPaneSize = renderBox.size;
|
||||
windowManager.setSize(getDesktopQsHomeSize());
|
||||
RenderObject? renderObject = _childKey.currentContext?.findRenderObject();
|
||||
if (renderObject == null) {
|
||||
return;
|
||||
}
|
||||
if (renderObject is RenderBox) {
|
||||
final size = renderObject.size;
|
||||
if (size != imcomingOnlyHomeSize) {
|
||||
imcomingOnlyHomeSize = size;
|
||||
windowManager.setSize(getIncomingOnlyHomeSize());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
|
@ -106,39 +106,32 @@ class _DesktopSettingPageState extends State<DesktopSettingPage>
|
||||
List<_TabInfo> _settingTabs() {
|
||||
final List<_TabInfo> settingTabs = <_TabInfo>[
|
||||
_TabInfo('General', Icons.settings_outlined, Icons.settings),
|
||||
_TabInfo('Security', Icons.enhanced_encryption_outlined,
|
||||
Icons.enhanced_encryption),
|
||||
if (!bind.isOutgoingOnly())
|
||||
_TabInfo('Security', Icons.enhanced_encryption_outlined,
|
||||
Icons.enhanced_encryption),
|
||||
_TabInfo('Network', Icons.link_outlined, Icons.link),
|
||||
_TabInfo('Account', Icons.person_outline, Icons.person),
|
||||
if (!bind.isIncomingOnly())
|
||||
_TabInfo(
|
||||
'Display', Icons.desktop_windows_outlined, Icons.desktop_windows),
|
||||
if (!bind.isIncomingOnly() && bind.pluginFeatureIsEnabled())
|
||||
_TabInfo('Plugin', Icons.extension_outlined, Icons.extension),
|
||||
if (!bind.isDisableAccount())
|
||||
_TabInfo('Account', Icons.person_outline, Icons.person),
|
||||
_TabInfo('About', Icons.info_outline, Icons.info)
|
||||
];
|
||||
if (!bind.isIncomingOnly()) {
|
||||
settingTabs.insert(
|
||||
3,
|
||||
_TabInfo('Display', Icons.desktop_windows_outlined,
|
||||
Icons.desktop_windows));
|
||||
if (bind.pluginFeatureIsEnabled()) {
|
||||
settingTabs.insert(
|
||||
4, _TabInfo('Plugin', Icons.extension_outlined, Icons.extension));
|
||||
}
|
||||
}
|
||||
return settingTabs;
|
||||
}
|
||||
|
||||
List<Widget> _children() {
|
||||
final children = [
|
||||
_General(),
|
||||
_Safety(),
|
||||
if (!bind.isOutgoingOnly()) _Safety(),
|
||||
_Network(),
|
||||
_Account(),
|
||||
if (!bind.isIncomingOnly()) _Display(),
|
||||
if (!bind.isIncomingOnly() && bind.pluginFeatureIsEnabled()) _Plugin(),
|
||||
if (!bind.isDisableAccount()) _Account(),
|
||||
_About(),
|
||||
];
|
||||
if (!bind.isIncomingOnly()) {
|
||||
children.insert(3, _Display());
|
||||
if (bind.pluginFeatureIsEnabled()) {
|
||||
children.insert(4, _Plugin());
|
||||
}
|
||||
}
|
||||
return children;
|
||||
}
|
||||
|
||||
@ -309,6 +302,10 @@ class _GeneralState extends State<_General> {
|
||||
}
|
||||
|
||||
Widget service() {
|
||||
if (bind.isOutgoingOnly()) {
|
||||
return const Offstage();
|
||||
}
|
||||
|
||||
return _Card(title: 'Service', children: [
|
||||
Obx(() => _Button(serviceStop.value ? 'Start' : 'Stop', () {
|
||||
() async {
|
||||
@ -324,18 +321,14 @@ class _GeneralState extends State<_General> {
|
||||
}
|
||||
|
||||
Widget other() {
|
||||
final children = <Widget>[];
|
||||
if (!bind.isIncomingOnly()) {
|
||||
children.add(_OptionCheckBox(context,
|
||||
'Confirm before closing multiple tabs', 'enable-confirm-closing-tabs',
|
||||
isServer: false));
|
||||
}
|
||||
children.addAll([
|
||||
final children = <Widget>[
|
||||
if (!bind.isIncomingOnly())
|
||||
_OptionCheckBox(context, 'Confirm before closing multiple tabs',
|
||||
'enable-confirm-closing-tabs',
|
||||
isServer: false),
|
||||
_OptionCheckBox(context, 'Adaptive bitrate', 'enable-abr'),
|
||||
wallpaper()
|
||||
]);
|
||||
if (!bind.isIncomingOnly()) {
|
||||
children.addAll([
|
||||
wallpaper(),
|
||||
if (!bind.isIncomingOnly()) ...[
|
||||
_OptionCheckBox(
|
||||
context,
|
||||
'Open connection in new tab',
|
||||
@ -354,8 +347,8 @@ class _GeneralState extends State<_General> {
|
||||
'enable-check-update',
|
||||
isServer: false,
|
||||
)
|
||||
]);
|
||||
}
|
||||
],
|
||||
];
|
||||
if (bind.mainShowOption(key: 'allow-linux-headless')) {
|
||||
children.add(_OptionCheckBox(
|
||||
context, 'Allow linux headless', 'allow-linux-headless'));
|
||||
@ -364,6 +357,10 @@ class _GeneralState extends State<_General> {
|
||||
}
|
||||
|
||||
Widget wallpaper() {
|
||||
if (bind.isOutgoingOnly()) {
|
||||
return const Offstage();
|
||||
}
|
||||
|
||||
return futureBuilder(future: () async {
|
||||
final support = await bind.mainSupportRemoveWallpaper();
|
||||
return support;
|
||||
@ -411,6 +408,10 @@ class _GeneralState extends State<_General> {
|
||||
}
|
||||
|
||||
Widget audio(BuildContext context) {
|
||||
if (bind.isOutgoingOnly()) {
|
||||
return const Offstage();
|
||||
}
|
||||
|
||||
String getDefault() {
|
||||
if (Platform.isWindows) return translate('System Sound');
|
||||
return '';
|
||||
|
@ -57,10 +57,10 @@ class _DesktopTabPageState extends State<DesktopTabPage> {
|
||||
if (bind.isIncomingOnly()) {
|
||||
tabController.onSelected = (key) {
|
||||
if (key == kTabLabelHomePage) {
|
||||
windowManager.setSize(getDesktopQsHomeSize());
|
||||
windowManager.setSize(getIncomingOnlyHomeSize());
|
||||
windowManager.setResizable(false);
|
||||
} else {
|
||||
windowManager.setSize(getDesktopQsSettingsSize());
|
||||
windowManager.setSize(getIncomingOnlySettingsSize());
|
||||
windowManager.setResizable(true);
|
||||
}
|
||||
};
|
||||
@ -81,7 +81,7 @@ class _DesktopTabPageState extends State<DesktopTabPage> {
|
||||
body: DesktopTab(
|
||||
controller: tabController,
|
||||
tail: Offstage(
|
||||
offstage: bind.isIncomingOnly(),
|
||||
offstage: bind.isIncomingOnly() || bind.isDisableSettings(),
|
||||
child: ActionIcon(
|
||||
message: 'Settings',
|
||||
icon: IconFont.menu,
|
||||
|
@ -327,7 +327,7 @@ class _AppIcon extends StatelessWidget {
|
||||
Widget build(BuildContext context) {
|
||||
return Container(
|
||||
margin: EdgeInsets.symmetric(horizontal: 4.0),
|
||||
child: loadLogo(30),
|
||||
child: loadIcon(30),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
@ -165,7 +165,8 @@ class DesktopTabController {
|
||||
}));
|
||||
}
|
||||
});
|
||||
if ((isDesktop && bind.isIncomingOnly()) || callOnSelected) {
|
||||
if ((isDesktop && (bind.isIncomingOnly() || bind.isOutgoingOnly())) ||
|
||||
callOnSelected) {
|
||||
if (state.value.tabs.length > index) {
|
||||
final key = state.value.tabs[index].key;
|
||||
onSelected?.call(key);
|
||||
@ -399,7 +400,7 @@ class DesktopTab extends StatelessWidget {
|
||||
child: Row(children: [
|
||||
Offstage(
|
||||
offstage: !showLogo,
|
||||
child: loadLogo(16),
|
||||
child: loadIcon(16),
|
||||
),
|
||||
Offstage(
|
||||
offstage: !showTitle,
|
||||
|
@ -25,8 +25,6 @@ class PeerTabModel with ChangeNotifier {
|
||||
'Recent sessions',
|
||||
'Favorites',
|
||||
'Discovered',
|
||||
'Address book',
|
||||
'Group',
|
||||
];
|
||||
final List<IconData> icons = [
|
||||
Icons.access_time_filled,
|
||||
@ -51,6 +49,13 @@ class PeerTabModel with ChangeNotifier {
|
||||
String get lastId => _lastId;
|
||||
|
||||
PeerTabModel(this.parent) {
|
||||
if (!(bind.isDisableAb() || bind.isDisableAccount())) {
|
||||
tabNames.add('Address book');
|
||||
}
|
||||
if (!bind.isDisableAccount()) {
|
||||
tabNames.add('Group');
|
||||
}
|
||||
|
||||
// visible
|
||||
try {
|
||||
final option = bind.getLocalFlutterOption(k: 'peer-tab-visible');
|
||||
|
@ -4,6 +4,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Status", "الحالة"),
|
||||
("Your Desktop", "سطح مكتبك"),
|
||||
("desk_tip", "يمكن الوصول لسطح مكتبك بهذا المعرف والرقم السري."),
|
||||
("outgoing_only_desk_tip", ""),
|
||||
("Password", "كلمة المرور"),
|
||||
("Ready", "جاهز"),
|
||||
("Established", "تم الانشاء"),
|
||||
@ -586,5 +587,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("2FA code must be 6 digits.", ""),
|
||||
("Multiple Windows sessions found", ""),
|
||||
("Please select the session you want to connect to", ""),
|
||||
("powered by RustDesk", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
@ -4,6 +4,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Status", ""),
|
||||
("Your Desktop", ""),
|
||||
("desk_tip", "Вашият работен плот може да бъде достъпен с този идентификационен код и парола."),
|
||||
("outgoing_only_desk_tip", ""),
|
||||
("Password", ""),
|
||||
("Ready", ""),
|
||||
("Established", ""),
|
||||
@ -586,5 +587,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("2FA code must be 6 digits.", ""),
|
||||
("Multiple Windows sessions found", ""),
|
||||
("Please select the session you want to connect to", ""),
|
||||
("powered by RustDesk", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
@ -4,6 +4,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Status", "Estat"),
|
||||
("Your Desktop", "EL teu escriptori"),
|
||||
("desk_tip", "Pots accedir al teu escriptori amb aquest ID i contrasenya."),
|
||||
("outgoing_only_desk_tip", ""),
|
||||
("Password", "Contrasenya"),
|
||||
("Ready", "Llest"),
|
||||
("Established", "Establert"),
|
||||
@ -586,5 +587,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("2FA code must be 6 digits.", ""),
|
||||
("Multiple Windows sessions found", ""),
|
||||
("Please select the session you want to connect to", ""),
|
||||
("powered by RustDesk", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
@ -4,6 +4,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Status", "状态"),
|
||||
("Your Desktop", "你的桌面"),
|
||||
("desk_tip", "你的桌面可以通过下面的 ID 和密码访问。"),
|
||||
("outgoing_only_desk_tip", "当前版本的软件是定制版本。\n您可以连接其他设备,但是其他设备无法连接您的设备。"),
|
||||
("Password", "密码"),
|
||||
("Ready", "就绪"),
|
||||
("Established", "已建立"),
|
||||
@ -586,5 +587,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("2FA code must be 6 digits.", "双重认证代码必须是 6 位数字。"),
|
||||
("Multiple Windows sessions found", "发现多个 Windows 会话"),
|
||||
("Please select the session you want to connect to", "请选择您要连接的会话"),
|
||||
("powered by RustDesk", "由 RustDesk 提供支持"),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
@ -4,6 +4,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Status", "Stav"),
|
||||
("Your Desktop", "Vaše plocha"),
|
||||
("desk_tip", "Pomocí tohoto ID a hesla lze přistupovat k pracovní ploše."),
|
||||
("outgoing_only_desk_tip", ""),
|
||||
("Password", "Heslo"),
|
||||
("Ready", "Připraveno"),
|
||||
("Established", "Navázáno"),
|
||||
@ -586,5 +587,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("2FA code must be 6 digits.", "Kód 2FA musí mít 6 číslic."),
|
||||
("Multiple Windows sessions found", "Bylo nalezeno více relací Windows"),
|
||||
("Please select the session you want to connect to", "Vyberte relaci, ke které se chcete připojit"),
|
||||
("powered by RustDesk", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
@ -4,6 +4,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Status", "Status"),
|
||||
("Your Desktop", "Dit skrivebord"),
|
||||
("desk_tip", "Du kan få adgang til dit skrivebord med dette ID og adgangskode."),
|
||||
("outgoing_only_desk_tip", ""),
|
||||
("Password", "Adgangskode"),
|
||||
("Ready", "Klar"),
|
||||
("Established", "Etableret"),
|
||||
@ -586,5 +587,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("2FA code must be 6 digits.", ""),
|
||||
("Multiple Windows sessions found", ""),
|
||||
("Please select the session you want to connect to", ""),
|
||||
("powered by RustDesk", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
@ -4,6 +4,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Status", "Status"),
|
||||
("Your Desktop", "Ihr Desktop"),
|
||||
("desk_tip", "Mit dieser ID und diesem Passwort kann auf Ihren Desktop zugegriffen werden."),
|
||||
("outgoing_only_desk_tip", ""),
|
||||
("Password", "Passwort"),
|
||||
("Ready", "Bereit"),
|
||||
("Established", "Verbunden"),
|
||||
@ -586,5 +587,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("2FA code must be 6 digits.", "Der 2FA-Code muss 6 Ziffern haben."),
|
||||
("Multiple Windows sessions found", "Mehrere Windows-Sitzungen gefunden"),
|
||||
("Please select the session you want to connect to", "Bitte wählen Sie die Sitzung, mit der Sie sich verbinden möchten"),
|
||||
("powered by RustDesk", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
@ -4,6 +4,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Status", "Κατάσταση"),
|
||||
("Your Desktop", "Ο σταθμός εργασίας σας"),
|
||||
("desk_tip", "Η πρόσβαση στον σταθμό εργασίας σας είναι δυνατή με αυτό το αναγνωριστικό και τον κωδικό πρόσβασης."),
|
||||
("outgoing_only_desk_tip", ""),
|
||||
("Password", "Κωδικός πρόσβασης"),
|
||||
("Ready", "Έτοιμο"),
|
||||
("Established", "Συνδέθηκε"),
|
||||
@ -586,5 +587,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("2FA code must be 6 digits.", ""),
|
||||
("Multiple Windows sessions found", ""),
|
||||
("Please select the session you want to connect to", ""),
|
||||
("powered by RustDesk", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
@ -2,6 +2,7 @@ lazy_static::lazy_static! {
|
||||
pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
[
|
||||
("desk_tip", "Your desktop can be accessed with this ID and password."),
|
||||
("outgoing_only_desk_tip", "This is a customized edition.\nYou can connect other devices, but other devices cannot connect to your device."),
|
||||
("connecting_status", "Connecting to the RustDesk network..."),
|
||||
("not_ready_status", "Not ready. Please check your connection"),
|
||||
("ID/Relay Server", "ID/Relay server"),
|
||||
|
@ -4,6 +4,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Status", "Stato"),
|
||||
("Your Desktop", "Via aparato"),
|
||||
("desk_tip", "Via aparato povas esti alirita kun tiu identigilo kaj pasvorto"),
|
||||
("outgoing_only_desk_tip", ""),
|
||||
("Password", "Pasvorto"),
|
||||
("Ready", "Preta"),
|
||||
("Established", ""),
|
||||
@ -586,5 +587,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("2FA code must be 6 digits.", ""),
|
||||
("Multiple Windows sessions found", ""),
|
||||
("Please select the session you want to connect to", ""),
|
||||
("powered by RustDesk", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
@ -4,6 +4,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Status", "Estado"),
|
||||
("Your Desktop", "Tu escritorio"),
|
||||
("desk_tip", "Puedes acceder a tu escritorio con esta ID y contraseña."),
|
||||
("outgoing_only_desk_tip", ""),
|
||||
("Password", "Contraseña"),
|
||||
("Ready", "Listo"),
|
||||
("Established", "Establecido"),
|
||||
@ -586,5 +587,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("2FA code must be 6 digits.", "El cóidigo 2FA debe tener 6 dígitos"),
|
||||
("Multiple Windows sessions found", "Encontradas sesiones de múltiples ventanas"),
|
||||
("Please select the session you want to connect to", "Por favor, seleccione la sesión a la que se desea conectar"),
|
||||
("powered by RustDesk", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
@ -4,6 +4,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Status", ""),
|
||||
("Your Desktop", ""),
|
||||
("desk_tip", "Sinu töölauale saab selle ID ja parooliga ligi pääseda."),
|
||||
("outgoing_only_desk_tip", ""),
|
||||
("Password", ""),
|
||||
("Ready", ""),
|
||||
("Established", ""),
|
||||
@ -586,5 +587,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("2FA code must be 6 digits.", ""),
|
||||
("Multiple Windows sessions found", ""),
|
||||
("Please select the session you want to connect to", ""),
|
||||
("powered by RustDesk", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
@ -4,6 +4,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Status", "وضعیت"),
|
||||
("Your Desktop", "دسکتاپ شما"),
|
||||
("desk_tip", "دسکتاپ شما با این شناسه و رمز عبور قابل دسترسی است"),
|
||||
("outgoing_only_desk_tip", ""),
|
||||
("Password", "رمز عبور"),
|
||||
("Ready", "آماده به کار"),
|
||||
("Established", "اتصال برقرار شد"),
|
||||
@ -586,5 +587,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("2FA code must be 6 digits.", "کد احراز هویت دو مرحله ای باید 6 رقم باشد"),
|
||||
("Multiple Windows sessions found", "چندین جلسه پیدا شد"),
|
||||
("Please select the session you want to connect to", "لطفاً جلسه ای را که می خواهید به آن متصل شوید انتخاب کنید"),
|
||||
("powered by RustDesk", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
@ -4,6 +4,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Status", "Statut"),
|
||||
("Your Desktop", "Votre bureau"),
|
||||
("desk_tip", "Votre bureau est accessible via l'identifiant et le mot de passe ci-dessous."),
|
||||
("outgoing_only_desk_tip", ""),
|
||||
("Password", "Mot de passe"),
|
||||
("Ready", "Prêt"),
|
||||
("Established", "Établi"),
|
||||
@ -586,5 +587,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("2FA code must be 6 digits.", ""),
|
||||
("Multiple Windows sessions found", ""),
|
||||
("Please select the session you want to connect to", ""),
|
||||
("powered by RustDesk", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
@ -4,6 +4,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Status", "Státusz"),
|
||||
("Your Desktop", "Saját asztal"),
|
||||
("desk_tip", "A számítógép ezzel a jelszóval és azonosítóval érhető el távolról."),
|
||||
("outgoing_only_desk_tip", ""),
|
||||
("Password", "Jelszó"),
|
||||
("Ready", "Kész"),
|
||||
("Established", "Létrejött"),
|
||||
@ -586,5 +587,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("2FA code must be 6 digits.", ""),
|
||||
("Multiple Windows sessions found", ""),
|
||||
("Please select the session you want to connect to", ""),
|
||||
("powered by RustDesk", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
@ -4,6 +4,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Status", "Status"),
|
||||
("Your Desktop", "Desktop Anda"),
|
||||
("desk_tip", "Desktop Anda dapat diakses dengan ID dan kata sandi ini."),
|
||||
("outgoing_only_desk_tip", ""),
|
||||
("Password", "Kata sandi"),
|
||||
("Ready", "Sudah siap"),
|
||||
("Established", "Didirikan"),
|
||||
@ -586,5 +587,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("2FA code must be 6 digits.", ""),
|
||||
("Multiple Windows sessions found", ""),
|
||||
("Please select the session you want to connect to", ""),
|
||||
("powered by RustDesk", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
@ -4,6 +4,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Status", "Stato"),
|
||||
("Your Desktop", "Questo desktop"),
|
||||
("desk_tip", "Puoi accedere a questo desktop usando l'ID e la password indicati qui sotto."),
|
||||
("outgoing_only_desk_tip", ""),
|
||||
("Password", "Password"),
|
||||
("Ready", "Pronto"),
|
||||
("Established", "Stabilita"),
|
||||
@ -586,5 +587,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("2FA code must be 6 digits.", "Il codice 2FA deve essere composto da 6 cifre."),
|
||||
("Multiple Windows sessions found", "Rilevate sessioni Windows multiple"),
|
||||
("Please select the session you want to connect to", "Seleziona la sessione a cui connetterti"),
|
||||
("powered by RustDesk", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
@ -4,6 +4,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Status", "状態"),
|
||||
("Your Desktop", "デスクトップ"),
|
||||
("desk_tip", "このIDとパスワードであなたのデスクトップにアクセスできます。"),
|
||||
("outgoing_only_desk_tip", ""),
|
||||
("Password", "パスワード"),
|
||||
("Ready", "準備完了"),
|
||||
("Established", "接続完了"),
|
||||
@ -586,5 +587,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("2FA code must be 6 digits.", ""),
|
||||
("Multiple Windows sessions found", ""),
|
||||
("Please select the session you want to connect to", ""),
|
||||
("powered by RustDesk", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
@ -4,6 +4,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Status", "상태"),
|
||||
("Your Desktop", "내 데스크탑"),
|
||||
("desk_tip", "아래의 ID와 비밀번호로 연결할수 있습니다"),
|
||||
("outgoing_only_desk_tip", ""),
|
||||
("Password", "비밀번호"),
|
||||
("Ready", "준비"),
|
||||
("Established", "연결됨"),
|
||||
@ -586,5 +587,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("2FA code must be 6 digits.", ""),
|
||||
("Multiple Windows sessions found", ""),
|
||||
("Please select the session you want to connect to", ""),
|
||||
("powered by RustDesk", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
@ -4,6 +4,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Status", "Күй"),
|
||||
("Your Desktop", "Сіздің Жұмыс үстеліңіз"),
|
||||
("desk_tip", "Сіздің Жұмыс үстеліңіз осы ID мен құпия сөз арқылы қолжетімді"),
|
||||
("outgoing_only_desk_tip", ""),
|
||||
("Password", "Құпия сөз"),
|
||||
("Ready", "Дайын"),
|
||||
("Established", "Қосылды"),
|
||||
@ -586,5 +587,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("2FA code must be 6 digits.", ""),
|
||||
("Multiple Windows sessions found", ""),
|
||||
("Please select the session you want to connect to", ""),
|
||||
("powered by RustDesk", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
@ -4,6 +4,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Status", "Būsena"),
|
||||
("Your Desktop", "Jūsų darbalaukis"),
|
||||
("desk_tip", "Jūsų darbalaukis pasiekiamas naudojant šį ID ir slaptažodį"),
|
||||
("outgoing_only_desk_tip", ""),
|
||||
("Password", "Slaptažodis"),
|
||||
("Ready", "Pasiruošęs"),
|
||||
("Established", "Įsteigta"),
|
||||
@ -586,5 +587,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("2FA code must be 6 digits.", ""),
|
||||
("Multiple Windows sessions found", ""),
|
||||
("Please select the session you want to connect to", ""),
|
||||
("powered by RustDesk", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
@ -4,6 +4,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Status", "Statuss"),
|
||||
("Your Desktop", "Jūsu darbvirsma"),
|
||||
("desk_tip", "Jūsu darbvirsmai var piekļūt ar šo ID un paroli."),
|
||||
("outgoing_only_desk_tip", ""),
|
||||
("Password", "Parole"),
|
||||
("Ready", "Gatavs"),
|
||||
("Established", "Izveidots"),
|
||||
@ -586,5 +587,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("2FA code must be 6 digits.", "2FA kodam ir jābūt ar 6 cipariem."),
|
||||
("Multiple Windows sessions found", "Atrastas vairākas Windows sesijas"),
|
||||
("Please select the session you want to connect to", "Lūdzu, atlasiet sesiju, ar kuru vēlaties izveidot savienojumu"),
|
||||
("powered by RustDesk", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
@ -4,6 +4,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Status", "Status"),
|
||||
("Your Desktop", "Ditt skrivebord"),
|
||||
("desk_tip", "Du kan få adgang til ditt skrivebord med denne ID og passord."),
|
||||
("outgoing_only_desk_tip", ""),
|
||||
("Password", "Passord"),
|
||||
("Ready", "Klar"),
|
||||
("Established", "Etablert"),
|
||||
@ -586,5 +587,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("2FA code must be 6 digits.", ""),
|
||||
("Multiple Windows sessions found", ""),
|
||||
("Please select the session you want to connect to", ""),
|
||||
("powered by RustDesk", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
@ -4,6 +4,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Status", "Status"),
|
||||
("Your Desktop", "Uw Bureaublad"),
|
||||
("desk_tip", "Uw bureaublad is toegankelijk via de ID en het wachtwoord hieronder."),
|
||||
("outgoing_only_desk_tip", ""),
|
||||
("Password", "Wachtwoord"),
|
||||
("Ready", "Klaar"),
|
||||
("Established", "Opgezet"),
|
||||
@ -586,5 +587,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("2FA code must be 6 digits.", "2FA-code moet 6 cijfers lang zijn."),
|
||||
("Multiple Windows sessions found", "Meerdere Windows-sessies gevonden"),
|
||||
("Please select the session you want to connect to", "Selecteer de sessie waarmee je verbinding wilt maken"),
|
||||
("powered by RustDesk", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
@ -4,6 +4,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Status", "Status"),
|
||||
("Your Desktop", "Twój pulpit"),
|
||||
("desk_tip", "Aby połączyć się z tym urządzeniem, użyj poniższego ID i hasła"),
|
||||
("outgoing_only_desk_tip", ""),
|
||||
("Password", "Hasło"),
|
||||
("Ready", "Gotowe"),
|
||||
("Established", "Nawiązano"),
|
||||
@ -586,5 +587,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("2FA code must be 6 digits.", "Kod 2FA musi zawierać 6 cyfr."),
|
||||
("Multiple Windows sessions found", "Znaleziono wiele sesji Windows"),
|
||||
("Please select the session you want to connect to", "Wybierz sesję, do której chcesz się podłączyć"),
|
||||
("powered by RustDesk", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
@ -4,6 +4,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Status", "Estado"),
|
||||
("Your Desktop", "Ambiente de Trabalho"),
|
||||
("desk_tip", "O seu Ambiente de Trabalho pode ser acedido com este ID e palavra-passe."),
|
||||
("outgoing_only_desk_tip", ""),
|
||||
("Password", "Senha"),
|
||||
("Ready", "Pronto"),
|
||||
("Established", "Estabelecido"),
|
||||
@ -586,5 +587,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("2FA code must be 6 digits.", ""),
|
||||
("Multiple Windows sessions found", ""),
|
||||
("Please select the session you want to connect to", ""),
|
||||
("powered by RustDesk", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
@ -4,6 +4,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Status", "Status"),
|
||||
("Your Desktop", "Seu Computador"),
|
||||
("desk_tip", "Seu computador pode ser acessado com este ID e senha."),
|
||||
("outgoing_only_desk_tip", ""),
|
||||
("Password", "Senha"),
|
||||
("Ready", "Pronto"),
|
||||
("Established", "Estabelecido"),
|
||||
@ -586,5 +587,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("2FA code must be 6 digits.", ""),
|
||||
("Multiple Windows sessions found", ""),
|
||||
("Please select the session you want to connect to", ""),
|
||||
("powered by RustDesk", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
@ -4,6 +4,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Status", "Stare"),
|
||||
("Your Desktop", "Desktopul tău"),
|
||||
("desk_tip", "Desktopul tău poate fi accesat folosind ID-ul și parola de mai jos."),
|
||||
("outgoing_only_desk_tip", ""),
|
||||
("Password", "Parolă"),
|
||||
("Ready", "Pregătit"),
|
||||
("Established", "Stabilit"),
|
||||
@ -586,5 +587,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("2FA code must be 6 digits.", ""),
|
||||
("Multiple Windows sessions found", ""),
|
||||
("Please select the session you want to connect to", ""),
|
||||
("powered by RustDesk", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
@ -4,6 +4,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Status", "Статус"),
|
||||
("Your Desktop", "Ваш рабочий стол"),
|
||||
("desk_tip", "Ваш рабочий стол доступен с этим ID и паролем"),
|
||||
("outgoing_only_desk_tip", ""),
|
||||
("Password", "Пароль"),
|
||||
("Ready", "Готов"),
|
||||
("Established", "Установлено"),
|
||||
@ -586,5 +587,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("2FA code must be 6 digits.", "Код двухфакторной аутентификации должен состоять из 6 цифр."),
|
||||
("Multiple Windows sessions found", "Обнаружено несколько сеансов Windows"),
|
||||
("Please select the session you want to connect to", "Выберите сеанс, к которому хотите подключиться"),
|
||||
("powered by RustDesk", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
@ -4,6 +4,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Status", "Stav"),
|
||||
("Your Desktop", "Vaša plocha"),
|
||||
("desk_tip", "K svojej ploche sa môžete pripojiť pomocou zobrazeného ID a hesla."),
|
||||
("outgoing_only_desk_tip", ""),
|
||||
("Password", "Heslo"),
|
||||
("Ready", "Pripravené"),
|
||||
("Established", "Nadviazané"),
|
||||
@ -586,5 +587,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("2FA code must be 6 digits.", "Kód 2FA musí obsahovať 6 číslic."),
|
||||
("Multiple Windows sessions found", "Našlo sa viacero relácií systému Windows"),
|
||||
("Please select the session you want to connect to", "Vyberte reláciu, ku ktorej sa chcete pripojiť"),
|
||||
("powered by RustDesk", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
@ -4,6 +4,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Status", "Stanje"),
|
||||
("Your Desktop", "Vaše namizje"),
|
||||
("desk_tip", "Do vašega namizja lahko dostopate s spodnjim IDjem in geslom"),
|
||||
("outgoing_only_desk_tip", ""),
|
||||
("Password", "Geslo"),
|
||||
("Ready", "Pripravljen"),
|
||||
("Established", "Povezava vzpostavljena"),
|
||||
@ -586,5 +587,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("2FA code must be 6 digits.", ""),
|
||||
("Multiple Windows sessions found", ""),
|
||||
("Please select the session you want to connect to", ""),
|
||||
("powered by RustDesk", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
@ -4,6 +4,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Status", "Statusi"),
|
||||
("Your Desktop", "Desktopi juaj"),
|
||||
("desk_tip", "Desktopi juaj mund të aksesohet me këtë ID dhe fjalëkalim."),
|
||||
("outgoing_only_desk_tip", ""),
|
||||
("Password", "fjalëkalimi"),
|
||||
("Ready", "Gati"),
|
||||
("Established", "I themeluar"),
|
||||
@ -586,5 +587,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("2FA code must be 6 digits.", ""),
|
||||
("Multiple Windows sessions found", ""),
|
||||
("Please select the session you want to connect to", ""),
|
||||
("powered by RustDesk", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
@ -4,6 +4,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Status", "Status"),
|
||||
("Your Desktop", "Vaša radna površina"),
|
||||
("desk_tip", "Vašoj radnoj površini se može pristupiti ovim ID i lozinkom."),
|
||||
("outgoing_only_desk_tip", ""),
|
||||
("Password", "Lozinka"),
|
||||
("Ready", "Spremno"),
|
||||
("Established", "Uspostavljeno"),
|
||||
@ -586,5 +587,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("2FA code must be 6 digits.", ""),
|
||||
("Multiple Windows sessions found", ""),
|
||||
("Please select the session you want to connect to", ""),
|
||||
("powered by RustDesk", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
@ -4,6 +4,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Status", "Status"),
|
||||
("Your Desktop", "Ditt skrivbord"),
|
||||
("desk_tip", "Ditt skrivbord kan delas med hjälp av detta ID och lösenord"),
|
||||
("outgoing_only_desk_tip", ""),
|
||||
("Password", "Lösenord"),
|
||||
("Ready", "Redo"),
|
||||
("Established", "Uppkopplad"),
|
||||
@ -586,5 +587,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("2FA code must be 6 digits.", ""),
|
||||
("Multiple Windows sessions found", ""),
|
||||
("Please select the session you want to connect to", ""),
|
||||
("powered by RustDesk", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
@ -4,6 +4,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Status", ""),
|
||||
("Your Desktop", ""),
|
||||
("desk_tip", ""),
|
||||
("outgoing_only_desk_tip", ""),
|
||||
("Password", ""),
|
||||
("Ready", ""),
|
||||
("Established", ""),
|
||||
@ -586,5 +587,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("2FA code must be 6 digits.", ""),
|
||||
("Multiple Windows sessions found", ""),
|
||||
("Please select the session you want to connect to", ""),
|
||||
("powered by RustDesk", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
@ -4,6 +4,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Status", "สถานะ"),
|
||||
("Your Desktop", "หน้าจอของคุณ"),
|
||||
("desk_tip", "คุณสามารถเข้าถึงเดสก์ท็อปของคุณได้ด้วย ID และรหัสผ่านต่อไปนี้"),
|
||||
("outgoing_only_desk_tip", ""),
|
||||
("Password", "รหัสผ่าน"),
|
||||
("Ready", "พร้อม"),
|
||||
("Established", "เชื่อมต่อแล้ว"),
|
||||
@ -586,5 +587,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("2FA code must be 6 digits.", ""),
|
||||
("Multiple Windows sessions found", ""),
|
||||
("Please select the session you want to connect to", ""),
|
||||
("powered by RustDesk", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
@ -4,6 +4,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Status", "Durum"),
|
||||
("Your Desktop", "Sizin Masaüstünüz"),
|
||||
("desk_tip", "Masaüstünüze bu ID ve şifre ile erişilebilir"),
|
||||
("outgoing_only_desk_tip", ""),
|
||||
("Password", "Şifre"),
|
||||
("Ready", "Hazır"),
|
||||
("Established", "Bağlantı sağlandı"),
|
||||
@ -586,5 +587,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("2FA code must be 6 digits.", ""),
|
||||
("Multiple Windows sessions found", ""),
|
||||
("Please select the session you want to connect to", ""),
|
||||
("powered by RustDesk", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
@ -4,6 +4,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Status", "狀態"),
|
||||
("Your Desktop", "您的桌面"),
|
||||
("desk_tip", "您可以透過此 ID 及密碼存取您的桌面"),
|
||||
("outgoing_only_desk_tip", ""),
|
||||
("Password", "密碼"),
|
||||
("Ready", "就緒"),
|
||||
("Established", "已建立"),
|
||||
@ -586,5 +587,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("2FA code must be 6 digits.", "二步驟驗證碼必須是 6 位數字。"),
|
||||
("Multiple Windows sessions found", "發現多個 Windows 工作階段"),
|
||||
("Please select the session you want to connect to", "請選擇您想要連結的工作階段"),
|
||||
("powered by RustDesk", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
@ -4,6 +4,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Status", "Статус"),
|
||||
("Your Desktop", "Ваша стільниця"),
|
||||
("desk_tip", "Ваша стільниця доступна з цим ідентифікатором і паролем"),
|
||||
("outgoing_only_desk_tip", ""),
|
||||
("Password", "Пароль"),
|
||||
("Ready", "Готово"),
|
||||
("Established", "Встановлено"),
|
||||
@ -586,5 +587,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("2FA code must be 6 digits.", "Код двофакторної автентифікації повинен складатися з 6 символів."),
|
||||
("Multiple Windows sessions found", "Виявлено декілька сеансів Windows"),
|
||||
("Please select the session you want to connect to", "Будь ласка, оберіть сеанс, до якого ви хочете підключитися"),
|
||||
("powered by RustDesk", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
@ -4,6 +4,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Status", "Trạng thái hiện tại"),
|
||||
("Your Desktop", "Desktop của bạn"),
|
||||
("desk_tip", "Desktop của bạn có thể đuợc truy cập bằng ID và mật khẩu này."),
|
||||
("outgoing_only_desk_tip", ""),
|
||||
("Password", "Mật khẩu"),
|
||||
("Ready", "Sẵn sàng"),
|
||||
("Established", "Đã đuợc thiết lập"),
|
||||
@ -586,5 +587,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("2FA code must be 6 digits.", ""),
|
||||
("Multiple Windows sessions found", ""),
|
||||
("Please select the session you want to connect to", ""),
|
||||
("powered by RustDesk", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user