OverviewFilesCommitsIssuesDocsReleasesPeers

ifsrenderer-linux / WpfDisplay / ViewModels / PaletteCollectionViewModel.cs

42 lines · csharp ref:
using System.Collections.Generic;
using System.Collections.ObjectModel;

using CommunityToolkit.Mvvm.ComponentModel;
using CommunityToolkit.Mvvm.Input;

using IFSEngine.Model;

namespace WpfDisplay.ViewModels;

/// <summary>
/// Viewmodel wrapping a <see cref="PaletteCollection"/> for the browser.
/// </summary>
public partial class PaletteCollectionViewModel : ObservableObject
{
    public PaletteCollection Collection { get; }

    [ObservableProperty]
    public partial bool IsExpanded { get; set; } = true;
    public ObservableCollection<ColorPaletteViewModel> Palettes { get; } = [];

    public int PaletteCount => Palettes.Count;

    public PaletteCollectionViewModel(PaletteCollection collection)
    {
        Collection = collection;
    }

    public void RefreshPalettes(IEnumerable<ColorPaletteViewModel> paletteVms)
    {
        Palettes.Clear();
        foreach (var vm in paletteVms)
            Palettes.Add(vm);
    }

    [RelayCommand]
    private void ToggleExpanded()
    {
        IsExpanded = !IsExpanded;
    }
}