mobile add new input map mode radio

This commit is contained in:
csf 2022-09-27 22:56:18 +08:00
parent 77fcf2d4fa
commit 6b664d0965
2 changed files with 28 additions and 1 deletions

View File

@ -817,8 +817,10 @@ class PermissionManager {
}
RadioListTile<T> getRadio<T>(
String name, T toValue, T curValue, void Function(T?) onChange) {
String name, T toValue, T curValue, void Function(T?) onChange,
{EdgeInsetsGeometry? contentPadding}) {
return RadioListTile<T>(
contentPadding: contentPadding,
controlAffinity: ListTileControlAffinity.trailing,
title: Text(translate(name)),
value: toValue,

View File

@ -584,6 +584,9 @@ class _RemotePageState extends State<RemotePage> {
child: Text(translate('Reset canvas')), value: 'reset_canvas'));
}
if (perms['keyboard'] != false) {
more.add(PopupMenuItem<String>(
child: Text(translate('Physical Keyboard Input Mode')),
value: 'input-mode'));
if (pi.platform == 'Linux' || pi.sasEnabled) {
more.add(PopupMenuItem<String>(
child: Text('${translate('Insert')} Ctrl + Alt + Del'),
@ -616,6 +619,8 @@ class _RemotePageState extends State<RemotePage> {
);
if (value == 'cad') {
bind.sessionCtrlAltDel(id: widget.id);
} else if (value == 'input-mode') {
changePhysicalKeyboardInputMode();
} else if (value == 'lock') {
bind.sessionLockScreen(id: widget.id);
} else if (value == 'block-input') {
@ -675,6 +680,26 @@ class _RemotePageState extends State<RemotePage> {
}));
}
void changePhysicalKeyboardInputMode() async {
var current = await bind.sessionGetKeyboardName(id: widget.id);
gFFI.dialogManager.show((setState, close) {
void setMode(String? v) async {
await bind.sessionSetKeyboardMode(id: widget.id, keyboardMode: v ?? '');
setState(() => current = v ?? '');
Future.delayed(Duration(milliseconds: 300), close);
}
return CustomAlertDialog(
title: Text(translate('Physical Keyboard Input Mode')),
content: Column(mainAxisSize: MainAxisSize.min, children: [
getRadio('Legacy mode', 'legacy', current, setMode,
contentPadding: EdgeInsets.zero),
getRadio('Map mode', 'map', current, setMode,
contentPadding: EdgeInsets.zero),
]));
}, clickMaskDismiss: true);
}
Widget getHelpTools() {
final keyboard = isKeyboardShown();
if (!keyboard) {