mirror of
https://github.com/rustdesk/rustdesk.git
synced 2025-12-13 19:47:17 +00:00
@@ -1,5 +1,4 @@
|
||||
import 'dart:convert';
|
||||
import 'dart:io';
|
||||
import 'dart:ui' as ui;
|
||||
|
||||
import 'package:flutter/material.dart';
|
||||
@@ -641,7 +640,7 @@ class _ControlMenu extends StatelessWidget {
|
||||
if (e.divider) {
|
||||
return Divider();
|
||||
} else {
|
||||
return _MenuItemButton(
|
||||
return MenuButton(
|
||||
child: e.child,
|
||||
onPressed: e.onPressed,
|
||||
ffi: ffi,
|
||||
@@ -711,7 +710,7 @@ class _DisplayMenuState extends State<_DisplayMenu> {
|
||||
if (!visible) return Offstage();
|
||||
return Column(
|
||||
children: [
|
||||
_MenuItemButton(
|
||||
MenuButton(
|
||||
child: Text(translate('Adjust Window')),
|
||||
onPressed: _doAdjustWindow,
|
||||
ffi: widget.ffi),
|
||||
@@ -828,7 +827,7 @@ class _DisplayMenuState extends State<_DisplayMenu> {
|
||||
final v = data as List<TRadioMenu<String>>;
|
||||
return Column(children: [
|
||||
...v
|
||||
.map((e) => _RadioMenuButton<String>(
|
||||
.map((e) => RdoMenuButton<String>(
|
||||
value: e.value,
|
||||
groupValue: e.groupValue,
|
||||
onChanged: e.onChanged,
|
||||
@@ -858,14 +857,14 @@ class _DisplayMenuState extends State<_DisplayMenu> {
|
||||
|
||||
final enabled = widget.ffi.canvasModel.imageOverflow.value;
|
||||
return Column(children: [
|
||||
_RadioMenuButton<String>(
|
||||
RdoMenuButton<String>(
|
||||
child: Text(translate('ScrollAuto')),
|
||||
value: kRemoteScrollStyleAuto,
|
||||
groupValue: groupValue,
|
||||
onChanged: enabled ? (value) => onChange(value) : null,
|
||||
ffi: widget.ffi,
|
||||
),
|
||||
_RadioMenuButton<String>(
|
||||
RdoMenuButton<String>(
|
||||
child: Text(translate('Scrollbar')),
|
||||
value: kRemoteScrollStyleBar,
|
||||
groupValue: groupValue,
|
||||
@@ -886,7 +885,7 @@ class _DisplayMenuState extends State<_DisplayMenu> {
|
||||
ffi: widget.ffi,
|
||||
child: Text(translate('Image Quality')),
|
||||
menuChildren: v
|
||||
.map((e) => _RadioMenuButton<String>(
|
||||
.map((e) => RdoMenuButton<String>(
|
||||
value: e.value,
|
||||
groupValue: e.groupValue,
|
||||
onChanged: e.onChanged,
|
||||
@@ -908,7 +907,7 @@ class _DisplayMenuState extends State<_DisplayMenu> {
|
||||
ffi: widget.ffi,
|
||||
child: Text(translate('Codec')),
|
||||
menuChildren: v
|
||||
.map((e) => _RadioMenuButton(
|
||||
.map((e) => RdoMenuButton(
|
||||
value: e.value,
|
||||
groupValue: e.groupValue,
|
||||
onChanged: e.onChanged,
|
||||
@@ -948,7 +947,7 @@ class _DisplayMenuState extends State<_DisplayMenu> {
|
||||
return _SubmenuButton(
|
||||
ffi: widget.ffi,
|
||||
menuChildren: resolutions
|
||||
.map((e) => _RadioMenuButton(
|
||||
.map((e) => RdoMenuButton(
|
||||
value: '${e.width}x${e.height}',
|
||||
groupValue: groupValue,
|
||||
onChanged: onChanged,
|
||||
@@ -966,7 +965,7 @@ class _DisplayMenuState extends State<_DisplayMenu> {
|
||||
if (v.isEmpty) return Offstage();
|
||||
return Column(
|
||||
children: v
|
||||
.map((e) => _CheckboxMenuButton(
|
||||
.map((e) => CkbMenuButton(
|
||||
value: e.value,
|
||||
onChanged: e.onChanged,
|
||||
child: e.child,
|
||||
@@ -1026,7 +1025,7 @@ class _KeyboardMenu extends StatelessWidget {
|
||||
KeyboardModeMenu(key: _kKeyMapMode, menu: 'Map mode'),
|
||||
KeyboardModeMenu(key: _kKeyTranslateMode, menu: 'Translate mode'),
|
||||
];
|
||||
List<_RadioMenuButton> list = [];
|
||||
List<RdoMenuButton> list = [];
|
||||
final enabled = !ffi.ffiModel.viewOnly;
|
||||
onChanged(String? value) async {
|
||||
if (value == null) return;
|
||||
@@ -1049,7 +1048,7 @@ class _KeyboardMenu extends StatelessWidget {
|
||||
if (mode.key == _kKeyTranslateMode) {
|
||||
text = '$text beta';
|
||||
}
|
||||
list.add(_RadioMenuButton<String>(
|
||||
list.add(RdoMenuButton<String>(
|
||||
child: Text(text),
|
||||
value: mode.key,
|
||||
groupValue: groupValue,
|
||||
@@ -1069,7 +1068,7 @@ class _KeyboardMenu extends StatelessWidget {
|
||||
return Column(
|
||||
children: [
|
||||
Divider(),
|
||||
_MenuItemButton(
|
||||
MenuButton(
|
||||
child: Text(
|
||||
'${translate('Local keyboard type')}: ${KBLayoutType.value}'),
|
||||
trailingIcon: const Icon(Icons.settings),
|
||||
@@ -1085,7 +1084,7 @@ class _KeyboardMenu extends StatelessWidget {
|
||||
view_mode() {
|
||||
final ffiModel = ffi.ffiModel;
|
||||
final enabled = version_cmp(pi.version, '1.2.0') >= 0 && ffiModel.keyboard;
|
||||
return _CheckboxMenuButton(
|
||||
return CkbMenuButton(
|
||||
value: ffiModel.viewOnly,
|
||||
onChanged: enabled
|
||||
? (value) async {
|
||||
@@ -1129,7 +1128,7 @@ class _ChatMenuState extends State<_ChatMenu> {
|
||||
}
|
||||
|
||||
textChat() {
|
||||
return _MenuItemButton(
|
||||
return MenuButton(
|
||||
child: Text(translate('Text chat')),
|
||||
ffi: widget.ffi,
|
||||
onPressed: () {
|
||||
@@ -1148,7 +1147,7 @@ class _ChatMenuState extends State<_ChatMenu> {
|
||||
}
|
||||
|
||||
voiceCall() {
|
||||
return _MenuItemButton(
|
||||
return MenuButton(
|
||||
child: Text(translate('Voice call')),
|
||||
ffi: widget.ffi,
|
||||
onPressed: () => bind.sessionRequestVoiceCall(id: widget.id),
|
||||
@@ -1403,12 +1402,12 @@ class _SubmenuButton extends StatelessWidget {
|
||||
}
|
||||
}
|
||||
|
||||
class _MenuItemButton extends StatelessWidget {
|
||||
class MenuButton extends StatelessWidget {
|
||||
final VoidCallback? onPressed;
|
||||
final Widget? trailingIcon;
|
||||
final Widget? child;
|
||||
final FFI ffi;
|
||||
_MenuItemButton(
|
||||
MenuButton(
|
||||
{Key? key,
|
||||
this.onPressed,
|
||||
this.trailingIcon,
|
||||
@@ -1431,12 +1430,12 @@ class _MenuItemButton extends StatelessWidget {
|
||||
}
|
||||
}
|
||||
|
||||
class _CheckboxMenuButton extends StatelessWidget {
|
||||
class CkbMenuButton extends StatelessWidget {
|
||||
final bool? value;
|
||||
final ValueChanged<bool?>? onChanged;
|
||||
final Widget? child;
|
||||
final FFI ffi;
|
||||
const _CheckboxMenuButton(
|
||||
const CkbMenuButton(
|
||||
{Key? key,
|
||||
required this.value,
|
||||
required this.onChanged,
|
||||
@@ -1460,13 +1459,13 @@ class _CheckboxMenuButton extends StatelessWidget {
|
||||
}
|
||||
}
|
||||
|
||||
class _RadioMenuButton<T> extends StatelessWidget {
|
||||
class RdoMenuButton<T> extends StatelessWidget {
|
||||
final T value;
|
||||
final T? groupValue;
|
||||
final ValueChanged<T?>? onChanged;
|
||||
final Widget? child;
|
||||
final FFI ffi;
|
||||
const _RadioMenuButton(
|
||||
const RdoMenuButton(
|
||||
{Key? key,
|
||||
required this.value,
|
||||
required this.groupValue,
|
||||
|
||||
Reference in New Issue
Block a user