예제 #1
0
        /// <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;
                }
            }));
        }
예제 #2
0
        /// <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;
        }
예제 #3
0
        /// <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();
            }
        }