mirror of
https://github.com/lollipopkit/flutter_server_box.git
synced 2025-12-17 07:14:28 +01:00
new: delete all servers btn
This commit is contained in:
@@ -312,6 +312,12 @@ abstract class S {
|
||||
/// **'Delete'**
|
||||
String get delete;
|
||||
|
||||
/// No description provided for @deleteAllServers.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Delete all servers'**
|
||||
String get deleteAllServers;
|
||||
|
||||
/// No description provided for @disabled.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
|
||||
@@ -112,6 +112,9 @@ class SDe extends S {
|
||||
@override
|
||||
String get delete => 'Löschen';
|
||||
|
||||
@override
|
||||
String get deleteAllServers => 'Alle Server löschen';
|
||||
|
||||
@override
|
||||
String get disabled => 'Behinderte';
|
||||
|
||||
|
||||
@@ -112,6 +112,9 @@ class SEn extends S {
|
||||
@override
|
||||
String get delete => 'Delete';
|
||||
|
||||
@override
|
||||
String get deleteAllServers => 'Delete all servers';
|
||||
|
||||
@override
|
||||
String get disabled => 'Disabled';
|
||||
|
||||
|
||||
@@ -112,6 +112,9 @@ class SZh extends S {
|
||||
@override
|
||||
String get delete => '删除';
|
||||
|
||||
@override
|
||||
String get deleteAllServers => '删除所有服务器';
|
||||
|
||||
@override
|
||||
String get disabled => '已禁用';
|
||||
|
||||
@@ -782,6 +785,9 @@ class SZhTw extends SZh {
|
||||
@override
|
||||
String get delete => '刪除';
|
||||
|
||||
@override
|
||||
String get deleteAllServers => '刪除所有服務器';
|
||||
|
||||
@override
|
||||
String get disabled => '已禁用';
|
||||
|
||||
|
||||
@@ -470,7 +470,7 @@
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements;
|
||||
CURRENT_PROJECT_VERSION = 387;
|
||||
CURRENT_PROJECT_VERSION = 388;
|
||||
DEVELOPMENT_TEAM = BA88US33G6;
|
||||
ENABLE_BITCODE = NO;
|
||||
INFOPLIST_FILE = "Runner/Info-$(CONFIGURATION).plist";
|
||||
@@ -478,7 +478,7 @@
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
);
|
||||
MARKETING_VERSION = 1.0.387;
|
||||
MARKETING_VERSION = 1.0.388;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
|
||||
@@ -602,7 +602,7 @@
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements;
|
||||
CURRENT_PROJECT_VERSION = 387;
|
||||
CURRENT_PROJECT_VERSION = 388;
|
||||
DEVELOPMENT_TEAM = BA88US33G6;
|
||||
ENABLE_BITCODE = NO;
|
||||
INFOPLIST_FILE = "Runner/Info-$(CONFIGURATION).plist";
|
||||
@@ -610,7 +610,7 @@
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
);
|
||||
MARKETING_VERSION = 1.0.387;
|
||||
MARKETING_VERSION = 1.0.388;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
|
||||
@@ -628,7 +628,7 @@
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements;
|
||||
CURRENT_PROJECT_VERSION = 387;
|
||||
CURRENT_PROJECT_VERSION = 388;
|
||||
DEVELOPMENT_TEAM = BA88US33G6;
|
||||
ENABLE_BITCODE = NO;
|
||||
INFOPLIST_FILE = "Runner/Info-$(CONFIGURATION).plist";
|
||||
@@ -636,7 +636,7 @@
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
);
|
||||
MARKETING_VERSION = 1.0.387;
|
||||
MARKETING_VERSION = 1.0.388;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
|
||||
@@ -657,7 +657,7 @@
|
||||
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
|
||||
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
CURRENT_PROJECT_VERSION = 387;
|
||||
CURRENT_PROJECT_VERSION = 388;
|
||||
DEVELOPMENT_TEAM = BA88US33G6;
|
||||
GCC_C_LANGUAGE_STANDARD = gnu11;
|
||||
GENERATE_INFOPLIST_FILE = YES;
|
||||
@@ -670,7 +670,7 @@
|
||||
"@executable_path/Frameworks",
|
||||
"@executable_path/../../Frameworks",
|
||||
);
|
||||
MARKETING_VERSION = 1.0.387;
|
||||
MARKETING_VERSION = 1.0.388;
|
||||
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
|
||||
MTL_FAST_MATH = YES;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox.StatusWidget;
|
||||
@@ -696,7 +696,7 @@
|
||||
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
|
||||
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
CURRENT_PROJECT_VERSION = 387;
|
||||
CURRENT_PROJECT_VERSION = 388;
|
||||
DEVELOPMENT_TEAM = BA88US33G6;
|
||||
GCC_C_LANGUAGE_STANDARD = gnu11;
|
||||
GENERATE_INFOPLIST_FILE = YES;
|
||||
@@ -709,7 +709,7 @@
|
||||
"@executable_path/Frameworks",
|
||||
"@executable_path/../../Frameworks",
|
||||
);
|
||||
MARKETING_VERSION = 1.0.387;
|
||||
MARKETING_VERSION = 1.0.388;
|
||||
MTL_FAST_MATH = YES;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox.StatusWidget;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
@@ -732,7 +732,7 @@
|
||||
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
|
||||
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
CURRENT_PROJECT_VERSION = 387;
|
||||
CURRENT_PROJECT_VERSION = 388;
|
||||
DEVELOPMENT_TEAM = BA88US33G6;
|
||||
GCC_C_LANGUAGE_STANDARD = gnu11;
|
||||
GENERATE_INFOPLIST_FILE = YES;
|
||||
@@ -745,7 +745,7 @@
|
||||
"@executable_path/Frameworks",
|
||||
"@executable_path/../../Frameworks",
|
||||
);
|
||||
MARKETING_VERSION = 1.0.387;
|
||||
MARKETING_VERSION = 1.0.388;
|
||||
MTL_FAST_MATH = YES;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox.StatusWidget;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
|
||||
@@ -29,7 +29,7 @@ class ServerPrivateInfo {
|
||||
required this.pwd,
|
||||
this.pubKeyId,
|
||||
this.tags,
|
||||
}) : id = '$name<$user@$ip:$port>';
|
||||
}) : id = '$user@$ip:$port';
|
||||
|
||||
ServerPrivateInfo.fromJson(Map<String, dynamic> json) {
|
||||
name = json["name"].toString();
|
||||
|
||||
@@ -167,6 +167,15 @@ class ServerProvider extends BusyProvider {
|
||||
_serverStore.delete(id);
|
||||
}
|
||||
|
||||
void deleteAll() {
|
||||
_servers.clear();
|
||||
_serverOrder.clear();
|
||||
_settingStore.serverOrder.put(_serverOrder);
|
||||
_updateTags();
|
||||
notifyListeners();
|
||||
_serverStore.deleteAll();
|
||||
}
|
||||
|
||||
Future<void> updateServer(
|
||||
ServerPrivateInfo old,
|
||||
ServerPrivateInfo newSpi,
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
|
||||
class BuildData {
|
||||
static const String name = "ServerBox";
|
||||
static const int build = 387;
|
||||
static const int build = 388;
|
||||
static const String engine = "3.10.6";
|
||||
static const String buildAt = "2023-07-21 18:06:24.239059";
|
||||
static const int modifications = 2;
|
||||
static const String buildAt = "2023-07-27 13:03:33.193528";
|
||||
static const int modifications = 16;
|
||||
}
|
||||
|
||||
@@ -22,6 +22,10 @@ class ServerStore extends PersistentStore {
|
||||
box.delete(id);
|
||||
}
|
||||
|
||||
void deleteAll() {
|
||||
box.clear();
|
||||
}
|
||||
|
||||
void update(ServerPrivateInfo old, ServerPrivateInfo newInfo) {
|
||||
if (!have(old)) {
|
||||
throw Exception('Old spi: $old not found');
|
||||
|
||||
@@ -97,5 +97,6 @@ class SettingStore extends PersistentStore {
|
||||
property('netViewType', defaultValue: NetViewType.speed);
|
||||
|
||||
// Only valid on iOS
|
||||
StoreProperty<bool> get autoUpdateHomeWidget => property('autoUpdateHomeWidget', defaultValue: isIOS);
|
||||
StoreProperty<bool> get autoUpdateHomeWidget =>
|
||||
property('autoUpdateHomeWidget', defaultValue: isIOS);
|
||||
}
|
||||
|
||||
@@ -36,6 +36,7 @@
|
||||
"debug": "Debug",
|
||||
"decode": "Decode",
|
||||
"delete": "Löschen",
|
||||
"deleteAllServers": "Alle Server löschen",
|
||||
"disabled": "Behinderte",
|
||||
"disconnected": "Disconnected",
|
||||
"diskIgnorePath": "Pfad für Datenträger ignorieren",
|
||||
|
||||
@@ -36,6 +36,7 @@
|
||||
"debug": "Debug",
|
||||
"decode": "Decode",
|
||||
"delete": "Delete",
|
||||
"deleteAllServers": "Delete all servers",
|
||||
"disabled": "Disabled",
|
||||
"disconnected": "Disconnected",
|
||||
"diskIgnorePath": "Ignore path for disk",
|
||||
|
||||
@@ -36,6 +36,7 @@
|
||||
"debug": "调试",
|
||||
"decode": "解码",
|
||||
"delete": "删除",
|
||||
"deleteAllServers": "删除所有服务器",
|
||||
"disabled": "已禁用",
|
||||
"disconnected": "连接断开",
|
||||
"diskIgnorePath": "忽略的磁盘路径",
|
||||
|
||||
@@ -36,6 +36,7 @@
|
||||
"debug": "調試",
|
||||
"decode": "解碼",
|
||||
"delete": "刪除",
|
||||
"deleteAllServers": "刪除所有服務器",
|
||||
"disabled": "已禁用",
|
||||
"disconnected": "連接斷開",
|
||||
"diskIgnorePath": "忽略的磁盤路徑",
|
||||
|
||||
@@ -109,14 +109,14 @@ class _SettingPageState extends State<SettingPage> {
|
||||
children: [
|
||||
_buildTitle('App'),
|
||||
_buildApp(),
|
||||
_buildTitle(_s.fullScreen),
|
||||
_buildFullScreen(),
|
||||
_buildTitle(_s.server),
|
||||
_buildServer(),
|
||||
_buildTitle('SSH'),
|
||||
_buildSSH(),
|
||||
_buildTitle(_s.editor),
|
||||
_buildEditor(),
|
||||
_buildTitle(_s.fullScreen),
|
||||
_buildFullScreen(),
|
||||
const SizedBox(height: 37),
|
||||
],
|
||||
),
|
||||
@@ -173,6 +173,7 @@ class _SettingPageState extends State<SettingPage> {
|
||||
_buildUpdateInterval(),
|
||||
_buildMaxRetry(),
|
||||
_buildDiskIgnorePath(),
|
||||
_buildDeleteAllServers(),
|
||||
].map((e) => RoundRectCard(e)).toList(),
|
||||
);
|
||||
}
|
||||
@@ -801,6 +802,7 @@ class _SettingPageState extends State<SettingPage> {
|
||||
'none',
|
||||
];
|
||||
if (names.length != TextInputType.values.length) {
|
||||
// This notify me to update the code
|
||||
throw Exception('names.length != TextInputType.values.length');
|
||||
}
|
||||
final items = TextInputType.values.map(
|
||||
@@ -937,4 +939,22 @@ class _SettingPageState extends State<SettingPage> {
|
||||
trailing: buildSwitch(context, _setting.autoUpdateHomeWidget),
|
||||
);
|
||||
}
|
||||
|
||||
Widget _buildDeleteAllServers() {
|
||||
return ListTile(
|
||||
title: Text(_s.deleteAllServers),
|
||||
trailing: const Icon(Icons.delete_forever),
|
||||
onTap: () => showRoundDialog(
|
||||
context: context,
|
||||
title: Text(_s.attention),
|
||||
child: Text(_s.sureDelete(_s.all)),
|
||||
actions: [
|
||||
TextButton(
|
||||
onPressed: () => _serverProvider.deleteAll(),
|
||||
child: Text(_s.ok),
|
||||
)
|
||||
],
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -475,9 +475,9 @@
|
||||
baseConfigurationReference = C1C758C41C4E208965A68933 /* Pods-RunnerTests.debug.xcconfig */;
|
||||
buildSettings = {
|
||||
BUNDLE_LOADER = "$(TEST_HOST)";
|
||||
CURRENT_PROJECT_VERSION = 387;
|
||||
CURRENT_PROJECT_VERSION = 388;
|
||||
GENERATE_INFOPLIST_FILE = YES;
|
||||
MARKETING_VERSION = 1.0.387;
|
||||
MARKETING_VERSION = 1.0.388;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = tech.lolli.serverBox.RunnerTests;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SWIFT_VERSION = 5.0;
|
||||
@@ -490,9 +490,9 @@
|
||||
baseConfigurationReference = 15AF97DF993E8968098D6EBE /* Pods-RunnerTests.release.xcconfig */;
|
||||
buildSettings = {
|
||||
BUNDLE_LOADER = "$(TEST_HOST)";
|
||||
CURRENT_PROJECT_VERSION = 387;
|
||||
CURRENT_PROJECT_VERSION = 388;
|
||||
GENERATE_INFOPLIST_FILE = YES;
|
||||
MARKETING_VERSION = 1.0.387;
|
||||
MARKETING_VERSION = 1.0.388;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = tech.lolli.serverBox.RunnerTests;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SWIFT_VERSION = 5.0;
|
||||
@@ -505,9 +505,9 @@
|
||||
baseConfigurationReference = 7CFA7DE7FABA75685DFB6948 /* Pods-RunnerTests.profile.xcconfig */;
|
||||
buildSettings = {
|
||||
BUNDLE_LOADER = "$(TEST_HOST)";
|
||||
CURRENT_PROJECT_VERSION = 387;
|
||||
CURRENT_PROJECT_VERSION = 388;
|
||||
GENERATE_INFOPLIST_FILE = YES;
|
||||
MARKETING_VERSION = 1.0.387;
|
||||
MARKETING_VERSION = 1.0.388;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = tech.lolli.serverBox.RunnerTests;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SWIFT_VERSION = 5.0;
|
||||
|
||||
Reference in New Issue
Block a user