using Avalonia.Collections; using Shaker.Models; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ShakerApp.ViewModels { internal class LogViewModel:ViewModelBase { private object locker = new object(); public AvaloniaList> Logs { get; } = new AvaloniaList>(); private LogViewModel() { ButtonVisibily = false; Content = typeof(Views.LogsView); GetEvent().Subscrip((sender, args) => { lock (locker) { Tools.DispatherInovke.Inovke(()=> Logs.Add(new IndexValueItemViewModel(Logs.Count+1,new LogItemViewModel(args.Data.Message,args.Data.LogType)))); } }); GetEvent(nameof(Models.LogItemModel)).Subscrip((sender, args) => { if(args.Data.Length >=2 && args.Data[0] is string msg && args.Data[1] is LogType type) { AddLog(msg, type); } }); } static LogViewModel() { } public void AddLog(string msg,LogType logType = LogType.Info) { lock (locker) { Tools.DispatherInovke.Inovke(()=> Logs.Add(new IndexValueItemViewModel(Logs.Count + 1, new LogItemViewModel(msg, logType)))); } } public static LogViewModel Instance { get; } = new LogViewModel(); } }