source code checkin

This commit is contained in:
Brett Hewitson 2021-01-07 16:23:23 +10:00
parent 5f8fb2c825
commit 7e57b72e35
675 changed files with 168433 additions and 0 deletions

View file

@ -0,0 +1,45 @@
using System.ComponentModel;
namespace ServerManagerTool.Common.Extensions
{
public static class CollectionViewExtensions
{
public static void ToggleSorting(this ICollectionView view, string property, ListSortDirection defaultDirection = ListSortDirection.Ascending)
{
for (int i = 0; i < view.SortDescriptions.Count; i++)
{
var sortDescription = view.SortDescriptions[i];
if (sortDescription.PropertyName == property)
{
view.SortDescriptions.RemoveAt(i);
return;
}
}
view.SortDescriptions.Add(new SortDescription() { PropertyName = property, Direction = defaultDirection });
}
public static void ToggleSortDirection(this ICollectionView view, string property, ListSortDirection defaultDirection = ListSortDirection.Ascending)
{
for (int i = 0; i < view.SortDescriptions.Count; i++)
{
var sortDescription = view.SortDescriptions[i];
if (sortDescription.PropertyName == property)
{
if (sortDescription.Direction == ListSortDirection.Ascending)
{
view.SortDescriptions[i] = new SortDescription() { PropertyName = property, Direction = ListSortDirection.Descending };
}
else
{
view.SortDescriptions[i] = new SortDescription() { PropertyName = property, Direction = ListSortDirection.Ascending };
}
return;
}
}
view.SortDescriptions.Add(new SortDescription() { PropertyName = property, Direction = defaultDirection });
}
}
}

View file

@ -0,0 +1,47 @@
using System;
using System.Linq;
using System.Windows.Markup;
using System.Windows.Media.Imaging;
namespace ServerManagerTool.Common
{
/// <summary>
/// Simple extension for icon, to let you choose icon with specific size.
/// Usage sample:
/// Image Stretch="None" Source="{common:Icon /Controls;component/icons/custom.ico, 16}"
/// Or:
/// Image Source="{common:Icon Source={Binding IconResource}, Size=16}"
/// </summary>
public class IconExtension : MarkupExtension
{
private string _path;
public string Path
{
get
{
return _path;
}
set
{
// Have to make full pack URI from short form, so System.Uri recognizes it.
_path = $"pack://application:,,,{value}";
}
}
public int Size { get; set; }
public override object ProvideValue(IServiceProvider serviceProvider)
{
var decoder = BitmapDecoder.Create(new Uri(Path), BitmapCreateOptions.DelayCreation, BitmapCacheOption.OnDemand);
var result = decoder.Frames.SingleOrDefault(f => f.Width == Size);
if (result == default(BitmapFrame))
{
result = decoder.Frames.OrderBy(f => f.Width).First();
}
return result;
}
}
}