diff --git a/lib/data/store/setting.dart b/lib/data/store/setting.dart index e1050e8f..7bdbd9df 100644 --- a/lib/data/store/setting.dart +++ b/lib/data/store/setting.dart @@ -1,8 +1,6 @@ -import 'package:flutter/material.dart'; import 'package:toolbox/core/persistant_store.dart'; import 'package:toolbox/core/utils/platform/base.dart'; import 'package:toolbox/data/model/app/menu/server_func.dart'; -import 'package:xterm/ui.dart'; import '../model/app/net_view.dart'; import '../res/default.dart'; @@ -128,10 +126,10 @@ class SettingStore extends PersistentStore { // 1, // ); - late final keyboardType = property( - 'keyboardType', - TextInputType.text.index, - ); + // late final keyboardType = property( + // 'keyboardType', + // TextInputType.text.index, + // ); late final sshVirtKeys = listProperty( 'sshVirtKeys', @@ -251,10 +249,6 @@ class SettingStore extends PersistentStore { /// when building traffic view on server tab late final ignoreLocalNet = property('ignoreLocalNetIface', true); - /// Index of terminal cursor type - late final termCursor = - property('termCursor', TerminalCursorType.block.index); - /// Remerber pwd in memory /// Used for [DialogX.showPwdDialog] late final rememberPwdInMem = property('rememberPwdInMem', true); @@ -263,6 +257,10 @@ class SettingStore extends PersistentStore { /// 0: follow app theme, 1: light, 2: dark late final termTheme = property('termTheme', 0); + /// Compatiablity for Chinese Android. + /// Set it to true, if you use Safe Keyboard on Chinese Android + late final cnKeyboardComp = property('cnKeyboardComp', false); + // Never show these settings for users // // ------BEGIN------ diff --git a/lib/l10n/app_de.arb b/lib/l10n/app_de.arb index 19057d6a..ea6876d4 100644 --- a/lib/l10n/app_de.arb +++ b/lib/l10n/app_de.arb @@ -37,6 +37,8 @@ "clipboard": "Zwischenablage", "close": "Schließen", "cmd": "Command", + "cnKeyboardComp": "Kompatibilität mit chinesischem Android", + "cnKeyboardCompTip": "Wenn das Terminal ein sicheres Tastenfeld öffnet, können Sie es aktivieren.", "collapseUI": "Zusammenbrechen", "collapseUITip": "Ob lange Listen in der Benutzeroberfläche standardmäßig eingeklappt werden sollen oder nicht", "conn": "Verbindung", @@ -125,8 +127,6 @@ "keepStatusWhenErr": "Den letzten Serverstatus beibehalten", "keepStatusWhenErrTip": "Nur im Fehlerfall während der Ausführung des Skripts", "keyAuth": "Schlüsselauthentifzierung", - "keyboardCompatibility": "Mögliche Verbesserungen bei der Kompatibilität der Eingabemethoden", - "keyboardType": "Tastatur Typ", "language": "Sprache", "languageName": "Deutsch", "lastTry": "Letzter Versuch", diff --git a/lib/l10n/app_en.arb b/lib/l10n/app_en.arb index 25026eab..b89245bc 100644 --- a/lib/l10n/app_en.arb +++ b/lib/l10n/app_en.arb @@ -37,6 +37,8 @@ "clipboard": "Clipboard", "close": "Close", "cmd": "Command", + "cnKeyboardComp": "Compatibility with Chinese Android", + "cnKeyboardCompTip": "If the terminal pops up a secure keyboard, you can enable it.", "collapseUI": "Collapse", "collapseUITip": "Whether to collapse long lists present in the UI by default", "conn": "Connection", @@ -125,8 +127,6 @@ "keepStatusWhenErr": "Preserve the last server state", "keepStatusWhenErrTip": "Only in the event of an error during script execution", "keyAuth": "Key Auth", - "keyboardCompatibility": "Possible to improve input method compatibility", - "keyboardType": "Keyborad type", "language": "Language", "languageName": "English", "lastTry": "Last try", diff --git a/lib/l10n/app_es.arb b/lib/l10n/app_es.arb index e422d168..ccb3d975 100644 --- a/lib/l10n/app_es.arb +++ b/lib/l10n/app_es.arb @@ -37,6 +37,8 @@ "clipboard": "Portapapeles", "close": "Cerrar", "cmd": "Comando", + "cnKeyboardComp": "Compatibilidad con Android chino", + "cnKeyboardCompTip": "Si el terminal muestra un teclado seguro, puedes activarlo.", "collapseUI": "Colapsar", "collapseUITip": "¿Colapsar por defecto las listas largas en la UI?", "conn": "Conectar", @@ -125,8 +127,6 @@ "keepStatusWhenErr": "Mantener el estado anterior del servidor", "keepStatusWhenErrTip": "Solo aplica cuando hay errores al ejecutar scripts", "keyAuth": "Autenticación con llave", - "keyboardCompatibility": "Puede mejorar la compatibilidad del teclado", - "keyboardType": "Tipo de teclado", "language": "Idioma", "languageName": "Español", "lastTry": "Último intento", diff --git a/lib/l10n/app_fr.arb b/lib/l10n/app_fr.arb index 6a0c3bc7..fa4da81e 100644 --- a/lib/l10n/app_fr.arb +++ b/lib/l10n/app_fr.arb @@ -37,6 +37,8 @@ "clipboard": "presse-papiers", "close": "Fermer", "cmd": "Commande", + "cnKeyboardComp": " Compatibilité avec Android chinois", + "cnKeyboardCompTip": "Si le terminal affiche un clavier sécurisé, vous pouvez l'activer.", "collapseUI": "обвал", "collapseUITip": "Réduction ou non des longues listes présentes dans l'interface utilisateur par défaut", "conn": "Connexion", @@ -125,8 +127,6 @@ "keepStatusWhenErr": "Conserver le dernier état du serveur", "keepStatusWhenErrTip": "Uniquement en cas d'erreur lors de l'exécution du script", "keyAuth": "Authentification par clé", - "keyboardCompatibility": "Possibilité d'améliorer la compatibilité avec les méthodes de saisie", - "keyboardType": "Type de clavier", "language": "Langue", "languageName": "Français", "lastTry": "Dernier essai", diff --git a/lib/l10n/app_id.arb b/lib/l10n/app_id.arb index 71407e8c..f8a6f03f 100644 --- a/lib/l10n/app_id.arb +++ b/lib/l10n/app_id.arb @@ -37,6 +37,8 @@ "clipboard": "papan klip", "close": "Menutup", "cmd": "Memerintah", + "cnKeyboardComp": "Kompatibilitas dengan Android China", + "cnKeyboardCompTip": "Jika terminal munculkan keyboard aman, Anda bisa mengaktifkannya.", "collapseUI": "Runtuh", "collapseUITip": "Apakah akan menciutkan daftar panjang yang ada di UI secara default atau tidak", "conn": "Koneksi", @@ -125,8 +127,6 @@ "keepStatusWhenErr": "Menyimpan status server terakhir", "keepStatusWhenErrTip": "Hanya ketika terjadi kesalahan saat menjalankan skrip", "keyAuth": "Auth kunci", - "keyboardCompatibility": "Mungkin untuk meningkatkan kompatibilitas metode input", - "keyboardType": "Tipe Keyborad", "language": "Bahasa", "languageName": "Indonesia", "lastTry": "Percobaan terakhir", diff --git a/lib/l10n/app_ja.arb b/lib/l10n/app_ja.arb index dc68a85e..5fe7997e 100644 --- a/lib/l10n/app_ja.arb +++ b/lib/l10n/app_ja.arb @@ -37,6 +37,8 @@ "clipboard": "クリップボード", "close": "閉じる", "cmd": "コマンド", + "cnKeyboardComp": "中国のAndroidとの互換性", + "cnKeyboardCompTip": "ターミナルがセキュアキーボードを表示した場合、それを有効にできます。", "collapseUI": "UIを折りたたむ", "collapseUITip": "UIの長いリストをデフォルトで折りたたむかどうか", "conn": "接続", @@ -125,8 +127,6 @@ "keepStatusWhenErr": "エラー時に前回のサーバーステータスを保持", "keepStatusWhenErrTip": "スクリプトの実行エラーに限ります", "keyAuth": "キー認証", - "keyboardCompatibility": "入力法の互換性を向上させる可能性があります", - "keyboardType": "キーボードタイプ", "language": "言語", "languageName": "日本語", "lastTry": "最後の試み", diff --git a/lib/l10n/app_pt.arb b/lib/l10n/app_pt.arb index 09179a29..4ef75452 100644 --- a/lib/l10n/app_pt.arb +++ b/lib/l10n/app_pt.arb @@ -37,6 +37,8 @@ "clipboard": "Área de transferência", "close": "Fechar", "cmd": "Comando", + "cnKeyboardComp": "Compatibilidade com Android chinês", + "cnKeyboardCompTip": "Se o terminal abrir um teclado seguro, você pode ativá-lo.", "collapseUI": "Colapsar", "collapseUITip": "Deve colapsar listas longas na UI por padrão?", "conn": "Conectar", @@ -125,8 +127,6 @@ "keepStatusWhenErr": "Manter o status anterior do servidor", "keepStatusWhenErrTip": "Limitado a erros de execução de scripts", "keyAuth": "Autenticação por chave", - "keyboardCompatibility": "Pode melhorar a compatibilidade do teclado", - "keyboardType": "Tipo de teclado", "language": "Idioma", "languageName": "Português", "lastTry": "Última tentativa", diff --git a/lib/l10n/app_ru.arb b/lib/l10n/app_ru.arb index 42ba6551..b37dc255 100644 --- a/lib/l10n/app_ru.arb +++ b/lib/l10n/app_ru.arb @@ -37,6 +37,8 @@ "clipboard": "буфер обмена", "close": "закрыть", "cmd": "команда", + "cnKeyboardComp": "Совместимость с китайским Android", + "cnKeyboardCompTip": "Если терминал отображает безопасную клавиатуру, вы можете ее активировать.", "collapseUI": "свернуть", "collapseUITip": "Свернуть длинные списки в UI по умолчанию", "conn": "подключение", @@ -125,8 +127,6 @@ "keepStatusWhenErr": "Сохранять статус сервера при ошибке", "keepStatusWhenErrTip": "Применимо только в случае ошибки выполнения скрипта", "keyAuth": "аутентификация по ключу", - "keyboardCompatibility": "может улучшить совместимость с клавиатурой", - "keyboardType": "тип клавиатуры", "language": "язык", "languageName": "Русский", "lastTry": "последняя попытка", diff --git a/lib/l10n/app_zh.arb b/lib/l10n/app_zh.arb index 4188fee2..64a2ecc0 100644 --- a/lib/l10n/app_zh.arb +++ b/lib/l10n/app_zh.arb @@ -37,6 +37,8 @@ "clipboard": "剪切板", "close": "关闭", "cmd": "命令", + "cnKeyboardComp": "中国Android兼容性", + "cnKeyboardCompTip": "如果终端弹出安全键盘,可以开启", "collapseUI": "折叠", "collapseUITip": "是否默认折叠UI中存在的长列表", "conn": "连接", @@ -125,8 +127,6 @@ "keepStatusWhenErr": "保留上次的服务器状态", "keepStatusWhenErrTip": "仅限于执行脚本出错", "keyAuth": "密钥认证", - "keyboardCompatibility": "可能会改善输入法兼容性", - "keyboardType": "键盘类型", "language": "语言", "languageName": "简体中文", "lastTry": "最后尝试", diff --git a/lib/l10n/app_zh_tw.arb b/lib/l10n/app_zh_tw.arb index ea0dc329..e97f4fe4 100644 --- a/lib/l10n/app_zh_tw.arb +++ b/lib/l10n/app_zh_tw.arb @@ -37,6 +37,8 @@ "clipboard": "剪切板", "close": "關閉", "cmd": "命令", + "cnKeyboardComp": "中國Android兼容性", + "cnKeyboardCompTip": "如果終端彈出安全鍵盤,您可以啟用它。", "collapseUI": "折疊", "collapseUITip": "是否預設折疊UI中存在的長列表", "conn": "連接", @@ -125,8 +127,6 @@ "keepStatusWhenErr": "保留上次的伺服器狀態", "keepStatusWhenErrTip": "仅在执行脚本时出错时", "keyAuth": "密鑰認證", - "keyboardCompatibility": "可能會改善輸入法兼容性", - "keyboardType": "鍵盤類型", "language": "語言", "languageName": "繁體中文", "lastTry": "最後嘗試", diff --git a/lib/view/page/setting/entry.dart b/lib/view/page/setting/entry.dart index 29623303..d36a43ed 100644 --- a/lib/view/page/setting/entry.dart +++ b/lib/view/page/setting/entry.dart @@ -8,7 +8,6 @@ import 'package:toolbox/core/extension/colorx.dart'; import 'package:toolbox/core/extension/context/common.dart'; import 'package:toolbox/core/extension/context/locale.dart'; import 'package:toolbox/core/extension/context/snackbar.dart'; -import 'package:toolbox/core/extension/enum.dart'; import 'package:toolbox/core/extension/locale.dart'; import 'package:toolbox/core/extension/context/dialog.dart'; import 'package:toolbox/core/extension/stringx.dart'; @@ -18,7 +17,6 @@ import 'package:toolbox/data/res/provider.dart'; import 'package:toolbox/data/res/rebuild.dart'; import 'package:toolbox/data/res/store.dart'; import 'package:toolbox/view/widget/expand_tile.dart'; -import 'package:xterm/ui.dart'; import '../../../core/persistant_store.dart'; import '../../../core/route.dart'; @@ -173,10 +171,9 @@ class _SettingPageState extends State { _buildTermTheme(), _buildFont(), _buildTermFontSize(), - _buildTermCursor(), _buildSSHVirtualKeyAutoOff(), // Use hardware keyboard on desktop, so there is no need to set it - if (isMobile) _buildKeyboardType(), + if (isAndroid) _buildCNKeyboardComp(), if (isMobile) _buildSSHVirtKeys(), ].map((e) => CardX(child: e)).toList(), ); @@ -656,43 +653,11 @@ class _SettingPageState extends State { // ); // } - Widget _buildKeyboardType() { - const List names = [ - 'text', - 'multiline', - 'number', - 'phone', - 'datetime', - 'emailAddress', - 'url', - 'visiblePassword', - 'name', - 'address', - 'none', - ]; + Widget _buildCNKeyboardComp() { return ListTile( - title: Text(l10n.keyboardType), - subtitle: Text(l10n.keyboardCompatibility, style: UIs.textGrey), - trailing: ValueListenableBuilder( - valueListenable: _setting.keyboardType.listenable(), - builder: (_, val, __) => Text( - names[val], - style: UIs.text15, - ), - ), - onTap: () async { - if (names.length != TextInputType.values.length) { - // This notify me to update the code - context.showSnackBar('names.length != TextInputType.values.length'); - } - final selected = await context.showPickSingleDialog( - items: names, - initial: names.fromIndex(_setting.keyboardType.fetch()), - ); - if (selected != null) { - _setting.keyboardType.put(names.indexOf(selected)); - } - }, + title: Text(l10n.cnKeyboardComp), + subtitle: Text(l10n.cnKeyboardCompTip, style: UIs.textGrey), + trailing: StoreSwitch(prop: _setting.cnKeyboardComp), ); } @@ -1060,30 +1025,6 @@ class _SettingPageState extends State { ); } - Widget _buildTermCursor() { - return ListTile( - title: Text(l10n.cursorType), - trailing: ValueListenableBuilder( - valueListenable: _setting.termCursor.listenable(), - builder: (_, val, __) => Text( - TerminalCursorType.values.fromIndex(val).name, - style: UIs.text15, - ), - ), - onTap: () async { - final selected = await context.showPickSingleDialog( - items: TerminalCursorType.values, - name: (p0) => p0.name, - initial: - TerminalCursorType.values.fromIndex(_setting.termCursor.fetch()), - ); - if (selected != null) { - _setting.termCursor.put(selected.index); - } - }, - ); - } - Widget _buildRememberPwdInMem() { return ListTile( title: Text(l10n.rememberPwdInMem), diff --git a/lib/view/page/ssh/page.dart b/lib/view/page/ssh/page.dart index be6bb762..0a29f1e2 100644 --- a/lib/view/page/ssh/page.dart +++ b/lib/view/page/ssh/page.dart @@ -58,10 +58,8 @@ class _SSHPageState extends State with AutomaticKeepAliveClientMixin { late MediaQueryData _media; late TerminalStyle _terminalStyle; late TerminalTheme _terminalTheme; - late TextInputType _keyboardType; double _virtKeyWidth = 0; double _virtKeysHeight = 0; - late final TerminalCursorType _termCursor; bool _isDark = false; Timer? _virtKeyLongPressTimer; @@ -138,13 +136,13 @@ class _SSHPageState extends State with AutomaticKeepAliveClientMixin { child: TerminalView( _terminal, controller: _terminalController, - keyboardType: _keyboardType, + keyboardType: TextInputType.emailAddress, + enableSuggestions: Stores.setting.cnKeyboardComp.fetch(), textStyle: _terminalStyle, theme: _terminalTheme, - deleteDetection: false, + deleteDetection: isMobile, autofocus: true, keyboardAppearance: _isDark ? Brightness.dark : Brightness.light, - cursorType: _termCursor, showToolbar: isMobile, viewOffset: Offset( 2 * _horizonPadding, @@ -484,16 +482,6 @@ class _SSHPageState extends State with AutomaticKeepAliveClientMixin { ); _terminalStyle = TerminalStyle.fromTextStyle(textStyle); - _keyboardType = TextInputType.values[Stores.setting.keyboardType.fetch()]; - - final termCursor = Stores.setting.termCursor.fetch(); - _termCursor = () { - try { - return TerminalCursorType.values[termCursor]; - } catch (_) { - return TerminalCursorType.block; - } - }(); } } diff --git a/pubspec.lock b/pubspec.lock index 952b1ab6..f3145cbc 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -1259,7 +1259,7 @@ packages: description: path: "." ref: master - resolved-ref: b81b303040729b866f844dd46b25c9f6be582962 + resolved-ref: ee64dc1541a18f513856de0f554d8227fdbf29da url: "https://github.com/lollipopkit/xterm.dart" source: git version: "4.0.0"