From ec6cb0abb4b7669895b6e96fd7581c93b5abd691 Mon Sep 17 00:00:00 2001
From: Mary Guillemard <mary@mary.zone>
Date: Sat, 2 Mar 2024 12:51:05 +0100
Subject: infra: Make Avalonia the default UI  (#6375)

* misc: Move Ryujinx project to Ryujinx.Gtk3

This breaks release CI for now but that's fine.

Signed-off-by: Mary Guillemard <mary@mary.zone>

* misc: Move Ryujinx.Ava project to Ryujinx

This breaks CI for now, but it's fine.

Signed-off-by: Mary Guillemard <mary@mary.zone>

* infra: Make Avalonia the default UI

Should fix CI after the previous changes.

GTK3 isn't build by the release job anymore, only by PR CI.

This also ensure that the test-ava update package is still generated to
allow update from the old testing channel.

Signed-off-by: Mary Guillemard <mary@mary.zone>

* Fix missing copy in create_app_bundle.sh

Signed-off-by: Mary Guillemard <mary@mary.zone>

* Fix syntax error

Signed-off-by: Mary Guillemard <mary@mary.zone>

---------

Signed-off-by: Mary Guillemard <mary@mary.zone>
---
 src/Ryujinx/UI/ViewModels/AboutWindowViewModel.cs | 131 ++++++++++++++++++++++
 1 file changed, 131 insertions(+)
 create mode 100644 src/Ryujinx/UI/ViewModels/AboutWindowViewModel.cs

(limited to 'src/Ryujinx/UI/ViewModels/AboutWindowViewModel.cs')

diff --git a/src/Ryujinx/UI/ViewModels/AboutWindowViewModel.cs b/src/Ryujinx/UI/ViewModels/AboutWindowViewModel.cs
new file mode 100644
index 00000000..6020f40e
--- /dev/null
+++ b/src/Ryujinx/UI/ViewModels/AboutWindowViewModel.cs
@@ -0,0 +1,131 @@
+using Avalonia.Media.Imaging;
+using Avalonia.Platform;
+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;
+
+namespace Ryujinx.Ava.UI.ViewModels
+{
+    public class AboutWindowViewModel : BaseModel
+    {
+        private Bitmap _githubLogo;
+        private Bitmap _discordLogo;
+        private Bitmap _patreonLogo;
+        private Bitmap _twitterLogo;
+
+        private string _version;
+        private string _supporters;
+
+        public Bitmap GithubLogo
+        {
+            get => _githubLogo;
+            set
+            {
+                _githubLogo = value;
+                OnPropertyChanged();
+            }
+        }
+
+        public Bitmap DiscordLogo
+        {
+            get => _discordLogo;
+            set
+            {
+                _discordLogo = value;
+                OnPropertyChanged();
+            }
+        }
+
+        public Bitmap PatreonLogo
+        {
+            get => _patreonLogo;
+            set
+            {
+                _patreonLogo = value;
+                OnPropertyChanged();
+            }
+        }
+
+        public Bitmap TwitterLogo
+        {
+            get => _twitterLogo;
+            set
+            {
+                _twitterLogo = value;
+                OnPropertyChanged();
+            }
+        }
+
+        public string Supporters
+        {
+            get => _supporters;
+            set
+            {
+                _supporters = value;
+                OnPropertyChanged();
+            }
+        }
+
+        public string Version
+        {
+            get => _version;
+            set
+            {
+                _version = value;
+                OnPropertyChanged();
+            }
+        }
+
+        public string Developers => LocaleManager.Instance.UpdateAndGetDynamicValue(LocaleKeys.AboutPageDeveloperListMore, "gdkchan, Ac_K, marysaka, rip in peri peri, LDj3SNuD, emmaus, Thealexbarney, GoffyDude, TSRBerry, IsaacMarovitz");
+
+        public AboutWindowViewModel()
+        {
+            Version = Program.Version;
+
+            if (ConfigurationState.Instance.UI.BaseStyle.Value == "Light")
+            {
+                GithubLogo = new Bitmap(AssetLoader.Open(new Uri("resm:Ryujinx.UI.Common.Resources.Logo_GitHub_Light.png?assembly=Ryujinx.UI.Common")));
+                DiscordLogo = new Bitmap(AssetLoader.Open(new Uri("resm:Ryujinx.UI.Common.Resources.Logo_Discord_Light.png?assembly=Ryujinx.UI.Common")));
+                PatreonLogo = new Bitmap(AssetLoader.Open(new Uri("resm:Ryujinx.UI.Common.Resources.Logo_Patreon_Light.png?assembly=Ryujinx.UI.Common")));
+                TwitterLogo = new Bitmap(AssetLoader.Open(new Uri("resm:Ryujinx.UI.Common.Resources.Logo_Twitter_Light.png?assembly=Ryujinx.UI.Common")));
+            }
+            else
+            {
+                GithubLogo = new Bitmap(AssetLoader.Open(new Uri("resm:Ryujinx.UI.Common.Resources.Logo_GitHub_Dark.png?assembly=Ryujinx.UI.Common")));
+                DiscordLogo = new Bitmap(AssetLoader.Open(new Uri("resm:Ryujinx.UI.Common.Resources.Logo_Discord_Dark.png?assembly=Ryujinx.UI.Common")));
+                PatreonLogo = new Bitmap(AssetLoader.Open(new Uri("resm:Ryujinx.UI.Common.Resources.Logo_Patreon_Dark.png?assembly=Ryujinx.UI.Common")));
+                TwitterLogo = new Bitmap(AssetLoader.Open(new Uri("resm:Ryujinx.UI.Common.Resources.Logo_Twitter_Dark.png?assembly=Ryujinx.UI.Common")));
+            }
+
+            Dispatcher.UIThread.InvokeAsync(DownloadPatronsJson);
+        }
+
+        private async Task DownloadPatronsJson()
+        {
+            if (!NetworkInterface.GetIsNetworkAvailable())
+            {
+                Supporters = LocaleManager.Instance[LocaleKeys.ConnectionError];
+
+                return;
+            }
+
+            HttpClient httpClient = new();
+
+            try
+            {
+                string patreonJsonString = await httpClient.GetStringAsync("https://patreon.ryujinx.org/");
+
+                Supporters = string.Join(", ", JsonHelper.Deserialize(patreonJsonString, CommonJsonContext.Default.StringArray)) + "\n\n";
+            }
+            catch
+            {
+                Supporters = LocaleManager.Instance[LocaleKeys.ApiError];
+            }
+        }
+    }
+}
-- 
cgit v1.2.3-70-g09d2