Esempio n. 1
0
        public void LoadWidget(string widgetName, bool AutoRebuildContext = true)
        {
            if (OpenWidgets.ContainsKey(widgetName))
            {
                return;
            }
            if (!Widgets.ContainsKey(widgetName))
            {
                Console.WriteLine($"Widget {widgetName} has not been found.");
                return;
            }

            var entry = Widgets[widgetName];
            var view  = new HTMLWidget(widgetName, true);

            view.Show();
            OpenWidgets.Add(widgetName, view);
            if (AutoRebuildContext)
            {
                ((App)Application.Current).CreateContextMenu();
            }

            ChangedLoadedWidgets();
        }
Esempio n. 2
0
    public override object Deserialize(IDictionary <string, object> dictionary, Type type, JavaScriptSerializer serializer)
    {
        if (type == typeof(APIResultWidget))
        {
            switch ((string)dictionary["Type"])
            {
            case "weather":
            {
                WeatherWidget x = new WeatherWidget();
                x.Location = (string)dictionary["Location"];
                x.Current  = (CurrentWeather)dictionary["Current"];
                //x.Forcast = (List<WeatherForcastItem>)dictionary["Forcast"];
                System.Collections.ArrayList itemss = ((System.Collections.ArrayList)dictionary["Forcast"]);
                foreach (var item in itemss)
                {
                    x.Forcast.Add(serializer.ConvertToType <WeatherForcastItem>(item));
                }
                return(x);
            };

            case "text":
            {
                TextWidget x = new TextWidget();
                x.Content = (string)dictionary["Content"];
                return(x);
            };

            case "keyValueText":
            {
                KeyValueTextWidget x = new KeyValueTextWidget();
                x.Key = (string)dictionary["Key"];
                x.Key = (string)dictionary["Value"];
                x.Key = (string)dictionary["ValueURL"];
                return(x);
            };

            case "keyValuesText":
            {
                KeyValuesTextWidget x = new KeyValuesTextWidget();
                x.Key = (string)dictionary["Key"];
                //x.Values = (List<ValueItem>)dictionary["ValueItem"];
                System.Collections.ArrayList itemss = ((System.Collections.ArrayList)dictionary["ValueItem"]);
                foreach (var item in itemss)
                {
                    x.Values.Add(serializer.ConvertToType <ValueItem>(item));
                }
                return(x);
            };

            case "url":
            {
                URLWidget x = new URLWidget();
                x.ThumbnailImageURL = (string)dictionary["ThumbnailImageURL"];
                x.Title             = (string)dictionary["Title"];
                x.URL         = (string)dictionary["URL"];
                x.HTMLContent = (string)dictionary["HTMLContent"];
                return(x);
            };

            case "map":
            {
                MapWidget x = new MapWidget();
                System.Collections.ArrayList itemss = ((System.Collections.ArrayList)dictionary["Pins"]);
                foreach (var item in itemss)
                {
                    x.Pins.Add(serializer.ConvertToType <MapPoint>(item));
                }
                //x.Pins = (List<MapPoint>)dictionary["Pins"];
                return(x);
            };

            case "image":
            {
                ImageWidget x = new ImageWidget();
                x.Title        = (string)dictionary["Title"];
                x.ImageURL     = (string)dictionary["ImageURL"];
                x.ThumbnailURL = (string)dictionary["ThumbnailURL"];
                x.PageURL      = (string)dictionary["PageURL"];
                return(x);
            };

            case "html":
            {
                HTMLWidget x = new HTMLWidget();
                x.Title = (string)dictionary["Title"];
                x.HTML  = (string)dictionary["HTML"];
                return(x);
            };

            case "entity":
            {
                EntityWidget x = new EntityWidget();
                x.SubType  = (string)dictionary["SubType"];
                x.Title    = (string)dictionary["Title"];
                x.Abstract = (string)dictionary["Abstract"];
                x.ImageURL = (string)dictionary["ImageURL"];
                x.Url      = (string)dictionary["Url"];
                return(x);
            };

            case "chart":
            {
                ChartWidget x = new ChartWidget();
                x.Title = (string)dictionary["Title"];
                //x.Categories = (List<string>)dictionary["Categories"];
                System.Collections.ArrayList itemss = ((System.Collections.ArrayList)dictionary["Categories"]);
                foreach (var item in itemss)
                {
                    x.Categories.Add(serializer.ConvertToType <string>(item));
                }
                System.Collections.ArrayList itemss2 = ((System.Collections.ArrayList)dictionary["Data"]);
                foreach (var item in itemss2)
                {
                    x.Data.Add(serializer.ConvertToType <ChartsData>(item));
                }
                //x.Data = (List<ChartsData>)dictionary["Data"];
                return(x);
            };

            case "businessEntity":
            {
                BusinessEntityWidget x = new BusinessEntityWidget();
                x.SubType  = (string)dictionary["SubType"];
                x.Title    = (string)dictionary["Title"];
                x.Abstract = (string)dictionary["Abstract"];
                x.ImageURL = (string)dictionary["ImageURL"];
                x.URL      = (string)dictionary["URL"];
                //x.Attributes = (List<KeyValueTextWidget>)dictionary["Attributes"];
                System.Collections.ArrayList itemss = ((System.Collections.ArrayList)dictionary["Attributes"]);
                foreach (var item in itemss)
                {
                    x.Attributes.Add(serializer.ConvertToType <KeyValueTextWidget>(item));
                }
                x.Address = (string)dictionary["Address"];
                x.Phone   = (string)dictionary["Phone"];
                x.Lat     = (double)dictionary["Lat"];
                x.Lng     = (double)dictionary["Lng"];
                System.Collections.ArrayList itemss2 = ((System.Collections.ArrayList)dictionary["OtherURLs"]);
                foreach (var item in itemss2)
                {
                    x.OtherURLs.Add(serializer.ConvertToType <URLWidget>(item));
                }
                //x.OtherURLs = (List<URLWidget>)dictionary["OtherURLs"];
                return(x);
            };

            case "list":
            {
                switch ((string)dictionary["SubType"])
                {
                case null:
                {
                    ListWidget x = new ListWidget();
                    x.Title = (string)dictionary["Title"];
                    System.Collections.ArrayList itemss = ((System.Collections.ArrayList)dictionary["Items"]);
                    foreach (var item in itemss)
                    {
                        x.Items.Add(serializer.ConvertToType <APIResultWidget>(item));
                    }
                    return(x);
                };

                case "videos":
                {
                    ListOfVideosWidget           x      = new ListOfVideosWidget();
                    System.Collections.ArrayList itemss = ((System.Collections.ArrayList)dictionary["Items"]);
                    foreach (var item in itemss)
                    {
                        x.Items.Add(serializer.ConvertToType <URLWidget>(item));
                    }
                    return(x);
                };

                case "images":
                {
                    ListOfImagesWidget           x      = new ListOfImagesWidget();
                    System.Collections.ArrayList itemss = ((System.Collections.ArrayList)dictionary["Items"]);
                    foreach (var item in itemss)
                    {
                        x.Items.Add(serializer.ConvertToType <ImageWidget>(item));
                    }
                    return(x);
                };

                case "webResults":
                {
                    ListOfWebsitesWidget         x      = new ListOfWebsitesWidget();
                    System.Collections.ArrayList itemss = ((System.Collections.ArrayList)dictionary["Items"]);
                    foreach (var item in itemss)
                    {
                        x.Items.Add(serializer.ConvertToType <URLWidget>(item));
                    }
                    return(x);
                };

                case "businesses":
                {
                    ListOfBusinessesWidget x = new ListOfBusinessesWidget();
                    x.Title = (string)dictionary["Title"];
                    System.Collections.ArrayList itemss = ((System.Collections.ArrayList)dictionary["Items"]);
                    foreach (var item in itemss)
                    {
                        x.Items.Add(serializer.ConvertToType <BusinessEntityWidget>(item));
                    }
                    return(x);
                };
                }
            }; break;
            }
        }
        else                                   //in case of objects not inheriting from the abstract class, in this case we identify each one by something else, not "type"
        {
            if (dictionary.ContainsKey("Day")) //WeatherForcastItem
            {
                WeatherForcastItem x = new WeatherForcastItem();
                x.Day     = (string)dictionary["Day"];
                x.Hi      = (string)dictionary["Hi"];
                x.Lo      = (string)dictionary["Lo"];
                x.Status  = (string)dictionary["Status"];
                x.IconURL = (string)dictionary["IconURL"];
                return(x);
            }
            else if (dictionary.ContainsKey("Temprature"))     // CurrentWeather
            {
                CurrentWeather x = new CurrentWeather();
                x.Temprature    = (string)dictionary["Temprature"];
                x.Status        = (string)dictionary["Status"];
                x.WindSpeed     = (string)dictionary["WindSpeed"];
                x.WindDirection = (string)dictionary["WindDirection"];
                x.Humidity      = (string)dictionary["Humidity"];
                x.IconURL       = (string)dictionary["IconURL"];
                x.IsNight       = (string)dictionary["IsNight"];
                return(x);
            }
            else if (dictionary.ContainsKey("Lat"))     //MapPoint
            {
                MapPoint x = new MapPoint();
                x.Title = (string)dictionary["Title"];
                x.Lat   = (double)dictionary["Lat"];
                x.Lng   = (double)dictionary["Lng"];
                return(x);
            }
            else if (dictionary.ContainsKey("Value"))     //ValueItem
            {
                ValueItem x = new ValueItem();
                x.Value    = (string)dictionary["Value"];
                x.ValueURL = (string)dictionary["ValueURL"];
                return(x);
            }
            else if (dictionary.ContainsKey("name"))     //ChartsData
            {
                ChartsData x = new ChartsData();
                x.name = (string)dictionary["name"];
                System.Collections.ArrayList itemss = ((System.Collections.ArrayList)dictionary["name"]);
                foreach (var item in itemss)
                {
                    x.values.Add(serializer.ConvertToType <string>(item));
                }
                return(x);
            }
        }
        return(null);
    }