From ee41f53286ca41fd40ee3a02913bba6edd079e05 Mon Sep 17 00:00:00 2001 From: CJKmkp <2564608840@qq.com> Date: Sat, 6 Sep 2025 19:27:17 +0800 Subject: [PATCH] add:issue #156 --- Ink Canvas/MainWindow.xaml | 10 ++++ Ink Canvas/MainWindow.xaml.cs | 50 +++++++++++++++++++ .../MainWindow_cs/MW_FloatingBarIcons.cs | 12 ++++- Ink Canvas/MainWindow_cs/MW_PPT.cs | 18 ++++++- Ink Canvas/Resources/Settings.cs | 2 + 5 files changed, 88 insertions(+), 4 deletions(-) diff --git a/Ink Canvas/MainWindow.xaml b/Ink Canvas/MainWindow.xaml index 12d6c8ae..ee799c1e 100644 --- a/Ink Canvas/MainWindow.xaml +++ b/Ink Canvas/MainWindow.xaml @@ -1895,6 +1895,16 @@ + + + + + diff --git a/Ink Canvas/MainWindow.xaml.cs b/Ink Canvas/MainWindow.xaml.cs index 12ec5258..ff10f661 100644 --- a/Ink Canvas/MainWindow.xaml.cs +++ b/Ink Canvas/MainWindow.xaml.cs @@ -2139,6 +2139,56 @@ namespace Ink_Canvas LogHelper.WriteLogToFile($"批注子面板中切换墨迹渐隐功能时出错: {ex.Message}", LogHelper.LogType.Error); } } + + /// + /// PPT放映模式显示手势按钮开关切换事件处理 + /// + private void ToggleSwitchShowGestureButtonInSlideShow_Toggled(object sender, RoutedEventArgs e) + { + try + { + if (!isLoaded) return; + var toggle = sender as ToggleSwitch; + Settings.PowerPointSettings.ShowGestureButtonInSlideShow = toggle != null && toggle.IsOn; + SaveSettingsToFile(); + + // 如果当前在PPT放映模式,需要立即更新手势按钮的显示状态 + if (BtnPPTSlideShowEnd.Visibility == Visibility.Visible) + { + UpdateGestureButtonVisibilityInPPTMode(); + } + + LogHelper.WriteLogToFile($"PPT放映模式显示手势按钮已{(Settings.PowerPointSettings.ShowGestureButtonInSlideShow ? "启用" : "禁用")}", LogHelper.LogType.Event); + } + catch (Exception ex) + { + LogHelper.WriteLogToFile($"切换PPT放映模式显示手势按钮时出错: {ex.Message}", LogHelper.LogType.Error); + } + } + + /// + /// 更新PPT模式下手势按钮的显示状态 + /// + private void UpdateGestureButtonVisibilityInPPTMode() + { + try + { + if (Settings.PowerPointSettings.ShowGestureButtonInSlideShow) + { + // 如果启用了PPT放映模式显示手势按钮,则显示手势按钮(在PPT模式下不依赖手势功能是否启用) + CheckEnableTwoFingerGestureBtnVisibility(true); + } + else + { + // 如果禁用了PPT放映模式显示手势按钮,则隐藏手势按钮 + EnableTwoFingerGestureBorder.Visibility = Visibility.Collapsed; + } + } + catch (Exception ex) + { + LogHelper.WriteLogToFile($"更新PPT模式下手势按钮显示状态时出错: {ex.Message}", LogHelper.LogType.Error); + } + } #endregion #region PPT翻页直接传递 diff --git a/Ink Canvas/MainWindow_cs/MW_FloatingBarIcons.cs b/Ink Canvas/MainWindow_cs/MW_FloatingBarIcons.cs index 39fbd1cc..de865548 100644 --- a/Ink Canvas/MainWindow_cs/MW_FloatingBarIcons.cs +++ b/Ink Canvas/MainWindow_cs/MW_FloatingBarIcons.cs @@ -130,10 +130,18 @@ namespace Ink_Canvas /// private void CheckEnableTwoFingerGestureBtnVisibility(bool isVisible) { - // 在PPT模式下始终隐藏手势按钮 + // 在PPT模式下根据设置决定是否显示手势按钮 if (currentMode == 0 || BtnPPTSlideShowEnd.Visibility == Visibility.Visible) { - EnableTwoFingerGestureBorder.Visibility = Visibility.Collapsed; + // 如果启用了PPT放映模式显示手势按钮,则显示手势按钮(在PPT模式下不依赖手势功能是否启用) + if (Settings.PowerPointSettings.ShowGestureButtonInSlideShow && isVisible) + { + EnableTwoFingerGestureBorder.Visibility = Visibility.Visible; + } + else + { + EnableTwoFingerGestureBorder.Visibility = Visibility.Collapsed; + } return; } diff --git a/Ink Canvas/MainWindow_cs/MW_PPT.cs b/Ink Canvas/MainWindow_cs/MW_PPT.cs index 2f887d58..db19dd51 100644 --- a/Ink Canvas/MainWindow_cs/MW_PPT.cs +++ b/Ink Canvas/MainWindow_cs/MW_PPT.cs @@ -643,10 +643,24 @@ namespace Ink_Canvas BorderFloatingBarMainControls.Visibility = Visibility.Visible; - // 在PPT模式下隐藏手势面板和手势按钮 + // 在PPT模式下根据设置决定是否隐藏手势面板和手势按钮 AnimationsHelper.HideWithSlideAndFade(TwoFingerGestureBorder); AnimationsHelper.HideWithSlideAndFade(BoardTwoFingerGestureBorder); - EnableTwoFingerGestureBorder.Visibility = Visibility.Collapsed; + + // 根据设置决定是否在PPT放映模式下显示手势按钮 + if (Settings.PowerPointSettings.ShowGestureButtonInSlideShow) + { + // 如果启用了PPT放映模式显示手势按钮,则显示手势按钮 + if (Settings.Gesture.IsEnableTwoFingerGesture) + { + CheckEnableTwoFingerGestureBtnVisibility(true); + } + } + else + { + // 如果禁用了PPT放映模式显示手势按钮,则隐藏手势按钮 + EnableTwoFingerGestureBorder.Visibility = Visibility.Collapsed; + } if (Settings.PowerPointSettings.IsShowCanvasAtNewSlideShow && !Settings.Automation.IsAutoFoldInPPTSlideShow) diff --git a/Ink Canvas/Resources/Settings.cs b/Ink Canvas/Resources/Settings.cs index 8b27b726..13dbfe64 100644 --- a/Ink Canvas/Resources/Settings.cs +++ b/Ink Canvas/Resources/Settings.cs @@ -309,6 +309,8 @@ namespace Ink_Canvas public bool IsAlwaysGoToFirstPageOnReenter { get; set; } [JsonProperty("enablePowerPointEnhancement")] public bool EnablePowerPointEnhancement { get; set; } = false; + [JsonProperty("showGestureButtonInSlideShow")] + public bool ShowGestureButtonInSlideShow { get; set; } = false; } public class Automation