From 5cc1c7093a3f449e77f0d5fd27159d1fb229e6da Mon Sep 17 00:00:00 2001 From: CJKmkp <2564608840@qq.com> Date: Sat, 7 Feb 2026 10:37:51 +0800 Subject: [PATCH] =?UTF-8?q?add:=E6=96=B0=E8=AE=BE=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../SettingsViews/AdvancedPanel.xaml.cs | 61 +++++++++++++++- .../SettingsViews/CanvasAndInkPanel.xaml.cs | 73 ++++++++++++++++++- .../SettingsViews/GesturesPanel.xaml.cs | 36 ++++++++- .../SettingsViews/LuckyRandomPanel.xaml.cs | 43 ++++++++++- .../SettingsViews/PowerPointPanel.xaml.cs | 65 ++++++++++++++++- .../SettingsViews/SnapshotPanel.xaml.cs | 46 +++++++++++- .../SettingsViews/StartupPanel.xaml.cs | 50 ++++++++++++- .../SettingsViews/ThemePanel.xaml.cs | 50 ++++++++++++- 8 files changed, 392 insertions(+), 32 deletions(-) diff --git a/Ink Canvas/Windows/SettingsViews/SettingsViews/AdvancedPanel.xaml.cs b/Ink Canvas/Windows/SettingsViews/SettingsViews/AdvancedPanel.xaml.cs index 4e552d6b..7397a301 100644 --- a/Ink Canvas/Windows/SettingsViews/SettingsViews/AdvancedPanel.xaml.cs +++ b/Ink Canvas/Windows/SettingsViews/SettingsViews/AdvancedPanel.xaml.cs @@ -232,6 +232,55 @@ namespace Ink_Canvas.Windows.SettingsViews } } + private bool GetCurrentSettingValue(string tag) + { + if (MainWindow.Settings?.Advanced == null) return false; + + try + { + var advanced = MainWindow.Settings.Advanced; + switch (tag) + { + case "IsSpecialScreen": + return advanced.IsSpecialScreen; + case "EraserBindTouchMultiplier": + return advanced.EraserBindTouchMultiplier; + case "IsQuadIR": + return advanced.IsQuadIR; + case "IsLogEnabled": + return advanced.IsLogEnabled; + case "IsSaveLogByDate": + return advanced.IsSaveLogByDate; + case "IsSecondConfirmWhenShutdownApp": + return advanced.IsSecondConfirmWhenShutdownApp; + case "IsEnableFullScreenHelper": + return advanced.IsEnableFullScreenHelper; + case "IsEnableAvoidFullScreenHelper": + return advanced.IsEnableAvoidFullScreenHelper; + case "IsEnableEdgeGestureUtil": + return advanced.IsEnableEdgeGestureUtil; + case "IsEnableForceFullScreen": + return advanced.IsEnableForceFullScreen; + case "IsEnableDPIChangeDetection": + return advanced.IsEnableDPIChangeDetection; + case "IsEnableResolutionChangeDetection": + return advanced.IsEnableResolutionChangeDetection; + case "IsAutoBackupBeforeUpdate": + return advanced.IsAutoBackupBeforeUpdate; + case "IsAutoBackupEnabled": + return advanced.IsAutoBackupEnabled; + case "IsEnableUriScheme": + return advanced.IsEnableUriScheme; + default: + return false; + } + } + catch + { + return false; + } + } + /// /// ToggleSwitch点击事件处理 /// @@ -242,13 +291,13 @@ namespace Ink_Canvas.Windows.SettingsViews var border = sender as Border; if (border == null) return; - bool isOn = border.Background.ToString() == "#FF3584E4"; - bool newState = !isOn; - SetToggleSwitchState(border, newState); - string tag = border.Tag?.ToString(); if (string.IsNullOrEmpty(tag)) return; + bool currentState = GetCurrentSettingValue(tag); + bool newState = !currentState; + SetToggleSwitchState(border, newState); + var advanced = MainWindow.Settings.Advanced; if (advanced == null) return; @@ -526,6 +575,10 @@ namespace Ink_Canvas.Windows.SettingsViews try { ThemeHelper.ApplyThemeToControl(this); + if (_isLoaded) + { + LoadSettings(); + } } catch (Exception ex) { diff --git a/Ink Canvas/Windows/SettingsViews/SettingsViews/CanvasAndInkPanel.xaml.cs b/Ink Canvas/Windows/SettingsViews/SettingsViews/CanvasAndInkPanel.xaml.cs index 5e521781..e157cab5 100644 --- a/Ink Canvas/Windows/SettingsViews/SettingsViews/CanvasAndInkPanel.xaml.cs +++ b/Ink Canvas/Windows/SettingsViews/SettingsViews/CanvasAndInkPanel.xaml.cs @@ -230,6 +230,67 @@ namespace Ink_Canvas.Windows.SettingsViews } } + private bool GetCurrentSettingValue(string tag) + { + if (MainWindow.Settings?.Canvas == null) return false; + + try + { + var canvas = MainWindow.Settings.Canvas; + switch (tag) + { + case "ShowCursor": + return canvas.IsShowCursor; + case "EnablePressureTouchMode": + return canvas.EnablePressureTouchMode; + case "DisablePressure": + return canvas.DisablePressure; + case "HideStrokeWhenSelecting": + return canvas.HideStrokeWhenSelecting; + case "ClearCanvasAndClearTimeMachine": + return canvas.ClearCanvasAndClearTimeMachine; + case "ClearCanvasAlsoClearImages": + return canvas.ClearCanvasAlsoClearImages; + case "CompressPicturesUploaded": + return canvas.IsCompressPicturesUploaded; + case "ShowCircleCenter": + return canvas.ShowCircleCenter; + case "FitToCurve": + return canvas.FitToCurve && !canvas.UseAdvancedBezierSmoothing; + case "AdvancedBezierSmoothing": + return canvas.UseAdvancedBezierSmoothing; + case "UseAsyncInkSmoothing": + return canvas.UseAsyncInkSmoothing; + case "UseHardwareAcceleration": + return canvas.UseHardwareAcceleration; + case "AutoStraightenLine": + return canvas.AutoStraightenLine; + case "HighPrecisionLineStraighten": + return canvas.HighPrecisionLineStraighten; + case "LineEndpointSnapping": + return canvas.LineEndpointSnapping; + case "EnableInkFade": + return canvas.EnableInkFade; + case "HideInkFadeControlInPenMenu": + return canvas.HideInkFadeControlInPenMenu; + case "EnableAutoSaveStrokes": + return MainWindow.Settings.Automation?.IsEnableAutoSaveStrokes ?? false; + case "SaveFullPageStrokes": + return MainWindow.Settings.Automation?.IsSaveFullPageStrokes ?? false; + case "SaveStrokesAsXML": + return MainWindow.Settings.Automation?.IsSaveStrokesAsXML ?? false; + case "AutoSaveStrokesInPowerPoint": + return MainWindow.Settings.PowerPointSettings?.IsAutoSaveStrokesInPowerPoint ?? false; + default: + return false; + } + } + catch + { + return false; + } + } + /// /// ToggleSwitch点击事件处理 /// @@ -240,13 +301,13 @@ namespace Ink_Canvas.Windows.SettingsViews var border = sender as Border; if (border == null) return; - bool isOn = border.Background.ToString() == "#FF3584E4"; - bool newState = !isOn; - SetToggleSwitchState(border, newState); - string tag = border.Tag?.ToString(); if (string.IsNullOrEmpty(tag)) return; + bool currentState = GetCurrentSettingValue(tag); + bool newState = !currentState; + SetToggleSwitchState(border, newState); + var canvas = MainWindow.Settings.Canvas; if (canvas == null) return; @@ -602,6 +663,10 @@ namespace Ink_Canvas.Windows.SettingsViews try { ThemeHelper.ApplyThemeToControl(this); + if (_isLoaded) + { + LoadSettings(); + } } catch (Exception ex) { diff --git a/Ink Canvas/Windows/SettingsViews/SettingsViews/GesturesPanel.xaml.cs b/Ink Canvas/Windows/SettingsViews/SettingsViews/GesturesPanel.xaml.cs index 914e46cd..6edb3fbf 100644 --- a/Ink Canvas/Windows/SettingsViews/SettingsViews/GesturesPanel.xaml.cs +++ b/Ink Canvas/Windows/SettingsViews/SettingsViews/GesturesPanel.xaml.cs @@ -172,6 +172,30 @@ namespace Ink_Canvas.Windows.SettingsViews } } + private bool GetCurrentSettingValue(string tag) + { + if (MainWindow.Settings == null) return false; + + try + { + switch (tag) + { + case "AutoSwitchTwoFingerGesture": + return MainWindow.Settings.Gesture?.AutoSwitchTwoFingerGesture ?? false; + case "EnableTwoFingerRotationOnSelection": + return MainWindow.Settings.Gesture?.IsEnableTwoFingerRotationOnSelection ?? false; + case "EnablePalmEraser": + return MainWindow.Settings.Canvas?.EnablePalmEraser ?? false; + default: + return false; + } + } + catch + { + return false; + } + } + /// /// ToggleSwitch点击事件处理 /// @@ -182,13 +206,13 @@ namespace Ink_Canvas.Windows.SettingsViews var border = sender as Border; if (border == null) return; - bool isOn = border.Background.ToString() == "#FF3584E4"; - bool newState = !isOn; - SetToggleSwitchState(border, newState); - string tag = border.Tag?.ToString(); if (string.IsNullOrEmpty(tag)) return; + bool currentState = GetCurrentSettingValue(tag); + bool newState = !currentState; + SetToggleSwitchState(border, newState); + switch (tag) { case "AutoSwitchTwoFingerGesture": @@ -316,6 +340,10 @@ namespace Ink_Canvas.Windows.SettingsViews try { ThemeHelper.ApplyThemeToControl(this); + if (_isLoaded) + { + LoadSettings(); + } } catch (Exception ex) { diff --git a/Ink Canvas/Windows/SettingsViews/SettingsViews/LuckyRandomPanel.xaml.cs b/Ink Canvas/Windows/SettingsViews/SettingsViews/LuckyRandomPanel.xaml.cs index 1afb36fd..c72d64b6 100644 --- a/Ink Canvas/Windows/SettingsViews/SettingsViews/LuckyRandomPanel.xaml.cs +++ b/Ink Canvas/Windows/SettingsViews/SettingsViews/LuckyRandomPanel.xaml.cs @@ -220,6 +220,37 @@ namespace Ink_Canvas.Windows.SettingsViews } } + private bool GetCurrentSettingValue(string tag) + { + if (MainWindow.Settings?.RandSettings == null) return false; + + try + { + var randSettings = MainWindow.Settings.RandSettings; + switch (tag) + { + case "DisplayRandWindowNamesInputBtn": + return randSettings.DisplayRandWindowNamesInputBtn; + case "ShowRandomAndSingleDraw": + return randSettings.ShowRandomAndSingleDraw; + case "EnableQuickDraw": + return randSettings.EnableQuickDraw; + case "ExternalCaller": + return randSettings.DirectCallCiRand; + case "UseNewRollCallUI": + return randSettings.UseNewRollCallUI; + case "EnableMLAvoidance": + return randSettings.EnableMLAvoidance; + default: + return false; + } + } + catch + { + return false; + } + } + /// /// ToggleSwitch点击事件处理 /// @@ -230,13 +261,13 @@ namespace Ink_Canvas.Windows.SettingsViews var border = sender as Border; if (border == null) return; - bool isOn = border.Background.ToString() == "#FF3584E4"; - bool newState = !isOn; - SetToggleSwitchState(border, newState); - string tag = border.Tag?.ToString(); if (string.IsNullOrEmpty(tag)) return; + bool currentState = GetCurrentSettingValue(tag); + bool newState = !currentState; + SetToggleSwitchState(border, newState); + var randSettings = MainWindow.Settings.RandSettings; if (randSettings == null) return; @@ -435,6 +466,10 @@ namespace Ink_Canvas.Windows.SettingsViews try { ThemeHelper.ApplyThemeToControl(this); + if (_isLoaded) + { + LoadSettings(); + } } catch (Exception ex) { diff --git a/Ink Canvas/Windows/SettingsViews/SettingsViews/PowerPointPanel.xaml.cs b/Ink Canvas/Windows/SettingsViews/SettingsViews/PowerPointPanel.xaml.cs index e6717a12..d9b69640 100644 --- a/Ink Canvas/Windows/SettingsViews/SettingsViews/PowerPointPanel.xaml.cs +++ b/Ink Canvas/Windows/SettingsViews/SettingsViews/PowerPointPanel.xaml.cs @@ -311,6 +311,59 @@ namespace Ink_Canvas.Windows.SettingsViews } } + private bool GetCurrentSettingValue(string tag) + { + if (MainWindow.Settings?.PowerPointSettings == null) return false; + + try + { + var pptSettings = MainWindow.Settings.PowerPointSettings; + switch (tag) + { + case "SupportPowerPoint": + return pptSettings.PowerPointSupport; + case "PowerPointEnhancement": + return pptSettings.EnablePowerPointEnhancement; + case "SupportWPS": + return pptSettings.IsSupportWPS; + case "EnableWppProcessKill": + return pptSettings.EnableWppProcessKill; + case "ShowPPTButton": + return pptSettings.ShowPPTButton; + case "EnablePPTButtonPageClickable": + return pptSettings.EnablePPTButtonPageClickable; + case "EnablePPTButtonLongPressPageTurn": + return pptSettings.EnablePPTButtonLongPressPageTurn; + case "SkipAnimationsWhenGoNext": + return pptSettings.SkipAnimationsWhenGoNext; + case "ShowCanvasAtNewSlideShow": + return pptSettings.IsShowCanvasAtNewSlideShow; + case "EnableTwoFingerGestureInPresentationMode": + return pptSettings.IsEnableTwoFingerGestureInPresentationMode; + case "EnableFingerGestureSlideShowControl": + return pptSettings.IsEnableFingerGestureSlideShowControl; + case "ShowGestureButtonInSlideShow": + return pptSettings.ShowGestureButtonInSlideShow; + case "EnablePPTTimeCapsule": + return pptSettings.EnablePPTTimeCapsule; + case "NotifyPreviousPage": + return pptSettings.IsNotifyPreviousPage; + case "AlwaysGoToFirstPageOnReenter": + return pptSettings.IsAlwaysGoToFirstPageOnReenter; + case "NotifyHiddenPage": + return pptSettings.IsNotifyHiddenPage; + case "NotifyAutoPlayPresentation": + return pptSettings.IsNotifyAutoPlayPresentation; + default: + return false; + } + } + catch + { + return false; + } + } + /// /// ToggleSwitch点击事件处理 /// @@ -321,13 +374,13 @@ namespace Ink_Canvas.Windows.SettingsViews var border = sender as Border; if (border == null) return; - bool isOn = border.Background.ToString() == "#FF3584E4"; - bool newState = !isOn; - SetToggleSwitchState(border, newState); - string tag = border.Tag?.ToString(); if (string.IsNullOrEmpty(tag)) return; + bool currentState = GetCurrentSettingValue(tag); + bool newState = !currentState; + SetToggleSwitchState(border, newState); + var pptSettings = MainWindow.Settings.PowerPointSettings; if (pptSettings == null) return; @@ -639,6 +692,10 @@ namespace Ink_Canvas.Windows.SettingsViews try { ThemeHelper.ApplyThemeToControl(this); + if (_isLoaded) + { + LoadSettings(); + } } catch (Exception ex) { diff --git a/Ink Canvas/Windows/SettingsViews/SettingsViews/SnapshotPanel.xaml.cs b/Ink Canvas/Windows/SettingsViews/SettingsViews/SnapshotPanel.xaml.cs index 8d32ee51..a745c0c9 100644 --- a/Ink Canvas/Windows/SettingsViews/SettingsViews/SnapshotPanel.xaml.cs +++ b/Ink Canvas/Windows/SettingsViews/SettingsViews/SnapshotPanel.xaml.cs @@ -169,6 +169,39 @@ namespace Ink_Canvas.Windows.SettingsViews } } + private bool GetCurrentSettingValue(string tag) + { + if (MainWindow.Settings == null) return false; + + try + { + switch (tag) + { + case "AutoSaveStrokesAtClear": + return MainWindow.Settings.Automation?.IsAutoSaveStrokesAtClear ?? false; + + case "SaveScreenshotsInDateFolders": + return MainWindow.Settings.Automation?.IsSaveScreenshotsInDateFolders ?? false; + + case "AutoSaveStrokesAtScreenshot": + return MainWindow.Settings.Automation?.IsAutoSaveStrokesAtScreenshot ?? false; + + case "AutoSaveScreenShotInPowerPoint": + return MainWindow.Settings.PowerPointSettings?.IsAutoSaveScreenShotInPowerPoint ?? false; + + case "AutoDelSavedFiles": + return MainWindow.Settings.Automation?.AutoDelSavedFiles ?? false; + + default: + return false; + } + } + catch + { + return false; + } + } + /// /// ToggleSwitch点击事件处理 /// @@ -179,13 +212,14 @@ namespace Ink_Canvas.Windows.SettingsViews var border = sender as Border; if (border == null) return; - bool isOn = border.Background.ToString() == "#FF3584E4"; - bool newState = !isOn; - SetToggleSwitchState(border, newState); - string tag = border.Tag?.ToString(); if (string.IsNullOrEmpty(tag)) return; + bool currentState = GetCurrentSettingValue(tag); + bool newState = !currentState; + + SetToggleSwitchState(border, newState); + switch (tag) { case "AutoSaveStrokesAtClear": @@ -366,6 +400,10 @@ namespace Ink_Canvas.Windows.SettingsViews try { ThemeHelper.ApplyThemeToControl(this); + if (_isLoaded) + { + LoadSettings(); + } } catch (Exception ex) { diff --git a/Ink Canvas/Windows/SettingsViews/SettingsViews/StartupPanel.xaml.cs b/Ink Canvas/Windows/SettingsViews/SettingsViews/StartupPanel.xaml.cs index 3b20bd37..721de3b4 100644 --- a/Ink Canvas/Windows/SettingsViews/SettingsViews/StartupPanel.xaml.cs +++ b/Ink Canvas/Windows/SettingsViews/SettingsViews/StartupPanel.xaml.cs @@ -233,6 +233,44 @@ namespace Ink_Canvas.Windows.SettingsViews } } + private bool GetCurrentSettingValue(string tag) + { + if (MainWindow.Settings == null) return false; + + try + { + switch (tag) + { + case "IsAutoUpdate": + return MainWindow.Settings.Startup?.IsAutoUpdate ?? false; + case "IsAutoUpdateWithSilence": + return MainWindow.Settings.Startup?.IsAutoUpdateWithSilence ?? false; + case "RunAtStartup": + // 检查启动项是否存在 + return System.IO.File.Exists( + Environment.GetFolderPath(Environment.SpecialFolder.Startup) + "\\Ink Canvas Annotation.lnk"); + case "FoldAtStartup": + return MainWindow.Settings.Startup?.IsFoldAtStartup ?? false; + case "NoFocusMode": + return MainWindow.Settings.Advanced?.IsNoFocusMode ?? false; + case "WindowMode": + return MainWindow.Settings.Advanced?.WindowMode ?? false; + case "AlwaysOnTop": + return MainWindow.Settings.Advanced?.IsAlwaysOnTop ?? false; + case "UIAccessTopMost": + return MainWindow.Settings.Advanced?.EnableUIAccessTopMost ?? false; + case "Mode": + return MainWindow.Settings.ModeSettings?.IsPPTOnlyMode ?? false; + default: + return false; + } + } + catch + { + return false; + } + } + /// /// ToggleSwitch点击事件处理 /// @@ -243,13 +281,13 @@ namespace Ink_Canvas.Windows.SettingsViews var border = sender as Border; if (border == null) return; - bool isOn = border.Background.ToString() == "#FF3584E4"; - bool newState = !isOn; - SetToggleSwitchState(border, newState); - string tag = border.Tag?.ToString(); if (string.IsNullOrEmpty(tag)) return; + bool currentState = GetCurrentSettingValue(tag); + bool newState = !currentState; + SetToggleSwitchState(border, newState); + switch (tag) { case "IsAutoUpdate": @@ -552,6 +590,10 @@ namespace Ink_Canvas.Windows.SettingsViews // 使用 ThemeHelper 递归更新其他元素 ThemeHelper.ApplyThemeToControl(this); + if (_isLoaded) + { + LoadSettings(); + } } catch (Exception ex) { diff --git a/Ink Canvas/Windows/SettingsViews/SettingsViews/ThemePanel.xaml.cs b/Ink Canvas/Windows/SettingsViews/SettingsViews/ThemePanel.xaml.cs index 91433e21..3bef42db 100644 --- a/Ink Canvas/Windows/SettingsViews/SettingsViews/ThemePanel.xaml.cs +++ b/Ink Canvas/Windows/SettingsViews/SettingsViews/ThemePanel.xaml.cs @@ -239,6 +239,44 @@ namespace Ink_Canvas.Windows.SettingsViews } } + private bool GetCurrentSettingValue(string tag) + { + if (MainWindow.Settings == null) return false; + + try + { + switch (tag) + { + case "EnableSplashScreen": + return MainWindow.Settings.Appearance?.EnableSplashScreen ?? false; + case "EnableDisPlayNibModeToggle": + return MainWindow.Settings.Appearance?.IsEnableDisPlayNibModeToggler ?? false; + case "EnableTrayIcon": + return MainWindow.Settings.Appearance?.EnableTrayIcon ?? false; + case "EnableViewboxBlackBoardScaleTransform": + return MainWindow.Settings.Appearance?.EnableViewboxBlackBoardScaleTransform ?? false; + case "EnableTimeDisplayInWhiteboardMode": + return MainWindow.Settings.Appearance?.EnableTimeDisplayInWhiteboardMode ?? false; + case "EnableChickenSoupInWhiteboardMode": + return MainWindow.Settings.Appearance?.EnableChickenSoupInWhiteboardMode ?? false; + case "EnableQuickPanel": + return MainWindow.Settings.Appearance?.IsShowQuickPanel ?? false; + case "AutoEnterAnnotationModeWhenExitFoldMode": + return MainWindow.Settings.Automation?.IsAutoEnterAnnotationModeWhenExitFoldMode ?? false; + case "AutoFoldAfterPPTSlideShow": + return MainWindow.Settings.Automation?.IsAutoFoldAfterPPTSlideShow ?? false; + case "AutoFoldWhenExitWhiteboard": + return MainWindow.Settings.Automation?.IsAutoFoldWhenExitWhiteboard ?? false; + default: + return false; + } + } + catch + { + return false; + } + } + /// /// ToggleSwitch点击事件处理 /// @@ -249,13 +287,13 @@ namespace Ink_Canvas.Windows.SettingsViews var border = sender as Border; if (border == null) return; - bool isOn = border.Background.ToString() == "#FF3584E4"; - bool newState = !isOn; - SetToggleSwitchState(border, newState); - string tag = border.Tag?.ToString(); if (string.IsNullOrEmpty(tag)) return; + bool currentState = GetCurrentSettingValue(tag); + bool newState = !currentState; + SetToggleSwitchState(border, newState); + var appearance = MainWindow.Settings.Appearance; if (appearance == null) return; @@ -798,6 +836,10 @@ namespace Ink_Canvas.Windows.SettingsViews try { ThemeHelper.ApplyThemeToControl(this); + if (_isLoaded) + { + LoadSettings(); + } } catch (Exception ex) {