- `TerminalColors`
- ssh virtual key auto switch
This commit is contained in:
lollipopkit
2023-05-27 20:43:40 +08:00
parent 02494651fc
commit ae822de737
17 changed files with 98 additions and 260 deletions

View File

@@ -12,7 +12,6 @@ import 'package:toolbox/view/widget/input_field.dart';
import '../../core/utils/misc.dart';
import '../../core/utils/platform.dart';
import '../../data/model/ssh/terminal_color.dart';
import '../../core/update.dart';
import '../../core/utils/ui.dart';
import '../../data/provider/app.dart';
@@ -37,7 +36,6 @@ class _SettingPageState extends State<SettingPage> {
final themeKey = GlobalKey<PopupMenuButtonState<int>>();
final startPageKey = GlobalKey<PopupMenuButtonState<int>>();
final updateIntervalKey = GlobalKey<PopupMenuButtonState<int>>();
final termThemeKey = GlobalKey<PopupMenuButtonState<int>>();
final maxRetryKey = GlobalKey<PopupMenuButtonState<int>>();
final fontSizeKey = GlobalKey<PopupMenuButtonState<double>>();
final localeKey = GlobalKey<PopupMenuButtonState<String>>();
@@ -49,7 +47,6 @@ class _SettingPageState extends State<SettingPage> {
late int _selectedColorValue;
late int _launchPageIdx;
late int _termThemeIdx;
late int _nightMode;
late int _maxRetryCount;
late int _updateInterval;
@@ -72,7 +69,6 @@ class _SettingPageState extends State<SettingPage> {
_serverProvider = locator<ServerProvider>();
_setting = locator<SettingStore>();
_launchPageIdx = _setting.launchPage.fetch()!;
_termThemeIdx = _setting.termColorIdx.fetch()!;
_nightMode = _setting.themeMode.fetch()!;
_updateInterval = _setting.serverStatusUpdateInterval.fetch()!;
_maxRetryCount = _setting.maxRetryCount.fetch()!;
@@ -149,9 +145,9 @@ class _SettingPageState extends State<SettingPage> {
Widget _buildSSH() {
return Column(
children: [
_buildTermTheme(),
_buildFont(),
_buildTermFontSize(),
_buildSSHVirtualKeyAutoOff(),
].map((e) => RoundRectCard(e)).toList(),
);
}
@@ -313,40 +309,6 @@ class _SettingPageState extends State<SettingPage> {
);
}
Widget _buildTermTheme() {
final items = TerminalColorsPlatform.values
.map(
(e) => PopupMenuItem<int>(
value: e.index,
child: Text(e.name),
),
)
.toList();
return ListTile(
title: Text(
_s.theme,
),
onTap: () {
termThemeKey.currentState?.showButtonMenu();
},
trailing: PopupMenuButton(
key: termThemeKey,
itemBuilder: (BuildContext context) => items,
initialValue: _termThemeIdx,
onSelected: (int idx) {
setState(() {
_termThemeIdx = idx;
});
_setting.termColorIdx.put(idx);
},
child: Text(
TerminalColorsPlatform.values[_termThemeIdx].name,
style: textSize15,
),
),
);
}
Widget _buildMaxRetry() {
final items = List.generate(
10,
@@ -636,4 +598,12 @@ class _SettingPageState extends State<SettingPage> {
),
);
}
Widget _buildSSHVirtualKeyAutoOff() {
return ListTile(
title: Text(_s.sshVirtualKeyAutoOff),
subtitle: const Text('Ctrl & Alt', style: grey),
trailing: buildSwitch(context, _setting.sshVirtualKeyAutoOff),
);
}
}

View File

@@ -7,7 +7,7 @@ import 'package:flutter/services.dart';
import 'package:flutter_gen/gen_l10n/l10n.dart';
import 'package:provider/provider.dart';
import 'package:toolbox/core/extension/navigator.dart';
import 'package:xterm/xterm.dart' hide TerminalColors;
import 'package:xterm/xterm.dart';
import '../../core/utils/platform.dart';
import '../../data/model/ssh/terminal_color.dart';
@@ -42,7 +42,6 @@ class _SSHPageState extends State<SSHPage> {
final TerminalController _terminalController = TerminalController();
final ContextMenuController _menuController = ContextMenuController();
late TextStyle _menuTextStyle;
late TerminalColors _termColors;
late S _s;
late TerminalStyle _terminalStyle;
late TerminalUITheme _termUITheme;
@@ -53,8 +52,6 @@ class _SSHPageState extends State<SSHPage> {
@override
void initState() {
super.initState();
final termColorIdx = _setting.termColorIdx.fetch()!;
_termColors = TerminalColorsPlatform.values[termColorIdx].colors;
final fontFamilly = getFileName(_setting.fontPath.fetch());
final textStyle = TextStyle(
fontFamily: fontFamilly,
@@ -72,7 +69,7 @@ class _SSHPageState extends State<SSHPage> {
_menuTextStyle = TextStyle(color: contentColor.resolve(context));
_s = S.of(context)!;
_termUITheme = _isDark ? termDarkTheme : termLightTheme;
_terminalTheme = _termUITheme.toTerminalTheme(_termColors);
_terminalTheme = _termUITheme.toTerminalTheme(MacOSTerminalColor());
}
@override
@@ -164,11 +161,7 @@ class _SSHPageState extends State<SSHPage> {
}
final child = item.icon != null
? Icon(
item.icon,
color: _isDark ? Colors.white : Colors.black,
size: 17,
)
? Icon(item.icon, size: 17)
: Text(
item.text,
style: TextStyle(