public void Apply(IThemeItem themeItem, MediaCenterLibraryCache readCache, MediaCenterLibraryCache writeCache) { FontsThemeItem fontsThemeItem = (FontsThemeItem)themeItem; IResourceLibrary resourceLibrary1 = readCache["Microsoft.MediaCenter.Shell.dll"]; IResourceLibrary resourceLibrary2 = writeCache["Microsoft.MediaCenter.Shell.dll"]; McmlDocument mcml1 = MediaCenterUtil.GetMcml(resourceLibrary1.GetResource("FONTNAMES.MCML", (object)this.DocumentResourceType)); McmlDocument mcml2 = MediaCenterUtil.GetMcml(resourceLibrary1.GetResource("FONTS.MCML", (object)this.DocumentResourceType)); foreach (FontClass fontClass in Enumerable.Where <FontClass>((IEnumerable <FontClass>)fontsThemeItem.FontClasses, (Func <FontClass, bool>)(o => o.FontFace != null))) { string typefaceName = FontUtilities.GetTypefaceName(themeItem.Theme, fontClass.FontFace); PropertyElement property = mcml1.Properties().GetProperty(fontClass.Name); if (property == null) { XElement xelement = new XElement(McmlDocument.SystemCoreNamespace + "String", new object[2] { (object)new XAttribute((XName)"Name", (object)fontClass.Name), (object)new XAttribute((XName)"String", (object)typefaceName) }); mcml1.Xml.Root.Add((object)xelement); } else { property.Value = typefaceName; } } foreach (XElement xelement in mcml1.Xml.Root.Elements()) { mcml2.Xml.Root.AddFirst((object)xelement); } MediaCenterUtil.UpdateMcml(resourceLibrary2.GetResource("FONTNAMES.MCML", (object)this.DocumentResourceType), mcml1); foreach (FontOverride fontOverride in Enumerable.Where <FontOverride>((IEnumerable <FontOverride>)fontsThemeItem.FontOverrides, (Func <FontOverride, bool>)(o => { if (o.FontFace == null) { return(o.FontClass != null); } else { return(true); } }))) { FontElement fontElement = mcml2.Properties().GetProperty(fontOverride.Name) as FontElement; if (fontElement == null) { XElement xelement = new XElement(mcml2.DefaultNamespace + "Font", (object)new XAttribute((XName)"Name", (object)fontOverride.Name)); mcml2.Xml.Root.Add((object)xelement); fontElement = (FontElement)mcml2.Properties().GetProperty(fontOverride.Name); } McmlUtilities.UpdateFontElement(fontOverride, fontElement, themeItem.Theme); } foreach (XNode xnode in mcml2.Xml.Root.Elements(mcml2.DefaultNamespace + "Aggregate")) { xnode.Remove(); } MediaCenterUtil.UpdateMcml(resourceLibrary2.GetResource("FONTS.MCML", (object)this.DocumentResourceType), mcml2); }
public FontsItemModel(IThemeItem themeItem, ThemeModel theme, bool isDefault) : base(themeItem, theme, isDefault) { this.Name = "Fonts"; this.fontsThemeItem = (FontsThemeItem)themeItem; this.FontClasses = new ObservableCollection <FontClassModel>(); Dictionary <string, FontClassModel> dictionary1 = new Dictionary <string, FontClassModel>(); foreach (FontClass fontClass in (Collection <FontClass>) this.fontsThemeItem.FontClasses) { dictionary1[fontClass.Name] = new FontClassModel(fontClass); } foreach (FontClass fontClass in FontsThemeItem.GetFontClasses(theme.ThemeManager.BackupCache)) { FontClassModel fontClassModel; if (!dictionary1.TryGetValue(fontClass.Name, out fontClassModel)) { fontClassModel = new FontClassModel(fontClass); dictionary1[fontClass.Name] = fontClassModel; } fontClassModel.DefaultValue = new FontFace(fontClass.FontFace); } foreach (FontClassModel fontClassModel in dictionary1.Values) { this.FontClasses.Add(fontClassModel); fontClassModel.PropertyChanged += new PropertyChangedEventHandler(this.FontClass_PropertyChanged); } this.FontOverrides = new ObservableCollection <FontOverrideModel>(); Dictionary <string, FontOverrideModel> dictionary2 = new Dictionary <string, FontOverrideModel>(); foreach (FontOverride fontOverride in (Collection <FontOverride>) this.fontsThemeItem.FontOverrides) { dictionary2[fontOverride.Name] = new FontOverrideModel(fontOverride, this); } foreach (FontOverride fontOverride in FontsThemeItem.GetFontOverrides(theme.ThemeManager.BackupCache, this.Theme.Theme)) { FontOverrideModel fontOverrideModel; if (!dictionary2.TryGetValue(fontOverride.Name, out fontOverrideModel)) { fontOverrideModel = new FontOverrideModel(fontOverride, this); dictionary2[fontOverride.Name] = fontOverrideModel; } fontOverrideModel.DefaultValue = fontOverrideModel.Clone(fontOverride); } foreach (FontOverrideModel fontOverrideModel in dictionary2.Values) { this.FontOverrides.Add(fontOverrideModel); fontOverrideModel.PropertyChanged += new PropertyChangedEventHandler(this.FontOverride_PropertyChanged); } }
private FontFamily GetFontFamily(string name) { if (this.fonts == null) { this.fonts = new Dictionary <string, FontFamily>(); foreach (FontClass fontClass in FontsThemeItem.GetFontClasses(this.cache)) { this.fonts[fontClass.Name] = new FontFamily(fontClass.FontFace.FontFamily); } } if (this.fonts.ContainsKey(name)) { return(this.fonts[name]); } else { return(CommonResourceManager.BackupFont); } }