using Avalonia.Controls; using Avalonia.Interactivity; using Avalonia.Styling; using FluentAvalonia.UI.Controls; using Ryujinx.Ava.Common.Locale; using Ryujinx.Ava.UI.Helpers; using Ryujinx.Ava.UI.Models; using Ryujinx.Ava.UI.ViewModels; using Ryujinx.HLE.FileSystem; using Ryujinx.Ui.Common.Helper; using System.Threading.Tasks; using Button = Avalonia.Controls.Button; namespace Ryujinx.Ava.UI.Windows { public partial class TitleUpdateWindow : UserControl { public TitleUpdateViewModel ViewModel; public TitleUpdateWindow() { DataContext = this; InitializeComponent(); } public TitleUpdateWindow(VirtualFileSystem virtualFileSystem, ulong titleId, string titleName) { DataContext = ViewModel = new TitleUpdateViewModel(virtualFileSystem, titleId, titleName); InitializeComponent(); } public static async Task Show(VirtualFileSystem virtualFileSystem, ulong titleId, string titleName) { ContentDialog contentDialog = new() { PrimaryButtonText = "", SecondaryButtonText = "", CloseButtonText = "", Content = new TitleUpdateWindow(virtualFileSystem, titleId, titleName), Title = LocaleManager.Instance.UpdateAndGetDynamicValue(LocaleKeys.GameUpdateWindowHeading, titleName, titleId.ToString("X16")) }; Style bottomBorder = new(x => x.OfType<Grid>().Name("DialogSpace").Child().OfType<Border>()); bottomBorder.Setters.Add(new Setter(IsVisibleProperty, false)); contentDialog.Styles.Add(bottomBorder); await ContentDialogHelper.ShowAsync(contentDialog); } private void Close(object sender, RoutedEventArgs e) { ((ContentDialog)Parent).Hide(); } public void Save(object sender, RoutedEventArgs e) { ViewModel.Save(); if (VisualRoot is MainWindow window) { window.ViewModel.LoadApplications(); } ((ContentDialog)Parent).Hide(); } private void OpenLocation(object sender, RoutedEventArgs e) { if (sender is Button button) { if (button.DataContext is TitleUpdateModel model) { OpenHelper.LocateFile(model.Path); } } } private void RemoveUpdate(object sender, RoutedEventArgs e) { if (sender is Button button) { ViewModel.RemoveUpdate((TitleUpdateModel)button.DataContext); } } private void RemoveAll(object sender, RoutedEventArgs e) { ViewModel.TitleUpdates.Clear(); ViewModel.SortUpdates(); } } }