public async Task InitializeData(string dataPath, ControlPaletteExportProvider controlPaletteExportProvider)
        {
            StorageFile file = await StorageFile.GetFileFromApplicationUriAsync(new Uri(dataPath));

            string dataString = await FileIO.ReadTextAsync(file);

            JsonObject rootObject = JsonObject.Parse(dataString);

            List <INavItem> navItems = new List <INavItem>();

            if (rootObject.ContainsKey("Demos"))
            {
                JsonArray demoDataList = rootObject["Demos"].GetArray();
                foreach (var demoData in demoDataList)
                {
                    navItems.Add(await ParseNavItem(demoData.GetObject(), controlPaletteExportProvider));
                }
            }

            string defaultDemoId = rootObject.GetOptionalString("DefaultDemoId");

            if (!string.IsNullOrEmpty(defaultDemoId))
            {
                _defaultNavItem = navItems.FirstOrDefault((a) => a.Id == defaultDemoId);
            }

            _navItems = navItems;
        }
        private async Task <INavItem> ParseNavItem(JsonObject data, ControlPaletteExportProvider controlPaletteExportProvider)
        {
            string type = data.GetOptionalString("Type");

            switch (type)
            {
            case nameof(ControlPalette):
            {
                var paletteModel = new ControlPaletteModel();
                await paletteModel.InitializeData(_stringProvider, _stringProvider.GetString("ControlPaletteDataPath"));

                return(ControlPalette.ControlPaletteViewModel.Parse(_stringProvider, data, paletteModel, controlPaletteExportProvider));
            }

            case nameof(ThemePalette):
            {
                var paletteModel = new ThemePaletteModel();
                await paletteModel.InitializeData(_stringProvider, _stringProvider.GetString("ThemePaletteDataPath"));

                return(ThemePalette.ThemePaletteViewModel.Parse(_stringProvider, data, paletteModel, controlPaletteExportProvider));
            }

            default:
                throw new Exception(string.Format("Unknown nav item type {0}", type));
            }
        }
Exemplo n.º 3
0
        private async Task SetupDependencies()
        {
            var stringProvider = new StringProvider(Windows.ApplicationModel.Resources.ResourceLoader.GetForViewIndependentUse());
            var exportProvider = new ControlPaletteExportProvider();

            var navModel = new MainNavModel(stringProvider);
            await navModel.InitializeData(stringProvider.GetString("MainDataPath"), exportProvider);

            lock (_initLock)
            {
                _stringProvider = stringProvider;
                _exportProvider = exportProvider;

                _mainNavModel      = navModel;
                _outerNavViewModel = new OuterNavViewModel(_mainNavModel.NavItems, _mainNavModel.DefaultNavItem);
            }
        }
        private INavItem ParseNavItem(JsonObject data, IControlPaletteModel paletteModel, ControlPaletteExportProvider controlPaletteExportProvider)
        {
            string type = data.GetOptionalString("Type");

            switch (type)
            {
            case "ControlPalette":
                return(ControlPalette.ControlPaletteViewModel.Parse(_stringProvider, data, paletteModel, controlPaletteExportProvider));

            default:
                throw new Exception(string.Format("Unknown nav item type {0}", type));
            }
        }