public async virtual Task PushPage (Xamarin.Forms.Page page, FreshBasePageModel model, bool modal = false, bool animate = true) { if (modal) await Navigation.PushModalAsync (CreateContainerPage (page), animate); else await Navigation.PushAsync (page, animate); }
public virtual async Task PushPage (Xamarin.Forms.Page page, FreshBasePageModel model, bool modal = false, bool animated = true) { if (modal) await Navigation.PushModalAsync (new NavigationPage(page), animated); else await ((NavigationPage)_tabbedNavigationPage.CurrentPage).PushAsync (page, animated); }
async Task PushPageModelWithPage(Page page, FreshBasePageModel pageModel, object data, bool modal = false) { pageModel.PreviousPageModel = _currentPageModel; //This is the previous page model because it's push to a new one, and this is current pageModel.CurrentNavigationServiceName = _currentPageModel.CurrentNavigationServiceName; if (string.IsNullOrWhiteSpace(pageModel.PreviousNavigationServiceName)) { pageModel.PreviousNavigationServiceName = _currentPageModel.PreviousNavigationServiceName; } if (page is FreshMasterDetailNavigationContainer) { this.PushNewNavigationServiceModal((FreshMasterDetailNavigationContainer)page, pageModel); } else if (page is FreshTabbedNavigationContainer) { this.PushNewNavigationServiceModal((FreshTabbedNavigationContainer)page, pageModel); } else { IFreshNavigationService rootNavigation = FreshIOC.Container.Resolve <IFreshNavigationService> (_currentPageModel.CurrentNavigationServiceName); await rootNavigation.PushPage(page, pageModel, modal); } }
public System.Threading.Tasks.Task PushPage(Xamarin.Forms.Page page, FreshBasePageModel model, bool modal = false, bool animate = true) { if (modal) { return(this.CurrentPage.Navigation.PushModalAsync(CreateContainerPageSafe(page))); } return(this.CurrentPage.Navigation.PushAsync(page)); }
public Task PushPage(Page page, FreshBasePageModel model, bool modal = false, bool animate = true) { if (modal) { return(Navigation.PushModalAsync(CreateContainerPageSafe(page))); } return((Detail as IconNavigationPage).PushAsync(page, animate)); //TODO: make this better }
public virtual Task PushPage(Xamarin.Forms.Page page, FreshBasePageModel model, bool modal = false, bool animate = true) { if (modal) { return(Navigation.PushModalAsync(CreateContainerPage(page), animate)); } return(Navigation.PushAsync(page, animate)); }
public static Page BindingPageModel(object data, Page targetPage, FreshBasePageModel pageModel) { pageModel.WireEvents(targetPage); pageModel.CurrentPage = targetPage; pageModel.CoreMethods = new PageModelCoreMethods(targetPage, pageModel); pageModel.Init(data); targetPage.BindingContext = pageModel; return(targetPage); }
async Task PushPageModel(FreshBasePageModel pageModel, object data, bool modal = false) { var page = FreshPageModelResolver.ResolvePageModel(data, pageModel); pageModel.PreviousPageModel = _pageModel; IFreshNavigationService rootNavigation = FreshIOC.Container.Resolve <IFreshNavigationService> (); await rootNavigation.PushPage(page, pageModel, modal); }
public async Task PushPage(Page page, FreshBasePageModel model, bool modal = false, bool animate = true) { if (modal) { await Navigation.PushModalAsync(new NavigationPage (page)); } else { await(Detail as NavigationPage).PushAsync(page, animate); //TODO: make this better } }
private static async Task PushPopupPageModel(FreshBasePageModel pageModel, object data = null, bool animate = true) { var page = FreshPageModelResolver.ResolvePageModel(data, pageModel); FreshPageModelResolver.BindingPageModel(data, page, pageModel); if (page is PopupPage) { await PushPopupPageModel((PopupPage)page, animate); } else { throw new InvalidOperationException("Resolved page type is not PopupPage"); } }
async Task PushPageModel(FreshBasePageModel pageModel, object data, bool modal = false) { var page = FreshPageModelResolver.ResolvePageModel(data, pageModel); pageModel.PreviousPageModel = _currentPageModel; //This is the previous page model because it's push to a new one, and this is current pageModel.CurrentNavigationServiceName = _currentPageModel.CurrentNavigationServiceName; if (string.IsNullOrWhiteSpace(pageModel.PreviousNavigationServiceName)) { pageModel.PreviousNavigationServiceName = _currentPageModel.PreviousNavigationServiceName; } IFreshNavigationService rootNavigation = FreshIOC.Container.Resolve <IFreshNavigationService> (_currentPageModel.CurrentNavigationServiceName); await rootNavigation.PushPage(page, pageModel, modal); }
public static Page ResolvePageModel(Type type, object data, FreshBasePageModel pageModel) { var name = PageModelMapper.GetPageTypeName(type); var pageType = Type.GetType(name); if (pageType == null) { throw new Exception(name + " not found"); } var page = (Page)FreshIOC.Container.Resolve(pageType); BindingPageModel(data, page, pageModel); return(page); }
public static Page ResolvePageModel(Type type, object data, FreshBasePageModel pageModel) { var name = GetPageTypeName(type); var pageType = Type.GetType(name); if (pageType == null) { throw new Exception(name + " not found"); } var page = (Page)FreshIOC.Container.Resolve(pageType); pageModel.WireEvents(page); pageModel.CurrentPage = page; pageModel.CoreMethods = new PageModelCoreMethods(page, pageModel); pageModel.Init(data); page.BindingContext = pageModel; return(page); }
async Task PushPageModel(FreshBasePageModel pageModel, object data, bool modal = false, bool animate = true) { var page = FreshPageModelResolver.ResolvePageModel(data, pageModel); await PushPageModelWithPage(page, pageModel, data, modal, animate); }
public Task PushNewNavigationServiceModal(IFreshNavigationService newNavigationService, FreshBasePageModel basePageModels) { return(PushNewNavigationServiceModal(newNavigationService, new FreshBasePageModel[] { basePageModels })); }
async Task PushPageModel(FreshBasePageModel pageModel, object data, bool modal = false) { var page = FreshPageModelResolver.ResolvePageModel(data, pageModel); PushPageModelWithPage(page, pageModel, data, modal); }
public Task PushNewNavigationServiceModal(FreshMasterDetailNavigationContainer masterDetailContainer, FreshBasePageModel basePageModel = null) { var models = masterDetailContainer.Pages.Select(o => { if (o.Value is NavigationPage) { return(((NavigationPage)o.Value).CurrentPage.GetModel()); } else { return(o.Value.GetModel()); } }).ToList(); if (basePageModel != null) { models.Add(basePageModel); } return(PushNewNavigationServiceModal(masterDetailContainer, models.ToArray())); }
public Task PushNewNavigationServiceModal(FreshTabbedNavigationContainer tabbedNavigationContainer, FreshBasePageModel basePageModel = null) { var models = tabbedNavigationContainer.TabbedPages.Select(o => o.GetModel()).ToList(); if (basePageModel != null) { models.Add(basePageModel); } return(PushNewNavigationServiceModal(tabbedNavigationContainer, models.ToArray())); }
public PageModelCoreMethods(Page currentPage, FreshBasePageModel pageModel) { _currentPage = currentPage; _currentPageModel = pageModel; }
public static Page ResolvePageModel(Type type, object data, FreshBasePageModel pageModel) { //First get current platform TargetIdiom currentIdiom = Device.Idiom; Type pageType; //First update namespace for directory mapping string baseName = type.AssemblyQualifiedName.Replace(".PageModel", ".Page").Replace(".ViewModel", ".Page"); string name; switch (currentIdiom) { case TargetIdiom.Unsupported: //Look for a generic version name = baseName.Replace("PageModel", "Page").Replace("ViewModel", "Page"); pageType = Type.GetType(name); if (pageType == null) { throw new Exception(name + " not found"); } break; case TargetIdiom.Phone: //Look for a phone version name = baseName.Replace("PageModel", "PhonePage").Replace("ViewModel", "PhonePage"); pageType = Type.GetType(name); if (pageType == null) { //Look for a generic version var name1 = baseName.Replace("PageModel", "Page").Replace("ViewModel", "Page"); pageType = Type.GetType(name); if (pageType == null) { throw new Exception(name + " not found"); } } break; case TargetIdiom.Tablet: //Look for a tablet version name = baseName.Replace("PageModel", "TabletPage").Replace("ViewModel", "TabletPage"); pageType = Type.GetType(name); if (pageType == null) { //Look for a generic version name = baseName.Replace("PageModel", "Page").Replace("ViewModel", "Page"); pageType = Type.GetType(name); if (pageType == null) { throw new Exception(name + " not found"); } } break; case TargetIdiom.Desktop: //Look for a desktop version name = baseName.Replace("PageModel", "DesktopPage").Replace("ViewModel", "DesktopPage"); pageType = Type.GetType(name); if (pageType == null) { //Look for a tablet version name = baseName.Replace("PageModel", "TabletPage").Replace("ViewModel", "TabletPage"); pageType = Type.GetType(name); if (pageType == null) { //Look for a generic version name = baseName.Replace("PageModel", "Page").Replace("ViewModel", "Page"); pageType = Type.GetType(name); if (pageType == null) { throw new Exception(name + " not found"); } } } break; case TargetIdiom.TV: //Look for a generic version name = baseName.Replace("PageModel", "Page").Replace("ViewModel", "Page"); pageType = Type.GetType(name); if (pageType == null) { throw new Exception(name + " not found"); } break; case TargetIdiom.Watch: //Look for a generic version name = baseName.Replace("PageModel", "Page").Replace("ViewModel", "Page"); pageType = Type.GetType(name); if (pageType == null) { throw new Exception(name + " not found"); } break; default: //Look for a generic version name = baseName.Replace("PageModel", "Page").Replace("ViewModel", "Page"); pageType = Type.GetType(name); if (pageType == null) { throw new Exception(name + " not found"); } break; } var page = (Page)FreshIOC.Container.Resolve(pageType); BindingPageModel(data, page, pageModel); return(page); }
static void ViewIsAppearingStatic(FreshBasePageModel sender, EventPattern <EventArgs> e) { sender.ViewIsAppearing(sender, e.EventArgs); }
static void HandleNavPagePoppedStatic(FreshBasePageModel sender, EventPattern <NavigationEventArgs> e) { sender.HandleNavPagePopped(sender, e.EventArgs); }
public Task PushNewNavigationServiceModal(IFreshNavigationService newNavigationService, FreshBasePageModel basePageModels, bool animate = true) { return(PushNewNavigationServiceModal(newNavigationService, new FreshBasePageModel[] { basePageModels }, animate)); }