Ejemplo n.º 1
0
        private void GoToAccounts(object o)
        {
            var vc  = new AccountsViewController();
            var nav = new ThemedNavigationController(vc);

            PresentViewController(nav, true, null);
        }
Ejemplo n.º 2
0
        public static NewCommentViewController Present(UIViewController parent, Func <string, Task> saveAction)
        {
            var vc  = new NewCommentViewController(saveAction);
            var nav = new ThemedNavigationController(vc);

            parent.PresentViewController(nav, true, null);
            vc.Dismissed.Subscribe(_ => vc.DismissViewController(true, null));
            return(vc);
        }
Ejemplo n.º 3
0
        public static UIViewController PresentUpgradeViewController(this UIViewController @this)
        {
            var vc  = new UpgradeViewController();
            var nav = new ThemedNavigationController(vc);

            var navObj = new UIBarButtonItem(Images.Buttons.CancelButton, UIBarButtonItemStyle.Done, (_, __) => @this.DismissViewController(true, null));

            vc.ViewWillAppearCalled   += (sender, e) => vc.NavigationItem.LeftBarButtonItem = navObj;
            vc.ViewDidDisappearCalled += (sender, e) => vc.NavigationItem.LeftBarButtonItem = null;
            @this.PresentViewController(nav, true, null);
            return(vc);
        }
        private void DoTransition(UIViewController fromViewController, IBaseViewModel fromViewModel, UIViewController toViewController, IBaseViewModel toViewModel)
        {
            var toViewDismissCommand = toViewModel.DismissCommand;

//            if (toViewController is SettingsViewController)
//            {
//                toViewController.NavigationItem.LeftBarButtonItem = new UIBarButtonItem(CodeFramework.iOS.Images.Cancel, UIBarButtonItemStyle.Plain, (s, e) => toViewDismissCommand.ExecuteIfCan());
//                toViewDismissCommand.Subscribe(__ => toViewController.DismissViewController(true, null));
//                fromViewController.PresentViewController(new UINavigationController(toViewController), true, null);
//            }
            if (toViewController is AccountsView || toViewController is WebBrowserViewController || toViewController is GistCommentView ||
                toViewController is CommitCommentView || toViewController is GistCreateView || toViewController is FeedbackComposerView)
            {
                var rootNav = (UINavigationController)UIApplication.SharedApplication.Delegate.Window.RootViewController;
                toViewController.NavigationItem.LeftBarButtonItem = new UIBarButtonItem(Images.Cancel, UIBarButtonItemStyle.Plain, (s, e) => toViewDismissCommand.ExecuteIfCan());
                toViewDismissCommand.Subscribe(_ => rootNav.DismissViewController(true, null));
                rootNav.PresentViewController(new ThemedNavigationController(toViewController), true, null);
            }
//            else if (fromViewController is RepositoriesViewController)
//            {
//                fromViewController.NavigationController.PresentViewController(toViewController, true, null);
//            }
            else if (toViewController is MenuView)
            {
                var nav      = ((UINavigationController)UIApplication.SharedApplication.Delegate.Window.RootViewController);
                var slideout = new SlideoutNavigationController();
                slideout.MenuViewController = new MenuNavigationController(toViewController, slideout);
                UIView.Transition(nav.View, 0.1, UIViewAnimationOptions.BeginFromCurrentState | UIViewAnimationOptions.TransitionCrossDissolve,
                                  () => nav.PushViewController(slideout, false), null);
            }
            else if (toViewController is NewAccountView && fromViewController is StartupView)
            {
                toViewDismissCommand.Subscribe(_ => toViewController.DismissViewController(true, null));
                fromViewController.PresentViewController(new ThemedNavigationController(toViewController), true, null);
            }
            else if (fromViewController is MenuView)
            {
                fromViewController.NavigationController.PushViewController(toViewController, true);
            }
            else if (toViewController is LanguagesView && fromViewController is RepositoriesTrendingView)
            {
                toViewDismissCommand.Subscribe(_ => fromViewController.DismissViewController(true, null));
                toViewController.NavigationItem.LeftBarButtonItem = new UIBarButtonItem(UIBarButtonSystemItem.Done, (s, e) => toViewDismissCommand.ExecuteIfCan());
                var ctrlToPresent = new ThemedNavigationController(toViewController);
                ctrlToPresent.TransitioningDelegate = new SlideDownTransition();
                fromViewController.PresentViewController(ctrlToPresent, true, null);
            }
            else
            {
                toViewDismissCommand.Subscribe(_ => toViewController.NavigationController.PopToViewController(fromViewController, true));
                fromViewController.NavigationController.PushViewController(toViewController, true);
            }
        }
