public override bool ShouldSelectViewController(UITabBarController tabBarController, UIViewController viewController)
            {
                UINavigationController navController = viewController as UINavigationController;

                System.Console.WriteLine("TabBarControllerDelegate:ShouldSelectViewController");

                if (navController.ViewControllers.Length == 0)
                {
                    int index = Array.IndexOf(tabBarController.ViewControllers, viewController);
                    if (index >= 0)
                    {
                        Type viewType = _parent._viewGroup.Items[index].ViewType;

                        MXViewPerspective viewPerspective = MXContainer.Instance.Views.GetViewPerspectiveForViewType(viewType);
                        string            pattern         = MXContainer.Instance.App.NavigationMap.GetPatternForModelType(viewPerspective.ModelType);
                        MXTouchContainer.Navigate(null, pattern);
                    }
                }
                else
                {
                    // do nothing, tab has a view, leave it for the contained view to figure out what needs
                    // to be done
                }

                return(true);
            }
Пример #2
0
        public void Perform(IMXContainer container, IMXView fromView, IMXController controller)
        {
            // nothing to do
            var viewPerspective = new MXViewPerspective <T>(_viewPerspective);
            var request         = new MXShowViewRequest <T>(viewPerspective, _viewModel);

            container.ShowPerspective(fromView, controller, request);
        }
Пример #3
0
        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);
            }


            //slideoutNavigation.PushToModel(viewController);
            Menu.TopView = viewController;

            ShowView();
        }
Пример #4
0
        protected override void OnControllerLoadComplete(IMXView fromView, IMXController controller, MXViewPerspective viewPerspective)
        {
            Console.WriteLine("Controller Load End");

            _appDelegate.InvokeOnMainThread(delegate {
                LoadViewForController(fromView, controller, viewPerspective);
                if (ControllerLoadComplete != null)
                {
                    ControllerLoadComplete(controller);
                }
            });
        }
        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);
                    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());
            }
        }
Пример #6
0
 protected override void OnControllerLoadComplete(IMXView fromView, IMXController controller, MXViewPerspective viewPerspective)
 {
     Deployment.Current.Dispatcher.BeginInvoke(() => { StartViewForController(fromView, controller, viewPerspective); });
 }
Пример #7
0
        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)...
            }
        }
Пример #8
0
        /*
         * 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();
        }
Пример #9
0
 protected override void OnControllerLoadComplete(IMXView fromView, IMXController controller, MXViewPerspective viewPerspective)
 {
     _viewModelLifeCycleHelper.OnControllerLoadComplete(controller);
     base.OnControllerLoadComplete(fromView, controller, viewPerspective);
 }
Пример #10
0
 protected override void OnControllerLoadComplete(IMXView fromView, IMXController controller, MXViewPerspective viewPerspective)
 {
     controller.RenderView();
 }
Пример #11
0
        protected override void OnControllerLoadComplete(IMXView fromView, IMXController controller, MXViewPerspective perspective)
        {
            // store of the stack for later
            NavHistory.Push(new NavDetail(controller.Uri, controller.Parameters));

            // render the view
            MXConsoleContainer.RenderViewFromPerspective(controller, perspective);
        }
Пример #12
0
        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());
            }
        }
Пример #13
0
 protected override void OnControllerLoadComplete(IMXView fromView, IMXController controller, MXViewPerspective viewPerspective)
 {
     controller.RenderView();
     if (controller.View.GetType().BaseType.GetGenericTypeDefinition() != typeof(MXWebkitView <>) && RenderLayer != null)
     {
         HtmlGenericControl control = RenderLayer(controller.View);
         if (controller.Uri == App.NavigateOnLoad)
         {
             MXWebkitView <object> .WriteToResponse(controller.ModelType.ToString(), control.Attributes["title"], control);
         }
         else
         {
             MXWebkitView <object> .WriteAjaxToResponse(controller.ModelType.ToString(), control.Attributes["title"], control);
         }
     }
 }
Пример #14
0
 protected override void OnControllerLoadComplete(IMXView fromView, IMXController controller, MXViewPerspective viewPerspective)
 {
     //Console.WriteLine("Controller Load End");
     Xamarin.Forms.Device.BeginInvokeOnMainThread(() => {
         LoadViewForController(fromView, controller, viewPerspective);
         if (ControllerLoadComplete != null)
         {
             ControllerLoadComplete(controller);
         }
     });
 }
Пример #15
0
        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);
        }