CodeMerger/ViewModels/LogViewModel.cs

47 lines
1.1 KiB
C#

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<LogMessage> 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);
}
}
}