private static FontOverride GetFontOverride(XElement node, string fontName, string fontSize, string fontMC) { XAttribute xattribute = node.Attribute((XName)fontName); if (xattribute == null) { return((FontOverride)null); } string str = (string)null; switch (xattribute.Value) { case "Main Font": str = "MainFontFace"; break; case "Regular Font": str = "RegularFontFace"; break; case "Light Font": str = "LightFontFace"; break; } FontOverride fontOverride = new FontOverride() { Name = fontMC, FontClass = str }; int result; fontOverride.Size = int.TryParse(MediaCenterUtil.AttributeValue(node, (XName)fontSize), out result) ? result : 20; return(fontOverride); }
public IEnumerable <FontClass> GetFontClasses(MediaCenterLibraryCache cache) { XDocument xdocument = XDocument.Load(MediaCenterUtil.GetXml(cache["Microsoft.MediaCenter.Shell.dll"].GetResource("FONTNAMES.MCML", (object)this.DocumentResourceType))); List <FontClass> list = new List <FontClass>(); XNamespace xnamespace = (XNamespace)"assembly://MSCorLib/System"; foreach (XElement element in xdocument.Root.Elements(xnamespace + "String")) { FontFace fontFaceInfo = FontUtilities.GetFontFaceInfo(MediaCenterUtil.AttributeValue(element, (XName)"String"), (MediaCenterTheme)null); if (fontFaceInfo != null) { list.Add(new FontClass() { FontFace = fontFaceInfo, Name = MediaCenterUtil.AttributeValue(element, (XName)"Name") }); } } return((IEnumerable <FontClass>)list); }
public IEnumerable <FontOverride> GetFontOverrides(MediaCenterLibraryCache cache, MediaCenterTheme theme) { XDocument xdocument = XDocument.Load(MediaCenterUtil.GetXml(cache["Microsoft.MediaCenter.Shell.dll"].GetResource("FONTS.MCML", (object)this.DocumentResourceType))); string str1 = string.Format("global://{0}:", (object)"me"); List <FontOverride> list = new List <FontOverride>(); XNamespace xnamespace = (XNamespace)"http://schemas.microsoft.com/2006/mcml"; foreach (XElement element in xdocument.Root.Elements(xnamespace + "Font")) { FontOverride fontOverride = new FontOverride(); fontOverride.Name = MediaCenterUtil.AttributeValue(element, (XName)"Name"); string font = MediaCenterUtil.AttributeValue(element, (XName)"FontName"); if (font.StartsWith(str1)) { fontOverride.FontClass = font.Substring(str1.Length); } else { fontOverride.FontFace = FontUtilities.GetFontFaceInfo(font, theme); } if (!string.IsNullOrEmpty(fontOverride.FontClass) || fontOverride.FontFace != null) { int result; if (int.TryParse(MediaCenterUtil.AttributeValue(element, (XName)"FontSize"), out result)) { fontOverride.Size = result; } string str2 = MediaCenterUtil.AttributeValue(element, (XName)"FontStyle"); if (str2 != null) { fontOverride.IsBold = str2.Contains("Bold"); fontOverride.IsItalic = str2.Contains("Italic"); } list.Add(fontOverride); } } return((IEnumerable <FontOverride>)list); }
public MediaCenterFXTheme(string file) : base(file, FileMode.Open) { FontsThemeItem fonts = new FontsThemeItem(); fonts.BeginInit(); ColorsThemeItem colorsThemeItem = new ColorsThemeItem(); colorsThemeItem.BeginInit(); StartMenuThemeItem startMenuThemeItem = new StartMenuThemeItem(); startMenuThemeItem.BeginInit(); this.ThemeItems.Add((IThemeItem)startMenuThemeItem); AnimationsItem animationsItem = new AnimationsItem(); animationsItem.BeginInit(); this.ThemeItems.Add((IThemeItem)animationsItem); foreach (ZipEntry entry in this.ZipFile) { if (entry.IsFile) { ResourceThemeItem resourceThemeItem = (ResourceThemeItem)null; string str = entry.Name.ToUpper(); switch (Path.GetExtension(str)) { case ".PNG": if (str == "CUSTOM.THEMESHOT.PNG") { this.MainScreenshot = (BitmapSource)BitmapDecoder.Create(this.ZipFile.GetInputStream(entry), BitmapCreateOptions.None, BitmapCacheOption.OnLoad).Frames[0]; break; } else { resourceThemeItem = (ResourceThemeItem) new ImageResourceThemeItem("ehres.dll", str, (Func <ResourceThemeItem, byte[]>)(themeItem => ZippedTheme.ReadZipEntry(this.ZipFile, this.zipEntries[(IThemeItem)themeItem]))); break; } case ".TTF": this.fontEntries.Add(entry); break; } if (resourceThemeItem != null) { this.zipEntries[(IThemeItem)resourceThemeItem] = entry; this.ThemeItems.Add((IThemeItem)resourceThemeItem); } } } ZipEntry entry1 = this.ZipFile.GetEntry("Theme.xml"); if (entry1 == null) { throw new InvalidDataException("Could not find Theme.xml."); } XDocument xdocument = XDocument.Load((XmlReader) new XmlTextReader(this.ZipFile.GetInputStream(entry1))); if (xdocument.Root != null) { foreach (XElement xelement in xdocument.Root.Elements()) { switch (xelement.Name.LocalName) { case "Biography": this.Name = MediaCenterUtil.AttributeValue(xelement, (XName)"Name"); this.Author = MediaCenterUtil.AttributeValue(xelement, (XName)"Author"); this.Version = new Version(MediaCenterUtil.AttributeValue(xelement, (XName)"Version")); this.Comments = MediaCenterUtil.AttributeValue(xelement, (XName)"Comments"); continue; case "Sounds": using (IEnumerator <XAttribute> enumerator = xelement.Attributes().GetEnumerator()) { while (enumerator.MoveNext()) { XAttribute current = enumerator.Current; string localName = current.Name.LocalName; ZipEntry entry2 = this.ZipFile.GetEntry(current.Value); SoundResourceThemeItem resourceThemeItem = new SoundResourceThemeItem("ehres.dll", localName, (Func <ResourceThemeItem, byte[]>)(themeItem => ZippedTheme.ReadZipEntry(this.ZipFile, this.zipEntries[(IThemeItem)themeItem]))); this.zipEntries[(IThemeItem)resourceThemeItem] = entry2; this.ThemeItems.Add((IThemeItem)resourceThemeItem); } continue; } case "MainFonts": using (IEnumerator <XAttribute> enumerator = xelement.Attributes().GetEnumerator()) { while (enumerator.MoveNext()) { XAttribute current = enumerator.Current; FontClass fontClass = new FontClass() { Name = current.Name.LocalName }; fontClass.FontFace = FontUtilities.GetFontFaceInfo(current.Value, (MediaCenterTheme)this); if (fontClass.FontFace != null) { fonts.FontClasses.Add(fontClass); } } continue; } case "FontsOverrides": MediaCenterFXTheme.AddFontOverride(fonts, xelement, "FontDialogC", "DialogCSize", "DialogContent"); MediaCenterFXTheme.AddFontOverride(fonts, xelement, "FontButton", "SizeButton", "ButtonText"); MediaCenterFXTheme.AddFontOverride(fonts, xelement, "FontDialogT", "DialogTSize", "DialogTitle"); MediaCenterFXTheme.AddFontOverride(fonts, xelement, "FontThumbnail", "ThumbnailSize", "ThumbnailButtonText"); MediaCenterFXTheme.AddFontOverride(fonts, xelement, "FontVolume", "VolumeSize", "VolumeText"); MediaCenterFXTheme.AddFontOverride(fonts, xelement, "FontBackground", "SizeBackground", "BackgroundTitleText"); continue; case "MainColors": using (IEnumerator <XAttribute> enumerator = xelement.Attributes().GetEnumerator()) { while (enumerator.MoveNext()) { XAttribute current = enumerator.Current; Color color; if (this.TryParseColor(current.Value, out color)) { colorsThemeItem.DefaultColors.Add(new ColorItem() { Color = color, Name = current.Name.LocalName }); } else { Trace.TraceWarning("Could not parse color value for {0} \"{1}\" in theme file {2}.", (object)current.Name, (object)current.Value, (object)file); } } continue; } case "StartMenu": startMenuThemeItem.StripTitleFont = this.GetFontOverride(MediaCenterUtil.AttributeValue(xelement, (XName)"FontFace"), MediaCenterUtil.AttributeValue(xelement, (XName)"FontSize")); Color color1; if (this.TryParseColor(MediaCenterUtil.AttributeValue(xelement, (XName)"FocusColor"), out color1)) { startMenuThemeItem.FocusedStripTitleColor = new ColorReference() { Color = new Color?(color1) } } ; Color color2; if (this.TryParseColor(MediaCenterUtil.AttributeValue(xelement, (XName)"NoFocusColor"), out color2)) { startMenuThemeItem.NonFocusedStripTitleColor = new ColorReference() { Color = new Color?(color2) }; continue; } else { continue; } case "QuickLink": startMenuThemeItem.FocusedQuickLinkFont = this.GetFontOverride(MediaCenterUtil.AttributeValue(xelement, (XName)"SelectedFontFace"), MediaCenterUtil.AttributeValue(xelement, (XName)"SelectedFontSize")); startMenuThemeItem.NonFocusedQuickLinkFont = this.GetFontOverride(MediaCenterUtil.AttributeValue(xelement, (XName)"NonSelectedFontFace"), MediaCenterUtil.AttributeValue(xelement, (XName)"NonSelectedFontSize")); if (startMenuThemeItem.FocusedQuickLinkFont.Size == 0) { startMenuThemeItem.FocusedQuickLinkFont.Size = startMenuThemeItem.NonFocusedQuickLinkFont.Size; } if (startMenuThemeItem.NonFocusedQuickLinkFont.Size == 0) { startMenuThemeItem.NonFocusedQuickLinkFont.Size = startMenuThemeItem.FocusedQuickLinkFont.Size; } Color color3; if (this.TryParseColor(MediaCenterUtil.AttributeValue(xelement, (XName)"SelectedColor"), out color3)) { startMenuThemeItem.FocusedQuickLinkColor = new ColorReference() { Color = new Color?(color3) } } ; Color color4; if (this.TryParseColor(MediaCenterUtil.AttributeValue(xelement, (XName)"NonSelectedColor"), out color4)) { startMenuThemeItem.NonFocusedQuickLinkColor = new ColorReference() { Color = new Color?(color4) }; continue; } else { continue; } case "StartText": startMenuThemeItem.StartMenuText = MediaCenterUtil.AttributeValue(xelement, (XName)"String"); startMenuThemeItem.StartMenuTextFont = this.GetFontOverride(MediaCenterUtil.AttributeValue(xelement, (XName)"FontFace"), MediaCenterUtil.AttributeValue(xelement, (XName)"FontSize")); Color color5; if (this.TryParseColor(MediaCenterUtil.AttributeValue(xelement, (XName)"Color"), out color5)) { startMenuThemeItem.StartMenuTextColor = new ColorReference() { Color = new Color?(color5) }; continue; } else { continue; } case "MainBackgroundAnimation": string str = MediaCenterUtil.AttributeValue(xelement, (XName)"BackgroundAnimationDisabled"); animationsItem.IsBackgroundAnimationDisabled = str != null && bool.Parse(str); continue; default: continue; } } } this.ID = this.Name; fonts.EndInit(); colorsThemeItem.EndInit(); startMenuThemeItem.EndInit(); animationsItem.EndInit(); this.FontsItem = fonts; this.ColorsItem = colorsThemeItem; }
public PropertyElement GetProperty(string propertyName) { XElement propertyElement = Enumerable.FirstOrDefault <XElement>(this.Xml.Elements(), (Func <XElement, bool>)(o => MediaCenterUtil.AttributeValue(o, (XName)"Name") == propertyName)); if (propertyElement != null) { return(this.CreatePropertyElement(propertyElement)); } else { return((PropertyElement)null); } }