private static void ViewModelRequestForSegueImpl(this IMvxEventSourceViewController _, UIStoryboardSegue segue, IMvxBundle parameterBundle = null)
        {
            var view = segue.DestinationViewController as IMvxIosView;

            if (view != null && view.Request == null)
            {
                var type = view.GetViewModelType();
                if (type != null)
                {
                    var by = new MvxRequestedBy(MvxRequestedByType.Other, $"Segue: {segue.Identifier}");
                    view.Request = new MvxViewModelRequest(type, parameterBundle, null, by);
                }
            }
        }
        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);
        }
Exemplo n.º 3
0
        /*
         * public void Init(Guid requestedViewId)
         * {
         *      if (requestedViewId != null)
         *      {
         *              RequestedByViewInstanceId = requestedViewId;
         *      }
         * }
         */


        public bool ShowViewModel <TViewModel>() where TViewModel : IMvxViewModel
        {
            var requestedBy = new MvxRequestedBy();

            //
            // The Current (Parent) view model that is requesting to show a *NEW* view will have the Guid assigned into the
            // requestedBy additional info column.
            //
            // The Presenter will pass this new view to the parent that has matching Guid, so Parent can show this view.
            //
            requestedBy.AdditionalInfo = ViewInstanceId.ToString();
            return(ShowViewModel(
                       typeof(TViewModel),
                       //null,
                       //null,
                       requestedBy: requestedBy));
        }
Exemplo n.º 4
0
        private void SelectVehicle(string vehicleId)
        {
            if (string.IsNullOrEmpty(vehicleId))
            {
                _selectedVehicle = null;
                this.SetVehicleMarkersSelectionState(MapMarkerSelectionStates.NoSelection, null);
            }

            VehicleViewModel vehicleVM;

            _vehicles.TryGetValue(vehicleId, out vehicleVM);
            if (vehicleVM == null)
            {
                return;
            }

            _selectedVehicle = vehicleVM;
            _selectedVehicle.SelectionState = MapMarkerSelectionStates.SelectionSelected;

            this.SetVehicleMarkersSelectionState(MapMarkerSelectionStates.SelectionNotSelected, new[] { _selectedVehicle.Model.Id });

            var requestedBy = new MvxRequestedBy(MvxRequestedByType.UserAction, "map_tap");
            var navParams   = new
            {
                id               = _selectedVehicle.VehicleId,
                carPlate         = _selectedVehicle.CarPlate,
                vehicleType      = _selectedVehicle.VehicleType,
                routeId          = _selectedVehicle.Model.RouteInfo.RouteId,
                routeNumber      = _selectedVehicle.Model.RouteInfo.RouteNumber,
                routeDisplayName = _selectedVehicle.Model.RouteInfo.DisplayName,
                runUpdates       = true
            };

            this.ShowViewModel <VehicleForecastViewModel>(navParams, null, requestedBy);

            //TODO: center map view on vehicle
            //this.CenterMap(_selectedVehicle.Location.Position);
        }
Exemplo n.º 5
0
        private void SelectRouteStop(string routeStopId)
        {
            if (string.IsNullOrEmpty(routeStopId))
            {
                this.SelectedRouteStop = null;
                this.SetRouteStopMarkersSelectionState(MapMarkerSelectionStates.NoSelection, null);

                return;
            }

            var routeStopVM = _stops.FirstOrDefault(x => x.Model.Id.Equals(routeStopId));

            if (routeStopVM == null)
            {
                return;
            }

            this.SelectedRouteStop = routeStopVM;
            this.SelectedRouteStop.SelectionState = MapMarkerSelectionStates.SelectionSelected;

            this.SetRouteStopMarkersSelectionState(MapMarkerSelectionStates.SelectionNotSelected, new[] { _selectedRouteStop.Model.Id });

            var requestedBy = new MvxRequestedBy(MvxRequestedByType.UserAction, "map_tap");

            this.ShowViewModel <RouteStopViewModel>(
                new
            {
                id          = _selectedRouteStop.Model.Id,
                name        = _selectedRouteStop.Model.Name,
                description = _selectedRouteStop.Model.Description
            },
                null,
                requestedBy);

            this.RaiseRouteStopSelectedEvent(this.SelectedRouteStop);
        }
Exemplo n.º 6
0
 public MvxShowViewModelRequest(Type viewModelType, IDictionary <string, string> parameterValues, bool clearTop, MvxRequestedBy requestedBy)
 {
     ViewModelType   = viewModelType;
     ParameterValues = parameterValues;
     ClearTop        = clearTop;
     RequestedBy     = requestedBy;
 }
Exemplo n.º 7
0
 protected new bool ShowViewModel(Type viewModelType, IMvxBundle parameterBundle = null, IMvxBundle presentationBundle = null, MvxRequestedBy requestedBy = null)
 {
     return(Navigate(viewModelType, () => base.ShowViewModel(viewModelType, parameterBundle, presentationBundle, requestedBy)));
 }
Exemplo n.º 8
0
 protected new bool ShowViewModel <TViewModel>(IMvxBundle parameterBundle = null, IMvxBundle presentationBundle = null, MvxRequestedBy requestedBy = null)
     where TViewModel : IMvxViewModel
 {
     return(Navigate <TViewModel>(() => base.ShowViewModel <TViewModel>(parameterBundle, presentationBundle, requestedBy)));
 }
Exemplo n.º 9
0
        public Task <MvxViewModelRequest> BuildViewModelRequest(string url,
                                                                IDictionary <string, string> currentParameters, MvxRequestedBy requestedBy)
        {
            var viewModelType = currentParameters["vm"] == "a" ? typeof(ViewModelA) : typeof(ViewModelB);

            return(Task.FromResult(new MvxViewModelRequest(viewModelType, new MvxBundle(), null, requestedBy)));
        }
Exemplo n.º 10
0
        protected bool ShowViewModelConditionalImpl <TViewModel>(bool viewModelshouldHandleError, Type viewModelType, IMvxBundle parameterBundle, IMvxBundle presentationBundle, MvxRequestedBy requestedBy)
        {
            MvxTrace.Trace("Showing ViewModel {0}", viewModelType.Name);
            var viewDispatcher = ViewDispatcher as IMvxConditionalDispatcher;

            // TODO: maybe check for null here, means, there is no IMvxConditionalDispatcher compatible dispatcher, but it is required for this calle
            if (viewDispatcher != null)
            {
                return(viewDispatcher.ShowViewModel(new MvxViewModelRequest(typeof(TViewModel), parameterBundle, presentationBundle, requestedBy), viewModelshouldHandleError));
            }

            return(false);
        }
Exemplo n.º 11
0
        public Task <MvxViewModelRequest> BuildViewModelRequest(string url, IDictionary <string, string> currentParameters, MvxRequestedBy requestedBy)
        {
            // you can also use the values captured by the regex in currentPrameters

            var viewModelType = (new Random().Next() % 2 == 0) ? typeof(TestAViewModel) : typeof(TestBViewModel);

            return(Task.FromResult(new MvxViewModelRequest(viewModelType, new MvxBundle(), null, requestedBy)));
        }