private void SendRecentlyAddedToFacade(IEnumerable<TraktActivity.Activity> activities) { // clear facade GUIControl.ClearControl(GetID, Facade.GetID); // protected profiles might return null if (activities == null || activities.Count() == 0) { GUIUtils.ShowNotifyDialog(GUIUtils.PluginName(), Translation.UserHasNoRecentAddedEpisodes); PreviousUser = CurrentUser; CurrentUser = TraktSettings.Username; GUIWindowManager.ShowPreviousWindow(); return; } int itemId = 0; int episodeCount = 0; var showImages = new List<GUITmdbImage>(); // Add each item added foreach (var activity in activities) { // bad data in API if (activity.Show == null || activity.Episodes == null) continue; // trakt returns an episode array per activity // you may add more than one in bulk foreach (var episode in activity.Episodes) { // prevent too many episodes loading in facade // its possible that 1 activity item can represent many episodes // e.g. user could of added 400 episodes of The Simpsons if (episodeCount >= 100) continue; var episodeSummary = new TraktEpisodeSummaryEx { Episode = episode, Show = activity.Show }; // skip invalid episodes if (episodeSummary.Episode.Number == 0) continue; var item = new GUIEpisodeListItem(episodeSummary.ToString(), (int)TraktGUIWindows.RecentAddedEpisodes); // add images for download var images = new GUITmdbImage { EpisodeImages = new TmdbEpisodeImages { Id = episodeSummary.Show.Ids.Tmdb, Season = episodeSummary.Episode.Season, Episode = episodeSummary.Episode.Number, AirDate = episodeSummary.Episode.FirstAired == null ? null : episodeSummary.Episode.FirstAired.FromISO8601().ToLocalTime().ToShortDateString() } }; showImages.Add(images); // add user added date as second label item.Label2 = activity.Timestamp.FromISO8601().ToShortDateString(); item.TVTag = episodeSummary; item.Episode = episode; item.Show = activity.Show; item.Images = images; item.Date = activity.Timestamp.FromISO8601().ToLongDateString(); item.ItemId = Int32.MaxValue - itemId++; item.IsPlayed = episode.IsWatched(activity.Show); item.IconImage = "defaultTraktEpisode.png"; item.IconImageBig = "defaultTraktEpisodeBig.png"; item.ThumbnailImage = "defaultTraktEpisodeBig.png"; item.OnItemSelected += OnEpisodeSelected; Utils.SetDefaultIcons(item); Facade.Add(item); episodeCount++; } } // set Facade Layout Facade.SetCurrentLayout(Enum.GetName(typeof(Layout), CurrentLayout)); GUIControl.FocusControl(GetID, Facade.GetID); if (PreviousSelectedIndex >= episodeCount) Facade.SelectIndex(PreviousSelectedIndex - 1); else Facade.SelectIndex(PreviousSelectedIndex); // set facade properties GUIUtils.SetProperty("#itemcount", episodeCount.ToString()); GUIUtils.SetProperty("#Trakt.Items", string.Format("{0} {1}", episodeCount.ToString(), episodeCount > 1 ? Translation.Episodes : Translation.Episode)); // Download show images Async and set to facade GUIEpisodeListItem.GetImages(showImages); }
private void PublishSkinProperties(TraktEpisodeSummaryEx episodeSummary) { GUICommon.SetShowProperties(episodeSummary.Show); GUICommon.SetEpisodeProperties(episodeSummary.Show, episodeSummary.Episode); }