Ejemplo n.º 5
0
 protected override void HandleNavigation(CodeHub.Core.ViewModels.IBaseViewModel viewModel, UIViewController view)
 {
     if (view is LanguagesViewController)
     {
         var ctrlToPresent = new ThemedNavigationController(view);
         ctrlToPresent.TransitioningDelegate = new SlideDownTransition();
         PresentViewController(ctrlToPresent, true, null);
         viewModel.RequestDismiss.Subscribe(_ => DismissViewController(true, null));
     }
     else
     {
         base.HandleNavigation(viewModel, view);
     }
 }
Ejemplo n.º 6
0
        public static UIViewController PresentUpgradeViewController(this UIViewController @this)
        {
            var vc  = new UpgradeViewController();
            var nav = new ThemedNavigationController(vc);

            var navObj = new UIBarButtonItem {
                Image = Images.Buttons.Cancel
            };

            vc.OnActivation(disposble => navObj.GetClickedObservable().Subscribe(_ => @this.DismissViewController(true, null)).AddTo(disposble));
            vc.NavigationItem.LeftBarButtonItem = navObj;
            @this.PresentViewController(nav, true, null);
            return(vc);
        }
Ejemplo n.º 7
0
        public static UpgradeViewController Present(UIViewController parent)
        {
            var vc  = new UpgradeViewController();
            var nav = new ThemedNavigationController(vc);

            var navObj = new UIBarButtonItem(
                UIBarButtonSystemItem.Cancel,
                (_, __) => parent.DismissViewController(true, null));

            vc.Appearing.Subscribe(_ => vc.NavigationItem.LeftBarButtonItem   = navObj);
            vc.Disappeared.Subscribe(_ => vc.NavigationItem.LeftBarButtonItem = null);

            parent.PresentViewController(nav, true, null);
            return(vc);
        }
Ejemplo n.º 8
0
        private void ShowLanguages()
        {
            var vm   = new WeakReference <RepositoriesTrendingViewModel>(ViewModel as RepositoriesTrendingViewModel);
            var view = new LanguagesViewController();

            view.SelectedLanguage = vm.Get()?.SelectedLanguage;
            view.NavigationItem.LeftBarButtonItem = new UIBarButtonItem {
                Image = Images.Buttons.CancelButton
            };
            view.NavigationItem.LeftBarButtonItem.GetClickedObservable().Subscribe(_ => DismissViewController(true, null));
            view.Language.Subscribe(x => {
                Root.Clear();
                vm.Get().With(y => y.SelectedLanguage = x);
                DismissViewController(true, null);
            });
            var ctrlToPresent = new ThemedNavigationController(view);

            ctrlToPresent.TransitioningDelegate = new SlideDownTransition();
            PresentViewController(ctrlToPresent, true, null);
        }
Ejemplo n.º 9
0
        protected override void HandleNavigation(CodeHub.Core.ViewModels.IBaseViewModel viewModel, UIViewController view)
        {
//            if (view is MenuViewController)
//            {
//                var appDelegate = (AppDelegate)UIApplication.SharedApplication.Delegate;
//                var nav = ((UINavigationController)appDelegate.Window.RootViewController);
//                var slideout = new SlideoutNavigationController();
//                slideout.MenuViewController = new MenuNavigationController(view, slideout);
//                UIView.Transition(nav.View, 0.3, UIViewAnimationOptions.BeginFromCurrentState | UIViewAnimationOptions.TransitionCrossDissolve,
//                    () => nav.PushViewController(slideout, false), null);
//            }
//            else
//            {
//                PresentViewController(new ThemedNavigationController(view), true, null);
//                viewModel.RequestDismiss.Subscribe(_ => DismissViewController(true, null));
//            }

            var nav = new ThemedNavigationController(view);

            PresentViewController(nav, true, null);
//            NavigationController.PushViewController(nav, true);
        }
