public static TList LoadList <TList>(this IMvxAutoView view) where TList : class { return (view.LoadUserInterfaceCommon <ListLayoutDescription, IListLayout, TList>( MvxAutoViewConstants.List)); }
public static TRoot LoadDialogRoot <TElement, TRoot>(this IMvxAutoView view) where TRoot : class { return (view.LoadUserInterfaceCommon <ElementDescription, TElement, TRoot>( MvxAutoViewConstants.Dialog)); }
private static TResult LoadUserInterfaceFromDescription <TBuildable, TResult>( this IMvxAutoView view, KeyedDescription description) { var factory = Mvx.Resolve <IMvxUserInterfaceFactory>(); return(factory.Build <TBuildable, TResult>(view, description)); }
private static TResult LoadUserInterfaceRootFromAssets <TDescription, TBuildable, TResult>( this IMvxAutoView view, string key) where TDescription : KeyedDescription { var jsonText = view.GetJsonText(key); return(view.LoadUserInterfaceFromJsonText <TDescription, TBuildable, TResult>(jsonText)); }
private static string GetJsonText(this IMvxAutoView view, string key) { if (view.ViewModel == null) { throw new MvxException("You cannot GetJsonText before the ViewModel is set on a IMvxAutoView"); } var defaultViewTextLoader = Mvx.Resolve <IMvxAutoViewTextLoader>(); var json = defaultViewTextLoader.GetDefinition(view.ViewModel.GetType(), key); return(json); }
public static TResult LoadUserInterfaceFromAutoViewModel <TBuildable, TResult>( this IMvxAutoView view, string key) where TResult : class { var autoViewModel = view.ViewModel as IMvxAutoViewModel; var description = autoViewModel?.GetAutoView(key); if (description == null) { return(null); } return(view.LoadUserInterfaceFromDescription <TBuildable, TResult>(description)); }
private static TResult LoadUserInterfaceCommon <TDescription, TBuildable, TResult>( this IMvxAutoView view, string key) where TDescription : KeyedDescription where TResult : class { var root = view.LoadUserInterfaceRootFromAssets <TDescription, TBuildable, TResult>(key); if (root != null) { return(root); } root = LoadUserInterfaceFromAutoViewModel <TBuildable, TResult>(view, key); return(root); }
private static TResult LoadUserInterfaceFromJsonText <TDescription, TBuildable, TResult>( this IMvxAutoView view, string jsonText) where TDescription : KeyedDescription { if (string.IsNullOrEmpty(jsonText)) { return(default(TResult)); } var json = Mvx.Resolve <IMvxJsonConverter>(); var description = json.DeserializeObject <TDescription>(jsonText); #warning Hack here - how to flatten these JObjects :/ Maybe need to do it inside the Json converter? //HackFlattenJObjectsToStringDictionary(description as ListLayoutDescription); var root = view.LoadUserInterfaceFromDescription <TBuildable, TResult>(description); return(root); }
public TResult Build <TBuildable, TResult>(IMvxAutoView view, KeyedDescription description) { var bindingViewController = view as IMvxTouchView; if (bindingViewController == null) { throw new MvxException( "View passed to MvxTouchUserInterfaceFactory must be an IMvxBindingViewController - type {0}", view.GetType().Name); } var registry = Mvx.Resolve <IBuilderRegistry>(); var builder = new MvxTouchUserInterfaceBuilder(bindingViewController, view.ViewModel, registry); var root = (TResult)builder.Build(typeof(TBuildable), description); return(root); }
public TResult Build <TBuildable, TResult>(IMvxAutoView view, KeyedDescription description) { var bindingActivity = view as IMvxBindingContextOwner; if (bindingActivity == null) { throw new MvxException( "Activity passed to MvxAndroidUserInterfaceFactory must be an IMvxAndroidBindingContext - type {0}", view.GetType().Name); } var registry = Mvx.Resolve <IBuilderRegistry>(); var builder = new MvxAndroidUserInterfaceBuilder((IMvxAndroidBindingContext)bindingActivity.BindingContext, view.ViewModel, registry); var root = (TResult)builder.Build(typeof(TBuildable), description); return(root); }
public static TRoot LoadDialogRoot <TElement, TRoot>(this IMvxAutoView view, ElementDescription rootDescription) { return(view.LoadUserInterfaceFromDescription <TElement, TRoot>(rootDescription)); }
public static IParentMenu LoadMenu(this IMvxAutoView view) { return (view.LoadUserInterfaceCommon <ParentMenuDescription, IMenu, IParentMenu>( MvxAutoViewConstants.Menu)); }