Files @ 5e28ba3945f7
Branch filter:

Location: ATITD-Tools/Desert-Paint-Codex/Views/UserControlBase.cs

Jason Maltzen
Recipe count is now a ulong instead of an int so it can show values > 2.47 billion. Also, don't allow clearing the recipe list while the recipe generator is running.
using System.Reactive.Disposables;
using System.Threading.Tasks;
using Avalonia;
using Avalonia.Controls;
using Avalonia.Controls.ApplicationLifetimes;
using Avalonia.ReactiveUI;
using DesertPaintCodex.ViewModels;
using ReactiveUI;

namespace DesertPaintCodex.Views
{
    public class UserControlBase<T> : ReactiveUserControl<T> where T : ViewModelBase
    {
        public UserControlBase()
        {
            this.WhenActivated((disposables) =>
            {
                ViewModel?.ShowMessageBoxDialog.RegisterHandler(ShowDialog<MessageBoxView,MessageBoxViewModel,int>).DisposeWith(disposables);
            });
        }

        #region Dialog handlers

        protected async Task ShowDialog<View, ViewModel, ReturnType>(
            InteractionContext<ViewModel, ReturnType> interaction) where View : Window, new()
        {
            if (Application.Current.ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop)
            {
                View       dialog = new() {DataContext = interaction.Input};
                ReturnType result = await dialog.ShowDialog<ReturnType>(desktop.MainWindow);
                interaction.SetOutput(result);
            }
        }
        
        #endregion
        
        
    }
}