| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- using Avalonia;
- using Avalonia.Controls;
- using Avalonia.Input;
- using Avalonia.Interactivity;
- using Avalonia.Markup.Xaml;
- using Avalonia.Threading;
- using Ryujinx.Ava.Common.Locale;
- using Ryujinx.Common.Utilities;
- using Ryujinx.Ui.Common.Helper;
- using System.Net.Http;
- using System.Net.NetworkInformation;
- using System.Threading.Tasks;
- namespace Ryujinx.Ava.Ui.Windows
- {
- public class AboutWindow : StyleableWindow
- {
- public AboutWindow()
- {
- if (Program.PreviewerDetached)
- {
- Title = $"Ryujinx {Program.Version} - " + LocaleManager.Instance["MenuBarHelpAbout"];
- }
- Version = Program.Version;
- DataContext = this;
- InitializeComponent();
- #if DEBUG
- this.AttachDevTools();
- #endif
- _ = DownloadPatronsJson();
- }
- public string Supporters { get; set; }
- public string Version { get; set; }
- public string Developers => string.Format(LocaleManager.Instance["AboutPageDeveloperListMore"], "gdkchan, Ac_K, Thog, rip in peri peri, LDj3SNuD, emmaus, Thealexbarney, Xpl0itR, GoffyDude, »jD«");
- public TextBlock SupportersTextBlock { get; set; }
- private void InitializeComponent()
- {
- AvaloniaXamlLoader.Load(this);
- SupportersTextBlock = this.FindControl<TextBlock>("SupportersTextBlock");
- }
- private void Button_OnClick(object sender, RoutedEventArgs e)
- {
- if (sender is Button button)
- {
- OpenHelper.OpenUrl(button.Tag.ToString());
- }
- }
- private async Task DownloadPatronsJson()
- {
- if (!NetworkInterface.GetIsNetworkAvailable())
- {
- Supporters = LocaleManager.Instance["ConnectionError"];
- return;
- }
- HttpClient httpClient = new();
- try
- {
- string patreonJsonString = await httpClient.GetStringAsync("https://patreon.ryujinx.org/");
- Supporters = string.Join(", ", JsonHelper.Deserialize<string[]>(patreonJsonString));
- }
- catch
- {
- Supporters = LocaleManager.Instance["ApiError"];
- }
- await Dispatcher.UIThread.InvokeAsync(() => SupportersTextBlock.Text = Supporters);
- }
- private void AmiiboLabel_OnPointerPressed(object sender, PointerPressedEventArgs e)
- {
- if (sender is TextBlock)
- {
- OpenHelper.OpenUrl("https://amiiboapi.com");
- }
- }
- }
- }
|