public virtual IObservable <bool> Close(IReactiveViewModel viewModel) { IViewFor currentView = this.frame.Content as IViewFor; if (currentView == null) { this.Log().Info("Frame has no page. Ignore close for viewmodel {0}.", viewModel); return(Observable.Return(false)); } if (currentView.ViewModel != viewModel) { this.Log().Info("The current page does not correspond to the closing viewmodel. Ignore close for viewmodel {0}.", viewModel); return(Observable.Return(false)); } if (!frame.CanGoBack) { this.Log().Info("The frame can not go back. Ignore close for viewmodel {0}.", viewModel); return(Observable.Return(false)); } this.Log().Info("Closing {0}", viewModel); this.frame.GoBack(); return(Observable.Return(true)); }
public IObservable <bool> Close(IReactiveViewModel viewModel) { var topViewController = this.MasterNavigationController.TopViewController; if (topViewController == null) { this.Log().Info("No topmost view controller found. Ignore close for viewmodel {0}.", viewModel); return(Observable.Return(false)); } IViewFor currentView = topViewController as IViewFor; if (currentView == null) { this.Log().Info("Topmost view controller is not IViewFor. Ignore close for viewmodel {0}.", viewModel); return(Observable.Return(false)); } if (currentView.ViewModel != viewModel) { this.Log().Info("Topmost view controller does not correspond to the closing viewmodel. Ignore close for viewmodel {0}.", viewModel); return(Observable.Return(false)); } this.MasterNavigationController.PopViewControllerAnimated(true); return(Observable.Return(true)); }
public IObservable <bool> Close(IReactiveViewModel viewModel) { return(this.currentActivity.CurrentActivity.FirstOrDefaultAsync().Select(act => { IViewFor currentView = act as IViewFor; if (currentView == null) { this.Log().Info("Frame has no page. Ignore close for viewmodel {0}.", viewModel); return false; } if (currentView.ViewModel != viewModel) { this.Log().Info("The current page does not correspond to the closing viewmodel. Ignore close for viewmodel {0}.", viewModel); return false; } this.Log().Info("Closing {0}", viewModel); act.Finish(); return true; })); }
public static IObservable <bool> OpenViewModel(this IReactiveViewModel This, Type viewModelType, IDataContainer parameters, IDataContainer presentationInfo) { return(This.ViewDispatcher.OpenViewModel(new ReactiveViewModelRequest(viewModelType, parameters, presentationInfo))); }
public static IObservable <bool> OpenViewModel <TViewModel>(this IReactiveViewModel This, IDataContainer parameters, IDataContainer presentationInfo = null) where TViewModel : IReactiveViewModel { return(This.OpenViewModel(typeof(TViewModel), parameters, presentationInfo)); }
public static IObservable <bool> OpenViewModel <TViewModel>(this IReactiveViewModel This, IDictionary <string, string> parameters, IDictionary <string, string> presentationInfo = null) where TViewModel : IReactiveViewModel { return(This.OpenViewModel(typeof(TViewModel), new DataContainer(parameters), new DataContainer(presentationInfo))); }
public static IObservable <bool> OpenViewModel <TViewModel>(this IReactiveViewModel This) where TViewModel : IReactiveViewModel { return(This.OpenViewModel(typeof(TViewModel), null, null)); }
public static IObservable <bool> CloseViewModel(this IReactiveViewModel This, IReactiveViewModel viewModel) { return(This.ViewDispatcher.CloseViewModel(viewModel)); }
public static IObservable <T> RunOnMainThread <T>(this IReactiveViewModel This, Func <IObservable <T> > func) { return(This.RunOnMainThread <IObservable <T> >(func).Merge()); }
public static IObservable <T> RunOnMainThread <T>(this IReactiveViewModel This, Func <CancellationToken, Task <T> > task) { return(This.MainThread.RunOnMainThread(task)); }
public static IObservable <T> RunOnMainThread <T>(this IReactiveViewModel This, Func <T> func) { return(This.MainThread.RunOnMainThread(func)); }
public static IObservable <Unit> RunOnMainThread(this IReactiveViewModel This, Action action) { return(This.MainThread.RunOnMainThread(action)); }
public IObservable <bool> CloseViewModel(IReactiveViewModel viewModel) { return(this.dispatcher.RunOnMainThread <bool>(() => viewPresenter.Close(viewModel))); }