Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 3 additions & 9 deletions Microsoft.Toolkit.Future/Adorners/AdornerLayer.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// Licensed to the .NET Foundation under one or more agreements.
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.

Expand All @@ -16,20 +16,14 @@ namespace CommunityToolkit.WinUI.Controls.Future;
/// </summary>
public partial class AdornerLayer : Canvas
{
public static UIElement GetXaml(FrameworkElement obj)
{
return (UIElement)obj.GetValue(XamlProperty);
}
public static UIElement GetXaml(FrameworkElement obj) => (UIElement)obj.GetValue(XamlProperty);

/// <summary>
/// Sets the <see cref="XamlProperty"/> of a <see cref="FrameworkElement"/>. Use this to attach any <see cref="UIElement"/> as an adorner to another <see cref="FrameworkElement"/>. Requires that an <see cref="AdornerLayer"/> is available in the visual tree above the adorned element.
/// </summary>
/// <param name="obj"></param>
/// <param name="value"></param>
public static void SetXaml(FrameworkElement obj, UIElement value)
{
obj.SetValue(XamlProperty, value);
}
public static void SetXaml(FrameworkElement obj, UIElement value) => obj.SetValue(XamlProperty, value);

/// <summary>
/// Identifies the Xaml Attached Property.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,5 @@ public object Convert(object value, Type targetType, object parameter, string la
}

public object ConvertBack(object value, Type targetType, object parameter, string language)
{
throw new NotImplementedException();
}
=> throw new NotImplementedException();
}
31 changes: 7 additions & 24 deletions Microsoft.Toolkit.Future/Data/Grouping.cs
Original file line number Diff line number Diff line change
Expand Up @@ -12,42 +12,25 @@

namespace Microsoft.Toolkit.Future.Data;

public class Grouping<TKey, TElement> : IGrouping<TKey, TElement>, IEnumerable<TElement>, IEnumerable, ICollectionViewGroup
public class Grouping<TKey, TElement>(TKey key, IEnumerable<TElement> items) : IGrouping<TKey, TElement>, IEnumerable<TElement>, IEnumerable, ICollectionViewGroup
{
public object Group => Key;

public IObservableVector<object> GroupItems => (IObservableVector<object>)new ObservableCollection<object>((IEnumerable<object>)this);

public TKey Key { get; private set; }
public TKey Key { get; private set; } = key;

private IEnumerable<TElement> Items { get; }
public IEnumerator<TElement> GetEnumerator() => items.GetEnumerator();

public Grouping(TKey key, IEnumerable<TElement> items)
{
Key = key;
Items = items;
}
IEnumerator IEnumerable.GetEnumerator() => items.GetEnumerator();

public IEnumerator<TElement> GetEnumerator()
{
return Items.GetEnumerator();
}

IEnumerator IEnumerable.GetEnumerator()
{
return Items.GetEnumerator();
}

public override string ToString()
{
return Key?.ToString();
}
public override string ToString() => Key?.ToString();
}

