protected IMvxViewModel LoadModel(MvxShowViewModelRequest request) { var viewModelLocatorFinder = this.GetService <IMvxViewModelLocatorFinder>(); var viewModelLocator = viewModelLocatorFinder.FindLocator(request); if (viewModelLocator == null) { throw new MvxException("Sorry - somehow there's no viewmodel locator wired up for {0} looking for {1}", GetType().Name, typeof(T).Name); } if (viewModelLocator.ViewModelType != typeof(T)) { throw new MvxException( "Sorry - somehow view {0} has been wired up to viewmodel type {1} but received a request to show viewmodel type {2}", GetType().Name, typeof(T).Name, viewModelLocator.ViewModelType.Name); } IMvxViewModel model = null; if (!viewModelLocator.TryLoad(request.ViewModelAction.ActionName, request.ParameterValues, out model)) { throw new MvxException( "Failed to load ViewModel for type {0} action {1}", typeof(T).Name, request.ViewModelAction.ActionName); } return(model); }
public IMvxMacView CreateView(MvxShowViewModelRequest request) { var viewType = GetViewType(request.ViewModelType); if (viewType == null) { throw new MvxException("View Type not found for " + request.ViewModelType); } var view = Activator.CreateInstance(viewType) as IMvxMacView; if (view == null) { throw new MvxException("View not loaded for " + viewType); } var requestProperty = view.GetType().GetProperty("ViewModelRequest"); if (requestProperty == null) { throw new MvxException("ViewModelRequest Property missing for " + view.GetType()); } requestProperty.SetValue(view, request, null); return(view); }
public IMvxViewModel LoadViewModel(MvxShowViewModelRequest request) { if (request.ViewModelType == typeof(MvxNullViewModel)) { return(new MvxNullViewModel()); } var viewModelLocatorFinder = this.GetService <IMvxViewModelLocatorFinder>(); var viewModelLocator = viewModelLocatorFinder.FindLocator(request); if (viewModelLocator == null) { throw new MvxException("Sorry - somehow there's no viewmodel locator registered for {0}", request.ViewModelType); } IMvxViewModel model = null; if (!viewModelLocator.TryLoad(request.ViewModelType, request.ParameterValues, out model)) { throw new MvxException( "Failed to load ViewModel for type {0} from locator {1}", request.ViewModelType, viewModelLocator.GetType().Name); } if (model != null) { model.RequestedBy = request.RequestedBy; } return(model); }
public bool RequestNavigate(MvxShowViewModelRequest request) { var requestTranslator = this.GetService <IMvxWindowsPhoneViewModelRequestTranslator>(); var xamlUri = requestTranslator.GetXamlUriFor(request); return(InvokeOrBeginInvoke(() => _rootFrame.Navigate(xamlUri))); }
public AboutView(MvxShowViewModelRequest request) : base(request) { if (AppDelegate.IsPad) { this.View.Frame = new RectangleF(0, 0, 768, 1024); } }
public static IMvxTouchView CreateViewControllerFor <TTargetViewModel>( this IMvxTouchView view, MvxShowViewModelRequest <TTargetViewModel> request) where TTargetViewModel : class, IMvxViewModel { return(MvxServiceProviderExtensions.GetService <IMvxTouchViewCreator>().CreateView(request)); }
public void Show(MvxShowViewModelRequest request) { var requestTranslator = this.GetService <IMvxAndroidViewModelRequestTranslator>(); var intent = requestTranslator.GetIntentFor(request); Activity.StartActivity(intent); }
public CompositeView(MvxShowViewModelRequest request) : base(request) { if (_viewDidLoadCallNeeded) { ViewDidLoad(); } }
protected Intent CreateIntentFor <TTargetViewModel>(IDictionary <string, string> parameterValues = null) where TTargetViewModel : class, IMvxViewModel { parameterValues = parameterValues ?? new Dictionary <string, string>(); var request = new MvxShowViewModelRequest <TTargetViewModel>(parameterValues, false, MvxRequestedBy.UserAction); return(CreateIntentFor(request)); }
public SpheroView(MvxShowViewModelRequest request) : base(request) { if (_viewDidLoadCallNeeded) { ViewDidLoad(); } }
public bool RequestNavigate(MvxShowViewModelRequest request) { Action action = () => { MvxTrace.TaggedTrace("MacNavigation", "Navigate requested"); _presenter.Show(request); }; return RequestMainThreadAction(action); }
public TabBarController(MvxShowViewModelRequest request) : base(request) { this.GetService <ITabBarPresenterHost>().TabBarPresenter = this; if (_needViewDidLoadCall) { ViewDidLoad(); } }
public IMvxViewModelLocator Find(MvxShowViewModelRequest request) { IMvxViewModelLocator toReturn; if (!TryGetValue(request.ViewModelType, out toReturn)) { return(null); } return(toReturn); }
public static IMvxTouchView CreateViewControllerFor <TTargetViewModel>( this IMvxTouchView view, IDictionary <string, string> parameterValues = null) where TTargetViewModel : class, IMvxViewModel { parameterValues = parameterValues ?? new Dictionary <string, string>(); var request = new MvxShowViewModelRequest <TTargetViewModel>(parameterValues, false, MvxRequestedBy.UserAction); return(view.CreateViewControllerFor <TTargetViewModel>(request)); }
public virtual Tuple <Intent, int> GetIntentWithKeyFor(IMvxViewModel viewModel) { var request = MvxShowViewModelRequest.GetDefaultRequest(viewModel.GetType()); var intent = GetIntentFor(request); var key = this.GetService <IMvxAndroidSubViewModelCache>().Cache(viewModel); intent.PutExtra(SubViewModelKey, key); return(new Tuple <Intent, int>(intent, key)); }
public override void Show(MvxShowViewModelRequest request) { var view = CreateView(request); if (request.ClearTop) { ClearBackStack(); } Show(view); }
private static IMvxViewModel LoadViewModel(this IMvxWinRTView winRTView, MvxShowViewModelRequest viewModelRequest) { if (viewModelRequest.ClearTop) { #warning TODO! //phoneView.ClearBackStack(); } var loaderService = winRTView.GetService <IMvxViewModelLoader>(); var viewModel = loaderService.LoadViewModel(viewModelRequest); return((IMvxViewModel)viewModel); }
public void Show(MvxShowViewModelRequest request) { try { var requestTranslator = this.GetService <IMvxViewsContainer>(); var viewType = requestTranslator.GetViewType(request.ViewModelType); _rootFrame.Navigate(viewType, request); } catch (Exception exception) { MvxTrace.Trace("Error seen during navigation request to {0} - error {1}", request.ViewModelType.Name, exception.ToLongString()); } }
public virtual Uri GetXamlUriFor(MvxShowViewModelRequest request) { var viewType = GetViewType(request.ViewModelType); if (viewType == null) { throw new MvxException("View Type not found for " + request.ViewModelType); } var requestText = JsonConvert.SerializeObject(request); var viewUrl = string.Format("{0}?{1}={2}", GetBaseXamlUrlForView(viewType), QueryParameterKeyName, Uri.EscapeDataString(requestText)); return(new Uri(viewUrl, UriKind.Relative)); }
private static IMvxViewModel LoadViewModel(this IMvxMacView macView, MvxShowViewModelRequest viewModelRequest) { if (viewModelRequest.ClearTop) { #warning TODO - BackStack not cleared for Mac //phoneView.ClearBackStack(); } var loaderService = Mvx.Resolve <IMvxViewModelLoader>(); var viewModel = loaderService.LoadViewModel(viewModelRequest); return(viewModel); }
public IMvxViewModelLocator FindLocator(MvxShowViewModelRequest request) { var candidate = _lookup.Find(request); if (candidate != null) { return(candidate); } if (UseDefaultViewModelLocator) { return(CreateDefaultViewModelLocator()); } throw new MvxException("No ViewModelLocator registered for " + request.ViewModelType); }
public override void Navigate(MvxShowViewModelRequest request) { lock (this) { var viewType = GetViewType(request.ViewModelType); if (viewType == null) { throw new MvxException("View Type not found for " + request.ViewModelType); } var view = (IMvxConsoleView)Activator.CreateInstance(viewType); var viewModelLoader = this.GetService <IMvxViewModelLoader>(); var viewModel = viewModelLoader.LoadViewModel(request); view.HackSetViewModel(viewModel); this.GetService <IMvxConsoleCurrentView>().CurrentView = view; _navigationStack.Push(request); } }
public virtual IMvxTouchView CreateView(MvxShowViewModelRequest request) { var viewType = GetViewType(request.ViewModelType); if (viewType == null) { throw new MvxException("View Type not found for " + request.ViewModelType); } var view = Activator.CreateInstance(viewType, request) as IMvxTouchView; if (view == null) { throw new MvxException("View not loaded for " + viewType); } return(view); }
public override void Show(MvxShowViewModelRequest request) { try { var view = GetView(request); var viewController = view as NSViewController; if (viewController == null) { throw new MvxException("Passed in IMvxTouchView is not a NSViewController"); } PlaceView(request, viewController); } catch (Exception exception) { MvxTrace.Trace("Error seen during navigation request to {0} - error {1}", request.ViewModelType.Name, exception.ToLongString()); } }
public virtual IMvxTouchView CreateView(IMvxViewModel viewModel) { var viewModelType = viewModel.GetType(); var request = MvxShowViewModelRequest.GetDefaultRequest(viewModelType); var view = CreateView(request); var viewModelProperty = view.GetType().GetProperty("ViewModel"); if (viewModelProperty == null) { throw new MvxException("ViewModel Property missing for " + view.GetType()); } if (!viewModelProperty.CanWrite) { throw new MvxException("ViewModel Property readonly for " + view.GetType()); } viewModelProperty.SetValue(view, viewModel, null); return(view); }
public bool RequestNavigate(MvxShowViewModelRequest request) { var requestTranslator = this.GetService <IMvxWindowsPhoneViewModelRequestTranslator>(); var xamlUri = requestTranslator.GetXamlUriFor(request); return(RequestMainThreadAction(() => { try { _rootFrame.Navigate(xamlUri); } catch (ThreadAbortException) { throw; } catch (Exception exception) { MvxTrace.Trace("Error seen during navigation request to {0} - error {1}", request.ViewModelType.Name, exception.ToLongString()); } })); }
public virtual Intent GetIntentFor(MvxShowViewModelRequest request) { var viewType = GetViewType(request.ViewModelType); if (viewType == null) { throw new MvxException("View Type not found for " + request.ViewModelType); } var requestText = JsonConvert.SerializeObject(request); var intent = new Intent(_applicationContext, viewType); intent.PutExtra(ExtrasKey, requestText); #warning ClearTop is not enough :/ Need to work on an Intent based scheme like http://stackoverflow.com/questions/3007998/on-logout-clear-activity-history-stack-preventing-back-button-from-opening-l if (request.ClearTop) { intent.AddFlags(ActivityFlags.ClearTop); } intent.AddFlags(ActivityFlags.NewTask); return(intent); }
private IMvxTouchView CreateView(MvxShowViewModelRequest request) { return(this.GetService <IMvxTouchViewCreator>().CreateView(request)); }
public LargeFixedView(MvxShowViewModelRequest request) : base(request) { Title = "Large Fixed"; }
public BaseDynamicKittenTableView(MvxShowViewModelRequest request) : base(request) { }