Browse Source

Added a TryFindDynamicGrid function

Kenric Nugteren 1 year ago
parent
commit
6299c95088

+ 0 - 3
inabox.wpf/DigitalForms/Designer/Controls/Fields/DFSignatureControl.cs

@@ -13,9 +13,6 @@ namespace InABox.DynamicGrid
 {
 {
     public class DFSignatureControl : DynamicFormFieldControl<DFLayoutSignaturePad, DFLayoutSignaturePadProperties, byte[], byte[]?>
     public class DFSignatureControl : DynamicFormFieldControl<DFLayoutSignaturePad, DFLayoutSignaturePadProperties, byte[], byte[]?>
     {
     {
-        
-        private DFLayoutEmbeddedMediaValue _value = null!;
-        
         private Grid Grid = null!; // Late-initialised
         private Grid Grid = null!; // Late-initialised
         private Image Image = null!; // Late-initialised
         private Image Image = null!; // Late-initialised
         private bool _isEmpty = true;
         private bool _isEmpty = true;

+ 2 - 2
inabox.wpf/DigitalForms/Designer/Controls/Fields/DFVideoControl.cs

@@ -28,9 +28,9 @@ namespace InABox.DynamicGrid
         private Image? _thumbnail;
         private Image? _thumbnail;
         private Grid? _contentGrid;
         private Grid? _contentGrid;
         private Grid? _grid;
         private Grid? _grid;
-        Point center;
+        /*Point center;
         int rotation = 90;
         int rotation = 90;
-        bool firstPlay = true;
+        bool firstPlay = true;*/
         private string _tempfilename = null!;
         private string _tempfilename = null!;
 
 
         byte[]? Data;
         byte[]? Data;

+ 19 - 8
inabox.wpf/DynamicGrid/DynamicGridUtils.cs

@@ -12,6 +12,7 @@ using InABox.Core;
 using InABox.Wpf;
 using InABox.Wpf;
 using InABox.Core.Reports;
 using InABox.Core.Reports;
 using Syncfusion.Data.Extensions;
 using Syncfusion.Data.Extensions;
+using System.Diagnostics.CodeAnalysis;
 
 
 namespace InABox.DynamicGrid
 namespace InABox.DynamicGrid
 {
 {
@@ -442,9 +443,9 @@ namespace InABox.DynamicGrid
 
 
         private static Dictionary<Type, Type[]> _dynamicGrids = new();
         private static Dictionary<Type, Type[]> _dynamicGrids = new();
 
 
-        public static Type FindDynamicGrid(Type gridType, Type entityType)
+        public static bool TryFindDynamicGrid(Type gridType, Type entityType, [NotNullWhen(true)] out Type? grid)
         {
         {
-            if(!_dynamicGrids.TryGetValue(gridType, out var grids))
+            if (!_dynamicGrids.TryGetValue(gridType, out var grids))
             {
             {
                 grids = CoreUtils.TypeList(
                 grids = CoreUtils.TypeList(
                     AppDomain.CurrentDomain.GetAssemblies(),
                     AppDomain.CurrentDomain.GetAssemblies(),
@@ -457,7 +458,7 @@ namespace InABox.DynamicGrid
                 ).ToArray();
                 ).ToArray();
                 _dynamicGrids[gridType] = grids;
                 _dynamicGrids[gridType] = grids;
             }
             }
-            grids = grids.Where(x=>x.IsSubclassOfRawGeneric(gridType)).ToArray();
+            grids = grids.Where(x => x.IsSubclassOfRawGeneric(gridType)).ToArray();
             var entityGrids = grids.Where(x =>
             var entityGrids = grids.Where(x =>
             {
             {
                 var baseGrid = x.GetSuperclassDefinition(typeof(BaseDynamicGrid<>));
                 var baseGrid = x.GetSuperclassDefinition(typeof(BaseDynamicGrid<>));
@@ -465,17 +466,27 @@ namespace InABox.DynamicGrid
             }).ToList();
             }).ToList();
 
 
             var defaults = entityGrids.Where(x => x.IsAssignableTo(typeof(IDefaultGrid))).ToList();
             var defaults = entityGrids.Where(x => x.IsAssignableTo(typeof(IDefaultGrid))).ToList();
-            if(defaults.Count > 0)
+            if (defaults.Count > 0)
             {
             {
-                if(defaults.Count > 1)
+                if (defaults.Count > 1)
                 {
                 {
                     Logger.Send(LogType.Information, ClientFactory.UserID, $"Error: {defaults.Count} IDefaultGrid derivations for {gridType.Name} of {entityType.Name}");
                     Logger.Send(LogType.Information, ClientFactory.UserID, $"Error: {defaults.Count} IDefaultGrid derivations for {gridType.Name} of {entityType.Name}");
                 }
                 }
-                return defaults.First();
+                grid = defaults.First();
+                return true;
             }
             }
 
 
-            return entityGrids.FirstOrDefault()
-                ?? gridType.MakeGenericType(entityType);
+            grid = entityGrids.FirstOrDefault();
+            return grid is not null;
+        }
+
+        public static Type FindDynamicGrid(Type gridType, Type entityType)
+        {
+            if(TryFindDynamicGrid(gridType, entityType, out var grid))
+            {
+                return grid;
+            }
+            return gridType.MakeGenericType(entityType);
         }
         }
 
 
         public static Window CreateGridWindow(string title, BaseDynamicGrid dynamicGrid)
         public static Window CreateGridWindow(string title, BaseDynamicGrid dynamicGrid)