using Common.StartupHelpers; using CommunityToolkit.Mvvm.ComponentModel; using CommunityToolkit.Mvvm.Input; using MultiTerm.Core.Common; using System.Collections.ObjectModel; namespace MultiTerm.Core.ViewModel; public partial class ShellViewModel : ObservableObject { private readonly IAbstractFactory sendReceiveViewModelFactory; [ObservableProperty] private string title = "ShellView Test"; [ObservableProperty] private ObservableCollection terminalViewModels = new(); [ObservableProperty] private ITerminalViewModel? selectedTerminalViewModel; #region Settings Menu Bar // TODO Initialize from File [ObservableProperty] private NewlineSeparatorType defaultReceiveNewlineSeparator = NewlineSeparatorType.None; // TODO Initialize from File [ObservableProperty] private NewlineSeparatorType defaultSendNewlineSeparator = NewlineSeparatorType.None; #endregion public ShellViewModel(IAbstractFactory sendReceiveViewModelFactory) { this.sendReceiveViewModelFactory = sendReceiveViewModelFactory; // create a new terminal this.AppendTerminal(this.sendReceiveViewModelFactory.Create()); } public void AppendTerminal(ITerminalViewModel newTerminal) { // guard null value if(newTerminal == null) { return; } // add to collection and set as selected this.TerminalViewModels.Add(newTerminal); this.SelectedTerminalViewModel = newTerminal; } partial void OnDefaultReceiveNewlineSeparatorChanged(NewlineSeparatorType value) { Console.WriteLine($"Changed to {value}"); } partial void OnDefaultSendNewlineSeparatorChanged(NewlineSeparatorType value) { Console.WriteLine($"Changed Send to {value}"); } [RelayCommand] public void TestButtonClicked() { this.DefaultReceiveNewlineSeparator = NewlineSeparatorType.CR_LF; } }