private void Update(SoftwareViewModel viewModel, CancellationToken token) { MainViewModel.IsIndeterminate = true; var card = CardViewModel.SelectedItem.Info; var card2 = GetCard2(); var progress = new Progress <double>(OnProgressChanged); var software = SoftwareDetector.GetSoftware(card, progress, token); foreach (var item in software) { Logger.LogObject(LogLevel.Information, "Detected {0}", item); } var vms = new SoftwareItemViewModel[software.Length]; for (var i = 0; i < software.Length; i++) { var modules = ModulesDetector.GetModules(card, card2, software[i], progress, token); Logger.LogObject(LogLevel.Information, "Detected {0}", modules); vms[i] = CreateItemViewModel(software[i], modules); } viewModel.Items = vms; viewModel.SelectedItem = viewModel.Items.Length == 1 ? viewModel.Items.Single() : null; viewModel.IsSelect = viewModel.Items.Length > 1; var title = GetTitle(software); Logger.LogInformation(title); viewModel.Title = title; }
private SoftwareInfo GetSoftware(byte[] buffer, string productName, string fileName, ZipEntry entry) { var software = SoftwareDetector.GetSoftware(buffer, null, default(CancellationToken)); if (software == null) { Logger.LogError("Cannot detect software"); return(null); } if (software.Camera != null) { ValidateSoftware(software, entry, productName, fileName); UpdateSoftware(software); } else { var created = entry.DateTime.ToUniversalTime(); software.Product = ProductProvider.GetProduct(fileName, created); UpdateSoftware(software); software.Camera = GetCamera(productName, fileName); } return(software); }