From e3c9f70dffe0d47dcfb8ae582eb459046b93f62f Mon Sep 17 00:00:00 2001 From: Mbucari Date: Mon, 6 Feb 2023 16:04:58 -0700 Subject: [PATCH] Move shared GUI code into AppScaffolding --- .../ILogForm.cs | 4 +- .../ProcessQueue => AppScaffolding}/LogMe.cs | 5 +- .../ObjectComparer[T].cs | 4 +- Source/LibationAvalonia/LogMe.cs | 58 ------------------- .../LibationAvalonia/ViewModels/GridEntry.cs | 1 + .../ViewModels/ProcessBookViewModel.cs | 9 +-- .../ViewModels/ProcessQueueViewModel.cs | 1 + .../Views/ProcessBookControl.axaml.cs | 1 + .../Views/ProcessQueueControl.axaml.cs | 1 + Source/LibationWinForms/GridView/GridEntry.cs | 1 + Source/LibationWinForms/ObjectComparer[T].cs | 10 ---- .../ProcessQueue/ProcessBook.cs | 1 + .../ProcessQueue/ProcessQueueControl.cs | 1 + 13 files changed, 16 insertions(+), 81 deletions(-) rename Source/{LibationWinForms/ProcessQueue => AppScaffolding}/ILogForm.cs (53%) rename Source/{LibationWinForms/ProcessQueue => AppScaffolding}/LogMe.cs (93%) rename Source/{LibationAvalonia => AppScaffolding}/ObjectComparer[T].cs (55%) delete mode 100644 Source/LibationAvalonia/LogMe.cs delete mode 100644 Source/LibationWinForms/ObjectComparer[T].cs diff --git a/Source/LibationWinForms/ProcessQueue/ILogForm.cs b/Source/AppScaffolding/ILogForm.cs similarity index 53% rename from Source/LibationWinForms/ProcessQueue/ILogForm.cs rename to Source/AppScaffolding/ILogForm.cs index 10b341b5..7486eded 100644 --- a/Source/LibationWinForms/ProcessQueue/ILogForm.cs +++ b/Source/AppScaffolding/ILogForm.cs @@ -1,6 +1,4 @@ -using System; - -namespace LibationWinForms.ProcessQueue +namespace AppScaffolding { public interface ILogForm { diff --git a/Source/LibationWinForms/ProcessQueue/LogMe.cs b/Source/AppScaffolding/LogMe.cs similarity index 93% rename from Source/LibationWinForms/ProcessQueue/LogMe.cs rename to Source/AppScaffolding/LogMe.cs index 06b84400..692140c7 100644 --- a/Source/LibationWinForms/ProcessQueue/LogMe.cs +++ b/Source/AppScaffolding/LogMe.cs @@ -1,10 +1,7 @@ using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; using System.Threading.Tasks; -namespace LibationWinForms.ProcessQueue +namespace AppScaffolding { // decouple serilog and form. include convenience factory method public class LogMe diff --git a/Source/LibationAvalonia/ObjectComparer[T].cs b/Source/AppScaffolding/ObjectComparer[T].cs similarity index 55% rename from Source/LibationAvalonia/ObjectComparer[T].cs rename to Source/AppScaffolding/ObjectComparer[T].cs index 5e3b23bb..88a257f9 100644 --- a/Source/LibationAvalonia/ObjectComparer[T].cs +++ b/Source/AppScaffolding/ObjectComparer[T].cs @@ -1,9 +1,9 @@ using System; using System.Collections; -namespace LibationAvalonia +namespace AppScaffolding { - internal class ObjectComparer : IComparer where T : IComparable + public class ObjectComparer : IComparer where T : IComparable { public int Compare(object x, object y) => ((T)x).CompareTo(y); } diff --git a/Source/LibationAvalonia/LogMe.cs b/Source/LibationAvalonia/LogMe.cs deleted file mode 100644 index 07432a19..00000000 --- a/Source/LibationAvalonia/LogMe.cs +++ /dev/null @@ -1,58 +0,0 @@ -using Avalonia.Threading; -using System; -using System.Threading.Tasks; - -namespace LibationAvalonia -{ - 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 Dispatcher.UIThread.InvokeAsync(() => LogForm?.WriteLine(tuple.Item2 ?? "Automated backup: error")); - await Dispatcher.UIThread.InvokeAsync(() => LogForm?.WriteLine("ERROR: " + tuple.Item1.Message)); - } - - private static async void LogMe_LogErrorString(object sender, string text) - => await Dispatcher.UIThread.InvokeAsync(() => LogForm?.WriteLine(text)); - - private static async void LogMe_LogInfo(object sender, string text) - => await Dispatcher.UIThread.InvokeAsync(() => 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/LibationAvalonia/ViewModels/GridEntry.cs b/Source/LibationAvalonia/ViewModels/GridEntry.cs index 0baad921..571a7037 100644 --- a/Source/LibationAvalonia/ViewModels/GridEntry.cs +++ b/Source/LibationAvalonia/ViewModels/GridEntry.cs @@ -1,4 +1,5 @@ using ApplicationServices; +using AppScaffolding; using Avalonia.Media; using DataLayer; using Dinah.Core; diff --git a/Source/LibationAvalonia/ViewModels/ProcessBookViewModel.cs b/Source/LibationAvalonia/ViewModels/ProcessBookViewModel.cs index 13f23bc8..5d536349 100644 --- a/Source/LibationAvalonia/ViewModels/ProcessBookViewModel.cs +++ b/Source/LibationAvalonia/ViewModels/ProcessBookViewModel.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using ApplicationServices; +using AppScaffolding; using AudibleApi; using AudibleApi.Common; using Avalonia.Media; @@ -394,7 +395,7 @@ $@" Title: {libraryBook.Book.Title} return ProcessBookResult.FailedRetry; } - private string SkipDialogText => @" + private static string SkipDialogText => @" An error occurred while trying to process this book. {0} @@ -404,9 +405,9 @@ An error occurred while trying to process this book. - IGNORE: Permanently ignore this book. Continue processing books. (Will not try this book again later.) ".Trim(); - private MessageBoxButtons SkipDialogButtons => MessageBoxButtons.AbortRetryIgnore; - private MessageBoxDefaultButton SkipDialogDefaultButton => MessageBoxDefaultButton.Button1; - private DialogResult SkipResult => DialogResult.Ignore; + private static MessageBoxButtons SkipDialogButtons => MessageBoxButtons.AbortRetryIgnore; + private static MessageBoxDefaultButton SkipDialogDefaultButton => MessageBoxDefaultButton.Button1; + private static DialogResult SkipResult => DialogResult.Ignore; } #endregion diff --git a/Source/LibationAvalonia/ViewModels/ProcessQueueViewModel.cs b/Source/LibationAvalonia/ViewModels/ProcessQueueViewModel.cs index 05b92134..d1531eba 100644 --- a/Source/LibationAvalonia/ViewModels/ProcessQueueViewModel.cs +++ b/Source/LibationAvalonia/ViewModels/ProcessQueueViewModel.cs @@ -1,4 +1,5 @@ using ApplicationServices; +using AppScaffolding; using Avalonia.Controls; using Avalonia.Threading; using DataLayer; diff --git a/Source/LibationAvalonia/Views/ProcessBookControl.axaml.cs b/Source/LibationAvalonia/Views/ProcessBookControl.axaml.cs index 62ec2c25..d13c66a0 100644 --- a/Source/LibationAvalonia/Views/ProcessBookControl.axaml.cs +++ b/Source/LibationAvalonia/Views/ProcessBookControl.axaml.cs @@ -5,6 +5,7 @@ using Avalonia.Markup.Xaml; using LibationAvalonia.ViewModels; using ApplicationServices; using DataLayer; +using AppScaffolding; namespace LibationAvalonia.Views { diff --git a/Source/LibationAvalonia/Views/ProcessQueueControl.axaml.cs b/Source/LibationAvalonia/Views/ProcessQueueControl.axaml.cs index 840a90f0..f90d453b 100644 --- a/Source/LibationAvalonia/Views/ProcessQueueControl.axaml.cs +++ b/Source/LibationAvalonia/Views/ProcessQueueControl.axaml.cs @@ -1,4 +1,5 @@ using ApplicationServices; +using AppScaffolding; using Avalonia; using Avalonia.Controls; using Avalonia.Data.Converters; diff --git a/Source/LibationWinForms/GridView/GridEntry.cs b/Source/LibationWinForms/GridView/GridEntry.cs index 4923b86b..f487fc88 100644 --- a/Source/LibationWinForms/GridView/GridEntry.cs +++ b/Source/LibationWinForms/GridView/GridEntry.cs @@ -1,4 +1,5 @@ using ApplicationServices; +using AppScaffolding; using DataLayer; using Dinah.Core; using Dinah.Core.DataBinding; diff --git a/Source/LibationWinForms/ObjectComparer[T].cs b/Source/LibationWinForms/ObjectComparer[T].cs deleted file mode 100644 index 5a02b215..00000000 --- a/Source/LibationWinForms/ObjectComparer[T].cs +++ /dev/null @@ -1,10 +0,0 @@ -using System; -using System.Collections; - -namespace LibationWinForms -{ - internal class ObjectComparer : IComparer where T : IComparable - { - public int Compare(object x, object y) => ((T)x).CompareTo(y); - } -} diff --git a/Source/LibationWinForms/ProcessQueue/ProcessBook.cs b/Source/LibationWinForms/ProcessQueue/ProcessBook.cs index 0ff85a9e..7573c654 100644 --- a/Source/LibationWinForms/ProcessQueue/ProcessBook.cs +++ b/Source/LibationWinForms/ProcessQueue/ProcessBook.cs @@ -15,6 +15,7 @@ using Dinah.Core.ErrorHandling; using Dinah.Core.WindowsDesktop.Drawing; using FileLiberator; using LibationFileManager; +using AppScaffolding; namespace LibationWinForms.ProcessQueue { diff --git a/Source/LibationWinForms/ProcessQueue/ProcessQueueControl.cs b/Source/LibationWinForms/ProcessQueue/ProcessQueueControl.cs index 53e8f819..8e223811 100644 --- a/Source/LibationWinForms/ProcessQueue/ProcessQueueControl.cs +++ b/Source/LibationWinForms/ProcessQueue/ProcessQueueControl.cs @@ -6,6 +6,7 @@ using System.Linq; using System.Threading.Tasks; using System.Windows.Forms; using ApplicationServices; +using AppScaffolding; using LibationFileManager; namespace LibationWinForms.ProcessQueue