From 99f988687679c0c9f14fad98cdd34a11dd747c60 Mon Sep 17 00:00:00 2001 From: CJKmkp <2564608840@qq.com> Date: Sat, 13 Sep 2025 12:08:45 +0800 Subject: [PATCH] =?UTF-8?q?improve:=E7=9B=B4=E6=8E=A5=E8=B0=83=E7=94=A8?= =?UTF-8?q?=E5=A4=96=E9=83=A8=E7=82=B9=E5=90=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Ink Canvas/MainWindow.xaml | 17 +++++++++++--- Ink Canvas/MainWindow.xaml.cs | 2 +- .../MainWindow_cs/MW_FloatingBarIcons.cs | 23 ++++++++++++++++--- Ink Canvas/MainWindow_cs/MW_Settings.cs | 15 ++++++++++-- Ink Canvas/MainWindow_cs/MW_SettingsToLoad.cs | 6 +++-- Ink Canvas/Resources/Settings.cs | 2 ++ 6 files changed, 54 insertions(+), 11 deletions(-) diff --git a/Ink Canvas/MainWindow.xaml b/Ink Canvas/MainWindow.xaml index 14b46837..d73b4879 100644 --- a/Ink Canvas/MainWindow.xaml +++ b/Ink Canvas/MainWindow.xaml @@ -2928,13 +2928,24 @@ Toggled="ToggleSwitchShowRandomAndSingleDraw_Toggled" /> - + Toggled="ToggleSwitchExternalCaller_Toggled" /> + + + + + ClassIsland点名 + SecRandom点名 + NamePicker点名 + diff --git a/Ink Canvas/MainWindow.xaml.cs b/Ink Canvas/MainWindow.xaml.cs index 9577bf88..27db978c 100644 --- a/Ink Canvas/MainWindow.xaml.cs +++ b/Ink Canvas/MainWindow.xaml.cs @@ -38,7 +38,7 @@ namespace Ink_Canvas { public partial class MainWindow : Window { - // 新增:每一页一个Canvas对象 + // 每一页一个Canvas对象 private List whiteboardPages = new List(); private int currentPageIndex; private System.Windows.Controls.Canvas currentCanvas; diff --git a/Ink Canvas/MainWindow_cs/MW_FloatingBarIcons.cs b/Ink Canvas/MainWindow_cs/MW_FloatingBarIcons.cs index cb3538e4..6604f48b 100644 --- a/Ink Canvas/MainWindow_cs/MW_FloatingBarIcons.cs +++ b/Ink Canvas/MainWindow_cs/MW_FloatingBarIcons.cs @@ -1096,20 +1096,37 @@ namespace Ink_Canvas AnimationsHelper.HideWithSlideAndFade(BoardBorderTools); AnimationsHelper.HideWithSlideAndFade(BoardImageOptionsPanel); - // 检查是否启用了直接调用ClassIsland点名功能 + // 检查是否启用了外部点名功能 if (Settings.RandSettings.DirectCallCiRand) { try { + string protocol = ""; + switch (Settings.RandSettings.ExternalCallerType) + { + case 0: // ClassIsland点名 + protocol = "classisland://plugins/IslandCaller/Simple/1"; + break; + case 1: // SecRandom点名 + protocol = "secrandom://direct_extraction"; + break; + case 2: // NamePicker点名 + protocol = "namepicker://"; + break; + default: + protocol = "classisland://plugins/IslandCaller/Simple/1"; + break; + } + Process.Start(new ProcessStartInfo { - FileName = "classisland://plugins/IslandCaller/Simple/1", + FileName = protocol, UseShellExecute = true }); } catch (Exception ex) { - MessageBox.Show("无法调用ClassIsland点名:" + ex.Message); + MessageBox.Show("无法调用外部点名:" + ex.Message); // 调用失败时回退到默认的随机点名窗口 new RandWindow(Settings, true).ShowDialog(); diff --git a/Ink Canvas/MainWindow_cs/MW_Settings.cs b/Ink Canvas/MainWindow_cs/MW_Settings.cs index 577dd85d..c0ebe8e5 100644 --- a/Ink Canvas/MainWindow_cs/MW_Settings.cs +++ b/Ink Canvas/MainWindow_cs/MW_Settings.cs @@ -2417,12 +2417,23 @@ namespace Ink_Canvas SaveSettingsToFile(); } - private void ToggleSwitchDirectCallCiRand_Toggled(object sender, RoutedEventArgs e) + private void ToggleSwitchExternalCaller_Toggled(object sender, RoutedEventArgs e) { if (!isLoaded) return; // 获取开关状态并保存到设置中 - Settings.RandSettings.DirectCallCiRand = ToggleSwitchDirectCallCiRand.IsOn; + Settings.RandSettings.DirectCallCiRand = ToggleSwitchExternalCaller.IsOn; + + // 保存设置到文件 + SaveSettingsToFile(); + } + + private void ComboBoxExternalCallerType_SelectionChanged(object sender, SelectionChangedEventArgs e) + { + if (!isLoaded) return; + + // 获取下拉框选择并保存到设置中 + Settings.RandSettings.ExternalCallerType = ComboBoxExternalCallerType.SelectedIndex; // 保存设置到文件 SaveSettingsToFile(); diff --git a/Ink Canvas/MainWindow_cs/MW_SettingsToLoad.cs b/Ink Canvas/MainWindow_cs/MW_SettingsToLoad.cs index 2e178d12..2518ab54 100644 --- a/Ink Canvas/MainWindow_cs/MW_SettingsToLoad.cs +++ b/Ink Canvas/MainWindow_cs/MW_SettingsToLoad.cs @@ -763,7 +763,8 @@ namespace Ink_Canvas RandWindowOnceCloseLatencySlider.Value = Settings.RandSettings.RandWindowOnceCloseLatency; RandWindowOnceMaxStudentsSlider.Value = Settings.RandSettings.RandWindowOnceMaxStudents; ToggleSwitchShowRandomAndSingleDraw.IsOn = Settings.RandSettings.ShowRandomAndSingleDraw; - ToggleSwitchDirectCallCiRand.IsOn = Settings.RandSettings.DirectCallCiRand; + ToggleSwitchExternalCaller.IsOn = Settings.RandSettings.DirectCallCiRand; + ComboBoxExternalCallerType.SelectedIndex = Settings.RandSettings.ExternalCallerType; RandomDrawPanel.Visibility = Settings.RandSettings.ShowRandomAndSingleDraw ? Visibility.Visible : Visibility.Collapsed; SingleDrawPanel.Visibility = Settings.RandSettings.ShowRandomAndSingleDraw ? Visibility.Visible : Visibility.Collapsed; @@ -783,7 +784,8 @@ namespace Ink_Canvas ToggleSwitchDisplayRandWindowNamesInputBtn.IsOn = Settings.RandSettings.DisplayRandWindowNamesInputBtn; RandWindowOnceCloseLatencySlider.Value = Settings.RandSettings.RandWindowOnceCloseLatency; RandWindowOnceMaxStudentsSlider.Value = Settings.RandSettings.RandWindowOnceMaxStudents; - ToggleSwitchDirectCallCiRand.IsOn = Settings.RandSettings.DirectCallCiRand; + ToggleSwitchExternalCaller.IsOn = Settings.RandSettings.DirectCallCiRand; + ComboBoxExternalCallerType.SelectedIndex = Settings.RandSettings.ExternalCallerType; } // ModeSettings diff --git a/Ink Canvas/Resources/Settings.cs b/Ink Canvas/Resources/Settings.cs index 915e919f..a743cb18 100644 --- a/Ink Canvas/Resources/Settings.cs +++ b/Ink Canvas/Resources/Settings.cs @@ -548,6 +548,8 @@ namespace Ink_Canvas public bool ShowRandomAndSingleDraw { get; set; } = true; [JsonProperty("directCallCiRand")] public bool DirectCallCiRand { get; set; } + [JsonProperty("externalCallerType")] + public int ExternalCallerType { get; set; } = 0; [JsonProperty("selectedBackgroundIndex")] public int SelectedBackgroundIndex { get; set; } [JsonProperty("customPickNameBackgrounds")]