OF-DL/OF DL.Gui/Views/AboutWindow.axaml.cs

77 lines
2.3 KiB
C#

using Avalonia.Controls;
using Avalonia.Interactivity;
using Avalonia.Platform;
using OF_DL.Gui.Helpers;
using Serilog;
namespace OF_DL.Gui.Views;
public partial class AboutWindow : Window
{
private const string UnknownValue = "Unknown";
private const string UnknownToolVersion = "Not detected";
public string ProgramVersion { get; }
public string FfmpegVersion { get; }
public string FfprobeVersion { get; }
public string SourceCodeUrl { get; } = "https://git.ofdl.tools/sim0n00ps/OF-DL";
public string FfmpegLicenseUrl { get; } = "https://ffmpeg.org/legal.html";
public string FfprobeLicenseUrl { get; } = "https://ffmpeg.org/legal.html";
public AboutWindow()
: this(UnknownValue, UnknownToolVersion, UnknownToolVersion)
{
}
public AboutWindow(
string programVersion,
string ffmpegVersion,
string ffprobeVersion)
{
ProgramVersion = programVersion;
FfmpegVersion = ffmpegVersion;
FfprobeVersion = ffprobeVersion;
InitializeComponent();
Icon = new WindowIcon(AssetLoader.Open(new Uri("avares://OF DL.Gui/Assets/icon.ico")));
DataContext = this;
}
private async void OnOpenSourceCodeClick(object? sender, RoutedEventArgs e)
{
try
{
await WebLinkHelper.OpenOrCopyAsync(this, SourceCodeUrl, sender as Control);
}
catch (Exception exception)
{
Log.Error(exception, "Failed to handle link click event. {ErrorMessage}", exception.Message);
}
}
private async void OnOpenFfmpegLicenseClick(object? sender, RoutedEventArgs e)
{
try
{
await WebLinkHelper.OpenOrCopyAsync(this, FfmpegLicenseUrl, sender as Control);
}
catch (Exception exception)
{
Log.Error(exception, "Failed to handle link click event. {ErrorMessage}", exception.Message);
}
}
private async void OnOpenFfprobeLicenseClick(object? sender, RoutedEventArgs e)
{
try
{
await WebLinkHelper.OpenOrCopyAsync(this, FfprobeLicenseUrl, sender as Control);
}
catch (Exception exception)
{
Log.Error(exception, "Failed to handle link click event. {ErrorMessage}", exception.Message);
}
}
}