- hideTitleBar tip
- android home widget err handle
- sftp loading dialog
This commit is contained in:
lollipopkit
2024-05-22 20:45:11 +08:00
parent 9304a0377b
commit 7c3818bc51
17 changed files with 131 additions and 78 deletions

View File

@@ -66,32 +66,44 @@ class HomeWidget : AppWidgetProvider() {
} }
GlobalScope.launch(Dispatchers.IO) { GlobalScope.launch(Dispatchers.IO) {
val jsonStr = URL(url).readText() try {
val jsonObject = JSONObject(jsonStr) val jsonStr = URL(url).readText()
val data = jsonObject.getJSONObject("data") val jsonObject = JSONObject(jsonStr)
val server = data.getString("name") val data = jsonObject.getJSONObject("data")
val cpu = data.getString("cpu") val server = data.getString("name")
val mem = data.getString("mem") val cpu = data.getString("cpu")
val disk = data.getString("disk") val mem = data.getString("mem")
val net = data.getString("net") val disk = data.getString("disk")
val net = data.getString("net")
GlobalScope.launch(Dispatchers.Main) main@ { GlobalScope.launch(Dispatchers.Main) main@ {
// mem or disk is empty -> get status failed // mem or disk is empty -> get status failed
// (cpu | net) isEmpty -> data is not ready // (cpu | net) isEmpty -> data is not ready
if (mem.isEmpty() || disk.isEmpty()) { if (mem.isEmpty() || disk.isEmpty()) {
return@main return@main
}
views.setTextViewText(R.id.widget_name, server)
views.setTextViewText(R.id.widget_cpu, cpu)
views.setTextViewText(R.id.widget_mem, mem)
views.setTextViewText(R.id.widget_disk, disk)
views.setTextViewText(R.id.widget_net, net)
val timeStr = android.text.format.DateFormat.format("HH:mm", java.util.Date()).toString()
views.setTextViewText(R.id.widget_time, timeStr)
appWidgetManager.updateAppWidget(appWidgetId, views)
}
} catch (e: Exception) {
GlobalScope.launch(Dispatchers.Main) main@ {
views.setViewVisibility(R.id.widget_cpu_label, View.INVISIBLE)
views.setViewVisibility(R.id.widget_mem_label, View.INVISIBLE)
views.setViewVisibility(R.id.widget_disk_label, View.INVISIBLE)
views.setViewVisibility(R.id.widget_net_label, View.INVISIBLE)
views.setTextViewText(R.id.widget_name, "ID: $appWidgetId")
views.setTextViewText(R.id.widget_mem, e.localizedMessage)
appWidgetManager.updateAppWidget(appWidgetId, views)
} }
views.setTextViewText(R.id.widget_name, server)
views.setTextViewText(R.id.widget_cpu, cpu)
views.setTextViewText(R.id.widget_mem, mem)
views.setTextViewText(R.id.widget_disk, disk)
views.setTextViewText(R.id.widget_net, net)
val timeStr = android.text.format.DateFormat.format("HH:mm", java.util.Date()).toString()
views.setTextViewText(R.id.widget_time, timeStr)
appWidgetManager.updateAppWidget(appWidgetId, views)
} }
} }
} }

View File

