feat: 优化触发器配置体验

- 根据触发器类型动态展示对应配置区域,减少无关字段干扰。
- 将单次、每日、每周、每月和生效时间范围改为日期选择器与时分秒下拉选择,避免手动输入时间格式。
- 为单次执行增加延后执行快捷设置,支持常用快捷按钮和自定义分钟、小时、天后执行。
- 移除开机自启设置、注册表写入逻辑和相关配置字段,降低对用户系统的影响。
- 同步优化部分任务状态、触发摘要和设置界面文案。
This commit is contained in:
2026-05-21 10:54:20 +08:00
parent 2a669bdfe7
commit d33fe30569
8 changed files with 489 additions and 144 deletions

View File

@@ -46,7 +46,6 @@ public sealed class AppSettings : NotifyObject
private string _omniNotifyUrl = "http://127.0.0.1:19845/notify";
private int _logRetentionDays = 30;
private int _maxLogRecords = 10000;
private bool _startWithWindows;
public string OmniNotifyUrl
{
@@ -66,11 +65,6 @@ public sealed class AppSettings : NotifyObject
set => SetField(ref _maxLogRecords, Math.Max(100, value));
}
public bool StartWithWindows
{
get => _startWithWindows;
set => SetField(ref _startWithWindows, value);
}
}
public sealed class ScheduledTask : NotifyObject
@@ -83,7 +77,7 @@ public sealed class ScheduledTask : NotifyObject
private string _body = "";
private DateTime? _lastRunAt;
private DateTime? _nextRunAt;
private string _lastStatus = "Idle";
private string _lastStatus = "待命";
public Guid Id { get; set; } = Guid.NewGuid();
@@ -200,8 +194,8 @@ public sealed class TaskTrigger : NotifyObject
TriggerKind.OneTime => $"单次 {OneTimeAt:yyyy-MM-dd HH:mm:ss}",
TriggerKind.Interval => $"每 {IntervalValue} {IntervalUnitText}",
TriggerKind.Daily => $"每日 {TimeOfDay:hh\\:mm\\:ss}",
TriggerKind.Weekly => $"每周 {WeekDays} {TimeOfDay:hh\\:mm\\:ss}",
TriggerKind.Monthly => LastBusinessDay ? $"每月最后工作日 {TimeOfDay:hh\\:mm\\:ss}" : $"每月 {MonthDay} 日 {TimeOfDay:hh\\:mm\\:ss}",
TriggerKind.Weekly => $"每周 {WeekDaysText} {TimeOfDay:hh\\:mm\\:ss}",
TriggerKind.Monthly => LastBusinessDay ? $"每月最后一个工作日 {TimeOfDay:hh\\:mm\\:ss}" : $"每月 {MonthDay} 日 {TimeOfDay:hh\\:mm\\:ss}",
TriggerKind.Cron => $"Cron {CronExpression}",
_ => Kind.ToString()
};
@@ -216,6 +210,23 @@ public sealed class TaskTrigger : NotifyObject
_ => IntervalUnit.ToString()
};
[JsonIgnore]
public string WeekDaysText
{
get
{
var days = new List<string>();
if (WeekDays.HasFlag(DayOfWeekFlags.Sunday)) days.Add("日");
if (WeekDays.HasFlag(DayOfWeekFlags.Monday)) days.Add("一");
if (WeekDays.HasFlag(DayOfWeekFlags.Tuesday)) days.Add("二");
if (WeekDays.HasFlag(DayOfWeekFlags.Wednesday)) days.Add("三");
if (WeekDays.HasFlag(DayOfWeekFlags.Thursday)) days.Add("四");
if (WeekDays.HasFlag(DayOfWeekFlags.Friday)) days.Add("五");
if (WeekDays.HasFlag(DayOfWeekFlags.Saturday)) days.Add("六");
return days.Count == 0 ? "未选择" : string.Join(",", days);
}
}
public TaskTrigger Clone() => new()
{
Id = Guid.NewGuid(),