Parcourir la source

Multiselect Dialogs now remember selected filters

frogsoftware il y a 9 mois
Parent
commit
3d58831714

+ 1 - 1
inabox.wpf/DynamicGrid/DynamicDataGrid.cs

@@ -407,7 +407,7 @@ public class DynamicDataGrid<TEntity> : DynamicGrid<TEntity>, IDynamicDataGrid w
         ColumnsComponent.LoadColumnsMenu(menu);
     }
 
-    private string GetTag()
+    public string GetTag()
     {
         var tag = typeof(TEntity).Name;
         if (!string.IsNullOrWhiteSpace(ColumnsTag))

+ 18 - 5
inabox.wpf/DynamicGrid/MultiSelectDialog.cs

@@ -1,12 +1,11 @@
 using System;
 using System.ComponentModel;
 using System.Linq;
-using System.Linq.Expressions;
 using System.Runtime.CompilerServices;
 using System.Windows;
 using System.Windows.Controls;
-using System.Windows.Forms;
 using InABox.Clients;
+using InABox.Configuration;
 using InABox.Core;
 using InABox.Wpf;
 using Syncfusion.Data;
@@ -22,6 +21,11 @@ namespace InABox.DynamicGrid
 
         Entity[] Items(IColumns? columns = null);
     }
+    
+    public class MultiSelectDialogSettings : BaseObject, IUserConfigurationSettings
+    {
+        public DynamicGridSelectedFilterSettings Filters { get; set; } = new();
+    }
 
     public class MultiSelectDialog<T> : IMultiSelectDialog where T : Entity, IRemotable, IPersistent, new()
     {
@@ -34,7 +38,7 @@ namespace InABox.DynamicGrid
         private readonly Button ClearButton;
         private readonly Button OKButton;
         private ThemableWindow? window;
-
+        
         public MultiSelectDialog() : this(null, null)
         {
         }
@@ -42,6 +46,7 @@ namespace InABox.DynamicGrid
         //public MultiSelectDialog(Filter<T> filter, Expression<Func<T, object>>[] columns, bool multiselect = true) : base()
         public MultiSelectDialog(Filter<T>? filter, Columns<T>? columns, bool multiselect = true)
         {
+            
             _filter = filter;
 
             grid = new Grid();
@@ -55,7 +60,7 @@ namespace InABox.DynamicGrid
             grid.ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(80.0F, GridUnitType.Pixel) });
 
             datagrid = new DynamicDataGrid<T>();
-
+            
             datagrid.Reconfigure(options =>
             {
                 options.BeginUpdate();
@@ -67,7 +72,7 @@ namespace InABox.DynamicGrid
                 options.EndUpdate();
             });
             datagrid.Reconfigure();
-
+            
             datagrid.OnReload += Grid_OnReload;
             datagrid.OnDoubleClick += Grid_DoubleClick;
             datagrid.ColumnsTag = "MSD";
@@ -86,6 +91,14 @@ namespace InABox.DynamicGrid
                     datagrid.AddHiddenColumn(col.ToString());
             }
 
+            var _settings = new UserConfiguration<MultiSelectDialogSettings>(datagrid.GetTag()).Load();
+            datagrid.FilterComponent.SetSettings(_settings.Filters,false);
+            datagrid.FilterComponent.OnFiltersSelected += (settings) =>
+            {
+                var _settings = new MultiSelectDialogSettings() { Filters = settings };
+                new UserConfiguration<MultiSelectDialogSettings>(datagrid.GetTag()).Save(_settings);
+            };
+            
             datagrid.SetValue(Grid.RowProperty, 0);
             datagrid.SetValue(Grid.ColumnProperty, 0);
             datagrid.SetValue(Grid.ColumnSpanProperty, 4);