/// <summary> /// Sets the status message to the specified message or to the number of files if the message is null. /// </summary> /// <param name="message">The message.</param> /// <param name="activity">if set to <c>true</c> an animating spinner will be displayed.</param> public void SetStatus(string message = null, bool activity = false) { Dispatcher.Invoke((Action)(() => { var id = FilesListViewItemCollection.Count(f => f.Enabled && f.Checked); statusLabel.Content = message ?? Utils.FormatNumber(FilesListViewItemCollection.Count, "file") + " added; " + Utils.FormatNumber(id, "file") + " identified."; startRenamingButton.IsEnabled = id != 0; if (activity && statusThrobber.Visibility != Visibility.Visible) { statusImage.Visibility = Visibility.Hidden; statusThrobber.Visibility = Visibility.Visible; ((Storyboard)statusThrobber.FindResource("statusThrobberSpinner")).Begin(); } else if (!activity && statusThrobber.Visibility != Visibility.Hidden) { ((Storyboard)statusThrobber.FindResource("statusThrobberSpinner")).Stop(); statusThrobber.Visibility = Visibility.Hidden; statusImage.Visibility = Visibility.Visible; } })); }
/// <summary> /// Renames the recognized files. /// </summary> private void RenameRecognizedFiles() { Log.Info(_operationVerb + " of recognized files started..."); var st = DateTime.Now; var i = 0; foreach (var file in FilesListViewItemCollection.Where(f => f.Enabled && f.Checked).ToList()) { var name = Utils.SanitizeFileName(FileNames.Parser.FormatFileName(Format, file.Information)); SetStatus(_operationVerb + " " + name + "...", true); Log.Info(_operationVerb + " file " + Path.GetFileName(file.Location) + " to " + name + "..."); try { ProcessFile(name, file.Location, Path.Combine(TargetDir, name)); } catch (Exception ex) { Log.Warn("Exception while " + _operationVerb.ToLower() + " file " + Path.GetFileName(file.Location) + " to " + name + ".", ex); } file.Enabled = file.Checked = false; i++; } Dispatcher.Invoke((Action)(() => { startRenamingButton.Content = "Start renaming"; startRenamingButton.IsEnabled = FilesListViewItemCollection.Count(f => f.Enabled && f.Checked) != 0; settingsTabItem.IsEnabled = listView.ContextMenu.IsEnabled = true; })); Log.Info(_operationPast + " " + Utils.FormatNumber(i, "file") + " in " + (DateTime.Now - st).TotalSeconds + "s."); SetStatus(_operationPast + " " + Utils.FormatNumber(i, "file") + "!"); _parsing = _renaming = false; }
/// <summary> /// Handles the Click event of the startRenamingButton control. /// </summary> /// <param name="sender">The source of the event.</param> /// <param name="e">The <see cref="System.Windows.RoutedEventArgs"/> instance containing the event data.</param> private void StartRenamingButtonClick(object sender, RoutedEventArgs e) { if (_renaming) { if (WorkerThread != null && WorkerThread.IsAlive) { try { WorkerThread.Abort(); } catch { } } startRenamingButton.Content = new StackPanel { Orientation = Orientation.Horizontal, Margin = new Thickness(3, 1, 3, 1) }; (startRenamingButton.Content as StackPanel).Children.Add(new Image { Source = new BitmapImage(new Uri("/RSTVShowTracker;component/Images/pencil.png", UriKind.Relative)), Width = 16, Height = 16, Margin = new Thickness(0, 0, 5, 0), }); (startRenamingButton.Content as StackPanel).Children.Add(new TextBlock { Text = "Start renaming", Margin = new Thickness(0, 0, 3, 0), }); startRenamingButton.IsEnabled = FilesListViewItemCollection.Count(f => f.Enabled && f.Checked) != 0; settingsTabItem.IsEnabled = listView.ContextMenu.IsEnabled = true; _parsing = _renaming = false; Log.Info("Canceled " + _operationVerb.ToLower() + " operation."); SetStatus("Canceled " + _operationVerb.ToLower() + " operation."); } else { startRenamingButton.Content = new StackPanel { Orientation = Orientation.Horizontal, Margin = new Thickness(3, 1, 3, 1) }; (startRenamingButton.Content as StackPanel).Children.Add(new Image { Source = new BitmapImage(new Uri("/RSTVShowTracker;component/Images/cross.png", UriKind.Relative)), Width = 16, Height = 16, Margin = new Thickness(0, 0, 5, 0), }); (startRenamingButton.Content as StackPanel).Children.Add(new TextBlock { Text = "Stop renaming", Margin = new Thickness(0, 0, 3, 0), }); settingsTabItem.IsEnabled = listView.ContextMenu.IsEnabled = false; _parsing = _renaming = true; if (WorkerThread != null && WorkerThread.IsAlive) { try { WorkerThread.Abort(); } catch { } } WorkerThread = new Thread(RenameRecognizedFiles); WorkerThread.Start(); } }