@@ -690,7 +690,7 @@
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_MODULES = YES;
CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements; CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements;
CURRENT_PROJECT_VERSION = 904; CURRENT_PROJECT_VERSION = 907;
DEVELOPMENT_TEAM = BA88US33G6; DEVELOPMENT_TEAM = BA88US33G6;
ENABLE_BITCODE = NO; ENABLE_BITCODE = NO;
INFOPLIST_FILE = "Runner/Info-$(CONFIGURATION).plist"; INFOPLIST_FILE = "Runner/Info-$(CONFIGURATION).plist";
@@ -700,7 +700,7 @@
"$(inherited)", "$(inherited)",
"@executable_path/Frameworks", "@executable_path/Frameworks",
); );
MARKETING_VERSION = 1.0.904; MARKETING_VERSION = 1.0.907;
PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox; PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox;
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
@@ -826,7 +826,7 @@
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_MODULES = YES;
CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements; CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements;
CURRENT_PROJECT_VERSION = 904; CURRENT_PROJECT_VERSION = 907;
DEVELOPMENT_TEAM = BA88US33G6; DEVELOPMENT_TEAM = BA88US33G6;
ENABLE_BITCODE = NO; ENABLE_BITCODE = NO;
INFOPLIST_FILE = "Runner/Info-$(CONFIGURATION).plist"; INFOPLIST_FILE = "Runner/Info-$(CONFIGURATION).plist";
@@ -836,7 +836,7 @@
"$(inherited)", "$(inherited)",
"@executable_path/Frameworks", "@executable_path/Frameworks",
); );
MARKETING_VERSION = 1.0.904; MARKETING_VERSION = 1.0.907;
PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox; PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox;
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
@@ -854,7 +854,7 @@
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_MODULES = YES;
CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements; CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements;
CURRENT_PROJECT_VERSION = 904; CURRENT_PROJECT_VERSION = 907;
DEVELOPMENT_TEAM = BA88US33G6; DEVELOPMENT_TEAM = BA88US33G6;
ENABLE_BITCODE = NO; ENABLE_BITCODE = NO;
INFOPLIST_FILE = "Runner/Info-$(CONFIGURATION).plist"; INFOPLIST_FILE = "Runner/Info-$(CONFIGURATION).plist";
@@ -864,7 +864,7 @@
"$(inherited)", "$(inherited)",
"@executable_path/Frameworks", "@executable_path/Frameworks",
); );
MARKETING_VERSION = 1.0.904; MARKETING_VERSION = 1.0.907;
PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox; PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox;
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
@@ -885,7 +885,7 @@
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
CODE_SIGN_STYLE = Automatic; CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 904; CURRENT_PROJECT_VERSION = 907;
DEVELOPMENT_TEAM = BA88US33G6; DEVELOPMENT_TEAM = BA88US33G6;
GCC_C_LANGUAGE_STANDARD = gnu11; GCC_C_LANGUAGE_STANDARD = gnu11;
GENERATE_INFOPLIST_FILE = YES; GENERATE_INFOPLIST_FILE = YES;
@@ -898,7 +898,7 @@
"@executable_path/Frameworks", "@executable_path/Frameworks",
"@executable_path/../../Frameworks", "@executable_path/../../Frameworks",
); );
MARKETING_VERSION = 1.0.904; MARKETING_VERSION = 1.0.907;
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
MTL_FAST_MATH = YES; MTL_FAST_MATH = YES;
PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox.StatusWidget; PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox.StatusWidget;
@@ -924,7 +924,7 @@
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
CODE_SIGN_STYLE = Automatic; CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 904; CURRENT_PROJECT_VERSION = 907;
DEVELOPMENT_TEAM = BA88US33G6; DEVELOPMENT_TEAM = BA88US33G6;
GCC_C_LANGUAGE_STANDARD = gnu11; GCC_C_LANGUAGE_STANDARD = gnu11;
GENERATE_INFOPLIST_FILE = YES; GENERATE_INFOPLIST_FILE = YES;
@@ -937,7 +937,7 @@
"@executable_path/Frameworks", "@executable_path/Frameworks",
"@executable_path/../../Frameworks", "@executable_path/../../Frameworks",
); );
MARKETING_VERSION = 1.0.904; MARKETING_VERSION = 1.0.907;
MTL_FAST_MATH = YES; MTL_FAST_MATH = YES;
PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox.StatusWidget; PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox.StatusWidget;
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = "$(TARGET_NAME)";
@@ -960,7 +960,7 @@
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
CODE_SIGN_STYLE = Automatic; CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 904; CURRENT_PROJECT_VERSION = 907;
DEVELOPMENT_TEAM = BA88US33G6; DEVELOPMENT_TEAM = BA88US33G6;
GCC_C_LANGUAGE_STANDARD = gnu11; GCC_C_LANGUAGE_STANDARD = gnu11;
GENERATE_INFOPLIST_FILE = YES; GENERATE_INFOPLIST_FILE = YES;
@@ -973,7 +973,7 @@
"@executable_path/Frameworks", "@executable_path/Frameworks",
"@executable_path/../../Frameworks", "@executable_path/../../Frameworks",
); );
MARKETING_VERSION = 1.0.904; MARKETING_VERSION = 1.0.907;
MTL_FAST_MATH = YES; MTL_FAST_MATH = YES;
PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox.StatusWidget; PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox.StatusWidget;
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = "$(TARGET_NAME)";
@@ -996,7 +996,7 @@
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
CODE_SIGN_STYLE = Automatic; CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 904; CURRENT_PROJECT_VERSION = 907;
DEVELOPMENT_ASSET_PATHS = ""; DEVELOPMENT_ASSET_PATHS = "";
DEVELOPMENT_TEAM = BA88US33G6; DEVELOPMENT_TEAM = BA88US33G6;
ENABLE_PREVIEWS = YES; ENABLE_PREVIEWS = YES;
@@ -1008,7 +1008,7 @@
"$(inherited)", "$(inherited)",
"@executable_path/Frameworks", "@executable_path/Frameworks",
); );
MARKETING_VERSION = 1.0.904; MARKETING_VERSION = 1.0.907;
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
MTL_FAST_MATH = YES; MTL_FAST_MATH = YES;
PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox.WatchEnd; PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox.WatchEnd;
@@ -1037,7 +1037,7 @@
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
CODE_SIGN_STYLE = Automatic; CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 904; CURRENT_PROJECT_VERSION = 907;
DEVELOPMENT_ASSET_PATHS = ""; DEVELOPMENT_ASSET_PATHS = "";
DEVELOPMENT_TEAM = BA88US33G6; DEVELOPMENT_TEAM = BA88US33G6;
ENABLE_PREVIEWS = YES; ENABLE_PREVIEWS = YES;
@@ -1049,7 +1049,7 @@
"$(inherited)", "$(inherited)",
"@executable_path/Frameworks", "@executable_path/Frameworks",
); );
MARKETING_VERSION = 1.0.904; MARKETING_VERSION = 1.0.907;
MTL_FAST_MATH = YES; MTL_FAST_MATH = YES;
PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox.WatchEnd; PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox.WatchEnd;
PRODUCT_NAME = ServerBox; PRODUCT_NAME = ServerBox;
@@ -1075,7 +1075,7 @@
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
CODE_SIGN_STYLE = Automatic; CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 904; CURRENT_PROJECT_VERSION = 907;
DEVELOPMENT_ASSET_PATHS = ""; DEVELOPMENT_ASSET_PATHS = "";
DEVELOPMENT_TEAM = BA88US33G6; DEVELOPMENT_TEAM = BA88US33G6;
ENABLE_PREVIEWS = YES; ENABLE_PREVIEWS = YES;
@@ -1087,7 +1087,7 @@
"$(inherited)", "$(inherited)",
"@executable_path/Frameworks", "@executable_path/Frameworks",
); );
MARKETING_VERSION = 1.0.904; MARKETING_VERSION = 1.0.907;
MTL_FAST_MATH = YES; MTL_FAST_MATH = YES;
PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox.WatchEnd; PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox.WatchEnd;
PRODUCT_NAME = ServerBox; PRODUCT_NAME = ServerBox;

