NavigationDialogHost.axaml.cs 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. using Avalonia;
  2. using Avalonia.Controls;
  3. using FluentAvalonia.UI.Controls;
  4. using LibHac;
  5. using Ryujinx.Ava.Common.Locale;
  6. using Ryujinx.Ava.Ui.ViewModels;
  7. using Ryujinx.HLE.FileSystem;
  8. using Ryujinx.HLE.HOS.Services.Account.Acc;
  9. using System;
  10. using System.Threading.Tasks;
  11. namespace Ryujinx.Ava.Ui.Controls
  12. {
  13. public partial class NavigationDialogHost : UserControl
  14. {
  15. public AccountManager AccountManager { get; }
  16. public ContentManager ContentManager { get; }
  17. public VirtualFileSystem VirtualFileSystem { get; }
  18. public HorizonClient HorizonClient { get; }
  19. public UserProfileViewModel ViewModel { get; set; }
  20. public NavigationDialogHost()
  21. {
  22. InitializeComponent();
  23. }
  24. public NavigationDialogHost(AccountManager accountManager, ContentManager contentManager,
  25. VirtualFileSystem virtualFileSystem, HorizonClient horizonClient)
  26. {
  27. AccountManager = accountManager;
  28. ContentManager = contentManager;
  29. VirtualFileSystem = virtualFileSystem;
  30. HorizonClient = horizonClient;
  31. ViewModel = new UserProfileViewModel(this);
  32. if (contentManager.GetCurrentFirmwareVersion() != null)
  33. {
  34. Task.Run(() =>
  35. {
  36. AvatarProfileViewModel.PreloadAvatars(contentManager, virtualFileSystem);
  37. });
  38. }
  39. InitializeComponent();
  40. }
  41. public void GoBack(object parameter = null)
  42. {
  43. if (ContentFrame.BackStack.Count > 0)
  44. {
  45. ContentFrame.GoBack();
  46. }
  47. ViewModel.LoadProfiles();
  48. }
  49. public void Navigate(Type sourcePageType, object parameter)
  50. {
  51. ContentFrame.Navigate(sourcePageType, parameter);
  52. }
  53. public static async Task Show(AccountManager ownerAccountManager, ContentManager ownerContentManager,
  54. VirtualFileSystem ownerVirtualFileSystem, HorizonClient ownerHorizonClient)
  55. {
  56. var content = new NavigationDialogHost(ownerAccountManager, ownerContentManager, ownerVirtualFileSystem, ownerHorizonClient);
  57. ContentDialog contentDialog = new ContentDialog
  58. {
  59. Title = LocaleManager.Instance["UserProfileWindowTitle"],
  60. PrimaryButtonText = "",
  61. SecondaryButtonText = "",
  62. CloseButtonText = LocaleManager.Instance["UserProfilesClose"],
  63. Content = content,
  64. Padding = new Thickness(0)
  65. };
  66. contentDialog.Closed += (sender, args) =>
  67. {
  68. content.ViewModel.Dispose();
  69. };
  70. await contentDialog.ShowAsync();
  71. }
  72. protected override void OnAttachedToVisualTree(VisualTreeAttachmentEventArgs e)
  73. {
  74. base.OnAttachedToVisualTree(e);
  75. Navigate(typeof(UserSelector), this);
  76. }
  77. }
  78. }