private void ShowTrailersMenu(TraktTrendingShow show)
        {
            IDialogbox dlg = (IDialogbox)GUIWindowManager.GetWindow((int)GUIWindow.Window.WINDOW_DIALOG_MENU);
            dlg.Reset();
            dlg.SetHeading(Translation.Trailer);

            foreach (TrailerSite site in Enum.GetValues(typeof(TrailerSite)))
            {
                string menuItem = Enum.GetName(typeof(TrailerSite), site);
                GUIListItem pItem = new GUIListItem(menuItem);
                dlg.Add(pItem);
            }

            dlg.DoModal(GUIWindowManager.ActiveWindow);

            if (dlg.SelectedLabel >= 0)
            {
                string siteUtil = string.Empty;
                string searchParam = string.Empty;

                switch (dlg.SelectedLabelText)
                {
                    case ("IMDb"):
                        siteUtil = "IMDb Movie Trailers";
                        if (!string.IsNullOrEmpty(show.Imdb))
                            // Exact search
                            searchParam = show.Imdb;
                        else
                            searchParam = show.Title;
                        break;

                    case ("YouTube"):
                        siteUtil = "YouTube";
                        searchParam = show.Title;
                        break;
                }

                string loadingParam = string.Format("site:{0}|search:{1}|return:Locked", siteUtil, searchParam);
                // Launch OnlineVideos Trailer search
                GUIWindowManager.ActivateWindow((int)ExternalPluginWindows.OnlineVideos, loadingParam);
            }
        }
 private void PublishShowSkinProperties(TraktTrendingShow show)
 {
     GUICommon.SetProperty("#Trakt.Show.Watchers", show.Watchers.ToString());
     GUICommon.SetProperty("#Trakt.Show.Watchers.Extra", show.Watchers > 1 ? string.Format(Translation.PeopleWatching, show.Watchers) : Translation.PersonWatching);
     GUICommon.SetShowProperties(show);
 }
        private void RemoveShowFromWatchList(TraktTrendingShow show)
        {
            Thread syncThread = new Thread(delegate(object obj)
            {
                TraktAPI.TraktAPI.SyncShowWatchList(CreateSyncData(obj as TraktTrendingShow), TraktSyncModes.unwatchlist);
            })
            {
                IsBackground = true,
                Name = "Removing Show from Watch List"
            };

            syncThread.Start(show);
        }
        private void RateShow(TraktTrendingShow show)
        {
            TraktRateSeries rateObject = new TraktRateSeries
            {
                SeriesID = show.Tvdb,
                Title = show.Title,
                Year = show.Year.ToString(),
                Rating = show.Rating,
                UserName = TraktSettings.Username,
                Password = TraktSettings.Password
            };

            string prevRating = show.Rating;
            show.Rating = GUIUtils.ShowRateDialog<TraktRateSeries>(rateObject);

            // if previous rating not equal to current rating then
            // update skin properties to reflect changes so we dont
            // need to re-request from server
            if (prevRating != show.Rating)
            {
                if (prevRating == "false")
                {
                    show.Ratings.Votes++;
                    if (show.Rating == "love")
                        show.Ratings.LovedCount++;
                    else
                        show.Ratings.HatedCount++;
                }

                if (prevRating == "love")
                {
                    show.Ratings.LovedCount--;
                    show.Ratings.HatedCount++;
                }

                if (prevRating == "hate")
                {
                    show.Ratings.LovedCount++;
                    show.Ratings.HatedCount--;
                }

                show.Ratings.Percentage = (int)Math.Round(100 * (show.Ratings.LovedCount / (float)show.Ratings.Votes));
            }
        }
 private void PublishShowSkinProperties(TraktTrendingShow show)
 {
     SetProperty("#Trakt.Show.AirDay", show.AirDay);
     SetProperty("#Trakt.Show.AirTime", show.AirTime);
     SetProperty("#Trakt.Show.Country", show.Country);
     SetProperty("#Trakt.Show.Network", show.Network);
     SetProperty("#Trakt.Show.TvRage", show.TvRage);
     SetProperty("#Trakt.Show.Imdb", show.Imdb);
     SetProperty("#Trakt.Show.Certification", show.Certification);
     SetProperty("#Trakt.Show.Overview", string.IsNullOrEmpty(show.Overview) ? Translation.NoShowSummary : show.Overview);
     SetProperty("#Trakt.Show.FirstAired", show.FirstAired.FromEpoch().ToShortDateString());
     SetProperty("#Trakt.Show.Runtime", show.Runtime.ToString());
     SetProperty("#Trakt.Show.Title", show.Title);
     SetProperty("#Trakt.Show.Url", show.Url);
     SetProperty("#Trakt.Show.Year", show.Year.ToString());
     SetProperty("#Trakt.Show.PosterImageFilename", show.Images.PosterImageFilename);
     SetProperty("#Trakt.Show.FanartImageFilename", show.Images.FanartImageFilename);
     SetProperty("#Trakt.Show.InWatchList", show.InWatchList.ToString());
     SetProperty("#Trakt.Show.Watchers", show.Watchers.ToString());
     SetProperty("#Trakt.Show.Watchers.Extra", show.Watchers > 1 ? string.Format(Translation.PeopleWatching, show.Watchers) : Translation.PersonWatching);
     SetProperty("#Trakt.Show.Rating", show.Rating);
     SetProperty("#Trakt.Show.Ratings.Icon", (show.Ratings.LovedCount > show.Ratings.HatedCount) ? "love" : "hate");
     SetProperty("#Trakt.Show.Ratings.HatedCount", show.Ratings.HatedCount.ToString());
     SetProperty("#Trakt.Show.Ratings.LovedCount", show.Ratings.LovedCount.ToString());
     SetProperty("#Trakt.Show.Ratings.Percentage", show.Ratings.Percentage.ToString());
     SetProperty("#Trakt.Show.Ratings.Votes", show.Ratings.Votes.ToString());
 }
        private TraktShowSync CreateSyncData(TraktTrendingShow show)
        {
            if (show == null) return null;

            List<TraktShowSync.Show> shows = new List<TraktShowSync.Show>();

            TraktShowSync.Show syncShow = new TraktShowSync.Show
            {
                TVDBID = show.Tvdb,
                Title = show.Title,
                Year = show.Year
            };
            shows.Add(syncShow);

            TraktShowSync syncData = new TraktShowSync
            {
                UserName = TraktSettings.Username,
                Password = TraktSettings.Password,
                Shows = shows
            };

            return syncData;
        }
        private void AddShowToWatchList(TraktTrendingShow show)
        {
            Thread syncThread = new Thread(delegate(object obj)
            {
                TraktAPI.TraktAPI.SyncShowWatchList(CreateSyncData(obj as TraktTrendingShow), TraktSyncModes.watchlist);
            })
            {
                IsBackground = true,
                Name = "Adding Show to Watch List"
            };

            syncThread.Start(show);
        }