diff --git a/flutter/lib/common/widgets/dialog.dart b/flutter/lib/common/widgets/dialog.dart index d1e14d2fb..d45509096 100644 --- a/flutter/lib/common/widgets/dialog.dart +++ b/flutter/lib/common/widgets/dialog.dart @@ -1248,25 +1248,41 @@ customImageQualityDialog(SessionID sessionId, String id, FFI ffi) async { double fpsInitValue = 30; bool qualitySet = false; bool fpsSet = false; + + bool? direct; + try { + direct = + ConnectionTypeState.find(id).direct.value == ConnectionType.strDirect; + } catch (_) {} + bool hideFps = (await bind.mainIsUsingPublicServer() && direct != true) || + versionCmp(ffi.ffiModel.pi.version, '1.2.0') < 0; + bool hideMoreQuality = + (await bind.mainIsUsingPublicServer() && direct != true) || + versionCmp(ffi.ffiModel.pi.version, '1.2.2') < 0; + setCustomValues({double? quality, double? fps}) async { if (quality != null) { qualitySet = true; await bind.sessionSetCustomImageQuality( sessionId: sessionId, value: quality.toInt()); + print("quality:$quality"); } if (fps != null) { fpsSet = true; await bind.sessionSetCustomFps(sessionId: sessionId, fps: fps.toInt()); + print("fps:$fps"); } if (!qualitySet) { qualitySet = true; await bind.sessionSetCustomImageQuality( sessionId: sessionId, value: qualityInitValue.toInt()); + print("qualityInitValue:$qualityInitValue"); } - if (!fpsSet) { + if (!hideFps && !fpsSet) { fpsSet = true; await bind.sessionSetCustomFps( sessionId: sessionId, fps: fpsInitValue.toInt()); + print("fpsInitValue:$fpsInitValue"); } } @@ -1279,7 +1295,9 @@ customImageQualityDialog(SessionID sessionId, String id, FFI ffi) async { final quality = await bind.sessionGetCustomImageQuality(sessionId: sessionId); qualityInitValue = quality != null && quality.isNotEmpty ? quality[0].toDouble() : 50.0; - if (qualityInitValue < 10 || qualityInitValue > 2000) { + if ((hideMoreQuality && qualityInitValue > 100) || + qualityInitValue < 10 || + qualityInitValue > 2000) { qualityInitValue = 50; } // fps @@ -1289,20 +1307,14 @@ customImageQualityDialog(SessionID sessionId, String id, FFI ffi) async { if (fpsInitValue < 5 || fpsInitValue > 120) { fpsInitValue = 30; } - bool? direct; - try { - direct = - ConnectionTypeState.find(id).direct.value == ConnectionType.strDirect; - } catch (_) {} - bool notShowFps = (await bind.mainIsUsingPublicServer() && direct != true) || - versionCmp(ffi.ffiModel.pi.version, '1.2.0') < 0; final content = customImageQualityWidget( initQuality: qualityInitValue, initFps: fpsInitValue, setQuality: (v) => setCustomValues(quality: v), setFps: (v) => setCustomValues(fps: v), - showFps: !notShowFps); + showFps: !hideFps, + showMoreQuality: !hideMoreQuality); msgBoxCommon(ffi.dialogManager, 'Custom Image Quality', content, [btnClose]); } diff --git a/flutter/lib/common/widgets/setting_widgets.dart b/flutter/lib/common/widgets/setting_widgets.dart index 771b65ab5..b0a4f1a92 100644 --- a/flutter/lib/common/widgets/setting_widgets.dart +++ b/flutter/lib/common/widgets/setting_widgets.dart @@ -10,7 +10,11 @@ customImageQualityWidget( required double initFps, required Function(double) setQuality, required Function(double) setFps, - required bool showFps}) { + required bool showFps, + required bool showMoreQuality}) { + if (!showMoreQuality && initQuality > 100) { + initQuality = 50; + } final qualityValue = initQuality.obs; final fpsValue = initFps.obs; @@ -69,7 +73,7 @@ customImageQualityWidget( style: const TextStyle(fontSize: 15), )), // mobile doesn't have enough space - if (!isMobile) + if (showMoreQuality && !isMobile) Expanded( flex: 1, child: Row( @@ -85,7 +89,7 @@ customImageQualityWidget( )) ], )), - if (isMobile) + if (showMoreQuality && isMobile) Obx(() => Row( children: [ Expanded( @@ -160,7 +164,8 @@ customImageQualitySetting() { setFps: (v) { bind.mainSetUserDefaultOption(key: fpsKey, value: v.toString()); }, - showFps: true); + showFps: true, + showMoreQuality: true); } Future setServerConfig(