View File

@@ -2,9 +2,9 @@
class BuildData { class BuildData {
static const String name = "ServerBox"; static const String name = "ServerBox";
static const int build = 904; static const int build = 907;
static const String engine = "3.22.0"; static const String engine = "3.22.0";
static const String buildAt = "2024-05-20 16:10:12"; static const String buildAt = "2024-05-22 19:34:37";
static const int modifications = 11; static const int modifications = 14;
static const int script = 47; static const int script = 48;
} }

View File

@@ -121,6 +121,7 @@
"goBackQ": "Zurückkommen?", "goBackQ": "Zurückkommen?",
"goto": "Pfad öffnen", "goto": "Pfad öffnen",
"hideTitleBar": "Titelleiste ausblenden", "hideTitleBar": "Titelleiste ausblenden",
"hideTitleBarTip": "Nach dem Einschalten halten Sie bitte die drei Tasten in der oberen rechten Ecke gedrückt, um sie zu ziehen.",
"highlight": "Code highlight", "highlight": "Code highlight",
"homeWidgetUrlConfig": "Home-Widget-Link konfigurieren", "homeWidgetUrlConfig": "Home-Widget-Link konfigurieren",
"host": "Host", "host": "Host",

View File

@@ -121,6 +121,7 @@
"goBackQ": "Go back?", "goBackQ": "Go back?",
"goto": "Go to", "goto": "Go to",
"hideTitleBar": "Hide title bar", "hideTitleBar": "Hide title bar",
"hideTitleBarTip": "After turning it on, please hold down the three buttons in the top right corner to drag.",
"highlight": "Code highlight", "highlight": "Code highlight",
"homeWidgetUrlConfig": "Config home widget url", "homeWidgetUrlConfig": "Config home widget url",
"host": "Host", "host": "Host",

