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); }
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); }
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); }