private static OpenHABWidget ParseNode(XElement startNode)
        {
            if (!startNode.HasElements)
            {
                return(null);
            }

            OpenHABWidget widget = new OpenHABWidget()
            {
                Id       = startNode.Element("widgetId")?.Value,
                Type     = startNode.Element("type")?.Value,
                Label    = startNode.Element("label")?.Value,
                State    = startNode.Element("state")?.Value,
                Icon     = startNode.Element("icon")?.Value,
                Url      = startNode.Element("url")?.Value,
                Children = new List <OpenHABWidget>(),
            };

            XElement linkedPage = startNode.Element("linkedPage");

            if (linkedPage != null)
            {
                ParseLinkedPage(linkedPage, widget);
            }

            ParseItem(startNode.Element("item"), widget);
            ParseChildren(startNode, widget);
            ParseMappings(startNode, widget);

            return(widget);
        }
        private static void ParseItem(XElement element, OpenHABWidget widget)
        {
            if (element == null)
            {
                return;
            }

            widget.Item = new OpenHABItem(element);
        }
        private static void ParseMappings(XElement startNode, OpenHABWidget widget)
        {
            widget.Mappings = new List <OpenHABWidgetMapping>();

            foreach (XElement childNode in startNode.Elements("mapping"))
            {
                string command = childNode.Element("command")?.Value;
                string label   = childNode.Element("label")?.Value;
                widget.Mappings.Add(new OpenHABWidgetMapping(command, label));
            }
        }
 private void ParseChildren(XElement startNode)
 {
     foreach (XElement childNode in startNode.Elements("widget"))
     {
         var widget = new OpenHABWidget(childNode)
         {
             Parent = this
         };
         Children.Add(widget);
     }
 }
 private static void ParseLinkedPage(XElement linkedPage, OpenHABWidget parentWidget)
 {
     parentWidget.LinkedPage = new OpenHABSitemap(linkedPage)
     {
         Widgets = new List <OpenHABWidget>()
     };
     foreach (XElement childNode in linkedPage.Elements("widget"))
     {
         var widget = Parse(childNode);
         widget.Parent = parentWidget;
         widget.LinkedPage.Widgets.Add(widget);
     }
 }
        private static void ParseChildren(XElement startNode, OpenHABWidget parentWidget)
        {
            foreach (XElement childNode in startNode.Elements("widget"))
            {
                var widget = Parse(childNode);
                widget.Parent = parentWidget;
                widget.Children.Add(widget);

                XElement linkedPage = childNode.Element("linkedPage");

                if (linkedPage != null)
                {
                    ParseLinkedPage(linkedPage, widget);
                }
            }
        }
Exemple #7
0
 /// <summary>
 /// Initializes a new instance of the <see cref="OpenHABCommand"/> class.
 /// </summary>
 /// <param name="widget">The OpenHAB widget that can trigger the command.</param>
 public OpenHABCommand(OpenHABWidget widget)
 {
     _widget = widget;
 }