Files
community/Ink Canvas/Resources/Settings.cs
T

950 lines
40 KiB
C#
Raw Normal View History

2026-05-01 17:20:47 +08:00
using Ink_Canvas.Controls.Toolbar;
2026-02-14 00:23:05 +08:00
using Newtonsoft.Json;
2025-08-31 11:43:52 +08:00
using System;
2025-07-15 20:30:10 +08:00
using System.Collections.Generic;
2025-07-28 14:40:44 +08:00
using System.IO;
2025-05-25 09:29:48 +08:00
namespace Ink_Canvas
{
public class Settings
{
[JsonProperty("advanced")]
public Advanced Advanced { get; set; } = new Advanced();
[JsonProperty("appearance")]
public Appearance Appearance { get; set; } = new Appearance();
[JsonProperty("automation")]
public Automation Automation { get; set; } = new Automation();
[JsonProperty("behavior")]
public PowerPointSettings PowerPointSettings { get; set; } = new PowerPointSettings();
[JsonProperty("canvas")]
public Canvas Canvas { get; set; } = new Canvas();
[JsonProperty("gesture")]
public Gesture Gesture { get; set; } = new Gesture();
[JsonProperty("inkToShape")]
public InkToShape InkToShape { get; set; } = new InkToShape();
[JsonProperty("startup")]
public Startup Startup { get; set; } = new Startup();
[JsonProperty("randSettings")]
public RandSettings RandSettings { get; set; } = new RandSettings();
2025-09-06 21:26:46 +08:00
[JsonProperty("modeSettings")]
public ModeSettings ModeSettings { get; set; } = new ModeSettings();
2025-10-02 02:11:54 +08:00
[JsonProperty("camera")]
public CameraSettings Camera { get; set; } = new CameraSettings();
2025-11-02 09:29:06 +08:00
[JsonProperty("dlass")]
public DlassSettings Dlass { get; set; } = new DlassSettings();
[JsonProperty("upload")]
public UploadSettings Upload { get; set; } = new UploadSettings();
2026-02-16 20:22:41 +08:00
[JsonProperty("security")]
public Security Security { get; set; } = new Security();
2026-05-01 17:20:47 +08:00
[JsonProperty("toolbar")]
public ToolbarLayoutSettings Toolbar { get; set; } = new ToolbarLayoutSettings();
2026-02-16 20:22:41 +08:00
}
public class Security
{
[JsonProperty("passwordEnabled")]
public bool PasswordEnabled { get; set; } = false;
[JsonProperty("passwordSalt")]
public string PasswordSalt { get; set; } = "";
[JsonProperty("passwordHash")]
public string PasswordHash { get; set; } = "";
[JsonProperty("requirePasswordOnExit")]
public bool RequirePasswordOnExit { get; set; } = false;
[JsonProperty("requirePasswordOnEnterSettings")]
public bool RequirePasswordOnEnterSettings { get; set; } = false;
[JsonProperty("requirePasswordOnResetConfig")]
public bool RequirePasswordOnResetConfig { get; set; } = false;
2026-03-21 16:30:55 +08:00
[JsonProperty("requirePasswordOnModifyOrClearNameList")]
public bool RequirePasswordOnModifyOrClearNameList { get; set; } = false;
2026-02-16 20:22:41 +08:00
[JsonProperty("enableProcessProtection")]
public bool EnableProcessProtection { get; set; } = true;
2025-05-25 09:29:48 +08:00
}
public class Canvas
{
[JsonProperty("inkWidth")]
public double InkWidth { get; set; } = 2.5;
[JsonProperty("highlighterWidth")]
public double HighlighterWidth { get; set; } = 20;
[JsonProperty("inkAlpha")]
public double InkAlpha { get; set; } = 255;
[JsonProperty("isShowCursor")]
2025-07-28 14:40:44 +08:00
public bool IsShowCursor { get; set; }
2026-03-28 17:11:30 +08:00
/// <summary>笔锋存储值:0 基于点集,1 基于速率,2 关闭,3 实时笔锋(速度与压感混合)。界面下拉顺序为实时笔锋、点集、速率、关闭。</summary>
2025-05-25 09:29:48 +08:00
[JsonProperty("inkStyle")]
2025-07-28 14:40:44 +08:00
public int InkStyle { get; set; }
2025-05-25 09:29:48 +08:00
[JsonProperty("eraserSize")]
public int EraserSize { get; set; } = 2;
2025-08-03 16:46:33 +08:00
[JsonProperty("eraserType")]
2025-07-28 14:40:44 +08:00
public int EraserType { get; set; } // 0 - 图标切换模式 1 - 面积擦 2 - 线条擦
2025-05-25 09:29:48 +08:00
[JsonProperty("eraserShapeType")]
2025-07-28 14:40:44 +08:00
public int EraserShapeType { get; set; } // 0 - 圆形擦 1 - 黑板擦
2025-05-25 09:29:48 +08:00
[JsonProperty("hideStrokeWhenSelecting")]
public bool HideStrokeWhenSelecting { get; set; } = true;
[JsonProperty("fitToCurve")]
2025-07-28 14:40:44 +08:00
public bool FitToCurve { get; set; } // 默认关闭原来的贝塞尔平滑
2025-07-20 15:21:59 +08:00
[JsonProperty("useAdvancedBezierSmoothing")]
public bool UseAdvancedBezierSmoothing { get; set; } = true; // 默认启用高级贝塞尔曲线平滑
2025-07-26 19:03:07 +08:00
[JsonProperty("useAsyncInkSmoothing")]
public bool UseAsyncInkSmoothing { get; set; } = true; // 默认启用异步墨迹平滑
[JsonProperty("useHardwareAcceleration")]
public bool UseHardwareAcceleration { get; set; } = true; // 默认启用硬件加速
[JsonProperty("inkSmoothingQuality")]
2025-07-29 09:02:03 +08:00
public int InkSmoothingQuality { get; set; } = 2; // 0-低质量高性能, 1-平衡, 2-高质量低性能,默认为高质量
2025-07-26 19:03:07 +08:00
[JsonProperty("maxConcurrentSmoothingTasks")]
2025-07-28 14:40:44 +08:00
public int MaxConcurrentSmoothingTasks { get; set; } // 0表示自动检测CPU核心数
2025-05-25 09:29:48 +08:00
[JsonProperty("clearCanvasAndClearTimeMachine")]
2025-07-28 14:40:44 +08:00
public bool ClearCanvasAndClearTimeMachine { get; set; }
2025-06-17 22:05:22 +08:00
[JsonProperty("enablePressureTouchMode")]
2025-07-28 14:40:44 +08:00
public bool EnablePressureTouchMode { get; set; } // 是否启用压感触屏模式
2025-06-17 22:05:22 +08:00
[JsonProperty("disablePressure")]
2025-07-28 14:40:44 +08:00
public bool DisablePressure { get; set; } // 是否屏蔽压感
2025-06-17 22:37:37 +08:00
[JsonProperty("autoStraightenLine")]
public bool AutoStraightenLine { get; set; } = true; // 是否启用直线自动拉直
[JsonProperty("autoStraightenLineThreshold")]
2025-07-24 20:59:21 +08:00
public int AutoStraightenLineThreshold { get; set; } = 80; // 直线自动拉直的长度阈值(像素)
2025-06-29 14:15:20 +08:00
[JsonProperty("highPrecisionLineStraighten")]
public bool HighPrecisionLineStraighten { get; set; } = true; // 是否启用高精度直线拉直
2026-05-02 16:18:53 +08:00
[JsonProperty("pauseStraightenLine")]
public bool PauseStraightenLine { get; set; } = false; // 是否启用停顿拉直(书写中停顿时自动拉直笔画)
2025-06-17 22:37:37 +08:00
[JsonProperty("lineEndpointSnapping")]
public bool LineEndpointSnapping { get; set; } = true; // 是否启用直线端点吸附
[JsonProperty("lineEndpointSnappingThreshold")]
public int LineEndpointSnappingThreshold { get; set; } = 15; // 直线端点吸附的距离阈值(像素)
2025-05-25 09:29:48 +08:00
[JsonProperty("usingWhiteboard")]
2025-07-28 14:40:44 +08:00
public bool UsingWhiteboard { get; set; }
2025-07-16 09:16:36 +08:00
[JsonProperty("customBackgroundColor")]
public string CustomBackgroundColor { get; set; } = "#162924";
2025-05-25 09:29:48 +08:00
[JsonProperty("hyperbolaAsymptoteOption")]
public OptionalOperation HyperbolaAsymptoteOption { get; set; } = OptionalOperation.Ask;
2025-07-21 12:15:56 +08:00
[JsonProperty("isCompressPicturesUploaded")]
2025-07-28 14:40:44 +08:00
public bool IsCompressPicturesUploaded { get; set; }
2025-07-23 23:05:28 +08:00
[JsonProperty("enablePalmEraser")]
2025-07-23 23:10:10 +08:00
public bool EnablePalmEraser { get; set; } = true;
2025-08-30 14:53:50 +08:00
[JsonProperty("palmEraserSensitivity")]
2025-10-01 00:53:22 +08:00
public int PalmEraserSensitivity { get; set; } = 0; // 0-低敏感度, 1-中敏感度, 2-高敏感度
2025-07-27 22:52:04 +08:00
[JsonProperty("clearCanvasAlsoClearImages")]
2025-07-28 00:48:50 +08:00
public bool ClearCanvasAlsoClearImages { get; set; } = true;
2025-08-12 15:45:33 +08:00
[JsonProperty("showCircleCenter")]
2025-08-31 11:43:52 +08:00
public bool ShowCircleCenter { get; set; }
2025-08-23 23:13:39 +08:00
[JsonProperty("enableInkFade")]
2025-10-03 17:08:46 +08:00
public bool EnableInkFade { get; set; } = false;
2025-08-23 23:13:39 +08:00
[JsonProperty("inkFadeTime")]
public int InkFadeTime { get; set; } = 3000; // 墨迹渐隐时间(毫秒)
[JsonProperty("hideInkFadeControlInPenMenu")]
public bool HideInkFadeControlInPenMenu { get; set; } = false; // 是否在笔工具菜单中隐藏墨迹渐隐控制开关
2026-02-14 00:23:05 +08:00
[JsonProperty("enableBrushAutoRestore")]
public bool EnableBrushAutoRestore { get; set; } = false;
[JsonProperty("brushAutoRestoreDelaySeconds")]
public int BrushAutoRestoreDelaySeconds { get; set; } = 30;
[JsonProperty("brushAutoRestoreTimes")]
public string BrushAutoRestoreTimes { get; set; } = "";
[JsonProperty("brushAutoRestoreColor")]
public string BrushAutoRestoreColor { get; set; } = "#FFFF0000";
[JsonProperty("brushAutoRestoreWidth")]
2026-03-03 16:04:20 +08:00
public double BrushAutoRestoreWidth { get; set; } = 5;
2026-02-14 00:23:05 +08:00
[JsonProperty("brushAutoRestoreAlpha")]
public int BrushAutoRestoreAlpha { get; set; } = 255;
2026-02-22 11:25:30 +08:00
[JsonProperty("enableEraserAutoSwitchBack")]
public bool EnableEraserAutoSwitchBack { get; set; } = false;
[JsonProperty("eraserAutoSwitchBackDelaySeconds")]
public int EraserAutoSwitchBackDelaySeconds { get; set; } = 10; // 默认10秒
2026-03-28 16:59:02 +08:00
[JsonProperty("velocityBrushTipMix")]
2026-04-04 22:56:34 +08:00
public double VelocityBrushTipMix { get; set; } = 0.45;
2026-03-28 17:04:50 +08:00
[JsonProperty("enableVelocityBrushTip")]
public bool EnableVelocityBrushTip { get; set; }
2026-04-23 22:17:55 +08:00
/// <summary>为 true 时,白板工具栏「展台」按钮启动希沃视频展台(sweclauncher),否则使用内置展台。</summary>
[JsonProperty("launchSeewoVideoShowcaseForWhiteboardBooth")]
public bool LaunchSeewoVideoShowcaseForWhiteboardBooth { get; set; } = false;
2025-05-25 09:29:48 +08:00
}
public enum OptionalOperation
{
Yes,
No,
Ask
}
public class Gesture
{
[JsonIgnore]
public bool IsEnableTwoFingerGesture => IsEnableTwoFingerZoom || IsEnableTwoFingerTranslate || IsEnableTwoFingerRotation;
[JsonIgnore]
public bool IsEnableTwoFingerGestureTranslateOrRotation => IsEnableTwoFingerTranslate || IsEnableTwoFingerRotation;
[JsonProperty("isEnableMultiTouchMode")]
2025-11-08 20:17:51 +08:00
public bool IsEnableMultiTouchMode { get; set; } = false;
2025-05-25 09:29:48 +08:00
[JsonProperty("isEnableTwoFingerZoom")]
public bool IsEnableTwoFingerZoom { get; set; } = true;
[JsonProperty("isEnableTwoFingerTranslate")]
public bool IsEnableTwoFingerTranslate { get; set; } = true;
[JsonProperty("AutoSwitchTwoFingerGesture")]
public bool AutoSwitchTwoFingerGesture { get; set; } = true;
[JsonProperty("isEnableTwoFingerRotation")]
2025-07-28 14:40:44 +08:00
public bool IsEnableTwoFingerRotation { get; set; }
2025-05-25 09:29:48 +08:00
[JsonProperty("isEnableTwoFingerRotationOnSelection")]
2025-07-28 14:40:44 +08:00
public bool IsEnableTwoFingerRotationOnSelection { get; set; }
2025-05-25 09:29:48 +08:00
}
2025-06-29 11:56:38 +08:00
// 更新通道枚举
public enum UpdateChannel
{
Release,
2026-01-17 17:05:55 +08:00
Preview,
2025-06-29 11:56:38 +08:00
Beta
}
2026-03-28 20:20:44 +08:00
/// <summary>自动更新要下载的安装包架构(与当前运行进程的位数无关)。默认 32 位包;64 位包对应发布物 ZIP 文件名在 .zip 前增加 -x64。</summary>
public enum UpdatePackageArchitecture
{
/// <summary>32 位包,例如 InkCanvasForClass.CE.1.7.0.0.zip</summary>
X86 = 0,
/// <summary>64 位包,例如 InkCanvasForClass.CE.1.7.0.0-x64.zip</summary>
X64 = 1
}
2026-02-06 23:00:57 +08:00
/// <summary>
/// 遥测上传等级
/// </summary>
public enum TelemetryUploadLevel
{
/// <summary>
/// 不上传任何匿名使用数据
/// </summary>
None = 0,
/// <summary>
/// 仅上传基础数据
/// </summary>
Basic = 1,
/// <summary>
/// 上传基础数据 + 可选数据
/// </summary>
Extended = 2
}
2025-05-25 09:29:48 +08:00
public class Startup
{
[JsonProperty("isAutoUpdate")]
public bool IsAutoUpdate { get; set; } = true;
[JsonProperty("isAutoUpdateWithSilence")]
2025-07-28 14:40:44 +08:00
public bool IsAutoUpdateWithSilence { get; set; }
2025-05-25 09:29:48 +08:00
[JsonProperty("isAutoUpdateWithSilenceStartTime")]
2025-06-29 11:56:38 +08:00
public string AutoUpdateWithSilenceStartTime { get; set; } = "06:00";
2025-05-25 09:29:48 +08:00
[JsonProperty("isAutoUpdateWithSilenceEndTime")]
2025-06-29 11:56:38 +08:00
public string AutoUpdateWithSilenceEndTime { get; set; } = "22:00";
[JsonProperty("updateChannel")]
public UpdateChannel UpdateChannel { get; set; } = UpdateChannel.Release;
2026-03-28 20:20:44 +08:00
[JsonProperty("updatePackageArchitecture")]
public UpdatePackageArchitecture UpdatePackageArchitecture { get; set; } = UpdatePackageArchitecture.X86;
2025-06-29 11:56:38 +08:00
[JsonProperty("skippedVersion")]
public string SkippedVersion { get; set; } = "";
2025-12-20 17:45:35 +08:00
[JsonProperty("autoUpdatePauseUntilDate")]
public string AutoUpdatePauseUntilDate { get; set; } = "";
2025-05-25 09:29:48 +08:00
[JsonProperty("isEnableNibMode")]
2025-08-31 11:43:52 +08:00
public bool IsEnableNibMode { get; set; }
2025-05-25 09:29:48 +08:00
[JsonProperty("isFoldAtStartup")]
2025-07-28 14:40:44 +08:00
public bool IsFoldAtStartup { get; set; }
[JsonProperty("crashAction")]
2025-07-28 14:40:44 +08:00
public int CrashAction { get; set; }
2026-02-06 23:00:57 +08:00
[JsonProperty("telemetryUploadLevel")]
public TelemetryUploadLevel TelemetryUploadLevel { get; set; } = TelemetryUploadLevel.None;
2026-02-06 23:54:33 +08:00
[JsonProperty("hasAcceptedTelemetryPrivacy")]
public bool HasAcceptedTelemetryPrivacy { get; set; } = false;
2026-02-14 15:59:10 +08:00
[JsonProperty("hasShownOobe")]
public bool HasShownOobe { get; set; } = false;
2025-05-25 09:29:48 +08:00
}
public class Appearance
{
[JsonProperty("isEnableDisPlayNibModeToggler")]
public bool IsEnableDisPlayNibModeToggler { get; set; } = true;
[JsonProperty("isColorfulViewboxFloatingBar")]
2025-07-28 14:40:44 +08:00
public bool IsColorfulViewboxFloatingBar { get; set; }
2025-05-25 09:29:48 +08:00
// [JsonProperty("enableViewboxFloatingBarScaleTransform")]
// public bool EnableViewboxFloatingBarScaleTransform { get; set; } = false;
[JsonProperty("viewboxFloatingBarScaleTransformValue")]
public double ViewboxFloatingBarScaleTransformValue { get; set; } = 1.0;
2025-08-03 16:46:33 +08:00
[JsonProperty("floatingBarImg")]
2025-07-28 14:40:44 +08:00
public int FloatingBarImg { get; set; }
2025-07-15 20:30:10 +08:00
[JsonProperty("customFloatingBarImgs")]
public List<CustomFloatingBarIcon> CustomFloatingBarImgs { get; set; } = new List<CustomFloatingBarIcon>();
2025-05-25 09:29:48 +08:00
[JsonProperty("viewboxFloatingBarOpacityValue")]
public double ViewboxFloatingBarOpacityValue { get; set; } = 1.0;
[JsonProperty("enableTrayIcon")]
public bool EnableTrayIcon { get; set; } = true;
[JsonProperty("viewboxFloatingBarOpacityInPPTValue")]
public double ViewboxFloatingBarOpacityInPPTValue { get; set; } = 0.5;
[JsonProperty("viewboxBlackBoardScaleTransformValue")]
public double ViewboxBlackBoardScaleTransformValue { get; set; } = 1;
2025-05-25 09:29:48 +08:00
[JsonProperty("isTransparentButtonBackground")]
public bool IsTransparentButtonBackground { get; set; } = true;
[JsonProperty("isShowExitButton")]
public bool IsShowExitButton { get; set; } = true;
[JsonProperty("isShowEraserButton")]
public bool IsShowEraserButton { get; set; } = true;
[JsonProperty("enableTimeDisplayInWhiteboardMode")]
public bool EnableTimeDisplayInWhiteboardMode { get; set; } = true;
[JsonProperty("enableChickenSoupInWhiteboardMode")]
public bool EnableChickenSoupInWhiteboardMode { get; set; } = true;
[JsonProperty("isShowHideControlButton")]
2025-07-28 14:40:44 +08:00
public bool IsShowHideControlButton { get; set; }
2025-05-25 09:29:48 +08:00
[JsonProperty("unFoldButtonImageType")]
2025-07-28 14:40:44 +08:00
public int UnFoldButtonImageType { get; set; }
2025-05-25 09:29:48 +08:00
[JsonProperty("isShowLRSwitchButton")]
2025-07-28 14:40:44 +08:00
public bool IsShowLRSwitchButton { get; set; }
2025-10-01 18:38:01 +08:00
[JsonProperty("enableSplashScreen")]
2025-10-01 22:38:40 +08:00
public bool EnableSplashScreen { get; set; } = false;
[JsonProperty("splashScreenStyle")]
public int SplashScreenStyle { get; set; } = 1; // 0-随机, 1-跟随四季, 2-春季, 3-夏季, 4-秋季, 5-冬季, 6-马年限定
2025-05-25 09:29:48 +08:00
[JsonProperty("isShowQuickPanel")]
public bool IsShowQuickPanel { get; set; } = true;
[JsonProperty("chickenSoupSource")]
public int ChickenSoupSource { get; set; } = 1;
2026-04-05 09:06:20 +08:00
[JsonProperty("hitokotoCategories", NullValueHandling = NullValueHandling.Ignore)]
public List<string> HitokotoCategories { get; set; }
2025-05-25 09:29:48 +08:00
[JsonProperty("isShowModeFingerToggleSwitch")]
public bool IsShowModeFingerToggleSwitch { get; set; } = true;
[JsonProperty("theme")]
2026-05-01 09:31:10 +08:00
public int Theme { get; set; } = 2;
2025-08-31 11:43:52 +08:00
2025-08-11 19:08:05 +08:00
// 浮动栏按钮显示控制
2025-10-01 09:48:44 +08:00
[JsonProperty("useLegacyFloatingBarUI")]
public bool UseLegacyFloatingBarUI { get; set; } = false;
2025-08-11 19:08:05 +08:00
[JsonProperty("isShowShapeButton")]
public bool IsShowShapeButton { get; set; } = true;
[JsonProperty("isShowUndoButton")]
public bool IsShowUndoButton { get; set; } = true;
[JsonProperty("isShowRedoButton")]
public bool IsShowRedoButton { get; set; } = true;
[JsonProperty("isShowClearButton")]
public bool IsShowClearButton { get; set; } = true;
[JsonProperty("isShowWhiteboardButton")]
public bool IsShowWhiteboardButton { get; set; } = true;
[JsonProperty("isShowHideButton")]
2025-08-31 11:43:52 +08:00
public bool IsShowHideButton { get; set; } = true;
2025-08-11 22:42:36 +08:00
[JsonProperty("isShowLassoSelectButton")]
public bool IsShowLassoSelectButton { get; set; } = true;
[JsonProperty("isShowClearAndMouseButton")]
public bool IsShowClearAndMouseButton { get; set; } = true;
2025-08-11 19:18:21 +08:00
[JsonProperty("eraserDisplayOption")]
2025-08-31 09:54:13 +08:00
public int EraserDisplayOption { get; set; }
2025-08-11 20:19:01 +08:00
[JsonProperty("isShowQuickColorPalette")]
2025-08-31 09:54:13 +08:00
public bool IsShowQuickColorPalette { get; set; }
2025-08-12 12:19:55 +08:00
[JsonProperty("quickColorPaletteDisplayMode")]
2025-08-31 11:43:52 +08:00
public int QuickColorPaletteDisplayMode { get; set; } = 1;
2025-09-06 14:48:36 +08:00
[JsonProperty("enableHotkeysInMouseMode")]
2025-10-01 00:53:22 +08:00
public bool EnableHotkeysInMouseMode { get; set; } = false;
2026-03-03 14:33:41 +08:00
[JsonProperty("language")]
public string Language { get; set; } = "";
2025-09-06 14:48:36 +08:00
2025-05-25 09:29:48 +08:00
}
public class PowerPointSettings
{
[JsonProperty("showPPTButton")]
public bool ShowPPTButton { get; set; } = true;
// 每一个数位代表一个选项,2就是开启,1就是关闭
[JsonProperty("pptButtonsDisplayOption")]
public int PPTButtonsDisplayOption { get; set; } = 2222;
// 0居中,+就是往上,-就是往下
[JsonProperty("pptLSButtonPosition")]
2025-07-28 14:40:44 +08:00
public int PPTLSButtonPosition { get; set; }
2025-05-25 09:29:48 +08:00
// 0居中,+就是往上,-就是往下
[JsonProperty("pptRSButtonPosition")]
2025-07-28 14:40:44 +08:00
public int PPTRSButtonPosition { get; set; }
2025-05-25 09:29:48 +08:00
2025-08-23 19:27:30 +08:00
// 0居中,+就是往右,-就是往左
[JsonProperty("pptLBButtonPosition")]
public int PPTLBButtonPosition { get; set; }
// 0居中,+就是往右,-就是往左
[JsonProperty("pptRBButtonPosition")]
public int PPTRBButtonPosition { get; set; }
2025-05-25 09:29:48 +08:00
[JsonProperty("pptSButtonsOption")]
public int PPTSButtonsOption { get; set; } = 221;
[JsonProperty("pptBButtonsOption")]
public int PPTBButtonsOption { get; set; } = 121;
[JsonProperty("enablePPTButtonPageClickable")]
public bool EnablePPTButtonPageClickable { get; set; } = true;
2026-04-30 19:09:55 +08:00
[JsonProperty("enablePPTButtonEnhancedPreview")]
public bool EnablePPTButtonEnhancedPreview { get; set; } = false;
2025-08-23 19:43:09 +08:00
[JsonProperty("enablePPTButtonLongPressPageTurn")]
public bool EnablePPTButtonLongPressPageTurn { get; set; } = true;
2025-12-20 22:56:13 +08:00
[JsonProperty("pptLSButtonOpacity")]
public double PPTLSButtonOpacity { get; set; } = 0.5;
[JsonProperty("pptRSButtonOpacity")]
public double PPTRSButtonOpacity { get; set; } = 0.5;
[JsonProperty("pptLBButtonOpacity")]
public double PPTLBButtonOpacity { get; set; } = 0.5;
[JsonProperty("pptRBButtonOpacity")]
public double PPTRBButtonOpacity { get; set; } = 0.5;
2025-05-25 09:29:48 +08:00
// -- new --
[JsonProperty("powerPointSupport")]
public bool PowerPointSupport { get; set; } = true;
[JsonProperty("isShowCanvasAtNewSlideShow")]
public bool IsShowCanvasAtNewSlideShow { get; set; } = true;
[JsonProperty("isNoClearStrokeOnSelectWhenInPowerPoint")]
public bool IsNoClearStrokeOnSelectWhenInPowerPoint { get; set; } = true;
[JsonProperty("isShowStrokeOnSelectInPowerPoint")]
2025-07-28 14:40:44 +08:00
public bool IsShowStrokeOnSelectInPowerPoint { get; set; }
2025-05-25 09:29:48 +08:00
[JsonProperty("isAutoSaveStrokesInPowerPoint")]
public bool IsAutoSaveStrokesInPowerPoint { get; set; } = true;
[JsonProperty("isAutoSaveScreenShotInPowerPoint")]
2025-07-28 14:40:44 +08:00
public bool IsAutoSaveScreenShotInPowerPoint { get; set; }
2025-05-25 09:29:48 +08:00
[JsonProperty("isNotifyPreviousPage")]
2025-07-28 14:40:44 +08:00
public bool IsNotifyPreviousPage { get; set; }
2025-05-25 09:29:48 +08:00
[JsonProperty("isNotifyHiddenPage")]
public bool IsNotifyHiddenPage { get; set; } = true;
[JsonProperty("isNotifyAutoPlayPresentation")]
public bool IsNotifyAutoPlayPresentation { get; set; } = true;
[JsonProperty("isEnableTwoFingerGestureInPresentationMode")]
2025-07-28 14:40:44 +08:00
public bool IsEnableTwoFingerGestureInPresentationMode { get; set; }
2025-05-25 09:29:48 +08:00
[JsonProperty("isEnableFingerGestureSlideShowControl")]
public bool IsEnableFingerGestureSlideShowControl { get; set; } = true;
[JsonProperty("isSupportWPS")]
2025-07-28 14:40:44 +08:00
public bool IsSupportWPS { get; set; }
2025-07-20 21:14:59 +08:00
[JsonProperty("enableWppProcessKill")]
public bool EnableWppProcessKill { get; set; } = true;
2025-07-21 17:19:27 +08:00
[JsonProperty("isAlwaysGoToFirstPageOnReenter")]
2025-07-28 14:40:44 +08:00
public bool IsAlwaysGoToFirstPageOnReenter { get; set; }
2025-09-06 12:09:06 +08:00
[JsonProperty("enablePowerPointEnhancement")]
2025-10-01 00:53:22 +08:00
public bool EnablePowerPointEnhancement { get; set; } = false;
2025-09-06 19:27:17 +08:00
[JsonProperty("showGestureButtonInSlideShow")]
2025-10-01 00:53:22 +08:00
public bool ShowGestureButtonInSlideShow { get; set; } = false;
2025-12-20 18:37:57 +08:00
[JsonProperty("skipAnimationsWhenGoNext")]
public bool SkipAnimationsWhenGoNext { get; set; } = false;
2025-12-27 22:41:24 +08:00
[JsonProperty("enablePPTTimeCapsule")]
public bool EnablePPTTimeCapsule { get; set; } = true;
[JsonProperty("pptTimeCapsulePosition")]
2026-03-03 16:04:20 +08:00
public int PPTTimeCapsulePosition { get; set; } = 1;
2026-02-06 16:26:18 +08:00
[JsonProperty("useRotPptLink")]
public bool UseRotPptLink { get; set; } = false;
2026-02-22 19:58:47 +08:00
[JsonProperty("showPPTSidebarByDefault")]
public bool ShowPPTSidebarByDefault { get; set; } = false;
2025-05-25 09:29:48 +08:00
}
public class Automation
{
[JsonIgnore]
2025-08-03 16:46:33 +08:00
public bool IsEnableAutoFold =>
2025-05-25 09:29:48 +08:00
IsAutoFoldInEasiNote
|| IsAutoFoldInEasiCamera
|| IsAutoFoldInEasiNote3C
|| IsAutoFoldInEasiNote5C
|| IsAutoFoldInSeewoPincoTeacher
|| IsAutoFoldInHiteTouchPro
|| IsAutoFoldInHiteCamera
|| IsAutoFoldInWxBoardMain
|| IsAutoFoldInOldZyBoard
|| IsAutoFoldInPPTSlideShow
|| IsAutoFoldInMSWhiteboard
|| IsAutoFoldInAdmoxWhiteboard
|| IsAutoFoldInAdmoxBooth
|| IsAutoFoldInQPoint
|| IsAutoFoldInYiYunVisualPresenter
|| IsAutoFoldInMaxHubWhiteboard;
[JsonProperty("isAutoEnterAnnotationModeWhenExitFoldMode")]
2025-07-28 14:40:44 +08:00
public bool IsAutoEnterAnnotationModeWhenExitFoldMode { get; set; }
2025-09-20 11:22:09 +08:00
[JsonProperty("isAutoFoldWhenExitWhiteboard")]
public bool IsAutoFoldWhenExitWhiteboard { get; set; }
2025-05-25 09:29:48 +08:00
[JsonProperty("isAutoFoldInEasiNote")]
2025-07-28 14:40:44 +08:00
public bool IsAutoFoldInEasiNote { get; set; }
2025-05-25 09:29:48 +08:00
[JsonProperty("isAutoFoldInEasiNoteIgnoreDesktopAnno")]
2025-07-28 14:40:44 +08:00
public bool IsAutoFoldInEasiNoteIgnoreDesktopAnno { get; set; }
2025-05-25 09:29:48 +08:00
[JsonProperty("isAutoFoldInEasiCamera")]
2025-07-28 14:40:44 +08:00
public bool IsAutoFoldInEasiCamera { get; set; }
2025-05-25 09:29:48 +08:00
[JsonProperty("isAutoFoldInEasiNote3")]
2025-07-28 14:40:44 +08:00
public bool IsAutoFoldInEasiNote3 { get; set; }
2026-03-03 16:04:20 +08:00
2025-05-25 09:29:48 +08:00
[JsonProperty("isAutoFoldInEasiNote3C")]
2025-07-28 14:40:44 +08:00
public bool IsAutoFoldInEasiNote3C { get; set; }
2025-05-25 09:29:48 +08:00
[JsonProperty("isAutoFoldInEasiNote5C")]
2025-07-28 14:40:44 +08:00
public bool IsAutoFoldInEasiNote5C { get; set; }
2025-05-25 09:29:48 +08:00
[JsonProperty("isAutoFoldInSeewoPincoTeacher")]
2025-07-28 14:40:44 +08:00
public bool IsAutoFoldInSeewoPincoTeacher { get; set; }
2025-05-25 09:29:48 +08:00
[JsonProperty("isAutoFoldInHiteTouchPro")]
2025-07-28 14:40:44 +08:00
public bool IsAutoFoldInHiteTouchPro { get; set; }
2025-05-25 09:29:48 +08:00
[JsonProperty("isAutoFoldInHiteLightBoard")]
2025-07-28 14:40:44 +08:00
public bool IsAutoFoldInHiteLightBoard { get; set; }
2025-05-25 09:29:48 +08:00
[JsonProperty("isAutoFoldInHiteCamera")]
2025-07-28 14:40:44 +08:00
public bool IsAutoFoldInHiteCamera { get; set; }
2025-05-25 09:29:48 +08:00
[JsonProperty("isAutoFoldInWxBoardMain")]
2025-07-28 14:40:44 +08:00
public bool IsAutoFoldInWxBoardMain { get; set; }
2025-05-25 09:29:48 +08:00
/*
[JsonProperty("isAutoFoldInZySmartBoard")]
public bool IsAutoFoldInZySmartBoard { get; set; } = false;
*/
[JsonProperty("isAutoFoldInOldZyBoard")]
2025-07-28 14:40:44 +08:00
public bool IsAutoFoldInOldZyBoard { get; set; }
2025-05-25 09:29:48 +08:00
[JsonProperty("isAutoFoldInMSWhiteboard")]
2025-07-28 14:40:44 +08:00
public bool IsAutoFoldInMSWhiteboard { get; set; }
2025-05-25 09:29:48 +08:00
[JsonProperty("isAutoFoldInAdmoxWhiteboard")]
2025-07-28 14:40:44 +08:00
public bool IsAutoFoldInAdmoxWhiteboard { get; set; }
2025-05-25 09:29:48 +08:00
[JsonProperty("isAutoFoldInAdmoxBooth")]
2025-07-28 14:40:44 +08:00
public bool IsAutoFoldInAdmoxBooth { get; set; }
2025-05-25 09:29:48 +08:00
[JsonProperty("isAutoFoldInQPoint")]
2025-07-28 14:40:44 +08:00
public bool IsAutoFoldInQPoint { get; set; }
2025-05-25 09:29:48 +08:00
[JsonProperty("isAutoFoldInYiYunVisualPresenter")]
2025-07-28 14:40:44 +08:00
public bool IsAutoFoldInYiYunVisualPresenter { get; set; }
2025-05-25 09:29:48 +08:00
[JsonProperty("isAutoFoldInMaxHubWhiteboard")]
2025-07-28 14:40:44 +08:00
public bool IsAutoFoldInMaxHubWhiteboard { get; set; }
2025-05-25 09:29:48 +08:00
[JsonProperty("isAutoFoldInPPTSlideShow")]
2025-07-28 14:40:44 +08:00
public bool IsAutoFoldInPPTSlideShow { get; set; }
2025-05-25 09:29:48 +08:00
[JsonProperty("isAutoFoldAfterPPTSlideShow")]
2025-07-28 14:40:44 +08:00
public bool IsAutoFoldAfterPPTSlideShow { get; set; }
2025-05-25 09:29:48 +08:00
[JsonProperty("isAutoKillPptService")]
2025-07-28 14:40:44 +08:00
public bool IsAutoKillPptService { get; set; }
2025-05-25 09:29:48 +08:00
[JsonProperty("isAutoKillEasiNote")]
2025-07-28 14:40:44 +08:00
public bool IsAutoKillEasiNote { get; set; }
2025-05-25 09:29:48 +08:00
[JsonProperty("isAutoKillHiteAnnotation")]
2025-07-28 14:40:44 +08:00
public bool IsAutoKillHiteAnnotation { get; set; }
2025-05-25 09:29:48 +08:00
[JsonProperty("isAutoKillVComYouJiao")]
2025-07-28 14:40:44 +08:00
public bool IsAutoKillVComYouJiao { get; set; }
2025-05-25 09:29:48 +08:00
[JsonProperty("isAutoKillSeewoLauncher2DesktopAnnotation")]
2025-07-28 14:40:44 +08:00
public bool IsAutoKillSeewoLauncher2DesktopAnnotation { get; set; }
2025-05-25 09:29:48 +08:00
[JsonProperty("isAutoKillInkCanvas")]
2025-07-28 14:40:44 +08:00
public bool IsAutoKillInkCanvas { get; set; }
2025-05-25 09:29:48 +08:00
[JsonProperty("isAutoKillICA")]
2025-07-28 14:40:44 +08:00
public bool IsAutoKillICA { get; set; }
2025-05-25 09:29:48 +08:00
[JsonProperty("isAutoKillIDT")]
2025-07-28 14:40:44 +08:00
public bool IsAutoKillIDT { get; set; }
2025-05-25 09:29:48 +08:00
[JsonProperty("isSaveScreenshotsInDateFolders")]
2025-07-28 14:40:44 +08:00
public bool IsSaveScreenshotsInDateFolders { get; set; }
2025-05-25 09:29:48 +08:00
[JsonProperty("isAutoSaveStrokesAtScreenshot")]
2025-07-28 14:40:44 +08:00
public bool IsAutoSaveStrokesAtScreenshot { get; set; }
2025-05-25 09:29:48 +08:00
[JsonProperty("isAutoSaveStrokesAtClear")]
2025-07-28 14:40:44 +08:00
public bool IsAutoSaveStrokesAtClear { get; set; }
2025-05-25 09:29:48 +08:00
2026-02-19 18:12:19 +08:00
[JsonProperty("isEnablePhotoCorrection")]
public bool IsEnablePhotoCorrection { get; set; } = false;
2025-05-25 09:29:48 +08:00
[JsonProperty("isAutoClearWhenExitingWritingMode")]
2025-07-28 14:40:44 +08:00
public bool IsAutoClearWhenExitingWritingMode { get; set; }
2025-05-25 09:29:48 +08:00
[JsonProperty("minimumAutomationStrokeNumber")]
2025-07-28 14:40:44 +08:00
public int MinimumAutomationStrokeNumber { get; set; }
2025-05-25 09:29:48 +08:00
[JsonProperty("autoSavedStrokesLocation")]
2025-09-13 21:10:36 +08:00
public string AutoSavedStrokesLocation = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Saves");
2025-05-25 09:29:48 +08:00
[JsonProperty("autoDelSavedFiles")]
2025-07-28 14:40:44 +08:00
public bool AutoDelSavedFiles;
2025-05-25 09:29:48 +08:00
[JsonProperty("autoDelSavedFilesDaysThreshold")]
public int AutoDelSavedFilesDaysThreshold = 15;
2025-08-03 16:46:33 +08:00
[JsonProperty("keepFoldAfterSoftwareExit")]
2025-10-01 00:53:22 +08:00
public bool KeepFoldAfterSoftwareExit { get; set; } = false;
2025-07-16 09:49:41 +08:00
[JsonProperty("isSaveFullPageStrokes")]
2025-07-28 14:40:44 +08:00
public bool IsSaveFullPageStrokes;
2026-05-01 14:51:56 +08:00
[JsonProperty("isUseCustomSaveFileName")]
public bool IsUseCustomSaveFileName { get; set; } = false;
[JsonProperty("customSaveFileNameTemplate")]
public string CustomSaveFileNameTemplate { get; set; } = "{datetime}";
2025-12-28 00:08:08 +08:00
[JsonProperty("isSaveStrokesAsXML")]
public bool IsSaveStrokesAsXML { get; set; } = false;
[JsonProperty("isAutoEnterAnnotationAfterKillHite")]
2025-07-28 14:40:44 +08:00
public bool IsAutoEnterAnnotationAfterKillHite { get; set; }
2025-09-13 15:34:50 +08:00
2025-11-01 20:42:18 +08:00
[JsonProperty("isEnableAutoSaveStrokes")]
public bool IsEnableAutoSaveStrokes { get; set; } = true;
[JsonProperty("autoSaveStrokesIntervalMinutes")]
public int AutoSaveStrokesIntervalMinutes { get; set; } = 5;
[JsonProperty("thoroughlyHideWhenFolded")]
public bool ThoroughlyHideWhenFolded { get; set; } = false;
2025-09-13 15:34:50 +08:00
[JsonProperty("floatingWindowInterceptor")]
public FloatingWindowInterceptorSettings FloatingWindowInterceptor { get; set; } = new FloatingWindowInterceptorSettings();
}
public class FloatingWindowInterceptorSettings
{
[JsonProperty("isEnabled")]
2025-10-01 00:53:22 +08:00
public bool IsEnabled { get; set; } = false;
2025-09-13 15:34:50 +08:00
[JsonProperty("scanIntervalMs")]
2025-10-03 17:08:46 +08:00
public int ScanIntervalMs { get; set; } = 5000;
2025-09-30 16:55:44 +08:00
[JsonProperty("autoStart")]
2025-10-01 00:53:22 +08:00
public bool AutoStart { get; set; } = false;
2025-09-30 16:55:44 +08:00
[JsonProperty("showNotifications")]
public bool ShowNotifications { get; set; } = true;
2025-09-13 15:34:50 +08:00
[JsonProperty("interceptRules")]
public Dictionary<string, bool> InterceptRules { get; set; } = new Dictionary<string, bool>
{
2026-04-30 23:33:05 +08:00
{ "SeewoWhiteboard3Floating", false },
{ "SeewoWhiteboard5Floating", false },
{ "SeewoWhiteboard5CFloating", false },
{ "SeewoPincoSideBarFloating", false },
{ "SeewoPincoDrawingFloating", false },
{ "SeewoPincoBoardService", false },
{ "SeewoPPTFloating", false },
{ "AiClassFloating", false },
{ "HiteAnnotationFloating", false },
{ "ChangYanFloating", false },
{ "ChangYanBrushSettings", false },
{ "ChangYanSwipeClear", false },
{ "ChangYanInteraction", false },
{ "ChangYanSubjectApp", false },
{ "ChangYanControl", false },
{ "ChangYanCommonTools", false },
{ "ChangYanSceneToolbar", false },
{ "ChangYanDrawWindow", false },
{ "ChangYanPptFloating", false },
{ "ChangYanPptPageControl", false },
{ "ChangYanPptGoBack", false },
{ "ChangYanPptPreview", false },
{ "IntelligentClassFloating", false },
{ "IntelligentClassPptFloating", false },
{ "SeewoDesktopAnnotationFloating", false },
{ "SeewoDesktopSideBarFloating", false }
2025-09-13 15:34:50 +08:00
};
2025-05-25 09:29:48 +08:00
}
public class Advanced
{
[JsonProperty("isSpecialScreen")]
2025-07-28 14:40:44 +08:00
public bool IsSpecialScreen { get; set; }
2025-05-25 09:29:48 +08:00
[JsonProperty("isQuadIR")]
2025-07-28 14:40:44 +08:00
public bool IsQuadIR { get; set; }
2025-05-25 09:29:48 +08:00
[JsonProperty("touchMultiplier")]
public double TouchMultiplier { get; set; } = 0.25;
[JsonProperty("nibModeBoundsWidth")]
public int NibModeBoundsWidth { get; set; } = 10;
[JsonProperty("fingerModeBoundsWidth")]
public int FingerModeBoundsWidth { get; set; } = 30;
2025-09-20 14:02:29 +08:00
[JsonProperty("nibModeBoundsWidthThresholdValue")]
public double NibModeBoundsWidthThresholdValue { get; set; } = 2.5;
[JsonProperty("fingerModeBoundsWidthThresholdValue")]
public double FingerModeBoundsWidthThresholdValue { get; set; } = 2.5;
[JsonProperty("nibModeBoundsWidthEraserSize")]
public double NibModeBoundsWidthEraserSize { get; set; } = 0.8;
[JsonProperty("fingerModeBoundsWidthEraserSize")]
public double FingerModeBoundsWidthEraserSize { get; set; } = 0.8;
2025-05-25 09:29:48 +08:00
[JsonProperty("eraserBindTouchMultiplier")]
2025-07-28 14:40:44 +08:00
public bool EraserBindTouchMultiplier { get; set; }
2025-05-25 09:29:48 +08:00
[JsonProperty("isLogEnabled")]
public bool IsLogEnabled { get; set; } = true;
2025-08-03 16:46:33 +08:00
2025-06-29 12:40:15 +08:00
[JsonProperty("isSaveLogByDate")]
public bool IsSaveLogByDate { get; set; } = true;
2025-05-25 09:29:48 +08:00
2026-05-01 00:27:29 +08:00
[JsonProperty("isDebugConsoleEnabled")]
public bool IsDebugConsoleEnabled { get; set; } = false;
2025-05-25 09:29:48 +08:00
[JsonProperty("isEnableFullScreenHelper")]
2025-07-28 14:40:44 +08:00
public bool IsEnableFullScreenHelper { get; set; }
2025-05-25 09:29:48 +08:00
[JsonProperty("isEnableEdgeGestureUtil")]
2025-07-28 14:40:44 +08:00
public bool IsEnableEdgeGestureUtil { get; set; }
2025-05-25 09:29:48 +08:00
[JsonProperty("edgeGestureUtilOnlyAffectBlackboardMode")]
2025-07-28 14:40:44 +08:00
public bool EdgeGestureUtilOnlyAffectBlackboardMode { get; set; }
2025-05-25 09:29:48 +08:00
[JsonProperty("isEnableForceFullScreen")]
2025-07-28 14:40:44 +08:00
public bool IsEnableForceFullScreen { get; set; }
2025-05-25 09:29:48 +08:00
[JsonProperty("isEnableResolutionChangeDetection")]
2025-07-28 14:40:44 +08:00
public bool IsEnableResolutionChangeDetection { get; set; }
2025-05-25 09:29:48 +08:00
[JsonProperty("isEnableDPIChangeDetection")]
2025-07-28 14:40:44 +08:00
public bool IsEnableDPIChangeDetection { get; set; }
2025-05-25 09:29:48 +08:00
[JsonProperty("isSecondConfirmWhenShutdownApp")]
2025-07-28 14:40:44 +08:00
public bool IsSecondConfirmWhenShutdownApp { get; set; }
2025-06-06 11:39:40 +08:00
[JsonProperty("isEnableAvoidFullScreenHelper")]
public bool IsEnableAvoidFullScreenHelper { get; set; } = true;
2025-08-03 16:46:33 +08:00
2025-07-16 15:28:36 +08:00
[JsonProperty("isAutoBackupBeforeUpdate")]
public bool IsAutoBackupBeforeUpdate { get; set; } = true;
2025-07-25 18:21:16 +08:00
2025-10-01 00:01:35 +08:00
[JsonProperty("isAutoBackupEnabled")]
public bool IsAutoBackupEnabled { get; set; } = true;
[JsonProperty("autoBackupIntervalDays")]
public int AutoBackupIntervalDays { get; set; } = 7;
[JsonProperty("lastAutoBackupTime")]
public DateTime LastAutoBackupTime { get; set; } = DateTime.MinValue;
2025-07-25 18:21:16 +08:00
[JsonProperty("isNoFocusMode")]
public bool IsNoFocusMode { get; set; } = true;
[JsonProperty("isAlwaysOnTop")]
public bool IsAlwaysOnTop { get; set; } = true;
2025-10-18 18:26:13 +08:00
[JsonProperty("enableUIAccessTopMost")]
public bool EnableUIAccessTopMost { get; set; } = false;
2025-12-13 17:03:58 +08:00
2026-02-04 11:09:49 +08:00
[JsonProperty("isEnableUriScheme")]
public bool IsEnableUriScheme { get; set; } = false;
2025-12-13 17:03:58 +08:00
[JsonProperty("windowMode")]
2025-12-20 13:56:46 +08:00
public bool WindowMode { get; set; } = true;
2026-04-30 18:28:39 +08:00
[JsonProperty("enableMultiScreenSupport")]
public bool EnableMultiScreenSupport { get; set; } = true;
[JsonProperty("followMouseForScreenSelection")]
public bool FollowMouseForScreenSelection { get; set; } = true;
2025-05-25 09:29:48 +08:00
}
public class InkToShape
{
[JsonProperty("isInkToShapeEnabled")]
public bool IsInkToShapeEnabled { get; set; } = true;
[JsonProperty("isInkToShapeNoFakePressureRectangle")]
2025-07-28 14:40:44 +08:00
public bool IsInkToShapeNoFakePressureRectangle { get; set; }
2025-05-25 09:29:48 +08:00
[JsonProperty("isInkToShapeNoFakePressureTriangle")]
2025-07-28 14:40:44 +08:00
public bool IsInkToShapeNoFakePressureTriangle { get; set; }
2025-05-25 09:29:48 +08:00
[JsonProperty("isInkToShapeTriangle")]
public bool IsInkToShapeTriangle { get; set; } = true;
[JsonProperty("isInkToShapeRectangle")]
public bool IsInkToShapeRectangle { get; set; } = true;
[JsonProperty("isInkToShapeRounded")]
public bool IsInkToShapeRounded { get; set; } = true;
2025-06-18 15:10:33 +08:00
[JsonProperty("lineStraightenSensitivity")]
2025-11-29 22:20:13 +08:00
public double LineStraightenSensitivity { get; set; } = 0.20;
[JsonProperty("lineNormalizationThreshold")]
2025-12-20 13:56:46 +08:00
public double LineNormalizationThreshold { get; set; } = 0.5;
2026-03-28 17:40:14 +08:00
[JsonProperty("shapeRecognitionEngine")]
public int ShapeRecognitionEngine { get; set; }
2026-03-29 12:24:13 +08:00
[JsonProperty("enableWinRtHandwritingStrokeBeautify")]
public bool EnableWinRtHandwritingStrokeBeautify { get; set; }
[JsonProperty("handwritingCorrectionFontFamily")]
public string HandwritingCorrectionFontFamily { get; set; } = "Ink Free,KaiTi,Segoe Script";
2025-05-25 09:29:48 +08:00
}
2025-08-03 16:46:33 +08:00
public class RandSettings
{
2025-05-25 09:29:48 +08:00
[JsonProperty("displayRandWindowNamesInputBtn")]
2025-07-28 14:40:44 +08:00
public bool DisplayRandWindowNamesInputBtn { get; set; }
2025-05-25 09:29:48 +08:00
[JsonProperty("randWindowOnceCloseLatency")]
public double RandWindowOnceCloseLatency { get; set; } = 2.5;
[JsonProperty("randWindowOnceMaxStudents")]
public int RandWindowOnceMaxStudents { get; set; } = 10;
[JsonProperty("showRandomAndSingleDraw")]
public bool ShowRandomAndSingleDraw { get; set; } = true;
2025-06-29 13:01:33 +08:00
[JsonProperty("directCallCiRand")]
2025-07-28 14:40:44 +08:00
public bool DirectCallCiRand { get; set; }
2025-09-13 12:08:45 +08:00
[JsonProperty("externalCallerType")]
2025-10-03 17:08:46 +08:00
public int ExternalCallerType { get; set; } = 0;
2025-07-15 20:50:12 +08:00
[JsonProperty("selectedBackgroundIndex")]
2025-07-28 14:40:44 +08:00
public int SelectedBackgroundIndex { get; set; }
2025-07-15 20:50:12 +08:00
[JsonProperty("customPickNameBackgrounds")]
public List<CustomPickNameBackground> CustomPickNameBackgrounds { get; set; } = new List<CustomPickNameBackground>();
2025-10-01 00:54:03 +08:00
[JsonProperty("useLegacyTimerUI")]
public bool UseLegacyTimerUI { get; set; } = false;
2025-10-12 17:17:51 +08:00
[JsonProperty("useNewStyleUI")]
public bool UseNewStyleUI { get; set; } = true;
2025-10-01 00:54:03 +08:00
[JsonProperty("timerVolume")]
public double TimerVolume { get; set; } = 1.0;
[JsonProperty("customTimerSoundPath")]
public string CustomTimerSoundPath { get; set; } = "";
2025-10-12 17:17:51 +08:00
[JsonProperty("enableOvertimeCountUp")]
public bool EnableOvertimeCountUp { get; set; } = false;
[JsonProperty("enableOvertimeRedText")]
public bool EnableOvertimeRedText { get; set; } = false;
2025-10-12 17:44:44 +08:00
[JsonProperty("enableProgressiveReminder")]
public bool EnableProgressiveReminder { get; set; } = false;
[JsonProperty("progressiveReminderVolume")]
public double ProgressiveReminderVolume { get; set; } = 1.0;
[JsonProperty("progressiveReminderSoundPath")]
public string ProgressiveReminderSoundPath { get; set; } = "";
2025-10-26 00:00:13 +08:00
[JsonProperty("useNewRollCallUI")]
public bool UseNewRollCallUI { get; set; } = true;
[JsonProperty("enableMLAvoidance")]
public bool EnableMLAvoidance { get; set; } = true;
[JsonProperty("mlAvoidanceHistoryCount")]
2025-11-29 16:58:40 +08:00
public int MLAvoidanceHistoryCount { get; set; } = 50;
2025-10-26 00:00:13 +08:00
[JsonProperty("mlAvoidanceWeight")]
2025-11-29 16:58:40 +08:00
public double MLAvoidanceWeight { get; set; } = 1.0;
2025-10-26 00:21:10 +08:00
[JsonProperty("enableQuickDraw")]
public bool EnableQuickDraw { get; set; } = true;
2025-07-15 20:50:12 +08:00
}
2025-08-03 16:46:33 +08:00
2025-07-15 20:50:12 +08:00
public class CustomPickNameBackground
{
[JsonProperty("name")]
public string Name { get; set; }
2025-08-03 16:46:33 +08:00
2025-07-15 20:50:12 +08:00
[JsonProperty("filePath")]
public string FilePath { get; set; }
2025-08-03 16:46:33 +08:00
2025-07-15 20:50:12 +08:00
public CustomPickNameBackground(string name, string filePath)
{
Name = name;
FilePath = filePath;
}
2025-08-03 16:46:33 +08:00
2025-07-15 20:50:12 +08:00
// 用于JSON序列化
public CustomPickNameBackground() { }
2025-05-25 09:29:48 +08:00
}
2025-08-03 16:46:33 +08:00
2025-07-15 20:30:10 +08:00
public class CustomFloatingBarIcon
{
[JsonProperty("name")]
public string Name { get; set; }
2025-08-03 16:46:33 +08:00
2025-07-15 20:30:10 +08:00
[JsonProperty("filePath")]
public string FilePath { get; set; }
2025-08-03 16:46:33 +08:00
2025-07-15 20:30:10 +08:00
public CustomFloatingBarIcon(string name, string filePath)
{
Name = name;
FilePath = filePath;
}
2025-08-03 16:46:33 +08:00
2025-07-15 20:30:10 +08:00
// 用于JSON序列化
public CustomFloatingBarIcon() { }
}
2025-09-06 21:26:46 +08:00
public class ModeSettings
{
[JsonProperty("isPPTOnlyMode")]
2025-10-01 00:53:22 +08:00
public bool IsPPTOnlyMode { get; set; } = false; // 是否为仅PPT模式,默认为false(正常模式)
2025-09-06 21:26:46 +08:00
}
2025-10-02 02:11:54 +08:00
public class CameraSettings
{
[JsonProperty("rotationAngle")]
2025-10-03 17:08:46 +08:00
public int RotationAngle { get; set; } = 0;
2025-10-02 02:11:54 +08:00
[JsonProperty("resolutionWidth")]
2025-10-03 17:08:46 +08:00
public int ResolutionWidth { get; set; } = 1920;
2025-10-02 02:11:54 +08:00
[JsonProperty("resolutionHeight")]
2025-10-03 17:08:46 +08:00
public int ResolutionHeight { get; set; } = 1080;
2025-10-02 02:11:54 +08:00
[JsonProperty("selectedCameraIndex")]
2025-10-03 17:08:46 +08:00
public int SelectedCameraIndex { get; set; } = 0;
2025-10-02 02:11:54 +08:00
}
2025-11-02 09:29:06 +08:00
public class DlassSettings
{
[JsonProperty("userToken")]
public string UserToken { get; set; } = string.Empty;
[JsonProperty("savedTokens")]
public List<string> SavedTokens { get; set; } = new List<string>();
2025-11-02 09:41:53 +08:00
[JsonProperty("selectedClassName")]
public string SelectedClassName { get; set; } = string.Empty;
2025-11-02 09:29:06 +08:00
[JsonProperty("apiBaseUrl")]
public string ApiBaseUrl { get; set; } = "https://dlass.tech";
2025-11-02 10:11:15 +08:00
[JsonProperty("isAutoUploadNotes")]
public bool IsAutoUploadNotes { get; set; } = false;
private int _autoUploadDelayMinutes = 0;
2025-11-02 10:11:15 +08:00
[JsonProperty("autoUploadDelayMinutes")]
public int AutoUploadDelayMinutes
{
get { return _autoUploadDelayMinutes; }
set { _autoUploadDelayMinutes = Math.Max(0, value); }
}
[JsonProperty("webDavUrl")]
public string WebDavUrl { get; set; } = string.Empty;
[JsonProperty("webDavUsername")]
public string WebDavUsername { get; set; } = string.Empty;
[JsonProperty("webDavPassword")]
public string WebDavPassword { get; set; } = string.Empty;
[JsonProperty("webDavRootDirectory")]
public string WebDavRootDirectory { get; set; } = string.Empty;
}
public class UploadSettings
{
[JsonProperty("uploadDelayMinutes")]
public int UploadDelayMinutes
{
get { return _uploadDelayMinutes; }
set { _uploadDelayMinutes = Math.Max(0, Math.Min(60, value)); }
}
private int _uploadDelayMinutes = 0;
[JsonProperty("enabledProviders")]
public List<string> EnabledProviders
{
get { return _enabledProviders; }
set { _enabledProviders = value ?? new List<string>(); }
}
private List<string> _enabledProviders = new List<string>();
2025-11-02 09:29:06 +08:00
}
2025-07-12 15:59:09 +08:00
}