public static class EnumerableExtensions
{
public static Grouping<TKey, TElement> ToGroup<TKey, TElement>(this IEnumerable<TElement> list, TKey key)
=> new Grouping<TKey, TElement>(key, list);
=> new(key, list);

public static IEnumerable<Grouping<TKey, TElement>> ToGroup<TKey, TElement>(this IEnumerable<TElement> list, Func<TElement, TKey> keySelector)
=> list.GroupBy(keySelector, (key, items) => new Grouping<TKey, TElement>(key, items));
Expand All @@ -57,5 +40,5 @@ public static class GroupingExtensions
{
// Converts a System Group to this Group.
public static Grouping<TKey, TElement> ToGroup<TKey, TElement>(this IGrouping<TKey, TElement> group)
=> new Grouping<TKey, TElement>(group.Key, group.AsEnumerable());
=> new(group.Key, group.AsEnumerable());
}
103 changes: 29 additions & 74 deletions Microsoft.Toolkit.Future/Extensions/Bind.Boolean.cs
Original file line number Diff line number Diff line change
Expand Up @@ -8,78 +8,33 @@ namespace CommunityToolkit.WinUI.Extensions.Future;

public static partial class Bind
{
public static bool And(bool value1, bool value2)
{
return value1 && value2;
}

public static bool Or(bool value1, bool value2)
{
return value1 || value2;
}

public static bool Not(bool value)
{
return !value;
}

public static bool GreaterThan(int lhs, int rhs)
{
return lhs > rhs;
}

public static bool GreaterThan(double lhs, double rhs)
{
return lhs > rhs;
}

public static bool LessThan(int lhs, int rhs)
{
return lhs < rhs;
}

public static bool LessThan(double lhs, double rhs)
{
return lhs < rhs;
}

public static bool GreaterThanOrEqualTo(int lhs, int rhs)
{
return lhs >= rhs;
}

public static bool GreaterThanOrEqualTo(double lhs, double rhs)
{
return lhs >= rhs;
}

public static bool LessThanOrEqualTo(int lhs, int rhs)
{
return lhs <= rhs;
}

public static bool LessThanOrEqualTo(double lhs, double rhs)
{
return lhs <= rhs;
}

public static bool EqualTo(int lhs, int rhs)
{
return lhs == rhs;
}

public static bool EqualTo(double lhs, double rhs, double tolerance = 0.0)
{
return Math.Abs(lhs - rhs) <= tolerance;
}

public static bool NotEqualTo(int lhs, int rhs)
{
return lhs != rhs;
}

public static bool NotEqualTo(double lhs, double rhs, double tolerance = 0.0)
{
return !EqualTo(lhs, rhs, tolerance);
}
public static bool And(bool value1, bool value2) => value1 && value2;

public static bool Or(bool value1, bool value2) => value1 || value2;

public static bool Not(bool value) => !value;

public static bool GreaterThan(int lhs, int rhs) => lhs > rhs;

public static bool GreaterThan(double lhs, double rhs) => lhs > rhs;

public static bool LessThan(int lhs, int rhs) => lhs < rhs;

public static bool LessThan(double lhs, double rhs) => lhs < rhs;

public static bool GreaterThanOrEqualTo(int lhs, int rhs) => lhs >= rhs;

public static bool GreaterThanOrEqualTo(double lhs, double rhs) => lhs >= rhs;

public static bool LessThanOrEqualTo(int lhs, int rhs) => lhs <= rhs;

public static bool LessThanOrEqualTo(double lhs, double rhs) => lhs <= rhs;

public static bool EqualTo(int lhs, int rhs) => lhs == rhs;

public static bool EqualTo(double lhs, double rhs, double tolerance = 0.0) => Math.Abs(lhs - rhs) <= tolerance;

public static bool NotEqualTo(int lhs, int rhs) => lhs != rhs;

public static bool NotEqualTo(double lhs, double rhs, double tolerance = 0.0) => !EqualTo(lhs, rhs, tolerance);
}
10 changes: 2 additions & 8 deletions Microsoft.Toolkit.Future/Extensions/Bind.Math.cs
Original file line number Diff line number Diff line change
Expand Up @@ -59,13 +59,7 @@ public static double Multiply(double value, double factor, double max = double.M
return result;
}

public static double Divide(double value, double factor)
{
return value / factor;
}
public static double Divide(double value, double factor) => value / factor;

public static double Clamp(double value, double min, double max)
{
return Math.Min(max, Math.Max(min, value));
}
public static double Clamp(double value, double min, double max) => Math.Min(max, Math.Max(min, value));
}
117 changes: 33 additions & 84 deletions Microsoft.Toolkit.Future/Extensions/Bind.Visibility.cs
Original file line number Diff line number Diff line change
Expand Up @@ -10,90 +10,39 @@ namespace CommunityToolkit.WinUI.Extensions.Future;

