private void SubProgressChanged(object sender, ScanSubProgress e) { switch (e.Step) { case ScanSubProgressStep.Check: MainProgressLabel.Content = Properties.Resources.GameScannerVerifying; FileProgress.ProgressBar.IsIndeterminate = false; FileProgress.ProgressBar.Value = e.ProgressPercentage; break; case ScanSubProgressStep.Download: if (e.DownloadProgress != null) { if (e.DownloadProgress.Size == 0) { MainProgressLabel.Content = Properties.Resources.GameScannerDownloadStarting; } else { var downloaded = BytesSizeExtension.FormatToBytesSizeThreeNonZeroDigits(e.DownloadProgress.SizeCompleted); var leftToDownload = BytesSizeExtension.FormatToBytesSizeThreeNonZeroDigits(e.DownloadProgress.Size); var downloadSpeed = double.IsInfinity(e.DownloadProgress.Speed) ? string.Empty : $"({BytesSizeExtension.FormatToBytesSizeThreeNonZeroDigits(e.DownloadProgress.Speed)}/s)"; MainProgressLabel.Content = $"{Properties.Resources.GameScannerDownloading} {downloaded}/{leftToDownload} {downloadSpeed}"; } } FileProgress.ProgressBar.Value = e.ProgressPercentage; FileProgress.ProgressBar.IsIndeterminate = false; break; case ScanSubProgressStep.CheckDownload: MainProgressLabel.Content = Properties.Resources.GameScannerVerifyingDownloadedFile; FileProgress.ProgressBar.IsIndeterminate = true; break; case ScanSubProgressStep.ExtractDownload: MainProgressLabel.Content = Properties.Resources.GameScannerExtracting; FileProgress.ProgressBar.Value = e.ProgressPercentage; FileProgress.ProgressBar.IsIndeterminate = false; break; case ScanSubProgressStep.CheckExtractDownload: MainProgressLabel.Content = Properties.Resources.GameScannerVerifyingExtractedFile; FileProgress.ProgressBar.IsIndeterminate = true; break; case ScanSubProgressStep.Finalize: MainProgressLabel.Content = Properties.Resources.GameScannerFinalizing; FileProgress.ProgressBar.IsIndeterminate = true; break; case ScanSubProgressStep.End: FileProgress.ProgressBar.Value = 100; ScanTotalProgress.ProgressBar.Value = 100; TaskbarItemInfo.ProgressValue = 100; return; default: throw new ArgumentOutOfRangeException(nameof(e.Step), e.Step, null); } }
private void SubProgressChanged(object sender, ScanSubProgress e) { try { if (e.DownloadProgress != null) { lbl_ProgressDetail.Text = $"{BytesSizeExtension.FormatToBytesSizeThreeNonZeroDigits(e.DownloadProgress.SizeCompleted)}/{BytesSizeExtension.FormatToBytesSizeThreeNonZeroDigits(e.DownloadProgress.Size)}\r\n" + $"Speed: {BytesSizeExtension.FormatToBytesSizeThreeNonZeroDigits(e.DownloadProgress.Speed)}ps"; } else if (!string.IsNullOrWhiteSpace(lbl_ProgressDetail.Text)) { lbl_ProgressDetail.Text = string.Empty; } int baseProgress; int rangeMaxProgress; switch (e.Step) { case ScanSubProgressStep.Check: label1.Text = $@"[{(int) e.Step + 1}/{(int) ScanSubProgressStep.End}] Checking"; baseProgress = 0; rangeMaxProgress = 10; break; case ScanSubProgressStep.Download: label1.Text = $@"[{(int) e.Step + 1}/{(int) ScanSubProgressStep.End}] Downloading"; baseProgress = 10; rangeMaxProgress = 59; break; case ScanSubProgressStep.CheckDownload: label1.Text = $@"[{(int) e.Step + 1}/{(int) ScanSubProgressStep.End}] Checking downloaded file"; baseProgress = 69; rangeMaxProgress = 10; break; case ScanSubProgressStep.ExtractDownload: label1.Text = $@"[{(int) e.Step + 1}/{(int) ScanSubProgressStep.End}] Extracting downloaded file"; baseProgress = 79; rangeMaxProgress = 10; break; case ScanSubProgressStep.CheckExtractDownload: label1.Text = $@"[{(int) e.Step + 1}/{(int) ScanSubProgressStep.End}] Checking extracted file"; baseProgress = 89; rangeMaxProgress = 10; break; case ScanSubProgressStep.Finalize: label1.Text = $@"[{(int) e.Step + 1}/{(int) ScanSubProgressStep.End}] Finalize"; baseProgress = 99; rangeMaxProgress = 1; break; case ScanSubProgressStep.End: label1.Text = @"End"; pB_SubProgress.Value = 100; return; default: throw new ArgumentOutOfRangeException(nameof(e.Step), e.Step, null); } pB_SubProgress.Value = (int)(baseProgress + rangeMaxProgress * (e.ProgressPercentage / 100)); } catch (Exception) { // } }