// looks up and returns scrapeddataobject based on Internal GameId (not gamesdb id) public ScrapedGameObject GetScrapedGameObject(int GameId, int GdbId) { //Game link = Game.GetGame(GameId); // we have a link record - proceed and generate object ScrapedGameObject sgo = new ScrapedGameObject(); if (GdbId < 1) { return(null); } sgo.GdbId = GdbId; // attempt to load game data json string gPath = AppDomain.CurrentDomain.BaseDirectory + @"Data\Games\" + sgo.GdbId.ToString() + @"\" + sgo.GdbId.ToString() + ".json"; if (File.Exists(gPath)) { ScrapedGameObjectWeb sgoweb = new ScrapedGameObjectWeb(); ScrapedGameData sg = new ScrapedGameData(); string jsonString = File.ReadAllText(gPath); try { sgoweb = JsonConvert.DeserializeObject <ScrapedGameObjectWeb>(jsonString); } catch (Exception e) { // there was a problem with the file - do nothing } finally { sgo.Data = sgoweb.Data; } } else { sgo.Data = new ScrapedGameData(); } // populate lists in object string baseGameDir = AppDomain.CurrentDomain.BaseDirectory + @"Data\Games\" + sgo.GdbId.ToString(); sgo.BackCovers = GetAllFolderFiles(baseGameDir + @"\BackCover"); sgo.Banners = GetAllFolderFiles(baseGameDir + @"\Banners"); sgo.FanArts = GetAllFolderFiles(baseGameDir + @"\FanArt"); sgo.FrontCovers = GetAllFolderFiles(baseGameDir + @"\FrontCover"); sgo.Manuals = GetAllFolderFiles(baseGameDir + @"\Manual"); sgo.Medias = GetAllFolderFiles(baseGameDir + @"\Media"); sgo.Screenshots = GetAllFolderFiles(baseGameDir + @"\Screenshots"); // return object return(sgo); }
private void LookupScrapeMatched() { if (GameObj.gdbId != null && GameObj.gdbId > 0) { var master = MasterView.GetMasterView(); var entry = master.Where(a => a.gid == GameObj.gdbId).FirstOrDefault(); if (entry == null) { return; } tbScrapeData_gameName.Text = entry.GDBTitle; tbScrapeData_Year.Text = entry.GDBYear; // get disk data //ScrapeDB gd = new ScrapeDB(); ScrapedGameObject o = ScrapeDB.GetScrapedGameObject(GameObj.gameId, GameObj.gdbId.Value); tbScrapeData_Year.Text = o.Data.Released; tbScrapeData_Developer.Text = o.Data.Developer; tbScrapeData_Publisher.Text = o.Data.Publisher; StringBuilder sbAT = new StringBuilder(); if (o.Data.AlternateTitles == null) { o.Data.AlternateTitles = new List <string>(); } for (int i = 0; i < o.Data.AlternateTitles.Count(); i++) { sbAT.Append(o.Data.AlternateTitles[i]); if (i > 0 && i < (o.Data.AlternateTitles.Count() - 1)) { sbAT.Append(", "); } } tbScrapeData_AlternateTitles.Text = sbAT.ToString(); tbScrapeData_Coop.Text = o.Data.Coop; tbScrapeData_ESRB.Text = o.Data.ESRB; StringBuilder sbGN = new StringBuilder(); if (o.Data.Genres == null) { o.Data.Genres = new List <string>(); } for (int i = 0; i < o.Data.Genres.Count(); i++) { sbGN.Append(o.Data.Genres[i]); if (i > 0 && i < (o.Data.Genres.Count() - 1)) { sbGN.Append(", "); } } tbScrapeData_Genres.Text = sbGN.ToString(); tbScrapeData_Overview.Text = o.Data.Overview; tbScrapeData_Players.Text = o.Data.Players; if (o.GdbId != 0) { tbScrapeData_gdbId.Text = o.GdbId.ToString(); } } }
// update sidebar public static void UpdateSidebar(int gameId) { // get an instance of the MainWindow MainWindow mw = Application.Current.Windows.OfType <MainWindow>().FirstOrDefault(); // new instance of the LibrarySidebar class LibrarySidebar lsb = new LibrarySidebar(gameId); /* define all controls that we want to set */ // scrollviewer ScrollViewer sv = (ScrollViewer)mw.FindName("srcSidebar"); // return out if hidesiderbar db field is true if (GlobalSettings.GetHideSidebar() == true) { sv.Visibility = Visibility.Collapsed; return; } sv.Visibility = Visibility.Visible; // set column definitions ColumnDefinition cd = (ColumnDefinition)mw.FindName("sidebarColumn"); ColumnDefinition colBoxartFront = (ColumnDefinition)mw.FindName("colBoxartFront"); ColumnDefinition colBoxartBack = (ColumnDefinition)mw.FindName("colBoxartBack"); ColumnDefinition colMedia = (ColumnDefinition)mw.FindName("colMedia"); cd.Width = new GridLength(0.3, GridUnitType.Star); //colBoxartFront.Width = new GridLength(0.5, GridUnitType.Star); //colBoxartBack.Width = new GridLength(0.5, GridUnitType.Star); //colMedia.Width = new GridLength(0.5, GridUnitType.Star); UniformGrid gridManuals = (UniformGrid)mw.FindName("gridManuals"); UniformGrid ugridScreenshots = (UniformGrid)mw.FindName("ugridScreenshots"); UniformGrid ugridFanarts = (UniformGrid)mw.FindName("ugridFanarts"); // borders Border brdSysInfo = (Border)mw.FindName("brdSidebarSystem"); // game system info Border brdSidebarGameInformation = (Border)mw.FindName("brdSidebarGameInformation"); // main scraping info container brdSidebarGameInformation.Visibility = Visibility.Visible; Border brdGame = (Border)mw.FindName("brdSidebarGame"); Border brdSidebarScreenshots = (Border)mw.FindName("brdSidebarScreenshots"); Border brdSidebarFanArt = (Border)mw.FindName("brdSidebarFanArt"); Border brdSidebarOverview = (Border)mw.FindName("brdSidebarOverview"); Border brdManuals = (Border)mw.FindName("brdManuals"); // expanders Expander expSysInfo = (Expander)mw.FindName("expSysInfo"); Expander expGameInfo = (Expander)mw.FindName("expGameInfo"); Expander expGameInformation = (Expander)mw.FindName("expGameInformation"); Expander expOverview = (Expander)mw.FindName("expOverview"); Expander expManuals = (Expander)mw.FindName("expManuals"); // labels Label lblGameName = (Label)mw.FindName("lblGameName"); Label lblIsFavorite = (Label)mw.FindName("lblIsFavorite"); Label lblLastLaunched = (Label)mw.FindName("lblLastLaunched"); Label lblSessionLength = (Label)mw.FindName("lblSessionLength"); Label lblTimesPlayed = (Label)mw.FindName("lblTimesPlayed"); Label lblTotalTime = (Label)mw.FindName("lblTotalTime"); Label lblAltNames = (Label)mw.FindName("lblAltNames"); Label lblReleaseDate = (Label)mw.FindName("lblReleaseDate"); Label lblPlayers = (Label)mw.FindName("lblPlayers"); Label lblCoop = (Label)mw.FindName("lblCoop"); Label lblGenres = (Label)mw.FindName("lblGenres"); Label lblDeveloper = (Label)mw.FindName("lblDeveloper"); Label lblPublisher = (Label)mw.FindName("lblPublisher"); Label lblESRB = (Label)mw.FindName("lblESRB"); Label lblAltNamesTitle = (Label)mw.FindName("lblAltNamesTitle"); Label lblReleaseDateTitle = (Label)mw.FindName("lblReleaseDateTitle"); Label lblPlayersTitle = (Label)mw.FindName("lblPlayersTitle"); Label lblCoopTitle = (Label)mw.FindName("lblCoopTitle"); Label lblGenresTitle = (Label)mw.FindName("lblGenresTitle"); Label lblDeveloperTitle = (Label)mw.FindName("lblDeveloperTitle"); Label lblPublisherTitle = (Label)mw.FindName("lblPublisherTitle"); Label lblESRBTitle = (Label)mw.FindName("lblESRBTitle"); TextBlock tbOverview = (TextBlock)mw.FindName("tbOverview"); // listview ListView Screenshots = (ListView)mw.FindName("Screenshots"); // images Image imgBoxartFront = (Image)mw.FindName("imgBoxartFront"); Image imgBoxartBack = (Image)mw.FindName("imgBoxartBack"); Image imgBanner = (Image)mw.FindName("imgBanner"); Image imgMedia = (Image)mw.FindName("imgMedia"); // lists of gamesdb related controls List <Image> gdbImages = new List <Image> { imgBoxartFront, imgBoxartBack, imgBanner, imgMedia }; List <Label> gdbLabels = new List <Label> { lblAltNames, lblAltNamesTitle, lblReleaseDate, lblReleaseDateTitle, lblPlayers, lblPlayersTitle, lblCoop, lblCoopTitle, lblGenres, lblGenresTitle, lblDeveloper, lblDeveloperTitle, lblPublisher, lblPublisherTitle }; // screenshots Image ss1 = (Image)mw.FindName("ss1"); Image ss2 = (Image)mw.FindName("ss2"); Image ss3 = (Image)mw.FindName("ss3"); Image ss4 = (Image)mw.FindName("ss4"); Image ss5 = (Image)mw.FindName("ss5"); Image ss6 = (Image)mw.FindName("ss6"); Image ss7 = (Image)mw.FindName("ss7"); Image ss8 = (Image)mw.FindName("ss8"); Image ss9 = (Image)mw.FindName("ss9"); Image ss10 = (Image)mw.FindName("ss10"); Image ss11 = (Image)mw.FindName("ss11"); Image ss12 = (Image)mw.FindName("ss12"); Image ss13 = (Image)mw.FindName("ss13"); Image ss14 = (Image)mw.FindName("ss14"); Image ss15 = (Image)mw.FindName("ss15"); Image ss16 = (Image)mw.FindName("ss16"); Image ss17 = (Image)mw.FindName("ss17"); Image ss18 = (Image)mw.FindName("ss18"); Image ss19 = (Image)mw.FindName("ss19"); Image ss20 = (Image)mw.FindName("ss20"); Image ss21 = (Image)mw.FindName("ss21"); Image ss22 = (Image)mw.FindName("ss22"); Image ss23 = (Image)mw.FindName("ss23"); Image ss24 = (Image)mw.FindName("ss24"); Image ss25 = (Image)mw.FindName("ss25"); Image ss26 = (Image)mw.FindName("ss26"); Image ss27 = (Image)mw.FindName("ss27"); Image ss28 = (Image)mw.FindName("ss28"); Image ss29 = (Image)mw.FindName("ss29"); Image ss30 = (Image)mw.FindName("ss30"); Image ss31 = (Image)mw.FindName("ss31"); Image ss32 = (Image)mw.FindName("ss32"); Image ss33 = (Image)mw.FindName("ss33"); Image ss34 = (Image)mw.FindName("ss34"); Image ss35 = (Image)mw.FindName("ss35"); Image ss36 = (Image)mw.FindName("ss36"); List <Image> ss = new List <Image> { ss1, ss2, ss3, ss4, ss5, ss6, ss7, ss8, ss9, ss10, ss11, ss12, ss13, ss14, ss15, ss16, ss17, ss18, ss19, ss20, ss21, ss22, ss23, ss24, ss25, ss26, ss27, ss28, ss29, ss30, ss31, ss32, ss33, ss34, ss35, ss36 }; foreach (Image i in ss) { i.Visibility = Visibility.Collapsed; } // fanart Image fa1 = (Image)mw.FindName("fa1"); Image fa2 = (Image)mw.FindName("fa2"); Image fa3 = (Image)mw.FindName("fa3"); Image fa4 = (Image)mw.FindName("fa4"); Image fa5 = (Image)mw.FindName("fa5"); Image fa6 = (Image)mw.FindName("fa6"); Image fa7 = (Image)mw.FindName("fa7"); Image fa8 = (Image)mw.FindName("fa8"); Image fa9 = (Image)mw.FindName("fa9"); Image fa10 = (Image)mw.FindName("fa10"); Image fa11 = (Image)mw.FindName("fa11"); Image fa12 = (Image)mw.FindName("fa12"); Image fa13 = (Image)mw.FindName("fa13"); Image fa14 = (Image)mw.FindName("fa14"); Image fa15 = (Image)mw.FindName("fa15"); Image fa16 = (Image)mw.FindName("fa16"); Image fa17 = (Image)mw.FindName("fa17"); Image fa18 = (Image)mw.FindName("fa18"); Image fa19 = (Image)mw.FindName("fa19"); Image fa20 = (Image)mw.FindName("fa20"); Image fa21 = (Image)mw.FindName("fa21"); Image fa22 = (Image)mw.FindName("fa22"); Image fa23 = (Image)mw.FindName("fa23"); Image fa24 = (Image)mw.FindName("fa24"); Image fa25 = (Image)mw.FindName("fa25"); Image fa26 = (Image)mw.FindName("fa26"); Image fa27 = (Image)mw.FindName("fa27"); Image fa28 = (Image)mw.FindName("fa28"); Image fa29 = (Image)mw.FindName("fa29"); Image fa30 = (Image)mw.FindName("fa30"); Image fa31 = (Image)mw.FindName("fa31"); Image fa32 = (Image)mw.FindName("fa32"); Image fa33 = (Image)mw.FindName("fa33"); Image fa34 = (Image)mw.FindName("fa34"); Image fa35 = (Image)mw.FindName("fa35"); Image fa36 = (Image)mw.FindName("fa36"); List <Image> fa = new List <Image> { fa1, fa2, fa3, fa4, fa5, fa6, fa7, fa8, fa9, fa10, fa11, fa12, fa13, fa14, fa15, fa16, fa17, fa18, fa19, fa20, fa21, fa22, fa23, fa24, fa25, fa26, fa27, fa28, fa29, fa30, fa31, fa32, fa33, fa34, fa35, fa36 }; foreach (Image i in fa) { i.Visibility = Visibility.Collapsed; } // system info Label lblSysName = (Label)mw.FindName("lblSystemName"); Image sysImage = (Image)mw.FindName("imgSystemImage"); TextBlock tblockSysImage = (TextBlock)mw.FindName("tblockSystemDesc"); string imageFileName = @"Data\Graphics\Systems\" + lsb.SystemCode.ToLower() + ".jpg"; // game stats lblGameName.Content = lsb.GameName; if (lsb.IsFavorite == true) { lblIsFavorite.Content = "YES"; } else { lblIsFavorite.Content = "NO"; } string lp = lsb.LastPlayed.ToString("yyyy-MM-dd HH:mm"); if (lp == "0001-01-01 00:00") { lblLastLaunched.Content = "Never"; } else { lblLastLaunched.Content = lp; } // times played lblTimesPlayed.Content = lsb.TimesPlayed; // last session time lblSessionLength.Content = GetDatetimeDifference(lsb.LastPlayed, lsb.LastFinished); // Total game time lblTotalTime.Content = FormatMinutesToString(lsb.TotalPlayTime); // system info expSysInfo.Header = lsb.SystemName; tblockSysImage.Text = lsb.SystemDescription; BitmapImage s = new BitmapImage(); s.BeginInit(); s.UriSource = new Uri(imageFileName, UriKind.Relative); s.EndInit(); sysImage.Source = s; // Game info (scraped) // get the link table record GamesLibraryScrapedContent gd = new GamesLibraryScrapedContent(); Game game = Game.GetGame(gameId); if (game.gdbId == null || game.gdbId == 0) { // no gdb data has been scraped - hide controls foreach (Image i in gdbImages) { i.Visibility = Visibility.Collapsed; } foreach (Label l in gdbLabels) { l.Visibility = Visibility.Collapsed; } expGameInformation.Header = "Scraped Information"; brdSidebarGameInformation.Visibility = Visibility.Collapsed; brdSidebarScreenshots.Visibility = Visibility.Collapsed; brdSidebarFanArt.Visibility = Visibility.Collapsed; brdSidebarOverview.Visibility = Visibility.Collapsed; brdManuals.Visibility = Visibility.Collapsed; return; } else { ScrapedGameObject o = gd.GetScrapedGameObject(gameId, game.gdbId.Value); // link is there - SET DATA and control states bool isGameInfoData = false; //GameInfo Expander bool isScreenshotsData = false; //Screenshots Expander bool isFanrtsData = false; //Fanrt expander bool isManualsData = false; //manuals expander // Game Title if (o.Data.Title == null || o.Data.Title == "") { expGameInformation.Header = "Scraped Information"; } else { // Expander title expGameInformation.Header = o.Data.Title; } // Back Cover Image if (o.BackCovers == null || o.BackCovers.Count == 0) { imgBoxartBack.Source = null; imgBoxartBack.SetVisibility(); } else { isGameInfoData = true; // boxart - back SetImage(imgBoxartBack, o.BackCovers.FirstOrDefault(), UriKind.Absolute); imgBoxartBack.SetVisibility(); } // Banner Image if (o.Banners == null || o.Banners.Count == 0) { imgBanner.Source = null; imgBanner.SetVisibility(); } else { isGameInfoData = true; // banner (just take one) List <string> banners = new List <string>(); SetImage(imgBanner, o.Banners.FirstOrDefault(), UriKind.Absolute); imgBanner.SetVisibility(); } // Front Cover Image if (o.FrontCovers == null || o.FrontCovers.Count == 0) { imgBoxartFront.Source = null; imgBoxartFront.SetVisibility(); } else { isGameInfoData = true; // boxart - front SetImage(imgBoxartFront, o.FrontCovers.FirstOrDefault(), UriKind.Absolute); imgBoxartFront.SetVisibility(); } // Media Image if (o.Medias == null || o.Medias.Count == 0) { imgMedia.Source = null; imgMedia.SetVisibility(); } else { isGameInfoData = true; // media image SetImage(imgMedia, o.Medias.FirstOrDefault(), UriKind.Absolute); imgMedia.SetVisibility(); } // Alternate Game Titles if (o.Data.AlternateTitles == null || o.Data.AlternateTitles.Count == 0) { lblAltNames.Content = null; lblAltNamesTitle.Visibility = Visibility.Collapsed; } else { isGameInfoData = true; lblAltNames.Content = string.Join(", ", (o.Data.AlternateTitles).ToArray()); lblAltNames.Visibility = Visibility.Visible; lblAltNamesTitle.Visibility = Visibility.Visible; } // Release Date if (o.Data.Released == null || o.Data.Released == "") { lblReleaseDate.Content = null; lblReleaseDateTitle.Visibility = Visibility.Collapsed; } else { isGameInfoData = true; lblReleaseDate.Content = o.Data.Released; lblReleaseDate.Visibility = Visibility.Visible; lblReleaseDateTitle.Visibility = Visibility.Visible; } // Coop if (o.Data.Coop == null || o.Data.Coop == "") { lblCoop.Content = null; lblCoopTitle.Visibility = Visibility.Collapsed; } else { isGameInfoData = true; lblCoop.Content = o.Data.Coop; lblCoop.Visibility = Visibility.Visible; lblCoopTitle.Visibility = Visibility.Visible; } // Developer if (o.Data.Developer == null || o.Data.Developer == "") { lblDeveloper.Content = null; lblDeveloperTitle.Visibility = Visibility.Collapsed; } else { isGameInfoData = true; lblDeveloper.Content = o.Data.Developer; lblDeveloper.Visibility = Visibility.Visible; lblDeveloperTitle.Visibility = Visibility.Visible; } // Publisher if (o.Data.Publisher == null || o.Data.Publisher == "") { lblPublisher.Content = null; lblPublisherTitle.Visibility = Visibility.Collapsed; } else { isGameInfoData = true; lblPublisher.Content = o.Data.Publisher; lblPublisher.Visibility = Visibility.Visible; lblPublisherTitle.Visibility = Visibility.Visible; } // Genres if (o.Data.Genres == null || o.Data.Genres.Count == 0) { lblGenres.Content = null; lblGenresTitle.Visibility = Visibility.Collapsed; } else { isGameInfoData = true; lblGenres.Content = string.Join(", ", (o.Data.Genres).ToArray()); lblGenres.Visibility = Visibility.Visible; lblGenresTitle.Visibility = Visibility.Visible; } // ESRB Rating if (o.Data.ESRB == null || o.Data.ESRB == "") { lblESRB.Content = null; lblESRBTitle.Visibility = Visibility.Collapsed; } else { isGameInfoData = true; lblESRB.Content = o.Data.ESRB; lblESRB.Visibility = Visibility.Visible; lblESRBTitle.Visibility = Visibility.Visible; } // Number of players if (o.Data.Players == null || o.Data.Players == "") { lblPlayers.Content = null; lblPlayersTitle.Visibility = Visibility.Collapsed; } else { isGameInfoData = true; lblPlayers.Content = o.Data.Players; lblPlayers.Visibility = Visibility.Visible; lblPlayersTitle.Visibility = Visibility.Visible; } // game overview (description) if (o.Data.Overview == null || o.Data.Overview == "") { tbOverview.Text = null; brdSidebarOverview.Visibility = Visibility.Collapsed; } else { isGameInfoData = true; tbOverview.Text = o.Data.Overview; brdSidebarOverview.Visibility = Visibility.Visible; } // Fanart Images if (o.FanArts == null || o.FanArts.Count == 0) { brdSidebarFanArt.Visibility = Visibility.Collapsed; } else { isFanrtsData = true; int fanCount = o.FanArts.Count; ugridFanarts.Columns = DetermineUniformGridColumns(fanCount); brdSidebarFanArt.Visibility = Visibility.Visible; List <string> fshots = o.FanArts; String[] arr = fshots.ToArray(); int i = 0; while (i < fa.Count) { // check whether we have run out of images if (i >= fshots.Count || fshots == null) { break; } // populate screenshot images string path = arr[i]; Image img = (Image)mw.FindName("fa" + (i + 1).ToString()); SetImage(img, path, UriKind.Absolute); img.SetVisibility(); i++; } } // Screenshot Images if (o.Screenshots == null || o.Screenshots.Count == 0) { brdSidebarScreenshots.Visibility = Visibility.Collapsed; } else { isScreenshotsData = true; int screenCount = o.Screenshots.Count; ugridScreenshots.Columns = DetermineUniformGridColumns(screenCount); brdSidebarScreenshots.Visibility = Visibility.Visible; List <string> sshots = o.Screenshots; String[] arr = sshots.ToArray(); int i = 0; while (i < ss.Count) { // check whether we have run out of images if (i >= sshots.Count || sshots == null) { break; } // populate screenshot images string path = arr[i]; Image img = (Image)mw.FindName("ss" + (i + 1).ToString()); SetImage(img, path, UriKind.Absolute); img.SetVisibility(); i++; } } // Manuals (external documents) if (o.Manuals == null || o.Manuals.Count == 0) { brdManuals.Visibility = Visibility.Collapsed; } else { isManualsData = true; brdManuals.Visibility = Visibility.Visible; // get number of manuals in the directory int manCount = o.Manuals.Count; // disable buttons that are not needed and setup the buttons that are required int c = 1; while (c <= 20) { Button b = (Button)mw.FindName("btnMan" + c); if ((c - 1) < manCount) { // activate button b.Visibility = Visibility.Visible; // get just filename string path = Path.GetFileName(o.Manuals[c - 1]); b.Content = path; // "Man " + c.ToString(); b.ToolTip = o.Manuals[c - 1]; b.FontSize = 8; } else { // hide button b.Visibility = Visibility.Collapsed; } c++; } } // set border visibilities if (isGameInfoData == false) { brdSidebarGameInformation.Visibility = Visibility.Collapsed; } else { brdSidebarGameInformation.Visibility = Visibility.Visible; } if (isFanrtsData == false) { brdSidebarFanArt.Visibility = Visibility.Collapsed; } else { brdSidebarFanArt.Visibility = Visibility.Visible; } if (isScreenshotsData == false) { brdSidebarScreenshots.Visibility = Visibility.Collapsed; } else { brdSidebarScreenshots.Visibility = Visibility.Visible; } if (isManualsData == false) { brdManuals.Visibility = Visibility.Collapsed; } else { brdManuals.Visibility = Visibility.Visible; } } }