112 lines
3.1 KiB
C#
112 lines
3.1 KiB
C#
using System;
|
|
using Xamarin.Forms;
|
|
|
|
namespace Gallery.Util
|
|
{
|
|
public static class Extensions
|
|
{
|
|
public static T Binding<T>(this T view, BindableProperty property, string name, BindingMode mode = BindingMode.Default, IValueConverter converter = null) where T : BindableObject
|
|
{
|
|
if (name == null)
|
|
{
|
|
view.SetValue(property, property.DefaultValue);
|
|
}
|
|
else
|
|
{
|
|
view.SetBinding(property, name, mode, converter);
|
|
}
|
|
return view;
|
|
}
|
|
|
|
public static T DynamicResource<T>(this T view, BindableProperty property, string key) where T : Element
|
|
{
|
|
view.SetDynamicResource(property, key);
|
|
return view;
|
|
}
|
|
|
|
public static T GridRow<T>(this T view, int row) where T : BindableObject
|
|
{
|
|
Grid.SetRow(view, row);
|
|
return view;
|
|
}
|
|
|
|
public static T GridRowSpan<T>(this T view, int rowSpan) where T : BindableObject
|
|
{
|
|
Grid.SetRowSpan(view, rowSpan);
|
|
return view;
|
|
}
|
|
|
|
public static T GridColumn<T>(this T view, int column) where T : BindableObject
|
|
{
|
|
Grid.SetColumn(view, column);
|
|
return view;
|
|
}
|
|
|
|
public static T GridColumnSpan<T>(this T view, int columnSpan) where T : BindableObject
|
|
{
|
|
Grid.SetColumnSpan(view, columnSpan);
|
|
return view;
|
|
}
|
|
|
|
public static int IndexOf<T>(this T[] array, Predicate<T> predicate)
|
|
{
|
|
for (var i = 0; i < array.Length; i++)
|
|
{
|
|
if (predicate(array[i]))
|
|
{
|
|
return i;
|
|
}
|
|
}
|
|
return -1;
|
|
}
|
|
|
|
public static int LastIndexOf<T>(this T[] array, Predicate<T> predicate)
|
|
{
|
|
for (var i = array.Length - 1; i >= 0; i--)
|
|
{
|
|
if (predicate(array[i]))
|
|
{
|
|
return i;
|
|
}
|
|
}
|
|
return -1;
|
|
}
|
|
|
|
public static bool All<T>(this T[] array, Predicate<T> predicate)
|
|
{
|
|
for (var i = 0; i < array.Length; i++)
|
|
{
|
|
if (!predicate(array[i]))
|
|
{
|
|
return false;
|
|
}
|
|
}
|
|
return true;
|
|
}
|
|
|
|
public static bool AnyFor<T>(this T[] array, int from, int to, Predicate<T> predicate)
|
|
{
|
|
for (var i = from; i <= to; i++)
|
|
{
|
|
if (predicate(array[i]))
|
|
{
|
|
return true;
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
|
|
public static DateTime ToLocalTime(this long time)
|
|
{
|
|
//return new DateTime(1970, 1, 1, 0, 0, 0).AddMilliseconds(time).ToLocalTime();
|
|
return new DateTime(621355968000000000L + time * 10000).ToLocalTime();
|
|
}
|
|
|
|
public static long ToTimestamp(this DateTime datetime)
|
|
{
|
|
var ticks = datetime.Ticks;
|
|
return (ticks - 621355968000000000L) / 10000;
|
|
}
|
|
}
|
|
}
|