private void onFacadeItemSelected(GUIListItem item, GUIControl parent) { // if this is not a message from the facade, exit if (parent != m_Facade && parent != m_Facade.FilmstripLayout && parent != m_Facade.ThumbnailLayout && parent != m_Facade.ListLayout && parent != m_Facade.PlayListLayout) { return; } if (item == null || item.TVTag == null) { return; } DBEpisode episode = item.TVTag as DBEpisode; if (episode == null || prevSelectedEpisode == episode) { return; } if (item.IsPlayed) { episode[DBOnlineEpisode.cWatched] = true; } // Push properties to skin TVSeriesPlugin.setGUIProperty(guiProperty.Title.ToString(), FieldGetter.resolveDynString(m_sFormatEpisodeTitle, episode)); TVSeriesPlugin.setGUIProperty(guiProperty.Subtitle.ToString(), FieldGetter.resolveDynString(m_sFormatEpisodeSubtitle, episode)); TVSeriesPlugin.setGUIProperty(guiProperty.Description.ToString(), FieldGetter.resolveDynString(m_sFormatEpisodeMain, episode)); TVSeriesPlugin.setGUIProperty(guiProperty.Logos.ToString(), localLogos.getLogos(ref episode, TVSeriesPlugin.logosHeight, TVSeriesPlugin.logosWidth)); TVSeriesPlugin.setGUIProperty(guiProperty.EpisodeImage.ToString(), ImageAllocator.GetEpisodeImage(episode)); GUIPropertyManager.SetProperty("#selectedthumb", ImageAllocator.GetEpisodeImage(episode)); TVSeriesPlugin.pushFieldsToSkin(episode, "Episode"); // Some strange issues with logos when using mouse and hovering over current item // Dont push properties next time if the same episode is selected prevSelectedEpisode = episode; }
/// <summary> /// Sets the following Properties: /// "#Play.Current.Title" /// "#Play.Current.Plot" /// "#Play.Current.Thumb" /// "#Play.Current.Year" /// </summary> /// <param name="clear">Clears the properties instead of filling them if True</param> void SetGUIProperties(bool clear) { if (m_currentEpisode == null) { return; } DBSeries series = null; if (!clear) { series = Helper.getCorrespondingSeries(m_currentEpisode[DBEpisode.cSeriesID]); } DBSeason season = null; if (!clear) { season = Helper.getCorrespondingSeason(m_currentEpisode[DBEpisode.cSeriesID], m_currentEpisode[DBEpisode.cSeasonIndex]); } // Show Plot in OSD or Hide Spoilers (note: FieldGetter takes care of that) GUIPropertyManager.SetProperty("#Play.Current.Plot", clear ? " " : FieldGetter.resolveDynString(TVSeriesPlugin.m_sFormatEpisodeMain, m_currentEpisode)); // Show Episode Thumbnail or Series Poster if Hide Spoilers is enabled string osdImage = string.Empty; if (!clear) { foreach (KeyValuePair <string, string> kvp in SkinSettings.VideoOSDImages) { switch (kvp.Key) { case "episode": osdImage = ImageAllocator.GetEpisodeImage(m_currentEpisode); break; case "season": osdImage = season.Banner; break; case "series": osdImage = series.Poster; break; case "custom": string value = replaceDynamicFields(kvp.Value); string file = Helper.getCleanAbsolutePath(value); if (System.IO.File.Exists(file)) { osdImage = file; } break; } osdImage = osdImage.Trim(); if (string.IsNullOrEmpty(osdImage)) { continue; } else { break; } } } GUIPropertyManager.SetProperty("#Play.Current.Thumb", clear ? " " : osdImage); // double check, i don't want play images to be cleared on ended or stopped... if (PlayPropertyUpdater.CancellationPending) { return; } foreach (KeyValuePair <string, string> kvp in SkinSettings.VideoPlayImages) { if (!clear) { string value = replaceDynamicFields(kvp.Value); string file = Helper.getCleanAbsolutePath(value); if (System.IO.File.Exists(file)) { MPTVSeriesLog.Write(string.Format("Setting play image {0} for property {1}", file, kvp.Key), MPTVSeriesLog.LogLevel.Debug); GUIPropertyManager.SetProperty(kvp.Key, clear ? " " : file); } } else { MPTVSeriesLog.Write(string.Format("Clearing play image for property {0}", kvp.Key), MPTVSeriesLog.LogLevel.Debug); GUIPropertyManager.SetProperty(kvp.Key, " "); } } GUIPropertyManager.SetProperty("#Play.Current.Title", clear ? " " : m_currentEpisode.onlineEpisode.CompleteTitle); GUIPropertyManager.SetProperty("#Play.Current.Year", clear ? " " : FieldGetter.resolveDynString("<" + DBEpisode.cOutName + "." + DBOnlineEpisode.cFirstAired + ">", m_currentEpisode, false)); GUIPropertyManager.SetProperty("#Play.Current.Genre", clear ? " " : FieldGetter.resolveDynString(TVSeriesPlugin.m_sFormatEpisodeSubtitle, m_currentEpisode)); }
/// <summary> /// Updates the movie metadata on the playback screen (for when the user clicks info). /// The delay is neccesary because Player tries to use metadata from the MyVideos database. /// We want to update this after that happens so the correct info is there. /// </summary> /// <param name="item">Playlist item</param> /// <param name="clear">Clears the properties instead of filling them if True</param> private void SetProperties(PlayListItem item, bool clear) { if (item == null) { return; } string title = string.Empty; DBSeries series = null; DBSeason season = null; if (!clear) { title = string.Format("{0} - {1}x{2} - {3}", item.SeriesName, item.SeasonIndex, item.EpisodeIndex, item.EpisodeName); series = Helper.getCorrespondingSeries(item.Episode[DBEpisode.cSeriesID]); season = Helper.getCorrespondingSeason(item.Episode[DBEpisode.cSeriesID], int.Parse(item.SeasonIndex)); } // Show Plot in OSD or Hide Spoilers (note: FieldGetter takes care of that) GUIPropertyManager.SetProperty("#Play.Current.Plot", clear ? " " : FieldGetter.resolveDynString(TVSeriesPlugin.m_sFormatEpisodeMain, item.Episode)); // Show Episode Thumbnail or Series Poster if Hide Spoilers is enabled string osdImage = string.Empty; if (!clear) { foreach (KeyValuePair <string, string> kvp in SkinSettings.VideoOSDImages) { switch (kvp.Key) { case "episode": osdImage = ImageAllocator.GetEpisodeImage(item.Episode); break; case "season": osdImage = season.Banner; break; case "series": osdImage = series.Poster; break; case "custom": string value = replaceDynamicFields(kvp.Value, item.Episode); string file = Helper.getCleanAbsolutePath(value); if (System.IO.File.Exists(file)) { osdImage = file; } break; } osdImage = osdImage.Trim(); if (string.IsNullOrEmpty(osdImage)) { continue; } else { break; } } } GUIPropertyManager.SetProperty("#Play.Current.Thumb", clear ? " " : osdImage); foreach (KeyValuePair <string, string> kvp in SkinSettings.VideoPlayImages) { if (!clear) { string value = replaceDynamicFields(kvp.Value, item.Episode); string file = Helper.getCleanAbsolutePath(value); if (System.IO.File.Exists(file)) { MPTVSeriesLog.Write(string.Format("Setting play image {0} for property {1}", file, kvp.Key), MPTVSeriesLog.LogLevel.Debug); GUIPropertyManager.SetProperty(kvp.Key, clear ? " " : file); } } else { MPTVSeriesLog.Write(string.Format("Clearing play image for property {0}", kvp.Key), MPTVSeriesLog.LogLevel.Debug); GUIPropertyManager.SetProperty(kvp.Key, " "); } } GUIPropertyManager.SetProperty("#Play.Current.Title", clear ? "" : title); GUIPropertyManager.SetProperty("#Play.Current.Year", clear ? "" : FieldGetter.resolveDynString("<" + DBEpisode.cOutName + "." + DBOnlineEpisode.cFirstAired + ">", item.Episode, false)); GUIPropertyManager.SetProperty("#Play.Current.Genre", clear ? "" : FieldGetter.resolveDynString(TVSeriesPlugin.m_sFormatEpisodeSubtitle, item.Episode)); }