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; })); }
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); }); }
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)); } }
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); }
public IObservable <bool> OpenViewModel(ReactiveViewModelRequest viewModel) { return(this.dispatcher.RunOnMainThread <bool>(() => viewPresenter.Open(viewModel))); }