using System.Collections.ObjectModel; using CommunityToolkit.Mvvm.ComponentModel; using CommunityToolkit.Mvvm.Input; using System.Text; using System.Windows; using CodeMerger.Models; namespace CodeMerger.ViewModels; public partial class LogViewModel : ObservableObject { [ObservableProperty] private ObservableCollection logMessages = new(); public void AddLog(string message, LogLevel level = LogLevel.Info) { App.Current.Dispatcher.Invoke(() => { LogMessages.Add(new LogMessage(message, level)); }); } public void Clear() { LogMessages.Clear(); } [RelayCommand] private void CopyToClipboard() { var sb = new StringBuilder(); foreach (var message in LogMessages) { sb.AppendLine($"[{message.Timestamp:HH:mm:ss.fff}] [{message.Level}] {message.Message}"); } try { Clipboard.SetText(sb.ToString()); } catch (System.Exception ex) { AddLog($"Error copying to clipboard: {ex.Message}", LogLevel.Error); } } }