using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Syncfusion.XForms.PopupLayout; using Xamarin.Forms; using Xamarin.Forms.Xaml; using XF.Material.Forms.UI.Dialogs; namespace comal.timesheets { [XamlCompilation(XamlCompilationOptions.Compile)] public partial class BasePage { public IList ActionButtons => _actionButtons.Children; public IList PageContent => _content.Children; public bool BackButtonEnabled { get => _backButton.IsVisible; set => _backButton.IsVisible = value; } private SfPopupLayout _popup = new SfPopupLayout(); public BasePage() { InitializeComponent(); _titleBar.BackgroundColor = XF.Material.Forms.Material.Color.Primary; _titleLabel.TextColor = XF.Material.Forms.Material.Color.OnPrimary; } protected override void OnAppearing() { App.Data.TransportConnected += TransportConnected; App.Data.TransportDisconnected += TransportDisconnected; UpdateTransportStatus(); base.OnAppearing(); } protected override void OnDisappearing() { App.Data.TransportConnected -= TransportConnected; App.Data.TransportDisconnected -= TransportDisconnected; base.OnDisappearing(); } private void TransportDisconnected(TransportDisconnectedEventArgs args) => UpdateConnectionStatus(); private void TransportConnected(TransportConnectedEventArgs args) => UpdateConnectionStatus(); private void UpdateConnectionStatus() { Device.BeginInvokeOnMainThread(UpdateTransportStatus); } private static Task _snackbar = null; protected virtual void UpdateTransportStatus() { // ConnectionIndicator.Image = App.Data.IsConnected() // ? ImageSource.FromFile("transparent.png") // : ImageSource.FromFile("disconnected.png"); //ImageSource.FromFile("Images/nodata.png"); _connectionIndicator.IsVisible = !App.Data.IsConnected(); // if (!App.Data.IsConnected() && (_snackbar == null)) // _snackbar = MaterialDialog.Instance.LoadingSnackbarAsync(message: "No Connection Available!"); // // else if (App.Data.IsConnected() && (_snackbar != null) && (_snackbar.Result != null)) // { // _snackbar.Result.DismissAsync(); // _snackbar = null; // } } private void _backButton_OnClicked(object sender, EventArgs e) { Navigation.PopAsync(); } public void ShowPopup(Func view, int height = 500, int width = 300, int padding = 10) { _popup.PopupView.HeightRequest = height; _popup.PopupView.WidthRequest = width; _popup.PopupView.ShowHeader = false; _popup.PopupView.ShowFooter = false; _popup.PopupView.ContentTemplate = new DataTemplate(() => { Grid grid = new Grid() { Margin = padding, Padding = padding}; grid.Children.Add(view()); return grid; }); _popup.Show(); } public void DismissPopup() { _popup.Dismiss(); } } }