示例#1
0
        private async Task <IMvxViewModel> NavigateRoute(string path)
        {
            KeyValuePair <Regex, Type> entry;

            if (!TryGetRoute(path, out entry))
            {
                return(null);
            }

            var regex     = entry.Key;
            var match     = regex.Match(path);
            var paramDict = BuildParamDictionary(regex, match);

            var viewModelType           = entry.Value;
            MvxViewModelRequest request = null;
            IMvxViewModel       viewModel;

            if (viewModelType.GetInterfaces().Contains(typeof(IMvxNavigationFacade)))
            {
                var facade = (IMvxNavigationFacade)Mvx.IocConstruct(viewModelType);

                try
                {
                    var facadeRequest = await facade.BuildViewModelRequest(path, paramDict);

                    viewModel = (IMvxViewModel)Mvx.IocConstruct(facadeRequest.ViewModelType);

                    if (facadeRequest == null)
                    {
                        Mvx.TaggedWarning("MvxNavigationService", "Facade did not return a valid MvxViewModelRequest.");
                        return(null);
                    }
                }
                catch (Exception ex)
                {
                    Mvx.TaggedError("MvxNavigationService",
                                    "Exception thrown while processing URL: {0} with RoutingFacade: {1}, {2}",
                                    path, viewModelType, ex);
                    return(null);
                }
            }
            else
            {
                viewModel = (IMvxViewModel)Mvx.IocConstruct(viewModelType);
            }

            request = new MvxViewModelInstanceRequest(viewModel)
            {
                ParameterValues = new MvxBundle(paramDict).SafeGetData()
            };
            _viewDispatcher.ShowViewModel(request);

            return(viewModel);
        }
 private async Task SignOutUser()
 {
     _dispatcher.RequestMainThreadAction(() =>
     {
         _dispatcher.ShowViewModel(new MvxViewModelRequest(typeof(LoginViewModel), null, null, MvxRequestedBy.UserAction));
     });
     Mvx.Resolve <IAccountService>().SignOut();
     await Mvx.Resolve <IOrderWorkflowService>().PrepareForNewOrder();
 }
        public void Alert(string message, string title)
        {
            var paramiters = new Dictionary <string, string>
            {
                { nameof(message), message }
            };

            _ViewDispatcher.ShowViewModel(new MvxViewModelRequest(typeof(AlertViewModel), new MvxBundle(paramiters), null, null));
        }
        public async Task RouteAsync(string url, MvxRequestedBy requestedBy)
        {
            KeyValuePair <Regex, Type> entry;

            if (!TryGetRoute(url, out entry))
            {
                return;
            }

            var regex     = entry.Key;
            var match     = regex.Match(url);
            var paramDict = BuildParamDictionary(regex, match);

            var viewModelType           = entry.Value;
            MvxViewModelRequest request = null;

            if (viewModelType.GetInterfaces().Contains(typeof(IMvxRoutingFacade)))
            {
                var facade = (IMvxRoutingFacade)Mvx.IocConstruct(viewModelType);

                try
                {
                    request = await facade.BuildViewModelRequest(url, paramDict, requestedBy);
                }
                catch (Exception ex)
                {
                    Mvx.TaggedError("MvxRoutingService",
                                    "Exception thrown while processing URL: {0} with RoutingFacade: {1}, {2}",
                                    url, viewModelType, ex);
                }

                if (request == null)
                {
                    Mvx.TaggedWarning("MvxRoutingService", "Facade did not return a valid MvxViewModelRequest.");
                    return;
                }
            }
            else
            {
                request = new MvxViewModelRequest(
                    viewModelType,
                    new MvxBundle(paramDict),
                    null,
                    requestedBy);
            }

            _viewDispatcher.ShowViewModel(request);
        }
示例#5
0
        protected void NavigateToRequestIfPresent(Intent intent)
        {
            // If MvxLaunchData is present, we then know we should navigate to that intent
            string requestText = intent.GetStringExtra("Request");

            if (requestText == null)
            {
                return;
            }

            IMvxViewDispatcher viewDispatcher = Mvx.IoCProvider.Resolve <IMvxViewDispatcher>();

            IMvxNavigationSerializer converter = Mvx.IoCProvider.Resolve <IMvxNavigationSerializer>();
            MvxViewModelRequest      request   = converter.Serializer.DeserializeObject <MvxViewModelRequest>(requestText);

            viewDispatcher.ShowViewModel(request);
        }
示例#6
0
        public void ActivateUser(BitbucketAccount account, Client client)
        {
            Accounts.SetActiveAccount(account);
            Account = account;
            Client  = client;

            //Set the default account
            Accounts.SetDefault(account);

            //Check the cache size
            CheckCacheSize(account.Cache);

            //Client.Cache = new GitHubCache(account);

            // Show the menu & show a page on the slideout
            _viewDispatcher.ShowViewModel(new MvxViewModelRequest {
                ViewModelType = typeof(MenuViewModel)
            });
        }
 public bool ShowViewModel(MvxViewModelRequest request)
 {
     return(_decorated.ShowViewModel(request));
 }