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