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")]