protected override void OnShowContextMenu()
{
var selectedItem = this.Facade.SelectedListItem;
if (selectedItem == null) return;
var selectedWatchlistItem = selectedItem.TVTag as TraktEpisodeWatchList;
if (selectedWatchlistItem == null) return;
var selectedShow = selectedWatchlistItem.Show;
var selectedEpisode = selectedWatchlistItem.Episode;
var dlg = (IDialogbox)GUIWindowManager.GetWindow((int)GUIWindow.Window.WINDOW_DIALOG_MENU);
if (dlg == null) return;
dlg.Reset();
dlg.SetHeading(GUIUtils.PluginName());
GUIListItem listItem = null;
if (CurrentUser == TraktSettings.Username)
{
listItem = new GUIListItem(Translation.RemoveFromWatchList);
dlg.Add(listItem);
listItem.ItemId = (int)ContextMenuItem.RemoveFromWatchList;
}
if (TraktHelper.IsTrailersAvailableAndEnabled)
{
listItem = new GUIListItem(Translation.Trailers);
dlg.Add(listItem);
listItem.ItemId = (int)ContextMenuItem.Trailers;
}
// Add to Custom List
listItem = new GUIListItem(Translation.AddToList);
dlg.Add(listItem);
listItem.ItemId = (int)ContextMenuItem.AddToList;
// Shouts
listItem = new GUIListItem(Translation.Comments);
dlg.Add(listItem);
listItem.ItemId = (int)ContextMenuItem.Shouts;
// Change Layout
listItem = new GUIListItem(Translation.ChangeLayout);
dlg.Add(listItem);
listItem.ItemId = (int)ContextMenuItem.ChangeLayout;
if (TraktHelper.IsMpNZBAvailableAndEnabled)
{
// Search for show with mpNZB
listItem = new GUIListItem(Translation.SearchWithMpNZB);
dlg.Add(listItem);
listItem.ItemId = (int)ContextMenuItem.SearchWithMpNZB;
}
if (TraktHelper.IsMyTorrentsAvailableAndEnabled)
{
// Search for show 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.RemoveFromWatchList):
PreviousSelectedIndex = this.Facade.SelectedListItemIndex;
TraktHelper.RemoveEpisodeFromWatchList(selectedEpisode);
if (this.Facade.Count >= 1)
{
// remove from list
var currentWatchlist = _WatchListEpisodes.ToList();
currentWatchlist.RemoveAll(w => w.Episode.Ids.Trakt == selectedEpisode.Ids.Trakt);
userWatchList[CurrentUser] = currentWatchlist;
_WatchListEpisodes = currentWatchlist;
// reload
LoadWatchListEpisodes();
}
else
{
// no more shows left
ClearProperties();
GUIControl.ClearControl(GetID, Facade.GetID);
_WatchListEpisodes = null;
userWatchList.Remove(CurrentUser);
// notify and exit
GUIUtils.ShowNotifyDialog(GUIUtils.PluginName(), Translation.NoShowWatchList);
GUIWindowManager.ShowPreviousWindow();
return;
}
break;
case ((int)ContextMenuItem.AddToList):
TraktHelper.AddRemoveEpisodeInUserList(selectedEpisode, false);
break;
case ((int)ContextMenuItem.Trailers):
GUICommon.ShowTVShowTrailersMenu(selectedShow, selectedEpisode);
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();
}