hide zoom-cursor if view-style is original

Signed-off-by: fufesou <shuanglongchen@yeah.net>
This commit is contained in:
fufesou
2022-11-24 11:19:16 +08:00
parent 90959eebff
commit 02c1bc6080
6 changed files with 92 additions and 52 deletions

View File

@@ -236,12 +236,12 @@ class _ConnectionTabPageState extends State<ConnectionTabPage> {
optionsGetter: () => [
MenuEntryRadioOption(
text: translate('Scale original'),
value: 'original',
value: kRemoteViewStyleOriginal,
dismissOnClicked: true,
),
MenuEntryRadioOption(
text: translate('Scale adaptive'),
value: 'adaptive',
value: kRemoteViewStyleAdaptive,
dismissOnClicked: true,
),
],
@@ -249,8 +249,7 @@ class _ConnectionTabPageState extends State<ConnectionTabPage> {
// null means peer id is not found, which there's no need to care about
await bind.sessionGetViewStyle(id: key) ?? '',
optionSetter: (String oldValue, String newValue) async {
await bind.sessionSetViewStyle(
id: key, value: newValue);
await bind.sessionSetViewStyle(id: key, value: newValue);
ffi.canvasModel.updateViewStyle();
cancelFunc();
},

View File

@@ -7,6 +7,7 @@ import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_hbb/models/chat_model.dart';
import 'package:flutter_hbb/models/state_model.dart';
import 'package:flutter_hbb/consts.dart';
import 'package:get/get.dart';
import 'package:provider/provider.dart';
import 'package:rxdart/rxdart.dart' as rxdart;
@@ -25,6 +26,7 @@ class MenubarState {
final kStoreKey = 'remoteMenubarState';
late RxBool show;
late RxBool _pin;
RxString viewStyle = RxString(kRemoteViewStyleOriginal);
MenubarState() {
final s = bind.getLocalFlutterConfig(k: kStoreKey);
@@ -67,21 +69,25 @@ class MenubarState {
switchPin() async {
_pin.value = !_pin.value;
// Save everytime changed, as this func will not be called frequently
await save();
await _savePin();
}
setPin(bool v) async {
if (_pin.value != v) {
_pin.value = v;
// Save everytime changed, as this func will not be called frequently
await save();
await _savePin();
}
}
save() async {
_savePin() async {
bind.setLocalFlutterConfig(
k: kStoreKey, v: jsonEncode({'pin': _pin.value}));
}
save() async {
await _savePin();
}
}
class _MenubarTheme {
@@ -404,6 +410,8 @@ class _RemoteMenubarState extends State<RemoteMenubar> {
Widget _buildDisplay(BuildContext context) {
return FutureBuilder(future: () async {
widget.state.viewStyle.value =
await bind.sessionGetViewStyle(id: widget.id) ?? '';
final supportedHwcodec =
await bind.sessionSupportedHwcodec(id: widget.id);
return {'supportedHwcodec': supportedHwcodec};
@@ -719,20 +727,24 @@ class _RemoteMenubarState extends State<RemoteMenubar> {
optionsGetter: () => [
MenuEntryRadioOption(
text: translate('Scale original'),
value: 'original',
value: kRemoteViewStyleOriginal,
dismissOnClicked: true,
),
MenuEntryRadioOption(
text: translate('Scale adaptive'),
value: 'adaptive',
value: kRemoteViewStyleAdaptive,
dismissOnClicked: true,
),
],
curOptionGetter: () async =>
// null means peer id is not found, which there's no need to care about
await bind.sessionGetViewStyle(id: widget.id) ?? '',
curOptionGetter: () async {
// null means peer id is not found, which there's no need to care about
final viewStyle = await bind.sessionGetViewStyle(id: widget.id) ?? '';
widget.state.viewStyle.value = viewStyle;
return viewStyle;
},
optionSetter: (String oldValue, String newValue) async {
await bind.sessionSetViewStyle(id: widget.id, value: newValue);
widget.state.viewStyle.value = newValue;
widget.ffi.canvasModel.updateViewStyle();
},
padding: padding,
@@ -744,12 +756,12 @@ class _RemoteMenubarState extends State<RemoteMenubar> {
optionsGetter: () => [
MenuEntryRadioOption(
text: translate('ScrollAuto'),
value: 'scrollauto',
value: kRemoteScrollStyleAuto,
dismissOnClicked: true,
),
MenuEntryRadioOption(
text: translate('Scrollbar'),
value: 'scrollbar',
value: kRemoteScrollStyleBar,
dismissOnClicked: true,
),
],
@@ -769,22 +781,22 @@ class _RemoteMenubarState extends State<RemoteMenubar> {
optionsGetter: () => [
MenuEntryRadioOption(
text: translate('Good image quality'),
value: 'best',
value: kRemoteImageQualityBest,
dismissOnClicked: true,
),
MenuEntryRadioOption(
text: translate('Balanced'),
value: 'balanced',
value: kRemoteImageQualityBalanced,
dismissOnClicked: true,
),
MenuEntryRadioOption(
text: translate('Optimize reaction time'),
value: 'low',
value: kRemoteImageQualityLow,
dismissOnClicked: true,
),
MenuEntryRadioOption(
text: translate('Custom'),
value: 'custom',
value: kRemoteImageQualityCustom,
dismissOnClicked: true),
],
curOptionGetter: () async =>
@@ -821,7 +833,7 @@ class _RemoteMenubarState extends State<RemoteMenubar> {
}
}
if (newValue == 'custom') {
if (newValue == kRemoteImageQualityCustom) {
final btnClose = msgBoxButton(translate('Close'), () async {
await setCustomValues();
widget.ffi.dialogManager.dismissAll();
@@ -1089,24 +1101,26 @@ class _RemoteMenubarState extends State<RemoteMenubar> {
);
}());
/// Show remote cursor
displayMenu.add(() {
final opt = 'zoom-cursor';
final state = PeerBoolOption.find(widget.id, opt);
return MenuEntrySwitch2<String>(
switchType: SwitchType.scheckbox,
text: translate('Zoom cursor'),
getter: () {
return state;
},
setter: (bool v) async {
state.value = v;
await bind.sessionToggleOption(id: widget.id, value: opt);
},
padding: padding,
dismissOnClicked: true,
);
}());
/// Show remote cursor scaling with image
if (widget.state.viewStyle.value != kRemoteViewStyleOriginal) {
displayMenu.add(() {
final opt = 'zoom-cursor';
final state = PeerBoolOption.find(widget.id, opt);
return MenuEntrySwitch2<String>(
switchType: SwitchType.scheckbox,
text: translate('Zoom cursor'),
getter: () {
return state;
},
setter: (bool v) async {
state.value = v;
await bind.sessionToggleOption(id: widget.id, value: opt);
},
padding: padding,
dismissOnClicked: true,
);
}());
}
/// Show quality monitor
displayMenu.add(MenuEntrySwitch<String>(
@@ -1179,7 +1193,6 @@ class _RemoteMenubarState extends State<RemoteMenubar> {
optionSetter: (String oldValue, String newValue) async {
await bind.sessionSetKeyboardMode(
id: widget.id, keyboardMode: newValue);
widget.ffi.canvasModel.updateViewStyle();
},
)
];