+58
-132
@@ -1,24 +1,23 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Windows;
|
using System.Windows;
|
||||||
using System.Windows.Controls;
|
using System.Windows.Controls;
|
||||||
using Ink_Canvas.Helpers;
|
|
||||||
|
|
||||||
namespace Ink_Canvas.Windows.SettingsViews2.Pages
|
namespace Ink_Canvas.Windows.SettingsViews2.Pages
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// StartupPage.xaml 的交互逻辑
|
/// NewSettingStartup.xaml 的交互逻辑
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public partial class StartupPage : Page
|
public partial class NewSettingStartup : Page
|
||||||
{
|
{
|
||||||
private bool _isLoaded = false;
|
private bool _isLoaded = false;
|
||||||
|
|
||||||
public StartupPage()
|
public NewSettingStartup()
|
||||||
{
|
{
|
||||||
InitializeComponent();
|
InitializeComponent();
|
||||||
Loaded += StartupPage_Loaded;
|
Loaded += NewSettingStartup_Loaded;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void StartupPage_Loaded(object sender, RoutedEventArgs e)
|
private void NewSettingStartup_Loaded(object sender, RoutedEventArgs e)
|
||||||
{
|
{
|
||||||
LoadSettings();
|
LoadSettings();
|
||||||
_isLoaded = true;
|
_isLoaded = true;
|
||||||
@@ -29,23 +28,35 @@ namespace Ink_Canvas.Windows.SettingsViews2.Pages
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
private void LoadSettings()
|
private void LoadSettings()
|
||||||
{
|
{
|
||||||
|
if (MainWindow.Settings == null) return;
|
||||||
|
|
||||||
_isLoaded = false;
|
_isLoaded = false;
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
var settings = SettingsService.Current;
|
|
||||||
|
|
||||||
// 窗口无焦点模式
|
// 窗口无焦点模式
|
||||||
ToggleSwitchNoFocusMode.IsOn = settings.Advanced?.IsNoFocusMode ?? true;
|
if (MainWindow.Settings.Advanced != null)
|
||||||
|
{
|
||||||
|
ToggleSwitchNoFocusMode.IsOn = MainWindow.Settings.Advanced.IsNoFocusMode;
|
||||||
|
}
|
||||||
|
|
||||||
// 窗口无边框模式
|
// 窗口无边框模式
|
||||||
ToggleSwitchWindowMode.IsOn = settings.Advanced?.WindowMode ?? true;
|
if (MainWindow.Settings.Advanced != null)
|
||||||
|
{
|
||||||
|
ToggleSwitchWindowMode.IsOn = MainWindow.Settings.Advanced.WindowMode;
|
||||||
|
}
|
||||||
|
|
||||||
// 窗口置顶
|
// 窗口置顶
|
||||||
ToggleSwitchAlwaysOnTop.IsOn = settings.Advanced?.IsAlwaysOnTop ?? true;
|
if (MainWindow.Settings.Advanced != null)
|
||||||
|
{
|
||||||
|
ToggleSwitchAlwaysOnTop.IsOn = MainWindow.Settings.Advanced.IsAlwaysOnTop;
|
||||||
|
}
|
||||||
|
|
||||||
// UIA置顶
|
// UIA置顶
|
||||||
ToggleSwitchUIAccessTopMost.IsOn = settings.Advanced?.EnableUIAccessTopMost ?? false;
|
if (MainWindow.Settings.Advanced != null)
|
||||||
|
{
|
||||||
|
ToggleSwitchUIAccessTopMost.IsOn = MainWindow.Settings.Advanced.EnableUIAccessTopMost;
|
||||||
|
}
|
||||||
|
|
||||||
// 开机时运行
|
// 开机时运行
|
||||||
bool runAtStartup = System.IO.File.Exists(
|
bool runAtStartup = System.IO.File.Exists(
|
||||||
@@ -53,10 +64,16 @@ namespace Ink_Canvas.Windows.SettingsViews2.Pages
|
|||||||
ToggleSwitchRunAtStartup.IsOn = runAtStartup;
|
ToggleSwitchRunAtStartup.IsOn = runAtStartup;
|
||||||
|
|
||||||
// 启动时折叠
|
// 启动时折叠
|
||||||
ToggleSwitchFoldAtStartup.IsOn = settings.Startup?.IsFoldAtStartup ?? false;
|
if (MainWindow.Settings.Startup != null)
|
||||||
|
{
|
||||||
|
ToggleSwitchFoldAtStartup.IsOn = MainWindow.Settings.Startup.IsFoldAtStartup;
|
||||||
|
}
|
||||||
|
|
||||||
// 仅PPT模式
|
// 仅PPT模式
|
||||||
ToggleSwitchPPTOnlyMode.IsOn = settings.ModeSettings?.IsPPTOnlyMode ?? false;
|
if (MainWindow.Settings.ModeSettings != null)
|
||||||
|
{
|
||||||
|
ToggleSwitchPPTOnlyMode.IsOn = MainWindow.Settings.ModeSettings.IsPPTOnlyMode;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
@@ -78,8 +95,9 @@ namespace Ink_Canvas.Windows.SettingsViews2.Pages
|
|||||||
try
|
try
|
||||||
{
|
{
|
||||||
bool newState = ToggleSwitchNoFocusMode.IsOn;
|
bool newState = ToggleSwitchNoFocusMode.IsOn;
|
||||||
SettingsService.UpdateSetting("Advanced.IsNoFocusMode", newState);
|
|
||||||
ApplyWindowSettings();
|
// 使用Helper类更新设置并应用
|
||||||
|
Windows.SettingsViews.MainWindowSettingsHelper.InvokeToggleSwitchToggled("ToggleSwitchNoFocusMode", newState);
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
@@ -97,8 +115,9 @@ namespace Ink_Canvas.Windows.SettingsViews2.Pages
|
|||||||
try
|
try
|
||||||
{
|
{
|
||||||
bool newState = ToggleSwitchWindowMode.IsOn;
|
bool newState = ToggleSwitchWindowMode.IsOn;
|
||||||
SettingsService.UpdateSetting("Advanced.WindowMode", newState);
|
|
||||||
ApplyWindowSettings();
|
// 使用Helper类更新设置并应用
|
||||||
|
Windows.SettingsViews.MainWindowSettingsHelper.InvokeToggleSwitchToggled("ToggleSwitchWindowMode", newState);
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
@@ -116,8 +135,9 @@ namespace Ink_Canvas.Windows.SettingsViews2.Pages
|
|||||||
try
|
try
|
||||||
{
|
{
|
||||||
bool newState = ToggleSwitchAlwaysOnTop.IsOn;
|
bool newState = ToggleSwitchAlwaysOnTop.IsOn;
|
||||||
SettingsService.UpdateSetting("Advanced.IsAlwaysOnTop", newState);
|
|
||||||
ApplyWindowSettings();
|
// 使用Helper类更新设置并应用
|
||||||
|
Windows.SettingsViews.MainWindowSettingsHelper.InvokeToggleSwitchToggled("ToggleSwitchAlwaysOnTop", newState);
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
@@ -135,60 +155,22 @@ namespace Ink_Canvas.Windows.SettingsViews2.Pages
|
|||||||
try
|
try
|
||||||
{
|
{
|
||||||
bool newState = ToggleSwitchUIAccessTopMost.IsOn;
|
bool newState = ToggleSwitchUIAccessTopMost.IsOn;
|
||||||
SettingsService.UpdateSetting("Advanced.EnableUIAccessTopMost", newState);
|
|
||||||
ApplyWindowSettings();
|
// 更新Settings对象
|
||||||
}
|
if (MainWindow.Settings.Advanced != null)
|
||||||
catch (Exception ex)
|
|
||||||
{
|
|
||||||
System.Diagnostics.Debug.WriteLine($"设置UIA置顶时出错: {ex.Message}");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 应用窗口设置到主窗口
|
|
||||||
/// </summary>
|
|
||||||
private void ApplyWindowSettings()
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
var mainWindow = Application.Current.MainWindow as MainWindow;
|
|
||||||
if (mainWindow == null) return;
|
|
||||||
|
|
||||||
var settings = SettingsService.Current;
|
|
||||||
|
|
||||||
// 应用窗口置顶
|
|
||||||
mainWindow.Topmost = settings.Advanced?.IsAlwaysOnTop ?? true;
|
|
||||||
|
|
||||||
// 应用窗口模式(无边框/有边框)
|
|
||||||
if (settings.Advanced?.WindowMode ?? true)
|
|
||||||
{
|
{
|
||||||
mainWindow.WindowStyle = WindowStyle.None;
|
MainWindow.Settings.Advanced.EnableUIAccessTopMost = newState;
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
// 保存设置
|
||||||
mainWindow.WindowStyle = WindowStyle.SingleBorderWindow;
|
MainWindow.SaveSettingsToFile();
|
||||||
}
|
|
||||||
|
|
||||||
// 应用无焦点模式
|
|
||||||
if (settings.Advanced?.IsNoFocusMode ?? true)
|
|
||||||
{
|
|
||||||
// 使用反射调用主窗口的无焦点模式设置方法
|
|
||||||
var method = mainWindow.GetType().GetMethod("SetNoFocusMode",
|
|
||||||
System.Reflection.BindingFlags.NonPublic |
|
|
||||||
System.Reflection.BindingFlags.Public |
|
|
||||||
System.Reflection.BindingFlags.Instance);
|
|
||||||
method?.Invoke(mainWindow, new object[] { true });
|
|
||||||
}
|
|
||||||
|
|
||||||
// 通知其他面板同步状态
|
// 通知其他面板同步状态
|
||||||
Windows.SettingsViews.MainWindowSettingsHelper.NotifySettingsPanelsSyncState("ToggleSwitchNoFocusMode");
|
|
||||||
Windows.SettingsViews.MainWindowSettingsHelper.NotifySettingsPanelsSyncState("ToggleSwitchWindowMode");
|
|
||||||
Windows.SettingsViews.MainWindowSettingsHelper.NotifySettingsPanelsSyncState("ToggleSwitchAlwaysOnTop");
|
|
||||||
Windows.SettingsViews.MainWindowSettingsHelper.NotifySettingsPanelsSyncState("ToggleSwitchUIAccessTopMost");
|
Windows.SettingsViews.MainWindowSettingsHelper.NotifySettingsPanelsSyncState("ToggleSwitchUIAccessTopMost");
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
System.Diagnostics.Debug.WriteLine($"应用窗口设置时出错: {ex.Message}");
|
System.Diagnostics.Debug.WriteLine($"设置UIA置顶时出错: {ex.Message}");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -206,7 +188,9 @@ namespace Ink_Canvas.Windows.SettingsViews2.Pages
|
|||||||
try
|
try
|
||||||
{
|
{
|
||||||
bool newState = ToggleSwitchRunAtStartup.IsOn;
|
bool newState = ToggleSwitchRunAtStartup.IsOn;
|
||||||
SetRunAtStartup(newState);
|
|
||||||
|
// 使用Helper类更新设置并应用
|
||||||
|
Windows.SettingsViews.MainWindowSettingsHelper.InvokeToggleSwitchToggled("ToggleSwitchRunAtStartup", newState);
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
@@ -214,62 +198,6 @@ namespace Ink_Canvas.Windows.SettingsViews2.Pages
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 设置开机启动
|
|
||||||
/// </summary>
|
|
||||||
private void SetRunAtStartup(bool enable)
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
string startupPath = System.Environment.GetFolderPath(System.Environment.SpecialFolder.Startup);
|
|
||||||
string shortcutPath = System.IO.Path.Combine(startupPath, "Ink Canvas Annotation.lnk");
|
|
||||||
string exePath = System.Reflection.Assembly.GetExecutingAssembly().Location;
|
|
||||||
|
|
||||||
if (enable)
|
|
||||||
{
|
|
||||||
// 创建快捷方式
|
|
||||||
if (!System.IO.File.Exists(shortcutPath))
|
|
||||||
{
|
|
||||||
CreateShortcut(shortcutPath, exePath);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// 删除快捷方式
|
|
||||||
if (System.IO.File.Exists(shortcutPath))
|
|
||||||
{
|
|
||||||
System.IO.File.Delete(shortcutPath);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// 通知其他面板同步状态
|
|
||||||
Windows.SettingsViews.MainWindowSettingsHelper.NotifySettingsPanelsSyncState("ToggleSwitchRunAtStartup");
|
|
||||||
}
|
|
||||||
catch (Exception ex)
|
|
||||||
{
|
|
||||||
System.Diagnostics.Debug.WriteLine($"设置开机启动失败: {ex.Message}");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 创建快捷方式
|
|
||||||
/// </summary>
|
|
||||||
private void CreateShortcut(string shortcutPath, string targetPath)
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
dynamic shell = Activator.CreateInstance(Type.GetTypeFromProgID("WScript.Shell"));
|
|
||||||
dynamic shortcut = shell.CreateShortcut(shortcutPath);
|
|
||||||
shortcut.TargetPath = targetPath;
|
|
||||||
shortcut.WorkingDirectory = System.IO.Path.GetDirectoryName(targetPath);
|
|
||||||
shortcut.Save();
|
|
||||||
}
|
|
||||||
catch (Exception ex)
|
|
||||||
{
|
|
||||||
System.Diagnostics.Debug.WriteLine($"创建快捷方式失败: {ex.Message}");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 开机运行后收纳到侧边栏开关事件
|
/// 开机运行后收纳到侧边栏开关事件
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -280,10 +208,9 @@ namespace Ink_Canvas.Windows.SettingsViews2.Pages
|
|||||||
try
|
try
|
||||||
{
|
{
|
||||||
bool newState = ToggleSwitchFoldAtStartup.IsOn;
|
bool newState = ToggleSwitchFoldAtStartup.IsOn;
|
||||||
SettingsService.UpdateSetting("Startup.IsFoldAtStartup", newState);
|
|
||||||
|
// 使用Helper类更新设置并应用
|
||||||
// 通知其他面板同步状态
|
Windows.SettingsViews.MainWindowSettingsHelper.InvokeToggleSwitchToggled("ToggleSwitchFoldAtStartup", newState);
|
||||||
Windows.SettingsViews.MainWindowSettingsHelper.NotifySettingsPanelsSyncState("ToggleSwitchFoldAtStartup");
|
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
@@ -305,10 +232,9 @@ namespace Ink_Canvas.Windows.SettingsViews2.Pages
|
|||||||
try
|
try
|
||||||
{
|
{
|
||||||
bool newState = ToggleSwitchPPTOnlyMode.IsOn;
|
bool newState = ToggleSwitchPPTOnlyMode.IsOn;
|
||||||
SettingsService.UpdateSetting("ModeSettings.IsPPTOnlyMode", newState);
|
|
||||||
|
// 使用Helper类更新设置并应用
|
||||||
// 通知其他面板同步状态
|
Windows.SettingsViews.MainWindowSettingsHelper.InvokeToggleSwitchToggled("ToggleSwitchMode", newState);
|
||||||
Windows.SettingsViews.MainWindowSettingsHelper.NotifySettingsPanelsSyncState("ToggleSwitchMode");
|
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
Reference in New Issue
Block a user