diff --git a/Ink Canvas/MainWindow.xaml b/Ink Canvas/MainWindow.xaml index ed9825f5..8f8c2c1d 100644 --- a/Ink Canvas/MainWindow.xaml +++ b/Ink Canvas/MainWindow.xaml @@ -221,362 +221,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Ink Canvas/MainWindow.xaml.cs b/Ink Canvas/MainWindow.xaml.cs index fb4eab2b..863395c7 100644 --- a/Ink Canvas/MainWindow.xaml.cs +++ b/Ink Canvas/MainWindow.xaml.cs @@ -123,10 +123,8 @@ namespace Ink_Canvas BlackboardCenterSide.Visibility = Visibility.Collapsed; BlackboardRightSide.Visibility = Visibility.Collapsed; BorderTools.Visibility = Visibility.Collapsed; - BorderSettings.Visibility = Visibility.Collapsed; LeftSidePanelForPPTNavigation.Visibility = Visibility.Collapsed; RightSidePanelForPPTNavigation.Visibility = Visibility.Collapsed; - BorderSettings.Margin = new Thickness(0, 0, 0, 0); TwoFingerGestureBorder.Visibility = Visibility.Collapsed; BoardTwoFingerGestureBorder.Visibility = Visibility.Collapsed; BorderDrawShape.Visibility = Visibility.Collapsed; @@ -1266,12 +1264,6 @@ namespace Ink_Canvas // 设置窗口模式 SetWindowMode(); - // 注册设置面板滚动事件 - if (SettingsPanelScrollViewer != null) - { - SettingsPanelScrollViewer.ScrollChanged += SettingsPanelScrollViewer_ScrollChanged; - } - // 初始化PPT管理器 InitializePPTManagers(); @@ -2278,457 +2270,6 @@ namespace Ink_Canvas #endregion Definations and Loading - #region Navigation Sidebar Methods - - // 侧边栏导航按钮事件处理 - private void NavStartup_Click(object sender, RoutedEventArgs e) - { - // 切换到启动设置页面 - ShowSettingsSection("startup"); - } - - private void NavCanvas_Click(object sender, RoutedEventArgs e) - { - // 切换到画布设置页面 - ShowSettingsSection("canvas"); - } - - private void NavGesture_Click(object sender, RoutedEventArgs e) - { - // 切换到手势设置页面 - ShowSettingsSection("gesture"); - } - - private void NavInkRecognition_Click(object sender, RoutedEventArgs e) - { - // 切换到墨迹识别设置页面 - ShowSettingsSection("inkrecognition"); - } - - private void NavCrashAction_Click(object sender, RoutedEventArgs e) - { - // 切换到崩溃处理设置页面 - ShowSettingsSection("crashaction"); - } - - private void NavPPT_Click(object sender, RoutedEventArgs e) - { - // 切换到PPT设置页面 - ShowSettingsSection("ppt"); - } - - private void NavAdvanced_Click(object sender, RoutedEventArgs e) - { - // 切换到高级设置页面 - ShowSettingsSection("advanced"); - } - - private void NavAutomation_Click(object sender, RoutedEventArgs e) - { - // 切换到自动化设置页面 - ShowSettingsSection("automation"); - } - - private void NavRandomWindow_Click(object sender, RoutedEventArgs e) - { - // 切换到随机窗口设置页面 - ShowSettingsSection("randomwindow"); - } - - private void NavAbout_Click(object sender, RoutedEventArgs e) - { - ShowSettingsSection("about"); - } - - // 个性化设置 - private void NavTheme_Click(object sender, RoutedEventArgs e) - { - // 切换到个性化设置页面 - ShowSettingsSection("theme"); - } - - // 快捷键设置 - private void NavShortcuts_Click(object sender, RoutedEventArgs e) - { - OpenHotkeySettingsWindow(); - } - - private void BtnCloseSettings_Click(object sender, RoutedEventArgs e) - { - // 关闭设置面板 - BorderSettings.Visibility = Visibility.Collapsed; - // 设置蒙版为不可点击,并清除背景 - BorderSettingsMask.IsHitTestVisible = false; - BorderSettingsMask.Background = null; // 确保清除蒙层背景 - } - - // 折叠侧边栏 - private void CollapseNavSidebar_Click(object sender, RoutedEventArgs e) - { - // 折叠/展开侧边栏 - var columnDefinitions = ((Grid)BorderSettings.Child).ColumnDefinitions; - if (columnDefinitions[0].Width.Value == 50) - { - // 折叠侧边栏 - columnDefinitions[0].Width = new GridLength(0); - } - else - { - // 展开侧边栏 - columnDefinitions[0].Width = new GridLength(50); - } - } - - // 显示侧边栏 - private void ShowNavSidebar_Click(object sender, RoutedEventArgs e) - { - // 确保侧边栏展开 - var columnDefinitions = ((Grid)BorderSettings.Child).ColumnDefinitions; - columnDefinitions[0].Width = new GridLength(50); - } - - // 显示指定的设置部分 - private async void ShowSettingsSection(string sectionTag) - { - // 显示设置面板 - BorderSettings.Visibility = Visibility.Visible; - // 设置蒙版为可点击,并添加半透明背景 - BorderSettingsMask.IsHitTestVisible = true; - BorderSettingsMask.Background = new SolidColorBrush(Color.FromArgb(1, 0, 0, 0)); - - // 获取SettingsPanelScrollViewer中的所有GroupBox - var stackPanel = SettingsPanelScrollViewer.Content as StackPanel; - if (stackPanel == null) return; - - // 确保所有GroupBox都是可见的 - foreach (var child in stackPanel.Children) - { - if (child is GroupBox groupBox) - { - groupBox.Visibility = Visibility.Visible; - } - } - - // 确保UI完全更新 - await Dispatcher.InvokeAsync(() => { }, DispatcherPriority.Render); - - // 根据传入的sectionTag滚动到相应的设置部分 - GroupBox targetGroupBox = null; - - switch (sectionTag.ToLower()) - { - case "startup": - case "crashaction": - { - var sw = new Windows.SettingsViews.SettingsWindow(); - sw.Owner = this; - sw.NavigateToPage("StartupPage"); - sw.ShowDialog(); - return; - } - case "gesture": - { - var sw = new Windows.SettingsViews.SettingsWindow(); - sw.Owner = this; - sw.NavigateToPage("CanvasPage"); - sw.ShowDialog(); - return; - } - case "ppt": - { - var sw = new Windows.SettingsViews.SettingsWindow(); - sw.Owner = this; - sw.NavigateToPage("PowerPointPage"); - sw.ShowDialog(); - return; - } - case "advanced": - { - var sw = new Windows.SettingsViews.SettingsWindow(); - sw.Owner = this; - sw.NavigateToPage("AdvancedPage"); - sw.ShowDialog(); - return; - } - case "automation": - { - var sw = new Windows.SettingsViews.SettingsWindow(); - sw.Owner = this; - sw.NavigateToPage("AutomationPage"); - sw.ShowDialog(); - return; - } - case "randomwindow": - { - var sw = new Windows.SettingsViews.SettingsWindow(); - sw.Owner = this; - sw.NavigateToPage("RandomDrawPage"); - sw.ShowDialog(); - return; - } - case "theme": - { - var sw = new Windows.SettingsViews.SettingsWindow(); - sw.Owner = this; - sw.NavigateToPage("AppearancePage"); - sw.ShowDialog(); - return; - } - case "shortcuts": - // 快捷键设置部分可能尚未实现 - targetGroupBox = null; - break; - default: - // 默认滚动到顶部 - SettingsPanelScrollViewer.ScrollToTop(); - return; - } - - // 如果找到目标GroupBox,则滚动到它的位置 - if (targetGroupBox != null) - { - // 使用动画平滑滚动到目标位置 - ScrollToElement(targetGroupBox); - - // 高亮显示当前选中的导航项 - UpdateNavigationButtonState(sectionTag); - } - else - { - // 如果没有找到目标GroupBox,则滚动到顶部 - SettingsPanelScrollViewer.ScrollToTop(); - } - } - - // 根据Header文本查找GroupBox - private GroupBox FindGroupBoxByHeader(StackPanel parent, string headerText) - { - foreach (var child in parent.Children) - { - if (child is GroupBox groupBox) - { - // 查找GroupBox的Header - if (groupBox.Header is TextBlock headerTextBlock && - headerTextBlock.Text != null && - headerTextBlock.Text.Contains(headerText)) - { - return groupBox; - } - } - } - return null; - } - - // 平滑滚动到指定元素 - private async void ScrollToElement(FrameworkElement element) - { - if (element == null || SettingsPanelScrollViewer == null) return; - - try - { - // 暂时禁用滚动事件处理 - SettingsPanelScrollViewer.ScrollChanged -= SettingsPanelScrollViewer_ScrollChanged; - - // 记录当前滚动位置 - double originalOffset = SettingsPanelScrollViewer.VerticalOffset; - - // 将ScrollViewer内部的位置信息重置到顶部(不会触发视觉更新) - SettingsPanelScrollViewer.ScrollToHome(); - - // 使用Dispatcher进行延迟处理,确保布局更新 - await Dispatcher.InvokeAsync(() => - { - try - { - // 强制更新布局 - SettingsPanelScrollViewer.UpdateLayout(); - - // 获取元素相对于顶部的准确位置 - Point elementPosition = element.TransformToAncestor(SettingsPanelScrollViewer).Transform(new Point(0, 0)); - - // 计算目标位置,减去一些偏移,使元素不会贴在顶部 - double targetPosition = elementPosition.Y - 20; - - // 确保目标位置不小于0 - targetPosition = Math.Max(0, targetPosition); - - // 直接设置滚动位置,不使用动画 - SettingsPanelScrollViewer.ScrollToVerticalOffset(targetPosition); - } - catch (Exception) - { - // 如果出现异常,恢复到原来的滚动位置 - SettingsPanelScrollViewer.ScrollToVerticalOffset(originalOffset); - } - finally - { - // 重新启用滚动事件处理 - SettingsPanelScrollViewer.ScrollChanged += SettingsPanelScrollViewer_ScrollChanged; - } - }, DispatcherPriority.Render); - } - catch (Exception) - { - // 确保在异常情况下也重新启用滚动事件处理 - SettingsPanelScrollViewer.ScrollChanged += SettingsPanelScrollViewer_ScrollChanged; - } - } - - // 滚动条变化事件处理 - private void SettingsPanelScrollViewer_ScrollChanged(object sender, ScrollChangedEventArgs e) - { - // 可以在这里添加滚动事件的处理逻辑,如果需要的话 - } - - // 更新导航按钮状态 - private void UpdateNavigationButtonState(string activeTag) - { - // 清除所有导航按钮的Tag属性 - ClearAllNavButtonTags(); - - // 设置当前活动按钮的Tag属性 - switch (activeTag.ToLower()) - { - case "startup": - SetNavButtonTag("startup"); - break; - case "canvas": - SetNavButtonTag("canvas"); - break; - case "gesture": - SetNavButtonTag("gesture"); - break; - case "inkrecognition": - SetNavButtonTag("inkrecognition"); - break; - case "crashaction": - SetNavButtonTag("crashaction"); - break; - case "ppt": - SetNavButtonTag("ppt"); - break; - case "advanced": - { - var sw = new Windows.SettingsViews.SettingsWindow(); - sw.Owner = this; - sw.NavigateToPage("AdvancedPage"); - sw.ShowDialog(); - return; - } - case "automation": - SetNavButtonTag("automation"); - break; - case "randomwindow": - SetNavButtonTag("randomwindow"); - break; - case "theme": - SetNavButtonTag("theme"); - break; - case "shortcuts": - SetNavButtonTag("shortcuts"); - break; - case "about": - SetNavButtonTag("about"); - break; - } - } - - // 清除所有导航按钮的Tag属性 - private void ClearAllNavButtonTags() - { - var grid = BorderSettings.Child as Grid; - if (grid == null) return; - - var navSidebar = grid.Children[0] as Border; - if (navSidebar == null) return; - - var navGrid = navSidebar.Child as Grid; - if (navGrid == null) return; - - var scrollViewer = navGrid.Children[1] as ScrollViewer; - if (scrollViewer == null) return; - - var stackPanel = scrollViewer.Content as StackPanel; - if (stackPanel == null) return; - - foreach (var child in stackPanel.Children) - { - if (child is Button button) - { - button.Tag = null; - } - } - } - - // 设置导航按钮的Tag属性 - private void SetNavButtonTag(string tag) - { - var grid = BorderSettings.Child as Grid; - if (grid == null) return; - - var navSidebar = grid.Children[0] as Border; - if (navSidebar == null) return; - - var navGrid = navSidebar.Child as Grid; - if (navGrid == null) return; - - var scrollViewer = navGrid.Children[1] as ScrollViewer; - if (scrollViewer == null) return; - - var stackPanel = scrollViewer.Content as StackPanel; - if (stackPanel == null) return; - - foreach (var child in stackPanel.Children) - { - if (child is Button button) - { - // 检查按钮的ToolTip属性,根据tag设置对应的按钮 - string buttonTag = button.Tag as string; - - // 如果按钮的Tag与要设置的tag匹配,则设置Tag - if (buttonTag != null && buttonTag.ToLower() == tag.ToLower()) - { - button.Tag = tag; - return; - } - } - } - } - - // 根据Header文本查找并显示GroupBox - private void ShowGroupBoxByHeader(StackPanel parent, string headerText) - { - foreach (var child in parent.Children) - { - if (child is GroupBox groupBox) - { - // 查找GroupBox的Header - if (groupBox.Header is TextBlock headerTextBlock && - headerTextBlock.Text != null && - headerTextBlock.Text.Contains(headerText)) - { - groupBox.Visibility = Visibility.Visible; - return; - } - } - } - } - - #endregion Navigation Sidebar Methods - - #region 新设置窗口 - private async void BtnOpenNewNewSettings_Click(object sender, RoutedEventArgs e) - { - if (isOpeningOrHidingSettingsPane) return; - HideSubPanels(); - { - var settingsWindow = new Windows.SettingsViews.SettingsWindow(); - settingsWindow.Owner = this; - settingsWindow.ShowDialog(); - } - } - - #endregion 新设置窗口 // 在MainWindow类中添加: private void ApplyCurrentEraserShape() @@ -2798,15 +2339,9 @@ namespace Ink_Canvas private void HistoryRollbackButton_Click(object sender, RoutedEventArgs e) { - // 收起设置面板(与插件面板一致) - BorderSettings.Visibility = Visibility.Hidden; - BorderSettingsMask.Visibility = Visibility.Hidden; var win = new HistoryRollbackWindow(Settings.Startup.UpdateChannel); win.Owner = this; win.ShowDialog(); - // 可选:回滚窗口关闭后恢复设置面板显示 - BorderSettings.Visibility = Visibility.Visible; - BorderSettingsMask.Visibility = Visibility.Visible; } [DllImport("user32.dll")] @@ -3009,31 +2544,12 @@ namespace Ink_Canvas return; } - // 暂时隐藏设置面板 - BorderSettings.Visibility = Visibility.Hidden; - BorderSettingsMask.Visibility = Visibility.Hidden; - - // 创建快捷键设置窗口 var hotkeySettingsWindow = new HotkeySettingsWindow(this, _globalHotkeyManager); hotkeySettingsWindow.Owner = this; - - // 设置窗口关闭事件,用于在快捷键设置窗口关闭后恢复设置面板 - hotkeySettingsWindow.Closed += (s, e) => - { - // 恢复设置面板显示 - BorderSettings.Visibility = Visibility.Visible; - BorderSettingsMask.Visibility = Visibility.Visible; - }; - - // 显示快捷键设置窗口 hotkeySettingsWindow.ShowDialog(); } catch (Exception ex) { - // 确保在发生错误时也恢复设置面板显示 - BorderSettings.Visibility = Visibility.Visible; - BorderSettingsMask.Visibility = Visibility.Visible; - LogHelper.WriteLogToFile($"打开快捷键设置窗口时出错: {ex.Message}", LogHelper.LogType.Error); MessageBox.Show($"打开快捷键设置窗口时出错: {ex.Message}", "错误", MessageBoxButton.OK, MessageBoxImage.Error); } diff --git a/Ink Canvas/MainWindow_cs/MW_AutoTheme.cs b/Ink Canvas/MainWindow_cs/MW_AutoTheme.cs index 24442be6..f1a5cb8a 100644 --- a/Ink Canvas/MainWindow_cs/MW_AutoTheme.cs +++ b/Ink Canvas/MainWindow_cs/MW_AutoTheme.cs @@ -386,6 +386,10 @@ namespace Ink_Canvas { operatingGuideWindow.RefreshTheme(); } + else if (window is Windows.SettingsViews.SettingsWindow settingsWindow) + { + settingsWindow.RefreshTheme(); + } } TimerControl?.RefreshTheme(); diff --git a/Ink Canvas/MainWindow_cs/MW_FloatingBarIcons.cs b/Ink Canvas/MainWindow_cs/MW_FloatingBarIcons.cs index c4422e94..f8300d27 100644 --- a/Ink Canvas/MainWindow_cs/MW_FloatingBarIcons.cs +++ b/Ink Canvas/MainWindow_cs/MW_FloatingBarIcons.cs @@ -297,7 +297,6 @@ namespace Ink_Canvas BoardPenPalette.Visibility = Visibility.Collapsed; BoardEraserSizePanel.Visibility = Visibility.Collapsed; EraserSizePanel.Visibility = Visibility.Collapsed; - BorderSettings.Visibility = Visibility.Collapsed; BoardBorderLeftPageListView.Visibility = Visibility.Collapsed; BoardBorderRightPageListView.Visibility = Visibility.Collapsed; BoardImageOptionsPanel.Visibility = Visibility.Collapsed; @@ -393,43 +392,6 @@ namespace Ink_Canvas AnimationsHelper.HideWithSlideAndFade(bgPalette); } - if (BorderSettings.Visibility == Visibility.Visible) - { - // 设置蒙版为不可点击,并移除背景 - BorderSettingsMask.IsHitTestVisible = false; - BorderSettingsMask.Background = null; - var sb = new Storyboard(); - - // 滑动动画 - var slideAnimation = new DoubleAnimation - { - From = 0, // 滑动距离 - To = BorderSettings.RenderTransform.Value.OffsetX - 490, - Duration = TimeSpan.FromSeconds(0.6), - EasingFunction = new CubicEase { EasingMode = EasingMode.EaseOut } - }; - Storyboard.SetTargetProperty(slideAnimation, - new PropertyPath("(UIElement.RenderTransform).(TranslateTransform.X)")); - - sb.Children.Add(slideAnimation); - - sb.Completed += (s, _) => - { - BorderSettings.Visibility = Visibility.Collapsed; - isOpeningOrHidingSettingsPane = false; - if (WindowSettingsHelper.IsTemporarilyDisablingNoFocusMode) - { - WindowSettingsHelper.IsTemporarilyDisablingNoFocusMode = false; - ApplyNoFocusMode(); - } - }; - - BorderSettings.RenderTransform = new TranslateTransform(); - - isOpeningOrHidingSettingsPane = true; - sb.Begin(BorderSettings); - } - AnimationsHelper.HideWithSlideAndFade(TwoFingerGestureBorder); AnimationsHelper.HideWithSlideAndFade(EraserSizePanel); AnimationsHelper.HideWithSlideAndFade(BoardTwoFingerGestureBorder); @@ -1101,10 +1063,8 @@ namespace Ink_Canvas /// 路由事件参数 private void SymbolIconSettings_Click(object sender, MouseButtonEventArgs e) { - if (isOpeningOrHidingSettingsPane) return; HideSubPanels(); BtnSettings_Click(null, null); - } /// /// 截图图标点击事件处理 @@ -3078,17 +3038,6 @@ namespace Ink_Canvas LogHelper.WriteLogToFile($"停止PPT监控时出错: {ex.Message}", LogHelper.LogType.Error); } - // 如果当前在设置面板中,需要先恢复无焦点模式状态 - if (BorderSettings.Visibility == Visibility.Visible) - { - if (WindowSettingsHelper.IsTemporarilyDisablingNoFocusMode) - { - WindowSettingsHelper.IsTemporarilyDisablingNoFocusMode = false; - ApplyNoFocusMode(); - } - SaveSettingsToFile(); - } - App.IsAppExitByUser = true; // 不设置 CloseIsFromButton = true,让它也经过确认流程 Close(); @@ -3101,53 +3050,12 @@ namespace Ink_Canvas /// 路由事件参数 public void BtnRestart_Click(object sender, RoutedEventArgs e) { - if (BorderSettings.Visibility == Visibility.Visible) - { - if (WindowSettingsHelper.IsTemporarilyDisablingNoFocusMode) - { - WindowSettingsHelper.IsTemporarilyDisablingNoFocusMode = false; - ApplyNoFocusMode(); - } - SaveSettingsToFile(); - } - Process.Start(System.Windows.Forms.Application.ExecutablePath, "-m"); App.IsAppExitByUser = true; // 不设置 CloseIsFromButton = true,让它也经过确认流程 Close(); } - /// - /// 设置覆盖层点击事件处理,用于点击设置面板外部时关闭设置面板 - /// - /// 发送者 - /// 鼠标按钮事件参数 - private void SettingsOverlayClick(object sender, MouseButtonEventArgs e) - { - if (isOpeningOrHidingSettingsPane) return; - - // 获取点击的位置 - Point clickPoint = e.GetPosition(BorderSettingsMask); - - // 获取BorderSettings的位置和大小 - Point settingsPosition = BorderSettings.TranslatePoint(new Point(0, 0), BorderSettingsMask); - Rect settingsRect = new Rect( - settingsPosition.X, - settingsPosition.Y, - BorderSettings.ActualWidth, - BorderSettings.ActualHeight - ); - - // 如果点击位置不在设置界面内部,才关闭设置界面 - if (!settingsRect.Contains(clickPoint)) - { - BtnSettings_Click(null, null); - } - } - - private bool isOpeningOrHidingSettingsPane; - private bool wasNoFocusModeBeforeSettings; - /// /// 切换并打开设置面板;在需要时先进行安全密码校验,然后显示设置面板并启动打开动画,同时根据设置暂时调整无焦点模式与遮罩交互状态。 /// @@ -3155,60 +3063,25 @@ namespace Ink_Canvas /// 路由事件参数 internal async void BtnSettings_Click(object sender, RoutedEventArgs e) { - if (BorderSettings.Visibility == Visibility.Visible) + try { - HideSubPanels(); + if (Ink_Canvas.Helpers.SecurityManager.IsPasswordRequiredForEnterSettings(Settings)) + { + bool ok = await Ink_Canvas.Helpers.SecurityManager.PromptAndVerifyAsync(Settings, this, "进入设置", "请输入安全密码以进入设置。"); + if (!ok) return; + } } - else + catch (Exception ex) { - try - { - if (Ink_Canvas.Helpers.SecurityManager.IsPasswordRequiredForEnterSettings(Settings)) - { - bool ok = await Ink_Canvas.Helpers.SecurityManager.PromptAndVerifyAsync(Settings, this, "进入设置", "请输入安全密码以进入设置。"); - if (!ok) return; - } - } - catch (Exception ex) - { - LogHelper.WriteLogToFile($"安全密码校验失败: {ex}", LogHelper.LogType.Error); - return; - } - - BorderSettings.Visibility = Visibility.Visible; - wasNoFocusModeBeforeSettings = Settings.Advanced.IsNoFocusMode; - if (wasNoFocusModeBeforeSettings) - { - WindowSettingsHelper.IsTemporarilyDisablingNoFocusMode = true; - ApplyNoFocusMode(); - } - - // 设置蒙版为可点击,并添加半透明背景 - BorderSettingsMask.IsHitTestVisible = true; - BorderSettingsMask.Background = new SolidColorBrush(Color.FromArgb(1, 0, 0, 0)); - SettingsPanelScrollViewer.ScrollToTop(); - var sb = new Storyboard(); - - // 滑动动画 - var slideAnimation = new DoubleAnimation - { - From = BorderSettings.RenderTransform.Value.OffsetX - 490, // 滑动距离 - To = 0, - Duration = TimeSpan.FromSeconds(0.6), - EasingFunction = new CubicEase { EasingMode = EasingMode.EaseOut } - }; - Storyboard.SetTargetProperty(slideAnimation, - new PropertyPath("(UIElement.RenderTransform).(TranslateTransform.X)")); - - sb.Children.Add(slideAnimation); - - sb.Completed += (s, _) => { isOpeningOrHidingSettingsPane = false; }; - - BorderSettings.RenderTransform = new TranslateTransform(); - - isOpeningOrHidingSettingsPane = true; - sb.Begin(BorderSettings); + LogHelper.WriteLogToFile($"安全密码校验失败: {ex}", LogHelper.LogType.Error); + return; } + + HideSubPanels(); + var settingsWindow = new Windows.SettingsViews.SettingsWindow(); + settingsWindow.Owner = this; + settingsWindow.Topmost = this.Topmost; + settingsWindow.ShowDialog(); } private void BtnThickness_Click(object sender, RoutedEventArgs e) { } diff --git a/Ink Canvas/MainWindow_cs/MW_TrayIcon.cs b/Ink Canvas/MainWindow_cs/MW_TrayIcon.cs index 76a573c8..403ff8cd 100644 --- a/Ink Canvas/MainWindow_cs/MW_TrayIcon.cs +++ b/Ink Canvas/MainWindow_cs/MW_TrayIcon.cs @@ -123,20 +123,6 @@ namespace Ink_Canvas return true; } - private bool IsLegacySettingsVisible(MainWindow mainWin) - { - try - { - var borderSettingsField = typeof(MainWindow).GetField("BorderSettings", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); - var borderSettings = borderSettingsField?.GetValue(mainWin) as FrameworkElement; - return borderSettings?.Visibility == Visibility.Visible; - } - catch - { - return false; - } - } - private void TempShowMainWindowTrayIconMenuItem_Clicked(object sender, RoutedEventArgs e) { var mainWin = Current.MainWindow as MainWindow; @@ -224,11 +210,6 @@ namespace Ink_Canvas return; } - if (IsLegacySettingsVisible(mainWin)) - { - return; - } - try { var method = typeof(MainWindow).GetMethod("BtnSettings_Click", BindingFlags.NonPublic | BindingFlags.Instance); diff --git a/Ink Canvas/Properties/Strings.en-US.resx b/Ink Canvas/Properties/Strings.en-US.resx index a0c0a321..c48aa2f2 100644 --- a/Ink Canvas/Properties/Strings.en-US.resx +++ b/Ink Canvas/Properties/Strings.en-US.resx @@ -1435,7 +1435,7 @@ Ignore EN5 desktop annotation window when auto folding - Auto fold when entering old ZhongYuan whiteboard + old ZhongYuan whiteboard Auto fold while playing PPT diff --git a/Ink Canvas/Properties/Strings.resx b/Ink Canvas/Properties/Strings.resx index 0fb11153..5b7aa7cb 100644 --- a/Ink Canvas/Properties/Strings.resx +++ b/Ink Canvas/Properties/Strings.resx @@ -1484,7 +1484,7 @@ 自动收纳忽略桌面EN5批注窗口 - 进入“中原旧白板”时自动收纳 + 中原旧白板 播放PPT时自动收纳 diff --git a/Ink Canvas/Windows/PrivacyAgreementWindow.xaml.cs b/Ink Canvas/Windows/PrivacyAgreementWindow.xaml.cs index 32bd359f..eb6d8775 100644 --- a/Ink Canvas/Windows/PrivacyAgreementWindow.xaml.cs +++ b/Ink Canvas/Windows/PrivacyAgreementWindow.xaml.cs @@ -15,7 +15,6 @@ namespace Ink_Canvas public partial class PrivacyAgreementWindow : Window { public bool UserAccepted { get; private set; } = false; - private bool wasSettingsPanelVisible = false; public PrivacyAgreementWindow() { @@ -23,40 +22,6 @@ namespace Ink_Canvas this.Topmost = true; AnimationsHelper.ShowWithSlideFromBottomAndFade(this, 0.25); ApplyTheme(); - HideSettingsPanel(); - } - - private void HideSettingsPanel() - { - try - { - if (Application.Current.MainWindow is MainWindow mainWindow) - { - var borderSettings = mainWindow.FindName("BorderSettings") as Border; - var borderSettingsMask = mainWindow.FindName("BorderSettingsMask") as Border; - - if (borderSettings != null) - { - wasSettingsPanelVisible = borderSettings.Visibility == Visibility.Visible; - if (wasSettingsPanelVisible) - { - borderSettings.Visibility = Visibility.Hidden; - } - } - - if (borderSettingsMask != null) - { - if (wasSettingsPanelVisible) - { - borderSettingsMask.Visibility = Visibility.Hidden; - } - } - } - } - catch (Exception ex) - { - LogHelper.WriteLogToFile($"隐藏设置面板失败: {ex.Message}", LogHelper.LogType.Warning); - } } private void Window_Loaded(object sender, RoutedEventArgs e) @@ -114,31 +79,6 @@ namespace Ink_Canvas private void Window_Closing(object sender, CancelEventArgs e) { - if (wasSettingsPanelVisible) - { - try - { - if (Application.Current.MainWindow is MainWindow mainWindow) - { - var borderSettings = mainWindow.FindName("BorderSettings") as Border; - var borderSettingsMask = mainWindow.FindName("BorderSettingsMask") as Border; - - if (borderSettings != null) - { - borderSettings.Visibility = Visibility.Visible; - } - - if (borderSettingsMask != null) - { - borderSettingsMask.Visibility = Visibility.Visible; - } - } - } - catch (Exception ex) - { - LogHelper.WriteLogToFile($"恢复设置面板失败: {ex.Message}", LogHelper.LogType.Warning); - } - } } private void ButtonCancel_Click(object sender, RoutedEventArgs e) diff --git a/Ink Canvas/Windows/SettingsViews/Pages/AutomationPage.xaml b/Ink Canvas/Windows/SettingsViews/Pages/AutomationPage.xaml index 0814f336..c382a142 100644 --- a/Ink Canvas/Windows/SettingsViews/Pages/AutomationPage.xaml +++ b/Ink Canvas/Windows/SettingsViews/Pages/AutomationPage.xaml @@ -28,7 +28,7 @@ - @@ -214,21 +214,33 @@ - - - - - - - - - + + + + - - + + + + + + + @@ -250,7 +262,7 @@ + + + + - - - - - - - - - - { @@ -124,6 +126,27 @@ namespace Ink_Canvas.Windows.SettingsViews }; } + public void RefreshTheme() + { + ApplyCurrentTheme(); + } + + private void ApplyCurrentTheme() + { + try + { + int themeIndex = Helpers.SettingsManager.Settings.Appearance.Theme; + var elementTheme = themeIndex switch + { + 0 => iNKORE.UI.WPF.Modern.ElementTheme.Light, + 1 => iNKORE.UI.WPF.Modern.ElementTheme.Dark, + _ => iNKORE.UI.WPF.Modern.ElementTheme.Default, + }; + iNKORE.UI.WPF.Modern.ThemeManager.SetRequestedTheme(this, elementTheme); + } + catch { } + } + #region 修复触摸屏鼠标指针消失问题 [System.Runtime.InteropServices.DllImport("user32.dll")]