Browse Source

Added some more converters

Frank van den Bos 1 năm trước cách đây
mục cha
commit
5c982c26ce

+ 0 - 1
InABox.Mobile/InABox.Mobile.Shared/Converters/BooleanToGridLengthConverter.cs

@@ -1,4 +1,3 @@
-using System;
 using System.Globalization;
 using Xamarin.Forms;
 

+ 22 - 0
InABox.Mobile/InABox.Mobile.Shared/Converters/BooleanToStringConverter.cs

@@ -0,0 +1,22 @@
+using System;
+
+namespace InABox.Mobile
+{
+    public class BooleanToStringConverter : AbstractConverter<bool,string>
+    {
+        public String TrueValue { get; set; }
+        public String FalseValue { get; set; }
+
+        protected override String Convert(bool value, object parameter = null)
+        {
+            return value ? TrueValue : FalseValue;
+        }
+
+        public BooleanToStringConverter()
+        {
+            TrueValue = "True";
+            FalseValue = "False";
+        }
+        
+    }
+}

+ 2 - 0
InABox.Mobile/InABox.Mobile.Shared/Converters/GuidToBooleanConverter.cs

@@ -21,4 +21,6 @@ namespace InABox.Mobile
             throw new NotImplementedException();
         }
     }
+    
+
 }

+ 13 - 0
InABox.Mobile/InABox.Mobile.Shared/Converters/ObjectToBooleanConverter.cs

@@ -0,0 +1,13 @@
+namespace InABox.Mobile
+{
+    public class ObjectToBooleanConverter : AbstractConverter<object,bool>
+    {
+
+        public bool NullValue { get; set; } = false;
+
+        protected override bool Convert(object value, object parameter = null)
+        {
+            return value == null ? NullValue : !NullValue;
+        }
+    }
+}

+ 15 - 2
InABox.Mobile/InABox.Mobile.Shared/DataModels/CoreRepository.cs

@@ -329,10 +329,20 @@ namespace InABox.Mobile
         #region Searching
         
         public Func<TItem, bool> SearchPredicate { get; set; }
+        
+        public Func<List<TItem>,List<TItem>> SortPredicate { get; set; }
 
-        public ICoreRepository Search(Func<TItem, bool> predicate)
+        public ICoreRepository Search(Func<TItem, bool> searchpredicate, Func<List<TItem>,List<TItem>> sortpredicate)
         {
-            SearchPredicate = predicate;
+            SortPredicate = sortpredicate;
+            SearchPredicate = searchpredicate;
+            Search();
+            return this;
+        }
+        
+        public ICoreRepository Search(Func<TItem, bool> searchpredicate)
+        {
+            SearchPredicate = searchpredicate;
             Search();
             return this;
         }
@@ -346,6 +356,9 @@ namespace InABox.Mobile
                     ? new List<TItem>(AllItems.Where(SearchPredicate))
                     : new List<TItem>(AllItems);
             
+            if (SortPredicate != null)
+                items = SortPredicate(items);
+            
             SelectedItems.ReplaceRange(items.Where(x=>curselected.Contains(x)));
             OnPropertyChanged(nameof(SelectedItems));