View File

@@ -121,6 +121,7 @@
"goBackQ": "¿Regresar?", "goBackQ": "¿Regresar?",
"goto": "Ir a", "goto": "Ir a",
"hideTitleBar": "Ocultar barra de título", "hideTitleBar": "Ocultar barra de título",
"hideTitleBarTip": "Después de encenderlo, mantenga presionados los tres botones en la esquina superior derecha para arrastrar.",
"highlight": "Resaltar código", "highlight": "Resaltar código",
"homeWidgetUrlConfig": "Configuración de URL del widget de inicio", "homeWidgetUrlConfig": "Configuración de URL del widget de inicio",
"host": "Anfitrión", "host": "Anfitrión",

View File

@@ -121,6 +121,7 @@
"goBackQ": "Revenir en arrière ?", "goBackQ": "Revenir en arrière ?",
"goto": "Aller à", "goto": "Aller à",
"hideTitleBar": "Masquer la barre de titre", "hideTitleBar": "Masquer la barre de titre",
"hideTitleBarTip": "Après l'avoir allumé, veuillez maintenir les trois boutons dans le coin supérieur droit pour les faire glisser.",
"highlight": "Mise en surbrillance du code", "highlight": "Mise en surbrillance du code",
"homeWidgetUrlConfig": "Configurer l'URL du widget d'accueil", "homeWidgetUrlConfig": "Configurer l'URL du widget d'accueil",
"host": "Hôte", "host": "Hôte",

View File

@@ -121,6 +121,7 @@
"goBackQ": "Datang kembali?", "goBackQ": "Datang kembali?",
"goto": "Pergi ke", "goto": "Pergi ke",
"hideTitleBar": "Sembunyikan bilah judul", "hideTitleBar": "Sembunyikan bilah judul",
"hideTitleBarTip": "Setelah dinyalakan, tekan dan tahan tiga tombol di sudut kanan atas untuk menyeret.",
"highlight": "Sorotan kode", "highlight": "Sorotan kode",
"homeWidgetUrlConfig": "Konfigurasi URL Widget Rumah", "homeWidgetUrlConfig": "Konfigurasi URL Widget Rumah",
"host": "Host", "host": "Host",

View File

@@ -121,6 +121,7 @@
"goBackQ": "戻りますか?", "goBackQ": "戻りますか?",
"goto": "移動", "goto": "移動",
"hideTitleBar": "タイトルバーを非表示にする", "hideTitleBar": "タイトルバーを非表示にする",
"hideTitleBarTip": "電源を入れた後、右上隅の3つのボタンを押し続けてドラッグしてください。",
"highlight": "コードハイライト", "highlight": "コードハイライト",
"homeWidgetUrlConfig": "ホームウィジェットURL設定", "homeWidgetUrlConfig": "ホームウィジェットURL設定",
"host": "ホスト", "host": "ホスト",

View File

