Ryujinx/Ryujinx.Ava/UI/ViewModels/AboutWindowViewModel.cs

135 lines
4.2 KiB
C#
Raw Normal View History

2023-01-01 15:41:35 +00:00
using Avalonia;
using Avalonia.Media.Imaging;
using Avalonia.Threading;
using Ryujinx.Ava.Common.Locale;
using Ryujinx.Common.Utilities;
using Ryujinx.Ui.Common.Configuration;
using System;
using System.Net.Http;
using System.Net.NetworkInformation;
using System.Threading.Tasks;
2023-01-03 23:06:40 +00:00
namespace Ryujinx.Ava.UI.ViewModels
2023-01-01 15:41:35 +00:00
{
2023-01-03 23:06:40 +00:00
public class AboutWindowViewModel : BaseModel
{
private Bitmap _githubLogo;
private Bitmap _discordLogo;
private Bitmap _patreonLogo;
private Bitmap _twitterLogo;
2023-01-01 15:41:35 +00:00
2023-01-03 23:06:40 +00:00
private string _version;
private string _supporters;
2023-01-01 15:41:35 +00:00
2023-01-03 23:06:40 +00:00
public Bitmap GithubLogo
2023-01-01 15:41:35 +00:00
{
2023-01-03 23:06:40 +00:00
get => _githubLogo;
set
{
_githubLogo = value;
OnPropertyChanged();
}
2023-01-01 15:41:35 +00:00
}
2023-01-03 22:46:08 +00:00
2023-01-03 23:06:40 +00:00
public Bitmap DiscordLogo
2023-01-01 15:41:35 +00:00
{
2023-01-03 23:06:40 +00:00
get => _discordLogo;
set
{
_discordLogo = value;
OnPropertyChanged();
}
2023-01-01 15:41:35 +00:00
}
2023-01-03 22:46:08 +00:00
2023-01-03 23:06:40 +00:00
public Bitmap PatreonLogo
2023-01-01 15:41:35 +00:00
{
2023-01-03 23:06:40 +00:00
get => _patreonLogo;
set
{
_patreonLogo = value;
OnPropertyChanged();
}
2023-01-01 15:41:35 +00:00
}
2023-01-03 22:46:08 +00:00
2023-01-03 23:06:40 +00:00
public Bitmap TwitterLogo
2023-01-01 15:41:35 +00:00
{
2023-01-03 23:06:40 +00:00
get => _twitterLogo;
set
{
_twitterLogo = value;
OnPropertyChanged();
}
2023-01-01 15:41:35 +00:00
}
2023-01-03 23:06:40 +00:00
public string Supporters
2023-01-01 15:41:35 +00:00
{
2023-01-03 23:06:40 +00:00
get => _supporters;
set
{
_supporters = value;
OnPropertyChanged();
}
2023-01-01 15:41:35 +00:00
}
2023-01-03 23:06:40 +00:00
public string Version
2023-01-01 15:41:35 +00:00
{
2023-01-03 23:06:40 +00:00
get => _version;
set
{
_version = value;
OnPropertyChanged();
}
2023-01-01 15:41:35 +00:00
}
2023-01-03 23:06:40 +00:00
public string Developers
2023-01-01 15:41:35 +00:00
{
2023-01-03 23:06:40 +00:00
get => string.Format(LocaleManager.Instance[LocaleKeys.AboutPageDeveloperListMore], "gdkchan, Ac_K, Thog, rip in peri peri, LDj3SNuD, emmaus, Thealexbarney, Xpl0itR, GoffyDude, »jD«");
2023-01-01 15:41:35 +00:00
}
2023-01-03 23:06:40 +00:00
public AboutWindowViewModel()
{
Version = Program.Version;
var assets = AvaloniaLocator.Current.GetService<Avalonia.Platform.IAssetLoader>();
if (ConfigurationState.Instance.Ui.BaseStyle.Value == "Light")
{
GithubLogo = new Bitmap(assets.Open(new Uri("resm:Ryujinx.Ui.Common.Resources.Logo_GitHub_Light.png?assembly=Ryujinx.Ui.Common")));
DiscordLogo = new Bitmap(assets.Open(new Uri("resm:Ryujinx.Ui.Common.Resources.Logo_Discord_Light.png?assembly=Ryujinx.Ui.Common")));
PatreonLogo = new Bitmap(assets.Open(new Uri("resm:Ryujinx.Ui.Common.Resources.Logo_Patreon_Light.png?assembly=Ryujinx.Ui.Common")));
TwitterLogo = new Bitmap(assets.Open(new Uri("resm:Ryujinx.Ui.Common.Resources.Logo_Twitter_Light.png?assembly=Ryujinx.Ui.Common")));
} else
{
GithubLogo = new Bitmap(assets.Open(new Uri("resm:Ryujinx.Ui.Common.Resources.Logo_GitHub_Dark.png?assembly=Ryujinx.Ui.Common")));
DiscordLogo = new Bitmap(assets.Open(new Uri("resm:Ryujinx.Ui.Common.Resources.Logo_Discord_Dark.png?assembly=Ryujinx.Ui.Common")));
PatreonLogo = new Bitmap(assets.Open(new Uri("resm:Ryujinx.Ui.Common.Resources.Logo_Patreon_Dark.png?assembly=Ryujinx.Ui.Common")));
TwitterLogo = new Bitmap(assets.Open(new Uri("resm:Ryujinx.Ui.Common.Resources.Logo_Twitter_Dark.png?assembly=Ryujinx.Ui.Common")));
}
Dispatcher.UIThread.InvokeAsync(DownloadPatronsJson);
}
2023-01-03 22:46:08 +00:00
2023-01-03 23:06:40 +00:00
private async Task DownloadPatronsJson()
2023-01-01 15:41:35 +00:00
{
2023-01-03 23:06:40 +00:00
if (!NetworkInterface.GetIsNetworkAvailable())
{
Supporters = LocaleManager.Instance[LocaleKeys.ConnectionError];
2023-01-01 15:41:35 +00:00
2023-01-03 23:06:40 +00:00
return;
}
2023-01-01 15:41:35 +00:00
2023-01-03 23:06:40 +00:00
HttpClient httpClient = new();
2023-01-01 15:41:35 +00:00
2023-01-03 23:06:40 +00:00
try
{
string patreonJsonString = await httpClient.GetStringAsync("https://patreon.ryujinx.org/");
2023-01-01 15:41:35 +00:00
2023-01-03 23:06:40 +00:00
Supporters = string.Join(", ", JsonHelper.Deserialize<string[]>(patreonJsonString));
}
catch
{
Supporters = LocaleManager.Instance[LocaleKeys.ApiError];
}
2023-01-01 15:41:35 +00:00
}
}
}