/// <summary>
        ///     Adds target package.
        /// </summary>
        /// <exception cref="ArgumentNullException"/>
        public static void AddPackage([NotNull] JEMAssetBuilderPackage package, bool select = true)
        {
            if (package == null)
            {
                throw new ArgumentNullException(nameof(package));
            }
            if (Packages.Contains(package))
            {
                return;
            }

            Packages.Add(package);
            if (select)
            {
                SelectedPackage = package.Name;
            }
        }
        /// <summary>
        ///     Removes target package.
        /// </summary>
        /// <exception cref="ArgumentNullException"/>
        public static void RemovePackage([NotNull] JEMAssetBuilderPackage package)
        {
            if (package == null)
            {
                throw new ArgumentNullException(nameof(package));
            }
            if (!Packages.Contains(package))
            {
                return;
            }

            var configurationFile = package.GetConfigurationFile();

            if (File.Exists(configurationFile))
            {
                File.Delete(configurationFile);
            }

            Packages.Remove(package);
        }
Example #3
0
    /// <summary>
    /// Load the collection of TV channels from a Sky public web service
    /// </summary>
    public void LoadChannelMappings()
    {
        //  Load the channels as JSON and deserialize
        JavaScriptSerializer serializer = new JavaScriptSerializer();
        string json = new WebClient().DownloadString("http://tv.sky.com/channel/index");

        JsonFormat.SkyChannelInfo channels = serializer.Deserialize <JsonFormat.SkyChannelInfo>(json);

        List <JsonFormat.SkyChannelChannel> channelList = new List <JsonFormat.SkyChannelChannel>();

        //  Add all the channels we are interested in
        foreach (JsonFormat.SkyChannelChannel channel in channels.init.channels)
        {
            //  Empirical determined values for C[2] encoding the subscription pack:
            //      12 => Entertainment
            //      13 => Lifestyle
            //      14 => Movies
            //      15 => Sport
            //      16 => News
            //      17 => Documentary
            //      18 => Childrens
            //      19 => Music
            //      21 => Shopping
            //      22 => Religious
            //      23 => Asian
            //      24 => Gambling & Sex
            //      25 => Specialist
            if ((Packages != null && Packages.Contains(channel.c[2]) || //  Included in configured packages
                 channel.pt == null ||                                  //  Free to view
                 channel.pt == "F") &&                                  //  Free to air
                channel.c[1] < 900)                                     //  Empirically determined - c[1] >= 900 => Local regional
            {
                channelList.Add(channel);
            }
        }

        //  Build a list of channels with favourites first, then HD, then SD
        AllChannels = new Dictionary <int, Channel>();
        var favoriteChannels = FavoriteChannels;

        foreach (var favouriteChannel in favoriteChannels)
        {
            foreach (var channel in channelList)
            {
                if (channel.t == favouriteChannel || channel.lcn == favouriteChannel)
                {
                    AllChannels[channel.c[0]] = new Channel(channel, false, true);
                }
            }
        }

        foreach (var channel in channelList)
        {
            if (!favoriteChannels.Contains(channel.t) && channel.c[3] != 0) //  c[3] != 0 => HD
            {
                AllChannels[channel.c[0]] = new Channel(channel, false, false);
            }
        }

        foreach (var channel in channelList)
        {
            if (!favoriteChannels.Contains(channel.t) && channel.c[3] == 0) //  c[3] == 0 => SD
            {
                AllChannels[channel.c[0]] = new Channel(channel, false, false);
            }
        }

        //  What are we currently watching?
        GetCurrentChannelInfo();
    }