@@ -121,6 +121,7 @@
"goBackQ": "Terug gaan?", "goBackQ": "Terug gaan?",
"goto": "Ga naar", "goto": "Ga naar",
"hideTitleBar": "Titelbalk verbergen", "hideTitleBar": "Titelbalk verbergen",
"hideTitleBarTip": "Houd na het inschakelen de drie knoppen in de rechterbovenhoek ingedrukt om te slepen.",
"highlight": "Code-highlight", "highlight": "Code-highlight",
"homeWidgetUrlConfig": "Home-widget-url configureren", "homeWidgetUrlConfig": "Home-widget-url configureren",
"host": "Host", "host": "Host",

View File

@@ -121,6 +121,7 @@
"goBackQ": "Voltar?", "goBackQ": "Voltar?",
"goto": "Ir para", "goto": "Ir para",
"hideTitleBar": "Ocultar barra de título", "hideTitleBar": "Ocultar barra de título",
"hideTitleBarTip": "Após ligar, segure os três botões no canto superior direito para arrastar.",
"highlight": "Destaque de código", "highlight": "Destaque de código",
"homeWidgetUrlConfig": "Configuração de URL do widget da tela inicial", "homeWidgetUrlConfig": "Configuração de URL do widget da tela inicial",
"host": "Host", "host": "Host",

View File

@@ -121,6 +121,7 @@
"goBackQ": "Вернуться?", "goBackQ": "Вернуться?",
"goto": "перейти к", "goto": "перейти к",
"hideTitleBar": "Скрыть заголовок", "hideTitleBar": "Скрыть заголовок",
"hideTitleBarTip": "После включения удерживайте три кнопки в правом верхнем углу, чтобы перетаскивать.",
"highlight": "подсветка кода", "highlight": "подсветка кода",
"homeWidgetUrlConfig": "конфигурация URL виджета домашнего экрана", "homeWidgetUrlConfig": "конфигурация URL виджета домашнего экрана",
"host": "хост", "host": "хост",

View File

@@ -121,6 +121,7 @@
"goBackQ": "返回?", "goBackQ": "返回?",
"goto": "前往", "goto": "前往",
"hideTitleBar": "隐藏标题栏", "hideTitleBar": "隐藏标题栏",
"hideTitleBarTip": "开启后请按住右上角三个按钮来拖动",
"highlight": "代码高亮", "highlight": "代码高亮",
"homeWidgetUrlConfig": "桌面部件链接配置", "homeWidgetUrlConfig": "桌面部件链接配置",
"host": "主机", "host": "主机",

View File

@@ -121,6 +121,7 @@
"goBackQ": "返回?", "goBackQ": "返回?",
"goto": "前往", "goto": "前往",
"hideTitleBar": "隱藏標題欄", "hideTitleBar": "隱藏標題欄",
"hideTitleBarTip": "開啟後請按住右上角三個按鈕來拖動",
"highlight": "代碼高亮", "highlight": "代碼高亮",
"homeWidgetUrlConfig": "桌面部件鏈接配置", "homeWidgetUrlConfig": "桌面部件鏈接配置",
"host": "主機", "host": "主機",

View File

