예제 #1
1
        private Widget ParseWidget(Sitemap aSitemap, XElement aRoot)
        {
            var type = aRoot.Element("type").Value;
            var label = aRoot.Element("label").Value;
            var icon = aRoot.Element("icon").Value;

            var widget = new Widget(type, label, icon);

            if (widget.Type == Widget.WidgetType.Image)
                widget.Url = new Uri(new UriBuilder(aSitemap.Link.Scheme, aSitemap.Link.Host, aSitemap.Link.Port).Uri, aRoot.Element("url").Value);

            if (widget.Type == Widget.WidgetType.Chart)
            {
                widget.Period = aRoot.Element("period").Value;
                widget.Refresh = int.Parse(aRoot.Element("refresh").Value);
            }

            if (widget.Type == Widget.WidgetType.Setpoint)
            {
                widget.MinValue = double.Parse( aRoot.Element("minValue").Value,System.Globalization.NumberFormatInfo.InvariantInfo);
                widget.MaxValue = double.Parse( aRoot.Element("maxValue").Value,System.Globalization.NumberFormatInfo.InvariantInfo);
                widget.Step = double.Parse( aRoot.Element("step").Value,System.Globalization.NumberFormatInfo.InvariantInfo);
            }

            if (widget.Type == Widget.WidgetType.Video)
                widget.Url = new Uri(new UriBuilder(aSitemap.Link.Scheme, aSitemap.Link.Host, aSitemap.Link.Port).Uri, aRoot.Element("url").Value);

            if (widget.Type == Widget.WidgetType.Webview)
                widget.Url = new Uri(new UriBuilder(aSitemap.Link.Scheme, aSitemap.Link.Host, aSitemap.Link.Port).Uri, aRoot.Element("url").Value);

            if (widget.Type == Widget.WidgetType.Switch || widget.Type == Widget.WidgetType.Selection)
            {
                var mappings = aRoot.Elements("mapping");

                foreach(var mapping in mappings)
                {
                    var map_command = mapping.Element("command").Value;
                    var map_label = mapping.Element("label").Value;

                    widget.Mappings[map_label] = map_command;
                }
            }

            foreach (var child in aRoot.Elements("widget"))
            {
                widget.mWidgets.Add(ParseWidget(aSitemap, child));
            }

            var item = aRoot.Element("item");
            if (item != null)
            {
                widget.Item = ParseItem(aSitemap, item);
            }

            var linkedPage = aRoot.Element("linkedPage");
            if (linkedPage != null)
            {
                widget.LinkedPage = ParsePage(aSitemap, linkedPage);
            }
            return widget;
        }
예제 #2
0
        private void ParseSitemaps(XElement aRoot)
        {
            Sitemaps.Clear();

            foreach (var sitemap in aRoot.Elements("sitemap"))
            {
                var name     = sitemap.Element("name").Value;
                var link     = sitemap.Element("link").Value;
                var homepage = sitemap.Element("homepage").Element("link").Value;

                Sitemaps[name] = new Sitemap(name, new Uri(link), new Uri(homepage));
            }
        }
예제 #3
0
        private Item ParseItem(Sitemap aSitemap, XElement aRoot)
        {
            var type  = aRoot.Element("type").Value;
            var name  = aRoot.Element("name").Value;
            var state = aRoot.Element("state").Value;
            var link  = aRoot.Element("link").Value;

            Item item;

            if (!Items.TryGetValue(name, out item))
            {
                item = new Item(this, type, name, state, link);
            }

            aSitemap.mItems[name] = item;
            Items[name]           = item;

            return(item);
        }
예제 #4
0
        private Page ParsePage(Sitemap aSitemap, XElement aRoot)
        {
            var page = new Page(this);

            var id    = aRoot.Element("id").Value;
            var title = aRoot.Element("title").Value;
            var link  = aRoot.Element("link").Value;

            page.Id    = id;
            page.Title = title;
            page.Link  = new Uri(link);

            foreach (var widget in aRoot.Elements("widget"))
            {
                page.mWidgets.Add(ParseWidget(aSitemap, widget));
            }

            aSitemap.mPages[id] = page;
            Pages[id]           = page;

            return(page);
        }
예제 #5
0
 public void GetSitemap(Sitemap aSitemap, Action <REST, RESTResult> aCallback)
 {
     QuerySite(aSitemap.Link.AbsoluteUri, aCallback);
 }
