protected override void OnShowContextMenu()
{
if (GUIBackgroundTask.Instance.IsBusy) return;
GUIListItem selectedItem = this.Facade.SelectedListItem;
if (selectedItem == null) return;
var selectedEpisodeSummary = selectedItem.TVTag as TraktEpisodeSummaryEx;
if (selectedEpisodeSummary == null) return;
var selectedEpisode = selectedEpisodeSummary.Episode;
if (selectedEpisode == null) return;
var selectedShow = selectedEpisodeSummary.Show;
if (selectedShow == null) return;
IDialogbox dlg = (IDialogbox)GUIWindowManager.GetWindow((int)GUIWindow.Window.WINDOW_DIALOG_MENU);
if (dlg == null) return;
dlg.Reset();
dlg.SetHeading(GUIUtils.PluginName());
GUIListItem listItem = null;
// Show Season Information
listItem = new GUIListItem(Translation.ShowSeasonInfo);
dlg.Add(listItem);
listItem.ItemId = (int)ContextMenuItem.ShowSeasonInfo;
if (!selectedEpisode.IsWatchlisted())
{
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;
// Mark As Watched
if (!selectedEpisode.IsWatched(selectedShow))
{
listItem = new GUIListItem(Translation.MarkAsWatched);
dlg.Add(listItem);
listItem.ItemId = (int)ContextMenuItem.MarkAsWatched;
}
// Mark As UnWatched
if (selectedEpisode.IsWatched(selectedShow))
{
listItem = new GUIListItem(Translation.MarkAsUnWatched);
dlg.Add(listItem);
listItem.ItemId = (int)ContextMenuItem.MarkAsUnWatched;
}
// Add to Library
// Don't allow if it will be removed again on next sync
// movie could be part of a DVD collection
if (!selectedEpisode.IsCollected(selectedShow) && !TraktSettings.KeepTraktLibraryClean)
{
listItem = new GUIListItem(Translation.AddToLibrary);
dlg.Add(listItem);
listItem.ItemId = (int)ContextMenuItem.AddToLibrary;
}
if (selectedEpisode.IsCollected(selectedShow))
{
listItem = new GUIListItem(Translation.RemoveFromLibrary);
dlg.Add(listItem);
listItem.ItemId = (int)ContextMenuItem.RemoveFromLibrary;
}
// Related Shows
listItem = new GUIListItem(Translation.RelatedShows);
dlg.Add(listItem);
listItem.ItemId = (int)ContextMenuItem.Related;
// Rate Episode
listItem = new GUIListItem(Translation.RateEpisode);
dlg.Add(listItem);
listItem.ItemId = (int)ContextMenuItem.Rate;
// Shouts
listItem = new GUIListItem(Translation.Comments);
dlg.Add(listItem);
listItem.ItemId = (int)ContextMenuItem.Shouts;
if (TraktHelper.IsTrailersAvailableAndEnabled)
{
// Trailers
listItem = new GUIListItem(Translation.Trailers);
dlg.Add(listItem);
listItem.ItemId = (int)ContextMenuItem.Trailers;
}
// Change Layout
listItem = new GUIListItem(Translation.ChangeLayout);
dlg.Add(listItem);
listItem.ItemId = (int)ContextMenuItem.ChangeLayout;
if (!selectedEpisode.IsCollected(selectedShow) && TraktHelper.IsMpNZBAvailableAndEnabled)
{
// Search for movie with mpNZB
listItem = new GUIListItem(Translation.SearchWithMpNZB);
dlg.Add(listItem);
listItem.ItemId = (int)ContextMenuItem.SearchWithMpNZB;
}
if (!selectedEpisode.IsCollected(selectedShow) && TraktHelper.IsMyTorrentsAvailableAndEnabled)
{
// Search for movie with MyTorrents
listItem = new GUIListItem(Translation.SearchTorrent);
dlg.Add(listItem);
listItem.ItemId = (int)ContextMenuItem.SearchTorrent;
}
// Show Context Menu
dlg.DoModal(GUIWindowManager.ActiveWindow);
if (dlg.SelectedId < 0) return;
switch (dlg.SelectedId)
{
case ((int)ContextMenuItem.ShowSeasonInfo):
GUIWindowManager.ActivateWindow((int)TraktGUIWindows.ShowSeasons, selectedShow.ToJSON());
break;
case ((int)ContextMenuItem.MarkAsWatched):
TraktHelper.AddEpisodeToWatchHistory(selectedEpisode);
TraktCache.AddEpisodeToWatchHistory(selectedShow, selectedEpisode);
selectedItem.IsPlayed = true;
OnEpisodeSelected(selectedItem, Facade);
(Facade.SelectedListItem as GUIEpisodeListItem).Images.NotifyPropertyChanged("Screen");
break;
case ((int)ContextMenuItem.MarkAsUnWatched):
TraktHelper.RemoveEpisodeFromWatchHistory(selectedEpisode);
TraktCache.RemoveEpisodeFromWatchHistory(selectedShow, selectedEpisode);
selectedItem.IsPlayed = false;
OnEpisodeSelected(selectedItem, Facade);
(Facade.SelectedListItem as GUIEpisodeListItem).Images.NotifyPropertyChanged("Screen");
break;
case ((int)ContextMenuItem.AddToWatchList):
TraktHelper.AddEpisodeToWatchList(selectedEpisode);
TraktCache.AddEpisodeToWatchlist(selectedShow, selectedEpisode);
OnEpisodeSelected(selectedItem, Facade);
(Facade.SelectedListItem as GUIEpisodeListItem).Images.NotifyPropertyChanged("Screen");
break;
case ((int)ContextMenuItem.RemoveFromWatchList):
TraktHelper.RemoveEpisodeFromWatchList(selectedEpisode);
OnEpisodeSelected(selectedItem, Facade);
(Facade.SelectedListItem as GUIEpisodeListItem).Images.NotifyPropertyChanged("Screen");
break;
case ((int)ContextMenuItem.AddToList):
TraktHelper.AddRemoveEpisodeInUserList(selectedEpisode, false);
break;
case ((int)ContextMenuItem.Trailers):
GUICommon.ShowTVShowTrailersMenu(selectedShow, selectedEpisode);
break;
case ((int)ContextMenuItem.AddToLibrary):
TraktHelper.AddEpisodeToCollection(selectedEpisode);
TraktCache.AddEpisodeToCollection(selectedShow, selectedEpisode);
OnEpisodeSelected(selectedItem, Facade);
(Facade.SelectedListItem as GUIEpisodeListItem).Images.NotifyPropertyChanged("Screen");
break;
case ((int)ContextMenuItem.RemoveFromLibrary):
TraktHelper.RemoveEpisodeFromCollection(selectedEpisode);
TraktCache.RemoveEpisodeFromCollection(selectedShow, selectedEpisode);
OnEpisodeSelected(selectedItem, Facade);
(Facade.SelectedListItem as GUIEpisodeListItem).Images.NotifyPropertyChanged("Screen");
break;
case ((int)ContextMenuItem.Related):
TraktHelper.ShowRelatedShows(selectedShow);
break;
case ((int)ContextMenuItem.Rate):
GUICommon.RateEpisode(selectedShow, selectedEpisode);
OnEpisodeSelected(selectedItem, Facade);
(Facade.SelectedListItem as GUIEpisodeListItem).Images.NotifyPropertyChanged("Screen");
break;
case ((int)ContextMenuItem.Shouts):
TraktHelper.ShowEpisodeShouts(selectedShow, selectedEpisode);
break;
case ((int)ContextMenuItem.ChangeLayout):
CurrentLayout = GUICommon.ShowLayoutMenu(CurrentLayout, PreviousSelectedIndex);
break;
case ((int)ContextMenuItem.SearchWithMpNZB):
string loadingParam = string.Format("search:{0} S{1}E{2}", selectedShow.Title, selectedEpisode.Season.ToString("D2"), selectedEpisode.Number.ToString("D2"));
GUIWindowManager.ActivateWindow((int)ExternalPluginWindows.MpNZB, loadingParam);
break;
case ((int)ContextMenuItem.SearchTorrent):
string loadPar = string.Format("{0} S{1}E{2}", selectedShow.Title, selectedEpisode.Season.ToString("D2"), selectedEpisode.Number.ToString("D2"));
GUIWindowManager.ActivateWindow((int)ExternalPluginWindows.MyTorrents, loadPar);
break;
default:
break;
}
base.OnShowContextMenu();
}