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);
        }
Esempio n. 2
0
        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); 
		}
Esempio n. 3
0
        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));
 }
Esempio n. 5
0
 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
 }
Esempio n. 6
0
 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));
 }
Esempio n. 7
0
 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);
 }
Esempio n. 8
0
        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
     }
 }
Esempio n. 10
0
        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");
            }
        }
Esempio n. 11
0
        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);
        }
Esempio n. 12
0
        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);
        }
Esempio n. 13
0
        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);
        }
Esempio n. 14
0
        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);
        }
Esempio n. 15
0
 public Task PushNewNavigationServiceModal(IFreshNavigationService newNavigationService, FreshBasePageModel basePageModels)
 {
     return(PushNewNavigationServiceModal(newNavigationService, new FreshBasePageModel[] { basePageModels }));
 }
Esempio n. 16
0
        async Task PushPageModel(FreshBasePageModel pageModel, object data, bool modal = false)
        {
            var page = FreshPageModelResolver.ResolvePageModel(data, pageModel);

            PushPageModelWithPage(page, pageModel, data, modal);
        }
Esempio n. 17
0
        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()));
        }
Esempio n. 18
0
        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()));
        }
Esempio n. 19
0
 public PageModelCoreMethods(Page currentPage, FreshBasePageModel pageModel)
 {
     _currentPage      = currentPage;
     _currentPageModel = pageModel;
 }
Esempio n. 20
0
        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);
        }
Esempio n. 21
0
 static void ViewIsAppearingStatic(FreshBasePageModel sender, EventPattern <EventArgs> e)
 {
     sender.ViewIsAppearing(sender, e.EventArgs);
 }
Esempio n. 22
0
 static void HandleNavPagePoppedStatic(FreshBasePageModel sender, EventPattern <NavigationEventArgs> e)
 {
     sender.HandleNavPagePopped(sender, e.EventArgs);
 }
Esempio n. 23
0
 public Task PushNewNavigationServiceModal(IFreshNavigationService newNavigationService, FreshBasePageModel basePageModels, bool animate = true)
 {
     return(PushNewNavigationServiceModal(newNavigationService, new FreshBasePageModel[] { basePageModels }, animate));
 }