47 lines
1.1 KiB
C#
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);
|
|
}
|
|
}
|
|
}
|