using System; using Xamarin.Forms; namespace Billing.UI { public static partial class Definition { public static partial string GetCascadiaRegularFontFamily(); public static partial string GetCascadiaBoldFontFamily(); public static partial string GetRobotoCondensedRegularFontFamily(); public static partial string GetRobotoCondensedBoldFontFamily(); } public static class ExtensionHelper { public static T Binding(this T obj, BindableProperty property, string path, BindingMode mode = BindingMode.Default, IValueConverter converter = null) where T : BindableObject { obj.SetBinding(property, path, mode, converter); return obj; } public static View HorizontalOptions(this View view, LayoutOptions options) { if (view != null) { view.HorizontalOptions = options; } return view; } public static View VerticalOptions(this View view, LayoutOptions options) { if (view != null) { view.VerticalOptions = options; } return view; } public static View DynamicResource(this View view, BindableProperty property, string key) { view.SetDynamicResource(property, key); return view; } public static View GridColumn(this View view, int column) { Grid.SetColumn(view, column); return view; } public static View GridRow(this View view, int row) { Grid.SetRow(view, row); return view; } public static View GridColumnSpan(this View view, int columnSpan) { Grid.SetColumnSpan(view, columnSpan); return view; } public static View GridRowSpan(this View view, int rowSpan) { Grid.SetRowSpan(view, rowSpan); return view; } public static View Margin(this View view, Thickness margin) { view.Margin = margin; return view; } } public class Tap : IDisposable { private readonly static object sync = new(); private static Tap instance; private bool busy = false; private Tap() { } public static bool IsBusy => instance?.busy ?? false; public static Tap Start() { lock (sync) { (instance ??= new Tap()).busy = true; } return instance; } public void Dispose() { lock (sync) { busy = false; } } } }