Changeset - a78dba5bed0e
[Not reviewed]
default
0 0 1
Jason Maltzen - 3 years ago 2021-09-11 03:40:21
jason@hiddenachievement.com
Add stub view model code for recipe library (future feature work)
1 file changed with 51 insertions and 0 deletions:
0 comments (0 inline, 0 general)
ViewModels/RecipeLibraryViewModel.cs
Show inline comments
 
new file 100644
 
using System.Collections.Generic;
 
using System.Reactive;
 
using System.Reactive.Linq;
 
using DesertPaintCodex.Services;
 
using ReactiveUI;
 

	
 

	
 
namespace DesertPaintCodex.ViewModels
 
{
 
    public class RecipeLibraryViewModel : ViewModelBase
 
    {
 
        private string _profileName = string.Empty;
 
        public string ProfileName { get => _profileName; set => this.RaiseAndSetIfChanged(ref _profileName, value); }
 

	
 
        private readonly ObservableAsPropertyHelper<bool> _duplicateWarning;
 
        public bool DuplicateWarning => _duplicateWarning.Value;
 

	
 
        public RecipeLibraryViewModel()
 
        {
 
            List<string> profiles = ProfileManager.GetProfileList();
 

	
 
            // TODO .....
 

	
 
            // Duplicate warning display logic.
 
            this.WhenAnyValue(x => x.ProfileName)
 
                .Select(profileName =>
 
                    (!string.IsNullOrWhiteSpace(profileName) &&
 
                    profiles.Contains(profileName)))
 
                    .ToProperty(this,
 
                        x => x.DuplicateWarning,
 
                        out _duplicateWarning);
 

	
 
            // TODO: Use proper validation to decorate the TextBox, as well.
 

	
 
            // OK button enabling logic.
 
            var okEnabled = this.WhenAnyValue(
 
               x => x.ProfileName,
 
               x => !string.IsNullOrWhiteSpace(x) &&
 
                    !profiles.Contains(x));
 

	
 
            // Button commands.
 
            Cancel = ReactiveCommand.Create(() => { });
 
            Ok = ReactiveCommand.Create(() => {
 
                ProfileManager.CreateNewProfile(_profileName);
 
            }, okEnabled);
 
        }
 

	
 
        public ReactiveCommand<Unit, Unit> Cancel { get; }
 
        public ReactiveCommand<Unit, Unit> Ok { get; }
 
    }
 
}
0 comments (0 inline, 0 general)