private void SendSeasonEpisodesToFacade(IEnumerable<TraktEpisodeSummary> episodes)
{
// clear facade
GUIControl.ClearControl(GetID, Facade.GetID);
if (episodes == null)
{
GUIUtils.ShowNotifyDialog(Translation.Error, Translation.ErrorGeneral);
GUIWindowManager.ShowPreviousWindow();
return;
}
if (episodes.Count() == 0)
{
GUIUtils.ShowNotifyDialog(GUIUtils.PluginName(), Translation.NoEpisodesInSeason);
GUIWindowManager.ShowPreviousWindow();
return;
}
// Set Common Show Properties
GUICommon.SetShowProperties(Show);
int itemCount = 0;
var episodeImages = new List<GUITmdbImage>();
foreach (var episode in episodes)
{
// skip invalid episodes
if (episode.Number == 0)
continue;
// use episode short string
string itemLabel = string.Format("{0}. {1}", episode.Number.ToString(), string.IsNullOrEmpty(episode.Title) ? Translation.Episode + " " + episode.Number.ToString() : episode.Title);
// add image for download
var images = new GUITmdbImage
{
EpisodeImages = new TmdbEpisodeImages
{
Id = Show.Ids.Tmdb,
Episode = episode.Number,
Season = episode.Season,
AirDate = episode.FirstAired == null ? null : episode.FirstAired.FromISO8601().ToLocalTime().ToShortDateString()
},
};
episodeImages.Add(images);
var item = new GUIEpisodeListItem(itemLabel, (int)TraktGUIWindows.SeasonEpisodes);
item.Label2 = episode.FirstAired == null ? " " : episode.FirstAired.FromISO8601().ToLocalTime().ToShortDateString();
item.TVTag = episode;
item.Show = Show;
item.Episode = episode;
item.IsPlayed = episode.IsWatched(Show);
item.Images = images;
item.ItemId = Int32.MaxValue - itemCount;
item.IconImage = "defaultTraktEpisode.png";
item.IconImageBig = "defaultTraktEpisodeBig.png";
item.ThumbnailImage = "defaultTraktEpisodeBig.png";
item.OnItemSelected += OnEpisodeSelected;
Utils.SetDefaultIcons(item);
Facade.Add(item);
itemCount++;
}
// Set Facade Layout
Facade.SetCurrentLayout(Enum.GetName(typeof(Layout), CurrentLayout));
GUIControl.FocusControl(GetID, Facade.GetID);
if (PreviousSelectedIndex >= itemCount)
Facade.SelectIndex(PreviousSelectedIndex - 1);
else
Facade.SelectIndex(PreviousSelectedIndex);
// set facade properties
GUIUtils.SetProperty("#itemcount", itemCount.ToString());
GUIUtils.SetProperty("#Trakt.Items", string.Format("{0} {1}", itemCount.ToString(), itemCount > 1 ? Translation.Episodes : Translation.Episode));
// Download episode images Async and set to facade
GUIEpisodeListItem.GetImages(episodeImages);
}