public static partial class Bind
{
public static Visibility AndV(bool value1, bool value2)
{
return (value1 && value2) ? Visibility.Visible : Visibility.Collapsed;
}

public static Visibility OrV(bool value1, bool value2)
{
return (value1 || value2) ? Visibility.Visible : Visibility.Collapsed;
}

public static Visibility NotV(bool value)
{
return !value ? Visibility.Visible : Visibility.Collapsed;
}

public static Visibility GreaterThanV(int lhs, int rhs)
{
return lhs > rhs ? Visibility.Visible : Visibility.Collapsed;
}

public static Visibility GreaterThanV(double lhs, double rhs)
{
return lhs > rhs ? Visibility.Visible : Visibility.Collapsed;
}

public static Visibility LessThanV(int lhs, int rhs)
{
return lhs < rhs ? Visibility.Visible : Visibility.Collapsed;
}

public static Visibility LessThanV(double lhs, double rhs)
{
return lhs < rhs ? Visibility.Visible : Visibility.Collapsed;
}

public static Visibility GreaterThanOrEqualToV(int lhs, int rhs)
{
return lhs >= rhs ? Visibility.Visible : Visibility.Collapsed;
}

public static Visibility GreaterThanOrEqualToV(double lhs, double rhs)
{
return lhs >= rhs ? Visibility.Visible : Visibility.Collapsed;
}

public static Visibility LessThanOrEqualToV(int lhs, int rhs)
{
return lhs <= rhs ? Visibility.Visible : Visibility.Collapsed;
}

public static Visibility LessThanOrEqualToV(double lhs, double rhs)
{
return lhs <= rhs ? Visibility.Visible : Visibility.Collapsed;
}

public static Visibility EqualToV(object lhs, object rhs)
{
return lhs == rhs ? Visibility.Visible : Visibility.Collapsed;
}

public static Visibility EqualToV(int lhs, int rhs)
{
return lhs == rhs ? Visibility.Visible : Visibility.Collapsed;
}

public static Visibility EqualToV(double lhs, double rhs, double tolerance = 0.0)
{
return Math.Abs(lhs - rhs) <= tolerance ? Visibility.Visible : Visibility.Collapsed;
}

public static Visibility NotEqualToV(object lhs, object rhs)
{
return lhs != rhs ? Visibility.Visible : Visibility.Collapsed;
}

public static Visibility NotEqualToV(int lhs, int rhs)
{
return lhs != rhs ? Visibility.Visible : Visibility.Collapsed;
}

public static Visibility NotEqualToV(double lhs, double rhs, double tolerance = 0.0)
{
return !EqualTo(lhs, rhs, tolerance) ? Visibility.Visible : Visibility.Collapsed;
}
public static Visibility AndV(bool value1, bool value2) => (value1 && value2) ? Visibility.Visible : Visibility.Collapsed;

public static Visibility OrV(bool value1, bool value2) => (value1 || value2) ? Visibility.Visible : Visibility.Collapsed;

public static Visibility NotV(bool value) => !value ? Visibility.Visible : Visibility.Collapsed;

public static Visibility GreaterThanV(int lhs, int rhs) => lhs > rhs ? Visibility.Visible : Visibility.Collapsed;

public static Visibility GreaterThanV(double lhs, double rhs) => lhs > rhs ? Visibility.Visible : Visibility.Collapsed;

public static Visibility LessThanV(int lhs, int rhs) => lhs < rhs ? Visibility.Visible : Visibility.Collapsed;

public static Visibility LessThanV(double lhs, double rhs) => lhs < rhs ? Visibility.Visible : Visibility.Collapsed;

public static Visibility GreaterThanOrEqualToV(int lhs, int rhs) => lhs >= rhs ? Visibility.Visible : Visibility.Collapsed;

public static Visibility GreaterThanOrEqualToV(double lhs, double rhs) => lhs >= rhs ? Visibility.Visible : Visibility.Collapsed;

public static Visibility LessThanOrEqualToV(int lhs, int rhs) => lhs <= rhs ? Visibility.Visible : Visibility.Collapsed;

public static Visibility LessThanOrEqualToV(double lhs, double rhs) => lhs <= rhs ? Visibility.Visible : Visibility.Collapsed;

public static Visibility EqualToV(object lhs, object rhs) => lhs == rhs ? Visibility.Visible : Visibility.Collapsed;

public static Visibility EqualToV(int lhs, int rhs) => lhs == rhs ? Visibility.Visible : Visibility.Collapsed;

public static Visibility EqualToV(double lhs, double rhs, double tolerance = 0.0) => Math.Abs(lhs - rhs) <= tolerance ? Visibility.Visible : Visibility.Collapsed;

public static Visibility NotEqualToV(object lhs, object rhs) => lhs != rhs ? Visibility.Visible : Visibility.Collapsed;

public static Visibility NotEqualToV(int lhs, int rhs) => lhs != rhs ? Visibility.Visible : Visibility.Collapsed;

public static Visibility NotEqualToV(double lhs, double rhs, double tolerance = 0.0) => !EqualTo(lhs, rhs, tolerance) ? Visibility.Visible : Visibility.Collapsed;

public static Visibility AnyV(ICollection? collection) => collection?.Count > 0 ? Visibility.Visible : Visibility.Collapsed;
}
15 changes: 3 additions & 12 deletions Microsoft.Toolkit.Future/Extensions/Bind.cs
Original file line number Diff line number Diff line change
Expand Up @@ -11,18 +11,9 @@ public static partial class Bind
{
private static ResourceLoader _resLoader = ResourceLoader.GetForCurrentView();

public static string LocalizedString(string resourceKey)
{
return _resLoader.GetString(resourceKey);
}
public static string LocalizedString(string resourceKey) => _resLoader.GetString(resourceKey);

public static Visibility NotVisible(bool value)
{
return value ? Visibility.Collapsed : Visibility.Visible;
}
public static Visibility NotVisible(bool value) => value ? Visibility.Collapsed : Visibility.Visible;

public static Visibility Visible(bool value)
{
return value ? Visibility.Visible : Visibility.Collapsed;
}
public static Visibility Visible(bool value) => value ? Visibility.Visible : Visibility.Collapsed;
}
Original file line number Diff line number Diff line change
Expand Up @@ -12,28 +12,20 @@ namespace CommunityToolkit.WinUI.Extensions.Future;
public static class ContentPresenterExtensions
{
public static bool GetUpdateTemplateSelectorOnContentChange(ContentPresenter obj)
{
return (bool)obj.GetValue(UpdateTemplateSelectorOnContentChangeProperty);
}
=> (bool)obj.GetValue(UpdateTemplateSelectorOnContentChangeProperty);

public static void SetUpdateTemplateSelectorOnContentChange(ContentPresenter obj, bool value)
{
obj.SetValue(UpdateTemplateSelectorOnContentChangeProperty, value);
}
=> obj.SetValue(UpdateTemplateSelectorOnContentChangeProperty, value);

// Using a DependencyProperty as the backing store for UpdateTemplateSelectorOnContentChange. This enables animation, styling, binding, etc...
public static readonly DependencyProperty UpdateTemplateSelectorOnContentChangeProperty =
DependencyProperty.RegisterAttached("UpdateTemplateSelectorOnContentChange", typeof(bool), typeof(ContentPresenterExtensions), new PropertyMetadata(false, OnUpdateTemplateSelectorOnContentChange));

private static long GetContentChangedToken(ContentPresenter obj)
{
return (long)obj.GetValue(ContentChangedTokenProperty);
}
=> (long)obj.GetValue(ContentChangedTokenProperty);

private static void SetContentChangedToken(ContentPresenter obj, long value)
{
obj.SetValue(ContentChangedTokenProperty, value);
}
=> obj.SetValue(ContentChangedTokenProperty, value);

// Using a DependencyProperty as the backing store for ContentChangedToken. This enables animation, styling, binding, etc...
private static readonly DependencyProperty ContentChangedTokenProperty =
Expand Down
Loading