refactor: CycleUiHelper 重命名为 FairyUiHelper

对齐 FairyView 宿主命名。环线/充电/按钮/门进程的 Stop 改为 override,避免隐藏基类;Kiva.ForceStop 改为 override。

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
黄兆尉
2026-08-26 22:49:07 +08:00
co-authored by Cursor
parent 7c925985eb
commit e075bc0d7d
23 changed files with 143 additions and 116 deletions
@@ -93,7 +93,7 @@ namespace StandardScene.ExtendDevice.Door
LoadControllerFields(c);
ClearDoorFields();
}
}, height: CycleUiHelper.TableHeightPx(8), enableSearch: true);
}, height: FairyUiHelper.TableHeightPx(8), enableSearch: true);
pb.SeparatorText("控制器编辑");
var (ip, _) = pb.TextInput("1. IP", _ctrlIp, alwaysReturnString: true);
@@ -127,7 +127,7 @@ namespace StandardScene.ExtendDevice.Door
_selectedDoorIdx = i;
LoadDoorFields(d);
}
}, height: CycleUiHelper.TableHeightPx(6), enableSearch: true);
}, height: FairyUiHelper.TableHeightPx(6), enableSearch: true);
pb.SeparatorText("门编辑");
var (dIdx, _) = pb.TextInput("5. 门编码", _doorIndex, alwaysReturnString: true);
@@ -256,11 +256,11 @@ namespace StandardScene.ExtendDevice.Door
{
if (!TryParseControllerInput(out var index, out var ip, out var port, out var type, false, out var err))
{
CycleUiHelper.Alert("错误", err);
FairyUiHelper.Alert("错误", err);
return;
}
if (_controllers.Any(c => c.Index == index)) { CycleUiHelper.Alert("错误", $"编码 {index} 已存在"); return; }
if (_controllers.Any(c => c.Ip == ip)) { CycleUiHelper.Alert("错误", $"IP {ip} 已存在"); return; }
if (_controllers.Any(c => c.Index == index)) { FairyUiHelper.Alert("错误", $"编码 {index} 已存在"); return; }
if (_controllers.Any(c => c.Ip == ip)) { FairyUiHelper.Alert("错误", $"IP {ip} 已存在"); return; }
var c = new DoorControllerModel { Index = index, Ip = ip, Port = port, Type = type };
_controllers.Add(c);
@@ -273,14 +273,14 @@ namespace StandardScene.ExtendDevice.Door
private void SaveController()
{
var cur = GetSelectedController();
if (cur == null) { CycleUiHelper.Alert("提示", "请先选择要保存的门控制器"); return; }
if (cur == null) { FairyUiHelper.Alert("提示", "请先选择要保存的门控制器"); return; }
if (!TryParseControllerInput(out var index, out var ip, out var port, out var type, true, out var err))
{
CycleUiHelper.Alert("错误", err);
FairyUiHelper.Alert("错误", err);
return;
}
if (_controllers.Any(c => c.Index == index && c != cur)) { CycleUiHelper.Alert("错误", $"编码 {index} 已存在"); return; }
if (_controllers.Any(c => c.Ip == ip && c != cur)) { CycleUiHelper.Alert("错误", $"IP {ip} 已存在"); return; }
if (_controllers.Any(c => c.Index == index && c != cur)) { FairyUiHelper.Alert("错误", $"编码 {index} 已存在"); return; }
if (_controllers.Any(c => c.Ip == ip && c != cur)) { FairyUiHelper.Alert("错误", $"IP {ip} 已存在"); return; }
cur.Index = index;
cur.Ip = ip;
@@ -288,15 +288,15 @@ namespace StandardScene.ExtendDevice.Door
cur.Type = type;
SaveData();
_status = "门控制器已保存";
CycleUiHelper.Alert("提示", "保存成功");
FairyUiHelper.Alert("提示", "保存成功");
_panel?.Repaint();
}
private void ConfirmDeleteController()
{
var cur = GetSelectedController();
if (cur == null) { CycleUiHelper.Alert("提示", "请选择要删除的门控制器"); return; }
CycleUiHelper.ConfirmThen($"删除编码为 {cur.Index} 的门控制器?", () =>
if (cur == null) { FairyUiHelper.Alert("提示", "请选择要删除的门控制器"); return; }
FairyUiHelper.ConfirmThen($"删除编码为 {cur.Index} 的门控制器?", () =>
{
_controllers.Remove(cur);
_selectedCtrlIdx = -1;
@@ -312,13 +312,13 @@ namespace StandardScene.ExtendDevice.Door
private void AddDoor()
{
var ctrl = GetSelectedController();
if (ctrl == null) { CycleUiHelper.Alert("提示", "请先选择门控制器"); return; }
if (ctrl == null) { FairyUiHelper.Alert("提示", "请先选择门控制器"); return; }
if (!TryParseDoorInput(out var index, out var cAddr, out var oAddr, false, out var err))
{
CycleUiHelper.Alert("错误", err);
FairyUiHelper.Alert("错误", err);
return;
}
if (ctrl.Doors.Any(d => d.Index == index)) { CycleUiHelper.Alert("错误", $"门编码 {index} 已存在"); return; }
if (ctrl.Doors.Any(d => d.Index == index)) { FairyUiHelper.Alert("错误", $"门编码 {index} 已存在"); return; }
var door = new DoorModel
{
@@ -338,13 +338,13 @@ namespace StandardScene.ExtendDevice.Door
{
var ctrl = GetSelectedController();
var door = GetSelectedDoor();
if (ctrl == null || door == null) { CycleUiHelper.Alert("提示", "请先选择要保存的门"); return; }
if (ctrl == null || door == null) { FairyUiHelper.Alert("提示", "请先选择要保存的门"); return; }
if (!TryParseDoorInput(out var index, out var cAddr, out var oAddr, true, out var err))
{
CycleUiHelper.Alert("错误", err);
FairyUiHelper.Alert("错误", err);
return;
}
if (ctrl.Doors.Any(d => d.Index == index && d != door)) { CycleUiHelper.Alert("错误", $"门编码 {index} 已存在"); return; }
if (ctrl.Doors.Any(d => d.Index == index && d != door)) { FairyUiHelper.Alert("错误", $"门编码 {index} 已存在"); return; }
door.Index = index;
door.ControlAddress = cAddr;
@@ -352,7 +352,7 @@ namespace StandardScene.ExtendDevice.Door
door.NoControl = _doorNoControl;
SaveData();
_status = "门已保存";
CycleUiHelper.Alert("提示", "保存成功");
FairyUiHelper.Alert("提示", "保存成功");
_panel?.Repaint();
}
@@ -360,8 +360,8 @@ namespace StandardScene.ExtendDevice.Door
{
var ctrl = GetSelectedController();
var door = GetSelectedDoor();
if (ctrl == null || door == null) { CycleUiHelper.Alert("提示", "请选择要删除的门"); return; }
CycleUiHelper.ConfirmThen($"删除编码为 {door.Index} 的门?", () =>
if (ctrl == null || door == null) { FairyUiHelper.Alert("提示", "请选择要删除的门"); return; }
FairyUiHelper.ConfirmThen($"删除编码为 {door.Index} 的门?", () =>
{
ctrl.Doors.Remove(door);
_selectedDoorIdx = -1;
@@ -141,7 +141,7 @@ namespace StandardScene.ExtendDevice.Door
/// </summary>
[MethodMember(Name = "停止进程")]
[I18N.DocumentTranslation(Name = "Stop Mission", locale = "en")]
public void Stop()
public override void Stop()
{
StopInternalAsync().GetAwaiter().GetResult();
status.status = "/";
@@ -1017,7 +1017,7 @@ namespace StandardScene.ExtendDevice.Door
}
catch (Exception ex)
{
CycleUiHelper.Alert("错误", $"打开门控监控界面失败: {ex.Message}");
FairyUiHelper.Alert("错误", $"打开门控监控界面失败: {ex.Message}");
}
}
}
@@ -90,7 +90,7 @@ namespace StandardScene.ExtendDevice.Door
LabelCell(row, door, FormatCars(door));
LabelCell(row, door, door.ControlAddress.ToString());
LabelCell(row, door, door.OpenStatusAddress.ToString());
}, height: CycleUiHelper.TableHeightPx(18), enableSearch: true);
}, height: FairyUiHelper.TableHeightPx(18), enableSearch: true);
pb.Separator();
pb.Label("手动控制");
@@ -161,7 +161,7 @@ namespace StandardScene.ExtendDevice.Door
{
if (!_selectedDoor.HasValue)
{
CycleUiHelper.Alert("提示", "请先选择要控制的门");
FairyUiHelper.Alert("提示", "请先选择要控制的门");
return;
}
@@ -170,17 +170,17 @@ namespace StandardScene.ExtendDevice.Door
var mission = GetMission();
if (mission == null)
{
CycleUiHelper.Alert("错误", "未找到门控进程");
FairyUiHelper.Alert("错误", "未找到门控进程");
return;
}
var (controllerIndex, doorIndex) = _selectedDoor.Value;
mission.SetManualDoorControl(controllerIndex, doorIndex, true);
CycleUiHelper.Alert("提示", $"控制器 {controllerIndex} 门 {doorIndex} 已设置手动打开(10秒)");
FairyUiHelper.Alert("提示", $"控制器 {controllerIndex} 门 {doorIndex} 已设置手动打开(10秒)");
}
catch (Exception ex)
{
CycleUiHelper.Alert("错误", $"设置门打开目标失败: {ex.Message}");
FairyUiHelper.Alert("错误", $"设置门打开目标失败: {ex.Message}");
}
}
@@ -188,7 +188,7 @@ namespace StandardScene.ExtendDevice.Door
{
if (!_selectedDoor.HasValue)
{
CycleUiHelper.Alert("提示", "请先选择要控制的门");
FairyUiHelper.Alert("提示", "请先选择要控制的门");
return;
}
@@ -197,7 +197,7 @@ namespace StandardScene.ExtendDevice.Door
var mission = GetMission();
if (mission == null)
{
CycleUiHelper.Alert("错误", "未找到门控进程");
FairyUiHelper.Alert("错误", "未找到门控进程");
return;
}
@@ -205,15 +205,15 @@ namespace StandardScene.ExtendDevice.Door
var success = mission.SetManualDoorControl(controllerIndex, doorIndex, false);
if (!success)
{
CycleUiHelper.Alert("提示", "门存在车辆占用,禁止手动关闭。");
FairyUiHelper.Alert("提示", "门存在车辆占用,禁止手动关闭。");
return;
}
CycleUiHelper.Alert("提示", $"控制器 {controllerIndex} 门 {doorIndex} 已设置手动关闭(10秒)");
FairyUiHelper.Alert("提示", $"控制器 {controllerIndex} 门 {doorIndex} 已设置手动关闭(10秒)");
}
catch (Exception ex)
{
CycleUiHelper.Alert("错误", $"设置门关闭目标失败: {ex.Message}");
FairyUiHelper.Alert("错误", $"设置门关闭目标失败: {ex.Message}");
}
}
@@ -221,7 +221,7 @@ namespace StandardScene.ExtendDevice.Door
{
if (!_selectedDoor.HasValue)
{
CycleUiHelper.Alert("提示", "请先选择要清空占用的门");
FairyUiHelper.Alert("提示", "请先选择要清空占用的门");
return;
}
@@ -230,17 +230,17 @@ namespace StandardScene.ExtendDevice.Door
var mission = GetMission();
if (mission == null)
{
CycleUiHelper.Alert("错误", "未找到门控进程");
FairyUiHelper.Alert("错误", "未找到门控进程");
return;
}
var (controllerIndex, doorIndex) = _selectedDoor.Value;
mission.ClearCarsInArea(controllerIndex, doorIndex);
CycleUiHelper.Alert("提示", $"控制器 {controllerIndex} 门 {doorIndex} 已清空占用");
FairyUiHelper.Alert("提示", $"控制器 {controllerIndex} 门 {doorIndex} 已清空占用");
}
catch (Exception ex)
{
CycleUiHelper.Alert("错误", $"清空占用失败: {ex.Message}");
FairyUiHelper.Alert("错误", $"清空占用失败: {ex.Message}");
}
}
}