diff --git a/Ink Canvas/Windows/OobePresetWindow.xaml b/Ink Canvas/Windows/OobePresetWindow.xaml new file mode 100644 index 00000000..2ef85450 --- /dev/null +++ b/Ink Canvas/Windows/OobePresetWindow.xaml @@ -0,0 +1,293 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Ink Canvas/Windows/OobePresetWindow.xaml.cs b/Ink Canvas/Windows/OobePresetWindow.xaml.cs new file mode 100644 index 00000000..c86f7237 --- /dev/null +++ b/Ink Canvas/Windows/OobePresetWindow.xaml.cs @@ -0,0 +1,176 @@ +using System.Windows; +using System.Windows.Input; +using System.Windows.Media; + +namespace Ink_Canvas.Windows +{ + public partial class OobePresetWindow : Window + { + public enum PresetKind { None, Standard, Lite } + + public PresetKind SelectedPreset { get; private set; } = PresetKind.None; + + public OobePresetWindow() + { + InitializeComponent(); + } + + private void SelectPreset(PresetKind kind) + { + SelectedPreset = kind; + + // 重置所有卡片边框 + var defaultBrush = (Brush)FindResource("SystemControlForegroundBaseLowBrush"); + CardStandard.BorderBrush = defaultBrush; + CardLite.BorderBrush = defaultBrush; + IconStandard.Opacity = 0; + IconLite.Opacity = 0; + + var accentBrush = (Brush)FindResource("SystemControlForegroundAccentBrush"); + switch (kind) + { + case PresetKind.Standard: + CardStandard.BorderBrush = accentBrush; + IconStandard.Opacity = 1; + break; + case PresetKind.Lite: + CardLite.BorderBrush = accentBrush; + IconLite.Opacity = 1; + break; + } + + BtnApply.IsEnabled = kind != PresetKind.None; + } + + private void CardStandard_Click(object sender, MouseButtonEventArgs e) => SelectPreset(PresetKind.Standard); + + private void CardLite_Click(object sender, MouseButtonEventArgs e) => SelectPreset(PresetKind.Lite); + + private void BtnApply_Click(object sender, RoutedEventArgs e) + { + if (SelectedPreset == PresetKind.None) return; + DialogResult = true; + Close(); + } + + private void BtnCancel_Click(object sender, RoutedEventArgs e) + { + DialogResult = false; + Close(); + } + + // ── 预设定义 ──────────────────────────────────────────────────────── + + /// + /// 课堂标准配置:适合大多数教学场景,启用 PPT 联动、自动保存、手势等。 + /// + public static void ApplyStandard(Settings settings) + { + if (settings == null) return; + + // 启动与隐私 + settings.Startup.IsFoldAtStartup = true; + settings.Startup.IsAutoUpdate = true; + settings.Startup.CrashAction = 0; // 静默重启 + settings.Startup.TelemetryUploadLevel = TelemetryUploadLevel.Basic; + settings.Startup.HasAcceptedTelemetryPrivacy = true; + + // 画板与墨迹 + settings.Canvas.IsShowCursor = false; + settings.Canvas.DisablePressure = false; + settings.Canvas.HideStrokeWhenSelecting = true; + settings.Canvas.EnablePalmEraser = true; + + // 墨迹纠正 + settings.InkToShape.IsInkToShapeEnabled = true; + + // 手势 + settings.Gesture.IsEnableTwoFingerZoom = true; + settings.Gesture.IsEnableTwoFingerTranslate = true; + settings.Gesture.AutoSwitchTwoFingerGesture = true; + + // 个性化 + settings.Appearance.Theme = 2; // 跟随系统 + settings.Appearance.EnableSplashScreen = false; + settings.Appearance.EnableTrayIcon = true; + settings.Appearance.IsShowQuickPanel = true; + settings.Appearance.EnableHotkeysInMouseMode = false; + + // PPT 联动 + settings.PowerPointSettings.PowerPointSupport = true; + settings.PowerPointSettings.IsAutoSaveStrokesInPowerPoint = true; + settings.PowerPointSettings.IsAutoSaveScreenShotInPowerPoint = true; + settings.PowerPointSettings.EnablePPTTimeCapsule = true; + + // 自动化 + settings.Automation.IsAutoFoldInPPTSlideShow = false; + settings.Automation.IsEnableAutoSaveStrokes = true; + settings.Automation.IsAutoSaveStrokesAtClear = true; + settings.Automation.IsSaveScreenshotsInDateFolders = true; + if (settings.Automation.FloatingWindowInterceptor != null) + settings.Automation.FloatingWindowInterceptor.IsEnabled = true; + + // 随机点名 + settings.RandSettings.ShowRandomAndSingleDraw = true; + + // 高级 + settings.Advanced.IsLogEnabled = true; + } + + /// + /// 简洁轻量配置:最小化后台行为,适合简单批注场景。 + /// + public static void ApplyLite(Settings settings) + { + if (settings == null) return; + + // 启动与隐私 + settings.Startup.IsFoldAtStartup = true; + settings.Startup.IsAutoUpdate = true; + settings.Startup.CrashAction = 0; + settings.Startup.TelemetryUploadLevel = TelemetryUploadLevel.None; + settings.Startup.HasAcceptedTelemetryPrivacy = true; + + // 画板与墨迹 + settings.Canvas.IsShowCursor = false; + settings.Canvas.DisablePressure = false; + settings.Canvas.HideStrokeWhenSelecting = true; + settings.Canvas.EnablePalmEraser = false; + + // 墨迹纠正 + settings.InkToShape.IsInkToShapeEnabled = false; + + // 手势 + settings.Gesture.IsEnableTwoFingerZoom = false; + settings.Gesture.IsEnableTwoFingerTranslate = false; + settings.Gesture.AutoSwitchTwoFingerGesture = false; + + // 个性化 + settings.Appearance.Theme = 2; // 跟随系统 + settings.Appearance.EnableSplashScreen = false; + settings.Appearance.EnableTrayIcon = true; + settings.Appearance.IsShowQuickPanel = false; + settings.Appearance.EnableHotkeysInMouseMode = false; + + // PPT 联动 + settings.PowerPointSettings.PowerPointSupport = true; + settings.PowerPointSettings.IsAutoSaveStrokesInPowerPoint = true; + settings.PowerPointSettings.IsAutoSaveScreenShotInPowerPoint = true; + settings.PowerPointSettings.EnablePPTTimeCapsule = false; + + // 自动化 + settings.Automation.IsAutoFoldInPPTSlideShow = false; + settings.Automation.IsEnableAutoSaveStrokes = true; + settings.Automation.IsAutoSaveStrokesAtClear = true; + settings.Automation.IsSaveScreenshotsInDateFolders = false; + if (settings.Automation.FloatingWindowInterceptor != null) + settings.Automation.FloatingWindowInterceptor.IsEnabled = false; + + // 随机点名 + settings.RandSettings.ShowRandomAndSingleDraw = true; + + // 高级 + settings.Advanced.IsLogEnabled = true; + } + } +} \ No newline at end of file diff --git a/Ink Canvas/Windows/OobeWindow.xaml b/Ink Canvas/Windows/OobeWindow.xaml index 1ea47654..1f17d12c 100644 --- a/Ink Canvas/Windows/OobeWindow.xaml +++ b/Ink Canvas/Windows/OobeWindow.xaml @@ -194,10 +194,21 @@ Style="{DynamicResource AccentButtonStyle}" Click="BtnStartWelcome_Click"> - + + + diff --git a/Ink Canvas/Windows/OobeWindow.xaml.cs b/Ink Canvas/Windows/OobeWindow.xaml.cs index 23f63c08..cda26854 100644 --- a/Ink Canvas/Windows/OobeWindow.xaml.cs +++ b/Ink Canvas/Windows/OobeWindow.xaml.cs @@ -303,6 +303,28 @@ namespace Ink_Canvas.Windows NavigateTo(0, direction: 1); } + private void BtnUsePreset_Click(object sender, RoutedEventArgs e) + { + var presetWindow = new OobePresetWindow { Owner = this }; + bool? result = presetWindow.ShowDialog(); + if (result != true) return; + + switch (presetWindow.SelectedPreset) + { + case OobePresetWindow.PresetKind.Standard: + OobePresetWindow.ApplyStandard(_settings); + break; + case OobePresetWindow.PresetKind.Lite: + OobePresetWindow.ApplyLite(_settings); + break; + default: + return; + } + + DialogResult = true; + Close(); + } + private void BtnConfirm_Click(object sender, RoutedEventArgs e) { if (_currentStep == FinishIndex)