aboutsummaryrefslogtreecommitdiff
path: root/Ryujinx.Ava/Ui/Windows/UpdaterWindow.axaml.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Ryujinx.Ava/Ui/Windows/UpdaterWindow.axaml.cs')
-rw-r--r--Ryujinx.Ava/Ui/Windows/UpdaterWindow.axaml.cs93
1 files changed, 93 insertions, 0 deletions
diff --git a/Ryujinx.Ava/Ui/Windows/UpdaterWindow.axaml.cs b/Ryujinx.Ava/Ui/Windows/UpdaterWindow.axaml.cs
new file mode 100644
index 00000000..a3dd75a3
--- /dev/null
+++ b/Ryujinx.Ava/Ui/Windows/UpdaterWindow.axaml.cs
@@ -0,0 +1,93 @@
+using Avalonia;
+using Avalonia.Controls;
+using Avalonia.Markup.Xaml;
+using Ryujinx.Ava.Common.Locale;
+using Ryujinx.Modules;
+using System;
+using System.Diagnostics;
+using System.IO;
+using System.Linq;
+using System.Runtime.InteropServices;
+
+namespace Ryujinx.Ava.Ui.Windows
+{
+ public class UpdaterWindow : StyleableWindow
+ {
+ private readonly string _buildUrl;
+ private readonly MainWindow _mainWindow;
+ private readonly Version _newVersion;
+ private bool _restartQuery;
+
+ public UpdaterWindow()
+ {
+ DataContext = this;
+
+ InitializeComponent();
+#if DEBUG
+ this.AttachDevTools();
+#endif
+ Title = LocaleManager.Instance["RyujinxUpdater"];
+ }
+
+ public UpdaterWindow(MainWindow mainWindow, Version newVersion, string buildUrl) : this()
+ {
+ _mainWindow = mainWindow;
+ _newVersion = newVersion;
+ _buildUrl = buildUrl;
+ }
+
+ public TextBlock MainText { get; set; }
+ public TextBlock SecondaryText { get; set; }
+ public ProgressBar ProgressBar { get; set; }
+ public StackPanel ButtonBox { get; set; }
+
+ private void InitializeComponent()
+ {
+ AvaloniaXamlLoader.Load(this);
+
+ MainText = this.FindControl<TextBlock>("MainText");
+ SecondaryText = this.FindControl<TextBlock>("SecondaryText");
+ ProgressBar = this.FindControl<ProgressBar>("ProgressBar");
+ ButtonBox = this.FindControl<StackPanel>("ButtonBox");
+ }
+
+ [DllImport("libc", SetLastError = true)]
+ private static extern int chmod(string path, uint mode);
+
+ public void YesPressed()
+ {
+ if (_restartQuery)
+ {
+ string ryuName = OperatingSystem.IsWindows() ? "Ryujinx.exe" : "Ryujinx";
+ string ryuExe = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, ryuName);
+ string ryuArg = string.Join(" ", Environment.GetCommandLineArgs().AsEnumerable().Skip(1).ToArray());
+
+ if (!OperatingSystem.IsWindows())
+ {
+ chmod(ryuExe, 0777);
+ }
+
+ Process.Start(ryuExe, ryuArg);
+
+ Environment.Exit(0);
+ }
+ else
+ {
+ ButtonBox.IsVisible = false;
+ ProgressBar.IsVisible = true;
+
+ SecondaryText.Text = "";
+ _restartQuery = true;
+
+ Updater.UpdateRyujinx(this, _buildUrl);
+ }
+ }
+
+ public void NoPressed()
+ {
+ _mainWindow.UpdateMenuItem.IsEnabled = true;
+
+ Close();
+ }
+ }
+} \ No newline at end of file