123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164 |
- using System;
- using System.Collections.Generic;
- using System.Threading.Tasks;
- using Syncfusion.XForms.Core;
- using Syncfusion.XForms.PopupLayout;
- using Xamarin.Forms;
- using Xamarin.Forms.Xaml;
- using XF.Material.Forms.UI.Dialogs;
- namespace InABox.Mobile
- {
- // public class BackButtonClickedEventArgs : CancelEventArgs
- // {
- //
- // }
- //
- // public delegate void BackButtonClickedEvent(object sender, BackButtonClickedEventArgs args);
-
- [XamlCompilation(XamlCompilationOptions.Compile)]
- public partial class MobilePage
- {
- public static IModelHost Host { get; set; }
-
- public IList<View> AlternateMenu => _alternateMenu.Children;
-
- public IList<View> PrimaryMenu => _primaryMenu.Children;
-
- public IList<View> PageContent => _content.Children;
- public bool BackButtonEnabled
- {
- get => _backButton.IsVisible;
- set => _backButton.IsVisible = value;
- }
- //public event BackButtonClickedEvent BackButtonClicked;
-
- private SfPopupLayout _popup = new SfPopupLayout();
-
- public MobilePage()
- {
- InitializeComponent();
- _titleBar.BackgroundColor = XF.Material.Forms.Material.Color.Primary;
- _titleLabel.TextColor = XF.Material.Forms.Material.Color.OnPrimary;
- BackgroundColor = Color.WhiteSmoke;
- }
-
- protected override void OnAppearing()
- {
- XF.Material.Forms.Material.PlatformConfiguration.ChangeStatusBarColor(XF.Material.Forms.Material.Color.PrimaryVariant);
- Host.TransportConnected += TransportConnected;
- Host.TransportDisconnected += TransportDisconnected;
- UpdateTransportStatus();
- base.OnAppearing();
- }
- protected override void OnDisappearing()
- {
- Host.TransportConnected -= TransportConnected;
- Host.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<IMaterialModalPage> _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 = !Host.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 async void _backButton_OnClicked(object sender, EventArgs e)
- {
- if (await OnBackButtonClicked())
- Navigation.PopAsync();
- // if (OnBackButtonPressed())
- // {
- // if (await ConfirmChanges())
- // var args = new BackButtonClickedEventArgs() { Cancel = false };
- // BackButtonClicked?.Invoke(this, args);
- // if (!args.Cancel)
- //
- // }
- }
-
- protected virtual async Task<bool> OnBackButtonClicked()
- {
- return true;
- }
-
- protected async Task<bool> ConfirmChanges(IShell item)
- {
- if (item.IsChanged())
- {
- var choice = await MaterialDialog.Instance.SelectActionAsync("Confirm Cancel?",
- new string[] { "Yes, Cancel", "Keep Editing", "Save Changes" });
- if (choice == 0)
- item.Cancel();
- else if (choice == 1)
- return false;
- else if (choice == 2)
- item.Save("Saved on Mobile Device");
-
- Dispatcher.BeginInvokeOnMainThread(() => Navigation.PopAsync());
- return false;
- }
- return true;
- }
- protected void ShowPopup(Func<View> 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();
- }
- protected void DismissPopup()
- {
- _popup.Dismiss();
- }
- public bool ProgressVisible
- {
- get => activity_indicator.IsRunning;
- set => activity_indicator.IsRunning = value;
- }
-
-
-
- }
- }
|