From 5253d67e04a4a1353ffc4ca04b35573881d868f2 Mon Sep 17 00:00:00 2001 From: fufesou Date: Thu, 14 Mar 2024 11:36:14 +0800 Subject: [PATCH] Fix/custom client styles (#7373) * Fix. qs styles Signed-off-by: fufesou * custom client, options Signed-off-by: fufesou * Move logo.svg to icon.svg Signed-off-by: fufesou * Refact. Custom client, connection status ui. Signed-off-by: fufesou * Custom client ui. Disable settings, hide "Change password" Signed-off-by: fufesou * Custom client, logo align center Signed-off-by: fufesou * Custom client, refact, outgoing ui Signed-off-by: fufesou * Custom client, outgoing, settings icon Signed-off-by: fufesou * Custom client, powered by RustDesk Signed-off-by: fufesou * Custom client, remove unused SizeBox Signed-off-by: fufesou * Update config.rs * Update flutter_ffi.rs --------- Signed-off-by: fufesou Co-authored-by: RustDesk <71636191+rustdesk@users.noreply.github.com> --- flutter/assets/{logo.svg => icon.svg} | 0 flutter/lib/common.dart | 46 +++- .../lib/desktop/pages/connection_page.dart | 41 ++-- .../lib/desktop/pages/desktop_home_page.dart | 217 +++++++++++++----- .../desktop/pages/desktop_setting_page.dart | 69 +++--- .../lib/desktop/pages/desktop_tab_page.dart | 6 +- flutter/lib/desktop/pages/server_page.dart | 2 +- .../lib/desktop/widgets/tabbar_widget.dart | 5 +- flutter/lib/models/peer_tab_model.dart | 9 +- src/lang/ar.rs | 2 + src/lang/bg.rs | 2 + src/lang/ca.rs | 2 + src/lang/cn.rs | 2 + src/lang/cs.rs | 2 + src/lang/da.rs | 2 + src/lang/de.rs | 2 + src/lang/el.rs | 2 + src/lang/en.rs | 1 + src/lang/eo.rs | 2 + src/lang/es.rs | 2 + src/lang/et.rs | 2 + src/lang/fa.rs | 2 + src/lang/fr.rs | 2 + src/lang/hu.rs | 2 + src/lang/id.rs | 2 + src/lang/it.rs | 2 + src/lang/ja.rs | 2 + src/lang/ko.rs | 2 + src/lang/kz.rs | 2 + src/lang/lt.rs | 2 + src/lang/lv.rs | 2 + src/lang/nb.rs | 2 + src/lang/nl.rs | 2 + src/lang/pl.rs | 2 + src/lang/pt_PT.rs | 2 + src/lang/ptbr.rs | 2 + src/lang/ro.rs | 2 + src/lang/ru.rs | 2 + src/lang/sk.rs | 2 + src/lang/sl.rs | 2 + src/lang/sq.rs | 2 + src/lang/sr.rs | 2 + src/lang/sv.rs | 2 + src/lang/template.rs | 2 + src/lang/th.rs | 2 + src/lang/tr.rs | 2 + src/lang/tw.rs | 2 + src/lang/ua.rs | 2 + src/lang/vn.rs | 2 + 49 files changed, 350 insertions(+), 124 deletions(-) rename flutter/assets/{logo.svg => icon.svg} (100%) diff --git a/flutter/assets/logo.svg b/flutter/assets/icon.svg similarity index 100% rename from flutter/assets/logo.svg rename to flutter/assets/icon.svg diff --git a/flutter/lib/common.dart b/flutter/lib/common.dart index 6c5f3e2fb..354702037 100644 --- a/flutter/lib/common.dart +++ b/flutter/lib/common.dart @@ -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 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); } diff --git a/flutter/lib/desktop/pages/connection_page.dart b/flutter/lib/desktop/pages/connection_page.dart index 500a074f5..dc66ac2cc 100644 --- a/flutter/lib/desktop/pages/connection_page.dart +++ b/flutter/lib/desktop/pages/connection_page.dart @@ -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 createState() => _OnlineStatusWidgetState(); @@ -34,7 +37,7 @@ class _OnlineStatusWidgetState extends State { 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 { : 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 { .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 { ).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; @@ -260,8 +273,8 @@ class _ConnectionPageState extends State Expanded(child: PeerTabPage()), ], ).paddingOnly(left: 12.0)), - const Divider(height: 1), - OnlineStatusWidget() + if (!bind.isOutgoingOnly()) const Divider(height: 1), + if (!bind.isOutgoingOnly()) OnlineStatusWidget() ], ); } diff --git a/flutter/lib/desktop/pages/desktop_home_page.dart b/flutter/lib/desktop/pages/desktop_home_page.dart index 7a78c3a6b..a74870fed 100644 --- a/flutter/lib/desktop/pages/desktop_home_page.dart +++ b/flutter/lib/desktop/pages/desktop_home_page.dart @@ -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 Timer? _updateTimer; bool isCardClosed = false; + RxBool _editHover = false.obs; + final GlobalKey _childKey = GlobalKey(); + bool _isInHomePage() { + final controller = Get.find(); + 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 = [ buildTip(context), - buildIDBoard(context), - buildPasswordBoard(context), + if (!bind.isOutgoingOnly()) buildIDBoard(context), + if (!bind.isOutgoingOnly()) buildPasswordBoard(context), FutureBuilder( 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 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 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 } 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 )))), 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 } 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 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 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 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 }); } } 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 // }); // } } else if (Platform.isLinux) { + if (bind.isOutgoingOnly()) { + return Container(); + } final LinuxCards = []; 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 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 } _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 diff --git a/flutter/lib/desktop/pages/desktop_setting_page.dart b/flutter/lib/desktop/pages/desktop_setting_page.dart index 98b019d05..e92ec840d 100644 --- a/flutter/lib/desktop/pages/desktop_setting_page.dart +++ b/flutter/lib/desktop/pages/desktop_setting_page.dart @@ -106,39 +106,32 @@ class _DesktopSettingPageState extends State 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 _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 = []; - if (!bind.isIncomingOnly()) { - children.add(_OptionCheckBox(context, - 'Confirm before closing multiple tabs', 'enable-confirm-closing-tabs', - isServer: false)); - } - children.addAll([ + final children = [ + 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 ''; diff --git a/flutter/lib/desktop/pages/desktop_tab_page.dart b/flutter/lib/desktop/pages/desktop_tab_page.dart index 668095df6..526c36dc8 100644 --- a/flutter/lib/desktop/pages/desktop_tab_page.dart +++ b/flutter/lib/desktop/pages/desktop_tab_page.dart @@ -57,10 +57,10 @@ class _DesktopTabPageState extends State { 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 { body: DesktopTab( controller: tabController, tail: Offstage( - offstage: bind.isIncomingOnly(), + offstage: bind.isIncomingOnly() || bind.isDisableSettings(), child: ActionIcon( message: 'Settings', icon: IconFont.menu, diff --git a/flutter/lib/desktop/pages/server_page.dart b/flutter/lib/desktop/pages/server_page.dart index 2959d6f5c..8b0bf5d17 100644 --- a/flutter/lib/desktop/pages/server_page.dart +++ b/flutter/lib/desktop/pages/server_page.dart @@ -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), ); } } diff --git a/flutter/lib/desktop/widgets/tabbar_widget.dart b/flutter/lib/desktop/widgets/tabbar_widget.dart index e290bcda3..488471629 100644 --- a/flutter/lib/desktop/widgets/tabbar_widget.dart +++ b/flutter/lib/desktop/widgets/tabbar_widget.dart @@ -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, diff --git a/flutter/lib/models/peer_tab_model.dart b/flutter/lib/models/peer_tab_model.dart index 09d308c18..de7e50b4e 100644 --- a/flutter/lib/models/peer_tab_model.dart +++ b/flutter/lib/models/peer_tab_model.dart @@ -25,8 +25,6 @@ class PeerTabModel with ChangeNotifier { 'Recent sessions', 'Favorites', 'Discovered', - 'Address book', - 'Group', ]; final List 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'); diff --git a/src/lang/ar.rs b/src/lang/ar.rs index 9ad745e72..f15a3d147 100644 --- a/src/lang/ar.rs +++ b/src/lang/ar.rs @@ -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(); } diff --git a/src/lang/bg.rs b/src/lang/bg.rs index 8bd2d9005..6a038a655 100644 --- a/src/lang/bg.rs +++ b/src/lang/bg.rs @@ -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(); } diff --git a/src/lang/ca.rs b/src/lang/ca.rs index 33d774bdc..01052f3db 100644 --- a/src/lang/ca.rs +++ b/src/lang/ca.rs @@ -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(); } diff --git a/src/lang/cn.rs b/src/lang/cn.rs index 8f3af0668..ed601e6d4 100644 --- a/src/lang/cn.rs +++ b/src/lang/cn.rs @@ -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(); } diff --git a/src/lang/cs.rs b/src/lang/cs.rs index a6e66ef7f..78270b7ff 100644 --- a/src/lang/cs.rs +++ b/src/lang/cs.rs @@ -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(); } diff --git a/src/lang/da.rs b/src/lang/da.rs index 6914f17e9..32178a36e 100644 --- a/src/lang/da.rs +++ b/src/lang/da.rs @@ -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(); } diff --git a/src/lang/de.rs b/src/lang/de.rs index 88ca3f09a..d50fd3f3f 100644 --- a/src/lang/de.rs +++ b/src/lang/de.rs @@ -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(); } diff --git a/src/lang/el.rs b/src/lang/el.rs index 36ba281cc..4d369325d 100644 --- a/src/lang/el.rs +++ b/src/lang/el.rs @@ -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(); } diff --git a/src/lang/en.rs b/src/lang/en.rs index 6c7d99452..64605126c 100644 --- a/src/lang/en.rs +++ b/src/lang/en.rs @@ -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"), diff --git a/src/lang/eo.rs b/src/lang/eo.rs index 212e53ce2..edf5e504e 100644 --- a/src/lang/eo.rs +++ b/src/lang/eo.rs @@ -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(); } diff --git a/src/lang/es.rs b/src/lang/es.rs index 4fdf2a35e..ec48ede18 100644 --- a/src/lang/es.rs +++ b/src/lang/es.rs @@ -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(); } diff --git a/src/lang/et.rs b/src/lang/et.rs index 9538d2bd3..162e0afc4 100644 --- a/src/lang/et.rs +++ b/src/lang/et.rs @@ -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(); } diff --git a/src/lang/fa.rs b/src/lang/fa.rs index 712053660..35c3a1843 100644 --- a/src/lang/fa.rs +++ b/src/lang/fa.rs @@ -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(); } diff --git a/src/lang/fr.rs b/src/lang/fr.rs index c9273a208..117a454c9 100644 --- a/src/lang/fr.rs +++ b/src/lang/fr.rs @@ -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(); } diff --git a/src/lang/hu.rs b/src/lang/hu.rs index 218776685..5814d419d 100644 --- a/src/lang/hu.rs +++ b/src/lang/hu.rs @@ -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(); } diff --git a/src/lang/id.rs b/src/lang/id.rs index d71bc2823..50583366b 100644 --- a/src/lang/id.rs +++ b/src/lang/id.rs @@ -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(); } diff --git a/src/lang/it.rs b/src/lang/it.rs index 64bc4cac8..a4359cc37 100644 --- a/src/lang/it.rs +++ b/src/lang/it.rs @@ -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(); } diff --git a/src/lang/ja.rs b/src/lang/ja.rs index e36c7801c..5d3a75d72 100644 --- a/src/lang/ja.rs +++ b/src/lang/ja.rs @@ -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(); } diff --git a/src/lang/ko.rs b/src/lang/ko.rs index 966be6058..b34e28db2 100644 --- a/src/lang/ko.rs +++ b/src/lang/ko.rs @@ -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(); } diff --git a/src/lang/kz.rs b/src/lang/kz.rs index 8da100bf7..1347f6baa 100644 --- a/src/lang/kz.rs +++ b/src/lang/kz.rs @@ -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(); } diff --git a/src/lang/lt.rs b/src/lang/lt.rs index 855189c7a..f428fc92c 100644 --- a/src/lang/lt.rs +++ b/src/lang/lt.rs @@ -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(); } diff --git a/src/lang/lv.rs b/src/lang/lv.rs index 6f40b2e6a..3e3318ba2 100644 --- a/src/lang/lv.rs +++ b/src/lang/lv.rs @@ -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(); } diff --git a/src/lang/nb.rs b/src/lang/nb.rs index 69e4633cc..49bc5e456 100644 --- a/src/lang/nb.rs +++ b/src/lang/nb.rs @@ -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(); } diff --git a/src/lang/nl.rs b/src/lang/nl.rs index 5d6b70f6e..e8dd4e954 100644 --- a/src/lang/nl.rs +++ b/src/lang/nl.rs @@ -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(); } diff --git a/src/lang/pl.rs b/src/lang/pl.rs index 56099f11d..e6c5cc813 100644 --- a/src/lang/pl.rs +++ b/src/lang/pl.rs @@ -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(); } diff --git a/src/lang/pt_PT.rs b/src/lang/pt_PT.rs index ee1870616..7bd2ec86e 100644 --- a/src/lang/pt_PT.rs +++ b/src/lang/pt_PT.rs @@ -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(); } diff --git a/src/lang/ptbr.rs b/src/lang/ptbr.rs index fac9ec814..41c285f75 100644 --- a/src/lang/ptbr.rs +++ b/src/lang/ptbr.rs @@ -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(); } diff --git a/src/lang/ro.rs b/src/lang/ro.rs index 86075e5f1..7a4eb11b2 100644 --- a/src/lang/ro.rs +++ b/src/lang/ro.rs @@ -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(); } diff --git a/src/lang/ru.rs b/src/lang/ru.rs index deea399e7..cb6ab5262 100644 --- a/src/lang/ru.rs +++ b/src/lang/ru.rs @@ -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(); } diff --git a/src/lang/sk.rs b/src/lang/sk.rs index ccf8bb3fb..bf327698c 100644 --- a/src/lang/sk.rs +++ b/src/lang/sk.rs @@ -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(); } diff --git a/src/lang/sl.rs b/src/lang/sl.rs index d338eb51c..e5c458ca8 100755 --- a/src/lang/sl.rs +++ b/src/lang/sl.rs @@ -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(); } diff --git a/src/lang/sq.rs b/src/lang/sq.rs index 9a3be75b7..812d561c6 100644 --- a/src/lang/sq.rs +++ b/src/lang/sq.rs @@ -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(); } diff --git a/src/lang/sr.rs b/src/lang/sr.rs index b0c5a8c8a..201770c36 100644 --- a/src/lang/sr.rs +++ b/src/lang/sr.rs @@ -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(); } diff --git a/src/lang/sv.rs b/src/lang/sv.rs index 2f463c817..57a39cbeb 100644 --- a/src/lang/sv.rs +++ b/src/lang/sv.rs @@ -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(); } diff --git a/src/lang/template.rs b/src/lang/template.rs index bb885f774..84ba462e5 100644 --- a/src/lang/template.rs +++ b/src/lang/template.rs @@ -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(); } diff --git a/src/lang/th.rs b/src/lang/th.rs index 5d90d6000..df2d8b224 100644 --- a/src/lang/th.rs +++ b/src/lang/th.rs @@ -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(); } diff --git a/src/lang/tr.rs b/src/lang/tr.rs index 24b34f389..07ad0253c 100644 --- a/src/lang/tr.rs +++ b/src/lang/tr.rs @@ -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(); } diff --git a/src/lang/tw.rs b/src/lang/tw.rs index 6f9b22c5a..bf121e4f8 100644 --- a/src/lang/tw.rs +++ b/src/lang/tw.rs @@ -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(); } diff --git a/src/lang/ua.rs b/src/lang/ua.rs index 52294b6a8..19424b261 100644 --- a/src/lang/ua.rs +++ b/src/lang/ua.rs @@ -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(); } diff --git a/src/lang/vn.rs b/src/lang/vn.rs index 9b1306aba..15d60c3c0 100644 --- a/src/lang/vn.rs +++ b/src/lang/vn.rs @@ -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(); }