From 6aa0a1f8b9f651def9309117117b718fcb16cbaf Mon Sep 17 00:00:00 2001 From: Michael Bucari-Tovo Date: Fri, 22 Jul 2022 19:27:21 -0600 Subject: [PATCH] Remove references to winforms --- Source/LibationWinForms/AvaloniaUI/LogMe.cs | 61 +++++++++++++++++++ .../AvaloniaUI/ViewModels/GridEntry.cs | 1 - .../ViewModels/ProcessBookViewModel.cs | 4 +- .../ViewModels/ProcessQueueViewModel.cs | 6 +- .../MainWindow/MainWindow.Filter.axaml.cs | 1 - .../MainWindow.QuickFilters.axaml.cs | 1 - .../MainWindow.RemoveBooks.axaml.cs | 1 - .../MainWindow/MainWindow.ScanManual.axaml.cs | 1 - .../MainWindow/MainWindow.Settings.axaml.cs | 3 +- .../MainWindow.VisibleBooks.axaml.cs | 1 - .../Views/ProcessBookControl.axaml.cs | 2 +- .../Views/ProcessQueueControl.axaml.cs | 2 +- 12 files changed, 69 insertions(+), 15 deletions(-) create mode 100644 Source/LibationWinForms/AvaloniaUI/LogMe.cs diff --git a/Source/LibationWinForms/AvaloniaUI/LogMe.cs b/Source/LibationWinForms/AvaloniaUI/LogMe.cs new file mode 100644 index 00000000..bb3344ff --- /dev/null +++ b/Source/LibationWinForms/AvaloniaUI/LogMe.cs @@ -0,0 +1,61 @@ +using System; +using System.Threading.Tasks; + +namespace LibationWinForms.AvaloniaUI +{ + public interface ILogForm + { + void WriteLine(string text); + } + + // decouple serilog and form. include convenience factory method + public class LogMe + { + public event EventHandler LogInfo; + public event EventHandler LogErrorString; + public event EventHandler<(Exception, string)> LogError; + + private LogMe() + { + LogInfo += (_, text) => Serilog.Log.Logger.Information($"Automated backup: {text}"); + LogErrorString += (_, text) => Serilog.Log.Logger.Error(text); + LogError += (_, tuple) => Serilog.Log.Logger.Error(tuple.Item1, tuple.Item2 ?? "Automated backup: error"); + } + private static ILogForm LogForm; + public static LogMe RegisterForm(T form) where T : ILogForm + { + var logMe = new LogMe(); + + if (form is null) + return logMe; + + LogForm = form; + + logMe.LogInfo += LogMe_LogInfo; + logMe.LogErrorString += LogMe_LogErrorString; + logMe.LogError += LogMe_LogError; + + return logMe; + } + + private static async void LogMe_LogError(object sender, (Exception, string) tuple) + { + await Task.Run(() => LogForm?.WriteLine(tuple.Item2 ?? "Automated backup: error")); + await Task.Run(() => LogForm?.WriteLine("ERROR: " + tuple.Item1.Message)); + } + + private static async void LogMe_LogErrorString(object sender, string text) + { + await Task.Run(() => LogForm?.WriteLine(text)); + } + + private static async void LogMe_LogInfo(object sender, string text) + { + await Task.Run(() => LogForm?.WriteLine(text)); + } + + public void Info(string text) => LogInfo?.Invoke(this, text); + public void Error(string text) => LogErrorString?.Invoke(this, text); + public void Error(Exception ex, string text = null) => LogError?.Invoke(this, (ex, text)); + } +} \ No newline at end of file diff --git a/Source/LibationWinForms/AvaloniaUI/ViewModels/GridEntry.cs b/Source/LibationWinForms/AvaloniaUI/ViewModels/GridEntry.cs index 991ca7ee..e7ed94f4 100644 --- a/Source/LibationWinForms/AvaloniaUI/ViewModels/GridEntry.cs +++ b/Source/LibationWinForms/AvaloniaUI/ViewModels/GridEntry.cs @@ -4,7 +4,6 @@ using Dinah.Core; using Dinah.Core.DataBinding; using Dinah.Core.Drawing; using LibationFileManager; -using LibationWinForms.GridView; using ReactiveUI; using System; using System.Collections; diff --git a/Source/LibationWinForms/AvaloniaUI/ViewModels/ProcessBookViewModel.cs b/Source/LibationWinForms/AvaloniaUI/ViewModels/ProcessBookViewModel.cs index 569da78c..954d1ab2 100644 --- a/Source/LibationWinForms/AvaloniaUI/ViewModels/ProcessBookViewModel.cs +++ b/Source/LibationWinForms/AvaloniaUI/ViewModels/ProcessBookViewModel.cs @@ -89,9 +89,9 @@ namespace LibationWinForms.AvaloniaUI.ViewModels private Processable NextProcessable() => _currentProcessable = null; private Processable _currentProcessable; private readonly Queue> Processes = new(); - private readonly ProcessQueue.LogMe Logger; + private readonly LogMe Logger; - public ProcessBookViewModel(LibraryBook libraryBook, ProcessQueue.LogMe logme) + public ProcessBookViewModel(LibraryBook libraryBook, LogMe logme) { LibraryBook = libraryBook; Logger = logme; diff --git a/Source/LibationWinForms/AvaloniaUI/ViewModels/ProcessQueueViewModel.cs b/Source/LibationWinForms/AvaloniaUI/ViewModels/ProcessQueueViewModel.cs index 4fd67472..5bf0990a 100644 --- a/Source/LibationWinForms/AvaloniaUI/ViewModels/ProcessQueueViewModel.cs +++ b/Source/LibationWinForms/AvaloniaUI/ViewModels/ProcessQueueViewModel.cs @@ -11,7 +11,7 @@ using System.Threading.Tasks; namespace LibationWinForms.AvaloniaUI.ViewModels { - public class ProcessQueueViewModel : ViewModelBase, ProcessQueue.ILogForm + public class ProcessQueueViewModel : ViewModelBase, ILogForm { public ObservableCollection LogEntries { get; } = new(); public TrackedQueue Items { get; } = new(); @@ -21,13 +21,13 @@ namespace LibationWinForms.AvaloniaUI.ViewModels public Task QueueRunner { get; private set; } public bool Running => !QueueRunner?.IsCompleted ?? false; - private readonly ProcessQueue.LogMe Logger; + private readonly LogMe Logger; public ProcessQueueViewModel() { Queue.QueuededCountChanged += Queue_QueuededCountChanged; Queue.CompletedCountChanged += Queue_CompletedCountChanged; - Logger = ProcessQueue.LogMe.RegisterForm(this); + Logger = LogMe.RegisterForm(this); } private int _completedCount; diff --git a/Source/LibationWinForms/AvaloniaUI/Views/MainWindow/MainWindow.Filter.axaml.cs b/Source/LibationWinForms/AvaloniaUI/Views/MainWindow/MainWindow.Filter.axaml.cs index 9525f61b..8e883693 100644 --- a/Source/LibationWinForms/AvaloniaUI/Views/MainWindow/MainWindow.Filter.axaml.cs +++ b/Source/LibationWinForms/AvaloniaUI/Views/MainWindow/MainWindow.Filter.axaml.cs @@ -1,5 +1,4 @@ using Avalonia.Input; -using LibationWinForms.Dialogs; using System; using System.Linq; using System.Threading.Tasks; diff --git a/Source/LibationWinForms/AvaloniaUI/Views/MainWindow/MainWindow.QuickFilters.axaml.cs b/Source/LibationWinForms/AvaloniaUI/Views/MainWindow/MainWindow.QuickFilters.axaml.cs index d1c3408a..c5fc0f69 100644 --- a/Source/LibationWinForms/AvaloniaUI/Views/MainWindow/MainWindow.QuickFilters.axaml.cs +++ b/Source/LibationWinForms/AvaloniaUI/Views/MainWindow/MainWindow.QuickFilters.axaml.cs @@ -1,6 +1,5 @@ using Avalonia.Controls; using LibationFileManager; -using LibationWinForms.Dialogs; using System; using System.Linq; diff --git a/Source/LibationWinForms/AvaloniaUI/Views/MainWindow/MainWindow.RemoveBooks.axaml.cs b/Source/LibationWinForms/AvaloniaUI/Views/MainWindow/MainWindow.RemoveBooks.axaml.cs index 5d0c4cbc..8e0cd26a 100644 --- a/Source/LibationWinForms/AvaloniaUI/Views/MainWindow/MainWindow.RemoveBooks.axaml.cs +++ b/Source/LibationWinForms/AvaloniaUI/Views/MainWindow/MainWindow.RemoveBooks.axaml.cs @@ -1,5 +1,4 @@ using AudibleUtilities; -using LibationWinForms.Dialogs; using System; using System.Linq; diff --git a/Source/LibationWinForms/AvaloniaUI/Views/MainWindow/MainWindow.ScanManual.axaml.cs b/Source/LibationWinForms/AvaloniaUI/Views/MainWindow/MainWindow.ScanManual.axaml.cs index aab08cb4..7a812820 100644 --- a/Source/LibationWinForms/AvaloniaUI/Views/MainWindow/MainWindow.ScanManual.axaml.cs +++ b/Source/LibationWinForms/AvaloniaUI/Views/MainWindow/MainWindow.ScanManual.axaml.cs @@ -2,7 +2,6 @@ using AudibleUtilities; using Avalonia.Controls; using LibationFileManager; -using LibationWinForms.Dialogs; using System; using System.Collections.Generic; using System.Linq; diff --git a/Source/LibationWinForms/AvaloniaUI/Views/MainWindow/MainWindow.Settings.axaml.cs b/Source/LibationWinForms/AvaloniaUI/Views/MainWindow/MainWindow.Settings.axaml.cs index 5a3cdba9..1f0040dd 100644 --- a/Source/LibationWinForms/AvaloniaUI/Views/MainWindow/MainWindow.Settings.axaml.cs +++ b/Source/LibationWinForms/AvaloniaUI/Views/MainWindow/MainWindow.Settings.axaml.cs @@ -1,5 +1,4 @@ -using LibationWinForms.Dialogs; -using System; +using System; using System.Linq; namespace LibationWinForms.AvaloniaUI.Views diff --git a/Source/LibationWinForms/AvaloniaUI/Views/MainWindow/MainWindow.VisibleBooks.axaml.cs b/Source/LibationWinForms/AvaloniaUI/Views/MainWindow/MainWindow.VisibleBooks.axaml.cs index a19241a1..fe3a8de8 100644 --- a/Source/LibationWinForms/AvaloniaUI/Views/MainWindow/MainWindow.VisibleBooks.axaml.cs +++ b/Source/LibationWinForms/AvaloniaUI/Views/MainWindow/MainWindow.VisibleBooks.axaml.cs @@ -1,7 +1,6 @@ using ApplicationServices; using Avalonia.Threading; using DataLayer; -using LibationWinForms.Dialogs; using System; using System.Linq; using System.Threading.Tasks; diff --git a/Source/LibationWinForms/AvaloniaUI/Views/ProcessBookControl.axaml.cs b/Source/LibationWinForms/AvaloniaUI/Views/ProcessBookControl.axaml.cs index 01376344..48125801 100644 --- a/Source/LibationWinForms/AvaloniaUI/Views/ProcessBookControl.axaml.cs +++ b/Source/LibationWinForms/AvaloniaUI/Views/ProcessBookControl.axaml.cs @@ -23,7 +23,7 @@ namespace LibationWinForms.AvaloniaUI.Views using var context = DbContexts.GetContext(); DataContext = new ProcessBookViewModel( context.GetLibraryBook_Flat_NoTracking("B017V4IM1G"), - ProcessQueue.LogMe.RegisterForm(default(ProcessQueue.ILogForm)) + LogMe.RegisterForm(default(ILogForm)) ); return; } diff --git a/Source/LibationWinForms/AvaloniaUI/Views/ProcessQueueControl.axaml.cs b/Source/LibationWinForms/AvaloniaUI/Views/ProcessQueueControl.axaml.cs index 0df50ef4..fcaee7af 100644 --- a/Source/LibationWinForms/AvaloniaUI/Views/ProcessQueueControl.axaml.cs +++ b/Source/LibationWinForms/AvaloniaUI/Views/ProcessQueueControl.axaml.cs @@ -26,7 +26,7 @@ namespace LibationWinForms.AvaloniaUI.Views if (Design.IsDesignMode) { var vm = new ProcessQueueViewModel(); - var Logger = ProcessQueue.LogMe.RegisterForm(vm); + var Logger = LogMe.RegisterForm(vm); DataContext = vm; using var context = DbContexts.GetContext(); List testList = new()