public void SetItems(GUIFacadeControl control) { foreach (GUIListItem item in Items) { control.Add(item); } }
protected bool AllowView(GUIFacadeControl.Layout view) { if (view == GUIFacadeControl.Layout.List) return false; if (view == GUIFacadeControl.Layout.AlbumView) return false; if (view == GUIFacadeControl.Layout.Filmstrip) return false; if (view == GUIFacadeControl.Layout.Playlist) return false; return true; }
protected virtual bool AllowLayout(GUIFacadeControl.Layout layout) { return true; }
protected virtual void SwitchToNextAllowedLayout(GUIFacadeControl.Layout selectedLayout) { int iSelectedLayout = (int)selectedLayout; int totalLayouts = Enum.GetValues(typeof (GUIFacadeControl.Layout)).Length - 1; if (iSelectedLayout > totalLayouts) iSelectedLayout = 0; bool shouldContinue = true; do { if (!AllowLayout(selectedLayout) || facadeLayout.IsNullLayout(selectedLayout)) { iSelectedLayout++; if (iSelectedLayout > totalLayouts) iSelectedLayout = 0; } else { shouldContinue = false; } } while (shouldContinue); CurrentLayout = (GUIFacadeControl.Layout)iSelectedLayout; SwitchLayout(); }
protected virtual void SetLayout(GUIFacadeControl.Layout layout) { // Set the selected layout. SwitchToNextAllowedLayout(layout); }
public static int ProperDefaultFromLayout(GUIFacadeControl.Layout layout) { switch (layout) { case GUIFacadeControl.Layout.SmallIcons: return 1; case GUIFacadeControl.Layout.LargeIcons: return 2; case GUIFacadeControl.Layout.AlbumView: return 3; case GUIFacadeControl.Layout.Filmstrip: return 4; case GUIFacadeControl.Layout.CoverFlow: return 5; default: return 0; } }
// this is expensive to do if changing mode......450 ms ??? private void setFacadeMode(GUIFacadeControl.Layout mode) { if (this.m_Facade == null) return; if (mode == GUIFacadeControl.Layout.List) { PerfWatcher.GetNamedWatch("FacadeMode - switch to List").Start(); this.m_Facade.CurrentLayout = mode; PerfWatcher.GetNamedWatch("FacadeMode - switch to List").Stop(); } else { PerfWatcher.GetNamedWatch("FacadeMode - switch to Album").Start(); if (mode == GUIFacadeControl.Layout.AlbumView) { switch (this.listLevel) { case (Listlevel.Series): if (DBOption.GetOptions(DBOption.cView_Series_ListFormat) == "Filmstrip") { MPTVSeriesLog.Write("FacadeMode: Switching to FilmStrip", MPTVSeriesLog.LogLevel.Debug); this.m_Facade.CurrentLayout = GUIFacadeControl.Layout.Filmstrip; } if (DBOption.GetOptions(DBOption.cView_Series_ListFormat) == "Coverflow") { MPTVSeriesLog.Write("FacadeMode: Switching to Coverflow", MPTVSeriesLog.LogLevel.Debug); this.m_Facade.CurrentLayout = GUIFacadeControl.Layout.CoverFlow; } if (DBOption.GetOptions(DBOption.cView_Series_ListFormat) == "WideBanners") { MPTVSeriesLog.Write("FacadeMode: Switching to WideThumbs", MPTVSeriesLog.LogLevel.Debug); this.m_Facade.CurrentLayout = GUIFacadeControl.Layout.LargeIcons; } break; case (Listlevel.Season): // There is no point having BigIcons for SeasonView, as it would need to re-use the WideBanner sizes // Having multiple facades would get around this issue if (DBOption.GetOptions(DBOption.cView_Season_ListFormat) == "1") { MPTVSeriesLog.Write("FacadeMode: Switching to Filmstrip", MPTVSeriesLog.LogLevel.Debug); this.m_Facade.CurrentLayout = GUIFacadeControl.Layout.Filmstrip; } else { MPTVSeriesLog.Write("FacadeMode: Switching to Coveflow", MPTVSeriesLog.LogLevel.Debug); this.m_Facade.CurrentLayout = GUIFacadeControl.Layout.CoverFlow; } break; case (Listlevel.Group): MPTVSeriesLog.Write("FacadeMode: Switching to Small Thumbs", MPTVSeriesLog.LogLevel.Debug); this.m_Facade.CurrentLayout = GUIFacadeControl.Layout.SmallIcons; break; } } PerfWatcher.GetNamedWatch("FacadeMode - switch to Album").Stop(); } }
public static String GetSeriesImageAsFileName(AnimeSeriesVM ser, GUIFacadeControl.Layout viewMode) { string imgFileName = ""; switch (viewMode) { case GUIFacadeControl.Layout.LargeIcons: imgFileName = GetWideBannerAsFileName(ser.AniDB_Anime); break; case GUIFacadeControl.Layout.List: case GUIFacadeControl.Layout.AlbumView: case GUIFacadeControl.Layout.Filmstrip: case GUIFacadeControl.Layout.CoverFlow: imgFileName = GetPosterAsFileName(ser.AniDB_Anime); break; } //BaseConfig.MyAnimeLog.Write("GetSeriesBannerAsFileName::viewMode: {0} : {1} : {2}", viewMode, imgFileName, ser); return imgFileName; }
public static String GetSeriesImage(AnimeSeriesVM ser, GUIFacadeControl.Layout viewMode) { string imgFileName = ""; Size sz = PosterSize; switch (viewMode) { case GUIFacadeControl.Layout.LargeIcons: imgFileName = GetWideBannerAsFileName(ser.AniDB_Anime); sz = BannerSize; break; case GUIFacadeControl.Layout.List: case GUIFacadeControl.Layout.AlbumView: case GUIFacadeControl.Layout.Filmstrip: case GUIFacadeControl.Layout.CoverFlow: imgFileName = GetPosterAsFileName(ser.AniDB_Anime); sz = PosterSize; break; } //BaseConfig.MyAnimeLog.Write("GetSeriesBannerAsFileName::viewMode: {0} : {1} : {2}", viewMode, imgFileName, ser); if (imgFileName.Length == 0) { string ident = "series_" + ser.SeriesName; string sTextureName = buildMemoryImage(drawSimpleBanner(sz, ser.SeriesName), ident, sz, true); if (sTextureName.Length > 0 && !s_SeriesImageList.Contains(sTextureName)) s_SeriesImageList.Add(sTextureName); return sTextureName; } else { string sTextureName = ""; if (imgFileName.Length > 0 && System.IO.File.Exists(imgFileName)) { sTextureName = buildMemoryImageFromFile(imgFileName, sz); } return sTextureName; } }
public static String GetGroupImageAsFileName(AnimeGroupVM grp, GUIFacadeControl.Layout viewMode) { string imgFileName = ""; DateTime start = DateTime.Now; switch (viewMode) { case GUIFacadeControl.Layout.LargeIcons: imgFileName = GetWideBannerAsFileName(grp); break; case GUIFacadeControl.Layout.List: case GUIFacadeControl.Layout.AlbumView: case GUIFacadeControl.Layout.Filmstrip: case GUIFacadeControl.Layout.CoverFlow: imgFileName = GetPosterAsFileName(grp); break; } TimeSpan ts = DateTime.Now - start; BaseConfig.MyAnimeLog.Write("GetGroupImageAsFileName::: {0} in {1}ms", grp.GroupName, ts.TotalMilliseconds); return imgFileName; }
public void EncodeDisc(GUIFacadeControl facadeView, int getID) { GetID = getID; if (File.Exists(Config.GetFile(Config.Dir.Base, "lame_enc.dll"))) { // Release the drives first for CDDRIVE to be able to open them BassMusicPlayer.ReleaseCDDrives(); char[] Drives = CDDrive.GetCDDriveLetters(); for (int i = 1; i < facadeView.Count; ++i) { GUIListItem item = facadeView[i]; if ((!item.IsFolder) && (Array.IndexOf(Drives, item.Path[0]) > -1)) { TrackInfo trackInfo = new TrackInfo(); if ((MusicTag)item.MusicTag == null) { MusicTag musicTag = new MusicTag(); musicTag.Artist = "Unknown Artist"; musicTag.Album = "Unknown Album"; musicTag.Track = Convert.ToInt16(item.Label.Substring(5)); musicTag.Title = string.Format("Track {0:00}", musicTag.Track); item.MusicTag = musicTag; } trackInfo.MusicTag = (MusicTag)item.MusicTag; trackInfo.TrackCount = facadeView.Count - 1; trackInfo.Item = item; try { EncodeTrack(trackInfo); } catch {} } } } }
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"); }
protected virtual void SwitchToNextAllowedLayout(GUIFacadeControl.Layout selectedLayout) { int iSelectedLayout = (int)selectedLayout; int totalLayouts = Enum.GetValues(typeof (GUIFacadeControl.Layout)).Length - 1; if (iSelectedLayout > totalLayouts) iSelectedLayout = 0; bool shouldContinue = true; do { if (!AllowLayout(selectedLayout) || facadeLayout.IsNullLayout(selectedLayout)) { iSelectedLayout++; if (iSelectedLayout > totalLayouts) iSelectedLayout = 0; } else { shouldContinue = false; } } while (shouldContinue); CurrentLayout = (GUIFacadeControl.Layout)iSelectedLayout; SwitchLayout(); GUIMessage msg = new GUIMessage(GUIMessage.MessageType.GUI_MSG_LAYOUT_CHANGED, 0, 0, 0, 0, 0, 0); GUIWindowManager.SendMessage(msg); }