69 lines
2.2 KiB
C#
69 lines
2.2 KiB
C#
using AnotherReplayReader.Utils;
|
|
using System.Diagnostics;
|
|
using System.Linq;
|
|
using System.Windows;
|
|
using System.Windows.Documents;
|
|
|
|
namespace AnotherReplayReader
|
|
{
|
|
/// <summary>
|
|
/// About.xaml 的交互逻辑
|
|
/// </summary>
|
|
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>())
|
|
{
|
|
hyperlink.RequestNavigate += OnHyperlinkRequestNavigate;
|
|
}
|
|
|
|
await _cache.Initialization;
|
|
_checkForUpdates.IsChecked = _cache.GetOrDefault(UpdateChecker.CheckForUpdatesKey, false);
|
|
var data = _updateData
|
|
?? _cache.GetOrDefault<UpdateCheckerVersionData?>(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();
|
|
}
|
|
}
|
|
}
|