From c4657ebb86e40f16e93500802c039be26c0ce4cc Mon Sep 17 00:00:00 2001
From: PrefacedCorg <1876568293@qq.com>
Date: Sun, 26 Apr 2026 09:12:26 +0800
Subject: [PATCH] 1
---
Ink Canvas/MainWindow.xaml | 1580 +---------------
Ink Canvas/MainWindow.xaml.cs | 71 +-
.../MW_FloatingWindowInterceptor.cs | 201 +-
Ink Canvas/MainWindow_cs/MW_PPT.cs | 30 +-
Ink Canvas/MainWindow_cs/MW_Settings.cs | 1657 +----------------
Ink Canvas/MainWindow_cs/MW_SettingsToLoad.cs | 292 ---
Ink Canvas/MainWindow_cs/MW_Timer.cs | 8 +-
.../SettingsViews/Pages/AppearancePage.xaml | 8 +-
.../Pages/AppearancePage.xaml.cs | 12 +
.../SettingsViews/Pages/AutomationPage.xaml | 353 ++++
.../Pages/AutomationPage.xaml.cs | 647 +++++++
.../SettingsViews/Pages/CanvasPage.xaml.cs | 28 +
.../Pages/InkRecognitionPage.xaml.cs | 8 +
.../SettingsViews/Pages/PowerPointPage.xaml | 278 +++
.../Pages/PowerPointPage.xaml.cs | 700 +++++++
.../Windows/SettingsViews/SettingsWindow.xaml | 22 +
.../SettingsViews/SettingsWindow.xaml.cs | 2 +
17 files changed, 2149 insertions(+), 3748 deletions(-)
create mode 100644 Ink Canvas/Windows/SettingsViews/Pages/AutomationPage.xaml
create mode 100644 Ink Canvas/Windows/SettingsViews/Pages/AutomationPage.xaml.cs
create mode 100644 Ink Canvas/Windows/SettingsViews/Pages/PowerPointPage.xaml
create mode 100644 Ink Canvas/Windows/SettingsViews/Pages/PowerPointPage.xaml.cs
diff --git a/Ink Canvas/MainWindow.xaml b/Ink Canvas/MainWindow.xaml
index 8da7981c..3d8fcf61 100644
--- a/Ink Canvas/MainWindow.xaml
+++ b/Ink Canvas/MainWindow.xaml
@@ -1,4 +1,4 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/Ink Canvas/MainWindow.xaml.cs b/Ink Canvas/MainWindow.xaml.cs
index 26fc6532..6cf9546e 100644
--- a/Ink Canvas/MainWindow.xaml.cs
+++ b/Ink Canvas/MainWindow.xaml.cs
@@ -61,7 +61,7 @@ namespace Ink_Canvas
private InkFadeManager _inkFadeManager;
// 悬浮窗拦截管理器
- private FloatingWindowInterceptorManager _floatingWindowInterceptorManager;
+ public FloatingWindowInterceptorManager _floatingWindowInterceptorManager;
// 窗口概览模型
private WindowOverviewModel _windowOverviewModel;
@@ -1172,6 +1172,16 @@ namespace Ink_Canvas
_inkSmoothingManager?.UpdateConfig();
}
+ public void UpdateInkFadeManager(bool isEnabled, int fadeTime = 0)
+ {
+ if (_inkFadeManager != null)
+ {
+ _inkFadeManager.IsEnabled = isEnabled;
+ if (fadeTime > 0)
+ _inkFadeManager.UpdateFadeTime(fadeTime);
+ }
+ }
+
public void UpdatePickNameBackgroundsInComboBox()
{
}
@@ -2425,8 +2435,13 @@ namespace Ink_Canvas
return;
}
case "ppt":
- targetGroupBox = GroupBoxPPT;
- break;
+ {
+ var sw = new Windows.SettingsViews.SettingsWindow();
+ sw.Owner = this;
+ sw.NavigateToPage("PowerPointPage");
+ sw.ShowDialog();
+ return;
+ }
case "advanced":
{
var sw = new Windows.SettingsViews.SettingsWindow();
@@ -2436,8 +2451,13 @@ namespace Ink_Canvas
return;
}
case "automation":
- targetGroupBox = GroupBoxAutomation;
- break;
+ {
+ var sw = new Windows.SettingsViews.SettingsWindow();
+ sw.Owner = this;
+ sw.NavigateToPage("AutomationPage");
+ sw.ShowDialog();
+ return;
+ }
case "randomwindow":
{
var sw = new Windows.SettingsViews.SettingsWindow();
@@ -3231,18 +3251,18 @@ namespace Ink_Canvas
try
{
if (!isLoaded) return;
- if (ComboBoxPPTTimeCapsulePosition != null)
+ var comboBox = sender as System.Windows.Controls.ComboBox;
+ if (comboBox != null)
{
- Settings.PowerPointSettings.PPTTimeCapsulePosition = ComboBoxPPTTimeCapsulePosition.SelectedIndex;
+ Settings.PowerPointSettings.PPTTimeCapsulePosition = comboBox.SelectedIndex;
SaveSettingsToFile();
- // 如果当前在PPT放映模式,需要立即更新时间胶囊的位置
if (BtnPPTSlideShowEnd.Visibility == Visibility.Visible)
{
UpdatePPTTimeCapsulePosition();
}
- LogHelper.WriteLogToFile($"PPT时间胶囊位置已更改为: {ComboBoxPPTTimeCapsulePosition.SelectedIndex}", LogHelper.LogType.Event);
+ LogHelper.WriteLogToFile($"PPT时间胶囊位置已更改为: {comboBox.SelectedIndex}", LogHelper.LogType.Event);
}
}
catch (Exception ex)
@@ -3254,7 +3274,7 @@ namespace Ink_Canvas
///
/// 更新PPT模式下手势按钮的显示状态
///
- private void UpdateGestureButtonVisibilityInPPTMode()
+ public void UpdateGestureButtonVisibilityInPPTMode()
{
try
{
@@ -3333,7 +3353,7 @@ namespace Ink_Canvas
///
/// 更新PPT时间胶囊的位置
///
- private void UpdatePPTTimeCapsulePosition()
+ public void UpdatePPTTimeCapsulePosition()
{
try
{
@@ -3372,26 +3392,6 @@ namespace Ink_Canvas
///
private void InitializeFileAssociationStatus()
{
- try
- {
- bool isRegistered = FileAssociationManager.IsFileAssociationRegistered();
- if (isRegistered)
- {
- TextBlockFileAssociationStatus.Text = "✓ .icstk文件关联已注册";
- TextBlockFileAssociationStatus.Foreground = new SolidColorBrush(Colors.LightGreen);
- }
- else
- {
- TextBlockFileAssociationStatus.Text = "✗ .icstk文件关联未注册";
- TextBlockFileAssociationStatus.Foreground = new SolidColorBrush(Colors.LightCoral);
- }
- }
- catch (Exception ex)
- {
- TextBlockFileAssociationStatus.Text = "✗ 检查文件关联状态时出错";
- TextBlockFileAssociationStatus.Foreground = new SolidColorBrush(Colors.LightCoral);
- LogHelper.WriteLogToFile($"初始化文件关联状态显示时出错: {ex.Message}", LogHelper.LogType.Error);
- }
}
///
@@ -3492,15 +3492,6 @@ namespace Ink_Canvas
// 获取所有滑块控件并添加触摸支持
var sliders = new List
{
- PPTButtonLeftPositionValueSlider,
- PPTButtonRightPositionValueSlider,
- PPTButtonLBPositionValueSlider,
- PPTButtonRBPositionValueSlider,
- PPTLSButtonOpacityValueSlider,
- PPTRSButtonOpacityValueSlider,
- PPTLBButtonOpacityValueSlider,
- PPTRBButtonOpacityValueSlider,
- SideControlMinimumAutomationSlider,
BoardInkWidthSlider,
BoardInkAlphaSlider,
BoardHighlighterWidthSlider,
diff --git a/Ink Canvas/MainWindow_cs/MW_FloatingWindowInterceptor.cs b/Ink Canvas/MainWindow_cs/MW_FloatingWindowInterceptor.cs
index 62562806..13664681 100644
--- a/Ink Canvas/MainWindow_cs/MW_FloatingWindowInterceptor.cs
+++ b/Ink Canvas/MainWindow_cs/MW_FloatingWindowInterceptor.cs
@@ -1,5 +1,4 @@
using Ink_Canvas.Helpers;
-using iNKORE.UI.WPF.Modern.Controls;
using System;
using System.Linq;
using System.Windows;
@@ -10,25 +9,14 @@ namespace Ink_Canvas
{
#region 悬浮窗拦截功能
- ///
- /// 初始化悬浮窗拦截管理器
- ///
private void InitializeFloatingWindowInterceptor()
{
try
{
_floatingWindowInterceptorManager = new FloatingWindowInterceptorManager();
-
- // 订阅事件
_floatingWindowInterceptorManager.WindowIntercepted += OnFloatingWindowIntercepted;
_floatingWindowInterceptorManager.WindowRestored += OnFloatingWindowRestored;
-
- // 初始化拦截器
_floatingWindowInterceptorManager.Initialize(Settings.Automation.FloatingWindowInterceptor);
-
- // 加载UI状态
- LoadFloatingWindowInterceptorUI();
-
LogHelper.WriteLogToFile("悬浮窗拦截管理器初始化完成", LogHelper.LogType.Event);
}
catch (Exception ex)
@@ -37,83 +25,11 @@ namespace Ink_Canvas
}
}
- ///
- /// 加载悬浮窗拦截UI状态
- ///
- private void LoadFloatingWindowInterceptorUI()
- {
- try
- {
- if (!isLoaded) return;
-
- // 设置主开关状态
- ToggleSwitchFloatingWindowInterceptorEnabled.IsOn = Settings.Automation.FloatingWindowInterceptor.IsEnabled;
-
- // 设置各个拦截规则的状态
- foreach (var kvp in Settings.Automation.FloatingWindowInterceptor.InterceptRules)
- {
- var toggleName = $"ToggleSwitch{kvp.Key}";
- var toggle = FindName(toggleName) as ToggleSwitch;
- if (toggle != null)
- {
- toggle.IsOn = kvp.Value;
- }
- }
-
- // 更新UI可见性
- UpdateFloatingWindowInterceptorUI();
- }
- catch (Exception ex)
- {
- LogHelper.WriteLogToFile($"加载悬浮窗拦截UI状态失败: {ex.Message}", LogHelper.LogType.Error);
- }
- }
-
- ///
- /// 更新悬浮窗拦截UI
- ///
- private void UpdateFloatingWindowInterceptorUI()
- {
- try
- {
- var isEnabled = Settings.Automation.FloatingWindowInterceptor.IsEnabled;
- FloatingWindowInterceptorGrid.Visibility = isEnabled ? Visibility.Visible : Visibility.Collapsed;
-
- // 计算启用的规则数量
- var enabledRulesCount = Settings.Automation.FloatingWindowInterceptor.InterceptRules.Where(kvp => kvp.Value).Count();
- var totalRulesCount = Settings.Automation.FloatingWindowInterceptor.InterceptRules.Count;
-
- // 更新状态文本
- if (_floatingWindowInterceptorManager != null)
- {
- var stats = _floatingWindowInterceptorManager.GetStatistics();
- TextBlockFloatingWindowInterceptorStatus.Text = stats.IsRunning
- ? $"拦截器运行中 - 已启用 {enabledRulesCount}/{totalRulesCount} 个规则"
- : $"拦截器未启动 - 已启用 {enabledRulesCount}/{totalRulesCount} 个规则";
- }
- else
- {
- TextBlockFloatingWindowInterceptorStatus.Text = $"拦截器未初始化 - 已启用 {enabledRulesCount}/{totalRulesCount} 个规则";
- }
- }
- catch (Exception ex)
- {
- LogHelper.WriteLogToFile($"更新悬浮窗拦截UI失败: {ex.Message}", LogHelper.LogType.Error);
- }
- }
-
- ///
- /// 窗口被拦截事件处理
- ///
private void OnFloatingWindowIntercepted(object sender, FloatingWindowInterceptor.WindowInterceptedEventArgs e)
{
try
{
- // 在UI线程中更新状态
- Dispatcher.BeginInvoke(new Action(() =>
- {
- UpdateFloatingWindowInterceptorUI();
- }));
+ Dispatcher.BeginInvoke(new Action(() => { }));
}
catch (Exception ex)
{
@@ -121,18 +37,11 @@ namespace Ink_Canvas
}
}
- ///
- /// 窗口被恢复事件处理
- ///
private void OnFloatingWindowRestored(object sender, FloatingWindowInterceptor.WindowRestoredEventArgs e)
{
try
{
- // 在UI线程中更新状态
- Dispatcher.BeginInvoke(new Action(() =>
- {
- UpdateFloatingWindowInterceptorUI();
- }));
+ Dispatcher.BeginInvoke(new Action(() => { }));
}
catch (Exception ex)
{
@@ -144,30 +53,24 @@ namespace Ink_Canvas
#region 悬浮窗拦截事件处理
- ///
- /// 主开关切换事件
- ///
private void ToggleSwitchFloatingWindowInterceptorEnabled_Toggled(object sender, RoutedEventArgs e)
{
if (!isLoaded) return;
try
{
- Settings.Automation.FloatingWindowInterceptor.IsEnabled = ToggleSwitchFloatingWindowInterceptorEnabled.IsOn;
+ var toggle = sender as iNKORE.UI.WPF.Modern.Controls.ToggleSwitch;
+ if (toggle != null)
+ Settings.Automation.FloatingWindowInterceptor.IsEnabled = toggle.IsOn;
if (_floatingWindowInterceptorManager != null)
{
if (Settings.Automation.FloatingWindowInterceptor.IsEnabled)
- {
_floatingWindowInterceptorManager.Start();
- }
else
- {
_floatingWindowInterceptorManager.Stop();
- }
}
- UpdateFloatingWindowInterceptorUI();
SaveSettingsToFile();
}
catch (Exception ex)
@@ -176,129 +79,98 @@ namespace Ink_Canvas
}
}
- ///
- /// 希沃白板3拦截开关
- ///
private void ToggleSwitchSeewoWhiteboard3Floating_Toggled(object sender, RoutedEventArgs e)
{
if (!isLoaded) return;
- SetInterceptRule(FloatingWindowInterceptor.InterceptType.SeewoWhiteboard3Floating, ToggleSwitchSeewoWhiteboard3Floating.IsOn);
+ var toggle = sender as iNKORE.UI.WPF.Modern.Controls.ToggleSwitch;
+ if (toggle != null) SetInterceptRule(FloatingWindowInterceptor.InterceptType.SeewoWhiteboard3Floating, toggle.IsOn);
}
- ///
- /// 希沃白板5拦截开关
- ///
private void ToggleSwitchSeewoWhiteboard5Floating_Toggled(object sender, RoutedEventArgs e)
{
if (!isLoaded) return;
- SetInterceptRule(FloatingWindowInterceptor.InterceptType.SeewoWhiteboard5Floating, ToggleSwitchSeewoWhiteboard5Floating.IsOn);
+ var toggle = sender as iNKORE.UI.WPF.Modern.Controls.ToggleSwitch;
+ if (toggle != null) SetInterceptRule(FloatingWindowInterceptor.InterceptType.SeewoWhiteboard5Floating, toggle.IsOn);
}
- ///
- /// 希沃白板5C拦截开关
- ///
private void ToggleSwitchSeewoWhiteboard5CFloating_Toggled(object sender, RoutedEventArgs e)
{
if (!isLoaded) return;
- SetInterceptRule(FloatingWindowInterceptor.InterceptType.SeewoWhiteboard5CFloating, ToggleSwitchSeewoWhiteboard5CFloating.IsOn);
+ var toggle = sender as iNKORE.UI.WPF.Modern.Controls.ToggleSwitch;
+ if (toggle != null) SetInterceptRule(FloatingWindowInterceptor.InterceptType.SeewoWhiteboard5CFloating, toggle.IsOn);
}
- ///
- /// 希沃品课侧栏拦截开关
- ///
private void ToggleSwitchSeewoPincoSideBarFloating_Toggled(object sender, RoutedEventArgs e)
{
if (!isLoaded) return;
- SetInterceptRule(FloatingWindowInterceptor.InterceptType.SeewoPincoSideBarFloating, ToggleSwitchSeewoPincoSideBarFloating.IsOn);
+ var toggle = sender as iNKORE.UI.WPF.Modern.Controls.ToggleSwitch;
+ if (toggle != null) SetInterceptRule(FloatingWindowInterceptor.InterceptType.SeewoPincoSideBarFloating, toggle.IsOn);
}
- ///
- /// 希沃品课画笔拦截开关
- ///
private void ToggleSwitchSeewoPincoDrawingFloating_Toggled(object sender, RoutedEventArgs e)
{
if (!isLoaded) return;
- SetInterceptRule(FloatingWindowInterceptor.InterceptType.SeewoPincoDrawingFloating, ToggleSwitchSeewoPincoDrawingFloating.IsOn);
+ var toggle = sender as iNKORE.UI.WPF.Modern.Controls.ToggleSwitch;
+ if (toggle != null) SetInterceptRule(FloatingWindowInterceptor.InterceptType.SeewoPincoDrawingFloating, toggle.IsOn);
}
- ///
- /// 希沃PPT小工具拦截开关
- ///
private void ToggleSwitchSeewoPPTFloating_Toggled(object sender, RoutedEventArgs e)
{
if (!isLoaded) return;
- SetInterceptRule(FloatingWindowInterceptor.InterceptType.SeewoPPTFloating, ToggleSwitchSeewoPPTFloating.IsOn);
+ var toggle = sender as iNKORE.UI.WPF.Modern.Controls.ToggleSwitch;
+ if (toggle != null) SetInterceptRule(FloatingWindowInterceptor.InterceptType.SeewoPPTFloating, toggle.IsOn);
}
- ///
- /// AiClass拦截开关
- ///
private void ToggleSwitchAiClassFloating_Toggled(object sender, RoutedEventArgs e)
{
if (!isLoaded) return;
- SetInterceptRule(FloatingWindowInterceptor.InterceptType.AiClassFloating, ToggleSwitchAiClassFloating.IsOn);
+ var toggle = sender as iNKORE.UI.WPF.Modern.Controls.ToggleSwitch;
+ if (toggle != null) SetInterceptRule(FloatingWindowInterceptor.InterceptType.AiClassFloating, toggle.IsOn);
}
- ///
- /// 鸿合屏幕书写拦截开关
- ///
private void ToggleSwitchHiteAnnotationFloating_Toggled(object sender, RoutedEventArgs e)
{
if (!isLoaded) return;
- SetInterceptRule(FloatingWindowInterceptor.InterceptType.HiteAnnotationFloating, ToggleSwitchHiteAnnotationFloating.IsOn);
+ var toggle = sender as iNKORE.UI.WPF.Modern.Controls.ToggleSwitch;
+ if (toggle != null) SetInterceptRule(FloatingWindowInterceptor.InterceptType.HiteAnnotationFloating, toggle.IsOn);
}
- ///
- /// 畅言智慧课堂拦截开关
- ///
private void ToggleSwitchChangYanFloating_Toggled(object sender, RoutedEventArgs e)
{
if (!isLoaded) return;
- SetInterceptRule(FloatingWindowInterceptor.InterceptType.ChangYanFloating, ToggleSwitchChangYanFloating.IsOn);
+ var toggle = sender as iNKORE.UI.WPF.Modern.Controls.ToggleSwitch;
+ if (toggle != null) SetInterceptRule(FloatingWindowInterceptor.InterceptType.ChangYanFloating, toggle.IsOn);
}
- ///
- /// 畅言PPT拦截开关
- ///
private void ToggleSwitchChangYanPptFloating_Toggled(object sender, RoutedEventArgs e)
{
if (!isLoaded) return;
- SetInterceptRule(FloatingWindowInterceptor.InterceptType.ChangYanPptFloating, ToggleSwitchChangYanPptFloating.IsOn);
+ var toggle = sender as iNKORE.UI.WPF.Modern.Controls.ToggleSwitch;
+ if (toggle != null) SetInterceptRule(FloatingWindowInterceptor.InterceptType.ChangYanPptFloating, toggle.IsOn);
}
- ///
- /// 天喻教育云拦截开关
- ///
private void ToggleSwitchIntelligentClassFloating_Toggled(object sender, RoutedEventArgs e)
{
if (!isLoaded) return;
- SetInterceptRule(FloatingWindowInterceptor.InterceptType.IntelligentClassFloating, ToggleSwitchIntelligentClassFloating.IsOn);
+ var toggle = sender as iNKORE.UI.WPF.Modern.Controls.ToggleSwitch;
+ if (toggle != null) SetInterceptRule(FloatingWindowInterceptor.InterceptType.IntelligentClassFloating, toggle.IsOn);
}
- ///
- /// 希沃桌面画笔拦截开关
- ///
private void ToggleSwitchSeewoDesktopAnnotationFloating_Toggled(object sender, RoutedEventArgs e)
{
if (!isLoaded) return;
- SetInterceptRule(FloatingWindowInterceptor.InterceptType.SeewoDesktopAnnotationFloating, ToggleSwitchSeewoDesktopAnnotationFloating.IsOn);
+ var toggle = sender as iNKORE.UI.WPF.Modern.Controls.ToggleSwitch;
+ if (toggle != null) SetInterceptRule(FloatingWindowInterceptor.InterceptType.SeewoDesktopAnnotationFloating, toggle.IsOn);
}
- ///
- /// 希沃桌面侧栏拦截开关
- ///
private void ToggleSwitchSeewoDesktopSideBarFloating_Toggled(object sender, RoutedEventArgs e)
{
if (!isLoaded) return;
- SetInterceptRule(FloatingWindowInterceptor.InterceptType.SeewoDesktopSideBarFloating, ToggleSwitchSeewoDesktopSideBarFloating.IsOn);
+ var toggle = sender as iNKORE.UI.WPF.Modern.Controls.ToggleSwitch;
+ if (toggle != null) SetInterceptRule(FloatingWindowInterceptor.InterceptType.SeewoDesktopSideBarFloating, toggle.IsOn);
}
- ///
- /// 设置拦截规则
- ///
- /// 拦截类型
- /// 是否启用拦截
- private void SetInterceptRule(FloatingWindowInterceptor.InterceptType type, bool enabled)
+ public void SetInterceptRule(FloatingWindowInterceptor.InterceptType type, bool enabled)
{
try
{
@@ -307,18 +179,15 @@ namespace Ink_Canvas
_floatingWindowInterceptorManager.SetInterceptRule(type, enabled);
}
- // 更新设置
var ruleName = type.ToString();
if (Settings.Automation.FloatingWindowInterceptor.InterceptRules.ContainsKey(ruleName))
{
Settings.Automation.FloatingWindowInterceptor.InterceptRules[ruleName] = enabled;
}
- // 获取规则信息以处理父子关系
var rule = _floatingWindowInterceptorManager?.GetInterceptRule(type);
if (rule != null)
{
- // 如果是父规则,更新所有子规则的设置
if (rule.ChildTypes.Count > 0)
{
foreach (var childType in rule.ChildTypes)
@@ -330,7 +199,6 @@ namespace Ink_Canvas
}
}
}
- // 如果是子规则,更新父规则的设置
else if (rule.ParentType.HasValue)
{
var parentRule = _floatingWindowInterceptorManager?.GetInterceptRule(rule.ParentType.Value);
@@ -345,9 +213,6 @@ namespace Ink_Canvas
}
}
- // 更新UI显示
- UpdateFloatingWindowInterceptorUI();
-
SaveSettingsToFile();
}
catch (Exception ex)
@@ -357,4 +222,4 @@ namespace Ink_Canvas
}
#endregion
}
-}
\ No newline at end of file
+}
diff --git a/Ink Canvas/MainWindow_cs/MW_PPT.cs b/Ink Canvas/MainWindow_cs/MW_PPT.cs
index 1437027e..010eda9a 100644
--- a/Ink Canvas/MainWindow_cs/MW_PPT.cs
+++ b/Ink Canvas/MainWindow_cs/MW_PPT.cs
@@ -205,6 +205,7 @@ namespace Ink_Canvas
/// 提供对内部PPT链接管理器的公共访问,用于外部代码与PowerPoint进行交互。
///
public IPPTLinkManager PPTManager => _pptManager;
+ public PPTUIManager PPTUIManager => _pptUIManager;
#endregion
#region PPT Manager Initialization
@@ -214,7 +215,7 @@ namespace Ink_Canvas
///
/// 清理并释放现有的 PPT 管理器与 COM/Interop 状态,创建并配置新的 PPT 管理器(ROT 或 COM 实现,取决于设置)、单一的 PPT 墨迹管理器及其自动保存行为,以及 PPT UI 管理器与其显示/按钮位置选项。方法内部会订阅必要的 PPT 事件并记录初始化过程中的错误或警告。同时初始化长按页翻页定时器以支持长按翻页功能。
///
- private void InitializePPTManagers()
+ public void InitializePPTManagers()
{
try
{
@@ -298,7 +299,7 @@ namespace Ink_Canvas
///
/// 只有当Settings.PowerPointSettings.PowerPointSupport为true时才会启动监控,并记录启动事件日志。
///
- private void StartPPTMonitoring()
+ public void StartPPTMonitoring()
{
if (Settings.PowerPointSettings.PowerPointSupport)
{
@@ -310,7 +311,7 @@ namespace Ink_Canvas
///
/// 停止 PowerPoint 相关的监控:停止并清除用于延迟退出 PPT 模式的定时器,并停止 PPT 管理器的监控,同时记录事件日志。
///
- private void StopPPTMonitoring()
+ public void StopPPTMonitoring()
{
try
{
@@ -334,7 +335,7 @@ namespace Ink_Canvas
///
/// 仅在 PowerPoint 增强功能已启用且未使用 ROT 链接时生效;方法将创建 PowerPoint 应用(若不存在)并启动用于定期检查应用状态的定时器。
///
- private void StartPowerPointProcessMonitoring()
+ public void StartPowerPointProcessMonitoring()
{
try
{
@@ -364,7 +365,7 @@ namespace Ink_Canvas
///
/// 停止PowerPoint应用程序守护
///
- private void StopPowerPointProcessMonitoring()
+ public void StopPowerPointProcessMonitoring()
{
try
{
@@ -2021,14 +2022,14 @@ namespace Ink_Canvas
{
if (!isLoaded) return;
- Settings.PowerPointSettings.EnablePowerPointEnhancement = ToggleSwitchPowerPointEnhancement.IsOn;
+ var toggle = sender as iNKORE.UI.WPF.Modern.Controls.ToggleSwitch;
+ if (toggle != null)
+ Settings.PowerPointSettings.EnablePowerPointEnhancement = toggle.IsOn;
if (Settings.PowerPointSettings.EnablePowerPointEnhancement)
{
Settings.PowerPointSettings.IsSupportWPS = false;
- ToggleSwitchSupportWPS.IsOn = false;
- // 更新PPT管理器的WPS支持设置
if (_pptManager != null)
{
_pptManager.IsSupportWPS = false;
@@ -2037,7 +2038,6 @@ namespace Ink_Canvas
SaveSettingsToFile();
- // 启动或停止PowerPoint进程守护
if (Settings.PowerPointSettings.EnablePowerPointEnhancement)
{
StartPowerPointProcessMonitoring();
@@ -2066,16 +2066,16 @@ namespace Ink_Canvas
{
if (!isLoaded) return;
- Settings.PowerPointSettings.IsSupportWPS = ToggleSwitchSupportWPS.IsOn;
+ var toggle = sender as iNKORE.UI.WPF.Modern.Controls.ToggleSwitch;
+ if (toggle != null)
+ Settings.PowerPointSettings.IsSupportWPS = toggle.IsOn;
if (Settings.PowerPointSettings.IsSupportWPS)
{
if (!Settings.PowerPointSettings.PowerPointSupport)
{
Settings.PowerPointSettings.PowerPointSupport = true;
- ToggleSwitchSupportPowerPoint.IsOn = true;
- // 启动PPT监控
if (_pptManager == null)
{
InitializePPTManagers();
@@ -2086,12 +2086,10 @@ namespace Ink_Canvas
if (Settings.PowerPointSettings.EnablePowerPointEnhancement)
{
Settings.PowerPointSettings.EnablePowerPointEnhancement = false;
- ToggleSwitchPowerPointEnhancement.IsOn = false;
StopPowerPointProcessMonitoring();
}
}
- // 更新PPT管理器的WPS支持设置与翻页跳过动画设置
if (_pptManager != null)
{
_pptManager.IsSupportWPS = Settings.PowerPointSettings.IsSupportWPS;
@@ -2105,7 +2103,9 @@ namespace Ink_Canvas
{
if (!isLoaded) return;
- Settings.PowerPointSettings.SkipAnimationsWhenGoNext = ToggleSwitchSkipAnimationsWhenGoNext.IsOn;
+ var toggle = sender as iNKORE.UI.WPF.Modern.Controls.ToggleSwitch;
+ if (toggle != null)
+ Settings.PowerPointSettings.SkipAnimationsWhenGoNext = toggle.IsOn;
if (_pptManager != null)
{
diff --git a/Ink Canvas/MainWindow_cs/MW_Settings.cs b/Ink Canvas/MainWindow_cs/MW_Settings.cs
index 837e6072..c37b7f3a 100644
--- a/Ink Canvas/MainWindow_cs/MW_Settings.cs
+++ b/Ink Canvas/MainWindow_cs/MW_Settings.cs
@@ -1,4 +1,4 @@
-using H.NotifyIcon;
+using H.NotifyIcon;
using Ink_Canvas.Helpers;
using Ink_Canvas.Windows.SettingsViews.Helpers;
using Newtonsoft.Json;
@@ -55,42 +55,6 @@ namespace Ink_Canvas
/// 3. 如果开启PowerPoint支持,初始化PPT管理器并开始监控
/// 4. 如果关闭PowerPoint支持,停止监控
///
- private void ToggleSwitchSupportPowerPoint_Toggled(object sender, RoutedEventArgs e)
- {
- if (!isLoaded) return;
-
- Settings.PowerPointSettings.PowerPointSupport = ToggleSwitchSupportPowerPoint.IsOn;
-
- if (!Settings.PowerPointSettings.PowerPointSupport)
- {
- if (Settings.PowerPointSettings.IsSupportWPS)
- {
- Settings.PowerPointSettings.IsSupportWPS = false;
- ToggleSwitchSupportWPS.IsOn = false;
-
- if (_pptManager != null)
- {
- _pptManager.IsSupportWPS = false;
- }
- }
- }
-
- SaveSettingsToFile();
-
- // 使用新的PPT管理器
- if (Settings.PowerPointSettings.PowerPointSupport)
- {
- if (_pptManager == null)
- {
- InitializePPTManagers();
- }
- StartPPTMonitoring();
- }
- else
- {
- StopPPTMonitoring();
- }
- }
///
/// 处理使用ROT PPT链接开关状态更改事件
@@ -106,45 +70,6 @@ namespace Ink_Canvas
/// 5. 如果启用了PowerPoint支持,开始PPT监控
/// 6. 记录切换PPT联动架构的日志
///
- private void ToggleSwitchUseRotPptLink_Toggled(object sender, RoutedEventArgs e)
- {
- if (!isLoaded) return;
-
- Settings.PowerPointSettings.UseRotPptLink = ToggleSwitchUseRotPptLink.IsOn;
- SaveSettingsToFile();
-
- try
- {
- StopPPTMonitoring();
- if (Settings.PowerPointSettings.UseRotPptLink &&
- Settings.PowerPointSettings.EnablePowerPointEnhancement)
- {
- Settings.PowerPointSettings.EnablePowerPointEnhancement = false;
- if (ToggleSwitchPowerPointEnhancement != null)
- {
- ToggleSwitchPowerPointEnhancement.IsOn = false;
- }
- StopPowerPointProcessMonitoring();
-
- SaveSettingsToFile();
- }
-
- InitializePPTManagers();
-
- if (Settings.PowerPointSettings.PowerPointSupport)
- {
- StartPPTMonitoring();
- }
-
- LogHelper.WriteLogToFile(
- $"已切换 PPT 联动架构为 {(Settings.PowerPointSettings.UseRotPptLink ? "ROT" : "COM")}",
- LogHelper.LogType.Event);
- }
- catch (Exception ex)
- {
- LogHelper.WriteLogToFile($"切换 PPT 联动架构失败: {ex}", LogHelper.LogType.Error);
- }
- }
///
/// 处理新幻灯片放映时显示画布开关状态更改事件
@@ -154,13 +79,6 @@ namespace Ink_Canvas
///
/// 当新幻灯片放映时显示画布开关状态更改时,保存设置到文件
///
- private void ToggleSwitchShowCanvasAtNewSlideShow_Toggled(object sender, RoutedEventArgs e)
- {
- if (!isLoaded) return;
-
- Settings.PowerPointSettings.IsShowCanvasAtNewSlideShow = ToggleSwitchShowCanvasAtNewSlideShow.IsOn;
- SaveSettingsToFile();
- }
#endregion
@@ -510,751 +428,17 @@ namespace Ink_Canvas
// SaveSettingsToFile();
//}
- private void ToggleSwitchShowPPTButton_OnToggled(object sender, RoutedEventArgs e)
+
+
+ public void UpdatePPTBtnSlidersStatus()
{
- if (!isLoaded) return;
- Settings.PowerPointSettings.ShowPPTButton = ToggleSwitchShowPPTButton.IsOn;
- SaveSettingsToFile();
- // 更新PPT UI管理器设置
- if (_pptUIManager != null)
- {
- _pptUIManager.ShowPPTButton = Settings.PowerPointSettings.ShowPPTButton;
- _pptUIManager.UpdateNavigationPanelsVisibility();
- }
- UpdatePPTBtnPreview();
}
- private void ToggleSwitchShowPPTSidebarByDefault_Toggled(object sender, RoutedEventArgs e)
- {
- if (!isLoaded) return;
- Settings.PowerPointSettings.ShowPPTSidebarByDefault = ToggleSwitchShowPPTSidebarByDefault.IsOn;
- SaveSettingsToFile();
- if (BtnPPTSlideShowEnd?.Visibility == Visibility.Visible)
- UpdatePPTQuickPanelVisibility();
- }
-
- private void ToggleSwitchEnablePPTButtonPageClickable_OnToggled(object sender, RoutedEventArgs e)
- {
- if (!isLoaded) return;
- Settings.PowerPointSettings.EnablePPTButtonPageClickable = ToggleSwitchEnablePPTButtonPageClickable.IsOn;
- SaveSettingsToFile();
- }
-
- private void ToggleSwitchEnablePPTButtonLongPressPageTurn_OnToggled(object sender, RoutedEventArgs e)
- {
- if (!isLoaded) return;
- Settings.PowerPointSettings.EnablePPTButtonLongPressPageTurn = ToggleSwitchEnablePPTButtonLongPressPageTurn.IsOn;
- SaveSettingsToFile();
- }
-
- private void PPTLSButtonOpacityValueSlider_ValueChanged(object sender, RoutedEventArgs e)
- {
- if (!isLoaded) return;
- double roundedValue = Math.Round(PPTLSButtonOpacityValueSlider.Value, 1);
- PPTLSButtonOpacityValueSlider.ValueChanged -= PPTLSButtonOpacityValueSlider_ValueChanged;
- PPTLSButtonOpacityValueSlider.Value = roundedValue;
- PPTLSButtonOpacityValueSlider.ValueChanged += PPTLSButtonOpacityValueSlider_ValueChanged;
- Settings.PowerPointSettings.PPTLSButtonOpacity = roundedValue;
- SaveSettingsToFile();
- // 更新PPT UI管理器设置
- if (_pptUIManager != null)
- {
- _pptUIManager.PPTLSButtonOpacity = roundedValue;
- _pptUIManager.UpdateNavigationButtonStyles();
- }
- UpdatePPTBtnPreview();
- }
-
- private void PPTRSButtonOpacityValueSlider_ValueChanged(object sender, RoutedEventArgs e)
- {
- if (!isLoaded) return;
- double roundedValue = Math.Round(PPTRSButtonOpacityValueSlider.Value, 1);
- PPTRSButtonOpacityValueSlider.ValueChanged -= PPTRSButtonOpacityValueSlider_ValueChanged;
- PPTRSButtonOpacityValueSlider.Value = roundedValue;
- PPTRSButtonOpacityValueSlider.ValueChanged += PPTRSButtonOpacityValueSlider_ValueChanged;
- Settings.PowerPointSettings.PPTRSButtonOpacity = roundedValue;
- SaveSettingsToFile();
- // 更新PPT UI管理器设置
- if (_pptUIManager != null)
- {
- _pptUIManager.PPTRSButtonOpacity = roundedValue;
- _pptUIManager.UpdateNavigationButtonStyles();
- }
- UpdatePPTBtnPreview();
- }
-
- private void PPTLBButtonOpacityValueSlider_ValueChanged(object sender, RoutedEventArgs e)
- {
- if (!isLoaded) return;
- double roundedValue = Math.Round(PPTLBButtonOpacityValueSlider.Value, 1);
- PPTLBButtonOpacityValueSlider.ValueChanged -= PPTLBButtonOpacityValueSlider_ValueChanged;
- PPTLBButtonOpacityValueSlider.Value = roundedValue;
- PPTLBButtonOpacityValueSlider.ValueChanged += PPTLBButtonOpacityValueSlider_ValueChanged;
- Settings.PowerPointSettings.PPTLBButtonOpacity = roundedValue;
- SaveSettingsToFile();
- // 更新PPT UI管理器设置
- if (_pptUIManager != null)
- {
- _pptUIManager.PPTLBButtonOpacity = roundedValue;
- _pptUIManager.UpdateNavigationButtonStyles();
- }
- UpdatePPTBtnPreview();
- }
-
- private void PPTRBButtonOpacityValueSlider_ValueChanged(object sender, RoutedEventArgs e)
- {
- if (!isLoaded) return;
- double roundedValue = Math.Round(PPTRBButtonOpacityValueSlider.Value, 1);
- PPTRBButtonOpacityValueSlider.ValueChanged -= PPTRBButtonOpacityValueSlider_ValueChanged;
- PPTRBButtonOpacityValueSlider.Value = roundedValue;
- PPTRBButtonOpacityValueSlider.ValueChanged += PPTRBButtonOpacityValueSlider_ValueChanged;
- Settings.PowerPointSettings.PPTRBButtonOpacity = roundedValue;
- SaveSettingsToFile();
- // 更新PPT UI管理器设置
- if (_pptUIManager != null)
- {
- _pptUIManager.PPTRBButtonOpacity = roundedValue;
- _pptUIManager.UpdateNavigationButtonStyles();
- }
- UpdatePPTBtnPreview();
- }
-
- // 左侧透明度按钮
- private void PPTLSOpacityPlusBtn_Clicked(object sender, RoutedEventArgs e)
- {
- if (!isLoaded) return;
- PPTLSButtonOpacityValueSlider.Value = Math.Min(1.0, PPTLSButtonOpacityValueSlider.Value + 0.1);
- Settings.PowerPointSettings.PPTLSButtonOpacity = PPTLSButtonOpacityValueSlider.Value;
- SaveSettingsToFile();
- if (_pptUIManager != null)
- {
- _pptUIManager.PPTLSButtonOpacity = Settings.PowerPointSettings.PPTLSButtonOpacity;
- _pptUIManager.UpdateNavigationButtonStyles();
- }
- UpdatePPTBtnPreview();
- }
-
- private void PPTLSOpacityMinusBtn_Clicked(object sender, RoutedEventArgs e)
- {
- if (!isLoaded) return;
- PPTLSButtonOpacityValueSlider.Value = Math.Max(0.1, PPTLSButtonOpacityValueSlider.Value - 0.1);
- Settings.PowerPointSettings.PPTLSButtonOpacity = PPTLSButtonOpacityValueSlider.Value;
- SaveSettingsToFile();
- if (_pptUIManager != null)
- {
- _pptUIManager.PPTLSButtonOpacity = Settings.PowerPointSettings.PPTLSButtonOpacity;
- _pptUIManager.UpdateNavigationButtonStyles();
- }
- UpdatePPTBtnPreview();
- }
-
- private void PPTLSOpacitySyncBtn_Clicked(object sender, RoutedEventArgs e)
- {
- if (!isLoaded) return;
- PPTRSButtonOpacityValueSlider.Value = PPTLSButtonOpacityValueSlider.Value;
- Settings.PowerPointSettings.PPTRSButtonOpacity = PPTLSButtonOpacityValueSlider.Value;
- SaveSettingsToFile();
- if (_pptUIManager != null)
- {
- _pptUIManager.PPTRSButtonOpacity = Settings.PowerPointSettings.PPTRSButtonOpacity;
- _pptUIManager.UpdateNavigationButtonStyles();
- }
- UpdatePPTBtnPreview();
- }
-
- // 右侧透明度按钮
- private void PPTRSOpacityPlusBtn_Clicked(object sender, RoutedEventArgs e)
- {
- if (!isLoaded) return;
- PPTRSButtonOpacityValueSlider.Value = Math.Min(1.0, PPTRSButtonOpacityValueSlider.Value + 0.1);
- Settings.PowerPointSettings.PPTRSButtonOpacity = PPTRSButtonOpacityValueSlider.Value;
- SaveSettingsToFile();
- if (_pptUIManager != null)
- {
- _pptUIManager.PPTRSButtonOpacity = Settings.PowerPointSettings.PPTRSButtonOpacity;
- _pptUIManager.UpdateNavigationButtonStyles();
- }
- UpdatePPTBtnPreview();
- }
-
- private void PPTRSOpacityMinusBtn_Clicked(object sender, RoutedEventArgs e)
- {
- if (!isLoaded) return;
- PPTRSButtonOpacityValueSlider.Value = Math.Max(0.1, PPTRSButtonOpacityValueSlider.Value - 0.1);
- Settings.PowerPointSettings.PPTRSButtonOpacity = PPTRSButtonOpacityValueSlider.Value;
- SaveSettingsToFile();
- if (_pptUIManager != null)
- {
- _pptUIManager.PPTRSButtonOpacity = Settings.PowerPointSettings.PPTRSButtonOpacity;
- _pptUIManager.UpdateNavigationButtonStyles();
- }
- UpdatePPTBtnPreview();
- }
-
- private void PPTRSOpacitySyncBtn_Clicked(object sender, RoutedEventArgs e)
- {
- if (!isLoaded) return;
- PPTLSButtonOpacityValueSlider.Value = PPTRSButtonOpacityValueSlider.Value;
- Settings.PowerPointSettings.PPTLSButtonOpacity = PPTRSButtonOpacityValueSlider.Value;
- SaveSettingsToFile();
- if (_pptUIManager != null)
- {
- _pptUIManager.PPTLSButtonOpacity = Settings.PowerPointSettings.PPTLSButtonOpacity;
- _pptUIManager.UpdateNavigationButtonStyles();
- }
- UpdatePPTBtnPreview();
- }
-
- // 左下透明度按钮
- private void PPTLBOpacityPlusBtn_Clicked(object sender, RoutedEventArgs e)
- {
- if (!isLoaded) return;
- PPTLBButtonOpacityValueSlider.Value = Math.Min(1.0, PPTLBButtonOpacityValueSlider.Value + 0.1);
- Settings.PowerPointSettings.PPTLBButtonOpacity = PPTLBButtonOpacityValueSlider.Value;
- SaveSettingsToFile();
- if (_pptUIManager != null)
- {
- _pptUIManager.PPTLBButtonOpacity = Settings.PowerPointSettings.PPTLBButtonOpacity;
- _pptUIManager.UpdateNavigationButtonStyles();
- }
- UpdatePPTBtnPreview();
- }
-
- private void PPTLBOpacityMinusBtn_Clicked(object sender, RoutedEventArgs e)
- {
- if (!isLoaded) return;
- PPTLBButtonOpacityValueSlider.Value = Math.Max(0.1, PPTLBButtonOpacityValueSlider.Value - 0.1);
- Settings.PowerPointSettings.PPTLBButtonOpacity = PPTLBButtonOpacityValueSlider.Value;
- SaveSettingsToFile();
- if (_pptUIManager != null)
- {
- _pptUIManager.PPTLBButtonOpacity = Settings.PowerPointSettings.PPTLBButtonOpacity;
- _pptUIManager.UpdateNavigationButtonStyles();
- }
- UpdatePPTBtnPreview();
- }
-
- private void PPTLBOpacitySyncBtn_Clicked(object sender, RoutedEventArgs e)
- {
- if (!isLoaded) return;
- PPTRBButtonOpacityValueSlider.Value = PPTLBButtonOpacityValueSlider.Value;
- Settings.PowerPointSettings.PPTRBButtonOpacity = PPTLBButtonOpacityValueSlider.Value;
- SaveSettingsToFile();
- if (_pptUIManager != null)
- {
- _pptUIManager.PPTRBButtonOpacity = Settings.PowerPointSettings.PPTRBButtonOpacity;
- _pptUIManager.UpdateNavigationButtonStyles();
- }
- UpdatePPTBtnPreview();
- }
-
- // 右下透明度按钮
- private void PPTRBOpacityPlusBtn_Clicked(object sender, RoutedEventArgs e)
- {
- if (!isLoaded) return;
- PPTRBButtonOpacityValueSlider.Value = Math.Min(1.0, PPTRBButtonOpacityValueSlider.Value + 0.1);
- Settings.PowerPointSettings.PPTRBButtonOpacity = PPTRBButtonOpacityValueSlider.Value;
- SaveSettingsToFile();
- if (_pptUIManager != null)
- {
- _pptUIManager.PPTRBButtonOpacity = Settings.PowerPointSettings.PPTRBButtonOpacity;
- _pptUIManager.UpdateNavigationButtonStyles();
- }
- UpdatePPTBtnPreview();
- }
-
- private void PPTRBOpacityMinusBtn_Clicked(object sender, RoutedEventArgs e)
- {
- if (!isLoaded) return;
- PPTRBButtonOpacityValueSlider.Value = Math.Max(0.1, PPTRBButtonOpacityValueSlider.Value - 0.1);
- Settings.PowerPointSettings.PPTRBButtonOpacity = PPTRBButtonOpacityValueSlider.Value;
- SaveSettingsToFile();
- if (_pptUIManager != null)
- {
- _pptUIManager.PPTRBButtonOpacity = Settings.PowerPointSettings.PPTRBButtonOpacity;
- _pptUIManager.UpdateNavigationButtonStyles();
- }
- UpdatePPTBtnPreview();
- }
-
- private void PPTRBOpacitySyncBtn_Clicked(object sender, RoutedEventArgs e)
- {
- if (!isLoaded) return;
- PPTLBButtonOpacityValueSlider.Value = PPTRBButtonOpacityValueSlider.Value;
- Settings.PowerPointSettings.PPTLBButtonOpacity = PPTRBButtonOpacityValueSlider.Value;
- SaveSettingsToFile();
- if (_pptUIManager != null)
- {
- _pptUIManager.PPTLBButtonOpacity = Settings.PowerPointSettings.PPTLBButtonOpacity;
- _pptUIManager.UpdateNavigationButtonStyles();
- }
- UpdatePPTBtnPreview();
- }
-
- private void PPTLSOpacityResetBtn_Clicked(object sender, RoutedEventArgs e)
- {
- if (!isLoaded) return;
- PPTLSButtonOpacityValueSlider.Value = 0.5;
- Settings.PowerPointSettings.PPTLSButtonOpacity = 0.5;
- SaveSettingsToFile();
- if (_pptUIManager != null)
- {
- _pptUIManager.PPTLSButtonOpacity = 0.5;
- _pptUIManager.UpdateNavigationButtonStyles();
- }
- UpdatePPTBtnPreview();
- }
-
- private void PPTRSOpacityResetBtn_Clicked(object sender, RoutedEventArgs e)
- {
- if (!isLoaded) return;
- PPTRSButtonOpacityValueSlider.Value = 0.5;
- Settings.PowerPointSettings.PPTRSButtonOpacity = 0.5;
- SaveSettingsToFile();
- if (_pptUIManager != null)
- {
- _pptUIManager.PPTRSButtonOpacity = 0.5;
- _pptUIManager.UpdateNavigationButtonStyles();
- }
- UpdatePPTBtnPreview();
- }
-
- private void PPTLBOpacityResetBtn_Clicked(object sender, RoutedEventArgs e)
- {
- if (!isLoaded) return;
- PPTLBButtonOpacityValueSlider.Value = 0.5;
- Settings.PowerPointSettings.PPTLBButtonOpacity = 0.5;
- SaveSettingsToFile();
- if (_pptUIManager != null)
- {
- _pptUIManager.PPTLBButtonOpacity = 0.5;
- _pptUIManager.UpdateNavigationButtonStyles();
- }
- UpdatePPTBtnPreview();
- }
-
- private void PPTRBOpacityResetBtn_Clicked(object sender, RoutedEventArgs e)
- {
- if (!isLoaded) return;
- PPTRBButtonOpacityValueSlider.Value = 0.5;
- Settings.PowerPointSettings.PPTRBButtonOpacity = 0.5;
- SaveSettingsToFile();
- if (_pptUIManager != null)
- {
- _pptUIManager.PPTRBButtonOpacity = 0.5;
- _pptUIManager.UpdateNavigationButtonStyles();
- }
- UpdatePPTBtnPreview();
- }
-
- private void CheckboxEnableLBPPTButton_IsCheckChanged(object sender, RoutedEventArgs e)
- {
- if (!isLoaded) return;
- var str = Settings.PowerPointSettings.PPTButtonsDisplayOption.ToString();
- char[] c = str.ToCharArray();
- c[0] = (bool)((CheckBox)sender).IsChecked ? '2' : '1';
- Settings.PowerPointSettings.PPTButtonsDisplayOption = int.Parse(new string(c));
- SaveSettingsToFile();
- // 更新PPT UI管理器设置
- if (_pptUIManager != null && BtnPPTSlideShowEnd.Visibility == Visibility.Visible)
- {
- _pptUIManager.PPTButtonsDisplayOption = Settings.PowerPointSettings.PPTButtonsDisplayOption;
- _pptUIManager.UpdateNavigationPanelsVisibility();
- }
- UpdatePPTBtnPreview();
- }
-
- private void CheckboxEnableRBPPTButton_IsCheckChanged(object sender, RoutedEventArgs e)
- {
- if (!isLoaded) return;
- var str = Settings.PowerPointSettings.PPTButtonsDisplayOption.ToString();
- char[] c = str.ToCharArray();
- c[1] = (bool)((CheckBox)sender).IsChecked ? '2' : '1';
- Settings.PowerPointSettings.PPTButtonsDisplayOption = int.Parse(new string(c));
- SaveSettingsToFile();
- // 更新PPT UI管理器设置
- if (_pptUIManager != null && BtnPPTSlideShowEnd.Visibility == Visibility.Visible)
- {
- _pptUIManager.PPTButtonsDisplayOption = Settings.PowerPointSettings.PPTButtonsDisplayOption;
- _pptUIManager.UpdateNavigationPanelsVisibility();
- }
- UpdatePPTBtnPreview();
- }
-
- private void CheckboxEnableLSPPTButton_IsCheckChanged(object sender, RoutedEventArgs e)
- {
- if (!isLoaded) return;
- var str = Settings.PowerPointSettings.PPTButtonsDisplayOption.ToString();
- char[] c = str.ToCharArray();
- c[2] = (bool)((CheckBox)sender).IsChecked ? '2' : '1';
- Settings.PowerPointSettings.PPTButtonsDisplayOption = int.Parse(new string(c));
- SaveSettingsToFile();
- // 更新PPT UI管理器设置
- if (_pptUIManager != null && BtnPPTSlideShowEnd.Visibility == Visibility.Visible)
- {
- _pptUIManager.PPTButtonsDisplayOption = Settings.PowerPointSettings.PPTButtonsDisplayOption;
- _pptUIManager.UpdateNavigationPanelsVisibility();
- }
- UpdatePPTBtnPreview();
- }
-
- private void CheckboxEnableRSPPTButton_IsCheckChanged(object sender, RoutedEventArgs e)
- {
- if (!isLoaded) return;
- var str = Settings.PowerPointSettings.PPTButtonsDisplayOption.ToString();
- char[] c = str.ToCharArray();
- c[3] = (bool)((CheckBox)sender).IsChecked ? '2' : '1';
- Settings.PowerPointSettings.PPTButtonsDisplayOption = int.Parse(new string(c));
- SaveSettingsToFile();
- // 更新PPT UI管理器设置
- if (_pptUIManager != null && BtnPPTSlideShowEnd.Visibility == Visibility.Visible)
- {
- _pptUIManager.PPTButtonsDisplayOption = Settings.PowerPointSettings.PPTButtonsDisplayOption;
- _pptUIManager.UpdateNavigationPanelsVisibility();
- }
- UpdatePPTBtnPreview();
- }
-
- private void CheckboxSPPTDisplayPage_IsCheckChange(object sender, RoutedEventArgs e)
- {
- if (!isLoaded) return;
- var str = Settings.PowerPointSettings.PPTSButtonsOption.ToString();
- char[] c = str.ToCharArray();
- c[0] = (bool)((CheckBox)sender).IsChecked ? '2' : '1';
- Settings.PowerPointSettings.PPTSButtonsOption = int.Parse(new string(c));
- SaveSettingsToFile();
- // 更新PPT UI管理器设置
- if (_pptUIManager != null && BtnPPTSlideShowEnd.Visibility == Visibility.Visible)
- {
- _pptUIManager.PPTSButtonsOption = Settings.PowerPointSettings.PPTSButtonsOption;
- _pptUIManager.UpdateNavigationButtonStyles();
- }
- UpdatePPTBtnPreview();
- }
-
- private void CheckboxSPPTHalfOpacity_IsCheckChange(object sender, RoutedEventArgs e)
- {
- if (!isLoaded) return;
- var str = Settings.PowerPointSettings.PPTSButtonsOption.ToString();
- char[] c = str.ToCharArray();
- bool isHalfOpacity = (bool)((CheckBox)sender).IsChecked;
- c[1] = isHalfOpacity ? '2' : '1';
- Settings.PowerPointSettings.PPTSButtonsOption = int.Parse(new string(c));
-
- // 如果开启半透明选项,设置默认透明度为0.5;否则为1.0
- if (isHalfOpacity)
- {
- if (Settings.PowerPointSettings.PPTLSButtonOpacity == 1.0)
- Settings.PowerPointSettings.PPTLSButtonOpacity = 0.5;
- if (Settings.PowerPointSettings.PPTRSButtonOpacity == 1.0)
- Settings.PowerPointSettings.PPTRSButtonOpacity = 0.5;
- PPTLSButtonOpacityValueSlider.Value = Settings.PowerPointSettings.PPTLSButtonOpacity;
- PPTRSButtonOpacityValueSlider.Value = Settings.PowerPointSettings.PPTRSButtonOpacity;
- }
- else
- {
- if (Settings.PowerPointSettings.PPTLSButtonOpacity == 0.5)
- Settings.PowerPointSettings.PPTLSButtonOpacity = 1.0;
- if (Settings.PowerPointSettings.PPTRSButtonOpacity == 0.5)
- Settings.PowerPointSettings.PPTRSButtonOpacity = 1.0;
- PPTLSButtonOpacityValueSlider.Value = Settings.PowerPointSettings.PPTLSButtonOpacity;
- PPTRSButtonOpacityValueSlider.Value = Settings.PowerPointSettings.PPTRSButtonOpacity;
- }
-
- SaveSettingsToFile();
- // 更新PPT UI管理器设置
- if (_pptUIManager != null && BtnPPTSlideShowEnd.Visibility == Visibility.Visible)
- {
- _pptUIManager.PPTSButtonsOption = Settings.PowerPointSettings.PPTSButtonsOption;
- _pptUIManager.PPTLSButtonOpacity = Settings.PowerPointSettings.PPTLSButtonOpacity;
- _pptUIManager.PPTRSButtonOpacity = Settings.PowerPointSettings.PPTRSButtonOpacity;
- _pptUIManager.UpdateNavigationButtonStyles();
- }
- UpdatePPTBtnPreview();
- }
-
- private void CheckboxSPPTBlackBackground_IsCheckChange(object sender, RoutedEventArgs e)
- {
- if (!isLoaded) return;
- var str = Settings.PowerPointSettings.PPTSButtonsOption.ToString();
- char[] c = str.ToCharArray();
- c[2] = (bool)((CheckBox)sender).IsChecked ? '2' : '1';
- Settings.PowerPointSettings.PPTSButtonsOption = int.Parse(new string(c));
- SaveSettingsToFile();
- // 更新PPT UI管理器设置
- if (_pptUIManager != null && BtnPPTSlideShowEnd.Visibility == Visibility.Visible)
- {
- _pptUIManager.PPTSButtonsOption = Settings.PowerPointSettings.PPTSButtonsOption;
- _pptUIManager.UpdateNavigationButtonStyles();
- }
- UpdatePPTBtnPreview();
- }
-
- private void CheckboxBPPTDisplayPage_IsCheckChange(object sender, RoutedEventArgs e)
- {
- if (!isLoaded) return;
- var str = Settings.PowerPointSettings.PPTBButtonsOption.ToString();
- char[] c = str.ToCharArray();
- c[0] = (bool)((CheckBox)sender).IsChecked ? '2' : '1';
- Settings.PowerPointSettings.PPTBButtonsOption = int.Parse(new string(c));
- SaveSettingsToFile();
- // 更新PPT UI管理器设置
- if (_pptUIManager != null && BtnPPTSlideShowEnd.Visibility == Visibility.Visible)
- {
- _pptUIManager.PPTBButtonsOption = Settings.PowerPointSettings.PPTBButtonsOption;
- _pptUIManager.UpdateNavigationButtonStyles();
- }
- UpdatePPTBtnPreview();
- }
-
- private void CheckboxBPPTHalfOpacity_IsCheckChange(object sender, RoutedEventArgs e)
- {
- if (!isLoaded) return;
- var str = Settings.PowerPointSettings.PPTBButtonsOption.ToString();
- char[] c = str.ToCharArray();
- bool isHalfOpacity = (bool)((CheckBox)sender).IsChecked;
- c[1] = isHalfOpacity ? '2' : '1';
- Settings.PowerPointSettings.PPTBButtonsOption = int.Parse(new string(c));
-
- // 如果开启半透明选项,设置默认透明度为0.5;否则为1.0
- if (isHalfOpacity)
- {
- if (Settings.PowerPointSettings.PPTLBButtonOpacity == 1.0)
- Settings.PowerPointSettings.PPTLBButtonOpacity = 0.5;
- if (Settings.PowerPointSettings.PPTRBButtonOpacity == 1.0)
- Settings.PowerPointSettings.PPTRBButtonOpacity = 0.5;
- PPTLBButtonOpacityValueSlider.Value = Settings.PowerPointSettings.PPTLBButtonOpacity;
- PPTRBButtonOpacityValueSlider.Value = Settings.PowerPointSettings.PPTRBButtonOpacity;
- }
- else
- {
- if (Settings.PowerPointSettings.PPTLBButtonOpacity == 0.5)
- Settings.PowerPointSettings.PPTLBButtonOpacity = 1.0;
- if (Settings.PowerPointSettings.PPTRBButtonOpacity == 0.5)
- Settings.PowerPointSettings.PPTRBButtonOpacity = 1.0;
- PPTLBButtonOpacityValueSlider.Value = Settings.PowerPointSettings.PPTLBButtonOpacity;
- PPTRBButtonOpacityValueSlider.Value = Settings.PowerPointSettings.PPTRBButtonOpacity;
- }
-
- SaveSettingsToFile();
- UpdatePPTUIManagerSettings();
- UpdatePPTBtnPreview();
- }
-
- private void CheckboxBPPTBlackBackground_IsCheckChange(object sender, RoutedEventArgs e)
- {
- if (!isLoaded) return;
- var str = Settings.PowerPointSettings.PPTBButtonsOption.ToString();
- char[] c = str.ToCharArray();
- c[2] = (bool)((CheckBox)sender).IsChecked ? '2' : '1';
- Settings.PowerPointSettings.PPTBButtonsOption = int.Parse(new string(c));
- SaveSettingsToFile();
- UpdatePPTUIManagerSettings();
- UpdatePPTBtnPreview();
- }
-
- private void PPTButtonLeftPositionValueSlider_ValueChanged(object sender, RoutedEventArgs e)
- {
- if (!isLoaded) return;
- Settings.PowerPointSettings.PPTLSButtonPosition = (int)PPTButtonLeftPositionValueSlider.Value;
- UpdatePPTBtnSlidersStatus();
- UpdatePPTUIManagerSettings();
- SliderDelayAction.DebounceAction(2000, null, SaveSettingsToFile);
- UpdatePPTBtnPreview();
- }
-
- private void UpdatePPTBtnSlidersStatus()
- {
- if (PPTButtonLeftPositionValueSlider.Value <= -500 || PPTButtonLeftPositionValueSlider.Value >= 500)
- {
- if (PPTButtonLeftPositionValueSlider.Value >= 500)
- {
- PPTBtnLSPlusBtn.IsEnabled = false;
- PPTBtnLSPlusBtn.Opacity = 0.5;
- PPTButtonLeftPositionValueSlider.Value = 500;
- }
- else if (PPTButtonLeftPositionValueSlider.Value <= -500)
- {
- PPTBtnLSMinusBtn.IsEnabled = false;
- PPTBtnLSMinusBtn.Opacity = 0.5;
- PPTButtonLeftPositionValueSlider.Value = -500;
- }
- }
- else
- {
- PPTBtnLSPlusBtn.IsEnabled = true;
- PPTBtnLSPlusBtn.Opacity = 1;
- PPTBtnLSMinusBtn.IsEnabled = true;
- PPTBtnLSMinusBtn.Opacity = 1;
- }
-
- if (PPTButtonRightPositionValueSlider.Value <= -500 || PPTButtonRightPositionValueSlider.Value >= 500)
- {
- if (PPTButtonRightPositionValueSlider.Value >= 500)
- {
- PPTBtnRSPlusBtn.IsEnabled = false;
- PPTBtnRSPlusBtn.Opacity = 0.5;
- PPTButtonRightPositionValueSlider.Value = 500;
- }
- else if (PPTButtonRightPositionValueSlider.Value <= -500)
- {
- PPTBtnRSMinusBtn.IsEnabled = false;
- PPTBtnRSMinusBtn.Opacity = 0.5;
- PPTButtonRightPositionValueSlider.Value = -500;
- }
- }
- else
- {
- PPTBtnRSPlusBtn.IsEnabled = true;
- PPTBtnRSPlusBtn.Opacity = 1;
- PPTBtnRSMinusBtn.IsEnabled = true;
- PPTBtnRSMinusBtn.Opacity = 1;
- }
-
- // 底部按钮滑块状态管理
- if (PPTButtonLBPositionValueSlider.Value <= -500 || PPTButtonLBPositionValueSlider.Value >= 500)
- {
- if (PPTButtonLBPositionValueSlider.Value >= 500)
- {
- PPTBtnLBPlusBtn.IsEnabled = false;
- PPTBtnLBPlusBtn.Opacity = 0.5;
- PPTButtonLBPositionValueSlider.Value = 500;
- }
- else if (PPTButtonLBPositionValueSlider.Value <= -500)
- {
- PPTBtnLBMinusBtn.IsEnabled = false;
- PPTBtnLBMinusBtn.Opacity = 0.5;
- PPTButtonLBPositionValueSlider.Value = -500;
- }
- }
- else
- {
- PPTBtnLBPlusBtn.IsEnabled = true;
- PPTBtnLBPlusBtn.Opacity = 1;
- PPTBtnLBMinusBtn.IsEnabled = true;
- PPTBtnLBMinusBtn.Opacity = 1;
- }
-
- if (PPTButtonRBPositionValueSlider.Value <= -500 || PPTButtonRBPositionValueSlider.Value >= 500)
- {
- if (PPTButtonRBPositionValueSlider.Value >= 500)
- {
- PPTBtnRBPlusBtn.IsEnabled = false;
- PPTBtnRBPlusBtn.Opacity = 0.5;
- PPTButtonRBPositionValueSlider.Value = 500;
- }
- else if (PPTButtonRBPositionValueSlider.Value <= -500)
- {
- PPTBtnRBMinusBtn.IsEnabled = false;
- PPTBtnRBMinusBtn.Opacity = 0.5;
- PPTButtonRBPositionValueSlider.Value = -500;
- }
- }
- else
- {
- PPTBtnRBPlusBtn.IsEnabled = true;
- PPTBtnRBPlusBtn.Opacity = 1;
- PPTBtnRBMinusBtn.IsEnabled = true;
- PPTBtnRBMinusBtn.Opacity = 1;
- }
- }
-
- private void PPTBtnLSPlusBtn_Clicked(object sender, RoutedEventArgs e)
- {
- if (!isLoaded) return;
- PPTButtonLeftPositionValueSlider.Value++;
- UpdatePPTBtnSlidersStatus();
- Settings.PowerPointSettings.PPTLSButtonPosition = (int)PPTButtonLeftPositionValueSlider.Value;
- SaveSettingsToFile();
- UpdatePPTBtnPreview();
- }
-
- private void PPTBtnLSMinusBtn_Clicked(object sender, RoutedEventArgs e)
- {
- if (!isLoaded) return;
- PPTButtonLeftPositionValueSlider.Value--;
- UpdatePPTBtnSlidersStatus();
- Settings.PowerPointSettings.PPTLSButtonPosition = (int)PPTButtonLeftPositionValueSlider.Value;
- SaveSettingsToFile();
- UpdatePPTBtnPreview();
- }
-
- private void PPTBtnLSSyncBtn_Clicked(object sender, RoutedEventArgs e)
- {
- if (!isLoaded) return;
- PPTButtonRightPositionValueSlider.Value = PPTButtonLeftPositionValueSlider.Value;
- UpdatePPTBtnSlidersStatus();
- Settings.PowerPointSettings.PPTRSButtonPosition = (int)PPTButtonLeftPositionValueSlider.Value;
- SaveSettingsToFile();
- UpdatePPTBtnPreview();
- }
-
- private void PPTBtnLSResetBtn_Clicked(object sender, RoutedEventArgs e)
- {
- if (!isLoaded) return;
- PPTButtonLeftPositionValueSlider.Value = 0;
- UpdatePPTBtnSlidersStatus();
- Settings.PowerPointSettings.PPTLSButtonPosition = 0;
- SaveSettingsToFile();
- UpdatePPTBtnPreview();
- }
-
- private void PPTBtnRSPlusBtn_Clicked(object sender, RoutedEventArgs e)
- {
- if (!isLoaded) return;
- PPTButtonRightPositionValueSlider.Value++;
- UpdatePPTBtnSlidersStatus();
- Settings.PowerPointSettings.PPTRSButtonPosition = (int)PPTButtonRightPositionValueSlider.Value;
- SaveSettingsToFile();
- UpdatePPTBtnPreview();
- }
-
- private void PPTBtnRSMinusBtn_Clicked(object sender, RoutedEventArgs e)
- {
- if (!isLoaded) return;
- PPTButtonRightPositionValueSlider.Value--;
- UpdatePPTBtnSlidersStatus();
- Settings.PowerPointSettings.PPTRSButtonPosition = (int)PPTButtonRightPositionValueSlider.Value;
- SaveSettingsToFile();
- UpdatePPTBtnPreview();
- }
-
- private void PPTBtnRSSyncBtn_Clicked(object sender, RoutedEventArgs e)
- {
- if (!isLoaded) return;
- PPTButtonLeftPositionValueSlider.Value = PPTButtonRightPositionValueSlider.Value;
- UpdatePPTBtnSlidersStatus();
- Settings.PowerPointSettings.PPTLSButtonPosition = (int)PPTButtonRightPositionValueSlider.Value;
- SaveSettingsToFile();
- UpdatePPTBtnPreview();
- }
-
- private void PPTBtnRSResetBtn_Clicked(object sender, RoutedEventArgs e)
- {
- if (!isLoaded) return;
- PPTButtonRightPositionValueSlider.Value = 0;
- UpdatePPTBtnSlidersStatus();
- Settings.PowerPointSettings.PPTRSButtonPosition = 0;
- SaveSettingsToFile();
- UpdatePPTBtnPreview();
- }
-
- private DelayAction SliderDelayAction = new DelayAction();
-
- private void PPTButtonRightPositionValueSlider_ValueChanged(object sender, RoutedEventArgs e)
- {
- if (!isLoaded) return;
- Settings.PowerPointSettings.PPTRSButtonPosition = (int)PPTButtonRightPositionValueSlider.Value;
- UpdatePPTBtnSlidersStatus();
- UpdatePPTUIManagerSettings();
- SliderDelayAction.DebounceAction(2000, null, SaveSettingsToFile);
- UpdatePPTBtnPreview();
- }
///
/// 更新PPT UI管理器设置的通用方法
///
- private void UpdatePPTUIManagerSettings()
+ public void UpdatePPTUIManagerSettings()
{
if (_pptUIManager != null && BtnPPTSlideShowEnd.Visibility == Visibility.Visible)
{
@@ -1276,139 +460,8 @@ namespace Ink_Canvas
}
}
- private void UpdatePPTBtnPreview()
+ public void UpdatePPTBtnPreview()
{
- //new BitmapImage(new Uri("pack://application:,,,/Resources/new-icons/unfold-chevron.png"));
- var bopt = Settings.PowerPointSettings.PPTBButtonsOption.ToString();
- char[] boptc = bopt.ToCharArray();
- // 使用实际的透明度设置值
- PPTBtnPreviewLB.Opacity = Settings.PowerPointSettings.PPTLBButtonOpacity;
- PPTBtnPreviewRB.Opacity = Settings.PowerPointSettings.PPTRBButtonOpacity;
-
- if (boptc[2] == '2')
- {
- PPTBtnPreviewLB.Source =
- new BitmapImage(
- new Uri("pack://application:,,,/Resources/PresentationExample/bottombar-dark.png"));
- PPTBtnPreviewRB.Source = new BitmapImage(
- new Uri("pack://application:,,,/Resources/PresentationExample/bottombar-dark.png"));
- }
- else
- {
- PPTBtnPreviewLB.Source =
- new BitmapImage(
- new Uri("pack://application:,,,/Resources/PresentationExample/bottombar-white.png"));
- PPTBtnPreviewRB.Source = new BitmapImage(
- new Uri("pack://application:,,,/Resources/PresentationExample/bottombar-white.png"));
- }
-
- var sopt = Settings.PowerPointSettings.PPTSButtonsOption.ToString();
- char[] soptc = sopt.ToCharArray();
- PPTBtnPreviewLS.Opacity = Settings.PowerPointSettings.PPTLSButtonOpacity;
- PPTBtnPreviewRS.Opacity = Settings.PowerPointSettings.PPTRSButtonOpacity;
-
- if (soptc[2] == '2')
- {
- PPTBtnPreviewLS.Source =
- new BitmapImage(
- new Uri("pack://application:,,,/Resources/PresentationExample/sidebar-dark.png"));
- PPTBtnPreviewRS.Source = new BitmapImage(
- new Uri("pack://application:,,,/Resources/PresentationExample/sidebar-dark.png"));
- }
- else
- {
- PPTBtnPreviewLS.Source =
- new BitmapImage(
- new Uri("pack://application:,,,/Resources/PresentationExample/sidebar-white.png"));
- PPTBtnPreviewRS.Source = new BitmapImage(
- new Uri("pack://application:,,,/Resources/PresentationExample/sidebar-white.png"));
- }
-
- var dopt = Settings.PowerPointSettings.PPTButtonsDisplayOption.ToString();
- char[] doptc = dopt.ToCharArray();
-
- if (Settings.PowerPointSettings.ShowPPTButton)
- {
- PPTBtnPreviewLB.Visibility = doptc[0] == '2' ? Visibility.Visible : Visibility.Collapsed;
- PPTBtnPreviewRB.Visibility = doptc[1] == '2' ? Visibility.Visible : Visibility.Collapsed;
- PPTBtnPreviewLS.Visibility = doptc[2] == '2' ? Visibility.Visible : Visibility.Collapsed;
- PPTBtnPreviewRS.Visibility = doptc[3] == '2' ? Visibility.Visible : Visibility.Collapsed;
- }
- else
- {
- PPTBtnPreviewLB.Visibility = Visibility.Collapsed;
- PPTBtnPreviewRB.Visibility = Visibility.Collapsed;
- PPTBtnPreviewLS.Visibility = Visibility.Collapsed;
- PPTBtnPreviewRS.Visibility = Visibility.Collapsed;
- }
-
- // 获取当前屏幕的实际尺寸(考虑DPI缩放)
- var actualScreenWidth = SystemParameters.PrimaryScreenWidth;
- var actualScreenHeight = SystemParameters.PrimaryScreenHeight;
-
- // 预览区域固定尺寸
- const double previewWidth = 324.0;
- const double previewHeight = 182.0;
-
- // 计算缩放比例(预览区域与实际屏幕的比例)
- double scaleX = previewWidth / actualScreenWidth;
- double scaleY = previewHeight / actualScreenHeight;
-
- // 获取按钮位置设置
- double rsPosition = Settings.PowerPointSettings.PPTRSButtonPosition;
- double lsPosition = Settings.PowerPointSettings.PPTLSButtonPosition;
- double lbPosition = Settings.PowerPointSettings.PPTLBButtonPosition;
- double rbPosition = Settings.PowerPointSettings.PPTRBButtonPosition;
-
- bool showSidePageButton = sopt.Length >= 1 && sopt[0] == '2';
- bool showBottomPageButton = bopt.Length >= 1 && bopt[0] == '2';
-
- // 页码按钮的实际尺寸
- const double pageButtonWidth = 50.0;
- const double pageButtonHeight = 50.0;
-
- // 计算侧边按钮位置(Y轴偏移)
- double sideOffsetY = showSidePageButton ? pageButtonHeight * scaleY : 0;
- PPTBtnPreviewRSTransform.Y = -(rsPosition * scaleY) - sideOffsetY;
- PPTBtnPreviewLSTransform.Y = -(lsPosition * scaleY) - sideOffsetY;
-
- // 计算底部按钮位置(X轴偏移)
- const double bottomMarginOffset = 6.0;
- double scaledMarginOffset = bottomMarginOffset * scaleX;
-
- double bottomOffsetX = showBottomPageButton ? pageButtonWidth * scaleX : 0;
- PPTBtnPreviewLBTransform.X = scaledMarginOffset + (lbPosition * scaleX) + bottomOffsetX;
- PPTBtnPreviewRBTransform.X = -(scaledMarginOffset + (rbPosition * scaleX) + bottomOffsetX);
-
- // 计算工具栏尺寸
- var dpiScaleX = 1.0;
- var dpiScaleY = 1.0;
- try
- {
- var source = PresentationSource.FromVisual(this);
- if (source?.CompositionTarget != null)
- {
- var transform = source.CompositionTarget.TransformToDevice;
- dpiScaleX = transform.M11;
- dpiScaleY = transform.M22;
- }
- }
- catch
- {
- dpiScaleX = 1.0;
- dpiScaleY = 1.0;
- }
-
- // 计算工具栏的实际尺寸
- const double baseToolbarHeight = 24.0;
-
- double actualToolbarHeight = baseToolbarHeight * dpiScaleY;
- double scaledToolbarHeight = actualToolbarHeight * scaleY;
- double scaledToolbarWidth = previewWidth;
-
- // 设置工具栏尺寸
- PPTBtnPreviewToolbar.Height = scaledToolbarHeight;
- PPTBtnPreviewToolbar.Width = scaledToolbarWidth;
}
@@ -1550,7 +603,7 @@ namespace Ink_Canvas
#region Automation
- private void StartOrStoptimerCheckAutoFold()
+ public void StartOrStoptimerCheckAutoFold()
{
if (Settings.Automation.IsEnableAutoFold)
_unifiedMainWindowTimer?.Start();
@@ -1558,489 +611,11 @@ namespace Ink_Canvas
_unifiedMainWindowTimer?.Stop();
}
- private void ToggleSwitchAutoFoldInEasiNote_Toggled(object sender, RoutedEventArgs e)
- {
- if (!isLoaded) return;
- Settings.Automation.IsAutoFoldInEasiNote = ToggleSwitchAutoFoldInEasiNote.IsOn;
- SaveSettingsToFile();
- StartOrStoptimerCheckAutoFold();
- }
-
- private void ToggleSwitchAutoFoldInEasiNoteIgnoreDesktopAnno_Toggled(object sender, RoutedEventArgs e)
- {
- if (!isLoaded) return;
- Settings.Automation.IsAutoFoldInEasiNoteIgnoreDesktopAnno =
- ToggleSwitchAutoFoldInEasiNoteIgnoreDesktopAnno.IsOn;
- SaveSettingsToFile();
- }
-
- private void ToggleSwitchAutoFoldInEasiCamera_Toggled(object sender, RoutedEventArgs e)
- {
- if (!isLoaded) return;
- Settings.Automation.IsAutoFoldInEasiCamera = ToggleSwitchAutoFoldInEasiCamera.IsOn;
- SaveSettingsToFile();
- StartOrStoptimerCheckAutoFold();
- }
-
- private void ToggleSwitchAutoFoldInEasiNote3_Toggled(object sender, RoutedEventArgs e)
- {
- if (!isLoaded) return;
- Settings.Automation.IsAutoFoldInEasiNote3 = ToggleSwitchAutoFoldInEasiNote3.IsOn;
- SaveSettingsToFile();
- StartOrStoptimerCheckAutoFold();
- }
-
- private void ToggleSwitchAutoFoldInEasiNote3C_Toggled(object sender, RoutedEventArgs e)
- {
- if (!isLoaded) return;
- Settings.Automation.IsAutoFoldInEasiNote3C = ToggleSwitchAutoFoldInEasiNote3C.IsOn;
- SaveSettingsToFile();
- StartOrStoptimerCheckAutoFold();
- }
-
- private void ToggleSwitchAutoFoldInEasiNote5C_Toggled(object sender, RoutedEventArgs e)
- {
- if (!isLoaded) return;
- Settings.Automation.IsAutoFoldInEasiNote5C = ToggleSwitchAutoFoldInEasiNote5C.IsOn;
- SaveSettingsToFile();
- StartOrStoptimerCheckAutoFold();
- }
-
- private void ToggleSwitchAutoFoldInSeewoPincoTeacher_Toggled(object sender, RoutedEventArgs e)
- {
- if (!isLoaded) return;
- Settings.Automation.IsAutoFoldInSeewoPincoTeacher = ToggleSwitchAutoFoldInSeewoPincoTeacher.IsOn;
- SaveSettingsToFile();
- StartOrStoptimerCheckAutoFold();
- }
-
- private void ToggleSwitchAutoFoldInHiteTouchPro_Toggled(object sender, RoutedEventArgs e)
- {
- if (!isLoaded) return;
- Settings.Automation.IsAutoFoldInHiteTouchPro = ToggleSwitchAutoFoldInHiteTouchPro.IsOn;
- SaveSettingsToFile();
- StartOrStoptimerCheckAutoFold();
- }
-
- private void ToggleSwitchAutoFoldInHiteLightBoard_Toggled(object sender, RoutedEventArgs e)
- {
- if (!isLoaded) return;
- Settings.Automation.IsAutoFoldInHiteLightBoard = ToggleSwitchAutoFoldInHiteLightBoard.IsOn;
- SaveSettingsToFile();
- StartOrStoptimerCheckAutoFold();
- }
-
- private void ToggleSwitchAutoFoldInHiteCamera_Toggled(object sender, RoutedEventArgs e)
- {
- if (!isLoaded) return;
- Settings.Automation.IsAutoFoldInHiteCamera = ToggleSwitchAutoFoldInHiteCamera.IsOn;
- SaveSettingsToFile();
- StartOrStoptimerCheckAutoFold();
- }
-
- private void ToggleSwitchAutoFoldInWxBoardMain_Toggled(object sender, RoutedEventArgs e)
- {
- if (!isLoaded) return;
- Settings.Automation.IsAutoFoldInWxBoardMain = ToggleSwitchAutoFoldInWxBoardMain.IsOn;
- SaveSettingsToFile();
- StartOrStoptimerCheckAutoFold();
- }
-
- private void ToggleSwitchAutoFoldInOldZyBoard_Toggled(object sender, RoutedEventArgs e)
- {
- if (!isLoaded) return;
- Settings.Automation.IsAutoFoldInOldZyBoard = ToggleSwitchAutoFoldInOldZyBoard.IsOn;
- SaveSettingsToFile();
- StartOrStoptimerCheckAutoFold();
- }
-
- private void ToggleSwitchAutoFoldInMSWhiteboard_Toggled(object sender, RoutedEventArgs e)
- {
- if (!isLoaded) return;
- Settings.Automation.IsAutoFoldInMSWhiteboard = ToggleSwitchAutoFoldInMSWhiteboard.IsOn;
- SaveSettingsToFile();
- StartOrStoptimerCheckAutoFold();
- }
-
- private void ToggleSwitchAutoFoldInAdmoxWhiteboard_Toggled(object sender, RoutedEventArgs e)
- {
- if (!isLoaded) return;
- Settings.Automation.IsAutoFoldInAdmoxWhiteboard = ToggleSwitchAutoFoldInAdmoxWhiteboard.IsOn;
- SaveSettingsToFile();
- StartOrStoptimerCheckAutoFold();
- }
-
- private void ToggleSwitchAutoFoldInAdmoxBooth_Toggled(object sender, RoutedEventArgs e)
- {
- if (!isLoaded) return;
- Settings.Automation.IsAutoFoldInAdmoxBooth = ToggleSwitchAutoFoldInAdmoxBooth.IsOn;
- SaveSettingsToFile();
- StartOrStoptimerCheckAutoFold();
- }
-
- private void ToggleSwitchAutoFoldInQPoint_Toggled(object sender, RoutedEventArgs e)
- {
- if (!isLoaded) return;
- Settings.Automation.IsAutoFoldInQPoint = ToggleSwitchAutoFoldInQPoint.IsOn;
- SaveSettingsToFile();
- StartOrStoptimerCheckAutoFold();
- }
-
- private void ToggleSwitchAutoFoldInYiYunVisualPresenter_Toggled(object sender, RoutedEventArgs e)
- {
- if (!isLoaded) return;
- Settings.Automation.IsAutoFoldInYiYunVisualPresenter = ToggleSwitchAutoFoldInYiYunVisualPresenter.IsOn;
- SaveSettingsToFile();
- StartOrStoptimerCheckAutoFold();
- }
-
- private void ToggleSwitchAutoFoldInMaxHubWhiteboard_Toggled(object sender, RoutedEventArgs e)
- {
- if (!isLoaded) return;
- Settings.Automation.IsAutoFoldInMaxHubWhiteboard = ToggleSwitchAutoFoldInMaxHubWhiteboard.IsOn;
- SaveSettingsToFile();
- StartOrStoptimerCheckAutoFold();
- }
-
- private void ToggleSwitchAutoFoldInPPTSlideShow_Toggled(object sender, RoutedEventArgs e)
- {
- if (!isLoaded) return;
-
- // 记录设置变更前的状态
- bool previousState = Settings.Automation.IsAutoFoldInPPTSlideShow;
- Settings.Automation.IsAutoFoldInPPTSlideShow = ToggleSwitchAutoFoldInPPTSlideShow.IsOn;
-
- // 如果设置状态发生变化,重置PPT相关状态变量
- if (previousState != Settings.Automation.IsAutoFoldInPPTSlideShow)
- {
- ResetPPTStateVariables();
- LogHelper.WriteLogToFile($"PPT自动收纳设置已变更: {Settings.Automation.IsAutoFoldInPPTSlideShow}, 已重置相关状态变量", LogHelper.LogType.Trace);
- }
-
- if (Settings.Automation.IsAutoFoldInPPTSlideShow)
- {
- SettingsPPTInkingAndAutoFoldExplictBorder.Visibility = Visibility.Visible;
- SettingsShowCanvasAtNewSlideShowStackPanel.Opacity = 0.5;
- SettingsShowCanvasAtNewSlideShowStackPanel.IsHitTestVisible = false;
- }
- else
- {
- SettingsPPTInkingAndAutoFoldExplictBorder.Visibility = Visibility.Collapsed;
- SettingsShowCanvasAtNewSlideShowStackPanel.Opacity = 1;
- SettingsShowCanvasAtNewSlideShowStackPanel.IsHitTestVisible = true;
- }
- SaveSettingsToFile();
- StartOrStoptimerCheckAutoFold();
- }
-
- private void ToggleSwitchAutoKillPptService_Toggled(object sender, RoutedEventArgs e)
- {
- if (!isLoaded) return;
- Settings.Automation.IsAutoKillPptService = ToggleSwitchAutoKillPptService.IsOn;
- SaveSettingsToFile();
-
- if (Settings.Automation.IsAutoKillEasiNote || Settings.Automation.IsAutoKillPptService ||
- Settings.Automation.IsAutoKillHiteAnnotation || Settings.Automation.IsAutoKillInkCanvas
- || Settings.Automation.IsAutoKillICA || Settings.Automation.IsAutoKillIDT || Settings.Automation.IsAutoKillVComYouJiao
- || Settings.Automation.IsAutoKillSeewoLauncher2DesktopAnnotation)
- timerKillProcess.Start();
- else
- timerKillProcess.Stop();
- }
-
- private void ToggleSwitchAutoKillEasiNote_Toggled(object sender, RoutedEventArgs e)
- {
- if (!isLoaded) return;
- Settings.Automation.IsAutoKillEasiNote = ToggleSwitchAutoKillEasiNote.IsOn;
- SaveSettingsToFile();
- if (Settings.Automation.IsAutoKillEasiNote || Settings.Automation.IsAutoKillPptService ||
- Settings.Automation.IsAutoKillHiteAnnotation || Settings.Automation.IsAutoKillInkCanvas
- || Settings.Automation.IsAutoKillICA || Settings.Automation.IsAutoKillIDT || Settings.Automation.IsAutoKillVComYouJiao
- || Settings.Automation.IsAutoKillSeewoLauncher2DesktopAnnotation)
- timerKillProcess.Start();
- else
- timerKillProcess.Stop();
- }
-
- private void ToggleSwitchAutoKillHiteAnnotation_Toggled(object sender, RoutedEventArgs e)
- {
- if (!isLoaded) return;
- Settings.Automation.IsAutoKillHiteAnnotation = ToggleSwitchAutoKillHiteAnnotation.IsOn;
- SaveSettingsToFile();
- if (Settings.Automation.IsAutoKillEasiNote || Settings.Automation.IsAutoKillPptService ||
- Settings.Automation.IsAutoKillHiteAnnotation || Settings.Automation.IsAutoKillInkCanvas
- || Settings.Automation.IsAutoKillICA || Settings.Automation.IsAutoKillIDT || Settings.Automation.IsAutoKillVComYouJiao
- || Settings.Automation.IsAutoKillSeewoLauncher2DesktopAnnotation)
- timerKillProcess.Start();
- else
- timerKillProcess.Stop();
- }
-
- private void ToggleSwitchAutoKillVComYouJiao_Toggled(object sender, RoutedEventArgs e)
- {
- if (!isLoaded) return;
- Settings.Automation.IsAutoKillVComYouJiao = ToggleSwitchAutoKillVComYouJiao.IsOn;
- SaveSettingsToFile();
- if (Settings.Automation.IsAutoKillEasiNote || Settings.Automation.IsAutoKillPptService ||
- Settings.Automation.IsAutoKillHiteAnnotation || Settings.Automation.IsAutoKillInkCanvas
- || Settings.Automation.IsAutoKillICA || Settings.Automation.IsAutoKillIDT || Settings.Automation.IsAutoKillVComYouJiao
- || Settings.Automation.IsAutoKillSeewoLauncher2DesktopAnnotation)
- timerKillProcess.Start();
- else
- timerKillProcess.Stop();
- }
-
- private void ToggleSwitchAutoKillSeewoLauncher2DesktopAnnotation_Toggled(object sender, RoutedEventArgs e)
- {
- if (!isLoaded) return;
- Settings.Automation.IsAutoKillSeewoLauncher2DesktopAnnotation = ToggleSwitchAutoKillSeewoLauncher2DesktopAnnotation.IsOn;
- SaveSettingsToFile();
- if (Settings.Automation.IsAutoKillEasiNote || Settings.Automation.IsAutoKillPptService ||
- Settings.Automation.IsAutoKillHiteAnnotation || Settings.Automation.IsAutoKillInkCanvas
- || Settings.Automation.IsAutoKillICA || Settings.Automation.IsAutoKillIDT || Settings.Automation.IsAutoKillVComYouJiao
- || Settings.Automation.IsAutoKillSeewoLauncher2DesktopAnnotation)
- timerKillProcess.Start();
- else
- timerKillProcess.Stop();
- }
-
- private void ToggleSwitchAutoKillInkCanvas_Toggled(object sender, RoutedEventArgs e)
- {
- if (!isLoaded) return;
- Settings.Automation.IsAutoKillInkCanvas = ToggleSwitchAutoKillInkCanvas.IsOn;
- SaveSettingsToFile();
- if (Settings.Automation.IsAutoKillEasiNote || Settings.Automation.IsAutoKillPptService ||
- Settings.Automation.IsAutoKillHiteAnnotation || Settings.Automation.IsAutoKillInkCanvas
- || Settings.Automation.IsAutoKillICA || Settings.Automation.IsAutoKillIDT || Settings.Automation.IsAutoKillVComYouJiao
- || Settings.Automation.IsAutoKillSeewoLauncher2DesktopAnnotation)
- timerKillProcess.Start();
- else
- timerKillProcess.Stop();
- }
-
- private void ToggleSwitchAutoKillICA_Toggled(object sender, RoutedEventArgs e)
- {
- if (!isLoaded) return;
- Settings.Automation.IsAutoKillICA = ToggleSwitchAutoKillICA.IsOn;
- SaveSettingsToFile();
- if (Settings.Automation.IsAutoKillEasiNote || Settings.Automation.IsAutoKillPptService ||
- Settings.Automation.IsAutoKillHiteAnnotation || Settings.Automation.IsAutoKillInkCanvas
- || Settings.Automation.IsAutoKillICA || Settings.Automation.IsAutoKillIDT || Settings.Automation.IsAutoKillVComYouJiao
- || Settings.Automation.IsAutoKillSeewoLauncher2DesktopAnnotation)
- timerKillProcess.Start();
- else
- timerKillProcess.Stop();
- }
-
- private void ToggleSwitchAutoKillIDT_Toggled(object sender, RoutedEventArgs e)
- {
- if (!isLoaded) return;
- Settings.Automation.IsAutoKillIDT = ToggleSwitchAutoKillIDT.IsOn;
- SaveSettingsToFile();
- if (Settings.Automation.IsAutoKillEasiNote || Settings.Automation.IsAutoKillPptService ||
- Settings.Automation.IsAutoKillHiteAnnotation || Settings.Automation.IsAutoKillInkCanvas
- || Settings.Automation.IsAutoKillICA || Settings.Automation.IsAutoKillIDT || Settings.Automation.IsAutoKillVComYouJiao
- || Settings.Automation.IsAutoKillSeewoLauncher2DesktopAnnotation)
- timerKillProcess.Start();
- else
- timerKillProcess.Stop();
- }
-
- private void ToggleSwitchAutoEnterAnnotationModeWhenExitFoldMode_Toggled(object sender, RoutedEventArgs e)
- {
- if (!isLoaded) return;
- Settings.Automation.IsAutoEnterAnnotationModeWhenExitFoldMode = ToggleSwitchAutoEnterAnnotationModeWhenExitFoldMode.IsOn;
- SaveSettingsToFile();
- }
-
- private void ToggleSwitchAutoFoldWhenExitWhiteboard_Toggled(object sender, RoutedEventArgs e)
- {
- if (!isLoaded) return;
- Settings.Automation.IsAutoFoldWhenExitWhiteboard = ToggleSwitchAutoFoldWhenExitWhiteboard.IsOn;
- SaveSettingsToFile();
- }
-
- private void ToggleSwitchSaveScreenshotsInDateFolders_Toggled(object sender, RoutedEventArgs e)
- {
- if (!isLoaded) return;
- Settings.Automation.IsSaveScreenshotsInDateFolders = ToggleSwitchSaveScreenshotsInDateFolders.IsOn;
- SaveSettingsToFile();
- }
-
- private void ToggleSwitchAutoSaveStrokesAtScreenshot_Toggled(object sender, RoutedEventArgs e)
- {
- if (!isLoaded) return;
- Settings.Automation.IsAutoSaveStrokesAtScreenshot = ToggleSwitchAutoSaveStrokesAtScreenshot.IsOn;
- ToggleSwitchAutoSaveStrokesAtClear.Label =
- ToggleSwitchAutoSaveStrokesAtScreenshot.IsOn ? "清屏时自动截图并保存墨迹" : "清屏时自动截图";
- SaveSettingsToFile();
- }
-
- private void ToggleSwitchAutoSaveStrokesAtClear_Toggled(object sender, RoutedEventArgs e)
- {
- if (!isLoaded) return;
- Settings.Automation.IsAutoSaveStrokesAtClear = ToggleSwitchAutoSaveStrokesAtClear.IsOn;
- SaveSettingsToFile();
- }
-
-
-
-
-
-
- private void ToggleSwitchAutoSaveStrokesInPowerPoint_Toggled(object sender, RoutedEventArgs e)
- {
- if (!isLoaded) return;
- Settings.PowerPointSettings.IsAutoSaveStrokesInPowerPoint = ToggleSwitchAutoSaveStrokesInPowerPoint.IsOn;
- SaveSettingsToFile();
- }
-
- private void ToggleSwitchNotifyPreviousPage_Toggled(object sender, RoutedEventArgs e)
- {
- if (!isLoaded) return;
- Settings.PowerPointSettings.IsNotifyPreviousPage = ToggleSwitchNotifyPreviousPage.IsOn;
- SaveSettingsToFile();
- }
-
- private void ToggleSwitchNotifyHiddenPage_Toggled(object sender, RoutedEventArgs e)
- {
- if (!isLoaded) return;
- Settings.PowerPointSettings.IsNotifyHiddenPage = ToggleSwitchNotifyHiddenPage.IsOn;
- SaveSettingsToFile();
- }
-
- private void ToggleSwitchNotifyAutoPlayPresentation_Toggled(object sender, RoutedEventArgs e)
- {
- if (!isLoaded) return;
- Settings.PowerPointSettings.IsNotifyAutoPlayPresentation = ToggleSwitchNotifyAutoPlayPresentation.IsOn;
- SaveSettingsToFile();
- }
-
- private void SideControlMinimumAutomationSlider_ValueChanged(object sender, RoutedEventArgs e)
- {
- if (!isLoaded) return;
- Settings.Automation.MinimumAutomationStrokeNumber = (int)SideControlMinimumAutomationSlider.Value;
- SaveSettingsToFile();
- }
-
- private void AutoSavedStrokesLocationTextBox_TextChanged(object sender, RoutedEventArgs e)
- {
- if (!isLoaded) return;
- Settings.Automation.AutoSavedStrokesLocation = AutoSavedStrokesLocation.Text;
- SaveSettingsToFile();
- }
-
- private void AutoSavedStrokesLocationButton_Click(object sender, RoutedEventArgs e)
- {
- var folderBrowser = new FolderBrowserDialog();
- folderBrowser.ShowDialog();
- if (folderBrowser.SelectedPath.Length > 0) AutoSavedStrokesLocation.Text = folderBrowser.SelectedPath;
- SaveSettingsToFile();
- }
-
- private void SetAutoSavedStrokesLocationToDiskDButton_Click(object sender, RoutedEventArgs e)
- {
- AutoSavedStrokesLocation.Text = @"D:\Ink Canvas";
- SaveSettingsToFile();
- }
-
- private void SetAutoSavedStrokesLocationToDocumentFolderButton_Click(object sender, RoutedEventArgs e)
- {
- AutoSavedStrokesLocation.Text =
- Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + @"\Ink Canvas";
- SaveSettingsToFile();
- }
-
- private void BtnCloudStorageManagementSettingsManage_Click(object sender, RoutedEventArgs e)
- {
- if (isOpeningOrHidingSettingsPane) return;
- HideSubPanels();
- try
- {
- // 打开设置管理窗口
- var CloudStorageManagementSettingsWindow = new Windows.CloudStorageManagementWindow();
- CloudStorageManagementSettingsWindow.Owner = this;
- CloudStorageManagementSettingsWindow.ShowDialog();
- }
- catch (Exception ex)
- {
- LogHelper.WriteLogToFile($"打开云存储管理窗口时出错: {ex.Message}", LogHelper.LogType.Error);
- MessageBox.Show($"打开云存储管理窗口时发生错误: {ex.Message}", "错误", MessageBoxButton.OK, MessageBoxImage.Error);
- }
- }
-
- private void ToggleSwitchAutoDelSavedFiles_Toggled(object sender, RoutedEventArgs e)
- {
- if (!isLoaded) return;
- Settings.Automation.AutoDelSavedFiles = ToggleSwitchAutoDelSavedFiles.IsOn;
- SaveSettingsToFile();
- }
-
- private void
- ComboBoxAutoDelSavedFilesDaysThreshold_SelectionChanged(object sender, SelectionChangedEventArgs e)
- {
- if (!isLoaded) return;
- Settings.Automation.AutoDelSavedFilesDaysThreshold =
- int.Parse(((ComboBoxItem)ComboBoxAutoDelSavedFilesDaysThreshold.SelectedItem).Content.ToString());
- SaveSettingsToFile();
- }
-
- private void ToggleSwitchAutoSaveScreenShotInPowerPoint_Toggled(object sender, RoutedEventArgs e)
- {
- if (!isLoaded) return;
- Settings.PowerPointSettings.IsAutoSaveScreenShotInPowerPoint =
- ToggleSwitchAutoSaveScreenShotInPowerPoint.IsOn;
- SaveSettingsToFile();
- }
-
- private void ToggleSwitchSaveFullPageStrokes_Toggled(object sender, RoutedEventArgs e)
- {
- if (!isLoaded) return;
- Settings.Automation.IsSaveFullPageStrokes = ToggleSwitchSaveFullPageStrokes.IsOn;
- SaveSettingsToFile();
- }
-
- private void ToggleSwitchSaveStrokesAsXML_Toggled(object sender, RoutedEventArgs e)
- {
- if (!isLoaded) return;
- Settings.Automation.IsSaveStrokesAsXML = ToggleSwitchSaveStrokesAsXML.IsOn;
- SaveSettingsToFile();
- }
-
- private void ToggleSwitchEnableAutoSaveStrokes_Toggled(object sender, RoutedEventArgs e)
- {
- if (!isLoaded) return;
- Settings.Automation.IsEnableAutoSaveStrokes = ToggleSwitchEnableAutoSaveStrokes.IsOn;
- SaveSettingsToFile();
- // 更新定时器状态
- UpdateAutoSaveStrokesTimer();
- }
-
- private void ComboBoxAutoSaveStrokesInterval_SelectionChanged(object sender, SelectionChangedEventArgs e)
- {
- if (!isLoaded || ComboBoxAutoSaveStrokesInterval.SelectedItem == null) return;
-
- var selectedItem = ComboBoxAutoSaveStrokesInterval.SelectedItem as System.Windows.Controls.ComboBoxItem;
- if (selectedItem?.Tag != null && int.TryParse(selectedItem.Tag.ToString(), out int intervalMinutes))
- {
- Settings.Automation.AutoSaveStrokesIntervalMinutes = intervalMinutes;
- SaveSettingsToFile();
- // 更新定时器间隔
- UpdateAutoSaveStrokesTimer();
- }
- }
#endregion
#region Gesture
- private void ToggleSwitchEnableFingerGestureSlideShowControl_Toggled(object sender, RoutedEventArgs e)
- {
- if (!isLoaded) return;
- Settings.PowerPointSettings.IsEnableFingerGestureSlideShowControl =
- ToggleSwitchEnableFingerGestureSlideShowControl.IsOn;
- SaveSettingsToFile();
- }
private void ToggleSwitchEnableTwoFingerZoom_Toggled(object sender, RoutedEventArgs e)
{
@@ -2224,13 +799,6 @@ namespace Ink_Canvas
SaveSettingsToFile();
}
- private void ToggleSwitchEnableTwoFingerGestureInPresentationMode_Toggled(object sender, RoutedEventArgs e)
- {
- if (!isLoaded) return;
- Settings.PowerPointSettings.IsEnableTwoFingerGestureInPresentationMode =
- ToggleSwitchEnableTwoFingerGestureInPresentationMode.IsOn;
- SaveSettingsToFile();
- }
#endregion
@@ -2434,7 +1002,7 @@ namespace Ink_Canvas
SetSettingsToRecommendation();
Settings.Automation.AutoDelSavedFiles = true;
Settings.Automation.AutoDelSavedFilesDaysThreshold = 15;
- SetAutoSavedStrokesLocationToDiskDButton_Click(null, null);
+ Settings.Automation.AutoSavedStrokesLocation = @"D:\Ink Canvas\AutoSavedStrokes";
SaveSettingsToFile();
LoadSettings(isStartup: false, skipAutoUpdateCheck: true);
isLoaded = true;
@@ -2759,223 +1327,14 @@ namespace Ink_Canvas
- private void ToggleSwitchEnableWppProcessKill_Toggled(object sender, RoutedEventArgs e)
- {
- if (!isLoaded) return;
- Settings.PowerPointSettings.EnableWppProcessKill = ToggleSwitchEnableWppProcessKill.IsOn;
- SaveSettingsToFile();
- }
-
-
-
- private void ToggleSwitchAutoFoldAfterPPTSlideShow_Toggled(object sender, RoutedEventArgs e)
- {
- if (!isLoaded) return;
- Settings.Automation.IsAutoFoldAfterPPTSlideShow = ToggleSwitchAutoFoldAfterPPTSlideShow.IsOn;
- SaveSettingsToFile();
- }
-
- private void ToggleSwitchKeepFoldAfterSoftwareExit_Toggled(object sender, RoutedEventArgs e)
- {
- if (!isLoaded) return;
- Settings.Automation.KeepFoldAfterSoftwareExit = ToggleSwitchKeepFoldAfterSoftwareExit.IsOn;
- SaveSettingsToFile();
- }
-
- private void ToggleSwitchAlwaysGoToFirstPageOnReenter_Toggled(object sender, RoutedEventArgs e)
- {
- if (!isLoaded) return;
- Settings.PowerPointSettings.IsAlwaysGoToFirstPageOnReenter = ToggleSwitchAlwaysGoToFirstPageOnReenter.IsOn;
- SaveSettingsToFile();
- }
-
- private void ToggleSwitchAutoEnterAnnotationAfterKillHite_Toggled(object sender, RoutedEventArgs e)
- {
- if (!isLoaded) return;
- Settings.Automation.IsAutoEnterAnnotationAfterKillHite = ToggleSwitchAutoEnterAnnotationAfterKillHite.IsOn;
- SaveSettingsToFile();
- }
#region 底部按钮水平位置控制
- private void PPTButtonLBPositionValueSlider_ValueChanged(object sender, RoutedEventArgs e)
- {
- if (!isLoaded) return;
- Settings.PowerPointSettings.PPTLBButtonPosition = (int)PPTButtonLBPositionValueSlider.Value;
- UpdatePPTBtnSlidersStatus();
- UpdatePPTUIManagerSettings();
- SliderDelayAction.DebounceAction(2000, null, SaveSettingsToFile);
- UpdatePPTBtnPreview();
- }
-
- private void PPTButtonRBPositionValueSlider_ValueChanged(object sender, RoutedEventArgs e)
- {
- if (!isLoaded) return;
- Settings.PowerPointSettings.PPTRBButtonPosition = (int)PPTButtonRBPositionValueSlider.Value;
- UpdatePPTBtnSlidersStatus();
- UpdatePPTUIManagerSettings();
- SliderDelayAction.DebounceAction(2000, null, SaveSettingsToFile);
- UpdatePPTBtnPreview();
- }
-
- private void PPTBtnLBPlusBtn_Clicked(object sender, RoutedEventArgs e)
- {
- if (!isLoaded) return;
- PPTButtonLBPositionValueSlider.Value++;
- UpdatePPTBtnSlidersStatus();
- Settings.PowerPointSettings.PPTLBButtonPosition = (int)PPTButtonLBPositionValueSlider.Value;
- SaveSettingsToFile();
- UpdatePPTBtnPreview();
- }
-
- private void PPTBtnLBMinusBtn_Clicked(object sender, RoutedEventArgs e)
- {
- if (!isLoaded) return;
- PPTButtonLBPositionValueSlider.Value--;
- UpdatePPTBtnSlidersStatus();
- Settings.PowerPointSettings.PPTLBButtonPosition = (int)PPTButtonLBPositionValueSlider.Value;
- SaveSettingsToFile();
- UpdatePPTBtnPreview();
- }
-
- private void PPTBtnLBSyncBtn_Clicked(object sender, RoutedEventArgs e)
- {
- if (!isLoaded) return;
- PPTButtonRBPositionValueSlider.Value = PPTButtonLBPositionValueSlider.Value;
- UpdatePPTBtnSlidersStatus();
- Settings.PowerPointSettings.PPTRBButtonPosition = (int)PPTButtonLBPositionValueSlider.Value;
- SaveSettingsToFile();
- UpdatePPTBtnPreview();
- }
-
- private void PPTBtnLBResetBtn_Clicked(object sender, RoutedEventArgs e)
- {
- if (!isLoaded) return;
- PPTButtonLBPositionValueSlider.Value = 0;
- UpdatePPTBtnSlidersStatus();
- Settings.PowerPointSettings.PPTLBButtonPosition = 0;
- SaveSettingsToFile();
- UpdatePPTBtnPreview();
- }
-
- private void PPTBtnRBPlusBtn_Clicked(object sender, RoutedEventArgs e)
- {
- if (!isLoaded) return;
- PPTButtonRBPositionValueSlider.Value++;
- UpdatePPTBtnSlidersStatus();
- Settings.PowerPointSettings.PPTRBButtonPosition = (int)PPTButtonRBPositionValueSlider.Value;
- SaveSettingsToFile();
- UpdatePPTBtnPreview();
- }
-
- private void PPTBtnRBMinusBtn_Clicked(object sender, RoutedEventArgs e)
- {
- if (!isLoaded) return;
- PPTButtonRBPositionValueSlider.Value--;
- UpdatePPTBtnSlidersStatus();
- Settings.PowerPointSettings.PPTRBButtonPosition = (int)PPTButtonRBPositionValueSlider.Value;
- SaveSettingsToFile();
- UpdatePPTBtnPreview();
- }
-
- private void PPTBtnRBSyncBtn_Clicked(object sender, RoutedEventArgs e)
- {
- if (!isLoaded) return;
- PPTButtonLBPositionValueSlider.Value = PPTButtonRBPositionValueSlider.Value;
- UpdatePPTBtnSlidersStatus();
- Settings.PowerPointSettings.PPTLBButtonPosition = (int)PPTButtonRBPositionValueSlider.Value;
- SaveSettingsToFile();
- UpdatePPTBtnPreview();
- }
-
- private void PPTBtnRBResetBtn_Clicked(object sender, RoutedEventArgs e)
- {
- if (!isLoaded) return;
- PPTButtonRBPositionValueSlider.Value = 0;
- Settings.PowerPointSettings.PPTRBButtonPosition = 0;
- SaveSettingsToFile();
- UpdatePPTBtnPreview();
- }
#endregion
#region 文件关联管理
- private void BtnUnregisterFileAssociation_Click(object sender, RoutedEventArgs e)
- {
- try
- {
- bool success = FileAssociationManager.UnregisterFileAssociation();
- if (success)
- {
- TextBlockFileAssociationStatus.Text = "✓ 文件关联已成功取消";
- TextBlockFileAssociationStatus.Foreground = new SolidColorBrush(Colors.LightGreen);
- ShowNotification("文件关联已取消");
- }
- else
- {
- TextBlockFileAssociationStatus.Text = "✗ 取消文件关联失败,可能需要管理员权限";
- TextBlockFileAssociationStatus.Foreground = new SolidColorBrush(Colors.LightCoral);
- ShowNotification("取消文件关联失败");
- }
- }
- catch (Exception ex)
- {
- TextBlockFileAssociationStatus.Text = $"✗ 取消文件关联时出错: {ex.Message}";
- TextBlockFileAssociationStatus.Foreground = new SolidColorBrush(Colors.LightCoral);
- LogHelper.WriteLogToFile($"取消文件关联时出错: {ex.Message}", LogHelper.LogType.Error);
- }
- }
-
- private void BtnCheckFileAssociation_Click(object sender, RoutedEventArgs e)
- {
- try
- {
- bool isRegistered = FileAssociationManager.IsFileAssociationRegistered();
- if (isRegistered)
- {
- TextBlockFileAssociationStatus.Text = "✓ .icstk文件关联已注册";
- TextBlockFileAssociationStatus.Foreground = new SolidColorBrush(Colors.LightGreen);
- }
- else
- {
- TextBlockFileAssociationStatus.Text = "✗ .icstk文件关联未注册";
- TextBlockFileAssociationStatus.Foreground = new SolidColorBrush(Colors.LightCoral);
- }
- }
- catch (Exception ex)
- {
- TextBlockFileAssociationStatus.Text = $"✗ 检查文件关联状态时出错: {ex.Message}";
- TextBlockFileAssociationStatus.Foreground = new SolidColorBrush(Colors.LightCoral);
- LogHelper.WriteLogToFile($"检查文件关联状态时出错: {ex.Message}", LogHelper.LogType.Error);
- }
- }
-
- private void BtnRegisterFileAssociation_Click(object sender, RoutedEventArgs e)
- {
- try
- {
- bool success = FileAssociationManager.RegisterFileAssociation();
- if (success)
- {
- TextBlockFileAssociationStatus.Text = "✓ 文件关联已成功注册";
- TextBlockFileAssociationStatus.Foreground = new SolidColorBrush(Colors.LightGreen);
- ShowNotification("文件关联已注册");
- }
- else
- {
- TextBlockFileAssociationStatus.Text = "✗ 注册文件关联失败,可能需要管理员权限";
- TextBlockFileAssociationStatus.Foreground = new SolidColorBrush(Colors.LightCoral);
- ShowNotification("注册文件关联失败");
- }
- }
- catch (Exception ex)
- {
- TextBlockFileAssociationStatus.Text = $"✗ 注册文件关联时出错: {ex.Message}";
- TextBlockFileAssociationStatus.Foreground = new SolidColorBrush(Colors.LightCoral);
- LogHelper.WriteLogToFile($"注册文件关联时出错: {ex.Message}", LogHelper.LogType.Error);
- }
- }
#endregion
diff --git a/Ink Canvas/MainWindow_cs/MW_SettingsToLoad.cs b/Ink Canvas/MainWindow_cs/MW_SettingsToLoad.cs
index 1882ef24..53d2895e 100644
--- a/Ink Canvas/MainWindow_cs/MW_SettingsToLoad.cs
+++ b/Ink Canvas/MainWindow_cs/MW_SettingsToLoad.cs
@@ -342,181 +342,13 @@ namespace Ink_Canvas
// PowerPointSettings
if (Settings.PowerPointSettings != null)
{
-
-
if (Settings.PowerPointSettings.PowerPointSupport)
{
- ToggleSwitchSupportPowerPoint.IsOn = true;
// PPT监控将在Window_Loaded中启动
}
- else
- {
- ToggleSwitchSupportPowerPoint.IsOn = false;
- // PPT监控将保持停止状态
- }
-
- ToggleSwitchShowCanvasAtNewSlideShow.IsOn = Settings.PowerPointSettings.IsShowCanvasAtNewSlideShow;
-
- if (ToggleSwitchUseRotPptLink != null)
- {
- ToggleSwitchUseRotPptLink.IsOn = Settings.PowerPointSettings.UseRotPptLink;
- }
-
- ToggleSwitchEnableTwoFingerGestureInPresentationMode.IsOn =
- Settings.PowerPointSettings.IsEnableTwoFingerGestureInPresentationMode;
-
- ToggleSwitchEnableFingerGestureSlideShowControl.IsOn =
- Settings.PowerPointSettings.IsEnableFingerGestureSlideShowControl;
-
- ToggleSwitchAutoSaveStrokesInPowerPoint.IsOn =
- Settings.PowerPointSettings.IsAutoSaveStrokesInPowerPoint;
-
- ToggleSwitchNotifyPreviousPage.IsOn = Settings.PowerPointSettings.IsNotifyPreviousPage;
-
- // PPT时间显示胶囊设置
- if (ToggleSwitchEnablePPTTimeCapsule != null)
- {
- ToggleSwitchEnablePPTTimeCapsule.IsOn = Settings.PowerPointSettings.EnablePPTTimeCapsule;
- }
- if (ComboBoxPPTTimeCapsulePosition != null)
- {
- int position = Settings.PowerPointSettings.PPTTimeCapsulePosition;
- if (position < 0 || position > 2)
- {
- position = 1; // 默认右上角
- }
- ComboBoxPPTTimeCapsulePosition.SelectedIndex = position;
- }
- if (ToggleSwitchShowPPTSidebarByDefault != null)
- {
- ToggleSwitchShowPPTSidebarByDefault.IsOn = Settings.PowerPointSettings.ShowPPTSidebarByDefault;
- }
-
- // -- new --
- ToggleSwitchShowPPTButton.IsOn = Settings.PowerPointSettings.ShowPPTButton;
-
- ToggleSwitchEnablePPTButtonPageClickable.IsOn =
- Settings.PowerPointSettings.EnablePPTButtonPageClickable;
-
- ToggleSwitchEnablePPTButtonLongPressPageTurn.IsOn =
- Settings.PowerPointSettings.EnablePPTButtonLongPressPageTurn;
-
- var dops = Settings.PowerPointSettings.PPTButtonsDisplayOption.ToString();
- var dopsc = dops.ToCharArray();
- if ((dopsc[0] == '1' || dopsc[0] == '2') && (dopsc[1] == '1' || dopsc[1] == '2') &&
- (dopsc[2] == '1' || dopsc[2] == '2') && (dopsc[3] == '1' || dopsc[3] == '2'))
- {
- CheckboxEnableLBPPTButton.IsChecked = dopsc[0] == '2';
- CheckboxEnableRBPPTButton.IsChecked = dopsc[1] == '2';
- CheckboxEnableLSPPTButton.IsChecked = dopsc[2] == '2';
- CheckboxEnableRSPPTButton.IsChecked = dopsc[3] == '2';
- }
- else
- {
- Settings.PowerPointSettings.PPTButtonsDisplayOption = 2222;
- CheckboxEnableLBPPTButton.IsChecked = true;
- CheckboxEnableRBPPTButton.IsChecked = true;
- CheckboxEnableLSPPTButton.IsChecked = true;
- CheckboxEnableRSPPTButton.IsChecked = true;
- SaveSettingsToFile();
- }
-
- var sops = Settings.PowerPointSettings.PPTSButtonsOption.ToString();
- var sopsc = sops.ToCharArray();
- if ((sopsc[0] == '1' || sopsc[0] == '2') && (sopsc[1] == '1' || sopsc[1] == '2') &&
- (sopsc[2] == '1' || sopsc[2] == '2'))
- {
- CheckboxSPPTDisplayPage.IsChecked = sopsc[0] == '2';
- CheckboxSPPTHalfOpacity.IsChecked = sopsc[1] == '2';
- CheckboxSPPTBlackBackground.IsChecked = sopsc[2] == '2';
- }
- else
- {
- Settings.PowerPointSettings.PPTSButtonsOption = 221;
- CheckboxSPPTDisplayPage.IsChecked = true;
- CheckboxSPPTHalfOpacity.IsChecked = true;
- CheckboxSPPTBlackBackground.IsChecked = false;
- SaveSettingsToFile();
- }
-
- var bops = Settings.PowerPointSettings.PPTBButtonsOption.ToString();
- var bopsc = bops.ToCharArray();
- if ((bopsc[0] == '1' || bopsc[0] == '2') && (bopsc[1] == '1' || bopsc[1] == '2') &&
- (bopsc[2] == '1' || bopsc[2] == '2'))
- {
- CheckboxBPPTDisplayPage.IsChecked = bopsc[0] == '2';
- CheckboxBPPTHalfOpacity.IsChecked = bopsc[1] == '2';
- CheckboxBPPTBlackBackground.IsChecked = bopsc[2] == '2';
- }
- else
- {
- Settings.PowerPointSettings.PPTBButtonsOption = 121;
- CheckboxBPPTDisplayPage.IsChecked = false;
- CheckboxBPPTHalfOpacity.IsChecked = true;
- CheckboxBPPTBlackBackground.IsChecked = false;
- SaveSettingsToFile();
- }
-
- PPTButtonLeftPositionValueSlider.Value = Settings.PowerPointSettings.PPTLSButtonPosition;
-
- PPTButtonRightPositionValueSlider.Value = Settings.PowerPointSettings.PPTRSButtonPosition;
-
- PPTButtonLBPositionValueSlider.Value = Settings.PowerPointSettings.PPTLBButtonPosition;
-
- PPTButtonRBPositionValueSlider.Value = Settings.PowerPointSettings.PPTRBButtonPosition;
-
- // 初始化PPT翻页按钮透明度滑块值,根据半透明选项设置默认值
- // 重用之前定义的sopsc和bopsc变量
- bool isSideHalfOpacity = sopsc.Length >= 2 && sopsc[1] == '2';
- // 如果透明度为0或未设置,根据半透明选项设置默认值
- if (Settings.PowerPointSettings.PPTLSButtonOpacity == 0.0 ||
- (Settings.PowerPointSettings.PPTLSButtonOpacity == 1.0 && isSideHalfOpacity))
- {
- Settings.PowerPointSettings.PPTLSButtonOpacity = isSideHalfOpacity ? 0.5 : 1.0;
- }
- if (Settings.PowerPointSettings.PPTRSButtonOpacity == 0.0 ||
- (Settings.PowerPointSettings.PPTRSButtonOpacity == 1.0 && isSideHalfOpacity))
- {
- Settings.PowerPointSettings.PPTRSButtonOpacity = isSideHalfOpacity ? 0.5 : 1.0;
- }
- PPTLSButtonOpacityValueSlider.Value = Settings.PowerPointSettings.PPTLSButtonOpacity;
- PPTRSButtonOpacityValueSlider.Value = Settings.PowerPointSettings.PPTRSButtonOpacity;
-
- bool isBottomHalfOpacity = bopsc.Length >= 2 && bopsc[1] == '2';
- // 如果透明度为0或未设置,根据半透明选项设置默认值
- if (Settings.PowerPointSettings.PPTLBButtonOpacity == 0.0 ||
- (Settings.PowerPointSettings.PPTLBButtonOpacity == 1.0 && isBottomHalfOpacity))
- {
- Settings.PowerPointSettings.PPTLBButtonOpacity = isBottomHalfOpacity ? 0.5 : 1.0;
- }
- if (Settings.PowerPointSettings.PPTRBButtonOpacity == 0.0 ||
- (Settings.PowerPointSettings.PPTRBButtonOpacity == 1.0 && isBottomHalfOpacity))
- {
- Settings.PowerPointSettings.PPTRBButtonOpacity = isBottomHalfOpacity ? 0.5 : 1.0;
- }
- PPTLBButtonOpacityValueSlider.Value = Settings.PowerPointSettings.PPTLBButtonOpacity;
- PPTRBButtonOpacityValueSlider.Value = Settings.PowerPointSettings.PPTRBButtonOpacity;
UpdatePPTBtnSlidersStatus();
-
UpdatePPTBtnPreview();
-
- // -- new --
-
- ToggleSwitchNotifyHiddenPage.IsOn = Settings.PowerPointSettings.IsNotifyHiddenPage;
-
- ToggleSwitchNotifyAutoPlayPresentation.IsOn = Settings.PowerPointSettings.IsNotifyAutoPlayPresentation;
-
- ToggleSwitchSupportWPS.IsOn = Settings.PowerPointSettings.IsSupportWPS;
-
- ToggleSwitchSkipAnimationsWhenGoNext.IsOn = Settings.PowerPointSettings.SkipAnimationsWhenGoNext;
-
- ToggleSwitchPowerPointEnhancement.IsOn = Settings.PowerPointSettings.EnablePowerPointEnhancement;
-
- ToggleSwitchAutoSaveScreenShotInPowerPoint.IsOn =
- Settings.PowerPointSettings.IsAutoSaveScreenShotInPowerPoint;
- ToggleSwitchEnableWppProcessKill.IsOn = Settings.PowerPointSettings.EnableWppProcessKill;
- ToggleSwitchAlwaysGoToFirstPageOnReenter.IsOn = Settings.PowerPointSettings.IsAlwaysGoToFirstPageOnReenter;
}
else
{
@@ -526,36 +358,17 @@ namespace Ink_Canvas
// Gesture
if (Settings.Gesture != null)
{
- ToggleSwitchEnableMultiTouchMode.IsOn = Settings.Gesture.IsEnableMultiTouchMode;
-
- ToggleSwitchEnableTwoFingerZoom.IsOn = Settings.Gesture.IsEnableTwoFingerZoom;
- BoardToggleSwitchEnableTwoFingerZoom.IsOn = Settings.Gesture.IsEnableTwoFingerZoom;
-
- ToggleSwitchEnableTwoFingerTranslate.IsOn = Settings.Gesture.IsEnableTwoFingerTranslate;
- BoardToggleSwitchEnableTwoFingerTranslate.IsOn = Settings.Gesture.IsEnableTwoFingerTranslate;
-
- ToggleSwitchEnableTwoFingerRotation.IsOn = Settings.Gesture.IsEnableTwoFingerRotation;
- BoardToggleSwitchEnableTwoFingerRotation.IsOn = Settings.Gesture.IsEnableTwoFingerRotation;
-
if (Settings.Gesture.AutoSwitchTwoFingerGesture)
{
if (Topmost)
{
- ToggleSwitchEnableTwoFingerTranslate.IsOn = false;
- BoardToggleSwitchEnableTwoFingerTranslate.IsOn = false;
Settings.Gesture.IsEnableTwoFingerTranslate = false;
- // if (!isInMultiTouchMode) ToggleSwitchEnableMultiTouchMode.IsOn = true;
}
else
{
- ToggleSwitchEnableTwoFingerTranslate.IsOn = true;
- BoardToggleSwitchEnableTwoFingerTranslate.IsOn = true;
Settings.Gesture.IsEnableTwoFingerTranslate = true;
- if (isInMultiTouchMode) ToggleSwitchEnableMultiTouchMode.IsOn = false;
}
}
-
- CheckEnableTwoFingerGestureBtnColorPrompt();
}
else
{
@@ -778,54 +591,6 @@ namespace Ink_Canvas
if (Settings.Automation != null)
{
StartOrStoptimerCheckAutoFold();
- ToggleSwitchAutoFoldInEasiNote.IsOn = Settings.Automation.IsAutoFoldInEasiNote;
-
- ToggleSwitchAutoFoldInEasiCamera.IsOn = Settings.Automation.IsAutoFoldInEasiCamera;
-
- ToggleSwitchAutoFoldInEasiNote3C.IsOn = Settings.Automation.IsAutoFoldInEasiNote3C;
-
- ToggleSwitchAutoFoldInEasiNote3.IsOn = Settings.Automation.IsAutoFoldInEasiNote3;
-
- ToggleSwitchAutoFoldInEasiNote5C.IsOn = Settings.Automation.IsAutoFoldInEasiNote5C;
-
- ToggleSwitchAutoFoldInSeewoPincoTeacher.IsOn = Settings.Automation.IsAutoFoldInSeewoPincoTeacher;
-
- ToggleSwitchAutoFoldInHiteTouchPro.IsOn = Settings.Automation.IsAutoFoldInHiteTouchPro;
-
- ToggleSwitchAutoFoldInHiteLightBoard.IsOn = Settings.Automation.IsAutoFoldInHiteLightBoard;
-
- ToggleSwitchAutoFoldInHiteCamera.IsOn = Settings.Automation.IsAutoFoldInHiteCamera;
-
- ToggleSwitchAutoFoldInWxBoardMain.IsOn = Settings.Automation.IsAutoFoldInWxBoardMain;
-
- ToggleSwitchAutoFoldInOldZyBoard.IsOn = Settings.Automation.IsAutoFoldInOldZyBoard;
-
- ToggleSwitchAutoFoldInMSWhiteboard.IsOn = Settings.Automation.IsAutoFoldInMSWhiteboard;
-
- ToggleSwitchAutoFoldInAdmoxWhiteboard.IsOn = Settings.Automation.IsAutoFoldInAdmoxWhiteboard;
-
- ToggleSwitchAutoFoldInAdmoxBooth.IsOn = Settings.Automation.IsAutoFoldInAdmoxBooth;
-
- ToggleSwitchAutoFoldInQPoint.IsOn = Settings.Automation.IsAutoFoldInQPoint;
-
- ToggleSwitchAutoFoldInYiYunVisualPresenter.IsOn = Settings.Automation.IsAutoFoldInYiYunVisualPresenter;
-
- ToggleSwitchAutoFoldInMaxHubWhiteboard.IsOn = Settings.Automation.IsAutoFoldInMaxHubWhiteboard;
-
- SettingsPPTInkingAndAutoFoldExplictBorder.Visibility = Visibility.Collapsed;
- if (Settings.Automation.IsAutoFoldInPPTSlideShow)
- {
- SettingsPPTInkingAndAutoFoldExplictBorder.Visibility = Visibility.Visible;
- SettingsShowCanvasAtNewSlideShowStackPanel.Opacity = 0.5;
- SettingsShowCanvasAtNewSlideShowStackPanel.IsHitTestVisible = false;
- }
-
-
- ToggleSwitchAutoFoldInPPTSlideShow.IsOn = Settings.Automation.IsAutoFoldInPPTSlideShow;
-
- ToggleSwitchAutoFoldAfterPPTSlideShow.IsOn = Settings.Automation.IsAutoFoldAfterPPTSlideShow;
-
- ToggleSwitchKeepFoldAfterSoftwareExit.IsOn = Settings.Automation.KeepFoldAfterSoftwareExit;
if (Settings.Automation.IsAutoKillEasiNote || Settings.Automation.IsAutoKillPptService ||
Settings.Automation.IsAutoKillHiteAnnotation || Settings.Automation.IsAutoKillInkCanvas
@@ -839,63 +604,6 @@ namespace Ink_Canvas
{
timerKillProcess.Stop();
}
-
- ToggleSwitchAutoKillEasiNote.IsOn = Settings.Automation.IsAutoKillEasiNote;
-
- ToggleSwitchAutoKillHiteAnnotation.IsOn = Settings.Automation.IsAutoKillHiteAnnotation;
-
- ToggleSwitchAutoKillPptService.IsOn = Settings.Automation.IsAutoKillPptService;
-
- ToggleSwitchAutoKillVComYouJiao.IsOn = Settings.Automation.IsAutoKillVComYouJiao;
-
- ToggleSwitchAutoKillInkCanvas.IsOn = Settings.Automation.IsAutoKillInkCanvas;
-
- ToggleSwitchAutoKillICA.IsOn = Settings.Automation.IsAutoKillICA;
-
- ToggleSwitchAutoKillIDT.IsOn = Settings.Automation.IsAutoKillIDT;
-
- ToggleSwitchAutoKillSeewoLauncher2DesktopAnnotation.IsOn =
- Settings.Automation.IsAutoKillSeewoLauncher2DesktopAnnotation;
-
- ToggleSwitchAutoSaveStrokesAtClear.IsOn = Settings.Automation.IsAutoSaveStrokesAtClear;
-
- ToggleSwitchSaveScreenshotsInDateFolders.IsOn = Settings.Automation.IsSaveScreenshotsInDateFolders;
-
- ToggleSwitchAutoSaveStrokesAtScreenshot.IsOn = Settings.Automation.IsAutoSaveStrokesAtScreenshot;
-
- ToggleSwitchSaveFullPageStrokes.IsOn = Settings.Automation.IsSaveFullPageStrokes;
-
- ToggleSwitchSaveStrokesAsXML.IsOn = Settings.Automation.IsSaveStrokesAsXML;
-
- // 加载定时保存墨迹设置
- ToggleSwitchEnableAutoSaveStrokes.IsOn = Settings.Automation.IsEnableAutoSaveStrokes;
- // 初始化保存间隔下拉框
- if (ComboBoxAutoSaveStrokesInterval != null)
- {
- int intervalMinutes = Settings.Automation.AutoSaveStrokesIntervalMinutes;
- if (intervalMinutes < 1) intervalMinutes = 5; // 默认5分钟
- foreach (System.Windows.Controls.ComboBoxItem item in ComboBoxAutoSaveStrokesInterval.Items)
- {
- if (item.Tag != null && int.TryParse(item.Tag.ToString(), out int tagValue) && tagValue == intervalMinutes)
- {
- ComboBoxAutoSaveStrokesInterval.SelectedItem = item;
- break;
- }
- }
- }
-
- SideControlMinimumAutomationSlider.Value = Settings.Automation.MinimumAutomationStrokeNumber;
-
- AutoSavedStrokesLocation.Text = Settings.Automation.AutoSavedStrokesLocation;
- ToggleSwitchAutoDelSavedFiles.IsOn = Settings.Automation.AutoDelSavedFiles;
- ComboBoxAutoDelSavedFilesDaysThreshold.Text =
- Settings.Automation.AutoDelSavedFilesDaysThreshold.ToString();
-
- // 加载退出收纳模式自动切换至批注模式设置
- ToggleSwitchAutoEnterAnnotationModeWhenExitFoldMode.IsOn = Settings.Automation.IsAutoEnterAnnotationModeWhenExitFoldMode;
-
- // 加载退出白板时自动收纳设置
- ToggleSwitchAutoFoldWhenExitWhiteboard.IsOn = Settings.Automation.IsAutoFoldWhenExitWhiteboard;
}
else
{
diff --git a/Ink Canvas/MainWindow_cs/MW_Timer.cs b/Ink Canvas/MainWindow_cs/MW_Timer.cs
index 8ea3a7d8..dedb3bab 100644
--- a/Ink Canvas/MainWindow_cs/MW_Timer.cs
+++ b/Ink Canvas/MainWindow_cs/MW_Timer.cs
@@ -82,6 +82,12 @@ namespace Ink_Canvas
/// 进程终止定时器
///
private Timer timerKillProcess = new Timer();
+
+ public void UpdateAutoKillProcessTimer(bool shouldRun)
+ {
+ if (shouldRun) timerKillProcess.Start();
+ else timerKillProcess.Stop();
+ }
///
/// 统一的主窗口定时器
///
@@ -294,7 +300,7 @@ namespace Ink_Canvas
/// 如果启用,则根据Settings.Automation.AutoSaveStrokesIntervalMinutes设置定时器间隔
/// 最小间隔为1分钟
///
- private void UpdateAutoSaveStrokesTimer()
+ public void UpdateAutoSaveStrokesTimer()
{
if (autoSaveStrokesTimer == null) return;
diff --git a/Ink Canvas/Windows/SettingsViews/Pages/AppearancePage.xaml b/Ink Canvas/Windows/SettingsViews/Pages/AppearancePage.xaml
index a6787d9a..5218c5e9 100644
--- a/Ink Canvas/Windows/SettingsViews/Pages/AppearancePage.xaml
+++ b/Ink Canvas/Windows/SettingsViews/Pages/AppearancePage.xaml
@@ -122,13 +122,13 @@
+
-
@@ -137,13 +137,13 @@
+
-
diff --git a/Ink Canvas/Windows/SettingsViews/Pages/AppearancePage.xaml.cs b/Ink Canvas/Windows/SettingsViews/Pages/AppearancePage.xaml.cs
index aeb61fa2..9005408d 100644
--- a/Ink Canvas/Windows/SettingsViews/Pages/AppearancePage.xaml.cs
+++ b/Ink Canvas/Windows/SettingsViews/Pages/AppearancePage.xaml.cs
@@ -106,6 +106,9 @@ namespace Ink_Canvas.Windows.SettingsViews.Pages
ComboBoxEraserDisplayOption.SelectedIndex = settings.Appearance.EraserDisplayOption;
CardEnableTrayIcon.IsOn = settings.Appearance.EnableTrayIcon;
+
+ if (BtnHitokotoCustomize != null)
+ BtnHitokotoCustomize.Visibility = settings.Appearance.ChickenSoupSource == 3 ? Visibility.Visible : Visibility.Collapsed;
}
private MainWindow GetMainWindow() => Application.Current.MainWindow as MainWindow;
@@ -232,6 +235,10 @@ namespace Ink_Canvas.Windows.SettingsViews.Pages
{
mw.ViewboxFloatingBarScaleTransform.ScaleX = val > 0.5 && val < 1.25 ? val : val <= 0.5 ? 0.5 : 1.25;
mw.ViewboxFloatingBarScaleTransform.ScaleY = val > 0.5 && val < 1.25 ? val : val <= 0.5 ? 0.5 : 1.25;
+ if (mw.BtnPPTSlideShowEnd.Visibility == Visibility.Visible)
+ mw.ViewboxFloatingBarMarginAnimation(60);
+ else
+ mw.ViewboxFloatingBarMarginAnimation(100, true);
}
}
@@ -249,6 +256,11 @@ namespace Ink_Canvas.Windows.SettingsViews.Pages
if (!_isLoaded) return;
SettingsManager.Settings.Appearance.ViewboxFloatingBarOpacityInPPTValue = ViewboxFloatingBarOpacityInPPTValueSlider.Value;
SettingsManager.SaveSettingsToFile();
+ var mw = GetMainWindow();
+ if (mw != null && mw.currentMode == 2)
+ {
+ mw.ViewboxFloatingBar.Opacity = ViewboxFloatingBarOpacityInPPTValueSlider.Value;
+ }
}
#endregion
diff --git a/Ink Canvas/Windows/SettingsViews/Pages/AutomationPage.xaml b/Ink Canvas/Windows/SettingsViews/Pages/AutomationPage.xaml
new file mode 100644
index 00000000..187314b2
--- /dev/null
+++ b/Ink Canvas/Windows/SettingsViews/Pages/AutomationPage.xaml
@@ -0,0 +1,353 @@
+
+
+
+
+
+ 4
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Ink Canvas/Windows/SettingsViews/Pages/AutomationPage.xaml.cs b/Ink Canvas/Windows/SettingsViews/Pages/AutomationPage.xaml.cs
new file mode 100644
index 00000000..ac138ace
--- /dev/null
+++ b/Ink Canvas/Windows/SettingsViews/Pages/AutomationPage.xaml.cs
@@ -0,0 +1,647 @@
+using Ink_Canvas.Helpers;
+using Ink_Canvas.Windows.SettingsViews.Helpers;
+using System;
+using System.Windows;
+using System.Windows.Controls;
+using Page = iNKORE.UI.WPF.Modern.Controls.Page;
+
+namespace Ink_Canvas.Windows.SettingsViews.Pages
+{
+ public partial class AutomationPage : Page
+ {
+ private bool _isLoaded = false;
+
+ public AutomationPage()
+ {
+ InitializeComponent();
+ Loaded += AutomationPage_Loaded;
+ Unloaded += AutomationPage_Unloaded;
+ }
+
+ private void AutomationPage_Loaded(object sender, RoutedEventArgs e)
+ {
+ LoadSettings();
+ _isLoaded = true;
+ }
+
+ private void AutomationPage_Unloaded(object sender, RoutedEventArgs e)
+ {
+ _isLoaded = false;
+ }
+
+ private MainWindow GetMainWindow() => Application.Current.MainWindow as MainWindow;
+
+ private void LoadSettings()
+ {
+ _isLoaded = false;
+ var auto = SettingsManager.Settings.Automation;
+
+ CardAutoFoldInEasiNote.IsOn = auto.IsAutoFoldInEasiNote;
+ CardAutoFoldInEasiNoteIgnoreDesktopAnno.IsOn = auto.IsAutoFoldInEasiNoteIgnoreDesktopAnno;
+ CardAutoFoldInEasiCamera.IsOn = auto.IsAutoFoldInEasiCamera;
+ CardAutoFoldInEasiNote3.IsOn = auto.IsAutoFoldInEasiNote3;
+ CardAutoFoldInEasiNote3C.IsOn = auto.IsAutoFoldInEasiNote3C;
+ CardAutoFoldInEasiNote5C.IsOn = auto.IsAutoFoldInEasiNote5C;
+ CardAutoFoldInSeewoPincoTeacher.IsOn = auto.IsAutoFoldInSeewoPincoTeacher;
+ CardAutoFoldInHiteTouchPro.IsOn = auto.IsAutoFoldInHiteTouchPro;
+ CardAutoFoldInHiteLightBoard.IsOn = auto.IsAutoFoldInHiteLightBoard;
+ CardAutoFoldInHiteCamera.IsOn = auto.IsAutoFoldInHiteCamera;
+ CardAutoFoldInWxBoardMain.IsOn = auto.IsAutoFoldInWxBoardMain;
+ CardAutoFoldInOldZyBoard.IsOn = auto.IsAutoFoldInOldZyBoard;
+ CardAutoFoldInMSWhiteboard.IsOn = auto.IsAutoFoldInMSWhiteboard;
+ CardAutoFoldInAdmoxWhiteboard.IsOn = auto.IsAutoFoldInAdmoxWhiteboard;
+ CardAutoFoldInAdmoxBooth.IsOn = auto.IsAutoFoldInAdmoxBooth;
+ CardAutoFoldInQPoint.IsOn = auto.IsAutoFoldInQPoint;
+ CardAutoFoldInYiYunVisualPresenter.IsOn = auto.IsAutoFoldInYiYunVisualPresenter;
+ CardAutoFoldInMaxHubWhiteboard.IsOn = auto.IsAutoFoldInMaxHubWhiteboard;
+ CardAutoFoldInPPTSlideShow.IsOn = auto.IsAutoFoldInPPTSlideShow;
+
+ CardAutoKillPptService.IsOn = auto.IsAutoKillPptService;
+ CardAutoKillEasiNote.IsOn = auto.IsAutoKillEasiNote;
+ CardAutoKillHiteAnnotation.IsOn = auto.IsAutoKillHiteAnnotation;
+ CardAutoKillVComYouJiao.IsOn = auto.IsAutoKillVComYouJiao;
+ CardAutoKillSeewoLauncher2DesktopAnnotation.IsOn = auto.IsAutoKillSeewoLauncher2DesktopAnnotation;
+ CardAutoKillInkCanvas.IsOn = auto.IsAutoKillInkCanvas;
+ CardAutoKillICA.IsOn = auto.IsAutoKillICA;
+ CardAutoKillIDT.IsOn = auto.IsAutoKillIDT;
+ CardAutoEnterAnnotationAfterKillHite.IsOn = auto.IsAutoEnterAnnotationAfterKillHite;
+
+ CardAutoEnterAnnotationModeWhenExitFoldMode.IsOn = auto.IsAutoEnterAnnotationModeWhenExitFoldMode;
+ CardAutoFoldWhenExitWhiteboard.IsOn = auto.IsAutoFoldWhenExitWhiteboard;
+ CardAutoFoldAfterPPTSlideShow.IsOn = auto.IsAutoFoldAfterPPTSlideShow;
+ CardKeepFoldAfterSoftwareExit.IsOn = auto.KeepFoldAfterSoftwareExit;
+
+ CardSaveScreenshotsInDateFolders.IsOn = auto.IsSaveScreenshotsInDateFolders;
+ CardAutoSaveStrokesAtScreenshot.IsOn = auto.IsAutoSaveStrokesAtScreenshot;
+ CardAutoSaveStrokesAtClear.IsOn = auto.IsAutoSaveStrokesAtClear;
+ CardSaveStrokesAsXML.IsOn = auto.IsSaveStrokesAsXML;
+ CardEnableAutoSaveStrokes.IsOn = auto.IsEnableAutoSaveStrokes;
+
+ var interval = auto.AutoSaveStrokesIntervalMinutes;
+ foreach (ComboBoxItem item in ComboBoxAutoSaveStrokesInterval.Items)
+ {
+ if (item.Tag != null && int.TryParse(item.Tag.ToString(), out int tagVal) && tagVal == interval)
+ {
+ ComboBoxAutoSaveStrokesInterval.SelectedItem = item;
+ break;
+ }
+ }
+
+ CardAutoDelSavedFiles.IsOn = auto.AutoDelSavedFiles;
+ ComboBoxAutoDelSavedFilesDaysThreshold.SelectedIndex = auto.AutoDelSavedFilesDaysThreshold switch
+ {
+ 7 => 0, 14 => 1, 30 => 2, 60 => 3, 90 => 4, _ => 2
+ };
+
+ SideControlMinimumAutomationSlider.Value = auto.MinimumAutomationStrokeNumber;
+ CardSaveFullPageStrokes.IsOn = auto.IsSaveFullPageStrokes;
+
+ CardFloatingWindowInterceptorEnabled.IsOn = auto.FloatingWindowInterceptor.IsEnabled;
+ if (auto.FloatingWindowInterceptor.InterceptRules != null)
+ {
+ CardSeewoWhiteboard3Floating.IsOn = auto.FloatingWindowInterceptor.InterceptRules.ContainsKey("SeewoWhiteboard3Floating") && auto.FloatingWindowInterceptor.InterceptRules["SeewoWhiteboard3Floating"];
+ CardSeewoWhiteboard5Floating.IsOn = auto.FloatingWindowInterceptor.InterceptRules.ContainsKey("SeewoWhiteboard5Floating") && auto.FloatingWindowInterceptor.InterceptRules["SeewoWhiteboard5Floating"];
+ CardSeewoWhiteboard5CFloating.IsOn = auto.FloatingWindowInterceptor.InterceptRules.ContainsKey("SeewoWhiteboard5CFloating") && auto.FloatingWindowInterceptor.InterceptRules["SeewoWhiteboard5CFloating"];
+ CardSeewoPincoSideBarFloating.IsOn = auto.FloatingWindowInterceptor.InterceptRules.ContainsKey("SeewoPincoSideBarFloating") && auto.FloatingWindowInterceptor.InterceptRules["SeewoPincoSideBarFloating"];
+ CardSeewoPincoDrawingFloating.IsOn = auto.FloatingWindowInterceptor.InterceptRules.ContainsKey("SeewoPincoDrawingFloating") && auto.FloatingWindowInterceptor.InterceptRules["SeewoPincoDrawingFloating"];
+ CardSeewoPPTFloating.IsOn = auto.FloatingWindowInterceptor.InterceptRules.ContainsKey("SeewoPPTFloating") && auto.FloatingWindowInterceptor.InterceptRules["SeewoPPTFloating"];
+ CardAiClassFloating.IsOn = auto.FloatingWindowInterceptor.InterceptRules.ContainsKey("AiClassFloating") && auto.FloatingWindowInterceptor.InterceptRules["AiClassFloating"];
+ CardHiteAnnotationFloating.IsOn = auto.FloatingWindowInterceptor.InterceptRules.ContainsKey("HiteAnnotationFloating") && auto.FloatingWindowInterceptor.InterceptRules["HiteAnnotationFloating"];
+ CardChangYanFloating.IsOn = auto.FloatingWindowInterceptor.InterceptRules.ContainsKey("ChangYanFloating") && auto.FloatingWindowInterceptor.InterceptRules["ChangYanFloating"];
+ CardChangYanPptFloating.IsOn = auto.FloatingWindowInterceptor.InterceptRules.ContainsKey("ChangYanPptFloating") && auto.FloatingWindowInterceptor.InterceptRules["ChangYanPptFloating"];
+ CardIntelligentClassFloating.IsOn = auto.FloatingWindowInterceptor.InterceptRules.ContainsKey("IntelligentClassFloating") && auto.FloatingWindowInterceptor.InterceptRules["IntelligentClassFloating"];
+ CardSeewoDesktopAnnotationFloating.IsOn = auto.FloatingWindowInterceptor.InterceptRules.ContainsKey("SeewoDesktopAnnotationFloating") && auto.FloatingWindowInterceptor.InterceptRules["SeewoDesktopAnnotationFloating"];
+ CardSeewoDesktopSideBarFloating.IsOn = auto.FloatingWindowInterceptor.InterceptRules.ContainsKey("SeewoDesktopSideBarFloating") && auto.FloatingWindowInterceptor.InterceptRules["SeewoDesktopSideBarFloating"];
+ }
+
+ _isLoaded = true;
+ }
+
+ #region AutoFold
+
+ private void ToggleSwitchAutoFoldInEasiNote_Toggled(object sender, RoutedEventArgs e)
+ {
+ if (!_isLoaded) return;
+ SettingsManager.Settings.Automation.IsAutoFoldInEasiNote = CardAutoFoldInEasiNote.IsOn;
+ SettingsManager.SaveSettingsToFile();
+ GetMainWindow()?.StartOrStoptimerCheckAutoFold();
+ }
+
+ private void ToggleSwitchAutoFoldInEasiNoteIgnoreDesktopAnno_Toggled(object sender, RoutedEventArgs e)
+ {
+ if (!_isLoaded) return;
+ SettingsManager.Settings.Automation.IsAutoFoldInEasiNoteIgnoreDesktopAnno = CardAutoFoldInEasiNoteIgnoreDesktopAnno.IsOn;
+ SettingsManager.SaveSettingsToFile();
+ }
+
+ private void ToggleSwitchAutoFoldInEasiCamera_Toggled(object sender, RoutedEventArgs e)
+ {
+ if (!_isLoaded) return;
+ SettingsManager.Settings.Automation.IsAutoFoldInEasiCamera = CardAutoFoldInEasiCamera.IsOn;
+ SettingsManager.SaveSettingsToFile();
+ GetMainWindow()?.StartOrStoptimerCheckAutoFold();
+ }
+
+ private void ToggleSwitchAutoFoldInEasiNote3_Toggled(object sender, RoutedEventArgs e)
+ {
+ if (!_isLoaded) return;
+ SettingsManager.Settings.Automation.IsAutoFoldInEasiNote3 = CardAutoFoldInEasiNote3.IsOn;
+ SettingsManager.SaveSettingsToFile();
+ GetMainWindow()?.StartOrStoptimerCheckAutoFold();
+ }
+
+ private void ToggleSwitchAutoFoldInEasiNote3C_Toggled(object sender, RoutedEventArgs e)
+ {
+ if (!_isLoaded) return;
+ SettingsManager.Settings.Automation.IsAutoFoldInEasiNote3C = CardAutoFoldInEasiNote3C.IsOn;
+ SettingsManager.SaveSettingsToFile();
+ GetMainWindow()?.StartOrStoptimerCheckAutoFold();
+ }
+
+ private void ToggleSwitchAutoFoldInEasiNote5C_Toggled(object sender, RoutedEventArgs e)
+ {
+ if (!_isLoaded) return;
+ SettingsManager.Settings.Automation.IsAutoFoldInEasiNote5C = CardAutoFoldInEasiNote5C.IsOn;
+ SettingsManager.SaveSettingsToFile();
+ GetMainWindow()?.StartOrStoptimerCheckAutoFold();
+ }
+
+ private void ToggleSwitchAutoFoldInSeewoPincoTeacher_Toggled(object sender, RoutedEventArgs e)
+ {
+ if (!_isLoaded) return;
+ SettingsManager.Settings.Automation.IsAutoFoldInSeewoPincoTeacher = CardAutoFoldInSeewoPincoTeacher.IsOn;
+ SettingsManager.SaveSettingsToFile();
+ GetMainWindow()?.StartOrStoptimerCheckAutoFold();
+ }
+
+ private void ToggleSwitchAutoFoldInHiteTouchPro_Toggled(object sender, RoutedEventArgs e)
+ {
+ if (!_isLoaded) return;
+ SettingsManager.Settings.Automation.IsAutoFoldInHiteTouchPro = CardAutoFoldInHiteTouchPro.IsOn;
+ SettingsManager.SaveSettingsToFile();
+ GetMainWindow()?.StartOrStoptimerCheckAutoFold();
+ }
+
+ private void ToggleSwitchAutoFoldInHiteLightBoard_Toggled(object sender, RoutedEventArgs e)
+ {
+ if (!_isLoaded) return;
+ SettingsManager.Settings.Automation.IsAutoFoldInHiteLightBoard = CardAutoFoldInHiteLightBoard.IsOn;
+ SettingsManager.SaveSettingsToFile();
+ GetMainWindow()?.StartOrStoptimerCheckAutoFold();
+ }
+
+ private void ToggleSwitchAutoFoldInHiteCamera_Toggled(object sender, RoutedEventArgs e)
+ {
+ if (!_isLoaded) return;
+ SettingsManager.Settings.Automation.IsAutoFoldInHiteCamera = CardAutoFoldInHiteCamera.IsOn;
+ SettingsManager.SaveSettingsToFile();
+ GetMainWindow()?.StartOrStoptimerCheckAutoFold();
+ }
+
+ private void ToggleSwitchAutoFoldInWxBoardMain_Toggled(object sender, RoutedEventArgs e)
+ {
+ if (!_isLoaded) return;
+ SettingsManager.Settings.Automation.IsAutoFoldInWxBoardMain = CardAutoFoldInWxBoardMain.IsOn;
+ SettingsManager.SaveSettingsToFile();
+ GetMainWindow()?.StartOrStoptimerCheckAutoFold();
+ }
+
+ private void ToggleSwitchAutoFoldInOldZyBoard_Toggled(object sender, RoutedEventArgs e)
+ {
+ if (!_isLoaded) return;
+ SettingsManager.Settings.Automation.IsAutoFoldInOldZyBoard = CardAutoFoldInOldZyBoard.IsOn;
+ SettingsManager.SaveSettingsToFile();
+ GetMainWindow()?.StartOrStoptimerCheckAutoFold();
+ }
+
+ private void ToggleSwitchAutoFoldInMSWhiteboard_Toggled(object sender, RoutedEventArgs e)
+ {
+ if (!_isLoaded) return;
+ SettingsManager.Settings.Automation.IsAutoFoldInMSWhiteboard = CardAutoFoldInMSWhiteboard.IsOn;
+ SettingsManager.SaveSettingsToFile();
+ GetMainWindow()?.StartOrStoptimerCheckAutoFold();
+ }
+
+ private void ToggleSwitchAutoFoldInAdmoxWhiteboard_Toggled(object sender, RoutedEventArgs e)
+ {
+ if (!_isLoaded) return;
+ SettingsManager.Settings.Automation.IsAutoFoldInAdmoxWhiteboard = CardAutoFoldInAdmoxWhiteboard.IsOn;
+ SettingsManager.SaveSettingsToFile();
+ GetMainWindow()?.StartOrStoptimerCheckAutoFold();
+ }
+
+ private void ToggleSwitchAutoFoldInAdmoxBooth_Toggled(object sender, RoutedEventArgs e)
+ {
+ if (!_isLoaded) return;
+ SettingsManager.Settings.Automation.IsAutoFoldInAdmoxBooth = CardAutoFoldInAdmoxBooth.IsOn;
+ SettingsManager.SaveSettingsToFile();
+ GetMainWindow()?.StartOrStoptimerCheckAutoFold();
+ }
+
+ private void ToggleSwitchAutoFoldInQPoint_Toggled(object sender, RoutedEventArgs e)
+ {
+ if (!_isLoaded) return;
+ SettingsManager.Settings.Automation.IsAutoFoldInQPoint = CardAutoFoldInQPoint.IsOn;
+ SettingsManager.SaveSettingsToFile();
+ GetMainWindow()?.StartOrStoptimerCheckAutoFold();
+ }
+
+ private void ToggleSwitchAutoFoldInYiYunVisualPresenter_Toggled(object sender, RoutedEventArgs e)
+ {
+ if (!_isLoaded) return;
+ SettingsManager.Settings.Automation.IsAutoFoldInYiYunVisualPresenter = CardAutoFoldInYiYunVisualPresenter.IsOn;
+ SettingsManager.SaveSettingsToFile();
+ GetMainWindow()?.StartOrStoptimerCheckAutoFold();
+ }
+
+ private void ToggleSwitchAutoFoldInMaxHubWhiteboard_Toggled(object sender, RoutedEventArgs e)
+ {
+ if (!_isLoaded) return;
+ SettingsManager.Settings.Automation.IsAutoFoldInMaxHubWhiteboard = CardAutoFoldInMaxHubWhiteboard.IsOn;
+ SettingsManager.SaveSettingsToFile();
+ GetMainWindow()?.StartOrStoptimerCheckAutoFold();
+ }
+
+ private void ToggleSwitchAutoFoldInPPTSlideShow_Toggled(object sender, RoutedEventArgs e)
+ {
+ if (!_isLoaded) return;
+ var mw = GetMainWindow();
+ var auto = SettingsManager.Settings.Automation;
+ bool previousState = auto.IsAutoFoldInPPTSlideShow;
+ auto.IsAutoFoldInPPTSlideShow = CardAutoFoldInPPTSlideShow.IsOn;
+ if (previousState != auto.IsAutoFoldInPPTSlideShow)
+ {
+ LogHelper.WriteLogToFile($"PPT自动收纳设置已变更: {auto.IsAutoFoldInPPTSlideShow}", LogHelper.LogType.Trace);
+ }
+ SettingsManager.SaveSettingsToFile();
+ mw?.StartOrStoptimerCheckAutoFold();
+ }
+
+ #endregion
+
+ #region AutoKill
+
+ private void UpdateAutoKillTimer()
+ {
+ var mw = GetMainWindow();
+ if (mw == null) return;
+ var auto = SettingsManager.Settings.Automation;
+ bool anyKill = auto.IsAutoKillEasiNote || auto.IsAutoKillPptService ||
+ auto.IsAutoKillHiteAnnotation || auto.IsAutoKillInkCanvas ||
+ auto.IsAutoKillICA || auto.IsAutoKillIDT || auto.IsAutoKillVComYouJiao ||
+ auto.IsAutoKillSeewoLauncher2DesktopAnnotation;
+ mw.UpdateAutoKillProcessTimer(anyKill);
+ }
+
+ private void ToggleSwitchAutoKillPptService_Toggled(object sender, RoutedEventArgs e)
+ {
+ if (!_isLoaded) return;
+ SettingsManager.Settings.Automation.IsAutoKillPptService = CardAutoKillPptService.IsOn;
+ SettingsManager.SaveSettingsToFile();
+ UpdateAutoKillTimer();
+ }
+
+ private void ToggleSwitchAutoKillEasiNote_Toggled(object sender, RoutedEventArgs e)
+ {
+ if (!_isLoaded) return;
+ SettingsManager.Settings.Automation.IsAutoKillEasiNote = CardAutoKillEasiNote.IsOn;
+ SettingsManager.SaveSettingsToFile();
+ UpdateAutoKillTimer();
+ }
+
+ private void ToggleSwitchAutoKillHiteAnnotation_Toggled(object sender, RoutedEventArgs e)
+ {
+ if (!_isLoaded) return;
+ SettingsManager.Settings.Automation.IsAutoKillHiteAnnotation = CardAutoKillHiteAnnotation.IsOn;
+ SettingsManager.SaveSettingsToFile();
+ UpdateAutoKillTimer();
+ }
+
+ private void ToggleSwitchAutoKillVComYouJiao_Toggled(object sender, RoutedEventArgs e)
+ {
+ if (!_isLoaded) return;
+ SettingsManager.Settings.Automation.IsAutoKillVComYouJiao = CardAutoKillVComYouJiao.IsOn;
+ SettingsManager.SaveSettingsToFile();
+ UpdateAutoKillTimer();
+ }
+
+ private void ToggleSwitchAutoKillSeewoLauncher2DesktopAnnotation_Toggled(object sender, RoutedEventArgs e)
+ {
+ if (!_isLoaded) return;
+ SettingsManager.Settings.Automation.IsAutoKillSeewoLauncher2DesktopAnnotation = CardAutoKillSeewoLauncher2DesktopAnnotation.IsOn;
+ SettingsManager.SaveSettingsToFile();
+ UpdateAutoKillTimer();
+ }
+
+ private void ToggleSwitchAutoKillInkCanvas_Toggled(object sender, RoutedEventArgs e)
+ {
+ if (!_isLoaded) return;
+ SettingsManager.Settings.Automation.IsAutoKillInkCanvas = CardAutoKillInkCanvas.IsOn;
+ SettingsManager.SaveSettingsToFile();
+ UpdateAutoKillTimer();
+ }
+
+ private void ToggleSwitchAutoKillICA_Toggled(object sender, RoutedEventArgs e)
+ {
+ if (!_isLoaded) return;
+ SettingsManager.Settings.Automation.IsAutoKillICA = CardAutoKillICA.IsOn;
+ SettingsManager.SaveSettingsToFile();
+ UpdateAutoKillTimer();
+ }
+
+ private void ToggleSwitchAutoKillIDT_Toggled(object sender, RoutedEventArgs e)
+ {
+ if (!_isLoaded) return;
+ SettingsManager.Settings.Automation.IsAutoKillIDT = CardAutoKillIDT.IsOn;
+ SettingsManager.SaveSettingsToFile();
+ UpdateAutoKillTimer();
+ }
+
+ private void ToggleSwitchAutoEnterAnnotationAfterKillHite_Toggled(object sender, RoutedEventArgs e)
+ {
+ if (!_isLoaded) return;
+ SettingsManager.Settings.Automation.IsAutoEnterAnnotationAfterKillHite = CardAutoEnterAnnotationAfterKillHite.IsOn;
+ SettingsManager.SaveSettingsToFile();
+ }
+
+ #endregion
+
+ #region Fold Mode
+
+ private void ToggleSwitchAutoEnterAnnotationModeWhenExitFoldMode_Toggled(object sender, RoutedEventArgs e)
+ {
+ if (!_isLoaded) return;
+ SettingsManager.Settings.Automation.IsAutoEnterAnnotationModeWhenExitFoldMode = CardAutoEnterAnnotationModeWhenExitFoldMode.IsOn;
+ SettingsManager.SaveSettingsToFile();
+ }
+
+ private void ToggleSwitchAutoFoldWhenExitWhiteboard_Toggled(object sender, RoutedEventArgs e)
+ {
+ if (!_isLoaded) return;
+ SettingsManager.Settings.Automation.IsAutoFoldWhenExitWhiteboard = CardAutoFoldWhenExitWhiteboard.IsOn;
+ SettingsManager.SaveSettingsToFile();
+ }
+
+ private void ToggleSwitchAutoFoldAfterPPTSlideShow_Toggled(object sender, RoutedEventArgs e)
+ {
+ if (!_isLoaded) return;
+ SettingsManager.Settings.Automation.IsAutoFoldAfterPPTSlideShow = CardAutoFoldAfterPPTSlideShow.IsOn;
+ SettingsManager.SaveSettingsToFile();
+ }
+
+ private void ToggleSwitchKeepFoldAfterSoftwareExit_Toggled(object sender, RoutedEventArgs e)
+ {
+ if (!_isLoaded) return;
+ SettingsManager.Settings.Automation.KeepFoldAfterSoftwareExit = CardKeepFoldAfterSoftwareExit.IsOn;
+ SettingsManager.SaveSettingsToFile();
+ }
+
+ #endregion
+
+ #region Storage & Save
+
+ private void ToggleSwitchSaveScreenshotsInDateFolders_Toggled(object sender, RoutedEventArgs e)
+ {
+ if (!_isLoaded) return;
+ SettingsManager.Settings.Automation.IsSaveScreenshotsInDateFolders = CardSaveScreenshotsInDateFolders.IsOn;
+ SettingsManager.SaveSettingsToFile();
+ }
+
+ private void ToggleSwitchAutoSaveStrokesAtScreenshot_Toggled(object sender, RoutedEventArgs e)
+ {
+ if (!_isLoaded) return;
+ SettingsManager.Settings.Automation.IsAutoSaveStrokesAtScreenshot = CardAutoSaveStrokesAtScreenshot.IsOn;
+ SettingsManager.SaveSettingsToFile();
+ }
+
+ private void ToggleSwitchAutoSaveStrokesAtClear_Toggled(object sender, RoutedEventArgs e)
+ {
+ if (!_isLoaded) return;
+ SettingsManager.Settings.Automation.IsAutoSaveStrokesAtClear = CardAutoSaveStrokesAtClear.IsOn;
+ SettingsManager.SaveSettingsToFile();
+ }
+
+ private void ToggleSwitchSaveStrokesAsXML_Toggled(object sender, RoutedEventArgs e)
+ {
+ if (!_isLoaded) return;
+ SettingsManager.Settings.Automation.IsSaveStrokesAsXML = CardSaveStrokesAsXML.IsOn;
+ SettingsManager.SaveSettingsToFile();
+ }
+
+ private void ToggleSwitchEnableAutoSaveStrokes_Toggled(object sender, RoutedEventArgs e)
+ {
+ if (!_isLoaded) return;
+ SettingsManager.Settings.Automation.IsEnableAutoSaveStrokes = CardEnableAutoSaveStrokes.IsOn;
+ SettingsManager.SaveSettingsToFile();
+ GetMainWindow()?.UpdateAutoSaveStrokesTimer();
+ }
+
+ private void ComboBoxAutoSaveStrokesInterval_SelectionChanged(object sender, SelectionChangedEventArgs e)
+ {
+ if (!_isLoaded || ComboBoxAutoSaveStrokesInterval.SelectedItem == null) return;
+ var selectedItem = ComboBoxAutoSaveStrokesInterval.SelectedItem as ComboBoxItem;
+ if (selectedItem?.Tag != null && int.TryParse(selectedItem.Tag.ToString(), out int intervalMinutes))
+ {
+ SettingsManager.Settings.Automation.AutoSaveStrokesIntervalMinutes = intervalMinutes;
+ SettingsManager.SaveSettingsToFile();
+ GetMainWindow()?.UpdateAutoSaveStrokesTimer();
+ }
+ }
+
+ private void ToggleSwitchAutoDelSavedFiles_Toggled(object sender, RoutedEventArgs e)
+ {
+ if (!_isLoaded) return;
+ SettingsManager.Settings.Automation.AutoDelSavedFiles = CardAutoDelSavedFiles.IsOn;
+ SettingsManager.SaveSettingsToFile();
+ }
+
+ private void ComboBoxAutoDelSavedFilesDaysThreshold_SelectionChanged(object sender, SelectionChangedEventArgs e)
+ {
+ if (!_isLoaded) return;
+ SettingsManager.Settings.Automation.AutoDelSavedFilesDaysThreshold =
+ int.Parse(((ComboBoxItem)ComboBoxAutoDelSavedFilesDaysThreshold.SelectedItem).Content.ToString());
+ SettingsManager.SaveSettingsToFile();
+ }
+
+ private void SideControlMinimumAutomationSlider_ValueChanged(object sender, RoutedEventArgs e)
+ {
+ if (!_isLoaded) return;
+ SettingsManager.Settings.Automation.MinimumAutomationStrokeNumber = (int)SideControlMinimumAutomationSlider.Value;
+ SettingsManager.SaveSettingsToFile();
+ }
+
+ private void ToggleSwitchSaveFullPageStrokes_Toggled(object sender, RoutedEventArgs e)
+ {
+ if (!_isLoaded) return;
+ SettingsManager.Settings.Automation.IsSaveFullPageStrokes = CardSaveFullPageStrokes.IsOn;
+ SettingsManager.SaveSettingsToFile();
+ }
+
+ #endregion
+
+ #region Floating Window Interceptor
+
+ private void ToggleSwitchFloatingWindowInterceptorEnabled_Toggled(object sender, RoutedEventArgs e)
+ {
+ if (!_isLoaded) return;
+ var mw = GetMainWindow();
+ if (mw == null) return;
+ SettingsManager.Settings.Automation.FloatingWindowInterceptor.IsEnabled = CardFloatingWindowInterceptorEnabled.IsOn;
+ if (mw._floatingWindowInterceptorManager != null)
+ {
+ if (SettingsManager.Settings.Automation.FloatingWindowInterceptor.IsEnabled)
+ mw._floatingWindowInterceptorManager.Start();
+ else
+ mw._floatingWindowInterceptorManager.Stop();
+ }
+ SettingsManager.SaveSettingsToFile();
+ }
+
+ private void ToggleSwitchSeewoWhiteboard3Floating_Toggled(object sender, RoutedEventArgs e)
+ {
+ if (!_isLoaded) return;
+ GetMainWindow()?.SetInterceptRule(FloatingWindowInterceptor.InterceptType.SeewoWhiteboard3Floating, CardSeewoWhiteboard3Floating.IsOn);
+ }
+
+ private void ToggleSwitchSeewoWhiteboard5Floating_Toggled(object sender, RoutedEventArgs e)
+ {
+ if (!_isLoaded) return;
+ GetMainWindow()?.SetInterceptRule(FloatingWindowInterceptor.InterceptType.SeewoWhiteboard5Floating, CardSeewoWhiteboard5Floating.IsOn);
+ }
+
+ private void ToggleSwitchSeewoWhiteboard5CFloating_Toggled(object sender, RoutedEventArgs e)
+ {
+ if (!_isLoaded) return;
+ GetMainWindow()?.SetInterceptRule(FloatingWindowInterceptor.InterceptType.SeewoWhiteboard5CFloating, CardSeewoWhiteboard5CFloating.IsOn);
+ }
+
+ private void ToggleSwitchSeewoPincoSideBarFloating_Toggled(object sender, RoutedEventArgs e)
+ {
+ if (!_isLoaded) return;
+ GetMainWindow()?.SetInterceptRule(FloatingWindowInterceptor.InterceptType.SeewoPincoSideBarFloating, CardSeewoPincoSideBarFloating.IsOn);
+ }
+
+ private void ToggleSwitchSeewoPincoDrawingFloating_Toggled(object sender, RoutedEventArgs e)
+ {
+ if (!_isLoaded) return;
+ GetMainWindow()?.SetInterceptRule(FloatingWindowInterceptor.InterceptType.SeewoPincoDrawingFloating, CardSeewoPincoDrawingFloating.IsOn);
+ }
+
+ private void ToggleSwitchSeewoPPTFloating_Toggled(object sender, RoutedEventArgs e)
+ {
+ if (!_isLoaded) return;
+ GetMainWindow()?.SetInterceptRule(FloatingWindowInterceptor.InterceptType.SeewoPPTFloating, CardSeewoPPTFloating.IsOn);
+ }
+
+ private void ToggleSwitchAiClassFloating_Toggled(object sender, RoutedEventArgs e)
+ {
+ if (!_isLoaded) return;
+ GetMainWindow()?.SetInterceptRule(FloatingWindowInterceptor.InterceptType.AiClassFloating, CardAiClassFloating.IsOn);
+ }
+
+ private void ToggleSwitchHiteAnnotationFloating_Toggled(object sender, RoutedEventArgs e)
+ {
+ if (!_isLoaded) return;
+ GetMainWindow()?.SetInterceptRule(FloatingWindowInterceptor.InterceptType.HiteAnnotationFloating, CardHiteAnnotationFloating.IsOn);
+ }
+
+ private void ToggleSwitchChangYanFloating_Toggled(object sender, RoutedEventArgs e)
+ {
+ if (!_isLoaded) return;
+ GetMainWindow()?.SetInterceptRule(FloatingWindowInterceptor.InterceptType.ChangYanFloating, CardChangYanFloating.IsOn);
+ }
+
+ private void ToggleSwitchChangYanPptFloating_Toggled(object sender, RoutedEventArgs e)
+ {
+ if (!_isLoaded) return;
+ GetMainWindow()?.SetInterceptRule(FloatingWindowInterceptor.InterceptType.ChangYanPptFloating, CardChangYanPptFloating.IsOn);
+ }
+
+ private void ToggleSwitchIntelligentClassFloating_Toggled(object sender, RoutedEventArgs e)
+ {
+ if (!_isLoaded) return;
+ GetMainWindow()?.SetInterceptRule(FloatingWindowInterceptor.InterceptType.IntelligentClassFloating, CardIntelligentClassFloating.IsOn);
+ }
+
+ private void ToggleSwitchSeewoDesktopAnnotationFloating_Toggled(object sender, RoutedEventArgs e)
+ {
+ if (!_isLoaded) return;
+ GetMainWindow()?.SetInterceptRule(FloatingWindowInterceptor.InterceptType.SeewoDesktopAnnotationFloating, CardSeewoDesktopAnnotationFloating.IsOn);
+ }
+
+ private void ToggleSwitchSeewoDesktopSideBarFloating_Toggled(object sender, RoutedEventArgs e)
+ {
+ if (!_isLoaded) return;
+ GetMainWindow()?.SetInterceptRule(FloatingWindowInterceptor.InterceptType.SeewoDesktopSideBarFloating, CardSeewoDesktopSideBarFloating.IsOn);
+ }
+
+ #endregion
+
+ #region File Association
+
+ private void BtnRegisterFileAssociation_Click(object sender, RoutedEventArgs e)
+ {
+ try
+ {
+ bool success = FileAssociationManager.RegisterFileAssociation();
+ UpdateFileAssociationStatus();
+ var mw = GetMainWindow();
+ if (mw != null)
+ mw.ShowNotification(success ? "文件关联注册成功" : "文件关联注册失败");
+ }
+ catch (Exception ex)
+ {
+ LogHelper.WriteLogToFile($"注册文件关联失败: {ex.Message}", LogHelper.LogType.Error);
+ UpdateFileAssociationStatus();
+ }
+ }
+
+ private void BtnUnregisterFileAssociation_Click(object sender, RoutedEventArgs e)
+ {
+ try
+ {
+ bool success = FileAssociationManager.UnregisterFileAssociation();
+ UpdateFileAssociationStatus();
+ var mw = GetMainWindow();
+ if (mw != null)
+ mw.ShowNotification(success ? "文件关联已取消" : "取消文件关联失败");
+ }
+ catch (Exception ex)
+ {
+ LogHelper.WriteLogToFile($"取消文件关联失败: {ex.Message}", LogHelper.LogType.Error);
+ UpdateFileAssociationStatus();
+ }
+ }
+
+ private void BtnCheckFileAssociation_Click(object sender, RoutedEventArgs e)
+ {
+ UpdateFileAssociationStatus();
+ }
+
+ private void UpdateFileAssociationStatus()
+ {
+ try
+ {
+ bool isRegistered = FileAssociationManager.IsFileAssociationRegistered();
+ if (isRegistered)
+ {
+ TextBlockFileAssociationStatus.Text = "✓ .icstk文件关联已注册";
+ TextBlockFileAssociationStatus.Foreground = new System.Windows.Media.SolidColorBrush(System.Windows.Media.Colors.LightGreen);
+ }
+ else
+ {
+ TextBlockFileAssociationStatus.Text = "✗ .icstk文件关联未注册";
+ TextBlockFileAssociationStatus.Foreground = new System.Windows.Media.SolidColorBrush(System.Windows.Media.Colors.LightCoral);
+ }
+ }
+ catch (Exception ex)
+ {
+ TextBlockFileAssociationStatus.Text = "✗ 检查文件关联状态时出错";
+ TextBlockFileAssociationStatus.Foreground = new System.Windows.Media.SolidColorBrush(System.Windows.Media.Colors.LightCoral);
+ LogHelper.WriteLogToFile($"检查文件关联状态失败: {ex.Message}", LogHelper.LogType.Error);
+ }
+ }
+
+ #endregion
+ }
+}
diff --git a/Ink Canvas/Windows/SettingsViews/Pages/CanvasPage.xaml.cs b/Ink Canvas/Windows/SettingsViews/Pages/CanvasPage.xaml.cs
index ad80969c..2defba7c 100644
--- a/Ink Canvas/Windows/SettingsViews/Pages/CanvasPage.xaml.cs
+++ b/Ink Canvas/Windows/SettingsViews/Pages/CanvasPage.xaml.cs
@@ -119,6 +119,9 @@ namespace Ink_Canvas.Windows.SettingsViews.Pages
{
SettingsManager.Settings.Canvas.DisablePressure = false;
CardDisablePressure.IsOn = false;
+ var mw = Application.Current.MainWindow as MainWindow;
+ if (mw != null && mw.inkCanvas != null)
+ mw.inkCanvas.DefaultDrawingAttributes.IgnorePressure = false;
}
SettingsManager.SaveSettingsToFile();
}
@@ -133,6 +136,9 @@ namespace Ink_Canvas.Windows.SettingsViews.Pages
CardEnablePressureTouchMode.IsOn = false;
}
SettingsManager.SaveSettingsToFile();
+ var mw = Application.Current.MainWindow as MainWindow;
+ if (mw != null && mw.inkCanvas != null)
+ mw.inkCanvas.DefaultDrawingAttributes.IgnorePressure = CardDisablePressure.IsOn;
}
private void ComboBoxEraserSize_SelectionChanged(object sender, SelectionChangedEventArgs e)
@@ -140,6 +146,14 @@ namespace Ink_Canvas.Windows.SettingsViews.Pages
if (!_isLoaded) return;
SettingsManager.Settings.Canvas.EraserSize = ComboBoxEraserSize.SelectedIndex;
SettingsManager.SaveSettingsToFile();
+ var mw = Application.Current.MainWindow as MainWindow;
+ if (mw != null)
+ {
+ if (mw.ComboBoxEraserSizeFloatingBar != null)
+ mw.ComboBoxEraserSizeFloatingBar.SelectedIndex = ComboBoxEraserSize.SelectedIndex;
+ if (mw.BoardComboBoxEraserSize != null)
+ mw.BoardComboBoxEraserSize.SelectedIndex = ComboBoxEraserSize.SelectedIndex;
+ }
}
private void ToggleSwitchHideStrokeWhenSelecting_Toggled(object sender, RoutedEventArgs e)
@@ -221,6 +235,15 @@ namespace Ink_Canvas.Windows.SettingsViews.Pages
SettingsManager.Settings.Canvas.EnableInkFade = ToggleSwitchEnableInkFade.IsOn;
ExpanderEnableInkFade.IsExpanded = ToggleSwitchEnableInkFade.IsOn;
SettingsManager.SaveSettingsToFile();
+ var mw = Application.Current.MainWindow as MainWindow;
+ if (mw != null)
+ {
+ mw.UpdateInkFadeManager(ToggleSwitchEnableInkFade.IsOn, SettingsManager.Settings.Canvas.InkFadeTime);
+ if (mw.ToggleSwitchInkFadeInPanel != null)
+ mw.ToggleSwitchInkFadeInPanel.IsOn = ToggleSwitchEnableInkFade.IsOn;
+ if (mw.ToggleSwitchInkFadeInPanel2 != null)
+ mw.ToggleSwitchInkFadeInPanel2.IsOn = ToggleSwitchEnableInkFade.IsOn;
+ }
}
private void InkFadeTimeSlider_ValueChanged(object sender, RoutedPropertyChangedEventArgs e)
@@ -228,6 +251,11 @@ namespace Ink_Canvas.Windows.SettingsViews.Pages
if (!_isLoaded) return;
SettingsManager.Settings.Canvas.InkFadeTime = (int)e.NewValue;
SettingsManager.SaveSettingsToFile();
+ var mw = Application.Current.MainWindow as MainWindow;
+ if (mw != null && SettingsManager.Settings.Canvas.EnableInkFade)
+ {
+ mw.UpdateInkFadeManager(true, (int)e.NewValue);
+ }
}
private void ToggleSwitchHideInkFadeControlInPenMenu_Toggled(object sender, RoutedEventArgs e)
diff --git a/Ink Canvas/Windows/SettingsViews/Pages/InkRecognitionPage.xaml.cs b/Ink Canvas/Windows/SettingsViews/Pages/InkRecognitionPage.xaml.cs
index e4e0f85b..6990141c 100644
--- a/Ink Canvas/Windows/SettingsViews/Pages/InkRecognitionPage.xaml.cs
+++ b/Ink Canvas/Windows/SettingsViews/Pages/InkRecognitionPage.xaml.cs
@@ -70,6 +70,14 @@ namespace Ink_Canvas.Windows.SettingsViews.Pages
if (!_isLoaded) return;
SettingsManager.Settings.InkToShape.IsInkToShapeEnabled = CardEnableInkToShape.IsOn;
SettingsManager.SaveSettingsToFile();
+ var mw = Application.Current.MainWindow as MainWindow;
+ if (mw != null)
+ {
+ if (mw.FloatingBarToggleSwitchEnableInkToShape != null)
+ mw.FloatingBarToggleSwitchEnableInkToShape.IsOn = CardEnableInkToShape.IsOn;
+ if (mw.BoardToggleSwitchEnableInkToShape != null)
+ mw.BoardToggleSwitchEnableInkToShape.IsOn = CardEnableInkToShape.IsOn;
+ }
}
private void ComboBoxShapeRecognitionEngine_SelectionChanged(object sender, SelectionChangedEventArgs e)
diff --git a/Ink Canvas/Windows/SettingsViews/Pages/PowerPointPage.xaml b/Ink Canvas/Windows/SettingsViews/Pages/PowerPointPage.xaml
new file mode 100644
index 00000000..fa985f08
--- /dev/null
+++ b/Ink Canvas/Windows/SettingsViews/Pages/PowerPointPage.xaml
@@ -0,0 +1,278 @@
+
+
+
+
+
+ 4
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Ink Canvas/Windows/SettingsViews/Pages/PowerPointPage.xaml.cs b/Ink Canvas/Windows/SettingsViews/Pages/PowerPointPage.xaml.cs
new file mode 100644
index 00000000..45b333f4
--- /dev/null
+++ b/Ink Canvas/Windows/SettingsViews/Pages/PowerPointPage.xaml.cs
@@ -0,0 +1,700 @@
+using Ink_Canvas.Helpers;
+using Ink_Canvas.Windows.SettingsViews.Helpers;
+using System;
+using System.Windows;
+using System.Windows.Controls;
+using Page = iNKORE.UI.WPF.Modern.Controls.Page;
+
+namespace Ink_Canvas.Windows.SettingsViews.Pages
+{
+ public partial class PowerPointPage : Page
+ {
+ private bool _isLoaded = false;
+ private DelayAction _sliderDelayAction = new DelayAction();
+
+ public PowerPointPage()
+ {
+ InitializeComponent();
+ Loaded += PowerPointPage_Loaded;
+ Unloaded += PowerPointPage_Unloaded;
+ }
+
+ private void PowerPointPage_Loaded(object sender, RoutedEventArgs e)
+ {
+ LoadSettings();
+ _isLoaded = true;
+ }
+
+ private void PowerPointPage_Unloaded(object sender, RoutedEventArgs e)
+ {
+ _isLoaded = false;
+ }
+
+ private MainWindow GetMainWindow() => Application.Current.MainWindow as MainWindow;
+
+ private void LoadSettings()
+ {
+ _isLoaded = false;
+ var ppt = SettingsManager.Settings.PowerPointSettings;
+
+ CardSupportPowerPoint.IsOn = ppt.PowerPointSupport;
+ CardPowerPointEnhancement.IsOn = ppt.EnablePowerPointEnhancement;
+ CardSkipAnimationsWhenGoNext.IsOn = ppt.SkipAnimationsWhenGoNext;
+ CardUseRotPptLink.IsOn = ppt.UseRotPptLink;
+ CardSupportWPS.IsOn = ppt.IsSupportWPS;
+ CardEnableWppProcessKill.IsOn = ppt.EnableWppProcessKill;
+
+ CardShowPPTButton.IsOn = ppt.ShowPPTButton;
+ var displayOpt = ppt.PPTButtonsDisplayOption.ToString();
+ CheckboxEnableLBPPTButton.IsChecked = displayOpt.Length > 0 && displayOpt[0] == '2';
+ CheckboxEnableRBPPTButton.IsChecked = displayOpt.Length > 1 && displayOpt[1] == '2';
+ CheckboxEnableLSPPTButton.IsChecked = displayOpt.Length > 2 && displayOpt[2] == '2';
+ CheckboxEnableRSPPTButton.IsChecked = displayOpt.Length > 3 && displayOpt[3] == '2';
+
+ PPTButtonLeftPositionValueSlider.Value = ppt.PPTLSButtonPosition;
+ PPTButtonRightPositionValueSlider.Value = ppt.PPTRSButtonPosition;
+ PPTButtonLBPositionValueSlider.Value = ppt.PPTLBButtonPosition;
+ PPTButtonRBPositionValueSlider.Value = ppt.PPTRBButtonPosition;
+
+ PPTLSButtonOpacityValueSlider.Value = ppt.PPTLSButtonOpacity;
+ PPTRSButtonOpacityValueSlider.Value = ppt.PPTRSButtonOpacity;
+ PPTLBButtonOpacityValueSlider.Value = ppt.PPTLBButtonOpacity;
+ PPTRBButtonOpacityValueSlider.Value = ppt.PPTRBButtonOpacity;
+
+ var sOpt = ppt.PPTSButtonsOption.ToString();
+ CheckboxSPPTDisplayPage.IsChecked = sOpt.Length > 0 && sOpt[0] == '2';
+ CheckboxSPPTHalfOpacity.IsChecked = sOpt.Length > 1 && sOpt[1] == '2';
+ CheckboxSPPTBlackBackground.IsChecked = sOpt.Length > 2 && sOpt[2] == '2';
+
+ var bOpt = ppt.PPTBButtonsOption.ToString();
+ CheckboxBPPTDisplayPage.IsChecked = bOpt.Length > 0 && bOpt[0] == '2';
+ CheckboxBPPTHalfOpacity.IsChecked = bOpt.Length > 1 && bOpt[1] == '2';
+ CheckboxBPPTBlackBackground.IsChecked = bOpt.Length > 2 && bOpt[2] == '2';
+
+ CardEnablePPTButtonPageClickable.IsOn = ppt.EnablePPTButtonPageClickable;
+ CardEnablePPTButtonLongPressPageTurn.IsOn = ppt.EnablePPTButtonLongPressPageTurn;
+
+ CardShowCanvasAtNewSlideShow.IsOn = ppt.IsShowCanvasAtNewSlideShow;
+
+ CardEnableTwoFingerGestureInPresentationMode.IsOn = ppt.IsEnableTwoFingerGestureInPresentationMode;
+ CardEnableFingerGestureSlideShowControl.IsOn = ppt.IsEnableFingerGestureSlideShowControl;
+ CardShowGestureButtonInSlideShow.IsOn = ppt.ShowGestureButtonInSlideShow;
+ CardEnablePPTTimeCapsule.IsOn = ppt.EnablePPTTimeCapsule;
+ ComboBoxPPTTimeCapsulePosition.SelectedIndex = ppt.PPTTimeCapsulePosition;
+ CardShowPPTSidebarByDefault.IsOn = ppt.ShowPPTSidebarByDefault;
+
+ CardAutoSaveScreenShotInPowerPoint.IsOn = ppt.IsAutoSaveScreenShotInPowerPoint;
+ CardAutoSaveStrokesInPowerPoint.IsOn = ppt.IsAutoSaveStrokesInPowerPoint;
+
+ CardNotifyPreviousPage.IsOn = ppt.IsNotifyPreviousPage;
+ CardAlwaysGoToFirstPageOnReenter.IsOn = ppt.IsAlwaysGoToFirstPageOnReenter;
+ CardNotifyHiddenPage.IsOn = ppt.IsNotifyHiddenPage;
+ CardNotifyAutoPlayPresentation.IsOn = ppt.IsNotifyAutoPlayPresentation;
+
+ _isLoaded = true;
+ }
+
+ #region PPT Basic
+
+ private void ToggleSwitchSupportPowerPoint_Toggled(object sender, RoutedEventArgs e)
+ {
+ if (!_isLoaded) return;
+ var mw = GetMainWindow();
+ var ppt = SettingsManager.Settings.PowerPointSettings;
+ ppt.PowerPointSupport = CardSupportPowerPoint.IsOn;
+ if (!ppt.PowerPointSupport && ppt.IsSupportWPS)
+ {
+ ppt.IsSupportWPS = false;
+ CardSupportWPS.IsOn = false;
+ if (mw?.PPTManager != null) mw.PPTManager.IsSupportWPS = false;
+ }
+ SettingsManager.SaveSettingsToFile();
+ if (mw != null)
+ {
+ if (ppt.PowerPointSupport)
+ {
+ if (mw.PPTManager == null) mw.InitializePPTManagers();
+ mw.StartPPTMonitoring();
+ }
+ else mw.StopPPTMonitoring();
+ }
+ }
+
+ private void ToggleSwitchPowerPointEnhancement_Toggled(object sender, RoutedEventArgs e)
+ {
+ if (!_isLoaded) return;
+ var mw = GetMainWindow();
+ var ppt = SettingsManager.Settings.PowerPointSettings;
+ ppt.EnablePowerPointEnhancement = CardPowerPointEnhancement.IsOn;
+ if (ppt.EnablePowerPointEnhancement)
+ {
+ ppt.IsSupportWPS = false;
+ CardSupportWPS.IsOn = false;
+ if (mw?.PPTManager != null) mw.PPTManager.IsSupportWPS = false;
+ }
+ SettingsManager.SaveSettingsToFile();
+ if (mw != null)
+ {
+ if (ppt.EnablePowerPointEnhancement)
+ mw.StartPowerPointProcessMonitoring();
+ else
+ mw.StopPowerPointProcessMonitoring();
+ }
+ }
+
+ private void ToggleSwitchSkipAnimationsWhenGoNext_Toggled(object sender, RoutedEventArgs e)
+ {
+ if (!_isLoaded) return;
+ var mw = GetMainWindow();
+ SettingsManager.Settings.PowerPointSettings.SkipAnimationsWhenGoNext = CardSkipAnimationsWhenGoNext.IsOn;
+ if (mw?.PPTManager != null)
+ mw.PPTManager.SkipAnimationsWhenNavigating = CardSkipAnimationsWhenGoNext.IsOn;
+ SettingsManager.SaveSettingsToFile();
+ }
+
+ private void ToggleSwitchUseRotPptLink_Toggled(object sender, RoutedEventArgs e)
+ {
+ if (!_isLoaded) return;
+ var mw = GetMainWindow();
+ var ppt = SettingsManager.Settings.PowerPointSettings;
+ ppt.UseRotPptLink = CardUseRotPptLink.IsOn;
+ SettingsManager.SaveSettingsToFile();
+ try
+ {
+ if (mw != null)
+ {
+ mw.StopPPTMonitoring();
+ if (ppt.UseRotPptLink && ppt.EnablePowerPointEnhancement)
+ {
+ ppt.EnablePowerPointEnhancement = false;
+ CardPowerPointEnhancement.IsOn = false;
+ mw.StopPowerPointProcessMonitoring();
+ SettingsManager.SaveSettingsToFile();
+ }
+ mw.InitializePPTManagers();
+ if (ppt.PowerPointSupport) mw.StartPPTMonitoring();
+ LogHelper.WriteLogToFile($"已切换 PPT 联动架构为 {(ppt.UseRotPptLink ? "ROT" : "COM")}", LogHelper.LogType.Event);
+ }
+ }
+ catch (Exception ex) { LogHelper.WriteLogToFile($"切换 PPT 联动架构失败: {ex}", LogHelper.LogType.Error); }
+ }
+
+ private void ToggleSwitchSupportWPS_Toggled(object sender, RoutedEventArgs e)
+ {
+ if (!_isLoaded) return;
+ var mw = GetMainWindow();
+ var ppt = SettingsManager.Settings.PowerPointSettings;
+ ppt.IsSupportWPS = CardSupportWPS.IsOn;
+ if (ppt.IsSupportWPS)
+ {
+ if (!ppt.PowerPointSupport)
+ {
+ ppt.PowerPointSupport = true;
+ CardSupportPowerPoint.IsOn = true;
+ if (mw != null)
+ {
+ if (mw.PPTManager == null) mw.InitializePPTManagers();
+ mw.StartPPTMonitoring();
+ }
+ }
+ if (ppt.EnablePowerPointEnhancement)
+ {
+ ppt.EnablePowerPointEnhancement = false;
+ CardPowerPointEnhancement.IsOn = false;
+ mw?.StopPowerPointProcessMonitoring();
+ }
+ }
+ if (mw?.PPTManager != null)
+ {
+ mw.PPTManager.IsSupportWPS = ppt.IsSupportWPS;
+ mw.PPTManager.SkipAnimationsWhenNavigating = ppt.SkipAnimationsWhenGoNext;
+ }
+ SettingsManager.SaveSettingsToFile();
+ }
+
+ private void ToggleSwitchEnableWppProcessKill_Toggled(object sender, RoutedEventArgs e)
+ {
+ if (!_isLoaded) return;
+ SettingsManager.Settings.PowerPointSettings.EnableWppProcessKill = CardEnableWppProcessKill.IsOn;
+ SettingsManager.SaveSettingsToFile();
+ }
+
+ #endregion
+
+ #region PPT Flip Buttons
+
+ private void ToggleSwitchShowPPTButton_OnToggled(object sender, RoutedEventArgs e)
+ {
+ if (!_isLoaded) return;
+ var mw = GetMainWindow();
+ SettingsManager.Settings.PowerPointSettings.ShowPPTButton = CardShowPPTButton.IsOn;
+ SettingsManager.SaveSettingsToFile();
+ if (mw?.PPTUIManager != null)
+ {
+ mw.PPTUIManager.ShowPPTButton = CardShowPPTButton.IsOn;
+ mw.PPTUIManager.UpdateNavigationPanelsVisibility();
+ }
+ mw?.UpdatePPTBtnPreview();
+ }
+
+ private void ToggleSwitchShowPPTSidebarByDefault_Toggled(object sender, RoutedEventArgs e)
+ {
+ if (!_isLoaded) return;
+ var mw = GetMainWindow();
+ SettingsManager.Settings.PowerPointSettings.ShowPPTSidebarByDefault = CardShowPPTSidebarByDefault.IsOn;
+ SettingsManager.SaveSettingsToFile();
+ if (mw != null && mw.BtnPPTSlideShowEnd?.Visibility == Visibility.Visible)
+ mw.UpdatePPTQuickPanelVisibility();
+ }
+
+ private void ToggleSwitchEnablePPTButtonPageClickable_OnToggled(object sender, RoutedEventArgs e)
+ {
+ if (!_isLoaded) return;
+ SettingsManager.Settings.PowerPointSettings.EnablePPTButtonPageClickable = CardEnablePPTButtonPageClickable.IsOn;
+ SettingsManager.SaveSettingsToFile();
+ }
+
+ private void ToggleSwitchEnablePPTButtonLongPressPageTurn_OnToggled(object sender, RoutedEventArgs e)
+ {
+ if (!_isLoaded) return;
+ SettingsManager.Settings.PowerPointSettings.EnablePPTButtonLongPressPageTurn = CardEnablePPTButtonLongPressPageTurn.IsOn;
+ SettingsManager.SaveSettingsToFile();
+ }
+
+ #endregion
+
+ #region PPT Button Position & Opacity Sliders
+
+ private void PPTButtonLeftPositionValueSlider_ValueChanged(object sender, RoutedEventArgs e)
+ {
+ if (!_isLoaded) return;
+ var mw = GetMainWindow();
+ SettingsManager.Settings.PowerPointSettings.PPTLSButtonPosition = (int)PPTButtonLeftPositionValueSlider.Value;
+ mw?.UpdatePPTBtnSlidersStatus();
+ mw?.UpdatePPTUIManagerSettings();
+ _sliderDelayAction.DebounceAction(2000, null, () => SettingsManager.SaveSettingsToFile());
+ mw?.UpdatePPTBtnPreview();
+ }
+
+ private void PPTButtonRightPositionValueSlider_ValueChanged(object sender, RoutedEventArgs e)
+ {
+ if (!_isLoaded) return;
+ var mw = GetMainWindow();
+ SettingsManager.Settings.PowerPointSettings.PPTRSButtonPosition = (int)PPTButtonRightPositionValueSlider.Value;
+ mw?.UpdatePPTBtnSlidersStatus();
+ mw?.UpdatePPTUIManagerSettings();
+ _sliderDelayAction.DebounceAction(2000, null, () => SettingsManager.SaveSettingsToFile());
+ mw?.UpdatePPTBtnPreview();
+ }
+
+ private void PPTButtonLBPositionValueSlider_ValueChanged(object sender, RoutedEventArgs e)
+ {
+ if (!_isLoaded) return;
+ var mw = GetMainWindow();
+ SettingsManager.Settings.PowerPointSettings.PPTLBButtonPosition = (int)PPTButtonLBPositionValueSlider.Value;
+ mw?.UpdatePPTBtnSlidersStatus();
+ mw?.UpdatePPTUIManagerSettings();
+ _sliderDelayAction.DebounceAction(2000, null, () => SettingsManager.SaveSettingsToFile());
+ mw?.UpdatePPTBtnPreview();
+ }
+
+ private void PPTButtonRBPositionValueSlider_ValueChanged(object sender, RoutedEventArgs e)
+ {
+ if (!_isLoaded) return;
+ var mw = GetMainWindow();
+ SettingsManager.Settings.PowerPointSettings.PPTRBButtonPosition = (int)PPTButtonRBPositionValueSlider.Value;
+ mw?.UpdatePPTBtnSlidersStatus();
+ mw?.UpdatePPTUIManagerSettings();
+ _sliderDelayAction.DebounceAction(2000, null, () => SettingsManager.SaveSettingsToFile());
+ mw?.UpdatePPTBtnPreview();
+ }
+
+ private void PPTLSButtonOpacityValueSlider_ValueChanged(object sender, RoutedEventArgs e)
+ {
+ if (!_isLoaded) return;
+ double roundedValue = Math.Round(PPTLSButtonOpacityValueSlider.Value, 1);
+ PPTLSButtonOpacityValueSlider.ValueChanged -= PPTLSButtonOpacityValueSlider_ValueChanged;
+ PPTLSButtonOpacityValueSlider.Value = roundedValue;
+ PPTLSButtonOpacityValueSlider.ValueChanged += PPTLSButtonOpacityValueSlider_ValueChanged;
+ SettingsManager.Settings.PowerPointSettings.PPTLSButtonOpacity = roundedValue;
+ SettingsManager.SaveSettingsToFile();
+ var mw = GetMainWindow();
+ if (mw?.PPTUIManager != null)
+ {
+ mw.PPTUIManager.PPTLSButtonOpacity = roundedValue;
+ mw.PPTUIManager.UpdateNavigationButtonStyles();
+ }
+ mw?.UpdatePPTBtnPreview();
+ }
+
+ private void PPTRSButtonOpacityValueSlider_ValueChanged(object sender, RoutedEventArgs e)
+ {
+ if (!_isLoaded) return;
+ double roundedValue = Math.Round(PPTRSButtonOpacityValueSlider.Value, 1);
+ PPTRSButtonOpacityValueSlider.ValueChanged -= PPTRSButtonOpacityValueSlider_ValueChanged;
+ PPTRSButtonOpacityValueSlider.Value = roundedValue;
+ PPTRSButtonOpacityValueSlider.ValueChanged += PPTRSButtonOpacityValueSlider_ValueChanged;
+ SettingsManager.Settings.PowerPointSettings.PPTRSButtonOpacity = roundedValue;
+ SettingsManager.SaveSettingsToFile();
+ var mw = GetMainWindow();
+ if (mw?.PPTUIManager != null)
+ {
+ mw.PPTUIManager.PPTRSButtonOpacity = roundedValue;
+ mw.PPTUIManager.UpdateNavigationButtonStyles();
+ }
+ mw?.UpdatePPTBtnPreview();
+ }
+
+ private void PPTLBButtonOpacityValueSlider_ValueChanged(object sender, RoutedEventArgs e)
+ {
+ if (!_isLoaded) return;
+ double roundedValue = Math.Round(PPTLBButtonOpacityValueSlider.Value, 1);
+ PPTLBButtonOpacityValueSlider.ValueChanged -= PPTLBButtonOpacityValueSlider_ValueChanged;
+ PPTLBButtonOpacityValueSlider.Value = roundedValue;
+ PPTLBButtonOpacityValueSlider.ValueChanged += PPTLBButtonOpacityValueSlider_ValueChanged;
+ SettingsManager.Settings.PowerPointSettings.PPTLBButtonOpacity = roundedValue;
+ SettingsManager.SaveSettingsToFile();
+ var mw = GetMainWindow();
+ if (mw?.PPTUIManager != null)
+ {
+ mw.PPTUIManager.PPTLBButtonOpacity = roundedValue;
+ mw.PPTUIManager.UpdateNavigationButtonStyles();
+ }
+ mw?.UpdatePPTBtnPreview();
+ }
+
+ private void PPTRBButtonOpacityValueSlider_ValueChanged(object sender, RoutedEventArgs e)
+ {
+ if (!_isLoaded) return;
+ double roundedValue = Math.Round(PPTRBButtonOpacityValueSlider.Value, 1);
+ PPTRBButtonOpacityValueSlider.ValueChanged -= PPTRBButtonOpacityValueSlider_ValueChanged;
+ PPTRBButtonOpacityValueSlider.Value = roundedValue;
+ PPTRBButtonOpacityValueSlider.ValueChanged += PPTRBButtonOpacityValueSlider_ValueChanged;
+ SettingsManager.Settings.PowerPointSettings.PPTRBButtonOpacity = roundedValue;
+ SettingsManager.SaveSettingsToFile();
+ var mw = GetMainWindow();
+ if (mw?.PPTUIManager != null)
+ {
+ mw.PPTUIManager.PPTRBButtonOpacity = roundedValue;
+ mw.PPTUIManager.UpdateNavigationButtonStyles();
+ }
+ mw?.UpdatePPTBtnPreview();
+ }
+
+ #endregion
+
+ #region PPT Button Display Checkboxes
+
+ private void CheckboxEnableLBPPTButton_IsCheckChanged(object sender, RoutedEventArgs e)
+ {
+ if (!_isLoaded) return;
+ var mw = GetMainWindow();
+ var str = SettingsManager.Settings.PowerPointSettings.PPTButtonsDisplayOption.ToString();
+ char[] c = str.ToCharArray();
+ c[0] = CheckboxEnableLBPPTButton.IsChecked == true ? '2' : '1';
+ SettingsManager.Settings.PowerPointSettings.PPTButtonsDisplayOption = int.Parse(new string(c));
+ SettingsManager.SaveSettingsToFile();
+ if (mw?.PPTUIManager != null && mw.BtnPPTSlideShowEnd.Visibility == Visibility.Visible)
+ {
+ mw.PPTUIManager.PPTButtonsDisplayOption = SettingsManager.Settings.PowerPointSettings.PPTButtonsDisplayOption;
+ mw.PPTUIManager.UpdateNavigationPanelsVisibility();
+ }
+ mw?.UpdatePPTBtnPreview();
+ }
+
+ private void CheckboxEnableRBPPTButton_IsCheckChanged(object sender, RoutedEventArgs e)
+ {
+ if (!_isLoaded) return;
+ var mw = GetMainWindow();
+ var str = SettingsManager.Settings.PowerPointSettings.PPTButtonsDisplayOption.ToString();
+ char[] c = str.ToCharArray();
+ c[1] = CheckboxEnableRBPPTButton.IsChecked == true ? '2' : '1';
+ SettingsManager.Settings.PowerPointSettings.PPTButtonsDisplayOption = int.Parse(new string(c));
+ SettingsManager.SaveSettingsToFile();
+ if (mw?.PPTUIManager != null && mw.BtnPPTSlideShowEnd.Visibility == Visibility.Visible)
+ {
+ mw.PPTUIManager.PPTButtonsDisplayOption = SettingsManager.Settings.PowerPointSettings.PPTButtonsDisplayOption;
+ mw.PPTUIManager.UpdateNavigationPanelsVisibility();
+ }
+ mw?.UpdatePPTBtnPreview();
+ }
+
+ private void CheckboxEnableLSPPTButton_IsCheckChanged(object sender, RoutedEventArgs e)
+ {
+ if (!_isLoaded) return;
+ var mw = GetMainWindow();
+ var str = SettingsManager.Settings.PowerPointSettings.PPTButtonsDisplayOption.ToString();
+ char[] c = str.ToCharArray();
+ c[2] = CheckboxEnableLSPPTButton.IsChecked == true ? '2' : '1';
+ SettingsManager.Settings.PowerPointSettings.PPTButtonsDisplayOption = int.Parse(new string(c));
+ SettingsManager.SaveSettingsToFile();
+ if (mw?.PPTUIManager != null && mw.BtnPPTSlideShowEnd.Visibility == Visibility.Visible)
+ {
+ mw.PPTUIManager.PPTButtonsDisplayOption = SettingsManager.Settings.PowerPointSettings.PPTButtonsDisplayOption;
+ mw.PPTUIManager.UpdateNavigationPanelsVisibility();
+ }
+ mw?.UpdatePPTBtnPreview();
+ }
+
+ private void CheckboxEnableRSPPTButton_IsCheckChanged(object sender, RoutedEventArgs e)
+ {
+ if (!_isLoaded) return;
+ var mw = GetMainWindow();
+ var str = SettingsManager.Settings.PowerPointSettings.PPTButtonsDisplayOption.ToString();
+ char[] c = str.ToCharArray();
+ c[3] = CheckboxEnableRSPPTButton.IsChecked == true ? '2' : '1';
+ SettingsManager.Settings.PowerPointSettings.PPTButtonsDisplayOption = int.Parse(new string(c));
+ SettingsManager.SaveSettingsToFile();
+ if (mw?.PPTUIManager != null && mw.BtnPPTSlideShowEnd.Visibility == Visibility.Visible)
+ {
+ mw.PPTUIManager.PPTButtonsDisplayOption = SettingsManager.Settings.PowerPointSettings.PPTButtonsDisplayOption;
+ mw.PPTUIManager.UpdateNavigationPanelsVisibility();
+ }
+ mw?.UpdatePPTBtnPreview();
+ }
+
+ private void CheckboxSPPTDisplayPage_IsCheckChange(object sender, RoutedEventArgs e)
+ {
+ if (!_isLoaded) return;
+ var mw = GetMainWindow();
+ var str = SettingsManager.Settings.PowerPointSettings.PPTSButtonsOption.ToString();
+ char[] c = str.ToCharArray();
+ c[0] = CheckboxSPPTDisplayPage.IsChecked == true ? '2' : '1';
+ SettingsManager.Settings.PowerPointSettings.PPTSButtonsOption = int.Parse(new string(c));
+ SettingsManager.SaveSettingsToFile();
+ if (mw?.PPTUIManager != null && mw.BtnPPTSlideShowEnd.Visibility == Visibility.Visible)
+ {
+ mw.PPTUIManager.PPTSButtonsOption = SettingsManager.Settings.PowerPointSettings.PPTSButtonsOption;
+ mw.PPTUIManager.UpdateNavigationButtonStyles();
+ }
+ mw?.UpdatePPTBtnPreview();
+ }
+
+ private void CheckboxSPPTHalfOpacity_IsCheckChange(object sender, RoutedEventArgs e)
+ {
+ if (!_isLoaded) return;
+ var mw = GetMainWindow();
+ var ppt = SettingsManager.Settings.PowerPointSettings;
+ var str = ppt.PPTSButtonsOption.ToString();
+ char[] c = str.ToCharArray();
+ bool isHalf = CheckboxSPPTHalfOpacity.IsChecked == true;
+ c[1] = isHalf ? '2' : '1';
+ ppt.PPTSButtonsOption = int.Parse(new string(c));
+ if (isHalf)
+ {
+ if (ppt.PPTLSButtonOpacity == 1.0) ppt.PPTLSButtonOpacity = 0.5;
+ if (ppt.PPTRSButtonOpacity == 1.0) ppt.PPTRSButtonOpacity = 0.5;
+ PPTLSButtonOpacityValueSlider.Value = ppt.PPTLSButtonOpacity;
+ PPTRSButtonOpacityValueSlider.Value = ppt.PPTRSButtonOpacity;
+ }
+ else
+ {
+ if (ppt.PPTLSButtonOpacity == 0.5) ppt.PPTLSButtonOpacity = 1.0;
+ if (ppt.PPTRSButtonOpacity == 0.5) ppt.PPTRSButtonOpacity = 1.0;
+ PPTLSButtonOpacityValueSlider.Value = ppt.PPTLSButtonOpacity;
+ PPTRSButtonOpacityValueSlider.Value = ppt.PPTRSButtonOpacity;
+ }
+ SettingsManager.SaveSettingsToFile();
+ if (mw?.PPTUIManager != null && mw.BtnPPTSlideShowEnd.Visibility == Visibility.Visible)
+ {
+ mw.PPTUIManager.PPTSButtonsOption = ppt.PPTSButtonsOption;
+ mw.PPTUIManager.PPTLSButtonOpacity = ppt.PPTLSButtonOpacity;
+ mw.PPTUIManager.PPTRSButtonOpacity = ppt.PPTRSButtonOpacity;
+ mw.PPTUIManager.UpdateNavigationButtonStyles();
+ }
+ mw?.UpdatePPTBtnPreview();
+ }
+
+ private void CheckboxSPPTBlackBackground_IsCheckChange(object sender, RoutedEventArgs e)
+ {
+ if (!_isLoaded) return;
+ var mw = GetMainWindow();
+ var str = SettingsManager.Settings.PowerPointSettings.PPTSButtonsOption.ToString();
+ char[] c = str.ToCharArray();
+ c[2] = CheckboxSPPTBlackBackground.IsChecked == true ? '2' : '1';
+ SettingsManager.Settings.PowerPointSettings.PPTSButtonsOption = int.Parse(new string(c));
+ SettingsManager.SaveSettingsToFile();
+ if (mw?.PPTUIManager != null && mw.BtnPPTSlideShowEnd.Visibility == Visibility.Visible)
+ {
+ mw.PPTUIManager.PPTSButtonsOption = SettingsManager.Settings.PowerPointSettings.PPTSButtonsOption;
+ mw.PPTUIManager.UpdateNavigationButtonStyles();
+ }
+ mw?.UpdatePPTBtnPreview();
+ }
+
+ private void CheckboxBPPTDisplayPage_IsCheckChange(object sender, RoutedEventArgs e)
+ {
+ if (!_isLoaded) return;
+ var mw = GetMainWindow();
+ var str = SettingsManager.Settings.PowerPointSettings.PPTBButtonsOption.ToString();
+ char[] c = str.ToCharArray();
+ c[0] = CheckboxBPPTDisplayPage.IsChecked == true ? '2' : '1';
+ SettingsManager.Settings.PowerPointSettings.PPTBButtonsOption = int.Parse(new string(c));
+ SettingsManager.SaveSettingsToFile();
+ if (mw?.PPTUIManager != null && mw.BtnPPTSlideShowEnd.Visibility == Visibility.Visible)
+ {
+ mw.PPTUIManager.PPTBButtonsOption = SettingsManager.Settings.PowerPointSettings.PPTBButtonsOption;
+ mw.PPTUIManager.UpdateNavigationButtonStyles();
+ }
+ mw?.UpdatePPTBtnPreview();
+ }
+
+ private void CheckboxBPPTHalfOpacity_IsCheckChange(object sender, RoutedEventArgs e)
+ {
+ if (!_isLoaded) return;
+ var mw = GetMainWindow();
+ var ppt = SettingsManager.Settings.PowerPointSettings;
+ var str = ppt.PPTBButtonsOption.ToString();
+ char[] c = str.ToCharArray();
+ bool isHalf = CheckboxBPPTHalfOpacity.IsChecked == true;
+ c[1] = isHalf ? '2' : '1';
+ ppt.PPTBButtonsOption = int.Parse(new string(c));
+ if (isHalf)
+ {
+ if (ppt.PPTLBButtonOpacity == 1.0) ppt.PPTLBButtonOpacity = 0.5;
+ if (ppt.PPTRBButtonOpacity == 1.0) ppt.PPTRBButtonOpacity = 0.5;
+ PPTLBButtonOpacityValueSlider.Value = ppt.PPTLBButtonOpacity;
+ PPTRBButtonOpacityValueSlider.Value = ppt.PPTRBButtonOpacity;
+ }
+ else
+ {
+ if (ppt.PPTLBButtonOpacity == 0.5) ppt.PPTLBButtonOpacity = 1.0;
+ if (ppt.PPTRBButtonOpacity == 0.5) ppt.PPTRBButtonOpacity = 1.0;
+ PPTLBButtonOpacityValueSlider.Value = ppt.PPTLBButtonOpacity;
+ PPTRBButtonOpacityValueSlider.Value = ppt.PPTRBButtonOpacity;
+ }
+ SettingsManager.SaveSettingsToFile();
+ if (mw?.PPTUIManager != null && mw.BtnPPTSlideShowEnd.Visibility == Visibility.Visible)
+ {
+ mw.PPTUIManager.PPTBButtonsOption = ppt.PPTBButtonsOption;
+ mw.PPTUIManager.PPTLBButtonOpacity = ppt.PPTLBButtonOpacity;
+ mw.PPTUIManager.PPTRBButtonOpacity = ppt.PPTRBButtonOpacity;
+ mw.PPTUIManager.UpdateNavigationButtonStyles();
+ }
+ mw?.UpdatePPTBtnPreview();
+ }
+
+ private void CheckboxBPPTBlackBackground_IsCheckChange(object sender, RoutedEventArgs e)
+ {
+ if (!_isLoaded) return;
+ var mw = GetMainWindow();
+ var str = SettingsManager.Settings.PowerPointSettings.PPTBButtonsOption.ToString();
+ char[] c = str.ToCharArray();
+ c[2] = CheckboxBPPTBlackBackground.IsChecked == true ? '2' : '1';
+ SettingsManager.Settings.PowerPointSettings.PPTBButtonsOption = int.Parse(new string(c));
+ SettingsManager.SaveSettingsToFile();
+ if (mw?.PPTUIManager != null && mw.BtnPPTSlideShowEnd.Visibility == Visibility.Visible)
+ {
+ mw.PPTUIManager.PPTBButtonsOption = SettingsManager.Settings.PowerPointSettings.PPTBButtonsOption;
+ mw.PPTUIManager.UpdateNavigationButtonStyles();
+ }
+ mw?.UpdatePPTBtnPreview();
+ }
+
+ #endregion
+
+ #region PPT SlideShow Entry & Gesture
+
+ private void ToggleSwitchShowCanvasAtNewSlideShow_Toggled(object sender, RoutedEventArgs e)
+ {
+ if (!_isLoaded) return;
+ SettingsManager.Settings.PowerPointSettings.IsShowCanvasAtNewSlideShow = CardShowCanvasAtNewSlideShow.IsOn;
+ SettingsManager.SaveSettingsToFile();
+ }
+
+ private void ToggleSwitchEnableTwoFingerGestureInPresentationMode_Toggled(object sender, RoutedEventArgs e)
+ {
+ if (!_isLoaded) return;
+ SettingsManager.Settings.PowerPointSettings.IsEnableTwoFingerGestureInPresentationMode = CardEnableTwoFingerGestureInPresentationMode.IsOn;
+ SettingsManager.SaveSettingsToFile();
+ }
+
+ private void ToggleSwitchEnableFingerGestureSlideShowControl_Toggled(object sender, RoutedEventArgs e)
+ {
+ if (!_isLoaded) return;
+ SettingsManager.Settings.PowerPointSettings.IsEnableFingerGestureSlideShowControl = CardEnableFingerGestureSlideShowControl.IsOn;
+ SettingsManager.SaveSettingsToFile();
+ }
+
+ private void ToggleSwitchShowGestureButtonInSlideShow_Toggled(object sender, RoutedEventArgs e)
+ {
+ if (!_isLoaded) return;
+ var mw = GetMainWindow();
+ SettingsManager.Settings.PowerPointSettings.ShowGestureButtonInSlideShow = CardShowGestureButtonInSlideShow.IsOn;
+ SettingsManager.SaveSettingsToFile();
+ if (mw != null && mw.BtnPPTSlideShowEnd.Visibility == Visibility.Visible)
+ mw.UpdateGestureButtonVisibilityInPPTMode();
+ }
+
+ private void ToggleSwitchEnablePPTTimeCapsule_Toggled(object sender, RoutedEventArgs e)
+ {
+ if (!_isLoaded) return;
+ var mw = GetMainWindow();
+ SettingsManager.Settings.PowerPointSettings.EnablePPTTimeCapsule = CardEnablePPTTimeCapsule.IsOn;
+ SettingsManager.SaveSettingsToFile();
+ if (mw != null && mw.BtnPPTSlideShowEnd.Visibility == Visibility.Visible)
+ {
+ mw.UpdatePPTTimeCapsuleVisibility();
+ mw.UpdatePPTQuickPanelVisibility();
+ }
+ }
+
+ private void ComboBoxPPTTimeCapsulePosition_SelectionChanged(object sender, SelectionChangedEventArgs e)
+ {
+ if (!_isLoaded || ComboBoxPPTTimeCapsulePosition == null) return;
+ var mw = GetMainWindow();
+ SettingsManager.Settings.PowerPointSettings.PPTTimeCapsulePosition = ComboBoxPPTTimeCapsulePosition.SelectedIndex;
+ SettingsManager.SaveSettingsToFile();
+ if (mw != null && mw.BtnPPTSlideShowEnd.Visibility == Visibility.Visible)
+ mw.UpdatePPTTimeCapsulePosition();
+ }
+
+ #endregion
+
+ #region PPT Auto Save & Notifications
+
+ private void ToggleSwitchAutoSaveScreenShotInPowerPoint_Toggled(object sender, RoutedEventArgs e)
+ {
+ if (!_isLoaded) return;
+ SettingsManager.Settings.PowerPointSettings.IsAutoSaveScreenShotInPowerPoint = CardAutoSaveScreenShotInPowerPoint.IsOn;
+ SettingsManager.SaveSettingsToFile();
+ }
+
+ private void ToggleSwitchAutoSaveStrokesInPowerPoint_Toggled(object sender, RoutedEventArgs e)
+ {
+ if (!_isLoaded) return;
+ SettingsManager.Settings.PowerPointSettings.IsAutoSaveStrokesInPowerPoint = CardAutoSaveStrokesInPowerPoint.IsOn;
+ SettingsManager.SaveSettingsToFile();
+ }
+
+ private void ToggleSwitchNotifyPreviousPage_Toggled(object sender, RoutedEventArgs e)
+ {
+ if (!_isLoaded) return;
+ SettingsManager.Settings.PowerPointSettings.IsNotifyPreviousPage = CardNotifyPreviousPage.IsOn;
+ SettingsManager.SaveSettingsToFile();
+ }
+
+ private void ToggleSwitchAlwaysGoToFirstPageOnReenter_Toggled(object sender, RoutedEventArgs e)
+ {
+ if (!_isLoaded) return;
+ SettingsManager.Settings.PowerPointSettings.IsAlwaysGoToFirstPageOnReenter = CardAlwaysGoToFirstPageOnReenter.IsOn;
+ SettingsManager.SaveSettingsToFile();
+ }
+
+ private void ToggleSwitchNotifyHiddenPage_Toggled(object sender, RoutedEventArgs e)
+ {
+ if (!_isLoaded) return;
+ SettingsManager.Settings.PowerPointSettings.IsNotifyHiddenPage = CardNotifyHiddenPage.IsOn;
+ SettingsManager.SaveSettingsToFile();
+ }
+
+ private void ToggleSwitchNotifyAutoPlayPresentation_Toggled(object sender, RoutedEventArgs e)
+ {
+ if (!_isLoaded) return;
+ SettingsManager.Settings.PowerPointSettings.IsNotifyAutoPlayPresentation = CardNotifyAutoPlayPresentation.IsOn;
+ SettingsManager.SaveSettingsToFile();
+ }
+
+ #endregion
+ }
+}
diff --git a/Ink Canvas/Windows/SettingsViews/SettingsWindow.xaml b/Ink Canvas/Windows/SettingsViews/SettingsWindow.xaml
index c2524bc3..037124ba 100644
--- a/Ink Canvas/Windows/SettingsViews/SettingsWindow.xaml
+++ b/Ink Canvas/Windows/SettingsViews/SettingsWindow.xaml
@@ -186,6 +186,17 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+