protected override void OnControllerLoadComplete(IMXView fromView, IMXController controller, MXViewPerspective viewPerspective) { Debug.WriteLine("OnControllerLoadComplete"); Type viewType = Views.GetViewType(viewPerspective); if (viewType != null) { // stash the model away so we can get it back when the view shows up! ViewModels[controller.ModelType] = controller.GetModel(); var activity = fromView as Page; if (NavigationHandler != null) { // allow first crack at the view creation to the person over-riding NavigationHandler(viewType); } else if (activity != null) { // start the next view NavigationFrame.NavigationService.Navigate(activity); } else { RenderViewFromPerspective(controller, viewPerspective); NavigationFrame.NavigationService.Navigate(Views.GetView(viewPerspective) as Page); } } else { Debug.WriteLine("OnControllerLoadComplete: View not found for " + viewPerspective.ToString()); throw new TypeLoadException("View not found for " + viewPerspective.ToString()); } }
protected static void StartViewForController(IMXView fromView, IMXController controller, MXViewPerspective viewPerspective) { Type viewType = Instance.Views.GetViewType(viewPerspective); if (viewType == null) { Console.WriteLine("View not found for " + viewPerspective.ToString()); throw new TypeLoadException("View not found for " + viewPerspective.ToString()); } Uri viewUri = new Uri("/" + viewType.Name + ".xaml", UriKind.Relative); // get the uri from the MXPhoneView attribute, if present object[] attributes = viewType.GetCustomAttributes(true); for (int i = 0; i < attributes.Length; i++) { if (attributes[i] is MXPhoneViewAttribute) { viewUri = new Uri(((MXPhoneViewAttribute)attributes[i]).Uri, UriKind.Relative); break; } } // stash the model away so we can get it back when the view shows up! ViewModels[controller.ModelType] = controller.GetModel(); var page = fromView as PhoneApplicationPage; if (!(controller.View is PhoneApplicationPage) && controller.View != null && RenderLayer != null) { controller.View.Render(); viewUri = RenderLayer(controller.View); } if (page != null) { // NOTE: assumes XAML file matches type name and no sub directories page.NavigationService.Navigate(viewUri); } else { if (_rootFrame != null) { _rootFrame.Navigate(viewUri); } // failure, called too early or Something Very Bad Happened(tm)... } }
protected override void OnControllerLoadComplete(IMXView fromView, IMXController controller, MXViewPerspective viewPerspective) { Android.Util.Log.Debug("MXDroidContainer", "OnControllerLoadComplete"); Type viewType = Views.GetViewType(viewPerspective); if (viewType != null) { // stash the model away so we can get it back when the view shows up! ViewModels[controller.ModelType] = controller.GetModel(); Activity activity = fromView as Activity; if (NavigationHandler != null) { // allow first crack at the view creation to the person over-riding NavigationHandler(viewType); } else if (activity != null) { // use the context we have to start the next view Intent intent = new Intent(activity, viewType); intent.AddFlags(ActivityFlags.NewTask); intent.AddFlags(ActivityFlags.ClearTop); activity.StartActivity(intent); } else if (ApplicationContext != null) { // use the application context to instantiate the new new Intent intent = new Intent(ApplicationContext, viewType); intent.AddFlags(ActivityFlags.NewTask); ApplicationContext.StartActivity(intent); } else { Android.Util.Log.Debug("MXDroidContainer", "OnControllerLoadComplete: View not found for " + viewPerspective.ToString()); throw new TypeLoadException("View not found for " + viewPerspective.ToString()); } } else { Android.Util.Log.Debug("MXDroidContainer", "OnControllerLoadComplete: View not found for " + viewPerspective.ToString()); throw new TypeLoadException("View not found for " + viewPerspective.ToString()); } }
public void LoadViewForController(IMXView fromView, IMXController controller, MXViewPerspective viewPerspective) { HideLoading(); if (controller.View == null) { // get the view, create it if it has yet been created controller.View = Views.GetOrCreateView(viewPerspective); if (controller.View == null) { Console.WriteLine("View not found for perspective!" + viewPerspective.ToString()); throw new ArgumentException("View creation failed for perspective!" + viewPerspective.ToString()); } } // asign the view it's model and render the contents of the view controller.View.SetModel(controller.GetModel()); controller.View.Render(); // pull the type from the view ViewNavigationContext navigationContext = MXTouchNavigation.GetViewNavigationContext(controller.View); UIViewController viewController = controller.View as UIViewController; // iFactr binding options if (viewController == null) { viewController = RenderLayer(controller.View); } if (Menu.NavigationController != null && fromView != null) { if (Menu.NavigationController.ViewControllers.Contains(viewController)) { Menu.NavigationController.PopToViewController(viewController, true); } else { Menu.NavigationController.PushViewController(viewController, true); } } else { if (Menu.NavigationController != null) { Menu.NavigationController.PopToRootViewController(true); } Menu.TopView = viewController; } ShowView(); }
/* * public static IMXController NavigateFromButton(string url, Dictionary<string, string> parameters, UIBarButtonItem button) * { * //_stashButton = button; * * return Navigate(url, parameters); * } */ void LoadViewForController(IMXView fromView, IMXController controller, MXViewPerspective viewPerspective) { HideLoading(); if (controller.View == null) { // get the view, create it if it has yet been created controller.View = Views.GetOrCreateView(viewPerspective); if (controller.View == null) { Console.WriteLine("View not found for perspective!" + viewPerspective.ToString()); throw new ArgumentException("View creation failed for perspective!" + viewPerspective.ToString()); } } // asign the view it's model and render the contents of the view controller.View.SetModel(controller.GetModel()); controller.View.Render(); // pull the type from the view ViewNavigationContext navigationContext = MXTouchNavigation.GetViewNavigationContext(controller.View); UIViewController viewController = controller.View as UIViewController; if (navigationContext == ViewNavigationContext.Modal) { // treat as a modal/popup view _touchNavigation.PushToModel(viewController); } else if (navigationContext == ViewNavigationContext.InContext) { // it's just an in-context view, just slap it on top of the view that navigated it here! UIViewController parentViewController = fromView as UIViewController; parentViewController.NavigationController.PushViewController(viewController, true); } else { // if the view is one of the views in the group MXTouchViewGroup viewGroup = null; MXTouchViewGroupItem viewGroupItem = null; foreach (MXTouchViewGroup vg in ViewGroups) { viewGroupItem = vg.Items.Find(item => item.ViewType == controller.View.GetType()); if (viewGroupItem != null) { viewGroup = vg; break; } } if (viewGroup != null) { // activate the group! _touchNavigation.PushToViewGroup(viewGroup, viewGroupItem, controller.View as UIViewController); } else { switch (navigationContext) { case ViewNavigationContext.Detail: _touchNavigation.PushToDetail(viewController); break; case ViewNavigationContext.Master: _touchNavigation.PushToMaster(viewController); break; } } } // handle initial view display if not already handled ShowView(); }
public void LoadViewForController(IMXView fromView, IMXController controller, MXViewPerspective viewPerspective) { hideLoading(); if (controller.View == null) { // get the view, create it if it has yet been created controller.View = Views.GetOrCreateView(viewPerspective); if (controller.View == null) { //Console.WriteLine("View not found for perspective!" + viewPerspective.ToString()); throw new ArgumentException("View creation failed for perspective!" + viewPerspective.ToString()); } } // asign the view it's model and render the contents of the view controller.View.SetModel(controller.GetModel()); controller.View.Render(); // pull the type from the view //ViewNavigationContext navigationContext = MXFormsNavigation.GetViewNavigationContext(controller.View); Page page = controller.View as Page; // iFactr binding options if (page == null) { page = RenderLayer(controller.View); } ViewNavigationContext navigationContext = MXFormsNavigation.GetViewNavigationContext(controller.View); formsNavigation.PushToModel(page); }