/// <summary> /// Default ctor /// </summary> internal MenuDescriptors(AttrsXmlParser parser) { menuDescriptor = CreateDescriptor(parser, "Menu", "menu"); itemDescriptor = CreateDescriptor(parser, "MenuItem", "item"); groupDescriptor = CreateDescriptor(parser, "MenuGroup", "group"); menuDescriptor.Add(itemDescriptor); menuDescriptor.Add(groupDescriptor); itemDescriptor.Add(menuDescriptor); groupDescriptor.Add(itemDescriptor); }
/// <summary> /// Create an element descriptor for the given element. /// </summary> private static ElementDescriptor CreateElementDescriptor(AttrsXmlParser parser, LayoutXmlParser layoutParser, LayoutElement element) { var result = new ElementDescriptor(element.Name); while (element != null) { // Get attributes for this element var attrs = parser.FindElementDescriptor(element.Name); if (attrs != null) { foreach (var a in attrs.Attributes) { result.Add(a); } } // Get super class if (string.IsNullOrEmpty(element.SuperClassName)) break; element = layoutParser.FindElement(element.SuperClassName); } // Add ViewGroup_Layout var extraAttrs = parser.FindElementDescriptor("ViewGroup_Layout"); if (extraAttrs != null) result.AddRange(extraAttrs.Attributes); // Add ViewGroup_MarginLayout extraAttrs = parser.FindElementDescriptor("ViewGroup_MarginLayout"); if (extraAttrs != null) result.AddRange(extraAttrs.Attributes); return result; }
/// <summary> /// Lookup an element descriptor by the given short name. /// </summary> /// <returns>Null if not found</returns> private ElementDescriptor LoadElementDescriptor(string shortName) { var element = document.Root.Elements("declare-styleable").FirstOrDefault(x => GetName(x) == shortName); if (element == null) { return(null); } var result = new ElementDescriptor(shortName); foreach (var attr in element.Elements("attr")) { result.Add(ParseAttr(attr)); } return(result); }
/// <summary> /// Create an element descriptor for the given element. /// </summary> private static ElementDescriptor CreateElementDescriptor(AttrsXmlParser parser, LayoutXmlParser layoutParser, LayoutElement element) { var result = new ElementDescriptor(element.Name); while (element != null) { // Get attributes for this element var attrs = parser.FindElementDescriptor(element.Name); if (attrs != null) { foreach (var a in attrs.Attributes) { result.Add(a); } } // Get super class if (string.IsNullOrEmpty(element.SuperClassName)) { break; } element = layoutParser.FindElement(element.SuperClassName); } // Add ViewGroup_Layout var extraAttrs = parser.FindElementDescriptor("ViewGroup_Layout"); if (extraAttrs != null) { result.AddRange(extraAttrs.Attributes); } // Add ViewGroup_MarginLayout extraAttrs = parser.FindElementDescriptor("ViewGroup_MarginLayout"); if (extraAttrs != null) { result.AddRange(extraAttrs.Attributes); } return(result); }
/// <summary> /// Lookup an element descriptor by the given short name. /// </summary> /// <returns>Null if not found</returns> private ElementDescriptor LoadElementDescriptor(string shortName) { var element = document.Root.Elements("declare-styleable").FirstOrDefault(x => GetName(x) == shortName); if (element == null) return null; var result = new ElementDescriptor(shortName); foreach (var attr in element.Elements("attr")) { result.Add(ParseAttr(attr)); } return result; }