/// <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); }
/// <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(); }