@@ -1088,6 +1088,7 @@ class _SettingPageState extends State<SettingPage> {
Widget _buildHideTitleBar() { Widget _buildHideTitleBar() {
return ListTile( return ListTile(
title: Text(l10n.hideTitleBar), title: Text(l10n.hideTitleBar),
subtitle: Text(l10n.hideTitleBarTip, style: UIs.textGrey),
trailing: StoreSwitch(prop: _setting.hideTitleBar), trailing: StoreSwitch(prop: _setting.hideTitleBar),
); );
} }

View File

@@ -428,8 +428,12 @@ class _SftpPageState extends State<SftpPage> with AfterLayoutMixin {
final result = await AppRoutes.editor(path: localPath).go<bool>(context); final result = await AppRoutes.editor(path: localPath).go<bool>(context);
if (result != null && result) { if (result != null && result) {
Pros.sftp Pros.sftp.add(SftpReq(
.add(SftpReq(req.spi, remotePath, localPath, SftpReqType.upload)); req.spi,
remotePath,
localPath,
SftpReqType.upload,
));
context.showSnackBar(l10n.added2List); context.showSnackBar(l10n.added2List);
} }
} }
@@ -471,8 +475,10 @@ class _SftpPageState extends State<SftpPage> with AfterLayoutMixin {
final useRmr = Stores.setting.sftpRmrDir.fetch(); final useRmr = Stores.setting.sftpRmrDir.fetch();
final text = () { final text = () {
if (isDir && !useRmr) { if (isDir && !useRmr) {
return l10n return l10n.askContinue(
.askContinue('${l10n.dirEmpty}\n${l10n.delete} ${file.filename}'); '${l10n.dirEmpty}\n${l10n.delete} '
'${file.filename}',
);
} }
return l10n.askContinue('${l10n.delete} ${file.filename}'); return l10n.askContinue('${l10n.delete} ${file.filename}');
}(); }();
@@ -498,20 +504,10 @@ class _SftpPageState extends State<SftpPage> with AfterLayoutMixin {
await _status.client!.remove(remotePath); await _status.client!.remove(remotePath);
} }
}); });
} catch (e) { _listDir();
context.showRoundDialog( } catch (e, s) {
title: l10n.error, _showErrDialog(context, e, 'Delete', s);
child: Text(e.toString()),
actions: [
TextButton(
onPressed: () => context.pop(),
child: Text(l10n.ok),
)
],
);
return;
} }
_listDir();
}, },
child: Text(l10n.delete, style: UIs.textRed), child: Text(l10n.delete, style: UIs.textRed),
), ),
@@ -549,10 +545,16 @@ class _SftpPageState extends State<SftpPage> with AfterLayoutMixin {
); );
return; return;
} }
final dir = '${_status.path!.path}/${textController.text}';
await _status.client!.mkdir(dir);
context.pop(); context.pop();
_listDir(); try {
await context.showLoadingDialog(fn: () async {
final dir = '${_status.path!.path}/${textController.text}';
await _status.client!.mkdir(dir);
});
_listDir();
} catch (e, s) {
_showErrDialog(context, e, 'Create folder', s);
}
}, },
child: Text(l10n.ok, style: UIs.textRed), child: Text(l10n.ok, style: UIs.textRed),
), ),
@@ -588,10 +590,15 @@ class _SftpPageState extends State<SftpPage> with AfterLayoutMixin {
return; return;
} }
context.pop(); context.pop();
final path = '${_status.path!.path}/${textController.text}'; try {
await context.showLoadingDialog( await context.showLoadingDialog(fn: () async {
fn: () => _client!.run('touch "$path"')); final path = '${_status.path!.path}/${textController.text}';
_listDir(); await _client!.run('touch "$path"');
});
_listDir();
} catch (e, s) {
_showErrDialog(context, e, 'Create file', s);
}
}, },
child: Text(l10n.ok, style: UIs.textRed), child: Text(l10n.ok, style: UIs.textRed),
), ),
@@ -627,9 +634,16 @@ class _SftpPageState extends State<SftpPage> with AfterLayoutMixin {
); );
return; return;
} }
await _status.client?.rename(file.filename, textController.text);
context.pop(); context.pop();
_listDir(); try {
await context.showLoadingDialog(fn: () async {
final newName = textController.text;
await _status.client?.rename(file.filename, newName);
});
_listDir();
} catch (e, s) {
_showErrDialog(context, e, 'Rename', s);
}
}, },
child: Text(l10n.rename, style: UIs.textRed), child: Text(l10n.rename, style: UIs.textRed),
), ),
@@ -658,6 +672,21 @@ class _SftpPageState extends State<SftpPage> with AfterLayoutMixin {
_listDir(); _listDir();
} }
Future<void> _showErrDialog(
BuildContext ctx, Object e, String op, StackTrace s) async {
Loggers.app.warning('$op failed', e, s);
return ctx.showRoundDialog(
title: l10n.error,
child: Text(e.toString()),
actions: [
TextButton(
onPressed: () => ctx.pop(),
child: Text(l10n.ok),
),
],
);
}
String _getRemotePath(SftpName name) { String _getRemotePath(SftpName name) {
final prePath = _status.path!.path; final prePath = _status.path!.path;
// Only support Linux as remote now, so the seperator is '/' // Only support Linux as remote now, so the seperator is '/'

View File

@@ -471,7 +471,7 @@
CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic; CODE_SIGN_STYLE = Automatic;
COMBINE_HIDPI_IMAGES = YES; COMBINE_HIDPI_IMAGES = YES;
CURRENT_PROJECT_VERSION = 904; CURRENT_PROJECT_VERSION = 907;
DEVELOPMENT_TEAM = BA88US33G6; DEVELOPMENT_TEAM = BA88US33G6;
INFOPLIST_FILE = Runner/Info.plist; INFOPLIST_FILE = Runner/Info.plist;
INFOPLIST_KEY_CFBundleDisplayName = "Server Box"; INFOPLIST_KEY_CFBundleDisplayName = "Server Box";
@@ -481,7 +481,7 @@
"@executable_path/../Frameworks", "@executable_path/../Frameworks",
); );
MACOSX_DEPLOYMENT_TARGET = 10.15; MACOSX_DEPLOYMENT_TARGET = 10.15;
MARKETING_VERSION = 1.0.904; MARKETING_VERSION = 1.0.907;
PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox; PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox;
PRODUCT_NAME = "Server Box"; PRODUCT_NAME = "Server Box";
PROVISIONING_PROFILE_SPECIFIER = ""; PROVISIONING_PROFILE_SPECIFIER = "";
@@ -608,7 +608,7 @@
CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic; CODE_SIGN_STYLE = Automatic;
COMBINE_HIDPI_IMAGES = YES; COMBINE_HIDPI_IMAGES = YES;
CURRENT_PROJECT_VERSION = 904; CURRENT_PROJECT_VERSION = 907;
DEVELOPMENT_TEAM = BA88US33G6; DEVELOPMENT_TEAM = BA88US33G6;
INFOPLIST_FILE = Runner/Info.plist; INFOPLIST_FILE = Runner/Info.plist;
INFOPLIST_KEY_CFBundleDisplayName = "Server Box"; INFOPLIST_KEY_CFBundleDisplayName = "Server Box";
@@ -618,7 +618,7 @@
"@executable_path/../Frameworks", "@executable_path/../Frameworks",
); );
MACOSX_DEPLOYMENT_TARGET = 10.15; MACOSX_DEPLOYMENT_TARGET = 10.15;
MARKETING_VERSION = 1.0.904; MARKETING_VERSION = 1.0.907;
PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox; PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox;
PRODUCT_NAME = "Server Box"; PRODUCT_NAME = "Server Box";
PROVISIONING_PROFILE_SPECIFIER = ""; PROVISIONING_PROFILE_SPECIFIER = "";
@@ -638,7 +638,7 @@
"CODE_SIGN_IDENTITY[sdk=macosx*]" = "3rd Party Mac Developer Application"; "CODE_SIGN_IDENTITY[sdk=macosx*]" = "3rd Party Mac Developer Application";
CODE_SIGN_STYLE = Manual; CODE_SIGN_STYLE = Manual;
COMBINE_HIDPI_IMAGES = YES; COMBINE_HIDPI_IMAGES = YES;
CURRENT_PROJECT_VERSION = 904; CURRENT_PROJECT_VERSION = 907;
DEVELOPMENT_TEAM = ""; DEVELOPMENT_TEAM = "";
"DEVELOPMENT_TEAM[sdk=macosx*]" = BA88US33G6; "DEVELOPMENT_TEAM[sdk=macosx*]" = BA88US33G6;
INFOPLIST_FILE = Runner/Info.plist; INFOPLIST_FILE = Runner/Info.plist;
@@ -649,7 +649,7 @@
"@executable_path/../Frameworks", "@executable_path/../Frameworks",
); );
MACOSX_DEPLOYMENT_TARGET = 10.15; MACOSX_DEPLOYMENT_TARGET = 10.15;
MARKETING_VERSION = 1.0.904; MARKETING_VERSION = 1.0.907;
PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox; PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox;
PRODUCT_NAME = "Server Box"; PRODUCT_NAME = "Server Box";
PROVISIONING_PROFILE_SPECIFIER = ""; PROVISIONING_PROFILE_SPECIFIER = "";