private void DoAddFilesToLibrary() { var dialogResult = _selectFolderDialog.ShowDialog(); if (dialogResult != DialogResult.OK) { return; } var progressWindow = new ProgressMonitor(); var progressViewModel = new ProgressMonitorViewModel(); progressWindow.DataContext = progressViewModel; progressViewModel.Title = AddToLibraryTitle; progressViewModel.HeaderText = AddToLibraryHeader; progressViewModel.StatusText = "Searching for Audio Files..."; progressWindow.Show(); var filesAdded = 0; var pathToAdd = _selectFolderDialog.SelectedPath; try { _musicLibrary.AddSupportedFilesInDirectory(pathToAdd, true, (o, a) => ImportStep(progressViewModel, a, ref filesAdded), (o, i) => progressWindow.Dispatcher.InvokeAsync(progressWindow.Close)); } catch (Exception ex) { var errMsg = string.Format("Unable to add directory '{0}': {1}", pathToAdd, ex.Message); System.Windows.MessageBox.Show(errMsg, "Error Adding Directory", System.Windows.MessageBoxButton.OK, System.Windows.MessageBoxImage.Error); } }
private void ImportStep(ProgressMonitorViewModel viewModel, AudioFileImportedEventArgs fileImportedArgs, ref int filesAdded) { if (viewModel.MaximumProgressValue != (fileImportedArgs.TotalFilesThisImport * 2)) { viewModel.MaximumProgressValue = (fileImportedArgs.TotalFilesThisImport * 2); } var percentComplete = (filesAdded / ((float)fileImportedArgs.TotalFilesThisImport / 100)) / 2; viewModel.CurrentProgressValue++; viewModel.NotificationText = string.Format("{0}%", percentComplete); viewModel.StatusText = string.Format(@"{0} '{1}'", fileImportedArgs.Status, Path.GetFileName(fileImportedArgs.FileAdded)); Interlocked.Increment(ref filesAdded); }