using System.Windows; namespace OmniScheduler; public partial class SettingsWindow : Window { private readonly AppSettings _settings; private SettingsWindow(Window owner, AppSettings settings) { InitializeComponent(); Owner = owner; _settings = settings; UrlBox.Text = settings.OmniNotifyUrl; RetentionDaysBox.Text = settings.LogRetentionDays.ToString(); MaxRecordsBox.Text = settings.MaxLogRecords.ToString(); } public static bool Edit(Window owner, AppSettings settings) { var dialog = new SettingsWindow(owner, settings); return dialog.ShowDialog() == true; } private void Save_Click(object sender, RoutedEventArgs e) { ValidationText.Text = ""; if (!Uri.TryCreate(UrlBox.Text.Trim(), UriKind.Absolute, out _)) { ValidationText.Text = "API 地址格式不正确"; return; } if (!int.TryParse(RetentionDaysBox.Text, out var days) || days < 1) { ValidationText.Text = "日志保留天数至少为 1"; return; } if (!int.TryParse(MaxRecordsBox.Text, out var max) || max < 100) { ValidationText.Text = "最大日志条数至少为 100"; return; } _settings.OmniNotifyUrl = UrlBox.Text.Trim(); _settings.LogRetentionDays = days; _settings.MaxLogRecords = max; DialogResult = true; } private void Cancel_Click(object sender, RoutedEventArgs e) => DialogResult = false; }