From d57a0c85d8a479900b32d69fc43e36c1328164e9 Mon Sep 17 00:00:00 2001 From: open-trade Date: Sat, 28 Nov 2020 13:34:59 +0800 Subject: [PATCH] mute --- flutter_hbb/lib/remote_page.dart | 139 ++++++++++++++++--------------- 1 file changed, 74 insertions(+), 65 deletions(-) diff --git a/flutter_hbb/lib/remote_page.dart b/flutter_hbb/lib/remote_page.dart index b45099095..a9b937ada 100644 --- a/flutter_hbb/lib/remote_page.dart +++ b/flutter_hbb/lib/remote_page.dart @@ -642,83 +642,92 @@ void showOptions(BuildContext context) { ))); displays.add(Divider(color: MyTheme.border)); } - showAlertDialog( - context, - (setState) => Tuple3( - null, - Column( - mainAxisSize: MainAxisSize.min, - children: displays + - [ - RadioListTile( - controlAffinity: ListTileControlAffinity.trailing, - title: const Text('Good image quality'), - value: 'best', - groupValue: quality, - onChanged: (String value) { + showAlertDialog(context, (setState) { + final more = []; + if (FFI.ffiModel.permissions['audio'] != false) { + more.add(CheckboxListTile( + value: FFI.getByName('toggle_option', 'disable-audio') == 'true', + onChanged: (v) { + setState(() { + lockAfterSessionEnd = v; + FFI.setByName('toggle_option', 'disable-audio'); + }); + }, + title: Text('Mute'))); + } + return Tuple3( + null, + Column( + mainAxisSize: MainAxisSize.min, + children: displays + + [ + RadioListTile( + controlAffinity: ListTileControlAffinity.trailing, + title: const Text('Good image quality'), + value: 'best', + groupValue: quality, + onChanged: (String value) { + setState(() { + quality = value; + FFI.setByName('image_quality', value); + }); + }, + ), + RadioListTile( + controlAffinity: ListTileControlAffinity.trailing, + title: const Text('Balanced'), + value: 'balanced', + groupValue: quality, + onChanged: (String value) { + setState(() { + quality = value; + FFI.setByName('image_quality', value); + }); + }, + ), + RadioListTile( + controlAffinity: ListTileControlAffinity.trailing, + title: const Text('Optimize reaction time'), + value: 'low', + groupValue: quality, + onChanged: (String value) { + setState(() { + quality = value; + FFI.setByName('image_quality', value); + }); + }, + ), + Divider(color: MyTheme.border), + CheckboxListTile( + value: showRemoteCursor, + onChanged: (v) { setState(() { - quality = value; - FFI.setByName('image_quality', value); + showRemoteCursor = v; + FFI.setByName('toggle_option', 'show-remote-cursor'); }); }, - ), - RadioListTile( - controlAffinity: ListTileControlAffinity.trailing, - title: const Text('Balanced'), - value: 'balanced', - groupValue: quality, - onChanged: (String value) { + title: Text('Show remote cursor')), + CheckboxListTile( + value: lockAfterSessionEnd, + onChanged: (v) { setState(() { - quality = value; - FFI.setByName('image_quality', value); + lockAfterSessionEnd = v; + FFI.setByName( + 'toggle_option', 'lock-after-session-end'); }); }, - ), - RadioListTile( - controlAffinity: ListTileControlAffinity.trailing, - title: const Text('Optimize reaction time'), - value: 'low', - groupValue: quality, - onChanged: (String value) { - setState(() { - quality = value; - FFI.setByName('image_quality', value); - }); - }, - ), - Divider(color: MyTheme.border), - CheckboxListTile( - value: showRemoteCursor, - onChanged: (v) { - setState(() { - showRemoteCursor = v; - FFI.setByName( - 'toggle_option', 'show-remote-cursor'); - }); - }, - title: Text('Show remote cursor')), - CheckboxListTile( - value: lockAfterSessionEnd, - onChanged: (v) { - setState(() { - lockAfterSessionEnd = v; - FFI.setByName( - 'toggle_option', 'lock-after-session-end'); - }); - }, - title: Text('Lock after session end')) - ]), - null), - () async => true, - true, - 0); + title: Text('Lock after session end')) + ] + + more), + null); + }, () async => true, true, 0); } void showActions(BuildContext context) { final size = MediaQuery.of(context).size; final x = 120.0; final y = size.height; - var more = []; + final more = []; if (FFI.ffiModel.pi.version.isNotEmpty) { more.add(PopupMenuItem(child: Text('Refresh'), value: 'refresh')); }