private TraktSyncAll GetSyncItems(TraktListItem listItem) { var syncItems = new TraktSyncAll(); switch (listItem.Type) { case "movie": var movie = new TraktMovie { Ids = new TraktMovieId { Trakt = listItem.Movie.Ids.Trakt } }; syncItems.Movies = new List<TraktMovie>(); syncItems.Movies.Add(movie); break; case "show": var show = new TraktShow { Ids = new TraktShowId { Trakt = listItem.Show.Ids.Trakt } }; syncItems.Shows = new List<TraktShow>(); syncItems.Shows.Add(show); break; case "season": var season = new TraktSeason { Ids = new TraktSeasonId { Trakt = listItem.Season.Ids.Trakt } }; syncItems.Seasons = new List<TraktSeason>(); syncItems.Seasons.Add(season); break; case "episode": var episode = new TraktEpisode { Ids = new TraktEpisodeId { Trakt = listItem.Episode.Ids.Trakt } }; syncItems.Episodes = new List<TraktEpisode>(); syncItems.Episodes.Add(episode); break; case "person": var person = new TraktPerson { Ids = new TraktPersonId { Trakt = listItem.Person.Ids.Trakt } }; syncItems.People = new List<TraktPerson>(); syncItems.People.Add(person); break; } return syncItems; }
private string GetListItemLabel(TraktListItem listItem) { string retValue = string.Empty; switch (listItem.Type) { case "movie": retValue = listItem.Movie.Title; break; case "show": retValue = listItem.Show.Title; break; case "season": retValue = string.Format("{0} {1} {2}", listItem.Show.Title, GUI.Translation.Season, listItem.Season.Number); break; case "episode": retValue = string.Format("{0} - {1}x{2}{3}", listItem.Show.Title, listItem.Episode.Season, listItem.Episode.Number, string.IsNullOrEmpty(listItem.Episode.Title) ? string.Empty : " - " + listItem.Episode.Title); break; case "person": retValue = listItem.Person.Name; break; } return retValue; }
private string GetListItemSecondLabel(TraktListItem listItem) { string retValue = string.Empty; switch (listItem.Type) { case "movie": retValue = listItem.Movie.Year == null ? "----" : listItem.Movie.Year.ToString(); break; case "show": retValue = listItem.Show.Year == null ? "----" : listItem.Show.Year.ToString(); break; case "season": retValue = string.Format("{0} {1}", listItem.Season.EpisodeCount, Translation.Episodes); break; case "episode": retValue = listItem.Episode.FirstAired.FromISO8601().ToShortDateString(); break; case "person": retValue = listItem.Person.Birthday; break; } return retValue; }
private void AddItemToWatchedHistory(TraktListItem item) { if (SelectedType == TraktItemType.movie) { TraktHelper.AddMovieToWatchHistory(item.Movie); } else if (SelectedType == TraktItemType.episode) { TraktHelper.AddEpisodeToWatchHistory(item.Episode); TraktCache.AddEpisodeToWatchHistory(item.Show, item.Episode); } }
private void AddItemToWatchList(TraktListItem item) { if (SelectedType == TraktItemType.movie) { TraktHelper.AddMovieToWatchList(item.Movie, true); } else if (SelectedType == TraktItemType.show) { TraktHelper.AddShowToWatchList(item.Show); } else if (SelectedType == TraktItemType.episode) { TraktHelper.AddEpisodeToWatchList(item.Episode); TraktCache.AddEpisodeToWatchlist(item.Show, item.Episode); } }
private void PublishEpisodeSkinProperties(TraktListItem item) { if (item == null || item.Episode == null) return; GUICommon.SetProperty("#Trakt.Season.Number", item.Episode.Season); GUICommon.SetEpisodeProperties(item.Show, item.Episode); PublishShowSkinProperties(item); }
public static void AddRemoveShowInUserList(string username, string title, string year, string tvdbid, bool remove) { if (!GUICommon.CheckLogin(false)) return; GUIBackgroundTask.Instance.ExecuteInBackgroundAndCallback(() => { return TraktLists.GetListsForUser(username); }, delegate(bool success, object result) { if (success) { IEnumerable<TraktUserList> customlists = result as IEnumerable<TraktUserList>; // get slug of lists selected List<string> slugs = TraktLists.GetUserListSelections(customlists.ToList()); if (slugs == null || slugs.Count == 0) return; TraktListItem item = new TraktListItem { Type = TraktItemType.show.ToString(), Title = title, Year = string.IsNullOrEmpty(year) ? 0 : Convert.ToInt32(year), TvdbId = tvdbid }; AddRemoveItemInList(slugs, item, remove); } }, Translation.GettingLists, true); }
private void PublishShowSkinProperties(TraktListItem item) { if (item == null || item.Show == null) return; GUICommon.SetShowProperties(item.Show); }
private void RateItem(TraktListItem item) { if (SelectedType == TraktItemType.movie) GUICommon.RateMovie(item.Movie); else if (SelectedType == TraktItemType.show) GUICommon.RateShow(item.Show); else if (SelectedType == TraktItemType.episode) GUICommon.RateEpisode(item.Show, item.Episode); }
private void PublishPersonSkinProperties(TraktListItem item) { if (item == null || item.Person == null) return; GUICommon.SetPersonProperties(item.Person); }
private void PublishSeasonSkinProperties(TraktListItem item) { if (item == null || item.Season == null) return; GUICommon.SetSeasonProperties(item.Show, item.Season); PublishShowSkinProperties(item); }
private void PublishMovieSkinProperties(TraktListItem item) { if (item == null || item.Movie == null) return; GUICommon.SetMovieProperties(item.Movie); }
private void CopyList(TraktListDetail sourceList, TraktListDetail newList) { var copyList = new CopyList { Username = CurrentUser, Source = sourceList, Destination = newList }; var copyThread = new Thread((obj) => { var copyParams = obj as CopyList; // first create new list TraktLogger.Info("Creating new list online. Privacy = '{0}', Name = '{1}'", copyParams.Destination.Privacy, copyParams.Destination.Name); var response = TraktAPI.TraktAPI.CreateCustomList(copyParams.Destination); if (response != null) { // get items from other list var userListItems = TraktAPI.TraktAPI.GetUserListItems(copyParams.Username, copyParams.Source.Ids.Trakt.ToString(), "min"); // copy items to new list var itemsToAdd = new TraktSyncAll(); foreach (var item in userListItems) { var listItem = new TraktListItem(); listItem.Type = item.Type; switch (item.Type) { case "movie": if (itemsToAdd.Movies == null) itemsToAdd.Movies = new List<TraktMovie>(); itemsToAdd.Movies.Add(new TraktMovie { Ids = item.Movie.Ids }); break; case "show": if (itemsToAdd.Shows == null) itemsToAdd.Shows = new List<TraktShow>(); itemsToAdd.Shows.Add(new TraktShow { Ids = item.Show.Ids }); break; case "season": if (itemsToAdd.Seasons == null) itemsToAdd.Seasons = new List<TraktSeason>(); itemsToAdd.Seasons.Add(new TraktSeason { Ids = item.Season.Ids }); break; case "episode": if (itemsToAdd.Episodes == null) itemsToAdd.Episodes = new List<TraktEpisode>(); itemsToAdd.Episodes.Add(new TraktEpisode { Ids = item.Episode.Ids }); break; case "person": if (itemsToAdd.People == null) itemsToAdd.People = new List<TraktPerson>(); itemsToAdd.People.Add(new TraktPerson { Ids = item.Person.Ids }); break; } } // add items to the list var ItemsAddedResponse = TraktAPI.TraktAPI.AddItemsToList("me", response.Ids.Trakt.ToString(), itemsToAdd); if (ItemsAddedResponse != null) { TraktLists.ClearListCache(TraktSettings.Username); TraktCache.ClearCustomListCache(); // updated MovingPictures categories and filters menu if (TraktHelper.IsMovingPicturesAvailableAndEnabled) { TraktHandlers.MovingPictures.UpdateCategoriesMenu(SyncListType.CustomList); TraktHandlers.MovingPictures.UpdateFiltersMenu(SyncListType.CustomList); } } } }) { Name = "CopyList", IsBackground = true }; copyThread.Start(copyList); }
internal static void AddRemoveItemInList(List<string> slugs, TraktListItem item, bool remove) { AddRemoveItemInList(slugs, new List<TraktListItem>() { item }, remove); }
private GUITmdbImage GetTmdbImage(TraktListItem listItem) { var images = new GUITmdbImage(); switch (listItem.Type) { case "movie": images.MovieImages = new TmdbMovieImages { Id = listItem.Movie.Ids.Tmdb }; break; case "show": images.ShowImages = new TmdbShowImages { Id = listItem.Show.Ids.Tmdb }; break; case "season": images.ShowImages = new TmdbShowImages { Id = listItem.Show.Ids.Tmdb }; images.SeasonImages = new TmdbSeasonImages { Id = listItem.Show.Ids.Tmdb, Season = listItem.Season.Number }; break; case "episode": images.ShowImages = new TmdbShowImages { Id = listItem.Show.Ids.Tmdb }; images.SeasonImages = new TmdbSeasonImages { Id = listItem.Show.Ids.Tmdb, Season = listItem.Episode.Season }; break; case "person": images.PeopleImages = new TmdbPeopleImages { Id = listItem.Person.Ids.TmdbId }; break; } return images; }
private void RemoveItemFromWatchedHistory(TraktListItem item) { if (SelectedType == TraktItemType.movie) { TraktHelper.RemoveMovieFromWatchHistory(item.Movie); } else if (SelectedType == TraktItemType.episode) { TraktHelper.RemoveEpisodeFromWatchHistory(item.Episode); TraktCache.RemoveEpisodeFromWatchHistory(item.Show, item.Episode); } }
private bool ListItemMatch(TraktListItem currentItem, TraktListItem itemToMatch) { switch (itemToMatch.Type) { case "movie": if (currentItem.Movie == null) return false; return currentItem.Movie.Ids.Trakt == itemToMatch.Movie.Ids.Trakt; case "show": if (currentItem.Show == null) return false; return currentItem.Show.Ids.Trakt == itemToMatch.Show.Ids.Trakt; case "season": if (currentItem.Season == null) return false; return currentItem.Season.Ids.Trakt == itemToMatch.Season.Ids.Trakt; case "episode": if (currentItem.Episode == null) return false; return currentItem.Episode.Ids.Trakt == itemToMatch.Episode.Ids.Trakt; case "person": if (currentItem.Person == null) return false; return currentItem.Person.Ids.Trakt == itemToMatch.Person.Ids.Trakt; } return false; }
private void RemoveItemFromWatchList(TraktListItem item) { if (SelectedType == TraktItemType.movie) { TraktHelper.RemoveMovieFromWatchList(item.Movie, true); } else if (SelectedType == TraktItemType.show) { TraktHelper.RemoveShowFromWatchList(item.Show); } else if (SelectedType == TraktItemType.episode) { TraktHelper.RemoveEpisodeFromWatchList(item.Episode); } }
private void CopyList(TraktUserList sourceList, TraktList newList) { CopyList copyList = new CopyList { Username = CurrentUser, Source = sourceList, Destination = newList }; Thread copyThread = new Thread(delegate(object obj) { CopyList copyParams = obj as CopyList; // first create new list TraktLogger.Info("Creating new '{0}' list '{1}'", copyParams.Destination.Privacy, copyParams.Destination.Name); TraktAddListResponse response = TraktAPI.TraktAPI.ListAdd(copyParams.Destination); TraktAPI.TraktAPI.LogTraktResponse<TraktResponse>(response); if (response.Status == "success") { // update with offical slug copyParams.Destination.Slug = response.Slug; // get items from other list TraktUserList userList = TraktAPI.TraktAPI.GetUserList(copyParams.Username, copyParams.Source.Slug); // copy items to new list List<TraktListItem> items = new List<TraktListItem>(); foreach (var item in userList.Items) { TraktListItem listItem = new TraktListItem(); listItem.Type = item.Type; switch (item.Type) { case "movie": listItem.Title = item.Movie.Title; listItem.Year = Convert.ToInt32(item.Movie.Year); listItem.ImdbId = item.Movie.Imdb; break; case "show": listItem.Title = item.Show.Title; listItem.Year = item.Show.Year; listItem.TvdbId = item.Show.Tvdb; break; case "season": listItem.Title = item.Show.Title; listItem.Year = item.Show.Year; listItem.TvdbId = item.Show.Tvdb; listItem.Season = Convert.ToInt32(item.SeasonNumber); break; case "episode": listItem.Title = item.Show.Title; listItem.Year = item.Show.Year; listItem.TvdbId = item.Show.Tvdb; listItem.Season = Convert.ToInt32(item.SeasonNumber); listItem.Episode = Convert.ToInt32(item.EpisodeNumber); break; } items.Add(listItem); } copyParams.Destination.Items = items; // add items to the list TraktAPI.TraktAPI.LogTraktResponse<TraktSyncResponse>(TraktAPI.TraktAPI.ListAddItems(copyParams.Destination)); if (response.Status == "success") TraktLists.ClearCache(TraktSettings.Username); } }) { Name = "Copy List", IsBackground = true }; copyThread.Start(copyList); }
protected override void OnShowContextMenu() { GUIListItem selectedItem = this.Facade.SelectedListItem; if (selectedItem == null) return; TraktUserListItem userListItem = (TraktUserListItem)selectedItem.TVTag; IDialogbox dlg = (IDialogbox)GUIWindowManager.GetWindow((int)GUIWindow.Window.WINDOW_DIALOG_MENU); if (dlg == null) return; dlg.Reset(); dlg.SetHeading(GUIUtils.PluginName()); GUIListItem listItem = null; if (SelectedType == TraktItemType.movie || SelectedType == TraktItemType.episode) { // Mark As Watched if (!userListItem.Watched) { listItem = new GUIListItem(Translation.MarkAsWatched); dlg.Add(listItem); listItem.ItemId = (int)ContextMenuItem.MarkAsWatched; } // Mark As UnWatched if (userListItem.Watched) { listItem = new GUIListItem(Translation.MarkAsUnWatched); dlg.Add(listItem); listItem.ItemId = (int)ContextMenuItem.MarkAsUnWatched; } } if (SelectedType != TraktItemType.season) { // Add/Remove Watch List if (!userListItem.InWatchList) { listItem = new GUIListItem(Translation.AddToWatchList); dlg.Add(listItem); listItem.ItemId = (int)ContextMenuItem.AddToWatchList; } else { listItem = new GUIListItem(Translation.RemoveFromWatchList); dlg.Add(listItem); listItem.ItemId = (int)ContextMenuItem.RemoveFromWatchList; } } // Add to Custom list listItem = new GUIListItem(Translation.AddToList + "..."); dlg.Add(listItem); listItem.ItemId = (int)ContextMenuItem.AddToList; // Remove from Custom list (Only if current user is the active user) if (TraktSettings.Username == CurrentUser) { listItem = new GUIListItem(Translation.RemoveFromList); dlg.Add(listItem); listItem.ItemId = (int)ContextMenuItem.RemoveFromList; } if (SelectedType == TraktItemType.movie || SelectedType == TraktItemType.episode) { // Add to Library // Don't allow if it will be removed again on next sync // movie could be part of a DVD collection if (!userListItem.InCollection && !TraktSettings.KeepTraktLibraryClean) { listItem = new GUIListItem(Translation.AddToLibrary); dlg.Add(listItem); listItem.ItemId = (int)ContextMenuItem.AddToLibrary; } if (userListItem.InCollection) { listItem = new GUIListItem(Translation.RemoveFromLibrary); dlg.Add(listItem); listItem.ItemId = (int)ContextMenuItem.RemoveFromLibrary; } } // Related Movies/Shows listItem = new GUIListItem(SelectedType == TraktItemType.movie ? Translation.RelatedMovies : Translation.RelatedShows + "..."); dlg.Add(listItem); listItem.ItemId = (int)ContextMenuItem.Related; if (SelectedType != TraktItemType.season) { // Rate listItem = new GUIListItem(Translation.Rate + "..."); dlg.Add(listItem); listItem.ItemId = (int)ContextMenuItem.Rate; // Shouts listItem = new GUIListItem(Translation.Shouts + "..."); dlg.Add(listItem); listItem.ItemId = (int)ContextMenuItem.Shouts; } // Trailers if (TraktHelper.IsOnlineVideosAvailableAndEnabled) { listItem = new GUIListItem(Translation.Trailers); dlg.Add(listItem); listItem.ItemId = (int)ContextMenuItem.Trailers; } // Search with mpNZB if (TraktHelper.IsMpNZBAvailableAndEnabled) { if ((userListItem.Movie != null && !userListItem.Movie.InCollection) || userListItem.Episode != null) { listItem = new GUIListItem(Translation.SearchWithMpNZB); dlg.Add(listItem); listItem.ItemId = (int)ContextMenuItem.SearchWithMpNZB; } } // Search with MyTorrents if (TraktHelper.IsMyTorrentsAvailableAndEnabled) { if ((userListItem.Movie != null && !userListItem.Movie.InCollection) || userListItem.Episode != null) { listItem = new GUIListItem(Translation.SearchTorrent); dlg.Add(listItem); listItem.ItemId = (int)ContextMenuItem.SearchTorrent; } } // Change Layout listItem = new GUIListItem(Translation.ChangeLayout); dlg.Add(listItem); listItem.ItemId = (int)ContextMenuItem.ChangeLayout; // Show Context Menu dlg.DoModal(GUIWindowManager.ActiveWindow); if (dlg.SelectedId < 0) return; switch (dlg.SelectedId) { case ((int)ContextMenuItem.MarkAsWatched): MarkItemAsWatched(userListItem); if (userListItem.Plays == 0) userListItem.Plays = 1; userListItem.Watched = true; selectedItem.IsPlayed = true; OnItemSelected(selectedItem, Facade); if (SelectedType == TraktItemType.movie) userListItem.Movie.Images.NotifyPropertyChanged("PosterImageFilename"); else userListItem.Show.Images.NotifyPropertyChanged("PosterImageFilename"); break; case ((int)ContextMenuItem.MarkAsUnWatched): MarkItemAsUnWatched(userListItem); userListItem.Watched = false; selectedItem.IsPlayed = false; OnItemSelected(selectedItem, Facade); if (SelectedType == TraktItemType.movie) userListItem.Movie.Images.NotifyPropertyChanged("PosterImageFilename"); else userListItem.Show.Images.NotifyPropertyChanged("PosterImageFilename"); break; case ((int)ContextMenuItem.AddToWatchList): AddItemToWatchList(userListItem); userListItem.InWatchList = true; OnItemSelected(selectedItem, Facade); if (SelectedType == TraktItemType.movie) userListItem.Movie.Images.NotifyPropertyChanged("PosterImageFilename"); else userListItem.Show.Images.NotifyPropertyChanged("PosterImageFilename"); GUIWatchListMovies.ClearCache(TraktSettings.Username); break; case ((int)ContextMenuItem.RemoveFromWatchList): RemoveItemFromWatchList(userListItem); userListItem.InWatchList = false; OnItemSelected(selectedItem, Facade); if (SelectedType == TraktItemType.movie) userListItem.Movie.Images.NotifyPropertyChanged("PosterImageFilename"); else userListItem.Show.Images.NotifyPropertyChanged("PosterImageFilename"); GUIWatchListMovies.ClearCache(TraktSettings.Username); break; case ((int)ContextMenuItem.AddToList): if (SelectedType == TraktItemType.movie) TraktHelper.AddRemoveMovieInUserList(userListItem.Title, userListItem.Year, userListItem.ImdbId, false); else if (SelectedType == TraktItemType.show) TraktHelper.AddRemoveShowInUserList(userListItem.Title, userListItem.Year, userListItem.Show.Tvdb, false); else if (SelectedType == TraktItemType.season) TraktHelper.AddRemoveSeasonInUserList(userListItem.Title, userListItem.Year, userListItem.SeasonNumber, userListItem.Show.Tvdb, false); else if (SelectedType == TraktItemType.episode) TraktHelper.AddRemoveEpisodeInUserList(userListItem.Title, userListItem.Year, userListItem.SeasonNumber, userListItem.EpisodeNumber, userListItem.Show.Tvdb, false); break; case ((int)ContextMenuItem.RemoveFromList): if (!GUIUtils.ShowYesNoDialog(Translation.DeleteListItem, Translation.ConfirmDeleteListItem)) break; // Only do remove from current list // We could do same as Add (ie remove from multile lists) but typically you only remove from the current list if (SelectedType == TraktItemType.movie) { TraktListItem item = new TraktListItem { Type = "movie", ImdbId = userListItem.ImdbId, Title = userListItem.Title, Year = Convert.ToInt32(userListItem.Year) }; TraktHelper.AddRemoveItemInList(CurrentList.Slug, item, true); } else if (SelectedType == TraktItemType.show) { TraktListItem item = new TraktListItem { Type = "show", TvdbId = userListItem.Show.Tvdb, Title = userListItem.Title, Year = Convert.ToInt32(userListItem.Year) }; TraktHelper.AddRemoveItemInList(CurrentList.Slug, item, true); } else if (SelectedType == TraktItemType.season) { TraktListItem item = new TraktListItem { Type = "season", TvdbId = userListItem.Show.Tvdb, Title = userListItem.Title, Year = Convert.ToInt32(userListItem.Year), Season = Convert.ToInt32(userListItem.SeasonNumber) }; TraktHelper.AddRemoveItemInList(CurrentList.Slug, item, true); } else if (SelectedType == TraktItemType.episode) { TraktListItem item = new TraktListItem { Type = "episode", TvdbId = userListItem.Show.Tvdb, Title = userListItem.Title, Year = Convert.ToInt32(userListItem.Year), Season = Convert.ToInt32(userListItem.SeasonNumber), Episode = Convert.ToInt32(userListItem.EpisodeNumber) }; TraktHelper.AddRemoveItemInList(CurrentList.Slug, item, true); } // Remove from view if (Facade.Count > 1) { PreviousSelectedIndex = Facade.SelectedListItemIndex; CurrentList.Items.Remove(userListItem); SendListItemsToFacade(CurrentList); } else { CurrentList.Items.Remove(userListItem); // no more items left GUIControl.ClearControl(GetID, Facade.GetID); ClearProperties(); GUIWindowManager.Process(); // nothing left, exit GUIWindowManager.ShowPreviousWindow(); return; } break; case ((int)ContextMenuItem.AddToLibrary): AddItemToLibrary(userListItem); userListItem.InCollection = true; OnItemSelected(selectedItem, Facade); if (SelectedType == TraktItemType.movie) userListItem.Movie.Images.NotifyPropertyChanged("PosterImageFilename"); else userListItem.Show.Images.NotifyPropertyChanged("PosterImageFilename"); break; case ((int)ContextMenuItem.RemoveFromLibrary): RemoveItemFromLibrary(userListItem); userListItem.InCollection = false; OnItemSelected(selectedItem, Facade); if (SelectedType == TraktItemType.movie) userListItem.Movie.Images.NotifyPropertyChanged("PosterImageFilename"); else userListItem.Show.Images.NotifyPropertyChanged("PosterImageFilename"); break; case ((int)ContextMenuItem.Related): if (SelectedType == TraktItemType.movie) { RelatedMovie relatedMovie = new RelatedMovie(); relatedMovie.IMDbId = userListItem.Movie.Imdb; relatedMovie.Title = userListItem.Movie.Title; GUIRelatedMovies.relatedMovie = relatedMovie; GUIWindowManager.ActivateWindow((int)TraktGUIWindows.RelatedMovies); } else { //series, season & episode RelatedShow relatedShow = new RelatedShow(); relatedShow.Title = userListItem.Show.Title; relatedShow.TVDbId = userListItem.Show.Tvdb; GUIRelatedShows.relatedShow = relatedShow; GUIWindowManager.ActivateWindow((int)TraktGUIWindows.RelatedShows); } break; case ((int)ContextMenuItem.Rate): RateItem(userListItem); OnItemSelected(selectedItem, Facade); if (SelectedType == TraktItemType.movie) userListItem.Movie.Images.NotifyPropertyChanged("PosterImageFilename"); else userListItem.Show.Images.NotifyPropertyChanged("PosterImageFilename"); break; case ((int)ContextMenuItem.Shouts): GUIShouts.ShoutType = (GUIShouts.ShoutTypeEnum)Enum.Parse(typeof(GUIShouts.ShoutTypeEnum), SelectedType.ToString(), true); if (SelectedType == TraktItemType.movie) GUIShouts.MovieInfo = new MovieShout { IMDbId = userListItem.ImdbId, TMDbId = userListItem.Movie.Tmdb, Title = userListItem.Title, Year = userListItem.Year }; else if (SelectedType == TraktItemType.show) GUIShouts.ShowInfo = new ShowShout { IMDbId = userListItem.ImdbId, TVDbId = userListItem.Show.Tvdb, Title = userListItem.Title }; else GUIShouts.EpisodeInfo = new EpisodeShout { IMDbId = userListItem.ImdbId, TVDbId = userListItem.Show.Tvdb, Title = userListItem.Title, SeasonIdx = userListItem.SeasonNumber, EpisodeIdx = userListItem.EpisodeNumber }; GUIShouts.Fanart = SelectedType == TraktItemType.movie ? (userListItem.Images as TraktMovie.MovieImages).FanartImageFilename : (userListItem.Images as TraktShow.ShowImages).FanartImageFilename; GUIWindowManager.ActivateWindow((int)TraktGUIWindows.Shouts); break; case ((int)ContextMenuItem.Trailers): ShowTrailersMenu(userListItem); break; case ((int)ContextMenuItem.SearchWithMpNZB): string loadingParam = String.Empty; if (userListItem.Movie != null) { loadingParam = string.Format("search:{0}", userListItem.Movie.Title); } else if (userListItem.Episode != null) { loadingParam = string.Format("search:{0} S{1}E{2}", userListItem.Show.Title, userListItem.Episode.Season.ToString("D2"), userListItem.Episode.Number.ToString("D2")); } GUIWindowManager.ActivateWindow((int)ExternalPluginWindows.MpNZB, loadingParam); break; case ((int)ContextMenuItem.SearchTorrent): string loadPar = String.Empty; if (userListItem.Movie != null) { loadPar = userListItem.Movie.Title; } else if (userListItem.Episode != null) { loadPar = string.Format("{0} S{1}E{2}", userListItem.Show.Title, userListItem.Episode.Season.ToString("D2"), userListItem.Episode.Number.ToString("D2")); } GUIWindowManager.ActivateWindow((int)ExternalPluginWindows.MyTorrents, loadPar); break; case ((int)ContextMenuItem.ChangeLayout): ShowLayoutMenu(); break; default: break; } base.OnShowContextMenu(); }