protected override void OnNavigatedTo(NavigationEventArgs e)
        {
            base.OnNavigatedTo(e);

            ReactiveViewModelRequest req = this.ViewCreated(e.Uri);

            this.LoadState(e);
        }
        public IObservable <bool> Open(ReactiveViewModelRequest viewModel)
        {
            Intent intent = this.requestTranslator.GetIntentForViewModelRequest(viewModel);

            return(this.currentActivity.CurrentActivity.FirstOrDefaultAsync().Select(act =>
            {
                act.StartActivity(intent);
                return true;
            }));
        }
Exemple #3
0
        public static void ViewCreated(this IReactiveView This, ReactiveViewModelRequest viewModelRequest)
        {
            This.ViewCreated(() =>
            {
                var viewModelLocator = Locator.Current.GetService <IViewModelLocator>();
                var viewModel        = viewModelLocator.GetViewModelForViewModelType(viewModelRequest.ViewModelType, viewModelRequest.Parameters);

                return(viewModel);
            });
        }
Exemple #4
0
        public IiOSReactiveView GetViewControllerForViewModelRequest(ReactiveViewModelRequest viewModelRequest)
        {
            var viewType = this.viewLocator.GetViewTypeForViewModelType(viewModelRequest.ViewModelType);

            if (viewType == null)
            {
                throw new Exception("View Type not found for " + viewModelRequest.ViewModelType);
            }

            var view = this.CreateViewOfType(viewType);

            view.Request = viewModelRequest;
            return(view);
        }
        public virtual Uri GetUriForViewModelRequest(ReactiveViewModelRequest request)
        {
            var viewType = viewLocator.GetViewTypeForViewModelType(request.ViewModelType);

            if (viewType == null)
            {
                throw new InvalidOperationException("No view type found for" + request.ViewModelType);
            }

            string requestString = this.navigationSerializer.SerializeObject(request);
            string uriString     = string.Format("{0}?request={1}", this.GetUriPartForView(viewType), Uri.EscapeDataString(requestString));

            return(new Uri(uriString, UriKind.Relative));
        }
        protected override void OnNavigatedTo(NavigationEventArgs e)
        {
            base.OnNavigatedTo(e);

            ReactiveViewModelRequest req = e.Parameter as ReactiveViewModelRequest;

            if (req == null)
            {
                throw new InvalidOperationException("Parameter should be of type ReactiveViewModelRequest");
            }

            this.ViewCreated(req);

            this.LoadState(e);
        }
        public virtual IObservable <bool> Open(ReactiveViewModelRequest viewModelRequest)
        {
            this.Log().Info("Navigating to {0}", viewModelRequest.ViewModelType);

            try
            {
                Type viewType = this.viewLocator.GetViewTypeForViewModelType(viewModelRequest.ViewModelType);
                bool success  = this.frame.Navigate(viewType, viewModelRequest);
                return(Observable.Return(success));
            }
            catch (Exception exception)
            {
                this.Log().ErrorException("Error occurred during navigation.", exception);
                return(Observable.Return(false));
            }
        }
Exemple #8
0
        public virtual IObservable <bool> Open(ReactiveViewModelRequest viewModel)
        {
            this.Log().Info("Navigating to {0}", viewModel.ViewModelType);

            try
            {
                var  uri     = requestTranslator.GetUriForViewModelRequest(viewModel);
                bool success = frame.Navigate(uri);
                return(Observable.Return(success));
            }
            catch (Exception exception)
            {
                this.Log().ErrorException("Error occurred during navigation.", exception);
                return(Observable.Return(false));
            }
        }
        public Intent GetIntentForViewModelRequest(ReactiveViewModelRequest viewModelRequest)
        {
            var viewType = this.viewLocator.GetViewTypeForViewModelType(viewModelRequest.ViewModelType);

            if (viewType == null)
            {
                throw new InvalidOperationException("No view type found for" + viewModelRequest.ViewModelType);
            }

            string requestString = this.navigationSerializer.SerializeObject(viewModelRequest);
            Intent intent        = new Intent(this.application.ApplicationContext, viewType);

            intent.PutExtra("request", requestString);

            return(intent);
        }
        public IObservable <bool> Open(ReactiveViewModelRequest viewModel)
        {
            IiOSReactiveView view = this.translator.GetViewControllerForViewModelRequest(viewModel);

            var viewController = view as UIViewController;

            if (viewController == null)
            {
                throw new InvalidOperationException("Passed in IiOSReactiveView is not a UIViewController");
            }

            if (this.MasterNavigationController == null)
            {
                this.CreateMasterNavigationController(viewController);
            }
            else
            {
                this.MasterNavigationController.PushViewController(viewController, true);
            }

            return(Observable.Return(true));
        }
        protected override void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);

            this.viewModelRequest = this.ViewCreated(this.Intent);
        }
Exemple #12
0
 public IObservable <bool> OpenViewModel(ReactiveViewModelRequest viewModel)
 {
     return(this.dispatcher.RunOnMainThread <bool>(() => viewPresenter.Open(viewModel)));
 }