private void LoadTrendingShowsFacade(IEnumerable<TraktShowTrending> trendingItems, GUIFacadeControl facade) { if (TraktSkinSettings.DashboardTrendingCollection == null || !TraktSkinSettings.DashboardTrendingCollection.Exists(d => d.TVShowWindows.Contains(GUIWindowManager.ActiveWindow.ToString()))) return; // get trending settings var trendingSettings = GetTrendingSettings(); if (trendingSettings == null) return; TraktLogger.Debug("Loading Trakt Trending Shows facade"); // if no trending, then nothing to do if (trendingItems == null || trendingItems.Count() == 0) return; // stop any existing image downloads GUIShowListItem.StopDownload = true; // clear facade GUIControl.ClearControl(GUIWindowManager.ActiveWindow, facade.GetID); int itemId = 0; var showImages = new List<GUITmdbImage>(); // filter shows if (TraktSettings.FilterTrendingOnDashboard) trendingItems = GUICommon.FilterTrendingShows(trendingItems); // Add each activity item to the facade foreach (var trendingItem in trendingItems.Take(trendingSettings.FacadeMaxItems)) { if (trendingItem.Show == null) continue; // add image for download var images = new GUITmdbImage { ShowImages = new TmdbShowImages { Id = trendingItem.Show.Ids.Tmdb } }; showImages.Add(images); var item = new GUIShowListItem(trendingItem.Show.Title, GUIWindowManager.ActiveWindow); item.Label2 = trendingItem.Show.Year.ToString(); item.TVTag = trendingItem; item.Show = trendingItem.Show; item.Images = images; item.ItemId = Int32.MaxValue - itemId; item.IconImage = GUIImageHandler.GetDefaultPoster(false); item.IconImageBig = GUIImageHandler.GetDefaultPoster(); item.ThumbnailImage = GUIImageHandler.GetDefaultPoster(); item.OnItemSelected += OnTrendingShowSelected; try { facade.Add(item); } catch { } itemId++; } // Set Facade Layout facade.SetCurrentLayout(trendingSettings.FacadeType); facade.SetVisibleFromSkinCondition(); // set facade properties GUIUtils.SetProperty("#Trakt.Trending.Shows.Items", string.Format("{0} {1}", trendingItems.Count().ToString(), trendingItems.Count() > 1 ? Translation.SeriesPlural : Translation.Series)); GUIUtils.SetProperty("#Trakt.Trending.Shows.PeopleCount", trendingItems.Sum(t => t.Watchers).ToString()); GUIUtils.SetProperty("#Trakt.Trending.Shows.Description", string.Format(Translation.TrendingTVShowsPeople, trendingItems.Sum(t => t.Watchers).ToString(), trendingItems.Count().ToString())); // Download images Async and set to facade GUIShowListItem.StopDownload = false; GUIShowListItem.GetImages(showImages); TraktLogger.Debug("Finished Loading Trending Shows facade"); }
private void LoadActivityFacade(TraktActivity activities, GUIFacadeControl facade) { if (TraktSkinSettings.DashBoardActivityWindows == null || !TraktSkinSettings.DashBoardActivityWindows.Contains(GUIWindowManager.ActiveWindow.ToString())) return; // if no activities report to user if (activities == null || activities.Activities == null || activities.Activities.Count == 0) { facade.Clear(); var item = new GUIListItem(Translation.NoActivities); facade.Add(item); facade.SetCurrentLayout(TraktSkinSettings.DashboardActivityFacadeType); ClearSelectedActivityProperties(); return; } // get the current view var view = (ActivityView)TraktSettings.ActivityStreamView; // if no new activities then nothing to do if (facade.Count > 0 && !ReloadActivityView) { var mostRecentActivity = facade[0].TVTag as TraktActivity.Activity; var lastActivity = facade[facade.Count - 1].TVTag as TraktActivity.Activity; if (mostRecentActivity != null && lastActivity != null) { // only check the timestamp if only showing yourself // check first and last because we may insert something in the middle between last load if (view == ActivityView.me && mostRecentActivity.Timestamp == activities.Activities.First().Timestamp && lastActivity.Timestamp == activities.Activities.Last().Timestamp) return; if (mostRecentActivity.Timestamp == activities.Activities.First().Timestamp && mostRecentActivity.User.Username == activities.Activities.First().User.Username) { return; } } } ReloadActivityView = false; TraktLogger.Debug("Loading Trakt Activity Facade"); // stop any existing image downloads GUIUserListItem.StopDownload = true; // clear facade GUIControl.ClearControl(GUIWindowManager.ActiveWindow, facade.GetID); int itemId = 0; int PreviousSelectedIdx = -1; var userImages = new List<GUITraktImage>(); // Add each activity item to the facade foreach (var activity in activities.Activities.Distinct().OrderByDescending(a => a.Timestamp)) { if (PreviousSelectedIdx == -1 && PreviousSelectedActivity != null && TraktSettings.RememberLastSelectedActivity) { if (activity.Equals(PreviousSelectedActivity)) PreviousSelectedIdx = itemId; } string itemLabel = GUICommon.GetActivityListItemTitle(activity, view); if (string.IsNullOrEmpty(itemLabel)) continue; var item = new GUIUserListItem(itemLabel, GUIWindowManager.ActiveWindow); string activityImage = GetActivityImage(activity); string avatarImage = GetAvatarImage(activity); // add image to download var images = new GUITraktImage { UserImages = activity.User.Images }; if (avatarImage == "defaultTraktUser.png") userImages.Add(images); item.Label2 = activity.Timestamp.ToPrettyDateTime(); item.TVTag = activity; item.User = activity.User; item.Images = images; item.ItemId = Int32.MaxValue - itemId; item.IconImage = avatarImage; item.IconImageBig = avatarImage; item.ThumbnailImage = avatarImage; item.PinImage = activityImage; item.OnItemSelected += OnActivitySelected; facade.Add(item); itemId++; } // Set Facade Layout facade.SetCurrentLayout(TraktSkinSettings.DashboardActivityFacadeType); facade.SetVisibleFromSkinCondition(); // Select previously selected item if (facade.LayoutControl.IsFocused && PreviousSelectedIdx >= 0) facade.SelectIndex(PreviousSelectedIdx); // set facade properties GUIUtils.SetProperty("#Trakt.Activity.Count", activities.Activities.Count().ToString()); GUIUtils.SetProperty("#Trakt.Activity.Items", string.Format("{0} {1}", activities.Activities.Count().ToString(), activities.Activities.Count() > 1 ? Translation.Activities : Translation.Activity)); GUIUtils.SetProperty("#Trakt.Activity.Description", GetActivityDescription((ActivityView)TraktSettings.ActivityStreamView)); // Download avatar images Async and set to facade GUIUserListItem.StopDownload = false; GUIUserListItem.GetImages(userImages); TraktLogger.Debug("Finished Loading Activity facade"); }