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);
        }
Example #9
0
        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));
 }