示例#1
0
        public static TileItem FromXml(XmlNode configNode, string resourceFolderPath)
        {
            TileItem config;

            var url = configNode.SelectSingleNode("./Url")?.InnerText;

            if (!String.IsNullOrWhiteSpace(url))
            {
                config = new UrlItem {
                    Url = url
                };
            }
            else
            {
                var fileItem = new FileItem();

                var fileName = configNode.SelectSingleNode("./FileName")?.InnerText;
                if (!String.IsNullOrWhiteSpace(fileName))
                {
                    fileItem.FilePath = Path.Combine(resourceFolderPath, TileConfiguration.FileResourcesSubFolderName, fileName);
                }
                else
                {
                    var pathNodes = configNode.SelectNodes("./FilePath")?.OfType <XmlNode>().ToArray() ?? new XmlNode[] { };
                    foreach (var pathNode in pathNodes)
                    {
                        if (!File.Exists(pathNode.InnerText))
                        {
                            continue;
                        }

                        fileItem.FilePath = pathNode.InnerText;
                        break;
                    }
                }

                config = fileItem;
            }

            config.Title      = configNode.SelectSingleNode("./Title")?.InnerText;
            config.Tooltip    = configNode.SelectSingleNode("./Tooltip")?.InnerText;
            config.Size       = TileConfiguration.ParseSizeConfiguration(configNode.SelectSingleNode("./Size"));
            config.ImageIdent = TileConfiguration.ParseImageIdentConfiguration(configNode.SelectSingleNode("./Position"));
            config.ForeColor  = ColorTranslator.FromHtml(configNode.SelectSingleNode("./ForeColor")?.InnerText);
            config.BackColor  = (eMetroTileColor)Enum.GetValues(typeof(eMetroTileColor)).GetValue(
                Int32.Parse(configNode.SelectSingleNode("./BackColor")?.InnerText ?? "0"));
            config.Font          = TileConfiguration.ParseFontConfiguration(configNode.SelectSingleNode("./Font"));
            config.TextAlignment = TileConfiguration.ParseContentAlignment(configNode.SelectSingleNode("./TextAlignment"));

            var imageName = configNode.SelectSingleNode("./ImageFileName")?.InnerText;

            if (!String.IsNullOrWhiteSpace(imageName) && File.Exists(Path.Combine(resourceFolderPath, TileConfiguration.ImageResourcesSubFolderName, imageName)))
            {
                config.ImagePath = Path.Combine(resourceFolderPath, TileConfiguration.ImageResourcesSubFolderName, imageName);
            }

            return(config);
        }
示例#2
0
        public static TileGroup FromXml(XmlNode configNode, string resourceFolderPath)
        {
            var config = new TileGroup();

            config.Title     = configNode.SelectSingleNode("./Title")?.InnerText;
            config.ForeColor = ColorTranslator.FromHtml(configNode.SelectSingleNode("./ForeColor")?.InnerText);
            config.Font      = TileConfiguration.ParseFontConfiguration(configNode.SelectSingleNode("./Font"));
            config.Padding   = TileConfiguration.ParsePaddingConfiguration(configNode.SelectSingleNode("./Padding"));

            var itemNodes = configNode.SelectNodes("./Item")?.OfType <XmlNode>().ToArray() ?? new XmlNode[] { };

            foreach (var itemNode in itemNodes)
            {
                config.Items.Add(TileItem.FromXml(itemNode, resourceFolderPath));
            }

            return(config);
        }
示例#3
0
        public static TileConfiguration FromFile(string configFilePath)
        {
            var config = new TileConfiguration();

            var resourceFolderPath = Path.Combine(Path.GetDirectoryName(configFilePath), "Resources");

            var document = new XmlDocument();

            document.Load(configFilePath);

            var groupNodes = document.SelectNodes("//Config/Tiles/Group")?.OfType <XmlNode>().ToArray() ?? new XmlNode[] { };

            foreach (var groupNode in groupNodes)
            {
                config.Groups.Add(TileGroup.FromXml(groupNode, resourceFolderPath));
            }

            return(config);
        }