예제 #6
0
        private Widget ParseWidget(Sitemap aSitemap, XElement aRoot)
        {
            var type  = aRoot.Element("type").Value;
            var label = aRoot.Element("label").Value;
            var icon  = aRoot.Element("icon").Value;

            var widget = new Widget(type, label, icon);

            if (widget.Type == Widget.WidgetType.Image)
            {
                widget.Url = new Uri(new UriBuilder(aSitemap.Link.Scheme, aSitemap.Link.Host, aSitemap.Link.Port).Uri, aRoot.Element("url").Value);
            }

            if (widget.Type == Widget.WidgetType.Chart)
            {
                widget.Period  = aRoot.Element("period").Value;
                widget.Refresh = int.Parse(aRoot.Element("refresh").Value);
            }

            if (widget.Type == Widget.WidgetType.Setpoint)
            {
                widget.MinValue = double.Parse(aRoot.Element("minValue").Value, System.Globalization.NumberFormatInfo.InvariantInfo);
                widget.MaxValue = double.Parse(aRoot.Element("maxValue").Value, System.Globalization.NumberFormatInfo.InvariantInfo);
                widget.Step     = double.Parse(aRoot.Element("step").Value, System.Globalization.NumberFormatInfo.InvariantInfo);
            }

            if (widget.Type == Widget.WidgetType.Video)
            {
                widget.Url = new Uri(new UriBuilder(aSitemap.Link.Scheme, aSitemap.Link.Host, aSitemap.Link.Port).Uri, aRoot.Element("url").Value);
            }

            if (widget.Type == Widget.WidgetType.Webview)
            {
                widget.Url = new Uri(new UriBuilder(aSitemap.Link.Scheme, aSitemap.Link.Host, aSitemap.Link.Port).Uri, aRoot.Element("url").Value);
            }

            if (widget.Type == Widget.WidgetType.Switch || widget.Type == Widget.WidgetType.Selection)
            {
                var mappings = aRoot.Elements("mapping");

                foreach (var mapping in mappings)
                {
                    var map_command = mapping.Element("command").Value;
                    var map_label   = mapping.Element("label").Value;

                    widget.Mappings[map_label] = map_command;
                }
            }

            foreach (var child in aRoot.Elements("widget"))
            {
                widget.mWidgets.Add(ParseWidget(aSitemap, child));
            }

            var item = aRoot.Element("item");

            if (item != null)
            {
                widget.Item = ParseItem(aSitemap, item);
            }

            var linkedPage = aRoot.Element("linkedPage");

            if (linkedPage != null)
            {
                widget.LinkedPage = ParsePage(aSitemap, linkedPage);
            }
            return(widget);
        }
예제 #7
0
 public void GetSitemap(Sitemap aSitemap, Action<REST, RESTResult> aCallback)
 {
     QuerySite(aSitemap.Link.AbsoluteUri, aCallback);
 }
예제 #8
0
        private Item ParseItem(Sitemap aSitemap, XElement aRoot)
        {
            var type = aRoot.Element("type").Value;
            var name = aRoot.Element("name").Value;
            var state = aRoot.Element("state").Value;
            var link = aRoot.Element("link").Value;

            Item item;

            if (!Items.TryGetValue(name, out item))
                item = new Item(this, type, name, state, link);

            aSitemap.mItems[name] = item;
            Items[name] = item;
            
            return item;
        }
예제 #9
0
        private Page ParsePage(Sitemap aSitemap, XElement aRoot)
        {
            var page = new Page(this);

            var id = aRoot.Element("id").Value;
            var title = aRoot.Element("title").Value;
            var link = aRoot.Element("link").Value;

            page.Id = id;
            page.Title = title;
            page.Link = new Uri(link);

            foreach (var widget in aRoot.Elements("widget"))
            {
                page.mWidgets.Add(ParseWidget(aSitemap, widget));
            }

            aSitemap.mPages[id] = page;
            Pages[id] = page;

            return page;
        }
예제 #10
0
        private void ParseSitemaps(XElement aRoot)
        {
            Sitemaps.Clear();

            foreach (var sitemap in aRoot.Elements("sitemap"))
            {
                var name = sitemap.Element("name").Value;
                var link = sitemap.Element("link").Value;
                var homepage = sitemap.Element("homepage").Element("link").Value;

                Sitemaps[name] = new Sitemap(name, new Uri(link), new Uri(homepage));
            }
        }