Ejemplo n.º 10
0
        private void DoTransition(IViewFor fromView, IViewFor toView)
        {
            var toViewController    = (UIViewController)toView;
            var toViewModel         = (IBaseViewModel)toView.ViewModel;
            var fromViewController  = (UIViewController)fromView;
            var routableToViewModel = toViewModel as IRoutingViewModel;
            IReactiveCommand <object> toViewDismissCommand = null;


            if (toViewController is AccountsView || toViewController is WebBrowserView || toViewController is GistCommentView ||
                toViewController is CommitCommentView || toViewController is GistCreateView || toViewController is FeedbackComposerView)
            {
                var appDelegate = (AppDelegate)UIApplication.SharedApplication.Delegate;
                var rootNav     = (UINavigationController)appDelegate.Window.RootViewController;
                toViewDismissCommand = ReactiveCommand.Create().WithSubscription(_ => rootNav.DismissViewController(true, null));
                toViewController.NavigationItem.LeftBarButtonItem = new UIBarButtonItem(Images.Cancel, UIBarButtonItemStyle.Plain, (s, e) => toViewDismissCommand.ExecuteIfCan());
                var navController = new ThemedNavigationController(toViewController);
                rootNav.PresentViewController(navController, true, null);
            }
            else if (toViewController is MenuView)
            {
                var appDelegate = (AppDelegate)UIApplication.SharedApplication.Delegate;
                var nav         = ((UINavigationController)appDelegate.Window.RootViewController);
                var slideout    = new SlideoutNavigationController();
                slideout.MenuViewController = new MenuNavigationController(toViewController, slideout);
                UIView.Transition(nav.View, 0.1, UIViewAnimationOptions.BeginFromCurrentState | UIViewAnimationOptions.TransitionCrossDissolve,
                                  () => nav.PushViewController(slideout, false), null);
            }
            else if (toViewController is NewAccountView && fromViewController is StartupView)
            {
                toViewDismissCommand = ReactiveCommand.Create().WithSubscription(_ => toViewController.DismissViewController(true, null));
                fromViewController.PresentViewController(new ThemedNavigationController(toViewController), true, null);
            }
            else if (fromViewController is MenuView)
            {
                fromViewController.NavigationController.PushViewController(toViewController, true);
            }
            else if (toViewController is LanguagesView && fromViewController is RepositoriesTrendingView)
            {
                toViewDismissCommand = ReactiveCommand.Create().WithSubscription(_ => fromViewController.DismissViewController(true, null));
                toViewController.NavigationItem.LeftBarButtonItem = new UIBarButtonItem(UIBarButtonSystemItem.Done, (s, e) => toViewDismissCommand.ExecuteIfCan());
                var ctrlToPresent = new ThemedNavigationController(toViewController);
                ctrlToPresent.TransitioningDelegate = new SlideDownTransition();
                fromViewController.PresentViewController(ctrlToPresent, true, null);
            }
            else if (toViewController is EditFileView || toViewController is CreateFileView)
            {
                toViewDismissCommand = ReactiveCommand.Create().WithSubscription(_ => fromViewController.DismissViewController(true, null));
                toViewController.NavigationItem.LeftBarButtonItem = new UIBarButtonItem(Images.Cancel, UIBarButtonItemStyle.Plain, (s, e) => toViewDismissCommand.ExecuteIfCan());
                fromViewController.PresentViewController(new ThemedNavigationController(toViewController), true, null);
            }
            else
            {
                toViewDismissCommand = ReactiveCommand.Create().WithSubscription(_ => toViewController.NavigationController.PopToViewController(fromViewController, true));
                fromViewController.NavigationController.PushViewController(toViewController, true);
            }

            if (toViewDismissCommand != null)
            {
                routableToViewModel.RequestDismiss.Subscribe(_ =>
                {
                    this.Log().Info("{0} is requesting dismissal", routableToViewModel.GetType().Name);
                    toViewDismissCommand.ExecuteIfCan();
                });
            }

            toViewModel.RequestNavigation.Subscribe(x =>
            {
                var viewType   = _viewModelViewService.GetViewFor(x.GetType());
                var view       = (IViewFor)_serviceConstructor.Construct(viewType);
                view.ViewModel = x;
                Transition(toView, view);
            });
        }