public void Load(AuroraAsset.AssetFile asset) { _assetFile.SetIcon(asset); _assetFile.SetBanner(asset); Dispatcher.Invoke(new Action(() => SetPreview(_assetFile.GetIcon(), true))); Dispatcher.Invoke(new Action(() => SetPreview(_assetFile.GetBanner(), false))); }
private void LoadAuroraAsset(string filename) { try { var asset = new AuroraAsset.AssetFile(File.ReadAllBytes(filename)); if (asset.HasBoxArt) { _boxart.Load(asset); Dispatcher.Invoke(new Action(() => BoxartTab.IsSelected = true)); } else if (asset.HasBackground) { _background.Load(asset); Dispatcher.Invoke(new Action(() => BackgroundTab.IsSelected = true)); } else if (asset.HasScreenshots) { _screenshots.Load(asset); Dispatcher.Invoke(new Action(() => ScreenshotsTab.IsSelected = true)); } else if (asset.HasIconBanner) { _iconBanner.Load(asset); Dispatcher.Invoke(new Action(() => IconBannerTab.IsSelected = true)); } else { MessageBox.Show(string.Format("Error: {0} doesn't contain any assets...", filename), "Error!", MessageBoxButton.OK, MessageBoxImage.Error); } } catch (Exception ex) { SaveError(ex); MessageBox.Show(string.Format("Error: While processing {0}{1}{2}{1}. See the log for more details about this error.", filename, Environment.NewLine, ex.Message), "Error!", MessageBoxButton.OK, MessageBoxImage.Error); } }
public void Reset() { SetPreview(null); _assetFile = new AuroraAsset.AssetFile(); _screenshots = new Image[AuroraAsset.AssetType.ScreenshotEnd - AuroraAsset.AssetType.ScreenshotStart]; CBox.SelectedIndex = 0; }
public void Load(AuroraAsset.AssetFile asset) { _assetFile.SetScreenshots(asset); Dispatcher.Invoke(new Action(() => { _screenshots = _assetFile.GetScreenshots(); CBox_SelectionChanged(null, null); })); }
public ScreenshotsControl(MainWindow main) { InitializeComponent(); _main = main; _assetFile = new AuroraAsset.AssetFile(); _screenshots = new Image[AuroraAsset.AssetType.ScreenshotEnd - AuroraAsset.AssetType.ScreenshotStart]; CBox.Items.Clear(); for(var i = 0; i < _screenshots.Length; i++) CBox.Items.Add(new ScreenshotDisplay(i)); CBox.SelectedIndex = 0; }
public ScreenshotsControl(MainWindow main) { InitializeComponent(); _main = main; _assetFile = new AuroraAsset.AssetFile(); _screenshots = new Image[AuroraAsset.AssetType.ScreenshotEnd - AuroraAsset.AssetType.ScreenshotStart]; CBox.Items.Clear(); for (var i = 0; i < _screenshots.Length; i++) { CBox.Items.Add(new ScreenshotDisplay(i)); } CBox.SelectedIndex = 0; }
public void Reset() { SetPreview(null, true); SetPreview(null, false); _assetFile = new AuroraAsset.AssetFile(); }
private void ProcessAsset(Task task, bool shouldHideWhenDone = true) { _isError = false; AuroraDbManager.ContentItem asset = null; Dispatcher.InvokeIfRequired(() => asset = FtpAssetsBox.SelectedItem as AuroraDbManager.ContentItem, DispatcherPriority.Normal); if (asset == null) { return; } var bw = new BackgroundWorker(); bw.DoWork += (sender, args) => { try { switch (task) { case Task.GetBoxart: _buffer = asset.GetBoxart(); break; case Task.GetBackground: _buffer = asset.GetBackground(); break; case Task.GetIconBanner: _buffer = asset.GetIconBanner(); break; case Task.GetScreenshots: _buffer = asset.GetScreenshots(); break; case Task.SetBoxart: asset.SaveAsBoxart(_buffer); break; case Task.SetBackground: asset.SaveAsBackground(_buffer); break; case Task.SetIconBanner: asset.SaveAsIconBanner(_buffer); break; case Task.SetScreenshots: asset.SaveAsScreenshots(_buffer); break; } args.Result = true; } catch (Exception ex) { MainWindow.SaveError(ex); args.Result = false; } }; bw.RunWorkerCompleted += (sender, args) => { if (shouldHideWhenDone) { Dispatcher.InvokeIfRequired(() => _main.BusyIndicator.Visibility = Visibility.Collapsed, DispatcherPriority.Normal); } var isGet = true; if ((bool)args.Result) { if (_buffer.Length > 0) { var aurora = new AuroraAsset.AssetFile(_buffer); switch (task) { case Task.GetBoxart: _boxart.Load(aurora); Dispatcher.InvokeIfRequired(() => _main.BoxartTab.IsSelected = true, DispatcherPriority.Normal); break; case Task.GetBackground: _background.Load(aurora); Dispatcher.InvokeIfRequired(() => _main.BackgroundTab.IsSelected = true, DispatcherPriority.Normal); break; case Task.GetIconBanner: _iconBanner.Load(aurora); Dispatcher.InvokeIfRequired(() => _main.IconBannerTab.IsSelected = true, DispatcherPriority.Normal); break; case Task.GetScreenshots: _screenshots.Load(aurora); Dispatcher.InvokeIfRequired(() => _main.ScreenshotsTab.IsSelected = true, DispatcherPriority.Normal); break; default: isGet = false; break; } } if (shouldHideWhenDone && isGet) { Dispatcher.InvokeIfRequired(() => Status.Text = "Finished grabbing assets from FTP", DispatcherPriority.Normal); } else if (shouldHideWhenDone) { Dispatcher.InvokeIfRequired(() => Status.Text = "Finished saving assets to FTP", DispatcherPriority.Normal); } } else { switch (task) { case Task.GetBoxart: case Task.GetBackground: case Task.GetIconBanner: case Task.GetScreenshots: break; default: isGet = false; break; } if (isGet) { Dispatcher.InvokeIfRequired(() => Status.Text = "Failed getting asset data... See error.log for more information...", DispatcherPriority.Normal); } else { Dispatcher.InvokeIfRequired(() => Status.Text = "Failed saving asset data... See error.log for more information...", DispatcherPriority.Normal); } _isError = true; } _isBusy = false; }; Dispatcher.InvokeIfRequired(() => _main.BusyIndicator.Visibility = Visibility.Visible, DispatcherPriority.Normal); _isBusy = true; bw.RunWorkerAsync(); }
public BackgroundControl(MainWindow main) { InitializeComponent(); _main = main; _assetFile = new AuroraAsset.AssetFile(); }
public void Reset() { SetPreview(null); _assetFile = new AuroraAsset.AssetFile(); }
public void Reset() { SetPreview(null); _assetFile = new AuroraAsset.AssetFile(); }
public void Load(AuroraAsset.AssetFile asset) { _assetFile.SetBoxart(asset); Dispatcher.Invoke(new Action(() => SetPreview(_assetFile.GetBoxart()))); }
public void Reset() { SetPreview(null, true); SetPreview(null, false); _assetFile = new AuroraAsset.AssetFile(); }
public BoxartControl(MainWindow main) { InitializeComponent(); _main = main; _assetFile = new AuroraAsset.AssetFile(); }
public IconBannerControl(MainWindow main) { InitializeComponent(); _main = main; _assetFile = new AuroraAsset.AssetFile(); }
private void LoadAuroraAsset(string filename) { try { var asset = new AuroraAsset.AssetFile(File.ReadAllBytes(filename)); if(asset.HasBoxArt) { _boxart.Load(asset); Dispatcher.Invoke(new Action(() => BoxartTab.IsSelected = true)); } else if(asset.HasBackground) { _background.Load(asset); Dispatcher.Invoke(new Action(() => BackgroundTab.IsSelected = true)); } else if(asset.HasScreenshots) { _screenshots.Load(asset); Dispatcher.Invoke(new Action(() => ScreenshotsTab.IsSelected = true)); } else if(asset.HasIconBanner) { _iconBanner.Load(asset); Dispatcher.Invoke(new Action(() => IconBannerTab.IsSelected = true)); } else MessageBox.Show(string.Format("ERROR: {0} Doesn't contain any Assets", filename), "ERROR", MessageBoxButton.OK, MessageBoxImage.Error); } catch(Exception ex) { SaveError(ex); MessageBox.Show(string.Format("ERROR: While processing {0}{1}{2}{1}See error.log for more details about this error", filename, Environment.NewLine, ex.Message), "ERROR", MessageBoxButton.OK, MessageBoxImage.Error); } }
public void Reset() { SetPreview(null); _assetFile = new AuroraAsset.AssetFile(); _screenshots = new Image[AuroraAsset.AssetType.ScreenshotEnd - AuroraAsset.AssetType.ScreenshotStart]; CBox.SelectedIndex = 0; }
public LocalAssetsControl(MainWindow main, BoxartControl boxart, BackgroundControl background, IconBannerControl iconBanner, ScreenshotsControl screenshots) { InitializeComponent(); _main = main; _boxart = boxart; _background = background; _iconBanner = iconBanner; _screenshots = screenshots; FtpAssetsBox.ItemsSource = _assetsList; onlyNewSync.IsChecked = Settings.Default.OnlyNew; sliderScreens.Value = Settings.Default.NumScreens; #region Xbox.com Worker _xboxWorker.WorkerReportsProgress = true; _xboxWorker.WorkerSupportsCancellation = true; var xboxMarketDataResult = new ConcurrentBag<XboxTitleInfo>(); var omitedTitles = new ConcurrentBag<AuroraDbManager.ContentItem>(); _xboxWorker.DoWork += (sender, args) => { var bgWork = sender as BackgroundWorker; try { if(_assetsList.Count ==0) { Dispatcher.Invoke(new Action(() => Status.Text = "No games...")); return; } xboxMarketDataResult = new ConcurrentBag<XboxTitleInfo>(); omitedTitles = new ConcurrentBag<AuroraDbManager.ContentItem>(); XboxLocale loc = args.Argument as XboxLocale; var _assetsToGo = _assetsList.Where(p => p.TitleIdNumber > 0); Dispatcher.Invoke(new Action(() => _main.busyProgress.Visibility = Visibility.Visible)); Dispatcher.Invoke(new Action(() => _main.busyProgress.Text= "0 / " + _assetsToGo.Count())); var maxScreens = Settings.Default.NumScreens; int progressCount = 0; Object progressLock = new Object(); Ts.Parallel.ForEach(_assetsToGo, (contentItem) => { if(bgWork.CancellationPending) { args.Cancel = true; } XboxTitleInfo _titleResult = _xboxAssetDownloader.GetTitleInfoSingle(contentItem.TitleIdNumber, loc); if(_titleResult.AssetsInfo!= null) { var unityCovers = XboxUnity.GetUnityCoverInfo(contentItem.TitleId); if(unityCovers.Count() > 0) { var cover = unityCovers.FirstOrDefault(p => p._unityResponse.Official == true); if(cover!= null) { _titleResult.CoverAsset = cover; } } xboxMarketDataResult.Add(_titleResult); } else { omitedTitles.Add(contentItem); } lock (progressLock) { bgWork.ReportProgress(1, (++progressCount) + " / " + _assetsToGo.Count()); } }); progressCount = 0; Ts.Parallel.ForEach(xboxMarketDataResult, (titleItem) => { AuroraDbManager.ContentItem contentItem = _assetsToGo.FirstOrDefault(p => p.TitleId == titleItem.TitleId); if(contentItem!= null) { lock (progressLock) { bgWork.ReportProgress(1, (++progressCount) + " / " + xboxMarketDataResult.Count); } var itemWrap = new ContentItemLocal(contentItem); if(titleItem.CoverAsset!= null) { var assetFileC = new AuroraAsset.AssetFile(); assetFileC.SetBoxart(titleItem.CoverAsset.GetCover(), true); itemWrap.SaveAsBoxart(assetFileC.FileData); assetFileC.Dispose(); } int screenCount = 0; Ts.Parallel.ForEach(titleItem.AssetsInfo, (assetInfo) => { if(!assetInfo.HaveAsset) { if(assetInfo.AssetType == XboxTitleInfo.XboxAssetType.Screenshot && screenCount >= maxScreens) { return; } var XboxAsset = assetInfo.GetAsset(); var assetFile = new AuroraAsset.AssetFile(); switch(assetInfo.AssetType) { case XboxTitleInfo.XboxAssetType.Icon: assetFile.SetIcon(XboxAsset.Image, true); itemWrap.SaveAsIconBanner(assetFile.FileData); break; case XboxTitleInfo.XboxAssetType.Banner: assetFile.SetBanner(XboxAsset.Image, true); itemWrap.SaveAsIconBanner(assetFile.FileData); break; case XboxTitleInfo.XboxAssetType.Background: assetFile.SetBackground(XboxAsset.Image, true); itemWrap.SaveAsBackground(assetFile.FileData); break; case XboxTitleInfo.XboxAssetType.Screenshot: // _screenshots.Load(XboxAsset.Image, false); // itemWrap.SaveAsScreenshots(assetFile.FileData); screenCount++; break; default: break; } // XboxAsset.Dispose(); assetFile.Dispose(); } GC.Collect(); }); } titleItem.Dispose(); }); Dispatcher.Invoke(new Action(() => Status.Text = "Finished downloading asset information...")); } catch(Exception ex) { MainWindow.SaveError(ex); Dispatcher.Invoke(new Action(() => Status.Text = "An error has occured, check error.log for more information...")); } }; _xboxWorker.RunWorkerCompleted += (sender, args) => { _main.busyProgress.Visibility = Visibility.Collapsed; _main.BusyIndicator.Visibility = Visibility.Collapsed; syncDb.IsEnabled = true; if(omitedTitles.Count >0) { var logPath = Path.GetTempPath() + Path.DirectorySeparatorChar + "omittedTitlesLog.log"; string logcontent = ""; foreach(var item in omitedTitles) { logcontent += "Title name: " + item.TitleName + @" TitleID: " + item.TitleId + @" Title int: " + item.TitleIdNumber + @" MediaID: " + item.MediaId + @" ----------------------------------------------- "; } File.WriteAllText(logPath, logcontent); var msgresult = MessageBox.Show("Omitted titles " + omitedTitles.Count + @" Show log?", "Action", MessageBoxButton.OKCancel, MessageBoxImage.Information, MessageBoxResult.Cancel); if(msgresult == MessageBoxResult.OK) { try { Process.Start(logPath); } catch { } } } // var disp = new List<XboxTitleInfo.XboxAssetInfo>(); }; _xboxWorker.ProgressChanged+=_xboxWorker_ProgressChanged; #endregion }
private void ProcessAsset(Task task, bool shouldHideWhenDone = true) { _isError = false; AuroraDbManager.ContentItem asset = null; Dispatcher.InvokeIfRequired(() => asset = FtpAssetsBox.SelectedItem as AuroraDbManager.ContentItem, DispatcherPriority.Normal); if(asset == null) return; ContentItemLocal assetWrapper = new ContentItemLocal(asset); var bw = new BackgroundWorker(); bw.DoWork += (sender, args) => { try { switch(task) { case Task.GetBoxart: _buffer = assetWrapper.GetBoxart(); break; case Task.GetBackground: _buffer = assetWrapper.GetBackground(); break; case Task.GetIconBanner: _buffer = assetWrapper.GetIconBanner(); break; case Task.GetScreenshots: _buffer = assetWrapper.GetScreenshots(); break; case Task.SetBoxart: assetWrapper.SaveAsBoxart(_buffer); break; case Task.SetBackground: assetWrapper.SaveAsBackground(_buffer); break; case Task.SetIconBanner: assetWrapper.SaveAsIconBanner(_buffer); break; case Task.SetScreenshots: assetWrapper.SaveAsScreenshots(_buffer); break; } args.Result = true; } catch(Exception ex) { MainWindow.SaveError(ex); args.Result = false; } }; bw.RunWorkerCompleted += (sender, args) => { if(shouldHideWhenDone) Dispatcher.InvokeIfRequired(() => _main.BusyIndicator.Visibility = Visibility.Collapsed, DispatcherPriority.Normal); var isGet = true; if((bool)args.Result) { if(_buffer.Length > 0) { var aurora = new AuroraAsset.AssetFile(_buffer); switch(task) { case Task.GetBoxart: _boxart.Load(aurora); Dispatcher.InvokeIfRequired(() => _main.BoxartTab.IsSelected = true, DispatcherPriority.Normal); break; case Task.GetBackground: _background.Load(aurora); Dispatcher.InvokeIfRequired(() => _main.BackgroundTab.IsSelected = true, DispatcherPriority.Normal); break; case Task.GetIconBanner: _iconBanner.Load(aurora); Dispatcher.InvokeIfRequired(() => _main.IconBannerTab.IsSelected = true, DispatcherPriority.Normal); break; case Task.GetScreenshots: _screenshots.Load(aurora); Dispatcher.InvokeIfRequired(() => _main.ScreenshotsTab.IsSelected = true, DispatcherPriority.Normal); break; default: isGet = false; break; } } if(shouldHideWhenDone && isGet) Dispatcher.InvokeIfRequired(() => Status.Text = "Finished grabbing assets from FTP", DispatcherPriority.Normal); else if(shouldHideWhenDone) Dispatcher.InvokeIfRequired(() => Status.Text = "Finished saving assets to FTP", DispatcherPriority.Normal); } else { switch(task) { case Task.GetBoxart: case Task.GetBackground: case Task.GetIconBanner: case Task.GetScreenshots: break; default: isGet = false; break; } if(isGet) Dispatcher.InvokeIfRequired(() => Status.Text = "Failed getting asset data... See error.log for more information...", DispatcherPriority.Normal); else Dispatcher.InvokeIfRequired(() => Status.Text = "Failed saving asset data... See error.log for more information...", DispatcherPriority.Normal); _isError = true; } _isBusy = false; }; Dispatcher.InvokeIfRequired(() => _main.BusyIndicator.Visibility = Visibility.Visible, DispatcherPriority.Normal); _isBusy = true; bw.RunWorkerAsync(); }