diff options
Diffstat (limited to 'Ryujinx.Ava/Ui/Windows/AvatarWindow.axaml.cs')
| -rw-r--r-- | Ryujinx.Ava/Ui/Windows/AvatarWindow.axaml.cs | 66 |
1 files changed, 36 insertions, 30 deletions
diff --git a/Ryujinx.Ava/Ui/Windows/AvatarWindow.axaml.cs b/Ryujinx.Ava/Ui/Windows/AvatarWindow.axaml.cs index 25e89846..2189f47d 100644 --- a/Ryujinx.Ava/Ui/Windows/AvatarWindow.axaml.cs +++ b/Ryujinx.Ava/Ui/Windows/AvatarWindow.axaml.cs @@ -1,70 +1,76 @@ -using Avalonia; +using Avalonia.Controls; using Avalonia.Interactivity; -using Avalonia.Markup.Xaml; -using Ryujinx.Ava.Common.Locale; +using FluentAvalonia.UI.Controls; +using FluentAvalonia.UI.Navigation; +using Ryujinx.Ava.Ui.Controls; +using Ryujinx.Ava.Ui.Models; using Ryujinx.Ava.Ui.ViewModels; using Ryujinx.HLE.FileSystem; -using System; namespace Ryujinx.Ava.Ui.Windows { - public class AvatarWindow : StyleableWindow + public partial class AvatarWindow : UserControl { + private NavigationDialogHost _parent; + private TempProfile _profile; + public AvatarWindow(ContentManager contentManager) { ContentManager = contentManager; - ViewModel = new AvatarProfileViewModel(() => ViewModel.ReloadImages()); DataContext = ViewModel; InitializeComponent(); -#if DEBUG - this.AttachDevTools(); -#endif - Title = $"Ryujinx {Program.Version} - " + LocaleManager.Instance["AvatarWindowTitle"]; } public AvatarWindow() { InitializeComponent(); -#if DEBUG - this.AttachDevTools(); -#endif + + AddHandler(Frame.NavigatedToEvent, (s, e) => + { + NavigatedTo(e); + }, RoutingStrategies.Direct); + } + + private void NavigatedTo(NavigationEventArgs arg) + { if (Program.PreviewerDetached) { - Title = $"Ryujinx {Program.Version} - " + LocaleManager.Instance["AvatarWindowTitle"]; + if (arg.NavigationMode == NavigationMode.New) + { + (_parent, _profile) = ((NavigationDialogHost, TempProfile))arg.Parameter; + ContentManager = _parent.ContentManager; + if (Program.PreviewerDetached) + { + ViewModel = new AvatarProfileViewModel(() => ViewModel.ReloadImages()); + } + + DataContext = ViewModel; + } } } - public ContentManager ContentManager { get; } - - public byte[] SelectedImage { get; set; } + public ContentManager ContentManager { get; private set; } internal AvatarProfileViewModel ViewModel { get; set; } - private void InitializeComponent() - { - AvaloniaXamlLoader.Load(this); - } - - protected override void OnClosed(EventArgs e) + private void CloseButton_OnClick(object sender, RoutedEventArgs e) { ViewModel.Dispose(); - base.OnClosed(e); - } - private void CloseButton_OnClick(object sender, RoutedEventArgs e) - { - Close(); + _parent.GoBack(); } private void ChooseButton_OnClick(object sender, RoutedEventArgs e) { if (ViewModel.SelectedIndex > -1) { - SelectedImage = ViewModel.SelectedImage; + _profile.Image = ViewModel.SelectedImage; + + ViewModel.Dispose(); - Close(); + _parent.GoBack(); } } } |
