Ejemplo n.º 1
0
        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));
        }
Ejemplo n.º 2
0
        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));
        }
Ejemplo n.º 3
0
        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));
 }
Ejemplo n.º 13
0
 public IObservable <bool> CloseViewModel(IReactiveViewModel viewModel)
 {
     return(this.dispatcher.RunOnMainThread <bool>(() => viewPresenter.Close(viewModel)));
 }