コード例 #1
0
ファイル: TrackImporter.cs プロジェクト: caesay/Hurricane
        public async Task ImportTracks(IEnumerable<FileInfo> files, UserPlaylist playlist)
        {
            if (_isEnabled)
                throw new InvalidOperationException("The TrackImporter is already running");
            _isEnabled = true;

            var extensions = _musicDataManager.MusicManager.AudioEngine.SupportedExtensions;
            var filesToImport = files.Where(fileInfo => fileInfo.Exists && !string.IsNullOrEmpty(fileInfo.Extension)).ToList();
            var allFilesCount = (double)filesToImport.Count;

            for (int i = 0; i < filesToImport.Count; i++)
            {
                var fileInfo = filesToImport[i];
                ProgressMessageChanged?.Invoke(this, $"\"{fileInfo.Name}\"");
                ProgressChanged?.Invoke(this, i / allFilesCount);

                var track = await GetTrack(fileInfo, extensions);

                if (track != null && playlist != null && !playlist.Tracks.Contains(track))
                    playlist.AddTrack(track);

                if (_cancel)
                    break;
            }
            Finished?.Invoke(this, EventArgs.Empty);
            _isEnabled = false;
            _cancel = false;
        }