Files @ d6859ea7177f
Branch filter:

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

Jason Maltzen
Add some sanity checks on min/max concentration and min/max reagents in recipe generation. Also, clear out the search queue when generation has finished so the queue isn't loaded next time. This fixes the start/resume button state when entering the recipe generator after a prior run had finished.
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
        
        
    }
}