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); }
/* * 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)); }
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); }
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); }
public MvxShowViewModelRequest(Type viewModelType, IDictionary <string, string> parameterValues, bool clearTop, MvxRequestedBy requestedBy) { ViewModelType = viewModelType; ParameterValues = parameterValues; ClearTop = clearTop; RequestedBy = requestedBy; }
protected new bool ShowViewModel(Type viewModelType, IMvxBundle parameterBundle = null, IMvxBundle presentationBundle = null, MvxRequestedBy requestedBy = null) { return(Navigate(viewModelType, () => base.ShowViewModel(viewModelType, parameterBundle, presentationBundle, requestedBy))); }
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))); }
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))); }
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); }
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))); }