using AnotherReplayReader.Utils; using System.Diagnostics; using System.Linq; using System.Windows; using System.Windows.Documents; namespace AnotherReplayReader { /// /// About.xaml 的交互逻辑 /// internal partial class About : Window { private readonly Cache _cache; private readonly UpdateCheckerVersionData? _updateData; public About(Cache cache) { _cache = cache; InitializeComponent(); } public About(Cache cache, UpdateCheckerVersionData updateData) { _cache = cache; _updateData = updateData; InitializeComponent(); } private async void OnAboutWindowLoaded(object sender, RoutedEventArgs e) { foreach (var hyperlink in this.FindVisualChildren()) { hyperlink.RequestNavigate += OnHyperlinkRequestNavigate; } await _cache.Initialization; _checkForUpdates.IsChecked = _cache.GetOrDefault(UpdateChecker.CheckForUpdatesKey, false); var data = _updateData ?? _cache.GetOrDefault(UpdateChecker.CachedDataKey, null); if (data is { } updateData && updateData.IsNewVersion()) { _updatePanel.Visibility = Visibility.Visible; _updateInfo.Inlines.Add(updateData.Description); _updateInfo.Inlines.Add(new LineBreak()); updateData.Urls.Select(u => { var h = new Hyperlink(); h.Inlines.Add(u); h.NavigateUri = new(u); h.RequestNavigate += OnHyperlinkRequestNavigate; return h; }); } } private void OnHyperlinkRequestNavigate(object sender, System.Windows.Navigation.RequestNavigateEventArgs e) { Process.Start(e.Uri.ToString()); } private async void OnCheckForUpdatesCheckedChanged(object sender, RoutedEventArgs e) { _cache.Set(UpdateChecker.CheckForUpdatesKey, _checkForUpdates.IsChecked is true); await _cache.Save(); } } }