private TraktEpisodeSync CreateEpisodeSyncData(TraktUserListItem item) { if (item == null) { return(null); } TraktEpisodeSync.Episode syncEpisode = new TraktEpisodeSync.Episode { EpisodeIndex = item.EpisodeNumber.ToString(), SeasonIndex = item.SeasonNumber.ToString() }; TraktEpisodeSync syncData = new TraktEpisodeSync { UserName = TraktSettings.Username, Password = TraktSettings.Password, SeriesID = item.Show.Tvdb, Title = item.Show.Title, Year = item.Year, EpisodeList = new List <TraktEpisodeSync.Episode> { syncEpisode } }; return(syncData); }
private void CheckAndPlayEpisode(bool jumpTo) { GUIListItem selectedItem = this.Facade.SelectedListItem; if (selectedItem == null) { return; } TraktUserListItem userListItem = selectedItem.TVTag as TraktUserListItem; if (userListItem == null) { return; } int seriesid = Convert.ToInt32(userListItem.Show.Tvdb); string searchterm = string.IsNullOrEmpty(userListItem.Show.Imdb) ? userListItem.Show.Title : userListItem.Show.Imdb; // if its a show/season, play first unwatched if (SelectedType != TraktItemType.episode) { GUICommon.CheckAndPlayFirstUnwatched(seriesid, searchterm, jumpTo, userListItem.Title); } else { int seasonidx = Convert.ToInt32(userListItem.SeasonNumber); int episodeidx = Convert.ToInt32(userListItem.EpisodeNumber); GUICommon.CheckAndPlayEpisode(seriesid, searchterm, seasonidx, episodeidx, userListItem.Title); } }
private void PublishShowSkinProperties(TraktUserListItem item) { if (item == null || item.Show == null) { return; } GUICommon.SetShowProperties(item.Show); }
private void PublishMovieSkinProperties(TraktUserListItem item) { if (item == null || item.Movie == null) { return; } GUICommon.SetMovieProperties(item.Movie); }
private void PublishSeasonSkinProperties(TraktUserListItem item) { if (item == null) { return; } GUICommon.SetProperty("#Trakt.Season.Number", item.SeasonNumber); PublishShowSkinProperties(item); }
private void RemoveItemFromLibrary(TraktUserListItem item) { if (SelectedType == TraktItemType.movie) { TraktHelper.RemoveMovieFromLibrary(item.Movie); } else { TraktHelper.RemoveEpisodeFromLibrary(item.Show, item.Episode); } }
private void AddItemToLibrary(TraktUserListItem item) { if (SelectedType == TraktItemType.movie) { TraktHelper.AddMovieToLibrary(item.Movie); } else { TraktHelper.AddEpisodeToLibrary(item.Show, item.Episode); } }
private void MarkItemAsUnWatched(TraktUserListItem item) { if (SelectedType == TraktItemType.movie) { TraktHelper.MarkMovieAsWatched(item.Movie); } else { TraktHelper.MarkEpisodeAsWatched(item.Show, item.Episode); } }
private void PublishEpisodeSkinProperties(TraktUserListItem item) { if (item == null || item.Episode == null) { return; } GUICommon.SetEpisodeProperties(item.Episode); // workaround API not having episode number set // can be removed later when fixed GUICommon.SetProperty("#Trakt.Episode.Number", item.EpisodeNumber); PublishSeasonSkinProperties(item); }
private void RateItem(TraktUserListItem 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 RemoveItemFromWatchList(TraktUserListItem item) { if (SelectedType == TraktItemType.movie) { TraktHelper.RemoveMovieFromWatchList(item.Movie, true); } else if (SelectedType == TraktItemType.show) { TraktHelper.RemoveShowFromWatchList(item.Show); } else { TraktHelper.RemoveEpisodeFromWatchList(item.Show, item.Episode); } }
private void AddItemToWatchList(TraktUserListItem item) { if (SelectedType == TraktItemType.movie) { TraktHelper.AddMovieToWatchList(item.Movie, true); } else if (SelectedType == TraktItemType.show) { TraktHelper.AddShowToWatchList(item.Show); } else { TraktHelper.AddEpisodeToWatchList(item.Show, item.Episode); } }
private void CheckAndPlayMovie(bool jumpTo) { GUIListItem selectedItem = this.Facade.SelectedListItem; if (selectedItem == null) { return; } TraktUserListItem userListItem = selectedItem.TVTag as TraktUserListItem; if (userListItem == null || userListItem.Movie == null) { return; } GUICommon.CheckAndPlayMovie(jumpTo, userListItem.Movie); }
private TraktImage GetTraktImage(TraktUserListItem listItem) { TraktImage images = new TraktImage(); switch (listItem.Type) { case "movie": images.MovieImages = listItem.Movie.Images; break; case "show": case "season": case "episode": images.ShowImages = listItem.Show.Images; break; } return(images); }
private void OnItemSelected(GUIListItem item, GUIControl parent) { if (item == null) { return; } TraktUserListItem listItem = item.TVTag as TraktUserListItem; if (listItem == null) { return; } PreviousSelectedIndex = Facade.SelectedListItemIndex; switch (listItem.Type) { case "movie": SelectedType = TraktItemType.movie; PublishMovieSkinProperties(listItem); GUIImageHandler.LoadFanart(backdrop, listItem.Movie.Images.Fanart.LocalImageFilename(ArtworkType.MovieFanart)); break; case "show": SelectedType = TraktItemType.show; PublishShowSkinProperties(listItem); GUIImageHandler.LoadFanart(backdrop, listItem.Show.Images.Fanart.LocalImageFilename(ArtworkType.ShowFanart)); break; case "season": SelectedType = TraktItemType.season; PublishSeasonSkinProperties(listItem); GUIImageHandler.LoadFanart(backdrop, listItem.Show.Images.Fanart.LocalImageFilename(ArtworkType.ShowFanart)); break; case "episode": SelectedType = TraktItemType.episode; PublishEpisodeSkinProperties(listItem); GUIImageHandler.LoadFanart(backdrop, listItem.Show.Images.Fanart.LocalImageFilename(ArtworkType.ShowFanart)); break; } GUIUtils.SetProperty("#Trakt.List.ItemType", SelectedType.ToString()); }
private void MarkItemAsUnWatched(TraktUserListItem item) { Thread syncThread = new Thread(delegate(object obj) { if (SelectedType == TraktItemType.movie) { TraktAPI.TraktAPI.SyncMovieLibrary(CreateMovieSyncData((obj as TraktUserListItem).Movie), TraktSyncModes.unseen); } else { TraktAPI.TraktAPI.SyncEpisodeLibrary(CreateEpisodeSyncData(obj as TraktUserListItem), TraktSyncModes.unseen); } }) { IsBackground = true, Name = "MarkUnWatched" }; syncThread.Start(item); }
private void RemoveItemFromLibrary(TraktUserListItem item) { Thread syncThread = new Thread(delegate(object obj) { if (SelectedType == TraktItemType.movie) { TraktAPI.TraktAPI.SyncMovieLibrary(CreateMovieSyncData((obj as TraktUserListItem).Movie), TraktSyncModes.unlibrary); } else { TraktAPI.TraktAPI.SyncEpisodeLibrary(CreateEpisodeSyncData(obj as TraktUserListItem), TraktSyncModes.unlibrary); } }) { IsBackground = true, Name = "RemoveLibrary" }; syncThread.Start(item); }
private void AddItemToWatchList(TraktUserListItem item) { Thread syncThread = new Thread(delegate(object obj) { if (SelectedType == TraktItemType.movie) { TraktAPI.TraktAPI.SyncMovieLibrary(CreateMovieSyncData((obj as TraktUserListItem).Movie), TraktSyncModes.watchlist); } else if (SelectedType == TraktItemType.show) { TraktAPI.TraktAPI.SyncShowWatchList(CreateShowSyncData((obj as TraktUserListItem).Show), TraktSyncModes.watchlist); } else { TraktAPI.TraktAPI.SyncEpisodeLibrary(CreateEpisodeSyncData(obj as TraktUserListItem), TraktSyncModes.watchlist); } }) { IsBackground = true, Name = "AddWatchList" }; syncThread.Start(item); }
private string GetListItemName(TraktUserListItem 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.SeasonNumber); break; case "episode": retValue = string.Format("{0} - {1}x{2}{3}", listItem.Show.Title, listItem.SeasonNumber, listItem.EpisodeNumber, string.IsNullOrEmpty(listItem.Episode.Title) ? string.Empty : " - " + listItem.Episode.Title); break; } return(retValue); }
protected void SetImageToGui(string imageFilePath, Size size) { if (string.IsNullOrEmpty(imageFilePath)) { return; } // determine the overlay to add to poster TraktUserListItem listItem = TVTag as TraktUserListItem; MainOverlayImage mainOverlay = MainOverlayImage.None; if (listItem.InWatchList) { mainOverlay = MainOverlayImage.Watchlist; } else if (listItem.Watched) { mainOverlay = MainOverlayImage.Seenit; } // add additional overlay if applicable if (listItem.InCollection) { mainOverlay |= MainOverlayImage.Library; } RatingOverlayImage ratingOverlay = GUIImageHandler.GetRatingOverlay(listItem.RatingAdvanced); // get a reference to a MediaPortal Texture Identifier string suffix = mainOverlay.ToString().Replace(", ", string.Empty) + Enum.GetName(typeof(RatingOverlayImage), ratingOverlay); string texture = GUIImageHandler.GetTextureIdentFromFile(imageFilePath, suffix); // build memory image Image memoryImage = null; if (mainOverlay != MainOverlayImage.None || ratingOverlay != RatingOverlayImage.None) { memoryImage = GUIImageHandler.DrawOverlayOnPoster(imageFilePath, mainOverlay, ratingOverlay, size); if (memoryImage == null) { return; } // load texture into facade item if (GUITextureManager.LoadFromMemory(memoryImage, texture, 0, 0, 0) > 0) { ThumbnailImage = texture; IconImage = texture; IconImageBig = texture; } } else { ThumbnailImage = imageFilePath; IconImage = imageFilePath; IconImageBig = imageFilePath; } // if selected and is current window force an update of thumbnail this.UpdateItemIfSelected((int)TraktGUIWindows.ListItems, ItemId); }
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.IMDBID; 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.TMDBID, 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): if (SelectedType == TraktItemType.movie) { GUICommon.ShowMovieTrailersMenu(userListItem.Movie); } else { GUICommon.ShowTVShowTrailersMenu(userListItem.Show, userListItem.Episode); } 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): CurrentLayout = GUICommon.ShowLayoutMenu(CurrentLayout); break; default: break; } base.OnShowContextMenu(); }