private void OnPreviousButtonClick(object sender, RoutedEventArgs e)
        {
            DialogResult = true;
            Response     = WarningResponse.UsePreviousSettings;

            this.Close();
        }
        private void OnDrawButtonClick(object sender, RoutedEventArgs e)
        {
            DialogResult = true;
            Response     = WarningResponse.UseCurrentSettings;

            this.Close();
        }
Esempio n. 3
0
        private string HandleBandMismatch(string userInput, string metaData, string fileName)
        {
            string band = userInput;

            if (_warningResponse.HasFlag(WarningResponse.Artist_Meta))
            {
                band = metaData;
            }
            else if (!_warningResponse.HasFlag(WarningResponse.Artist_User))
            {
                _warning.Message      = string.Format("The selected artist ({0}) does not match the artist name in the metadata ({1}) for the following track:\n{2}", userInput, metaData, fileName);
                _warning.Deactivated += warning_Deactivated;
                _eventAggregator.PublishOnUIThread("warning");
                _stopper.WaitOne();

                switch (_warning.Feedback)
                {
                case WarningFeedback.Abort:
                    //TODO: Figure out a way (an efficient one) to roleback stuff already copied/moved
                    return("-1");

                case WarningFeedback.UseMetadata:
                    band = metaData;
                    break;

                case WarningFeedback.UseMetadata | WarningFeedback.ApplyToAll:
                    band = metaData;
                    if (_warningResponse == WarningResponse.None)
                    {
                        _warningResponse = WarningResponse.Artist_Meta;
                    }
                    else
                    {
                        _warningResponse |= WarningResponse.Artist_Meta;
                    }
                    break;

                case WarningFeedback.UseUserInput:
                    band = userInput;
                    break;

                case WarningFeedback.UseUserInput | WarningFeedback.ApplyToAll:
                    band = userInput;
                    if (_warningResponse == WarningResponse.None)
                    {
                        _warningResponse = WarningResponse.Artist_User;
                    }
                    else
                    {
                        _warningResponse |= WarningResponse.Artist_User;
                    }
                    break;
                }
            }

            return(band);
        }
Esempio n. 4
0
        private void ImportSingleAlbum()
        {
            var repoDir = Global.AppParameters.FirstOrDefault(x => x.Name == "MusicRepo").Value;

            _warningResponse = WarningResponse.None;
            foreach (var f in Files)
            {
                var band     = _selectedBand.Name;
                var album    = _selectedAlbum.Name;
                var genre    = _selectedAlbum.Genre.Name;
                var tags     = TagLib.File.Create(f.FullName);
                var duration = tags.Properties.Duration != null ? tags.Properties.Duration.Seconds : 0;
                var trackNr  = tags.Tag.Track != null ? tags.Tag.Track : 0;

                if (tags.Tag.Album != _selectedAlbum.Name)
                {
                    album = HandleAlbumMismatch(_selectedAlbum.Name, tags.Tag.Album, f.Name);
                }
                if (tags.Tag.FirstAlbumArtist != band)
                {
                    band = HandleBandMismatch(_selectedBand.Name,
                                              tags.Tag.FirstAlbumArtist != null ? tags.Tag.FirstAlbumArtist : (tags.Tag.FirstArtist != null ? tags.Tag.FirstArtist : "Unknown"),
                                              f.Name);
                }

                var copyToDir = string.Format("{0}\\{1}\\{2}", repoDir, band, album);
                if (!System.IO.Directory.Exists(copyToDir))
                {
                    System.IO.Directory.CreateDirectory(copyToDir);
                }
                var fullDir = string.Format("{0}\\{1}", copyToDir, f.Name);

                if (!System.IO.File.Exists(fullDir))
                {
                    if (MoveFiles)
                    {
                        f.MoveTo(fullDir);
                    }
                    else
                    {
                        f.CopyTo(fullDir);
                    }

                    Info = string.Format("Imported {0} - {1} - {2}", band, album, f.Name);
                }
                else
                {
                    Info = string.Format("Skipped {0} - {1} - {2} -> Track already imported", band, album, f.Name);
                }

                AddTrackToDB(band, album, genre, f.Name, fullDir, duration, (int)trackNr);
            }

            LoadBands();
            Info = "Import complete";
        }