diff --git a/Ink Canvas/MainWindow.xaml b/Ink Canvas/MainWindow.xaml index 593d449a..2ebb8efb 100644 --- a/Ink Canvas/MainWindow.xaml +++ b/Ink Canvas/MainWindow.xaml @@ -2418,6 +2418,15 @@ FontWeight="Bold" Toggled="ToggleSwitchShowRandomAndSingleDraw_Toggled" /> + + + + diff --git a/Ink Canvas/MainWindow_cs/MW_FloatingBarIcons.cs b/Ink Canvas/MainWindow_cs/MW_FloatingBarIcons.cs index e74d36a6..03ee2b5e 100644 --- a/Ink Canvas/MainWindow_cs/MW_FloatingBarIcons.cs +++ b/Ink Canvas/MainWindow_cs/MW_FloatingBarIcons.cs @@ -23,6 +23,7 @@ using System.Text; using System.Globalization; using System.Windows.Data; using System.Xml.Linq; +using MessageBox = iNKORE.UI.WPF.Modern.Controls.MessageBox; namespace Ink_Canvas { public partial class MainWindow : Window { @@ -825,7 +826,24 @@ namespace Ink_Canvas { AnimationsHelper.HideWithSlideAndFade(BorderTools); AnimationsHelper.HideWithSlideAndFade(BoardBorderTools); - new RandWindow(Settings, true).ShowDialog(); + // 检查是否启用了直接调用ClassIsland点名功能 + if (Settings.RandSettings.DirectCallCiRand) { + try { + System.Diagnostics.Process.Start(new System.Diagnostics.ProcessStartInfo { + FileName = "classisland://plugins/IslandCaller/Run", + UseShellExecute = true + }); + } + catch (Exception ex) { + MessageBox.Show("无法调用ClassIsland点名:" + ex.Message); + + // 调用失败时回退到默认的随机点名窗口 + new RandWindow(Settings, true).ShowDialog(); + } + } else { + // 使用默认的随机点名窗口 + new RandWindow(Settings, true).ShowDialog(); + } } private void GridInkReplayButton_MouseUp(object sender, MouseButtonEventArgs e) { diff --git a/Ink Canvas/MainWindow_cs/MW_Settings.cs b/Ink Canvas/MainWindow_cs/MW_Settings.cs index 982e7702..099212cf 100644 --- a/Ink Canvas/MainWindow_cs/MW_Settings.cs +++ b/Ink Canvas/MainWindow_cs/MW_Settings.cs @@ -1775,6 +1775,16 @@ namespace Ink_Canvas { // 保存设置到文件 SaveSettingsToFile(); } + + private void ToggleSwitchDirectCallCiRand_Toggled(object sender, RoutedEventArgs e) { + if (!isLoaded) return; + + // 获取开关状态并保存到设置中 + Settings.RandSettings.DirectCallCiRand = ToggleSwitchDirectCallCiRand.IsOn; + + // 保存设置到文件 + SaveSettingsToFile(); + } #endregion diff --git a/Ink Canvas/MainWindow_cs/MW_SettingsToLoad.cs b/Ink Canvas/MainWindow_cs/MW_SettingsToLoad.cs index 77f45dd9..d36a7f9d 100644 --- a/Ink Canvas/MainWindow_cs/MW_SettingsToLoad.cs +++ b/Ink Canvas/MainWindow_cs/MW_SettingsToLoad.cs @@ -602,6 +602,7 @@ namespace Ink_Canvas { RandWindowOnceCloseLatencySlider.Value = Settings.RandSettings.RandWindowOnceCloseLatency; RandWindowOnceMaxStudentsSlider.Value = Settings.RandSettings.RandWindowOnceMaxStudents; ToggleSwitchShowRandomAndSingleDraw.IsOn = Settings.RandSettings.ShowRandomAndSingleDraw; + ToggleSwitchDirectCallCiRand.IsOn = Settings.RandSettings.DirectCallCiRand; RandomDrawPanel.Visibility = Settings.RandSettings.ShowRandomAndSingleDraw ? Visibility.Visible : Visibility.Collapsed; SingleDrawPanel.Visibility = Settings.RandSettings.ShowRandomAndSingleDraw ? Visibility.Visible : Visibility.Collapsed; } else { @@ -609,6 +610,7 @@ namespace Ink_Canvas { ToggleSwitchDisplayRandWindowNamesInputBtn.IsOn = Settings.RandSettings.DisplayRandWindowNamesInputBtn; RandWindowOnceCloseLatencySlider.Value = Settings.RandSettings.RandWindowOnceCloseLatency; RandWindowOnceMaxStudentsSlider.Value = Settings.RandSettings.RandWindowOnceMaxStudents; + ToggleSwitchDirectCallCiRand.IsOn = Settings.RandSettings.DirectCallCiRand; } // Automation diff --git a/Ink Canvas/Resources/Settings.cs b/Ink Canvas/Resources/Settings.cs index 522e90f1..a5abddbc 100644 --- a/Ink Canvas/Resources/Settings.cs +++ b/Ink Canvas/Resources/Settings.cs @@ -437,5 +437,7 @@ namespace Ink_Canvas public int RandWindowOnceMaxStudents { get; set; } = 10; [JsonProperty("showRandomAndSingleDraw")] public bool ShowRandomAndSingleDraw { get; set; } = true; + [JsonProperty("directCallCiRand")] + public bool DirectCallCiRand { get; set; } = false; } } \ No newline at end of file