ryujinx_ryubing/src/Ryujinx/UI/ViewModels/AboutWindowViewModel.cs
2025-12-19 23:15:23 -06:00

61 lines
2.1 KiB
C#

using Avalonia;
using Avalonia.Media.Imaging;
using Avalonia.Styling;
using Avalonia.Threading;
using CommunityToolkit.Mvvm.ComponentModel;
using Ryujinx.Ava.Common;
using Ryujinx.Ava.Common.Locale;
using Ryujinx.Ava.Systems.Configuration;
using System;
namespace Ryujinx.Ava.UI.ViewModels
{
public partial class AboutWindowViewModel : BaseModel, IDisposable
{
[ObservableProperty] public partial Bitmap GitLabLogo { get; set; }
[ObservableProperty] public partial Bitmap DiscordLogo { get; set; }
[ObservableProperty] public partial string Version { get; set; }
public static string Developers => "GreemDev, LotP";
public static string FormerDevelopers => LocaleManager.Instance.UpdateAndGetDynamicValue(
LocaleKeys.AboutPageDeveloperListMore,
"gdkchan, Ac_K, marysaka, rip in peri peri, LDj3SNuD, emmaus, Thealexbarney, GoffyDude, TSRBerry, IsaacMarovitz");
public AboutWindowViewModel()
{
Version = RyujinxApp.FullAppName + "\n" + Program.Version;
UpdateLogoTheme(ConfigurationState.Instance.UI.BaseStyle.Value);
RyujinxApp.ThemeChanged += Ryujinx_ThemeChanged;
}
private void Ryujinx_ThemeChanged()
{
Dispatcher.UIThread.Post(() => UpdateLogoTheme(ConfigurationState.Instance.UI.BaseStyle.Value));
}
private void UpdateLogoTheme(string theme)
{
bool isDarkTheme = theme == "Dark" ||
(theme == "Auto" && RyujinxApp.DetectSystemTheme() == ThemeVariant.Dark);
DiscordLogo = EmbeddedAvaloniaResources.GetIconByNameAndTheme("Discord", isDarkTheme)
.CreateScaledBitmap(new PixelSize(32, 24));
GitLabLogo = EmbeddedAvaloniaResources.GetIconByNameAndTheme("GitLab", isDarkTheme)
.CreateScaledBitmap(new PixelSize(32, 31));
}
public void Dispose()
{
RyujinxApp.ThemeChanged -= Ryujinx_ThemeChanged;
GitLabLogo.Dispose();
DiscordLogo.Dispose();
GC.SuppressFinalize(this);
}
}
}