/// <summary> /// Navigates to a root page of the app. /// </summary> /// <returns></returns> public async Task GoToRootPage() { try { if (!Connectivity.CheckConnectionAndDisplayToast()) { return; } if (App.NavPage.CurrentPage.GetType() == App.NavPage.Navigation.NavigationStack.FirstOrDefault()?.GetType()) { App.MenuPage.IsPresented = false; return; } App.UpdateLoading(true); await Task.Delay(500); await App.NavPage.Navigation.PopToRootAsync(); App.MenuPage.IsPresented = false; } catch (Exception e) { // ignored } finally { App.UpdateLoading(false); } }
/// <summary> /// Navigates to a page with side menu. OwnerMenu page content is defined in OwnerMenu.xaml. /// </summary> /// <param name="page"> /// Page should be initialized e.g. new CustomPage() and this page represents Detail. /// </param> /// <param name="userType"> /// Type of user (Owner or Washer) /// </param> /// <returns></returns> public async Task GoToMasterRootPage(Page page, UserTypeViewModel.UserTypeOf userType) { try { if (!Connectivity.CheckConnectionAndDisplayToast()) { return; } App.InstantiatingPageType = page.GetType(); App.UpdateLoading(true); await Task.Delay(500); App.NavPage = new NavigationPage(page); App.MenuPage = userType == UserTypeViewModel.UserTypeOf.Owner ? (MasterDetailPage) new OwnerMenu() { Detail = App.NavPage } : (MasterDetailPage) new WasherMenu() { Detail = App.NavPage }; // TODO: add WasherMenu Application.Current.MainPage = App.MenuPage; } catch (Exception e) { // ignored } finally { App.UpdateLoading(false); } }
/// <summary> /// Navigates to a new page. /// </summary> /// <param name="page"> /// Page should be initialized e.g. new CustomPage() /// </param> /// <returns></returns> public async Task GoToPage(Page page) { try { if (!Connectivity.CheckConnectionAndDisplayToast()) { return; } if (App.NavPage.CurrentPage.GetType() == page.GetType()) { App.MenuPage.IsPresented = false; return; } App.InstantiatingPageType = page.GetType(); App.UpdateLoading(true); await Task.Delay(500); await App.NavPage.Navigation.PushAsync(page); App.MenuPage.IsPresented = false; } catch (Exception e) { // ignored } finally { App.UpdateLoading(false); } }
public App() { InitializeComponent(); ValidationFieldList = new ValidationFieldList(); Device.BeginInvokeOnMainThread(async() => await Location.GetUserLocation()); Connectivity.CheckConnectionAndDisplayToast(); if (App.Locator.Prelogin.Settings.IsUserLoggedIn) { if (App.Locator.Prelogin.Settings.UserType.Equals(UserTypeViewModel.UserTypeOf.Owner.ToString())) { var rootPage = new MapPage(); App.NavPage = new NavigationPage(rootPage); App.MenuPage = (MasterDetailPage) new OwnerMenu() { Detail = App.NavPage }; App.Current.MainPage = App.MenuPage; } else { var rootPage = new AvailabiltyPage(); App.NavPage = new NavigationPage(rootPage); App.MenuPage = (MasterDetailPage) new WasherMenu() { Detail = App.NavPage }; App.Current.MainPage = App.MenuPage; } } else { InstantiatingPageType = typeof(UserTypePage); NavPage = new NavigationPage(new UserTypePage()); MainPage = NavPage; } }
protected override void OnElementChanged(ElementChangedEventArgs <ImageButton> e) { base.OnElementChanged(e); var citoButton = e.NewElement.CitoButton; if (citoButton == null) { return; } var externalLogin = e.NewElement.ExternalLogin; if (externalLogin == ImageButton.Social.Facebook) { var facebookLoginButton = new LoginButton(Forms.Context); facebookLoginButton.SetReadPermissions(new string[] { "public_profile", "email" }); citoButton.Clicked += (sender, args) => { if (!Connectivity.CheckConnectionAndDisplayToast()) { return; } if (FacebookLogin.FacebookLoggedIn) { App.Locator.Prelogin.ExternalLoginCommand.Execute(null); return; } facebookLoginButton.PerformClick(); FacebookLogin.IsFacebookLogin = true; }; } else if (externalLogin == ImageButton.Social.Google) { var googleLoginButton = new SignInButton(Forms.Context); citoButton.Clicked += (sender, args) => { if (!Connectivity.CheckConnectionAndDisplayToast()) { return; } googleLoginButton.PerformClick(); if (GoogleLogin.MyGoogleApiClient.IsConnecting) { return; } GoogleLogin.MyGoogleApiClient.Reconnect(); GoogleLogin.IsGoogleLogin = true; GoogleLogin.IntentHandled = true; }; } else { return; } }