diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj index 1980b821..25ba5a0d 100644 --- a/ios/Runner.xcodeproj/project.pbxproj +++ b/ios/Runner.xcodeproj/project.pbxproj @@ -354,7 +354,7 @@ buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; - CURRENT_PROJECT_VERSION = 138; + CURRENT_PROJECT_VERSION = 140; DEVELOPMENT_TEAM = BA88US33G6; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; @@ -362,7 +362,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 1.0.138; + MARKETING_VERSION = 1.0.140; PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; @@ -484,7 +484,7 @@ buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; - CURRENT_PROJECT_VERSION = 138; + CURRENT_PROJECT_VERSION = 140; DEVELOPMENT_TEAM = BA88US33G6; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; @@ -492,7 +492,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 1.0.138; + MARKETING_VERSION = 1.0.140; PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; @@ -508,7 +508,7 @@ buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; - CURRENT_PROJECT_VERSION = 138; + CURRENT_PROJECT_VERSION = 140; DEVELOPMENT_TEAM = BA88US33G6; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; @@ -516,7 +516,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 1.0.138; + MARKETING_VERSION = 1.0.140; PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; diff --git a/lib/data/provider/server.dart b/lib/data/provider/server.dart index 08ae4af3..91e203cb 100644 --- a/lib/data/provider/server.dart +++ b/lib/data/provider/server.dart @@ -165,8 +165,7 @@ class ServerProvider extends BusyProvider { Future _getData(ServerPrivateInfo spi) async { final idx = _servers.indexWhere((element) => element.info == spi); final state = _servers[idx].connectionState; - if (_servers[idx].client == null || - state == ServerConnectionState.failed || + if (state == ServerConnectionState.failed || state == ServerConnectionState.disconnected) { _servers[idx].connectionState = ServerConnectionState.connecting; notifyListeners(); diff --git a/lib/data/res/build_data.dart b/lib/data/res/build_data.dart index 51c6b539..f6747ef8 100644 --- a/lib/data/res/build_data.dart +++ b/lib/data/res/build_data.dart @@ -2,9 +2,9 @@ class BuildData { static const String name = "ServerBox"; - static const int build = 138; + static const int build = 140; static const String engine = "Flutter 3.0.1 • channel stable • https://github.com/flutter/flutter.git\nFramework • revision fb57da5f94 (2 days ago) • 2022-05-19 15:50:29 -0700\nEngine • revision caaafc5604\nTools • Dart 2.17.1 • DevTools 2.12.2\n"; - static const String buildAt = "2022-05-21 20:15:15.896932"; - static const int modifications = 6; + static const String buildAt = "2022-05-22 13:26:17.235297"; + static const int modifications = 3; } diff --git a/lib/generated/intl/messages_en.dart b/lib/generated/intl/messages_en.dart index e736e2d1..385d27b8 100644 --- a/lib/generated/intl/messages_en.dart +++ b/lib/generated/intl/messages_en.dart @@ -171,6 +171,7 @@ class MessageLookup extends MessageLookupByLibrary { "pwd": MessageLookupByLibrary.simpleMessage("Password"), "rename": MessageLookupByLibrary.simpleMessage("Rename"), "reportBugsOnGithubIssue": m9, + "restore": MessageLookupByLibrary.simpleMessage("Restore"), "restoreSuccess": MessageLookupByLibrary.simpleMessage( "Restore success. Restart app to apply."), "restoreSureWithDate": m10, diff --git a/lib/generated/intl/messages_zh.dart b/lib/generated/intl/messages_zh.dart index f11a577e..b953e8fd 100644 --- a/lib/generated/intl/messages_zh.dart +++ b/lib/generated/intl/messages_zh.dart @@ -68,7 +68,7 @@ class MessageLookup extends MessageLookupByLibrary { "backDir": MessageLookupByLibrary.simpleMessage("返回上一级"), "backup": MessageLookupByLibrary.simpleMessage("备份"), "backupTip": MessageLookupByLibrary.simpleMessage( - "导出的数据仅进行了简单加密,请妥善保管。\n恢复的数据(除了设置)不会覆盖现有数据。"), + "导出的数据仅进行了简单加密,请妥善保管。\n除了设置项,恢复的数据不会覆盖现有数据。"), "backupVersionNotMatch": MessageLookupByLibrary.simpleMessage("备份版本不匹配,无法恢复"), "cancel": MessageLookupByLibrary.simpleMessage("取消"), @@ -150,6 +150,7 @@ class MessageLookup extends MessageLookupByLibrary { "pwd": MessageLookupByLibrary.simpleMessage("密码"), "rename": MessageLookupByLibrary.simpleMessage("重命名"), "reportBugsOnGithubIssue": m9, + "restore": MessageLookupByLibrary.simpleMessage("恢复"), "restoreSuccess": MessageLookupByLibrary.simpleMessage("恢复成功,需要重启App来应用更改"), "restoreSureWithDate": m10, diff --git a/lib/generated/l10n.dart b/lib/generated/l10n.dart index 15146e21..f34472c1 100644 --- a/lib/generated/l10n.dart +++ b/lib/generated/l10n.dart @@ -1251,6 +1251,16 @@ class S { ); } + /// `Restore` + String get restore { + return Intl.message( + 'Restore', + name: 'restore', + desc: '', + args: [], + ); + } + /// `Are you sure to restore from {date} ?` String restoreSureWithDate(Object date) { return Intl.message( diff --git a/lib/l10n/intl_en.arb b/lib/l10n/intl_en.arb index 8092b9eb..660a6535 100644 --- a/lib/l10n/intl_en.arb +++ b/lib/l10n/intl_en.arb @@ -119,6 +119,7 @@ "pingNoServer": "No server to ping.\nPlease add a server in server tab.", "backupTip": "The exported data is simply encrypted. \nPlease keep it safe.\nRestoring will not overwrite existing data (except setting).", "backup": "Backup", + "restore": "Restore", "restoreSureWithDate": "Are you sure to restore from {date} ?", "backupVersionNotMatch": "Backup version is not match.", "invalidJson": "Invalid JSON", diff --git a/lib/l10n/intl_zh.arb b/lib/l10n/intl_zh.arb index ba86dbe7..a807cfb4 100644 --- a/lib/l10n/intl_zh.arb +++ b/lib/l10n/intl_zh.arb @@ -117,8 +117,9 @@ "noInterface": "没有可用的接口", "lastTry": "最后尝试", "pingNoServer": "没有服务器可用于Ping\n请在服务器tab添加服务器后再试", - "backupTip": "导出的数据仅进行了简单加密,请妥善保管。\n恢复的数据(除了设置)不会覆盖现有数据。", + "backupTip": "导出的数据仅进行了简单加密,请妥善保管。\n除了设置项,恢复的数据不会覆盖现有数据。", "backup": "备份", + "restore": "恢复", "restoreSureWithDate": "确定恢复 {date} 的备份吗?", "backupVersionNotMatch": "备份版本不匹配,无法恢复", "invalidJson": "无效的json,存在格式问题", diff --git a/lib/view/page/backup.dart b/lib/view/page/backup.dart index 2442ca2d..798d11c3 100644 --- a/lib/view/page/backup.dart +++ b/lib/view/page/backup.dart @@ -4,8 +4,10 @@ import 'dart:convert'; import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; +import 'package:toolbox/core/extension/colorx.dart'; import 'package:toolbox/core/utils.dart'; import 'package:toolbox/data/model/app/backup.dart'; +import 'package:toolbox/data/res/color.dart'; import 'package:toolbox/data/res/font_style.dart'; import 'package:toolbox/data/store/private_key.dart'; import 'package:toolbox/data/store/server.dart'; @@ -13,7 +15,6 @@ import 'package:toolbox/data/store/setting.dart'; import 'package:toolbox/data/store/snippet.dart'; import 'package:toolbox/generated/l10n.dart'; import 'package:toolbox/locator.dart'; -import 'package:toolbox/view/widget/round_rect_card.dart'; const backupFormatVersion = 1; @@ -46,11 +47,14 @@ class BackupPage extends StatelessWidget { ), ), const SizedBox( - height: 77, + height: 107, ), - _buildCard(s.import, Icons.download, media, + _buildCard(s.restore, Icons.download, media, () => _showImportDialog(context, s)), - _buildCard(s.export, Icons.file_upload, media, + const SizedBox(height: 7), + const Divider(), + const SizedBox(height: 7), + _buildCard(s.backup, Icons.file_upload, media, () => _showExportDialog(context, s)) ], )), @@ -59,20 +63,27 @@ class BackupPage extends StatelessWidget { Widget _buildCard(String text, IconData icon, MediaQueryData media, FutureOr Function() onTap) { - return RoundRectCard(InkWell( - onTap: onTap, - child: SizedBox( - width: media.size.width * 0.77, - height: media.size.height * 0.17, - child: Column( + final priColor = primaryColor; + final textColor = priColor.isBrightColor ? Colors.black : Colors.white; + return GestureDetector( + onTap: onTap, + child: Container( + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(37), + color: priColor + ), + width: 87, + height: 37, + child: Row( mainAxisAlignment: MainAxisAlignment.center, children: [ - Icon(icon, size: media.size.height * 0.05), - const SizedBox(height: 10), - Text(text, style: TextStyle(fontSize: media.size.height * 0.02)), + Icon(icon, color: textColor,), + const SizedBox(width: 7), + Text(text, style: TextStyle(color: textColor)), ], ), - ))); + ), + ); } Future _showExportDialog(BuildContext context, S s) async { diff --git a/macos/Runner.xcodeproj/project.pbxproj b/macos/Runner.xcodeproj/project.pbxproj index 74ef281b..2933d426 100644 --- a/macos/Runner.xcodeproj/project.pbxproj +++ b/macos/Runner.xcodeproj/project.pbxproj @@ -420,14 +420,14 @@ CODE_SIGN_ENTITLEMENTS = Runner/DebugProfile.entitlements; CODE_SIGN_STYLE = Automatic; COMBINE_HIDPI_IMAGES = YES; - CURRENT_PROJECT_VERSION = 138; + CURRENT_PROJECT_VERSION = 140; DEVELOPMENT_TEAM = BA88US33G6; INFOPLIST_FILE = Runner/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/../Frameworks", ); - MARKETING_VERSION = 1.0.138; + MARKETING_VERSION = 1.0.140; PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox; PROVISIONING_PROFILE_SPECIFIER = ""; SWIFT_VERSION = 5.0; @@ -550,14 +550,14 @@ CODE_SIGN_ENTITLEMENTS = Runner/DebugProfile.entitlements; CODE_SIGN_STYLE = Automatic; COMBINE_HIDPI_IMAGES = YES; - CURRENT_PROJECT_VERSION = 138; + CURRENT_PROJECT_VERSION = 140; DEVELOPMENT_TEAM = BA88US33G6; INFOPLIST_FILE = Runner/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/../Frameworks", ); - MARKETING_VERSION = 1.0.138; + MARKETING_VERSION = 1.0.140; PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox; PROVISIONING_PROFILE_SPECIFIER = ""; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; @@ -574,14 +574,14 @@ CODE_SIGN_ENTITLEMENTS = Runner/Release.entitlements; CODE_SIGN_STYLE = Automatic; COMBINE_HIDPI_IMAGES = YES; - CURRENT_PROJECT_VERSION = 138; + CURRENT_PROJECT_VERSION = 140; DEVELOPMENT_TEAM = BA88US33G6; INFOPLIST_FILE = Runner/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/../Frameworks", ); - MARKETING_VERSION = 1.0.138; + MARKETING_VERSION = 1.0.140; PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox; PROVISIONING_PROFILE_SPECIFIER = ""; SWIFT_VERSION = 5.0;